$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;