【仕様】
・名匠(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;