#--------------#
# 関数初期化 #
#--------------#
sub shokika {
$dmg1 = $chara[18] * (int(rand(5)) + 1);
$dmg2 = $mdmg + int(rand($mrand));
$clit1 = "";
$clit2 = "";
$sake1 = 0;
$sake2 = 0;
$com1 = "";
$com2 = "$mnameが襲いかかった!!";
$kawasi1 = "";
$kawasi2 = "";
$hpplus1 = 0;
$hpplus2 = 0;
$kaihuku1 = "";
$kaihuku2 = "";
$huin = 0;
# 変数初期化
&limitset2;
}
#------------#
# HPの計算 #
#------------#
sub hp_sum {
$khp_flg = $khp_flg - $dmg2 - $dmgme1 + $hpplus1;
if ($khp_flg > $chara[16]) {
$khp_flg = $chara[16];
}
$mhp = $mhp - $dmg1 - $odmg + $hpplus2;
if ($mhp > $mhp_flg) {
$mhp = $mhp_flg;
}
}
#------------#
# 勝敗条件 #
#------------#
sub winlose {
if ($mhp <= 0) { $win = 1; last; }
elsif ($khp_flg <= 0) { $win = 0; last; }
else{ $win = 2; }
}
#------------------#
#魔物クリィティカル#
#------------------#
sub mons_clt{
#クリティカル率算出
$kclt_ritu = 100 - int($khp_flg / $chara[16] * 100);
$mclt_ritu = 100 - int($mhp / $mhp_flg * 100);
# 封印球の効果
if ($item[7] == 19) {
if ($mode eq 'boss' or $mode eq 'isekiai') {
$com1 .= "$item[6]が光を放つ!!しかし$mnameには効かなかった!!
";
} else {
if (int(rand(2))==0) {
$huin =1;
$com1 .= "$item[6]が動き出した!!$mnameはコンセントレーションできなくなり、必殺技を使えなくなった!!
";
}
}
}
if ($kclt_ritu > int(rand(100))) {
$com1 .= "クリティカル!!「$chara[23]」
";
$dmg1 = $dmg1 * 3;
}
if ($mclt_ritu > int(rand(200))) {
$com2 .= "クリティカル!!
";
$dmg2 = $dmg2 + $item[4];
}
}
#------------------#
#魔物回避 #
#------------------#
sub mons_kaihi{
#回避率計算
$ci_plus = $item[2] + $item[16];
$cd_plus = $item[5] + $item[17];
$hit_ritu = int(($chara[11] / 10)+51) + $ci_plus;
$sake1 += int(($chara[12] / 20)) + $cd_plus;
$sake2 += $mkahi - $hit_ritu;
if ($dmg2 < 0) { $dmg2 = $dmg2; }
elsif ($dmg2 < $item[4]) { $dmg2 = 0; }
else{ $dmg2 = $dmg2 - $item[4]; }
#職業別防御ボーナス
if ($chara[14] > 17) { $dmg2 = int($dmg2 / 4); }
elsif ($ksyoku > 7) { $dmg2 = int($dmg2 / 2); }
if (int($sake1) > int(rand(300))) {
$dmg2 = 0;
$kawasi1 = "$chara[4]は身をかわした!";
}
if (int($sake2) > int(rand(100))) {
$dmg1 = 0;
$kawasi2 = "$mnameは身をかわした!";
}
}
#------------------#
# 戦闘状況 #
#------------------#
sub monsbattle_sts {
# 能力値バーの詳しい幅設定
$hit_ritu = int(($chara[11] / 10) + 51);
if ($hit_ritu > 150) { $hit_ritu = 150; }
$kaihi_ritu = int(($chara[12]/ 20));
if ($kaihi_ritu > 50) { $kaihi_ritu = 50; }
$waza_ritu = int(($chara[20] / 15)) + 10 + $chara[33];
if ($waza_ritu > 75) { $waza_ritu = 75; }
$ci_plus = $item[2] + $a_hitup;
$cd_plus = $item[5] + $a_kaihiup;
$bwhit = int(0.5 * ($hit_ritu + $ci_plus));
$bwkaihi = int(0.5 * ($kaihi_ritu + $cd_plus));
$bwwaza = int(1 * ($waza_ritu + $item[18]));
if ($bwhit > 130) { $bwhit = 130; }
if ($bwkaihi > 130) { $bwkaihi = 130; }
if ($bwwaza > 130) { $bwwaza = 130; }
if ($i == 1) {
$battle_date[$j] = <<"EOM";
| $iターン | ||||||||||||||
|
||||||||||||||
|
VS |
|
||||||||||||
| $iターン | ||||||||||
|
VS |
|
||||||||