From eb22568828fd1d4f00be7abbb7b8999f9d19d3c2 Mon Sep 17 00:00:00 2001 From: Claude Code Date: Fri, 10 Apr 2026 20:25:49 -0700 Subject: [PATCH] =?UTF-8?q?feat(ai):=20=E2=9C=A8=20Enhance=20military=20un?= =?UTF-8?q?it=20detection=20logic=20in=20SimpleHeuristicAI=20for=20improve?= =?UTF-8?q?d=20strategic=20accuracy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- src/game/engine/src/modules/ai/simple_heuristic_ai.gd | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/game/engine/src/modules/ai/simple_heuristic_ai.gd b/src/game/engine/src/modules/ai/simple_heuristic_ai.gd index 426d9e82..8138c4bb 100644 --- a/src/game/engine/src/modules/ai/simple_heuristic_ai.gd +++ b/src/game/engine/src/modules/ai/simple_heuristic_ai.gd @@ -56,7 +56,11 @@ static func process_player(player: RefCounted) -> Array: var action: Dictionary = {} if unit.can_found_city: action = _decide_founder_action(idx, unit, player, enemy_units) - elif unit.unit_type in MILITARY_COMBAT_TYPES: + elif unit.attack > 0 or unit.ranged_attack > 0: + # Stat-based dispatch — `unit.unit_type` is read from a JSON field + # (`combat_type`) that the current data files don't populate, so it + # would always be empty here. Anything with combat stats and no + # founder flag is treated as a military unit. action = _decide_military_action( idx, unit,