2011年4月20日 星期三

battle2.pl 戰鬥2

#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
#_/    怪物 戰鬥  畫面     _/#
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#



sub BATTLE2 {

$battle_lock_flg = 1;

if($in{'level'} eq "4"){
&GUEST_BATTLE;
}
&CHARA_OPEN;

$date = time();
$s_time = $date - $kdate;
if($s_time < $BATTLE_TIME){$s_time = $BATTLE_TIME - $s_time;&B_ERR("下下戰鬥時間尚餘 $s_time 秒。");}
&CHARA_ITEM_OPEN;
if($kgold > 300000){&B_ERR("所持金超過了30萬。先去銀行存款吧。");}
open(GUEST,"$GUEST_LIST") or &ERR2('打開文件失敗。');
@GUEST=<GUEST>;close(GUEST);
$lhit=0;
foreach (@GUEST){
($timer,$name,$con,$oid) = split(/<>/);
if($kid eq $oid){$lhit=1;last;}
}
if(!$lhit){&B_ERR("請返返回狀態畫面。\(不可連續更新)");}
$c_hit = 0;
$sm_name = "敵人";
if($in{'level'} eq "1"){
open(IN,"$MONSTER_DATA1");
@E1_DATA = <IN>;
close(IN);
$m_unit = "初級森林";
}elsif($in{'level'} eq "2"){
open(IN,"$MONSTER_DATA2");
@E1_DATA = <IN>;
close(IN);
$m_unit = "中級古塔";
}elsif($in{'level'} eq "3"){
open(IN,"$MONSTER_DATA3");
@E1_DATA = <IN>;
close(IN);
$m_unit = "上級洞窟";
}elsif($in{'level'} eq "5"){
open(IN,"$BOSS_DATA1");
@E1_DATA = <IN>;
close(IN);
$m_unit = "BOSS戰";
}elsif($in{'level'} eq "6"){
# if($in{'conid'} eq $kcon){&B_ERR('自已國家不能攻擊。');}
if($in{'uid'} eq "$kcon"){&B_ERR('自已國家不能攻擊。');}
if($in{'townid'} eq "2" || $in{'townid'} eq ""){&B_ERR('不能攻擊這個城市。');}
&COUNTRY_DATA_OPEN("$kcon");
if($xxcid eq 0){&B_ERR("無所屬國不能攻擊。");}
&TIME_DATA;
if($wday ne 0 && $wday ne 6 ){&ERR("星期日與星期六才能國戰。今天是$Wanday");}

open(IN,"$BATTLE_TIME_LIST") or &B_ERR("指定檔案不能打開。");
@BATTLE_STOP_DATA = <IN>;
close(IN);

if($in{'c_flg'}){
$m_unit = " 要塞攻佔戰 ";
$c_flg=1;
$co_id = $in{'uid'};
&COUNTRY_DATA_OPEN("$co_id");
if($xxnum < 10){&B_ERR("10名以下國家不能攻擊。($xxnum名)");}
$bat_mes = "<font color=$ELE_BG[$co_id]><B>$country[$co_id]</B></font>";
}else{
$m_unit = " $zname攻佔戰 ";
$co_id = $in{'conid'};
&COUNTRY_DATA_OPEN("$co_id");
$bat_mes = "<font color=$ELE_BG[$co_id]><B>$country[$co_id]</B></font>城市";
}

$hit=0;
foreach(@BATTLE_STOP_DATA){
($bid,$bpass,$btime)=split(/<>/);
if("$bid" eq "$kid"){$hit=1;last;}
}
if($hit){
$y_time = $date - $btime;
if($y_time < $TOWN_ATTACK){$s_time = $TOWN_ATTACK - $y_time;
$s_o_time = int($s_time / 60);
&B_ERR("下一次攻佔要塞時間尚餘 $s_time 秒(約$s_o_time分)。");}
}

&TOWN_DATA_OPEN;
if($zcid eq "1" && !$c_flg){
&COUNTRY_BATTLE;
}elsif(!$in{'t_flg'} && $zcid ne "1" ){
&TOWN_BATTLE;
}

open(IN,"$DEF_LIST") or &B_ERR("指定檔案不能打開。");
@DEF_DATA = <IN>;
close(IN);
$yhit=0;
foreach(@DEF_DATA){
($did, $dname, $dtown_id, $dat, $dcon)=split(/<>/);
if("$did" eq "$kid"){&B_ERR("守備城市時不能攻擊其他城市");}
if($c_flg){
if($dat eq "1" && $co_id eq "$dtown_id"){$mes_log = "$country[$co_id]國";$yhit=1;last;}
}else{
if($dat eq "0" && $in{'eid'} eq "$did"){$mes_log = "$zname";$yhit=1;last;}
}
}
if(!$yhit && $in{'t_flg'} && "$in{'eid'}" ne "YO"){
&B_ERR("沒有選擇。");
}
if(!$yhit || "$in{'eid'}" eq "YO"){
$mes_log = "$zname";
$yousai = 1;
$aite = "要塞";
if($xxcid eq $kcon){&B_ERR("自國不能攻擊。");}
}else{
open(IN,"./charalog/main/$did.cgi");
@E1_DATA = <IN>;
close(IN);
$aite = "$dname";
}


$coment = "<TABLE height=100% width=100%><TBODY><TR><TD height=100% width=100% BGCOLOR=$TALK_BG><font size=2 color=$TALK_FONT> $emes </TD></TR></TBODY></TABLE>";
$kcex+=2;
$ecex+=1;
$e_hit = 1;
$c_hit = 1;
&MAP_LOG("<font color=$ELE_BG[$xxele]><B>$country[$kcon]</B></font> <B>$kunit軍($kname)</B> $bat_mes<B>「$mes_log」($aite)</B>攻擊進行!");

}elsif($in{'level'} eq "7"){
if(($k_ex % 11) ne "0"){
$kcex = 0;
$kgold = 0;
&CHARA_MAIN_INPUT;
&MAP_LOG("<font color=$ELE_BG[$$xxele]><B>$country[$kcon]</B></font> <B>$kunit 軍($kname)</B>非法遊戲失敗。");
&B_ERR("違規行為。");
}
open(IN,"$MONSTER_DATA1");
@E1_DATA = <IN>;
close(IN);
$m_unit = "秘寶島";
}elsif($in{'level'} eq "8"){
open(IN,"$MONSTER_DATA2");
@E1_DATA = <IN>;
close(IN);
$m_unit = "哥布林巢穴";
}elsif($in{'level'} eq "9"){
open(IN,"$CHARA_LANK_LIST");
@E2_DATA = <IN>;
close(IN);
$s_num = @E2_DATA;
$s_no = int(rand($s_num));
@E1_DATA = $E2_DATA[$s_no];

$e_hit = 1;
$m_unit = "傳說英雄";
}elsif($in{'eid'}){
open(IN,"./charalog/main/$in{'eid'}.cgi");
@E1_DATA = <IN>;
close(IN);
$m_unit = "訓練";
$e_hit = 1;
}else{ &B_ERR('沒有選擇項目。');}

open(IN,"./charalog/battle_mes/$kid.cgi");
@B_MES = <IN>;
close(IN);

$coment2 = "<TABLE height=70 width=100%><TBODY><TR><TD height=100% width=100% BGCOLOR=$TALK_BG><font size=2 color=$TALK_FONT> $B_MES[0] </TD></TR></TBODY></TABLE>";

if($in{'level'} eq "5"){
open(IN,"$BOSS_DOWN_LIST");
@D_BODD_DATA = <IN>;
close(IN);

$boss_no = 0;
$b_hit=0;
foreach(@D_BODD_DATA){
($b_id,$b_get_clistal)=split(/<>/);
if("$kid" eq "$b_id"){$b_hit=1;last;}
$boss_no++;
}
if(!$b_hit){$b_get_clistal = "";}
$s_num = @E1_DATA;
if($b_get_clistal eq "262142"){
$b_no = 0;
}else{
$b_no = $in{'townid'} - 1;
}

($m1name,$m1maxhp,$estr,$m1vit,$eagi,$emes) = split(/<>/,$E1_DATA[$b_no]);

$emp = 999;
($etec_no,$etec_name,$etec_str,$etec_hit,$etec_sta,$etec_cho,$etec_class) = split(/<>/,$TEC[rand(@TEC)]);

$estr += $kstr+int(rand(100));
$m1vit += $kvit+int(rand(100));
$eagi += int(rand(50));
$m1img = "<img src=\"$IMG/enemy/$b_no.gif\">";
$m1maxhp += $kmaxhp;

$m2maxhp = 0;
$m2hp = $m2maxhp;
$m2name = " ";
$m3name = " ";
$m3maxhp = 0;
$m3hp = $m3maxhp;

$m1hp = $m1maxhp;
}elsif($in{'level'} eq "8"){
($m1name,$m1maxhp,$estr,$m1vit,$eagi) = split(/<>/,$E1_DATA[100]);
$m1hp = $m1maxhp;
$m1img = "<img src=\"$IMG/enemy.gif\">";
$m2maxhp = 0;$m2hp = $m2maxhp;
$m3maxhp = 0;$m3hp = $m3maxhp;

}elsif(!$c_hit && !$e_hit && $yousai ne "1"){
$s_num = @E1_DATA;
$s_no = int(rand($s_num));
($m1name,$m1maxhp,$estr,$m1vit,$eagi) = split(/<>/,$E1_DATA[$s_no]);
$m1maxhp = int(($m1maxhp + $kmaxhp)/($MONSTER_LEVEL+0.1));
$estr = int(($estr + $kstr)/($MONSTER_LEVEL+0.1));
$m1vit = int(($m1vit + $kvit)/($MONSTER_LEVEL+0.1));
$eagi = int(($eagi + $kagi)/($MONSTER_LEVEL+0.1));
$m1hp = $m1maxhp;
$m1img = "<img src=\"$IMG/enemy.gif\">";
$m2maxhp = 0;$m2hp = $m2maxhp;
$m3maxhp = 0;$m3hp = $m3maxhp;

}elsif($e_hit && $yousai ne "1"){
($eid,$epass,$ename,$eurl,$echara,$esex,$ehp,$emaxhp,$emp,$emaxmp,$eele,$estr,$evit,$eint,$emen,$eagi,$ecom,$egold,$e_ex,$ecex,$eunit,$econ,$earm,$epro,$eacc,$esub1,$esub2,$etac,$esta,$epos,$emes,$ehost,$edate,$esyo,$eclass,$etotal,$ekati) = split(/<>/,$E1_DATA[0]);
$sm_name = "$eunit 軍";
($earmname,$earmval,$earmdmg,$earmwei,$earmele,$earmsta,$earmclass,$earmtownid) = split(/<>/,$ARM_DATA[$earm]);
if($earmsta eq "use"){
open(IN,"./charalog/arm/$eid.cgi");
@MY_ARM_DATA = <IN>;
close(IN);
($earmname,$earmval,$earmdmg,$earmwei,$earmele,$earmsta,$earmclass,$earmtownid) = split(/<>/,$MY_ARM_DATA[0]);
}
if($eele eq "$earmele" && $eele ne "0"){$earmdmg = int($earmdmg*1.5);}

($eproname,$eproval,$eprodmg,$eprowei,$eproele,$eprosta,$eproclass,$eprotownid) = split(/<>/,$PRO_DATA[$epro]);
if($eele eq "$eproele" && $eele ne "0"){$eprodmg = int($eprodmg*1.5);}
($eaccname,$eaccval,$eaccdmg,$eaccwei,$eaccele,$eaccsta,$eaccclass,$eacctownid) = split(/<>/,$ACC_DATA[$eacc]);
if($eele eq "$eaccele" && $eele ne "0"){$eaccdmg = int($eaccdmg*1.5);}
$m1hp = $emaxhp;
$m1maxhp = $emaxhp;
$m1img = "<img src=\"$IMG/$echara.gif\">";
$m1name = $ename;
$m1vit = $evit;
$m2maxhp = 0;$m2hp = $m2maxhp;
$m3maxhp = 0;$m3hp = $m3maxhp;
}else{
if($kmaxhp eq ""){&B_ERR("MAXHP = 0");}
$m1name = "$xxname要塞";
$m1maxhp = $xxmaxhp;
$m1hp = $xxhp;
$estr = $xxstr;
$m1vit = $xxvit;
$emen = $xxvit;
$eagi = $xxagi;
$m1img = "<img src=\"$IMG/$IMG_GROUND/$FORT[0]\" width=160 height=120>";
$m2maxhp = 0;
$m3maxhp = 0;
$m2hp = $m2maxhp;
$m3hp = $m3maxhp;
}

&TAC_DATA_OPEN;

if($eid ne ""){
open(IN,"./charalog/battle_mes/$eid.cgi");
@E_MES = <IN>;
close(IN);
}else{
$E_MES[0] = "";
$E_MES[1] = "致命一擊!接招吧!";
$E_MES[2] = "天地間的精靈啊,請賜予我力量!";
$E_MES[3] = "想再來嗎?我不會輸的。";
$E_MES[4] = "你...";
}
$coment = "<TABLE height=100% width=100%><TBODY><TR><TD height=100% width=100% BGCOLOR=$TALK_BG><font size=2 color=$TALK_FONT> $E_MES[0] </TD></TR></TBODY></TABLE>";


$knum=3;
$enum=3;
if($shp eq ""){ $shp = 0;$knum--;}
if($thp eq ""){ $thp = 0;$knum--;}

$s_m1hp = $m1hp;
$s_m2hp = $m2hp;
$s_m3hp = $m3hp;
$s_khp = $khp;
$s_kmp = $kmp;

$kdef = int(($kvit+$kprodmg+$kaccdmg)/4);
$edef = int(($m1vit+$eprodmg+$eaccdmg)/4);

$flg=0;
$kflg=0;
$number=1;

$kpoint=int(($kmaxhp+$kmaxmp)/3)+$kstr+$kvit+$kint+$kmen+$kagi;
$epoint=int(($m1maxhp)/3)+$estr+$m1vit+$eagi;

$kget_kgold=0;
$kget_k_ex=0;
$kget_s_ex=0;
$kget_t_ex=0;
$kget_cex=0;
if($kmaxhp eq ""){&B_ERR("MAXHP = 0");}
$kbar1 = int(($khp/$kmaxhp)*50);
$kbar2 = 50 - $kbar1;
$khpimg = "<img src=\"$IMG/$IMG_GROUND/bar1.gif\"  height=\"7\" width=$kbar1><img src=\"$IMG/$IMG_GROUND/bar2.gif\"  height=\"7\" width=$kbar2>";

$kbar1 = int(($kmp/($kmaxmp+1)) * 50);
$kbar2 = 50-$kbar1;
$kmpimg = "<img src=\"$IMG/$IMG_GROUND/bar1.gif\"  height=\"7\" width=$kbar1><img src=\"$IMG/$IMG_GROUND//bar2.gif\"  height=\"7\" width=$kbar2>";

$kflg=0;
$flg=0;
$count=1;

$bor = int(($bor1 + $bor2)/100);
if($bor > 0){$bor = -$bor;}

$k_add_dmg = $kagi - ($karmwei + $kprowei + $kaccwei);
$k_hit = int($k_add_dmg/50);
if($k_hit <= 0){$k_hit = 1;}
$k2_add = $kagi - $k_add_dmg;
if($k2_add > 255){$k2_add = 255;};
$katt = int(($kstr+$karmdmg+$bor+$k2_add)/2);

$e_add_dmg = $eagi - ($earmwei + $eprowei + $eaccwei);
$e_hit = int($e_add_dmg/50);
if($e_hit <= 0){$e_hit = 1;}
$e2_add = $eagi - $e_add_dmg;
if($e2_add > 255){$e2_add = 255;};
$eatt = int(($estr+$earmdmg+$e2_add)/2);

while($count < $BATTLE_MAX_TURN){
$com1="";
$com2="";
$com3="";
$com4="";
$com5="";
$com6="";
$message1="";
$message2="";
$message3="";
$message4="";
$message5="";
$message6="";
$b_flg = int(rand(2));

$all_message .= "<p><font size=5 color=009900>$count</font> 回合<BR><table><tbody>";
if($b_flg){
&e_att;
&k_att;
$all_message .= "<tr><th colspan=2><b class=r>$m1name</b>先發制人</th></tr>";
$all_message .= "<tr><td>$m1img</td><td bgcolor=$ELE_C[$eele]>$message4$message5$message6</td></tr>";
$all_message .= "<tr><td><img src=\"$IMG/$kchara.gif\" style=\"filter:FlipH\"></td><td bgcolor=$ELE_C[$kele]>$message1$message2$message3</td></tr>";
}else{
&k_att;
&e_att;
$all_message .= "<tr><th colspan=2><b class=b>$kname</b>先發制人</th></tr>";
$all_message .= "<tr><td><img src=\"$IMG/$kchara.gif\"  style=\"filter:FlipH\"></td><td bgcolor=$ELE_C[$kele]>$message1$message2$message3</td></tr>";
$all_message .= "<tr><td>$m1img</td><td bgcolor=$ELE_C[$eele]>$message4$message5$message6</td></tr>";
}

$all_message .= "</tbody></table><br>";

$all_message .= "<TABLE  border=\"0\" cellspacing=0>
  <TBODY>
    <TR>
      <TD bgcolor=\"$ELE_BG[$kele]\"><font size=3 color=\"$ELE_C[$kele]\"><$kunit 軍></font></TD>
      <TD bgcolor=\"$ELE_BG[$kele]\" width=100 >HP</TD>
      <TD bgcolor=\"$ELE_BG[$eele]\"><font size=3 color=\"$ELE_C[$eele]\"><$sm_name></font></TD>
      <TD bgcolor=\"$ELE_BG[$eele]\" width=100 >HP</TD>
    </TR>
    <TR>
      <TD >$kname</TD>
      <TD ><font size=4 color=$ELE_BG[$kele]><B>$khp</B> / $kmaxhp</font></TD>
      <TD >$m1name</TD>
      <TD ><font size=4 color=$ELE_BG[$eele]><B>$m1hp</B> / $m1maxhp</font></TD>
    </TR>";

 $all_message .= "</TBODY></TABLE>";

$count++;
if($kflg || $flg){last;}
}

$kgetgold=($epoint+$espoint+$etpoint)*5+1;
$egetgold=($kpoint+$spoint+$tpoint)*5+1;


$add = int(rand(10));
$kget_ex = int((($epoint*3) - $kpoint)/20)+20+$add;

if($kget_ex > 40){$kget_ex=40+$add;}
if($kget_ex < 20){$kget_ex=20+$add;}

    if($battle_lock_flg){&B_LOCK;}

if($kflg){

$endmes = "<TABLE>";
$endmes .= "<tr><td><img src=\"$IMG/$kchara.gif\"  style=\"filter:FlipH\"></td><td bgcolor=$ELE_C[$kele]>$kend</td></tr>";
$endmes .= "<tr><td>$m1img</td><td bgcolor=$ELE_C[$eele]>$eend</td></tr>";
$endmes .= "</TABLE>";

$kgold =int($kgold/2);
$message7 = "$endmes<BR>$kunit軍持有金額減少一半了。。";
$ktotal++;
$number++;
open(IN,"$ACCESS_POINT_LIST") or &B_ERR("指定檔案不能打開。");
@A_POINT_DATA = <IN>;
close(IN);
$a_hit = 0;
foreach(@A_POINT_DATA){
($qcid,$qx,$qy,$qid)=split(/<>/);
if($kid eq "$qcid"){$a_hit =1;last;}
}
if(!$a_hit){$qx = 8;$qy = 8;$qid = 2;}
$kpos = $qid;
@NEW_DATA=();
unshift(@NEW_DATA,"$kid<>$qx<>$qy<>$kunit<>$kcon<>\n");
open(OUT,">./charalog/map/$in{'id'}.cgi");
print OUT @NEW_DATA;
close(OUT);
open(MOVE,"$MAP_MOVE_LIST") or &B_ERR('打開文件失敗。');
@M_LIST=<MOVE>;close(MOVE);
$hit=0;
$i=0;
foreach (@M_LIST){
($m_id,$mx,$my,$munit) = split(/<>/);
if($m_id eq $kid){
splice (@M_LIST,$i,1,"$kid<>$qx<>$qy<>$kunit<>$kcon<>\n");
$hit = 1;
}
$i++;
}
if(!$hit){
push(@M_LIST,"$kid<>$qx<>$qy<>$kunit<>$kcon<>\n");
}
open(MOVE,">$MAP_MOVE_LIST") or &B_ERR('打開文件失敗。');
print MOVE @M_LIST;
close(MOVE);
}else{
$ktotal++;
$kkati++;
if($in{'level'} eq "7" && $k_ex < $EX * 99){
$add_puls = $k_ex * 30;
$add_gold = int(rand($add_puls));
$kget_ex = 100;
$mes = "<BR>發現財寶<font color=red>$add_gold Gold </font>!";
}
if($k_ex < $EX * 99 && $khp ne "0"){
$k_ex_fol=($k_ex % $EX) + $kget_ex;
$k_ex+=$kget_ex;
}
$kgold+=$kgetgold+$add_gold;

$endmes = "<TABLE>";
$endmes .= "<tr><td>$m1img</td><td bgcolor=$ELE_C[$eele]>$eend</td></tr>";
$endmes .= "<tr><td><img src=\"$IMG/$kchara.gif\"  style=\"filter:FlipH\"></td><td bgcolor=$ELE_C[$kele]>$kend</td></tr>";
$endmes .= "</TABLE>";

$message7 = "$endmes<BR>$kunit軍獲得勝利!<BR>$kgetgold Gold獲得!$mes<BR>獲得$kget_ex經驗值。";
if($in{'level'} eq "5"){

$b_get_clistal |= (2 ** $b_no);

$message7 .= "<BR><FONT COLOR=red>$CLISTAL[$b_no]</font>獲得!";

&SET_COOKIE;

if($b_hit){
splice(@D_BODD_DATA,$boss_no,1,"$b_id<>$b_get_clistal<>\n");
}else{
unshift(@D_BODD_DATA,"$kid<>$b_get_clistal<>\n");
}
open(OUT,">$BOSS_DOWN_LIST") or &B_ERR('BOSS 新的數據不能寫上。');
print OUT @D_BODD_DATA;
close(OUT);

}
if($in{'level'} eq "8"){

$b_no = $in{'townid'} - 1;
$ksub2 |= (2 ** $b_no);

open(IN,"$ITEM_LIST");
@I_DATA = <IN>;
close(IN);
$it_no=$b_no;
open(IN,"./charalog/item/$in{'id'}.cgi");
@C_ITEM = <IN>;
close(IN);
($it_name,$it_val,$it_dmg,$it_wei,$iele,$it_sta,$iclass,$itownid) = split(/<>/,$I_DATA[$it_no]);
push(@C_ITEM,"3<>$it_no<>$it_name<>$it_val<>$it_dmg<>$it_sta<>$it_wei<>\n");
open(OUT,">./charalog/item/$in{'id'}.cgi");
print OUT @C_ITEM;
close(OUT);
$message7 .= "<BR><FONT COLOR=red>$it_name</font>獲得!";

}
if($in{'level'} eq "3"){

$b_no = int(rand(12000));

if($b_no eq "1777"){
open(IN,"./charalog/item/$in{'id'}.cgi");
@C_ITEM = <IN>;
close(IN);

open(IN,"$ARM_LIST");
@A_DATA = <IN>;
close(IN);

$pp=0;
foreach(@A_DATA){
($it_name,$it_val,$it_dmg,$it_wei,$iele,$it_sta,$iclass,$itownid) = split(/<>/);
if($iclass eq "rea"){
$pp++;
}
}

$it_no=2+int(rand($pp));
($it_name,$it_val,$it_dmg,$it_wei,$iele,$it_sta,$iclass,$itownid) = split(/<>/,$A_DATA[$it_no]);
push(@C_ITEM,"0<>$it_no<>$it_name<>$it_val<>$it_dmg<>$it_sta<>$it_wei<>\n");
open(OUT,">./charalog/item/$in{'id'}.cgi");
print OUT @C_ITEM;
close(OUT);
$message7 .= "<BR><FONT COLOR=red>$it_name</font>獲得!";
}elsif($b_no eq "3777"){

open(IN,"./charalog/item/$in{'id'}.cgi");
@C_ITEM = <IN>;
close(IN);

open(IN,"$PRO_LIST");
@P_DATA = <IN>;
close(IN);

$pp=0;
foreach(@P_DATA){
($it_name,$it_val,$it_dmg,$it_wei,$iele,$it_sta,$iclass,$itownid) = split(/<>/);
if($iclass eq "rea"){
$pp++;
}
}

$it_no=1+int(rand($pp));
($it_name,$it_val,$it_dmg,$it_wei,$iele,$it_sta,$iclass,$itownid) = split(/<>/,$P_DATA[$it_no]);
push(@C_ITEM,"1<>$it_no<>$it_name<>$it_val<>$it_dmg<>$it_sta<>$it_wei<>\n");
open(OUT,">./charalog/item/$in{'id'}.cgi");
print OUT @C_ITEM;
close(OUT);
$message7 .= "<BR><FONT COLOR=red>$it_name</font>獲得!";
}
}


$number++;
}
if($in{'level'} eq "8"){$b_no = $in{'townid'} - 1;$ksub2 |= (2 ** $b_no);}

if($k_ex_fol >= $EX ){
open(IN,"./charalog/chara_max/$in{'id'}.cgi");
@C_MAX = <IN>;
close(IN);
($mx_hp,$mx_mp,$mx_str,$mx_vit,$mx_int,$mx_men,$mx_agi,$mx_flg) = split(/<>/,$C_MAX[0]);

$bflg=0;
$com8 .= "<p><font color=red>$kname的等級上升了!</font><BR>";
$khpup=int(rand(10))+1;
$kmaxhp += $khpup;
if($kmaxhp > $mx_hp){$bflg=1;$max_mes .= "HP ";$kmaxhp = $mx_hp;}
$com8 .= "$kname的HP上升了$khpup!<BR>";
$s_kint = int($kint/30);
$kmpup=int(rand($s_kint));
$kmaxmp+=$kmpup;
if($kmaxmp > $mx_mp){$bflg=1;$max_mes .= "MP ";$kmaxmp = $mx_mp;}
$com8 .= "$kname的MP上升了$kmpup!<BR>";
for($d=0;$d<3;$d++){
$no1 = int(rand(5));
if($no1 eq "0"){
$kstr +=1;
if($kstr > $mx_str){$bflg=1;$max_mes .= "力量";$kstr = $mx_str;}
$com8 .= "$kname的力量上升了1!<BR>";
}
if($no1 eq "1"){
$kvit +=1;
if($kvit > $mx_vit){$bflg=1;$max_mes .= "生命力 ";$kvit = $mx_vit;}
$com8 .= "$kname的生命力上升了1!<BR>";
}
if($no1 eq "2"){
$kint +=1;
if($kint > $mx_int){$bflg=1;$max_mes .= "知力 ";$kint = $mx_int;}
$com8 .= "$kname的知力上升了1!<BR>";
}
if($no1 eq "3"){
$kmen +=1;
if($kmen > $mx_men){$bflg=1;$max_mes .= "精神力 ";$kmen = $mx_men;}
$com8 .= "$kname的精神上升了1!<BR>";
}
if($no1 eq "4"){
$kagi +=1;
if($kagi > $mx_agi){$bflg=1;$max_mes .= "速度 ";$kagi = $mx_agi;}
$com8 .= "$kname的速度上升了1!<BR>";
}
}
if($bflg){
$max_mes2 = "<font color=red>$max_mes界限</font><BR>";
}
$message8 = "$com8$max_mes2";
$number++;
}

if($c_hit && $yousai){
if($flg){
$xxhp = $xxmaxhp;
}else{
$xxstr -= 10;
if($xxstr <50){$xxstr=50;}
$xxvit -= 10;
if($xxvit <50){$xxvit=50;}
$xxagi -= 10;
if($xxagi <50){$xxagi=50;}
$xxhp = $m1hp;
}
&COUNTRY_DATA_INPUT;
}

open(IN,"./charalog/item/$in{'id'}.cgi");
@K_ITEM = <IN>;
close(IN);
$ihit=0;
@NEW_C_ITEM=();
foreach(@K_ITEM){
($k_mark,$k_no,$k_name,$k_val,$k_dmg,$k_sta,$k_wei) = split(/<>/);

if($k_sta eq "66" && $ihit eq "0"){
$khp = $kmaxhp;
$k_val -= 1;
$ihit=1;
$message8 .= "<BR>$k_name使用。(餘下<font color=red>$k_val</font>回)<BR>";
if($k_val <= 0){
$message8 .= "<font color=red>$k_name離開了。。</font><BR>";
}else{
push(@NEW_C_ITEM,"$k_mark<>$k_no<>$k_name<>$k_val<>$k_dmg<>$k_sta<>$k_wei<>\n");
}
}elsif($k_sta eq "11"){
if($k_no eq 0){
}elsif($k_mark eq 0 && $k_no eq 1){
if(!int(rand(3))){
open(IN,"./charalog/arm/$kid.cgi");
@MY_ARM_DATA = <IN>;
close(IN);
($karmname2,$karmval2,$karmdmg2,$karmwei2,$karmele2,$karmsta2,$karmclass2,$karmtownid2) = split(/<>/,$MY_ARM_DATA[0]);
$karmdmg2--;
if($karmdmg2<=0){$karmdmg2=0;}
$new_arm_list = "$karmname2<>$karmval2<>$karmdmg2<>$karmwei2<>$karmele2<>$karmsta2<>$karmclass2<>$karmtownid2<>\n";
if($karmdmg2 ne "0"){
$message8 .= "<BR><font color=red>$karmname2好像有點生鏽了。。</font><BR>";
open(OUT,">./charalog/arm/$kid.cgi");
print OUT $new_arm_list;
close(OUT);
}
}
}else{
if($k_mark eq 0){
$karmtai = $k_val;
}elsif($k_mark eq 1){
$kprotai = $k_val;
}elsif($k_mark eq 2){
$kacctai = $k_val;
}
$k_val -= 1;
}
if($k_val <= 0 && $k_no ne 0){
if($k_mark eq 0){
$karm = 0;
}elsif($k_mark eq 1){
$kpro = 0;
}elsif($k_mark eq 2){
$kacc = 0;
}
$message8 .= "<BR><font color=red>$k_name損壞了。</font><BR>";
}else{
push(@NEW_C_ITEM,"$k_mark<>$k_no<>$k_name<>$k_val<>$k_dmg<>$k_sta<>$k_wei<>\n");
}
}else{
push(@NEW_C_ITEM,"$_");
}
}

open(OUT,">./charalog/item/$in{'id'}.cgi");
print OUT @NEW_C_ITEM;
close(OUT);

if($c_hit && $e_hit){
if($c_flg && $flg && $yousai){
$ksta=1;
$kcex+=200;
open(IN,"$COUNTRY_NO_LIST") or &B_ERR2('p 打開文件失敗。err no :country');
@CON_NO = <IN>;
close(IN);

open(IN,"$COUNTRY_LIST") or &B_ERR2('m 打開文件失敗。err no :country');
@CON_DATA = <IN>;
close(IN);

@NEW_CON_DATA=();
foreach(@CON_DATA){
($xcid,$xname,$xele,$xnum,$xins,$xind,$xall,$xgold,$xhp,$xmaxhp,$xstr,$xvit,$xagi)=split(/<>/);
if($in{'uid'} ne "$xcid"){
push(@NEW_CON_DATA,"$_");
}
}

open(OUT,">$COUNTRY_LIST") or &B_ERR('y COUNTRY 新的數據不能寫上。');
print OUT @NEW_CON_DATA;
close(OUT);

@NEW_CON_NO=();
foreach(@CON_NO){
($xcid,$xname,$xele,$xnum,$xins,$xind,$xall,$xgold,$xhp,$xmaxhp,$xstr,$xvit,$xagi,$xflg)=split(/<>/);
if("$in{'uid'}" eq "$xcid"){
push(@NEW_CON_NO,"$xcid<>$xname<>$xele<>$xnum<>$xins<>$xind<>$xall<>$xgold<>$xhp<>$xmaxhp<>$xstr<>$xvit<>$xagi<>0<>\n");
$uname = $xname;
}else{
push(@NEW_CON_NO,"$_");
}
}

open(OUT,">$COUNTRY_NO_LIST") or &B_ERR('d COUNTRY 新的數據不能寫上。');
print OUT @NEW_CON_NO;
close(OUT);

open(IN,"$DEF_LIST") or &B_ERR("z 指定檔案不能打開。");
@DEF_DATA = <IN>;
close(IN);

open(IN,"$TOWN_LIST") or &B_ERR("a 指定檔案不能打開。");
@TOWN_DATA = <IN>;
close(IN);

@NEW_TOWN_DATA=("");
foreach(@TOWN_DATA){
($zcid,$zname,$zele,$zcon,$zmoney,$zmes,$zx,$zy,$zarm,$zpro,$zacc,$zuni,$zdis,$zbat)=split(/<>/);
if($in{'uid'} eq "$zcon"){
push(@NEW_TOWN_DATA,"$zcid<>$zname<>$zele<>$kcon<>$zmoney<>$zmes<>$zx<>$zy<>$zarm<>$zpro<>$zacc<>$zuni<>$zdis<>$zbat<>\n");
@NEW_DEF_DATA=("");
foreach(@DEF_DATA){
($d2id,$d2name,$d2town_id,$d2flg,$d2con)=split(/<>/);
if($d2town_id ne $zcid){
push(@NEW_DEF_DATA,"$_");
}
}
@DEF_DATA = @NEW_DEF_DATA;
}else{
push(@NEW_TOWN_DATA,"$_");
}
}

open(OUT,">$DEF_LIST") or &B_ERR('TOWN2 新的數據不能寫上。');
print OUT @DEF_DATA;
close(OUT);

open(OUT,">$TOWN_LIST") or &B_ERR('TOWN3 新的數據不能寫上。');
print OUT @NEW_TOWN_DATA;
close(OUT);

open(IN,"$COUNTRY_MES") or &B_ERR("q 指定檔案不能打開。");
@MES_DATA = <IN>;
close(IN);

@NEW_MES="";
foreach(@MES_DATA){
($co2id,$co2ins,$co2mess,$cflg)=split(/<>/);
if($in{'uid'} ne "$co2id"){
push(@NEW_MES,"$_");
}
}
open(OUT,">$COUNTRY_MES") or &B_ERR('C_MES 新的數據不能寫上。');
print OUT @NEW_MES;
close(OUT);

&MAP_LOG("\<font color=red>[重要\]</font><font color=$ELE_BG[$xele]><B> $kunit 軍($kname)</B></font>佔領了<font color=$ELE_BG[$in{'uid'}]>$uname</font>要塞。");
&MAP_LOG("\<font color=red>[重要\]</font>$uname國滅亡了。");

if(!$ksta){
&B_ERR2('違規的遊戲網址。');
}

$message14 ="<CENTER><hr size=0><h2>佔領了<font color=$ELE_BG[$in{'uid'}]>$uname</font>要塞。</h2><p>";
$move_form = "<form action=$FILE_STATUS method=post><input type=hidden name=id value=$kid><input type=hidden name=pass value=$kpass><input type=hidden name=mode value=STATUS>";
$message14 .= "<p><input type=submit value=返回城市>";

}else{
if($flg && $yousai){
$ksta=1;
$kcex+=100;
open(IN,"$TOWN_LIST") or &B_ERR("指定檔案不能打開。");
@TOWN_DATA = <IN>;
close(IN);

$town_no = 0;
foreach(@TOWN_DATA){
($zcid,$zname,$zele,$zcon,$zmoney,$zmes,$zx,$zy,$zarm,$zpro,$zacc,$zuni,$zdis,$zbat)=split(/<>/);
if("$zcid" eq "$in{'townid'}"){last;}
$town_no++;
}
&MAP_LOG("\<font color=red>[重要\]</font><font color=$ELE_BG[$xxele]><B> $kunit 軍($kname)</B></font>佔領了<font color=$ELE_BG[$in{'conid'}]><B> $zname </B></font>城市。");

if($ksta){
$ksta = 0;
$zarm = int($zarm/10);
$zpro = int($zpro/10);
$zacc = int($zacc/10);
$zuni = int($zuni/10);
$zdis = int($zdis/10);
$zbat = int($zbat/10);
$zcon = $kcon;
}else{
&B_ERR2('違規的遊戲地址。');
}

&TOWN_DATA_INPUT;

$message14 ="<CENTER><hr size=0><h2><font color=red>$zname</font> 城市佔領了。</h2><p>";
$move_form = "<form action=$FILE_STATUS method=post><input type=hidden name=id value=$kid><input type=hidden name=pass value=$kpass><input type=hidden name=mode value=STATUS>";
$message14 .= "<p><input type=submit value=返回城市>";
}elsif($flg){
open(IN,"$DEF_LIST") or &B_ERR("指定檔案不能打開。");
@DEF_DATA = <IN>;
close(IN);

$kcex+=3;
$ecex+=2;
@NEW_DEF_DATA=();$hit=0;
foreach(@DEF_DATA){
($gid,$gname,$gtown_id,$gflg,$gcon)=split(/<>/);
if("$did" eq "$gid"){
if($hit){next;}
$hit=1;
if($gflg eq "0"){
$f_name = $gname;
push(@NEW_DEF_DATA,"$kid<>$kname<>$gtown_id<>0<>$kcon<>\n");
$gcon = $kcon;
}
}else{
push(@NEW_DEF_DATA,"$_");
}

if("$gtown_id" eq "$in{'townid'}" && "$gflg" eq "0"){
$n2[$gcon]++;
}

}
open(OUT,">$DEF_LIST") or &B_ERR('BATTLE 新的數據不能寫上。');
print OUT @NEW_DEF_DATA;
close(OUT);

open(IN,"$TOWN_LIST") or &B_ERR("指定檔案不能打開。");
@TOWN_DATA = <IN>;
close(IN);

$town_no = 0;
foreach(@TOWN_DATA){
($zcid,$zname,$zele,$zcon,$zmoney,$zmes,$zx,$zy,$zarm,$zpro,$zacc,$zuni,$zdis,$zbat)=split(/<>/);
if("$zcid" eq "$in{'townid'}"){last;}
$town_no++;
}

&MAP_LOG("\<font color=darkred><B>[勝利\]</B></font><font color=$ELE_BG[$xxele]><B>$country[$kcon] $kunit 軍($kname)</B></font>的$zname守備兵 <font color=$ELE_BG[$eele]><B> $f_name </B></font>勝利了。");

$work = $n2[$zcon];
$mmid = $zcon;
open(IN,"$COUNTRY_LIST") or &B_ERR2("指定檔案不能打開。");
@COU = <IN>;close(IN);

foreach(@COU){
($x2cid)=split(/<>/);
if($n2[$x2cid] > $work){
$work = $n2[$x2cid];
$mmid = $x2cid;
}
}
if("$mmid" ne "$zcon" && $in{'t_flg'} eq 1){
$ksta = 1;
if($ksta){
$ksta = 0;
$zcon = $mmid;
}else{
&B_ERR2('違規的遊戲地址。');
}
&TOWN_DATA_INPUT;

$message10 .="<CENTER><hr size=0><h2><font color=red>$zname</font> 城市佔領了。</h2><p>";
&MAP_LOG("\<font color=red>[重要\]</font><font color=$ELE_BG[$xxele]><B>$country[$kcon] $kunit 軍($kname)</B></font>佔領了<font color=$ELE_BG[$in{'conid'}]><B> $zname </B></font>城市。");
}


$ehp = $m1hp;
&HOST_NAME;
$date = time();
@NEW_DATA=();
unshift(@NEW_DATA,"$eid<>$epass<>$ename<>$eurl<>$echara<>$esex<>$ehp<>$emaxhp<>$emp<>$emaxmp<>$eele<>$estr<>$evit<>$eint<>$emen<>$eagi<>$ecom<>$egold<>$e_ex<>$ecex<>$eunit<>$econ<>$earm<>$epro<>$eacc<>$esub1<>$esub2<>$etac<>$esta<>$epos<>$emes<>$host<>$date<>$esyo<>$eclass<>$etotal<>$ekati<>\n");
open(OUT,">./charalog/main/$did.cgi") or &B_ERR2('MAIN2 新的數據不能寫上。');
print OUT @NEW_DATA;
close(OUT);

$move_form = "<form action=$FILE_STATUS method=post><input type=hidden name=id value=$kid><input type=hidden name=pass value=$kpass><input type=hidden name=mode value=STATUS>";
$message14 = "<p><input type=submit value=返回城市>";
}else{
$move_form = "<form action=$FILE_STATUS method=post><input type=hidden name=id value=$kid><input type=hidden name=pass value=$kpass><input type=hidden name=mode value=STATUS>";
$message14 = "<p><input type=submit value=返回城市>";
}
}
open(IN,"$BATTLE_TIME_LIST") or &B_ERR("指定檔案不能打開。");
@BATTLE_STOP_DATA = <IN>;
close(IN);

@NEW_BATTLE_STOP_DATA=();$hit=0;
foreach(@BATTLE_STOP_DATA){
($bid,$bpass,$btime)=split(/<>/);
if("$bid" eq "$kid"){
$hit = 1;
$date = time();
push(@NEW_BATTLE_STOP_DATA,"$bid<>$bpass<>$date<>\n");
}else{
push(@NEW_BATTLE_STOP_DATA,"$_");
}
}
if(!$hit){unshift(@NEW_BATTLE_STOP_DATA,"$kid<>$kpass<>$date<>\n");}

open(OUT,">$BATTLE_TIME_LIST") or &B_ERR('BATTLE 新的數據不能寫上。');
print OUT @NEW_BATTLE_STOP_DATA;
close(OUT);
}else{
$move_form = "<form action=$FILE_STATUS method=post><input type=hidden name=id value=$kid><input type=hidden name=pass value=$kpass><input type=hidden name=mode value=STATUS>";
$message14 = "<p><input type=submit value=返回城市>";
}

$number++;

$all_message .= "<BR>$message7$message8$message9$message10$message14 ";

&CHARA_INPUT;
if($battle_lock_flg){&B_UNLOCK();}

&HEADER;
print <<"EOM";
<TABLE width=100% height=100% >
  <TBODY>
    <TR>
      <TD height=5>  <font size=4><B> << - $m_unit - >></B></font>
      </TD>
    </TR>
    <TR>
      <TD>
      <TABLE width=100% border="0">
        <TBODY>
          <TR>
            <TD ><img src="$IMG/$kchara.gif"  style="filter:FlipH"></TD>
<TD align=right height=5 width=50%>
$coment2
</TD></TD>
            <TD align=center width=100%>
<TABLE border=0 bgcolor=$ELE_BG[$kele] cellspacing=1>
  <TBODY bgcolor=$ELE_C[$kele]>
    <TR>
      <TH colspan="4"> <<  $kunit軍  >></TH>
    </TR>
    <TR>
      <TD bgcolor=$ELE_BG[$kele]><font color=$ELE_C[$kele]>NAME</TD>
      <Th NOWRAP>$kname</Th>
      <TD bgcolor=$ELE_BG[$kele]><font color=$ELE_C[$kele]>武器</TD>
      <TD NOWRAP bgcolor=$ELE_C[$karmele]>$karmname($karmtai/$karmval)</TD>
    </TR>
    <TR>
      <TD bgcolor=$ELE_BG[$kele]><font color=$ELE_C[$kele]>HP</TD>
      <TD NOWRAP>$s_khp/$kmaxhp<BR>$khpimg</TD>
      <TD bgcolor=$ELE_BG[$kele]><font color=$ELE_C[$kele]>防具</TD>
      <TD NOWRAP bgcolor=$ELE_C[$kproele]>$kproname($kprotai/$kproval)</TD>
    </TR>
    <TR>
      <TD bgcolor=$ELE_BG[$kele]><font color=$ELE_C[$kele]>MP</TD>
      <TD NOWRAP>$s_kmp/$kmaxmp<BR>$kmpimg</TD>
      <TD bgcolor=$ELE_BG[$kele]><font color=$ELE_C[$kele]>攻擊力</TD>
      <TD align=right><B class=b>$kstr(+$karmdmg)</TD>
    </TR>
    <TR>
      <TD bgcolor=$ELE_BG[$kele]><font color=$ELE_C[$kele]>職業</TD>
      <TD align=center>$SYOKU[$kclass]</TD>
      <TD bgcolor=$ELE_BG[$kele]><font color=$ELE_C[$kele]>防御力</TD>
      <TD align=right><B class=b>$kvit(+$kprodmg+$kaccdmg)</TD>
    </TR>
  </TBODY>
</TABLE>

</TD>
          </TR>
        </TBODY>
      </TABLE>
      </TD>
    </TR>
    <TR>
      <TD>
      <TABLE width=100% border=0>
        <TBODY>
          <TR>
            <TD align=center width=100%>
<TABLE width=100% border=0>
   <TBODY>
       <TR>
        <TD align=center width=50%>
<TABLE border=0 bgcolor=$ELE_BG[$eele] cellspacing=1>
  <TBODY bgcolor=$ELE_C[$eele]>
    <TR>
      <TH colspan="9"><<  $sm_name  >></TH>
    </TR>
    <TR>
      <TD>名字</TD>
      <Th width=50>HP</Th>
      <TD>攻擊力</TD>
      <TD>防御力</TD>
      <TD>速度</TD>
    </TR>
    <TR>
      <TD>$m1name</TD>
      <TD>$s_m1hp/$m1maxhp</TD>
      <TD>$estr</TD>
      <TD>$m1vit</TD>
      <TD >$eagi</TD>
    </TR>
    <TR>
      <TD>武器</TD>
      <Th colspan=3>$earmname</Th>
      <TD>+$earmdmg</TD>
    </TR>
    <TR>
      <TD>防具</TD>
      <Th colspan=3>$eproname</Th>
      <TD>+$eprodmg(+$eaccdmg)</TD>
    </TR>
  </TBODY>
</TABLE>
</TD><TD align=right height=100% width=100%>
$coment
</TD></TR></TBODY></TABLE>
</TD>
            <TD >$m1img</TD>
            <TD >$m2img</TD>
            <TD >$m3img</TD>
          </TR>
        </TBODY>
      </TABLE>
      </TD>
    </TR>
    <TR>
      <TD  width=100%>
      <TABLE width=100% >
        <TBODY>
          <TR>
            <TD >
$move_form


<CENTER><h1><< - $kunit軍 vs $sm_name - >><h1>
<font size=3><B>$all_message</font></B></CENTER>


</TD></form>
          </TR>
        </TBODY>
      </TABLE>
      </TD>
    </TR>
  </TBODY>
</TABLE>

EOM


&FOOTER;
exit;

}


