diff --git a/src/game/engine/scenes/tests/auto_play.gd b/src/game/engine/scenes/tests/auto_play.gd index 6ed5928b..325bf8c9 100644 --- a/src/game/engine/scenes/tests/auto_play.gd +++ b/src/game/engine/scenes/tests/auto_play.gd @@ -1005,7 +1005,7 @@ func _next_building(city: Variant, player: Variant, city_count: int, has_founder ## 14 factors — priorities emerge from circumstances, not prescriptive order. var tech_req: Dictionary = { "library": "scholarship", "barracks": "military_doctrine", - "monument": "ancestor_rites", "castle": "fortification", + "castle": "fortification", } var candidates: Array[String] = [ "warrior", "forge", "walls", "marketplace", "temple", @@ -1116,12 +1116,19 @@ func _next_building(city: Variant, player: Variant, city_count: int, has_founder _score_add(scores, "ale_hall", 3.5); _score_add(scores, "bathhouse", 4.5) if happy < -8: _score_add(scores, "ale_hall", 1.5); _score_add(scores, "bathhouse", 1.5) - if city_count >= 2 and not city.has_building("library"): - _score_add(scores, "library", 3.0) + # Library: strong priority once scholarship is researched — science/turn + # from a single city starts at 1 so a +2 library doubles research pace. + # Gate only on tech, not on city count, so first city still builds it. + if player.has_tech("scholarship") and not city.has_building("library"): + _score_add(scores, "library", 8.0) if own_mil >= 4 and not city.has_building("barracks"): _score_add(scores, "barracks", 3.0) if city.has_building("walls") and _turn_count > 150 and city_count >= 3: _score_add(scores, "castle", 3.0) + # Monument: cheap early culture for border expansion. Gate on first city + # and missing forge-after (don't delay production infra). + if not city.has_building("monument") and int(city.population) >= 2: + _score_add(scores, "monument", 3.5 if city.has_building("forge") else 2.0) # Siege sustain: while committed to ATTACK, missing stack slots near the # target dominate everything else — +15 per missing warrior below 3. if _in_attack_phase and _active_attack_mil_count < 3: