Files
ore/inc/ore_sub-battle.cgi
T

1110 lines
33 KiB
Perl
Executable File
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를 0으로 만들었다!<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를 0으로 만들었다!<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;