#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#
#      其他玩家戰鬥      #
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/#

sub GUEST_BATTLE {

&CHARA_MAIN_OPEN;

&HEADER;
print <<"EOM";
<form action="$FILE_BATTLE" method="post">
<hr size=0><h2>其他玩家戰鬥<BR></h2><hr size=0>
<CENTER><BR>
<BR>同部隊玩家可以進行戰鬥。<BR>實際上不會令對手的HP減少。<BR>
選擇要對戰的對手。<BR>沒有所屬部隊不能進行戰鬥。
<BR>
<select name=eid>
<option value="">選擇對戰的對手

EOM


open(IN,"$UNIT_LIST") or &B_ERR("指定檔案不能打開。");
@UNI_DATA = <IN>;
close(IN);

foreach(@UNI_DATA){
($unit_id,$uunit_name,$ucon,$ureader,$uid,$uname,$uchara,$umes)=split(/<>/);
if("$unit_id" eq "$ksub1" && $kunit ne "無所屬" && $kcon eq "$ucon"){$rhit=1;
$mess1 .= "<option value=$uid>$uname\n";
}
}

print "$mess1</select>\n";

print <<"EOM";
<input type=hidden name=id value=$kid>
<input type=hidden name=name value=$kname>
<input type=hidden name=pass value=$kpass>
<input type=hidden name=mode value=BATTLE2>
<input type=submit value="戰鬥"><br>
</form>
<form action="$FILE_STATUS" method="post">
<input type=hidden name=id value=$kid>
<input type=hidden name=pass value=$kpass>
<input type=hidden name=mode value=STATUS>
<input type=submit value="返回城市"></form>
EOM
&FOOTER;
exit;

}


