From f9ce95756fd5221df089125e0d96e89ddfe9a452 Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Tue, 31 Dec 2024 13:27:12 +0000 Subject: [PATCH] Fix potentially infinite attempts to upgrade units by AI --- AI/Nullkiller/AIGateway.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/AI/Nullkiller/AIGateway.cpp b/AI/Nullkiller/AIGateway.cpp index 57428999f..c8a7efb30 100644 --- a/AI/Nullkiller/AIGateway.cpp +++ b/AI/Nullkiller/AIGateway.cpp @@ -805,7 +805,11 @@ bool AIGateway::makePossibleUpgrades(const CArmedInstance * obj) { return id.toCreature()->getAIValue(); }); - if(nullkiller->getFreeResources().canAfford(upgradeInfo.getUpgradeCostsFor(upgID) * s->count)) + + int oldValue = s->getCreature()->getAIValue(); + int newValue = upgID.toCreature()->getAIValue(); + + if(newValue > oldValue && nullkiller->getFreeResources().canAfford(upgradeInfo.getUpgradeCostsFor(upgID) * s->count)) { myCb->upgradeCreature(obj, SlotID(i), upgID); upgraded = true;