Files
ore/inc/ore_sub-battle.cgi
T
2026-06-22 21:09:26 +09:00

1110 lines
31 KiB
Perl
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#-----------------------------------------------------------#
# 罪と罰++ 二律背反 #
# Copyright(C) 2001-2002 by Vivid Studio. BLANK BOARD #
# Vivid Studio.[ http://www17.big.or.jp/~obochan/vivid/ ] #
# BLANK BOARD [ http://pom.to/ ] #
#-----------------------------------------------------------#
# 戦闘 Version 1.1
#--- [注意事項] --------------------------------------------#
# 1.このスクリプトは以下の利用規程に従って配布しています。 #
# http://www24.big.or.jp/~obo/game/ore_/gild/ #
#-----------------------------------------------------------#
#-------------------------------------------------------------------------------
#修行処理2
sub bt_st {
&bt_cm;
$log2 .=qq|<form action="$script" method="$method" name="ore_">\n|;
$log2 .=qq|<td align="center" valign="middle">\n| if($mv_mode eq 'pc');
$log2 .=qq|<input type="hidden" name="id" value="$id">\n<input type="hidden" name="pw" value="$pw">\n|;
if($thp<1||$hp<1){
$log2 .=qq|<input type="hidden" name="cmd" value=-1>\n|;
}else{
&spell_sp;
}
$log2 .=qq|<br>\n|;#テーブルずれ修正
$log2 .=qq|<input $button1 type="submit" value="NEXT">$td_end</form>\n|;#テーブル追加</tr></table>
&dat_write;
}
#-------------------------------------------------------------------------------
#戦闘処理
sub bt_cm {
$layout_flag=1;
$ua_a = $ua+$dg_data[$dg_a][4]; # $uaに武具値付加
$ud_a = $ud+$df_data[$df_a][4]; # $udに防具値付加
$tua_a = $tua+$dg_data[$tdg_a][4]; # $tuaに武具値付加
$tud_a = $tud+$df_data[$tdf_a][4]; # $tudに防具値付加
my $btp = $ag + int(rand($lv/10)+1);
my $bte = $tag+ int(rand($tlv/10)+1);
($btp>=$bte) ? &attack_myself : &attack_enemy ;
if($thp>0 && $hp>0){($btp>=$bte) ? &attack_enemy : &attack_myself ;}
# 02/10 戦争時、攻めた国の人でない人がでてくることへの対処 $tnm >> $tnm_p
$tnm_p = $tnm if(!$tnm_p);
$log .="<p>$nm ( HP $hp / MP $mp ) VS $tnm_p ( HP $thp / MP $tmp )</p>\n";
}
# 攻撃--自分
sub attack_myself{
$log .="<font color=#6666FF>\n";
if($cmd == 1){
local ($v,$vv);
$vv=int(rand(1500));
$v = $ua_a-$tud_a;
$v += int(sqrt($ua)) if($bst =~ /W/);
$v = 1 if($v<1);
if($dg_a && $dg_cnt){#武具呼び出し
$log .="$nm は $dg_data[$dg_a][1] で攻撃!!<br>$tnm に $v の傷を与えた!<br>\n";
$thp -= $v;
$dg_cnt--;
if($dg_cnt<=0){
$log .="$dg_data[$dg_a][1] が壊れた!!<br>\n";
$dg_a = $dg_cnt = 0;
}
elsif(!$vv){
$log .="当たり所が悪く $dg_data[$dg_a][1] が壊れた!!<br>\n";
$dg_a = $dg_cnt = 0;
}
}else{
$v = int((rand(4))+$v);
$thp -= $v;
$log .="$nm は $tnm に $v の傷を与えた!<br>\n";
}
}elsif($cmd >= 2){
$v = $cmd -2;
if($rank >= 8){# 階級技呼び出し
&st_cm_k;
}
if($di_a == 1){#賢者の石
my $ss=int($lv/2);
my ($v,$vv);
if(int($hp+$ss) < $max_hp){
$hp += $ss;
}else{
$v=$max_hp-$hp;
$hp += $v;
}
if(int($mp+$ss) < $max_mp){
$mp += $ss;
}else{
$vv=$max_mp-$mp;
$mp += $vv;
}
$log .="$di_data[$di_a][1] の作用により$nm は体力と精神が $ss 回復した!<br>\n";
$di_cnt--;
if($di_cnt<=0){
$log .="$di_data[$di_a][1] が砕け散った!<br>\n";
$di_a=0;
}
}
# 道具呼び出し
&dogu_k if($di_a > 1 && $cmd==15);
if($v<int($lv/5) && $mp>=$sp_mp[$v]){
$mp -= $sp_mp[$v];
if($camp==0){
if($lv < 10){$ch =int(rand(10));}#クリティカルヒット率
elsif($lv >= 10 && $lv < 15){$ch =int(rand(15));}
elsif($lv >= 15 && $lv < 20){$ch =int(rand(25));}
elsif($lv >= 20 && $lv < 30){$ch =int(rand(50));}
elsif($lv >= 30 && $lv < 40){$ch =int(rand(75));}
else{$ch =int(rand(125));}
if($v == 0 && $ch == 0 || ($ch == 1 && $lv > 5 && $lv < 10)){
$v = int($ua*4);
$v = 1 if($v<1);
$thp -= $v;
$log .="必殺 マジン剣!<b>クリティカルヒット!</b> $tnm に $v の傷を与えた!<br>\n";
}elsif($v == 0 && $ch == 1 && $lv >= 10 && $lv < 20){
$hp += int($max_hp/3) if($hp < $max_hp - int($max_hp/3));
$v = int($ua*2);
$v = 1 if($v<1);
$thp -= $v;
$log .="半回復!体力がある程度回復した!<br>連続技! 必殺 マジン剣!$tnm に $v の傷を与えた!<br>\n";
}elsif($v == 0 && $ch >= 2 || ($ch == 1 && $lv >= 20)){
$v = int($ua*2);
$v = 1 if($v<1);
$thp -= $v;
$log .="必殺 マジン剣!$tnm に $v の傷を与えた!<br>\n";
}elsif($v == 1){
$hp = $max_hp;
$log .="全回復!体力が完全に回復した!<br>\n";
}
}elsif($camp==1){
if($v == 0){
$v = int($ua*1.5);
$v = int(sqrt($ua)) + $ua if($bst =~ /W/);
$v = int($v*1.5) if($bst =~ /W/);
$v = $v-$tud;
$v = 1 if($v<1);
$thp -= $v;
$log .="必殺疾風剣!$tnm に $v の傷を与えた!<br>\n";
}elsif($v == 1 ){
$v = int($max_hp-$hp);
$v = 30 if($v>30);
$hp += $v;
$log .="生命功!体力を $v 回復した!<br>\n";
}elsif($v == 2){
$bst .= 'W' unless($bst =~ /W/);
$log .="奉撃功!攻撃力が上がった<br>\n";
}elsif($v == 3){
$thp -= 30;
$log .="炎蒼旋!$tnm に 30 の傷を与えた!<br>\n";
}elsif($v == 4){
$bst .= 'S' unless($bst =~ /S/);
$log .= "鋼気!防御力が上がった<br>\n";
}elsif($v == 5){
$v = int($max_hp-$hp);
$v = 50 if($v>50);
$hp += $v;
$log .="絶心功!体力を$v回復した!<br>\n";
}elsif($v == 6){
$dh =int(rand(3)) ;
if($dh==0){
$v = int($thp*0.8);
$thp -= $v;
$thp = 1 if($thp < 1);
$vv = int($mp/4);
$mp -= $vv;
$log .="奥義 鳳凰転生!!$tnm を瀕死の状態に追い込んだ!<br>しかし余波を食らい $nm は $vv の精神を失った。<br>\n" if($thp <= 1);
$log .="奥義 鳳凰転生!!$tnm に$vの傷を与えた!<br>しかし余波を食らい $nm は $vv の精神を失った。<br>\n" if($thp > 1);
}else{
$v = int($thp*0.5);
$thp -= $v;
$thp = 1 if($thp < 1);
$log .="奥義 鳳凰転生!!$tnm を瀕死の状態に追い込んだ!<br>\n" if($thp <= 1);
$log .="奥義 鳳凰転生!!$tnm に$vの傷を与えた!<br>\n" if($thp > 1);
}
}elsif($v == 7){
$dh =int(rand(20)) ;
if($dh <= 3){
$log .="秘奥義 魂砕き!!$tnm は心を粉々に砕かれた!<br>\n";
$thp=0;
}elsif($dh == 4){
$v = int($hp*0.9);
$hp -= $v;
$log .="秘奥義 魂砕き!!<b>自爆!!</b> $nm は心が粉々に砕けちった!<br>\n";
}elsif($dh >= 5 && $dh <= 12){
$v = int(($tud+$tua)*2-$tud);
$thp -= $v;
$log .="秘奥義 魂砕き!!失敗した!!<br>しかし $tnm に $v のダメージを与えることに成功!<br>\n";
}else{
$log .="失\敗\した…しかし最悪の事態だけは免れた。<br>\n";
}
}
}elsif($camp==2){
if($v == 0){
$v = int($ua*1.5);
$v = int(sqrt($ua)) + $ua if($bst =~ /W/);
$v = int($v*1.5) if($bst =~ /W/);
$v = $v-$tud;
$v = 1 if($v<1);
$thp -= $v;
$log .="バーティカルソード!$tnm に $v の傷を与えた!<br>\n";
}elsif($v == 1 ){
$bst .= 'W' unless($bst =~ /W/);
$log .="アタック!攻撃力が上がった<br>\n";
}elsif($v == 2){
$v = int($max_hp-$hp);
$v = 30 if($v>30);
$hp += $v;
$log .="ヒール!体力を$v回復した!<br>\n";
}elsif($v == 3){
$thp -= 30;
$v = int($max_hp-$hp);
$v = 10 if($v>10);
$hp += $v;
$log .="セイントクロス!$tnm に30の傷を与え、更にその体力を僅かばかり吸い取った!<br>\n";
}elsif($v == 4){
$tua = 1;
$log .= "秘術 アンクレアブレイク! $tnm のUAをゼロにした!<br>\n";
}elsif($v == 5){
$v = int($max_hp-$hp);
$v = 50 if($v>50);
$hp += $v;
$log .="ハイヒール!体力を$v回復した!<br>\n";
}elsif($v == 6){
$v = 140 + int(rand(60)) -$tud;
$thp -= $v;
$log .="時の流れに埋れし者……永久<small>(とわ)</small>の夢を継ぐ者……<br>今汝の名において、穢れし者を浄化せよ・・・!!<br>$tnm に $v の傷を与えた!<br>\n";
}elsif($v == 7){
$log .="黄昏よりも暗き者……血の流れより赤き者……<br>(省略)<br>……等しく滅びを与えんことを! 龍破斬!!<br>\n";
$v = 200 + int(rand(150)) - $tud;
$thp -= $v;
$log .="$tnm に $v の傷を与えた!<br>\n";
}
}elsif($camp==3){
if($v == 0){
$thp -= 15;
$log .="ソードスラッシュ!$tnm に 15 の傷を与えた!<br>\n";
}elsif($v == 1 ){
$bst .= 'W' unless($bst =~ /W/);
$log .="アタック!UAが上がった<br>\n";
}elsif($v == 2){
$thp -= 25;
$log .="ソードダンス!$tnm に 25 の傷を与えた!<br>\n";
}elsif($v == 3){
$bst .= 'S' unless($bst =~ /S/);
$log .= "シールド!防御力が上がった<br>\n";
}elsif($v == 4){
$tud = 1;
$log .= "奥義 アーマーブレイク! $tnm のUDをゼロにした!<br>\n";
}elsif($v == 5){
$v = int($max_hp-$hp);
$v = 50 if($v>50);
$hp += $v;
$log .="ハイヒール!体力を$v回復した!<br>\n";
}elsif($v == 6){
$v = int($ua*3);
$v = int(sqrt($ua)) + $ua if($bst =~ /W/);
$v = int($v*3) if($bst =~ /W/);
$v = $v-$tud;
$v = 1 if($v<1);
$thp -= $v;
$log .="オーガソード!$tnm に $v の傷を与えた!<br>\n";
}elsif($v == 7){
$v = int($ua*3);
$v = int(sqrt($ua)) + $ua if($bst =~ /W/);
$v = int($v*3) if($bst =~ /W/);
$v = 100 if($v < 100);
$thp -= $v;
$tmp -= $v;
$log .="秘奥義 アルティメットアタック!$tnm のHPとMPに $v の傷を与えた!<br>\n";
}
}elsif($camp==4){
if($v == 0){
$v = int($ua*2);
$v = int(sqrt($ua)) + $ua if($bst =~ /W/);
$v = int($v*2) if($bst =~ /W/);
$v = $v-$tud;
$v = 1 if($v<1);
$thp -= $v;
$log .="暗黒剣!$tnm に $v の傷を与えた!<br>\n";
}elsif($v == 1 ){
$thp -= 20;
$v = int($max_hp-$hp);
$v = 10 if($v>10);
$hp += $v;
$log .="デッドクラウン!$tnm に20の傷を与え、更にその体力を僅かばかり吸い取った!<br>\n";
}elsif($v == 2){
$tmp -= 30;
$log .="ナイトメア!$tnm の MP に 30 のダメージを与えた!<br>\n";
}elsif($v == 3){
$thp -= 30;
$log .="黒炎!$tnm に 30 の傷を与えた!<br>\n";
}elsif($v == 4){
$v = int($max_hp-$hp);
$v = 50 if($v>50);
$hp += $v;
$log .="絶心功!体力を$v回復した!<br>\n";
}elsif($v == 5){
$bst .= 'W' unless($bst =~ /W/);
$log .="アタック!UAが上がった<br>\n";
}elsif($v == 6){
$bst .= 'S' unless($bst =~ /S/);
$log .= "シールド!防御力が上がった<br>\n";
}elsif($v == 7){
$v = int(rand(50)) + 200;
$thp -= $v;
$log .="開け地獄の門!$tnm に $v の傷を与えた!<br>\n";
}
}elsif($camp==5){
if($v == 0){
$dh =int(rand(2)) ;
if($dh==0){
$thp -= 30;
$log .="壱式!$tnm に 30 の傷を与えた!<br>\n";
}elsif($dh==1){
$thp -= 20;
$log .="壱式! かわされた!!<br>しかし、風圧により $tnm に 20 の傷を与えた!<br>\n";
}
}elsif($v == 1 ){
$v = int($ua*1.5);
$v = int(sqrt($ua)) + $ua if($bst =~ /W/);
$v = int($v*1.5) if($bst =~ /W/);
$v = $v-$tud;
$v = 1 if($v<1);
$thp -= $v;
$log .="壱式・断!$tnm に $v の傷を与えた!<br>\n";
}elsif($v == 2){
$dh =int(rand(2)) ;
if($dh==0){
$thp -= 70;
$log .="弐式!$tnm に 70 の傷を与えた!<br>\n";
}elsif($dh==1){
$thp -= 35;
$log .="弐式! かわされた!!<br>しかし、風圧により $tnm に 35 の傷を与えた!<br>\n";
}
}elsif($v == 3){
$dh =int(rand(3)) ;
if($dh==0){
$v = int($ua*2.5);
$v = int(sqrt($ua)) + $ua if($bst =~ /W/);
$v = int($v*2.5) if($bst =~ /W/);
$v = $v-$tud;
$v = 1 if($v<1);
$thp -= $v;
$log .="弐式・裂!$tnm に $v の傷を与えた!<br>\n";
}elsif($dh==1){
$v = int($ua*2.5);
$v = int(sqrt($ua)) + $ua if($bst =~ /W/);
$v = int($v*2.5) if($bst =~ /W/);
$v = $v-$tud;
$v = 1 if($v<1);
$thp -= $v;
$hp -= 15;
$log .="弐式・裂!$tnm に $v の傷を与えた!<br>しかし技を制御しきれず\暴\走し $nm は15の傷を負った。<br>\n";
}elsif($dh==2){
$v = int($ua*2.5);
$v = int(sqrt($ua)) + $ua if($bst =~ /W/);
$v = int($v*2.5) if($bst =~ /W/);
$v = $v-$tud;
$v = 1 if($v<1);
$thp -= $v;
$mp -= 15;
$log .="弐式・裂!$tnm に $v の傷を与えた!<br>しかし精神に負荷がかかり $nm は15のMPを失った。<br>\n";
}
}elsif($v == 4){
$dh =int(rand(2)) ;
if($dh==0){
$thp -= 120;
$log .="参式!$tnm に 120 の傷を与えた!<br>\n";
}elsif($dh==1){
$thp -= 60;
$log .="参式! かわされた!!<br>しかし、風圧により $tnm に 60 の傷を与えた!<br>\n";
}
}elsif($v == 5){
$dh =int(rand(3)) ;
if($dh==0){
$v = int($ua*3.5);
$v = int(sqrt($ua)) + $ua if($bst =~ /W/);
$v = int($v*3.5) if($bst =~ /W/);
$v = $v-$tud;
$v = 1 if($v<1);
$thp -= $v;
$log .="参式・波!$tnm に $v の傷を与えた!<br>\n";
}elsif($dh==1){
$v = int($ua*3.5);
$v = int(sqrt($ua)) + $ua if($bst =~ /W/);
$v = int($v*3.5) if($bst =~ /W/);
$v = $v-$tud;
$v = 1 if($v<1);
$thp -= $v;
$hp -= 30;
$log .="参式・波!$tnm に $v の傷を与えた!<br>しかし技を制御しきれず\暴\走し $nm は30の傷を負った。<br>\n";
}elsif($dh==2){
$v = int($ua*3.5);
$v = int(sqrt($ua)) + $ua if($bst =~ /W/);
$v = int($v*3.5) if($bst =~ /W/);
$v = $v-$tud;
$v = 1 if($v<1);
$thp -= $v;
$mp -= 30;
$log .="参式・波!$tnm に $v の傷を与えた!<br>しかし精神に負荷がかかり $nm は30のMPを失った。<br>\n";
}
}elsif($v == 6){
$dh =int(rand(2)) ;
if($dh==0){
$thp -= 200;
$log .="零式!$tnm に 200 の傷を与えた!<br>\n";
}elsif($dh==1){
$thp -= 100;
$log .="零式! かわされた!!<br>しかし、風圧により $tnm に 100 の傷を与えた!<br>\n";
}
}elsif($v == 7){
$dh =int(rand(3)) ;
if($dh==0){
$v = int($ua*5);
$v = int(sqrt($ua)) + $ua if($bst =~ /W/);
$v = int($v*5) if($bst =~ /W/);
$v = $v-$tud;
$v = 1 if($v<1);
$thp -= $v;
$log .="零式・絶!$tnm に $v の傷を与えた!<br>\n";
}elsif($dh==1){
$v = int($ua*6);
$v = int(sqrt($ua)) + $ua if($bst =~ /W/);
$v = int($v*6) if($bst =~ /W/);
$v = $v-$tud;
$v = 1 if($v<1);
$thp -= $v;
$hp -= 60;
$log .="零式・絶!$tnm に $v の傷を与えた!<br>しかし技を制御しきれず\暴\走し $nm は60の傷を負った。<br>\n";
}elsif($dh==2){
$v = int($ua*6);
$v = int(sqrt($ua)) + $ua if($bst =~ /W/);
$v = int($v*6) if($bst =~ /W/);
$v = $v-$tud;
$v = 1 if($v<1);
$thp -= $v;
$mp -= 60;
$log .="零式・絶!$tnm に $v の傷を与えた!<br>しかし精神に負荷がかかり $nm は60のMPを失った。<br>\n";
}
}
}
}
}
$log .="</font>\n";
# 勝利処理
&battle_win if($thp <= 0 && $type eq '修行中');
}
# 勝利処理
sub battle_win{
$G =int(rand(200))+((500*$tlv)-($lv*200));
$v =$lv-5;
$z =$lv-10;
$G =int(rand(500))+1500 if($G>2000);
$G =int($G/2) if($tlv<$v);
$G =int($G/3) if($tlv<$z);
$G =1 if($G<1);
$gold +=$G;
$E =int((((((rand(5))+5)+$tlv)*2)*0.8)-$lv);
$E =1 if($E<1);
$E =int(rand(50))+250 if($E>300);
$exe+=$E;
$tm =0;
$thp=0;
$bst ='';
$bt =0;
$ck =0;
$cmd=-1;
$type='';
$log .="$nm は $tnm を倒した!<br>\n";
$log .="$G の金 と $E の経験値を得た!<br>\n";
$tnm_p = $tnm; # 02/10 戦争時、攻めた国の人でない人がでてくることへの対処
$tnm ='';
}
# 攻撃--敵側
sub attack_enemy{
$log .="<font color=FF3366>\n";
if(($cmd != -1)&&($thp>0)){
$log .="$tnm の攻撃! \n";
$p=int(rand(6));
if($tcp==0){
if($lv < 10){$ch =int(rand(20));}#アンラッキーヒット率
elsif($lv >= 10 && $lv < 15){$ch =int(rand(32));}
elsif($lv >= 15 && $lv < 25){$ch =int(rand(16));}
elsif($lv >= 25 && $lv < 40){$ch =int(rand(8));}
else{$ch =int(rand(4));}
if($tlv>=5&&$tlv<10&&$tmp>=3&&$p==0){
if($ch == 0){
$v = int($tua*4);
$v = 1 if($v<1);
$hp -= $v;
$log .="必殺 マジン剣!<b>痛恨の一撃!</b> $nm は $v の傷を受けた!<br>\n";
$tmp-=3;
}else{
$v = int($tua*2);
$v = 1 if($v<1);
$hp -= $v;
$log .="必殺 マジン剣!$nm は $v の傷を受けた!<br>\n";
$tmp-=3;
}
}elsif($tlv>=10&&$tmp>=9&&$p==1){
if($ch == 0){
$v = int($tua*4);
$v = 1 if($v<1);
$hp -= $v;
$log .="必殺 マジン剣!<b>痛恨の一撃!</b> $nm に $v の傷を与えた!<br>\n";
$tmp-=3;
}elsif($ch == 1){
$thp += int($thp_max/3) if($thp < $thp_max - int($thp_max/3));
$v = int($tua*2);
$v = 1 if($v<1);
$hp -= $v;
$log .="半回復!体力がある程度回復した!<br>敵の猛攻撃! 必殺 マジン剣!$nm に $v の傷を与えた!<br>\n";
$tmp-=9;
}elsif($ch > 1){
$ch2 =int(rand(3));
if($ch2 == 0 || $ch2 == 1){
$v = int($tua*2);
$v = 1 if($v<1);
$hp -= $v;
$log .="必殺 マジン剣!$nm は $v の傷を受けた!<br>\n";
$tmp-=3;
}else{
$thp = $thp_max;
$log .="全回復!体力が完全に回復した!<br>\n";
$tmp-=9;
}
}
}else{
# 敵キャラ通常攻撃処理
&bogu_bt;
}
}elsif($tcp==1){
if($tlv>=40&&$tmp>=90&&$p==0){
$dh =int(rand(20)) ;
if($dh <= 3){
$log .="秘奥義 魂砕き!!意識が遠のく…。<br>\n";
$hp=0;
$tmp-=90;
}elsif($dh == 4){
$v = int($thp*0.9);
$thp -= $v;
$log .="秘奥義 魂砕き!!<b>自爆!!</b> $tnm は心が粉々に砕けちった!<br>\n";
$tmp-=90;
}elsif($dh >= 5 && $dh <= 12){
$v = int(($ud+$ua)*2-$ud);
$hp -= $v;
$log .="秘奥義 魂砕き!!寸でのところで $nm は避けた!!<br>しかし避けきれず $v の傷を負った!<br>\n";
$tmp-=90;
}else{
$log .="失\敗\したようだ♪<br>\n";
$tmp-=90;
}
}elsif($tlv>=35&&$tmp>=60&&$p==1){
$dh =int(rand(3)) ;
if($dh==0){
$v = int($hp*0.8);
$hp -= $v;
$hp = 1 if($hp < 1);
$vv = int($tmp/4);
$tmp -= $vv;
$log .="奥義 鳳凰転生!!$nm は瀕死の状態に陥った!<br>しかし余波を食らい $tnm は $vv の精神を失った。<br>\n" if($thp <= 1);
$log .="奥義 鳳凰転生!!$nm は$vの傷を負った!<br>しかし余波を食らい $tnm は $vv の精神を失った。<br>\n";
$tmp-=60;
}else{
$v = int($hp*0.5);
$hp -= $v;
$hp = 1 if($hp < 1);
$log .="奥義 鳳凰転生!!$nm は瀕死の状態に陥った!<br>\n" if($thp <= 1);
$log .="奥義 鳳凰転生!!$nm は $v の傷を負った!<br>\n";
$tmp-=60;
}
}elsif($tlv>=30&&$tmp>=21&&$p==2){
$v = int($thp_max-$thp);
$v = 50 if($v>50);
$thp += $v;
$log .="絶心功!体力を$v回復した!<br>\n";
$tmp-=21;
}elsif($tlv>=20&&$tmp>=15&&$p==3){
$hp -= 30;
$log .="炎蒼旋!$nm は 30 の傷を受けた!<br>\n";
$tmp-=15;
}elsif($tlv>=10&&$tmp>=9&&$p==4){
$v = int($thp_max-$thp);
$v = 30 if($v>30);
$thp += $v;
$log .="生命功!体力を $v 回復してしまった!<br>\n";
$tmp-=9;
}elsif($tlv>=5&&$tmp>=6&&$p==5){
$v = int($tua*1.5);
$v = $v-$ud;
$v -= int(sqrt($ud)) if($bst =~ /S/);
$v = 1 if($v<1);
$hp -= $v;
$log .="必殺疾風剣!$nm は $v の傷を受けてしまった!<br>\n";
$tmp-=6;
}else{
# 敵キャラ通常攻撃処理
&bogu_bt;
}
}elsif($tcp==2){
if($tlv>=40&&$tmp>=90&&$p==0){
$v = 200 + int(rand(150)) - $ud;
$hp -= $v;
$log .="黄昏よりも暗き者……血の流れより赤き者……<br>(省略)<br>……等しく滅びを与えんことを! 龍破斬!!<br>\n";
$tmp-=85;
$log .="$nm は $v の傷を負った!<br>\n";
}elsif($tlv>=35&&$tmp>=45&&$p==2){
$v = 140 + int(rand(60)) -$ud;
$hp -= $v;
$log .="時の流れに埋れし者……永久<small>(とわ)</small>の夢を継ぐ者……<br>今汝の名において、穢れし者を浄化せよ・・・!!<br>$nm は $v の傷を負った!<br>\n";
$tmp-=45;
}elsif($tlv>=20&&$tmp>=18&&$p==3){
$hp -= 30;
$v = int($thp_max-$thp);
$v = 10 if($v>10);
$thp += $v;
$log .="セイントクロス!$nm は30の傷を受け、更にその体力を僅かばかり吸い取られた!<br>\n";
$tmp-=18;
}elsif($tlv>=15&&$tmp>=12&&$p==4){
$v = int($thp_max-$thp);
$v = 30 if($v>30);
$thp += $v;
$log .="ヒール!体力を $v 回復してしまった!<br>\n";
$tmp-=12;
}elsif($tlv>=5&&$tmp>=6&&$p==5){
$v = int($tua*1.5);
$v = $v-$ud;
$v -= int(sqrt($ud)) if($bst =~ /S/);
$v = 1 if($v<1);
$hp -= $v;
$log .="バーティカルソード!$nm は $v の傷を受けてしまった!<br>\n";
$tmp-=6;
}else{
# 敵キャラ通常攻撃処理
&bogu_bt;
}
}elsif($tcp==3){
if($tlv>=40&&$tmp>=85&&$p==0){
$v = int($tua*3);
$v -= int(sqrt($ud)) if($bst =~ /S/);
$v = 100 if($tua<2);
$v = 100 if($v < 100);
$hp -= $v;
$mp -= $v;
$log .="秘奥義 アルティメットアタック!$nm はHPとMPに $v のダメージを受けてしまった!<br>\n";
$tmp-=85;
}elsif($tlv>=30&&$tmp>=40&&$p==2){
$v = int($tua*3);
$v = $v-$ud;
$v -= int(sqrt($ud)) if($bst =~ /S/);
$v = 1 if($v<1);
$hp -= $v;
$log .="渾身の一撃!$nm は $v の傷を受けてしまった!<br>\n";
$tmp-=40;
}elsif($tlv>=25&&$tmp>=18&&$p==3){
$v = int($thp_max-$thp);
$v = 50 if($v>50);
$thp += $v;
$log .="ハイヒール!体力を$v回復した!<br>\n";
$tmp-=18;
}elsif($tlv>=15&&$tmp>=12&&$p==4){
$hp -= 25;
$log .="ソードダンス!$nm は 25 の傷を受けてしまった!<br>\n";
$tmp-=12;
}elsif($tlv>=5&&$tmp>=6&&$p==5){
$hp -= 15;
$log .="ソードスラッシュ!$nm は 15 の傷を受けてしまった!<br>\n";
$tmp-=6;
}else{
# 敵キャラ通常攻撃処理
&bogu_bt;
}
}elsif($tcp==4){
if($tlv>=40&&$tmp>=90&&$p==0){
$v = int(rand(50)) + 200;
$hp -= $v;
$log .="開け地獄の門!$nm は $v の傷を受けた!<br>\n";
$tmp-=90;
}elsif($tlv>=20&&$tmp>=15&&$p==2){
$hp -= 30;
$log .="黒炎!$nm は 30 の傷を受けた!<br>\n";
$tmp-=15;
}elsif($tlv>=15&&$tmp>=12&&$p==3){
$mp -= 30;
$log .="ナイトメア!$nm のMPに30のダメージを与えた!<br>\n";
$tmp-=12;
}elsif($tlv>=10&&$tmp>=9&&$p==4){
$hp -= 20;
$v = int($thp_max-$thp);
$v = 10 if($v>10);
$thp += $v;
$log .="デッドクラウン!$nm は20の傷を受け、更にその体力を僅かばかり吸い取られた!<br>\n";
$tmp-=9;
}elsif($tlv>=5&&$tmp>=9&&$p==5){
$v = int($tua*2);
$v = $v-$ud;
$v -= int(sqrt($ud)) if($bst =~ /S/);
$v = 1 if($v<1);
$hp -= $v;
$log .="暗黒剣!$nm は $v の傷を受けてしまった!<br>\n";
$tmp-=9;
}else{
# 敵キャラ通常攻撃処理
&bogu_bt;
}
}elsif($tcp==5){
if($tlv>=40&&$tmp>=90&&$p==0){
$dh =int(rand(3)) ;
if($dh==0){
$v = int($tua*5);
$v = $v-$ud;
$v -= int(sqrt($ud)) if($bst =~ /S/);
$v = 1 if($v<1);
$hp -= $v;
$log .="零式・裂!$nm は $v の傷を受けてしまった!<br>\n";
$tmp-=99;
}elsif($dh==1){
$v = int($tua*6);
$v = $v-$ud;
$v -= int(sqrt($ud)) if($bst =~ /S/);
$v = 1 if($v<1);
$hp -= $v;
$log .="零式・裂!$nm は $v の傷を受けてしまった!<br>しかし技を制御しきれず\暴\走し $tnm は60の傷を負った。<br>\n";
$tmp-=99;
$thp-=60;
}elsif($dh==2){
$v = int($tua*6);
$v = $v-$ud;
$v -= int(sqrt($ud)) if($bst =~ /S/);
$v = 1 if($v<1);
$hp -= $v;
$log .="零式・裂!$nm は $v の傷を受けてしまった!<br>しかし精神に負荷がかかり $tnm は60のMPを失った。<br>\n";
$tmp-=99;
$tmp-=60;
}
}elsif($tlv>=35&&$tmp>=40&&$p==1){
$dh =int(rand(2)) ;
if($dh==0){
$hp -= 200;
$log .="零式!$nm は 200 の傷を受けた!<br>\n";
$tmp-=60;
}elsif($dh==1){
$hp -= 100;
$log .="零式! 身を翻し避けた!!<br>しかし、風圧により $nm は 100 の傷を負った!<br>\n";
$tmp-=60;
}
}elsif($tlv>=30&&$tmp>=45&&$p==2){
$dh =int(rand(3)) ;
if($dh==0){
$v = int($tua*3.5);
$v = $v-$ud;
$v -= int(sqrt($ud)) if($bst =~ /S/);
$v = 1 if($v<1);
$hp -= $v;
$log .="参式・波!$nm は $v の傷を受けてしまった!<br>\n";
$tmp-=30;
}elsif($dh==1){
$v = int($tua*3.5);
$v = $v-$ud;
$v -= int(sqrt($ud)) if($bst =~ /S/);
$v = 1 if($v<1);
$hp -= $v;
$log .="参式・波!$nm は $v の傷を受けてしまった!<br>しかし技を制御しきれず\暴\走し $tnm は30の傷を負った。<br>\n";
$tmp-=30;
$thp-=30;
}elsif($dh==2){
$v = int($tua*3.5);
$v = $v-$ud;
$v -= int(sqrt($ud)) if($bst =~ /S/);
$v = 1 if($v<1);
$hp -= $v;
$log .="参式・波!$nm は $v の傷を受けてしまった!<br>しかし精神に負荷がかかり $tnm は30のMPを失った。<br>\n";
$tmp-=30;
$tmp-=30;
}
}elsif($tlv>=25&&$tmp>=30&&$p==3){
$dh =int(rand(2)) ;
if($dh==0){
$hp -= 120;
$log .="参式!$nm は 120 の傷を受けた!<br>\n";
$tmp-=30;
}elsif($dh==1){
$hp -= 60;
$log .="参式! 身を翻し避けた!!<br>しかし、風圧により $nm は 60 の傷を負った!<br>\n";
$tmp-=30;
}
}elsif($tlv>=20&&$tmp>=30&&$p==4){
$dh =int(rand(3)) ;
if($dh==0){
$v = int($tua*2.5);
$v = $v-$ud;
$v -= int(sqrt($ud)) if($bst =~ /S/);
$v = 1 if($v<1);
$hp -= $v;
$log .="弐式・裂!$nm は $v の傷を受けてしまった!<br>\n";
$tmp-=20;
}elsif($dh==1){
$v = int($tua*2.5);
$v = $v-$ud;
$v -= int(sqrt($ud)) if($bst =~ /S/);
$v = 1 if($v<1);
$hp -= $v;
$log .="弐式・裂!$nm は $v の傷を受けてしまった!<br>しかし技を制御しきれず\暴\走し $tnm は15の傷を負った。<br>\n";
$tmp-=20;
$thp-=15;
}elsif($dh==2){
$v = int($tua*2.5);
$v = $v-$ud;
$v -= int(sqrt($ud)) if($bst =~ /S/);
$v = 1 if($v<1);
$hp -= $v;
$log .="弐式・裂!$nm は $v の傷を受けてしまった!<br>しかし精神に負荷がかかり $tnm は15のMPを失った。<br>\n";
$tmp-=20;
$tmp-=15;
}
}elsif($tlv>=15&&$tmp>=20&&$p==5){
$dh =int(rand(2)) ;
if($dh==0){
$hp -= 70;
$log .="弐式!$nm は 70 の傷を受けた!<br>\n";
$tmp-=20;
}elsif($dh==1){
$hp -= 35;
$log .="弐式! 身を翻し避けた!!<br>しかし、風圧により $nm は 35 の傷を負った!<br>\n";
$tmp-=20;
}
}elsif($tlv>=10&&$tmp>=15&&$p==6){
$v = int($tua*1.5);
$v = $v-$ud;
$v -= int(sqrt($ud)) if($bst =~ /S/);
$v = 1 if($v<1);
$hp -= $v;
$log .="壱式・断!$nm は $v の傷を受けてしまった!<br>\n";
$tmp-=10;
}elsif($tlv>=5&&$tmp>=10&&$p==7){
$dh =int(rand(2)) ;
if($dh==0){
$hp -= 30;
$log .="参式!$nm は 120 の傷を受けた!<br>\n";
$tmp-=10;
}elsif($dh==1){
$hp -= 20;
$log .="参式! 身を翻し避けた!!<br>しかし、風圧により $nm は 20 の傷を負った!<br>\n";
$tmp-=10;
}
}else{
# 敵キャラ通常攻撃処理
&bogu_bt;
}
}
}
$log .="</font>\n";
# 負け処理
&battle_lost if($hp <= 0 && $type eq '修行中');
}
# 負け処理
sub battle_lost{
$tm = 0;
$cmd=-1;
$bst ='';
$bt =0;
$ck =0;
$hp =0;
$type='';
$G=int(rand(10))+1;
$E=int(rand(5))+1;
$gold+=$G;
$exe+=$E;
$log .="あなたは $tnm に敗れ去った…<br>\n";
$log .="$G の金 と $E の経験値を得た<br>\n";
$tnm_p = $tnm; # 02/10 戦争時、攻めた国の人でない人がでてくることへの対処
$tnm='';
}
#-------------------------------------------------------------------------------
# 敵キャラ通常攻撃処理
sub bogu_bt{
$v = $tua_a-$ud_a;
$v -= int(sqrt($tud)) if($bst =~ /S/);
$v = 1 if($v<1);
# 通常ダメージ補正 << 強者が弱者ばかり相手にしないように
if($lv <= 15){$v += int((rand(2))+$v);}
elsif($lv > 15 && $lv <= 30){$v += int((rand(4))+$v);}
else{$v += int((rand(8))+$v);}
if($tdg_a>0){#武具呼び出し
$log .="$dg_data[$tdg_a][1] で反撃!!<br>$nm は $v の傷を負った!<br>\n";
$hp -= $v;
}else{
$v = int((rand(4))+$v);
$hp -= $v;
$log .="$v の反撃を受けた!<br>\n";
}
if($df_a && $df_cnt){#防具呼び出し
$df_cnt--;
if($df_cnt<=0){
$log .="$tnmの鋭い攻撃により $nmの $df_data[$df_a][1] が壊れた!!<br>\n";
$df_a = $df_cnt = 0;
}
}
}
#-------------------------------------------------------------------------------
#戦闘時のセレクトメニュー表示
sub spell_sp {
$log2 .="<select name=cmd size=1>\n<option value=1>攻撃</option>\n";
for($i=0,$j=2;$i<int($lv/5) && $i<=$#spell;$i++,$j++){
next if($mp<$sp_mp[$i]);
$v = int($mp/$sp_mp[$i]);
$log2 .="<option value=$j>$spell[$i]\[$v\]</option>\n";
}#;
for($i=0,$j=8,$k=10;$i<=$#kspell;$i++,$j=$j+2,$k++){
if($rank >= $j && $mp >= $ksp_mp[$i] && $camp >0){
$v = int($mp/$ksp_mp[$i]);
$log2 .="<option value=$k>$kspell[$i]\[$v\]</option>\n";
}
}
if($di_a>0){
$log2 .="<option value=15>$di_data[$di_a][1]\[1\]</option>\n";
}
$log2 .="</select>";
}
#-------------------------------------------------------------------------------
#階級技(プレイヤー用)
sub st_cm_k {
if($v == 8 && $camp > 0){
$v = int(($ua+$ud)*2)-$tud;
$v = 1 if($v<1);
$thp -= $v;
$log .="$kspell[0]!$tnm に $v の傷を与えた!<br>\n";
$mp -= $ksp_mp[0];
}elsif($v == 9 && $camp > 0){
$v = int(($ua+$ud)*2.5)-$tud;
$v = 1 if($v<1);
$thp -= $v;
$log .="$kspell[1]!$tnm に $v の傷を与えた!<br>\n";
$mp -= $ksp_mp[1];
}elsif($v == 10 && $camp > 0){
$v = int(($ua+$ud)*3)-$tud;
$v = 1 if($v<1);
$thp -= $v;
$log .="$kspell[2]!$tnm に $v の傷を与えた!<br>\n";
$mp -= $ksp_mp[2];
}elsif($v == 11 && $camp > 0){
$v = int(($ua+$ud)*4)-$tud;
$v = 1 if($v<1);
$thp -= $v;
$log .="$kspell[3]!$tnm に $v の傷を与えた!<br>\n";
$mp -= $ksp_mp[3];
}
}
#-------------------------------------------------------------------------------
#道具(PC用)
sub dogu_k {
my $v;
if($di_a == 2){
$hp = $max_hp;
$mp = $max_mp;
$di_cnt=0;
$di_a=0;
$log .="$nm は $di_data[2][1] を使った! 体力と魔力が 全回復した!<br>\n";
}elsif($di_a == 3){
$hp = $max_hp;
$di_cnt=0;
$di_a=0;
$log .="$nm は $di_data[3][1] を使った! 体力が 全回復した!<br>\n";
}elsif($di_a == 4){
$mp = $max_mp;
$di_cnt=0;
$di_a=0;
$log .="$nm は $di_data[4][1] を使った! 魔力が 全回復した!<br>\n";
}elsif($di_a == 11){
if(int($hp+80) < $max_hp){
$v=80;
$hp += $v;
}else{
$v=$max_hp-$hp;
$hp += $v;
}
if(int($mp+60) < $max_mp){
$vv=60;
$mp += $vv;
}else{
$vv=$max_mp-$mp;
$mp += $vv;
}
$di_cnt=0;
$di_a=0;
$log .="$nm は $di_data[11][1]を使った!<br>体力が $v 回復し、さらに精神が $vv 回復した!<br>\n";
}elsif($di_a == 12){
if(int($mp+80) < $max_mp){
$v=80;
$mp += $v;
}else{
$v=$max_mp-$mp;
$mp += $v;
}
$di_cnt=0;
$di_a=0;
$log .="$nm は $di_data[12][1] を使った! 精神が $v 回復した!<br>\n";
}elsif($di_a == 13){
if(int($mp+40) < $max_mp){
$v=40;
$mp += $v;
}else{
$v=$max_mp-$mp;
$mp += $v;
}
$di_cnt=0;
$di_a=0;
$log .="$nm は $di_data[13][1] を使った! 精神が $v 回復した!<br>\n";
}elsif($di_a == 14){
if(int($hp+100) < $max_hp){
$v=100;
$hp += $v;
}else{
$v=$max_hp-$hp;
$hp += $v;
}
$di_cnt=0;
$di_a=0;
$log .="$nm は $di_data[14][1] を使った! 体力が $v 回復した!<br>\n";
}elsif($di_a == 15){
if(int($hp+50) < $max_hp){
$v=50;
$hp += $v;
}else{
$v=$max_hp-$hp;
$hp += $v;
}
$di_cnt=0;
$di_a=0;
$log .="$nm は $di_data[15][1] を使った! 体力が $v 回復した!<br>\n";
}
}
1;