【仕様】 ・名匠(Bp)が合成を行うことができます。 ・加算値が名前に追記されます (例)ナイフ+ナイフ=ナイフ+1    ナイフ+1+ナイフ+1=ナイフ+2 ・武器は武器同士、盾は盾同士、鎧は鎧同士のみ合成できます。 ・レアは合成出来ません。 ・合成限界として、一定確率で合成後のアイテムにレア属性を付加 ・値段も合成値に比例 MASIMAROカスタム用 @# Main Program #に if ($Fm{'mode'} eq 'fusion_before') {require './pl/action_form.pl';&action_form } if ($Fm{'mode'} eq 'fusion_after') {require './pl/play_form.pl';&play_form } 追加 B# Sub Play Form #に if ($Fm{'mode'} eq 'fusion_after'){require './pl/fusion_after.pl';&fusion_after;} C# Sub Action Form #に if ($Fm{'mode'} eq 'fusion_before'){require './pl/fusion_before.pl';&fusion_before;} D# Sub Normal Action #に &input('radio','mode','fusion_before','',"合成
\n") if $mysp =~ /Bp/; EPLフォルダにサブルーチン追加 (1)fusion_before.pl (2)fusion_after.pl (1) # Sub fusion Before # sub fusion_before { @rcdlines = &get_user("$Fm{'id'}"); if (!$bg) { push (@msg,'何ももっていません'); return } $fg = 'UB'; &userout; push (@msg,"合成するアイテムにチェックをいれて$def_okボタンを押してください"); &splititem('i'); &form('start'); print qq||; foreach (0 .. $#items) { ($item,$sts,$price) = split(/△/,$items[$_]); if ($sts =~ /Q[swat]/) { print qq|【$item】 \n| } else { &input('checkbox',"$_",'on','',''); print qq|$item \n| } } &OKbuttoninform('n','fusion_after'); print qq||; &form('end'); } 1; (2) # Sub fusion After # sub fusion_after { #合成設定 $f_pc=100; #合成代金 $f_jb="Bp"; #合成JOB @rcdlines = &get_user("$Fm{'id'}"); return if $fg ne 'UB'; &splititem('i'); $ab = $db = 0; $sp =~ s/Qb//g; $sp =~ s/Qk//g; $sp =~ s/Qx//g; $sp =~ s/Qm//g; foreach (0 .. $#items) { ($item,$sts,$price) = split(/△/,$items[$_]); ($itnm,$itpt) = split(/\+/,$item); if($itpt eq ""){$itpt=0;} $iak = substr($sts,4,2); $idd = substr($sts,6,2); $pc = substr($sts,0,4); if ($sts =~ /Q[swat]/) { $nomsg = 1 } else { $nomsg = 0 } $sts =~ s/Q[swat]//g; if ($Fm{$_}) { if ($bp =~ /(Sw|Kn|Kt|Ax|Gv|Bw|Mi|Wd|Sh|Ar)/ && $bp !~ /Li/){ &fusion } elsif ($sts =~ /(Sw|Kn|Kt|Ax|Gv|Bw|Mi|Wd|Sh|Ar)/ && $sts !~ /Li/) { if ($av eq 'dead') { push (@msg,"死亡中は$itemを使用できません"); } if ($mn <$f_pc) {push (@msg,"合成には$f_pc\G必要です。"); return } if ($bn) {push (@msg,"このアイテムは合成にはむいていません"); return } elsif ($sp =~ /$f_jb/) {$mn-=$f_pc; &set_fusion("$itemを元に$f_pc\Gで合成します。組合わせる武器を選んでください") } } else{push (@msg,"このアイテムは合成できません"); return } } if (!$gn) { $newitem = "$item△$sts"; $newitem .= "△$price" if $price; push(@bag,$newitem) } $gn = 0; } @items = @bag; &joinitem(i); $fg = ''; &userout; } # Sub Set fusion # sub set_fusion { $bp = $sts; $bp =~ tr/0-9\-//d; if($bp =~ /(Sw|Kn|Kt|Ax|Gv|Bw|Mi|Wd)/){$bp .= int($iak);}else{$bp .= int($idd);} $bn = $item; $gn = 1; push (@msg,"$_[0]"); } # Sub fusion # sub fusion { $dp= $bp; $bp =~ tr/0-9\-//d; $dp =~ tr/a-zA-Z//d; if ($av eq 'dead') { push (@msg,"死亡中は$itemを使用できません"); } elsif ($sts =~ /$bp/){ ($bnm,$bpt) = split(/\+/,$bn); if($bpt eq ""){$bpt=0;} $pt = $itpt + $bpt; if($pt == 0){$itpt = 1;$pt = 1;} $pls = $dp + $itpt; $item = "$bnm\+$pt"; if($pls > 99){$pls = 99;$item = $bn;} if($pls < -9){$pls = -9;$item = $bn;} $pc=int($pc*(1+$itpt/$dp));$pc = 9999 if $pc > 9999; if(int(rand(10))==0){$bp= $bp ."Li";} if($bp =~ /(Sw|Kn|Kt|Ax|Gv|Bw|Mi|Wd)/){ $sts = sprintf("%04d%02d%02d",$pc,$pls,0) . "$bp"; }else{ $sts = sprintf("%04d%02d%02d",$pc,0,$pls) . "$bp"; } push (@msg,"$itemが完成しました"); $bp = $bn = ''; } else { push (@msg,"$itemと合成することはできません") ;return} } 1;