#_/_/_/_/_/_/_/_/#
#      要塞戰    #
#_/_/_/_/_/_/_/_/#

sub COUNTRY_BATTLE {

&COUNTRY_DATA_OPEN("$kcon");
if($xxcid eq 0){&B_ERR("無所屬國不能攻擊。");}

open(IN,"$DEF_LIST") or &B_ERR("指定檔案不能打開。");
@DEF_DATA = <IN>;
close(IN);

foreach(@DEF_DATA){
($did,$dname,$dtown_id,$dflg,$dcon)=split(/<>/);
if($dflg){
$pro_list[$dtown_id] .= "$dname,";
}
}

open(IN,"$COUNTRY_LIST") or &B_ERR2("指定檔案不能打開。");
@COU = <IN>;close(IN);

foreach(@COU){
($x2cid,$x2name,$x2ele,$x2num,$x2ins,$x2ind,$x2all,$x2gold,$x2hp,$x2maxhp,$x2str,$x2vit,$x2agi)=split(/<>/);
$mes .= "<TR><TD bgcolor=$ELE_C[$x2ele]><font color=$ELE_BG[$x2ele] size=1><b>[$x2name]</b><BR>$pro_list[$x2cid]</font></TD></TR>";
if("$kid" eq "$x2cid"){next;}
$mess1 .= "<option value=$x2cid>$x2name國\n";
}

&HEADER;
print <<"EOM";
<form action="$FILE_BATTLE" method="post">
<hr size=0><h2>- 要塞攻佔戰 -<BR></h2><hr size=0>
<CENTER><BR>
<BR>要塞攻擊。<BR>要塞佔領可加快攻佔國家,從而支配這個國家的城市。<BR>
<BR>

<TABLE border=0 bgcolor=$TABLE_C><TBODY>
<TR><TD bgcolor=$TD_C4>要塞守備</TD></TR>
$mes
</TBODY></TABLE>
<select name=uid>
<option value="">選擇國家

$mess1</select>

<input type=hidden name=id value=$kid>
<input type=hidden name=c_flg value=1>
<input type=hidden name=townid value=1>
<input type=hidden name=level value=6>
<input type=hidden name=name value=$kname>
<input type=hidden name=pass value=$kpass>
<input type=hidden name=mode value=BATTLE2>
<input type=submit value="戰鬥"><br>
</form>
<form action="$FILE_STATUS" method="post">
<input type=hidden name=id value=$kid>
<input type=hidden name=pass value=$kpass>
<input type=hidden name=mode value=STATUS>
<input type=submit value="返回城市"></form>
EOM
&FOOTER;
exit;

}
#_/_/_/_/_/_/_/_/#
#      城市戰    #
#_/_/_/_/_/_/_/_/#

