「cbattle.cgi」の編集履歴(バックアップ)一覧はこちら
「cbattle.cgi」(2010/10/02 (土) 00:47:46) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
<p><font color="#339966">これもとくに説明するところがないところ</font><br /><br />
# Sub Cbattle Display #<br />
sub cbattle_dis {<br />
&form_table('up','100%',1);<br />
&reload;<br />
print <<CBTL;<br />
港町「$cname」($owname支配下)</td></tr><tr><td
align=center><br />
「$cname」残HP:$chp pt</td></tr><tr><td><br />
<input type=radio name=atktype value="0" checked><br />
武力攻撃<br>[戦闘力に応じてダメージ]<br><br />
<input type=radio name=atktype value="1"><br />
破壊工作<br>[$atkfee Gで $cityatked ptのダメージ]<br><br />
<input type=hidden name=mode value="cbattle_atk"><br />
CBTL<br />
&id_ps;<br />
&submit_button;<br />
&form_table('down');<br />
}<br /><br />
# Sub Cbattle Attack #<br />
sub cbattle_atk {<br />
&get_me($F{'id'});<br />
if ($action ne $F{'reload'}) { &play; exit }<br />
if ($F{'atktype'} && $money < $atkfee ) { &play("資金が足りません");
exit }<br />
if (!$F{'atktype'} && $#ship_ind < 0 ) { &play("船がありません");
exit }<br />
&cb_limit;<br />
require 'csys.cgi';<br />
&get_city;<br />
if ($F{'atktype'}) {<br />
$chp -= $cityatked;<br />
$money -= $atkfee;<br />
if ( $chp > 0 ) { &msg("$cnameに$cityatked ptのダメージを与えました!") }<br />
} else {<br />
my $i_pwr = int($atk + $sailor/10 + rand($b_flac) - ($b_flac / 2)
);<br />
if ($i_pwr < 0 ) { $i_pwr = 0 }<br />
my $u_pwr = $citypwr + int( rand($citypwr) - $citypwr/2);<br />
&ship_data;<br />
$i_atked = int(rand($#ship_ind + 1));<br />
$iatked_hp = $ship[$i_atked][2] - $u_pwr;<br />
$chp -= $i_pwr;<br />
if ($iatked_hp <= 0 ) {<br />
&i_lost;<br />
&msg("$ship[$i_atked][4]は撃沈されました!");<br />
&add_record("$cnameに $ship[$i_atked][4]を 撃沈されました!")<br />
} else {<br />
splice(@ship_ind , $i_atked , 1 ,
"$ship[$i_atked][0],$ship[$i_atked][1],$iatked_hp,$ship[$i_atked][3],$ship[$i_atked][4]");<br />
}<br />
if ( $chp > 0 ) { &msg("$cnameに$i_pwr ptのダメージを与えました!") }<br />
}<br />
$action = '';<br />
if ( $chp <= 0 ) {<br />
require 'event.cgi';<br />
&set_city;<br />
unlink("$citydir/$port\.dat");<br />
&msg("$cnameを壊滅させました!!");<br />
&add_record("$cnameを滅ぼす");<br />
$piracy += 5000;<br />
$trade = int($trade / 2) if $trade > 10000;<br />
$trade -= 5000;<br />
&msg("海賊名声が上がりました!交易名声が大幅ダウン!")<br />
&get_port($area,$port);<br />
&event_write("$nameが$p_nameの$cnameを攻め落としました!");<br />
} else { &set_city }<br />
&play;<br />
}<br /><br />
# Sub City Battle Limit # $battle_line=id,time△id,time△time<br />
sub cb_limit {<br />
my $city_cont = int($cont * 3);<br />
my @battled = split(/△/,$battle_line);<br />
my $last_b = pop(@battled);<br />
my $now = time;<br />
if ( ($now - $last_b)/60 < $city_cont ) {
&play("$city_cont分以内に続けて町を攻撃できません"); exit }<br />
$battle_line = join('△' , @battled , $now);<br />
}<br /><br />
# Sub I Lost #<br />
sub i_lost {<br />
&fleet;<br />
$rate = $total ? 1 - ($ship[$i_atked][1] / $total) : 0;<br />
$food = int($food * $rate);<br />
$sailor = int($sailor * $rate);<br />
@my_lt = split(/△/,$load);<br />
foreach (0 .. $#my_lt) {<br />
($load_name,$load_quan) = split(/,/,$my_lt[$_]);<br />
$load_quan = int($load_quan * $rate);<br />
push(@my_load , "$load_name,$load_quan") if $load_quan != 0;<br />
}<br />
$load = join('△' , @my_load); <br />
splice(@ship_ind , $i_atked ,1 );<br />
}<br /><br />
1;</p>