#--------------# # 関数初期化 # #--------------# 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ターン
武器$item[0]
防具$item[3]
アクセサリー$item[6]
命中率
$hit_ritu + $ci_plus%
回避率
$kaihi_ritu + $cd_plus%
必殺率
$waza_ritu + $item[18]%
なまえ HP 職業 LV
$chara[4] $khp_flg\/$chara[16] $chara_syoku[$chara[14]] $chara[18]
VS
なまえ HP
$mname $mhp/$mhp_flg
$com1 $clit1 $kawasi2 $mname に $dmg1 のダメージを与えた。$kaihuku1


$com2 $clit2 $kawasi1 $chara[4] に $dmg2 のダメージを与えた。$kaihuku2


EOM } else { $battle_date[$j] = <<"EOM";
$iターン
なまえ HP
$chara[4] $khp_flg\/$chara[16]
VS
なまえ HP
$mname $mhp/$mhp_flg
$com1 $clit1 $kawasi2 $mname に $dmg1 のダメージを与えた。$kaihuku1


$com2 $clit2 $kawasi1 $chara[4] に $dmg2 のダメージを与えた。$kaihuku2


EOM } } #------------------# #戦闘結果判定 # #------------------# sub sentoukeka{ if ($win==1) { $chara[22] += 1; $gold = $mgold + int(rand($mgold)+1); $chara[19] += $gold; if ($chara[19] > $gold_max) { $chara[19] = $gold_max; } elsif ($chara[19] < 0) { $chara[19] = 0; } $comment = "$chara[4]は、戦闘に勝利した!!
"; } elsif ($win==2) { $mex = int($mex/2); $comment = "$chara[4]は、逃げ出した・・・♪
"; } else { $mex = 1; $chara[19] = int(($chara[19] / 100)); $comment = "$chara[4]は、戦闘に負けた・・・。
"; } $chara[17] = $chara[17] + $mex; $chara[21] ++; $chara[25] --; $chara[27] = time(); $chara[28] = $boss; } #------------------# #戦闘結果判定 # #------------------# sub legend_sentoukeka{ if ($win==1) { $chara[22] += 1; $gold = $mgold + int(rand($mgold)+1); $chara[19] += $gold; if ($chara[19] > $gold_max) { $chara[19] = $gold_max; } elsif ($chara[19] < 0) { $chara[19] = 0; } $chara[28] -= 1; if ($chara[28] == 0) { $comment = "$chara[4]は、レジェンドプレイスを攻略した!!新しい称号が与えられます!!
"; &all_message("$chara[4]さんが新たにレジェンドプレイスを攻略され、称号が上がりました!"); if ($chara[32] < $in{'boss_file'} + 1) { $chara[32] = $in{'boss_file'} + 1; } } else { $comment = "$chara[4]は、戦闘に勝利した!!HPが少し回復した♪
"; } } elsif ($win==2) { $mex = int($mex/2); $chara[28] = $boss; $comment = "$chara[4]は、逃げ出した・・・♪
"; } else { $mex = 1; $chara[28] = $boss; $chara[19] = int(($chara[19] / 100)); $comment = "$chara[4]は、戦闘に負けた・・・。
"; } $chara[17] = $chara[17] + $mex; $chara[21] ++; $chara[25] --; $chara[27] = time(); } #--------------# # 時間チェック # #--------------# sub time_check{ $ltime = time(); $ltime = $ltime - $chara[27]; $vtime = $m_time - $ltime; if ($vtime > 0) { &error("あと$vtime秒間闘えません。"); } } #----------------------# # モンスデータ呼び出し # #----------------------# sub mons_read{ ($mname,$mex,$mrand,$msp,$mdmg,$mkahi,$monstac,$mons_ritu,$mgold) = split(/<>/,$MONSTER[$r_no]); if ($monstac) { require "./mons/$monstac.pl"; } else { require "./mons/0.pl"; } } #------------------# # 戦闘後のHP処理 # #------------------# sub hp_after{ $chara[15] = $khp_flg + int(rand($chara[10])); if ($chara[15] > $chara[16]) { $chara[15] = $chara[16]; } if ($chara[15] <= 0) { $chara[15] = $chara[16]; } } #----------------------# # 戦闘後のフッター処理 # #----------------------# sub mons_footer{ if ($win) { print "$comment $chara[4]は、$mexの経験値を手に入れた。$goldG手に入れた。
\n"; } else { print "$comment $chara[4]は、$mexの経験値を手に入れた。お金が100分の1になった・・・(涙)
\n"; } print <<"EOM";
EOM } 1;