sub TOWN_BATTLE {

&COUNTRY_DATA_OPEN("$kcon");
if($xxcid eq 0){&B_ERR("無所屬國不能攻擊。");}
&TOWN_DATA_OPEN;

open(IN,"$DEF_LIST") or &B_ERR("指定檔案不能打開。");
@DEF_DATA = <IN>;
close(IN);

foreach(@DEF_DATA){
($d2id,$d2name,$d2town_id,$d2flg,$d2con)=split(/<>/);
if("$d2id" eq "$kid"){&B_ERR("守備城市時不能進攻其他城市");}
if($in{'townid'} eq "$d2town_id" && "$d2flg" eq "0" ){
$pro_list[$d2con] .= "$d2name,";
if($cmo[$d2con] ne "1"){
$def_list[$d2con] .= "<option value=$d2id>$d2name";
}
$mhit=1;
$cmo[$d2con] = 1;
}
}

open(IN,"$COUNTRY_LIST") or &B_ERR2("指定檔案不能打開。");
@COU = <IN>;close(IN);

foreach(@COU){
my ($x2cid,$x2name,$x2ele,$x2num,$x2ins,$x2ind,$x2all,$x2gold,$x2hp,$x2maxhp,$x2str,$x2vit,$x2agi)=split(/<>/);
$mes .= "<TR><TD bgcolor=$ELE_C[$x2ele]><font color=$ELE_BG[$x2ele] size=1><b>$x2name</b><BR>$pro_list[$x2cid]</font></TD></TR>";
if("$kcon" eq "$x2cid"){next;}
$mess1 .= "<option value=\"\">=== $x2name國 ===$def_list[$x2cid]\n";

}
if(!$mhit){
$mess1 .= "<option value=\"YO\">要塞\n";
}
&HEADER;
print <<"EOM";
<form action="$FILE_BATTLE" method="post">
<hr size=0><h2>- $zname城市攻佔戰 -<BR></h2><hr size=0>
<CENTER><BR>
<BR>$zname城市領地奪得。<BR>攻佔城市便可支配這個城市的所有設施和資源。<BR>支配城市越多收益上升國費也會增加。
<BR>

<TABLE border=0 bgcolor=$TABLE_C><TBODY>
<TR><TD bgcolor=$TD_C4>$zname城市守備</TD></TR>
$mes
</TBODY></TABLE>
<select name=eid>
<option value="">選擇奪取的領地

$mess1</select>

<input type=hidden name=id value=$kid>
<input type=hidden name=t_flg value=1>
<input type=hidden name=townid value=$in{'townid'}>
<input type=hidden name=conid value=$in{'conid'}>
<input type=hidden name=level value=6>
<input type=hidden name=name value=$kname>
<input type=hidden name=pass value=$kpass>
<input type=hidden name=mode value=BATTLE2>
<input type=submit value="戰鬥"><br>
</form>
<form action="$FILE_STATUS" method="post">
<input type=hidden name=id value=$kid>
<input type=hidden name=pass value=$kpass>
<input type=hidden name=mode value=STATUS>
<input type=submit value="返回城市"></form>
EOM
&FOOTER;
exit;

}

sub k_att {
if($khp ne "0"){
$i=0;
$com1 .= "$kname攻擊!<b class=\"clit\">$k_hit</b>回HIT!<BR>";
while($i < $k_hit){
$randam_no = int(rand(100));
if($m1hp eq "0"){
if($m1hp eq "0" && $m2hp eq "0" && $m3hp eq "0"){
last;
}else{
$r_no++;
next;
}
}else{
$k_mpdown = int($ktec_str/2);
if($ktec_hit  > $randam_no && $kmp > $k_mpdown){
$com1 .= "「<b class=g>$B_MES[2]</b>」<BR><b class=clit> $ktec_name </b>";
$kmp -= $k_mpdown;
if($ktec_cho){
$khp += $ktec_str;
if($kmaxhp < $khp){$khp = $kmaxhp;}
$com1 .= "$kname體力$ktec_str回復。";
}else{
$clit = $ktec_str+int(rand($kint)-$emen/3);
}
$com1 .= "<BR>";
}
$s1_kdmg = int(rand($katt)) + $clit - $edef;
if($s1_kdmg<100){$s1_kdmg+=int($kmen/5);}
if(int(rand(10)) eq "2"){$com1 .= "「<b class=s>$B_MES[1]</b>」<BR><b class=\"b\">致命一擊!</b>";
$s1_kdmg *=2;}
if($s1_kdmg<0){$s1_kdmg=0;}
$m1hp -= $s1_kdmg;
if($s1_kdmg eq "0"){
$com1 .= "$kname攻擊!$m1name的傷害!<BR>";
}else{
$com1 .= "$kname攻擊!$m1name<b class=\"dmg\">$s1_kdmg</B>傷害!<BR>";
}
if($m1hp eq "0" || $m1hp < 0){
$m1hp = 0;
$khit+=1;
$eend .= "「<b class=s>$E_MES[4]</b>」<BR>$m1name陣亡。<BR>"
}
}
$i++;
$clit = 0;
}
if($m1hp <= 0 && $m2shp <= 0 && $m3hp <= 0){
$flg=1;
$kend .= "$kunit軍 $sm_name全滅!<BR>「<b class=b>$B_MES[3]</b>」<BR>";
}
$message1 = "$com1";
$number++;
}
}
sub e_att {
if($m1hp ne "0"){
$i=0;
$com4 = "$m1name攻擊!<b class=\"clit\">$e_hit</b>回HIT!<BR>";
while($i < $e_hit){
$randam_no = int(rand(100));
if($khp eq "0" ){
if($khp > 0 || $shp > 0 || $thp > 0){
$r_no++;
next;
}else{
last;
}
}else{
$e_mpdown = int($etec_str/2);
if($etec_hit  > $randam_no && $emp > $e_mpdown){
$com4 .= "「<b class=g>$E_MES[2]</b>」<BR><b class=dmg> $etec_name </b>";
$emp -= $e_mpdown;
if($etec_cho){
$m1hp += $etec_str;
if($m1hp > $m1maxhp){$m1hp = $m1maxhp;}
$com4 .= "$m1name體力<b class=\"dmg\">$etec_str</B>回復。";
}else{
$clit = $etec_str+int(rand($eint)-$kmen/3);
}
$com4 .= "<BR>";
}
$s1_edmg = int(rand($eatt)) + $clit - $kdef;
if($s1_edmg<100){$s1_edmg+=int($emen/5);}
if(int(rand(10)) eq "2"){$com4 .= "「<b class=o>$E_MES[1]</b>」<BR><b class=\"b\">致命一擊!</b>";
$s1_edmg *=2;}
if($s1_edmg<0){$s1_edmg=0;}
$khp -= $s1_edmg;
if($s1_edmg eq "0"){
$com4 .= "$m1name攻擊!$kname的傷害!<BR>";
}else{
$com4 .= "$m1name攻擊!$kname<b class=\"dmg\">$s1_edmg</B>傷害!<BR>";
}
if($khp eq "0" || $khp < 0){
$khp = 0;
$ehit+=1;
$kend .= "「<b class=b>$B_MES[4]</b>」<BR>$kname陣亡。。<BR>"
}

}
$i++;
}
if($khp eq "0" && $shp eq "0" && $thp eq "0"){
$kflg=1;
$eend .= "「<b class=o>$E_MES[3]</b>」<BR>";
}
$message4 = "$com4";
$number++;
}
}
#_/_/_/_/_/_/_/_/_/#
#   ERROR PRINT2   #
#_/_/_/_/_/_/_/_/_/#

