www.pudn.com > sangoku_26_zh_tw.rar > battle.pl


 
sub BATTLE_MODE{ 
 
	open(IN,"$DEF_LIST"); 
	@DEF_LIST3 = ; 
	close(IN); 
 
	$d_hit=0; 
	foreach(@DEF_LIST3){ 
		($did,$dname,$dtown_id,$dtown_flg,$dcon) = split(/<>/); 
		if($cnum eq $dtown_id){ 
			$d_hit=1;last; 
		} 
	} 
 
 
	&MAP_LOG("$xname國的$kname $zname進攻!"); 
	$eid=""; 
	if($d_hit){ 
		open(IN,"./charalog/main/$did.cgi") or &ERR2('帳號、密碼不正當!'); 
		@E_DATA = ; 
		close(IN); 
		($eid,$epass,$ename,$echara,$estr,$eint,$elea,$echa,$esol,$egat,$econ,$egold,$erice,$ecex,$eclass,$earm,$ebook,$ebank,$esub1,$esub2,$epos,$emes,$ehost,$edate,$email,$eos) = split(/<>/,$E_DATA[0]); 
		$last_battle=0; 
	}else{ 
		$ename = "城牆"; 
		$esol = $zshiro; 
		$estr = 50; 
		$egat = 50; 
		$last_battle=1; 
	} 
 
	$win=0; 
	open(IN,"./charalog/log/$kid\.cgi"); 
	@K_LOG2 = ; 
	close(IN); 
	&K_LOG2("$xname國的$kname $zname進攻!"); 
 
	if($eid ne ""){ 
		open(IN,"./charalog/log/$eid\.cgi"); 
		@E_LOG2 = ; 
		close(IN); 
		&E_LOG2("$xname國的$kname $ename戰鬥!"); 
	} 
 
	&CHARA_ITEM_OPEN; 
 
	$katt = int(($kstr + $karmdmg - int($egat / 5))/8); 
	if($katt < 0){$katt = 0;} 
	$eatt = int(($estr + $earmdmg - int($kgat / 5))/8); 
	if($eatt < 0){$eatt = 0;} 
 
	for($count=0;$count<99;$count++){ 
		$kdmg=0; 
		$edmg=0; 
		 
		if($ksol <= 0){last;} 
		$kdmg = int(rand($katt)); 
		if($kdmg <= 0){$kdmg=1;} 
		$esol -= $kdmg; 
		if($esol <= 0){ 
			$esol=0; 
			&K_LOG2("回合$count:$kname 兵士 $ksol人 ↓\(-$edmg\) |$ename 兵士 $esol人 ↓\(-$kdmg\)"); 
			&E_LOG2("回合$count:$kname 兵士 $ksol人 ↓\(-$edmg\) |$ename 兵士 $esol人 ↓\(-$kdmg\)"); 
			$win = 1;last; 
		} 
 
		$edmg = int(rand($eatt)); 
		if($edmg <= 0){$edmg=1;} 
		$ksol -= $edmg; 
		if($ksol <= 0){ 
			$ksol=0; 
			&K_LOG2("回合$count:$kname 兵士 $ksol ↓\(-$edmg\) |$ename 兵士 $esol人 ↓\(-$kdmg\)"); 
			&E_LOG2("回合$count:$kname 兵士 $ksol ↓\(-$edmg\) |$ename 兵士 $esol人 ↓\(-$kdmg\)"); 
			last; 
		} 
		&K_LOG2("回合$count:$kname兵士$ksol ↓\(-$edmg\) |$ename 兵士 $esol人 ↓\(-$kdmg\)"); 
	} 
 
 
	if($win){ 
		$ksub2_ex++; 
		if($last_battle){ 
			&K_LOG2("$zname入手。"); 
			if($town_get[$zcon] <= 1){ 
				@NEW_COU=(); 
				foreach(@COU_DATA){ 
					($xcid,$xname,$xele,$xmark,$xking,$xmes,$xsub,$xpri)=split(/<>/); 
					if("$zcon" eq "$xcid"){next; 
					}else{ 
						push(@NEW_COU,"$_"); 
					} 
				} 
				open(OUT,">$COUNTRY_LIST") or &ERR('COUNTRY 不能寫上數據。'); 
				print OUT @NEW_COU; 
				close(OUT); 
				&MAP_LOG2("【滅亡】\[$old_date\]$cou_name[$zcon]國家滅亡。。"); 
				&MAP_LOG("【滅亡】\[$old_date\]$cou_name[$zcon]國家滅亡。。"); 
			} 
				$zcon = $kcon; 
				$znou = int($znou*0.8); 
				$zsyo = int($zsyo*0.8); 
				$znum = int($znum*0.9); 
				$zpri = int($zpri*0.8); 
				$kcex += 50; 
				$kpos = $cnum; 
 
				&MAP_LOG2("【支配】\[$old_date\]$cou_name[$kcon]國的$kname $zname支配。"); 
				&MAP_LOG("【支配】\[$old_date\]$cou_name[$kcon]國的$kname $zname支配。"); 
		}else{ 
			@NEW_DEF_LIST3=(); 
			foreach(@DEF_LIST3){ 
				($did,$dname,$dtown_id,$dtown_flg,$dcon) = split(/<>/); 
				if($did eq $eid){ 
				}else{ 
					push(@NEW_DEF_LIST3,"$_"); 
				} 
			} 
 
			open(OUT,">$DEF_LIST"); 
			print OUT @NEW_DEF_LIST3; 
			close(OUT); 
			$kcex += 50; 
			&K_LOG2("$kname $ename擊倒!"); 
			&E_LOG2("$ename $kname敗北。。"); 
			&MAP_LOG("【勝利】$kname $ename擊倒!"); 
		} 
	}else{ 
		&K_LOG2("$kname $ename敗北。。"); 
		&E_LOG2("$ename $kname擊倒!"); 
	} 
 
	 
	if($eid ne ""){ 
		&ENEMY_INPUT; 
	}else{ 
		$zshiro = $esol; 
		if("$zname" ne ""){ 
			splice(@TOWN_DATA,$cnum,1,"$zname<>$zcon<>$znum<>$znou<>$zsyo<>$zshiro<>$znou_max<>$zsyo_max<>$zshiro_max<>$zpri<>$zx<>$zy<>$zsouba<>$z[0]<>$z[1]<>$z[2]<>$z[3]<>\n"); 
		} 
	} 
 
	splice(@K_LOG2,20); 
 
	open(OUT,">./charalog/log/$kid\.cgi"); 
	print OUT @K_LOG2; 
	close(OUT); 
 
	if($eid ne ""){ 
		splice(@E_LOG2,20); 
 
		open(OUT,">./charalog/log/$eid\.cgi"); 
		print OUT @E_LOG2; 
		close(OUT); 
	} 
 
} 
 
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/# 
#_/        LOG 寫入        _/# 
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/# 
 
sub E_LOG2 { 
 
	unshift(@E_LOG2,"$_[0]($mday日$hour時$min分)\n"); 
} 
 
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/# 
#_/        LOG 寫入        _/# 
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/# 
 
sub K_LOG2 { 
 
	unshift(@K_LOG2,"$_[0]($mday日$hour時$min分)\n"); 
} 
 
1;