$judgedat = 'judgeitem.cgi'; # judgeitem.dat のパス(666|606)
$hp_jg = 1; # 鑑定時の消費体力(default = 1)
# 上位鑑定システム Ver 3.02A By SION 2003.07.28
# SOSWiki 収蔵 2007.02.21
# 参考:ルーンボ○ルシステム By 人形氏
##########################################################################
# パーミッション(644|604)
##########################################################################
# 本体対応状況:
# SoS II Ver 1.10 (c)sho / MISSING LINK [ http://www.area-s.com/ ]
# SoS II dollEx 人形氏 / 月里影氏 [ http://www5.ocn.ne.jp/~mvillage/ ]
# ↓ 当改造のサポートは下記のサイトでのみ行っております。
# http://www.salion2.halfmoon.jp/soswiki/wiki.cgi
# MISSING LINK / 他サイトへのお問合せはご迷惑が掛かりますのでご遠慮下さい
push (@editor,"上位鑑定システム Ver 3.0A by SION & SOSWiki");
##########################################################################
# Ver 1.0 >> Ver 2.0
# ・上位鑑定に職業・能力別商品対応を取り入れ
# ・スクリプトの書き下ろし
# ・鑑定依頼システムの取り入れ
# Ver 2.0 >> Ver 2.0A (2003.05.05)
# ・鑑定後MSGの追加
# Ver 2.0A >> Ver 3.00 for ADV
# ・Advanced Edition 開発に伴う上位鑑定部分のスクリプト書き直し/軽量化
# ・鑑定種別を従来の10種から27種に大幅増強
# ・鑑定後アイテムを従来の100種前提から1000種前提/最大27万種に大幅増強
# Ver 3.00 for ADV >> Ver 3.01(A)
# ・本家版/dollExへの下位対応改造
# ・通常鑑定部の細部修正
# Ver 3.01(A) >> Ver 3.02(A)
# ・レベル&経験値システムとの変数バッテングを回避
##########################################################################
# judge_before : 鑑定アイテムの選択/動作振り分け
# judge_after : 通常鑑定処理
# extra_judge : 上級鑑定処理
#=======《 Sub Judge Before 》===========================================#
sub judge_before {
@rcdlines = &get_user("$Fm{'id'}");
if (!$bg) { push(@msg,'アイテムを持っていません'); }
&splititem('i');
if ($Fm{'mode'} =~ /partner/) {
@prclines = &get_partner("$Fm{'pd'}");
($php,$ptm) = &hprecover($php,$pxp,$psp,$pav,$ptm,$pfg);
if ($pav =~ /dead/) { push(@msg,"$pnmは死んでいます"); return; }
if ($php <= $hp_jg) { push(@msg,"$pnm は鑑定する体力が足りません"); return; }
($fee_rec,$fee_jud) = split(/,/,$pfe);
if ($mn < $fee_jud) { push(@msg,'鑑定費が足りません'); return; }
} elsif ($hp <= $hp_jg) { push(@msg,'体力が足りません'); return; }
if ($Fm{'mode'} =~ /after/) {
&judge_after; return;
}
push (@msg,'鑑定するアイテムにチェックをいれてください');
&form('start'); print qq|
|;
print qq|鑑定するアイテム \n|;
foreach (0 .. $#items) {
($item,$sts,$price) = split(/△/,$items[$_]);
&input('radio','jd',"$_",'',''); print qq|$item \n|;
}
if ($Fm{'mode'} =~ /partner/) {
&OKbuttoninform('no','partner_judge_after');
} else {
&OKbuttoninform('n','judge_after');
}
print qq| |
|; &form('end');
}
#=======《 Sub Judge After 》============================================#
sub judge_after {
if ($Fm{'jd'} eq '') {
push (@msg,'選択されていません');
return;
}
$no = $Fm{'jd'};
($item,$sts,$price) = split(/△/,$items[$no]);
#-------- 一般鑑定 -------------------------------------------------------
$pc = int(substr($sts,0,4));
$iak = int(substr($sts,4,2));
$idd = int(substr($sts,6,2));
push (@msg,"品名:$item
下取り価格:$pc 攻撃(ダメージ)値:$iak 防御(回復)値:$idd");
#-------- 鑑定依頼時の代金徴収 -------------------------------------------
if ($Fm{'mode'} =~ /partner/) {
$mn -= $fee_jud;
$pmn += $fee_jud;
}
# 一般鑑定後処理と表示
if ($sts =~ /Li/) { $jgmsg = 'Rare-ITEM '; }
if ($sts =~ /Dh/) { $jgmsg .= '両手武器:'; }
if ($sts =~ /Sw/) { $jgmsg .= '剣'; }
elsif ($sts =~ /Kn/) { $jgmsg .= 'ナイフ'; }
elsif ($sts =~ /Kt/) { $jgmsg .= '刀'; }
elsif ($sts =~ /Ax/) { $jgmsg .= '斧'; }
elsif ($sts =~ /Gv/) { $jgmsg .= 'グラブ'; }
elsif ($sts =~ /Wd/) { $jgmsg .= '杖'; }
elsif ($sts =~ /Bw/) { $jgmsg .= '弓'; }
elsif ($sts =~ /Mi/) { $jgmsg .= '楽器'; }
elsif ($sts =~ /Yw/) { $jgmsg .= '銘剣'; }
elsif ($sts =~ /Ys/) { $jgmsg .= '銘盾'; }
elsif ($sts =~ /Ya/) { $jgmsg .= '銘鎧'; }
elsif ($sts =~ /Yt/) { $jgmsg .= '銀細工'; }
elsif ($sts =~ /Ar/) { $jgmsg .= '鎧'; }
elsif ($sts =~ /Sh/) { $jgmsg .= '盾'; }
elsif ($sts =~ /Jw/) { $jgmsg .= '宝珠'; }
elsif ($sts =~ /Ig/) { $jgmsg .= 'インゴット'; }
elsif ($sts =~ /Fd/) { $jgmsg .= '食べ物'; }
elsif ($sts =~ /Rb/) { $jgmsg .= '復活アイテム'; }
elsif ($sts =~ /Bg/) { $jgmsg .= '所持上限増加アイテム'; }
elsif ($sts =~ /Ss/) { $jgmsg .= 'セーブ系アイテム'; }
elsif ($sts =~ /Ca/) { $jgmsg .= '紋章'; }
elsif ($sts =~ /Na/) { $jgmsg .= 'リネームアイテム'; }
elsif ($sts =~ /Hb/) { $jgmsg .= 'スパイス'; }
elsif ($sts =~ /Cb/) { $jgmsg .= 'ペット'; }
elsif ($sts =~ /V[a-z]/) { $jgmsg .= '紹介状'; }
else {
if ($sts =~ /Pz/) { $jgmsg .= 'petto'; }
if ($sts =~ /Di/) { $jgmsg .= 'ダメージ追加アイテム'; }
if ($sts =~ /Lc/) { $jgmsg .= 'ダメージ軽減アイテム'; }
if ($sts =~ /Pi/) { $jgmsg .= '防御力増加アイテム'; }
if ($sts =~ /Oi/) { $jgmsg .= '攻撃力増加アイテム'; }
}
if ($jgmsg) { push (@msg,"$jgmsgのようだ。"); $jgmsg = ''; }
else { push (@msg,'用途が判らない…'); }
if ($sts =~ /Ns/) { $jgmsg = '盗まれない'; }
if ($sts =~ /Ie/) { $jgmsg .= '壊れない'; }
if ($sts =~ /Wi/) { $jgmsg .= '質屋に売れない'; }
if ($jgmsg) { push (@msg,"$jgmsg 物のようだ。"); $jgmsg = ''; }
#-------- 上位鑑定と後処理 -----------------------------------------------
if ($Fm{'mode'} =~ /partner/) {
$php -= $hp_jg;
if ($sts =~ /J[a-z0][0-9]/ && $psp =~ /J[a-z0][0-9]/) { &extra_judge; }
$pmsg = "$item 鑑定を行いました。 [$fee_jud\G]
$pmsg";
&add_record($pmsg);
} else {
$hp -= $hp_jg;
if ($sts =~ /J[a-z0][0-9]/ && $sp =~ /J[a-z0][0-9]/) { &extra_judge; }
}
&userout;
}
#=======《 Sub Extra Judge 》============================================#
sub extra_judge {
open(IN,"$judgedat") || &error("Can't open $judgedat");
@judgelines = ;
close(IN);
unless (@judgelines) { &error('判別後アイテムデータ読みこみエラー') }
if ($Fm{'mode'} =~ /partner/) {
$jsp = $psp;
} else {
$jsp = $sp;
}
foreach $temp ($sts =~ /J[0a-z][0-9]{4}/g) {
foreach (1 .. 5) {
$htemp[$_] = substr($temp,$_,1);
}
if ($htemp[1] eq '0') {
$htemp[1] = '0a-z';
}
$judge_lv = '';
foreach ($htemp[2] .. 9) {
$judge_lv .= $_;
}
if ($jsp =~ /J[$htemp[1]][$judge_lv]/) {
foreach (0 .. $#judgelines) {
$line = $judgelines[$_];
chomp $line;
undef @judgeitem;
($judgechk,@judgeitem)= split(/<>/,$line);
if ($judgechk =~ /$temp/) {
@items[$no] = join('△',@judgeitem);
$bg = join(',',@items);
$pmsg = "鑑定の結果 $item は $judgeitem[0] と判明しました。";
$exist = 1;
&splititem('i');
last;
}
}
last;
}
}
if (!$exist) {
$pmsg = " このアイテムは私の手に負えない様だ
";
if ( $htemp[1] eq '0a-z' ) { $pmsg .= '鑑定技術が足りない様だ…' }
elsif ( $htemp[1] eq 'a' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'b' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'c' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'd' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'e' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'f' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'g' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'h' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'i' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'j' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'k' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'l' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'm' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'n' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'o' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'p' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'q' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'r' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 's' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 't' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'u' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'v' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'w' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'x' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'y' ) { $pmsg .= 'どこかで扱えそうだが…' }
elsif ( $htemp[1] eq 'z' ) { $pmsg .= 'どこかで扱えそうだが…' }
else { $pmsg .= '未知のアイテムかも知れない…' }
}
push (@msg,"$pmsg");
}
1;