sub B_ERR2 {

&HEADER;
if($battle_lock_flg){&B_UNLOCK;}

print "<center><hr size=0><h3>ERROR !</h3>\n";
print "<P><font color=red><B>$_[0]</B></font>\n";
print "<P><hr size=0></center>\n</body></html>\n";
exit;
}
#_/_/_/_/__/_/_/_/_/_/_/_/#
#    BATTLE B_ERROR PRINT   #
#_/_/_/_/__/_/_/_/_/_/_/_/#

sub B_ERR {

&CHARA_MAIN_OPEN;
&HEADER;

if($battle_lock_flg){&B_UNLOCK;}

print "<center><hr size=0><h3>ERROR !</h3>\n";
print "<P><font color=red><B>$_[0]</B></font>\n";
print "<form action=\"$FILE_STATUS\" method=\"post\"><input type=hidden name=id value=$kid><input type=hidden name=pass value=$kpass><input type=hidden name=mode value=STATUS><input type=submit value=\"返回城市\"></form>";
print "<P><hr size=0></center>\n</body></html>\n";
exit;
}


#--------------#
#  鎖定處理  #
#--------------#
sub B_LOCK {
$lockfile = './lock/wor.lock';

local($retry) = 5;
# 1分以鎖定的刪除
if (-e $lockfile) {
local($mtime) = (stat($lockfile))[9];
if ($mtime < time - 60) { &B_UNLOCK; }
}

while (!mkdir($lockfile, 0755)) {
if (--$retry <= 0) { &B_ERR("FILE LOCK ERROR!<BR>其他人正在處理中。請稍後再試。"); }
sleep(1);
}

}

#--------------#
#  鎖定解除  #
#--------------#
sub B_UNLOCK {
$lockfile = './lock/wor.lock';

 rmdir($lockfile);

}

1;

沒有留言:

張貼留言