cbattle.cgi

来自「web大航海时代源码,很简短」· CGI 代码 · 共 92 行

CGI
92
字号
# Sub Cbattle Display #
sub cbattle_dis {
	&form_table('up','100%',1);
	&reload;
print <<CBTL;
港町「$cname」($owname支配下)</td></tr><tr><td align=center>
「$cname」残HP:$chp pt</td></tr><tr><td>
<input type=radio name=atktype value="0" checked>
武力攻擊<br>[戰鬥力決勝負]<br>
<input type=radio name=atktype value="1">
破壞工作<br>[花費$atkfee G能給予$cityatked pt的傷害]<br>
<input type=hidden name=mode value="cbattle_atk">
CBTL
	&id_ps;
	&submit_button;
	&form_table('down');
}

# Sub Cbattle Attack #
sub cbattle_atk {
	&get_me($F{'id'});
	if ($action ne $F{'reload'}) { &play; exit }
	if ($F{'atktype'} && $money < $atkfee ) { &play("資金不足"); exit }
	if (!$F{'atktype'} && $#ship_ind < 0 ) { &play("沒有任何船艦"); exit }
	&cb_limit;
	require 'csys.cgi';
	&get_city;
	if ($F{'atktype'}) {
		$chp -= $cityatked;
		$money -= $atkfee;
		if ( $chp > 0 ) { &msg("給予$cname $cityatked pt的傷害!") }
	} else {
		my $i_pwr = int($atk + $sailor/10 + rand($b_flac) - ($b_flac / 2) );
		if ($i_pwr < 0 ) { $i_pwr = 0 }
		my $u_pwr = $citypwr + int( rand($citypwr) - $citypwr/2);
		&ship_data;
		$i_atked = int(rand($#ship_ind + 1));
		$iatked_hp = $ship[$i_atked][2] - $u_pwr;
		$chp -= $i_pwr;
		if ($iatked_hp <= 0 ) {
			&i_lost;
			&msg("$ship[$i_atked][4]被擊沉!");
			&add_record("攻擊城鎮「$cname」$ship[$i_atked][4]被擊沉!")
		} else {
			splice(@ship_ind , $i_atked , 1 , "$ship[$i_atked][0],$ship[$i_atked][1],$iatked_hp,$ship[$i_atked][3],$ship[$i_atked][4]");
		}
		if ( $chp > 0 ) { &msg("給予$cname $i_pwr pt的傷害!") }
	}
	$action = '';
	if ( $chp <= 0 ) {
		require 'event.cgi';
		&set_city;
		unlink("$citydir/$port\.dat");
		&msg("讓$cname毀滅了!!");
		&add_record("$cname毀滅");
		$piracy += 5000;
		$trade = int($trade / 2) if $trade > 10000;
		$trade -= 5000;
		&msg("海賊名聲大幅上升!商人名聲大幅下降!")
		&get_port($area,$port);
		&event_write("$name攻下了$p_name的$cname!");
	} else { &set_city }
	&play;
}

# Sub City Battle Limit # $battle_line=id,time△id,time△time
sub cb_limit {
	my $city_cont = int($cont * 3);
	my @battled = split(/△/,$battle_line);
	my $last_b = pop(@battled);
	my $now = time;
	if ( ($now - $last_b)/60 < $city_cont ) { &play("$city_cont分鐘以內禁止對城鎮發動連續攻擊"); exit }
	$battle_line = join('△' , @battled , $now);
}

# Sub I Lost #
sub i_lost {
	&fleet;
	$rate = $total ? 1 - ($ship[$i_atked][1] / $total) : 0;
	$food = int($food * $rate);
	$sailor = int($sailor * $rate);
	@my_lt = split(/△/,$load);
	foreach (0 .. $#my_lt) {
		($load_name,$load_quan) = split(/,/,$my_lt[$_]);
		$load_quan = int($load_quan * $rate);
		push(@my_load , "$load_name,$load_quan") if $load_quan != 0;
	}
	$load = join('△' , @my_load);			
	splice(@ship_ind , $i_atked ,1 );
}

1;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?