Index: server/unitfunc.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/unitfunc.c,v retrieving revision 1.177 diff -u -r1.177 unitfunc.c --- unitfunc.c 2000/06/13 18:27:20 1.177 +++ unitfunc.c 2000/06/14 13:41:15 @@ -1631,7 +1631,21 @@ { int attackpower=get_total_attack_power(attacker,defender); int defensepower=get_total_defense_power(attacker,defender); + int attack_firepower = get_unit_type(attacker->type)->firepower; + int defence_firepower = get_unit_type(defender->type)->firepower; + /* pearl harbour */ + if (is_sailing_unit(defender) && map_get_city(defender->x, defender->y)) + defence_firepower = 1; + + /* In land bombardment both units have their firepower reduced to 1 */ + if (is_sailing_unit(attacker) + && map_get_terrain(defender->x, defender->y) != T_OCEAN + && is_ground_unit(denfender)) { + int attack_firepower = 1; + int defence_firepower = 1; + } + freelog(LOG_VERBOSE, "attack:%d, defense:%d", attackpower, defensepower); if (!attackpower) { attacker->hp=0; @@ -1639,15 +1653,10 @@ defender->hp=0; } while (attacker->hp>0 && defender->hp>0) { - if (myrand(attackpower+defensepower)>= defensepower) { - defender->hp -= get_unit_type(attacker->type)->firepower - * game.firepower_factor; + if (myrand(attackpower+defensepower) >= defensepower) { + defender->hp -= attack_firepower * game.firepower_factor; } else { - if (is_sailing_unit(defender) && map_get_city(defender->x, defender->y)) - attacker->hp -= game.firepower_factor; /* pearl harbour */ - else - attacker->hp -= get_unit_type(defender->type)->firepower - * game.firepower_factor; + attacker->hp -= defence_firepower * game.firepower_factor; } } if (attacker->hp<0) attacker->hp=0;