<URL: http://bugs.freeciv.org/Ticket/Display.html?id=40398 >

 Now that AI no longer builds 'accidentally' Coastal defenses or SAM
batteries in response to land danger, this patch makes it to build
them in response to appropriate dangers.


 - ML

diff -Nurd -X.diff_ignore freeciv/ai/advmilitary.c freeciv/ai/advmilitary.c
--- freeciv/ai/advmilitary.c    2008-07-23 03:23:34.000000000 +0300
+++ freeciv/ai/advmilitary.c    2008-07-23 03:23:21.000000000 +0300
@@ -495,6 +495,7 @@
   unsigned int urgency = 0;
   int igwall_threat = 0;
   struct tile *ptile = pcity->tile;
+  int defense;
 
   TIMING_LOG(AIT_DANGER, TIMER_START);
 
@@ -634,15 +635,26 @@
 
   /* HACK: This needs changing if multiple improvements provide
    * this effect. */
-  /* FIXME: Check attacker type and protect against that. Now
-   * always assess land danger. */
   /* FIXME: Accept only buildings helping unit classes we actually use.
    *        Now we consider any land mover helper suitable. */
+  defense = assess_defense_igwall(pcity);
+
   defender = ai_find_source_building(pcity, EFT_DEFEND_BONUS, NULL, 
LAND_MOVING);
+  if (defender != B_LAST) {
+    ai_reevaluate_building(pcity, &pcity->ai.building_want[defender],
+       urgency, danger[DANGER_LAND], defense);
+  }
 
+  defender = ai_find_source_building(pcity, EFT_DEFEND_BONUS, NULL, 
SEA_MOVING);
   if (defender != B_LAST) {
     ai_reevaluate_building(pcity, &pcity->ai.building_want[defender],
-       urgency, danger[DANGER_LAND], assess_defense_igwall(pcity));
+                           urgency, danger[DANGER_SEA], defense);
+  }
+
+  defender = ai_find_source_building(pcity, EFT_DEFEND_BONUS, NULL, 
AIR_MOVING);
+  if (defender != B_LAST) {
+    ai_reevaluate_building(pcity, &pcity->ai.building_want[defender],
+                           urgency, danger[DANGER_AIR], defense);
   }
 
   if (ai_handicap(pplayer, H_DANGER)
_______________________________________________
Freeciv-dev mailing list
Freeciv-dev@gna.org
https://mail.gna.org/listinfo/freeciv-dev

Reply via email to