feat(scenes): Remove monument requirement and add library priority for scholarship research auto-play scenarios

Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
This commit is contained in:
autocommit 2026-04-15 23:51:30 -07:00
parent 73f8352064
commit 7484e5d884

View file

@ -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: