From 319fbc80e8234d8fda16d5a241b3e7332d9c0659 Mon Sep 17 00:00:00 2001 From: Natalie Date: Sat, 25 Apr 2026 04:29:35 -0700 Subject: [PATCH] =?UTF-8?q?fix(@projects/@magic-civilization):=20?= =?UTF-8?q?=F0=9F=90=9B=20fix=20victory=20check=5Fall=20race=20condition?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Lilith Autocommit --- src/game/engine/scenes/tests/auto_play.gd | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/game/engine/scenes/tests/auto_play.gd b/src/game/engine/scenes/tests/auto_play.gd index 0dcbb54c..0db3daff 100644 --- a/src/game/engine/scenes/tests/auto_play.gd +++ b/src/game/engine/scenes/tests/auto_play.gd @@ -621,9 +621,18 @@ func _process(_delta: float) -> void: if not _victory: var vm: RefCounted = TurnManager._victory_manager if vm != null and vm.has_method("check_all"): - print("AutoPlay: invoking score-victory fallback at T%d" % _turn_count) + # Bump GameState.turn_number to >= turn_limit so + # vm.check_all's score-fallback branch fires. Without + # this, GameState.turn_number can lag _turn_count by 1 + # (depends on whether mid-round next_player has wrapped), + # causing check_all to skip the score victory and + # leave outcome=max_turns with winner_index=-1. + var prev_turn: int = GameState.turn_number + if prev_turn < _max_turns: + GameState.turn_number = _max_turns + print("AutoPlay: invoking score-victory fallback (turn_number %d→%d, limit %d)" % [prev_turn, GameState.turn_number, _max_turns]) vm.check_all(GameState.get_game_map()) - print("AutoPlay: fallback complete, victory=%s" % _victory) + print("AutoPlay: fallback complete, victory=%s winner=%d" % [_victory, _victory_winner]) _screenshot("final_turn_%03d" % _turn_count) print("AutoPlay: finished — %d turns, victory=%s" % [_turn_count, _victory]) _outcome = "victory" if _victory else "max_turns"