cbattle.cgi

これもとくに説明するところがないところ

# 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;

最終更新:2010年10月02日 00:47
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。