Follow-up Comment #1, patch #3885 (project freeciv):

While this seems logically correct with the assumption that we are in a city,
it doesn't work so well if pcity==NULL, and would represent a significant
behaviour change under those circumstances.

Previously, for defending without a city, using the classic ruleset,
Battleship (16 before quadratic check) beats Mech Inf. (9 before quadratic
check), and for defending with a city Mech Inf. (27 before quadratic check)
beats Battleship (16 before quadratic check).

With this proposed patch, Mech Inf. always beats Battleship (9 vs. 8 outside
city and 27 vs. 8 inside city), which seems a bit strong.

While this could be handled by wrapping the "defense /= 2;" line with a pcity
check, I think the fact that the firepower multiplier is in the else clause is
an attempt to handle the defender firepower reduction of BadCityDefender, with
the result that the conditional should be extended to check if we're defending
a city before applying the BadCityDefender penalties, granting the firepower
bonus in other conditions.  So, if we're willing to change behaviour anyway,
we should probably grant traditional sea units a bonus if they aren't in the
city, similar to how we penalise them for being in a city.  The attached patch
has the same behaviour as the prior patch for cities, and results in
Battleship/Mech Inf. ratings outside a city of 32/9 by the same scale above
(and, terrain aside, a battleship tends to be a better defender outside a

The safety of this patch is extended in part by the need to revisit this
function again to resolve the is_ground_unit() call: my prior attempts to do
so have not resulted in good behaviour, which I've attributed to other issues
with the AI using !is_ground_unit() units generally.

(file #17849)

Additional Item Attachment:

File name: badcitydefender-firepoweradjustments.patch Size:1 KB


Reply to this item at:


  Message sent via/by Gna!

Freeciv-dev mailing list

Reply via email to