<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