fix(game): release a banished race's assets during turn generation #80

Merged
developer merged 1 commits from feature/game-banish-wipe into development 2026-05-31 07:17:16 +00:00
Owner

Что

Этап 5 сверки Правил и движка: освобождение имущества расы при административном изгнании (banish).

TurnWipeExtinctRaces обходил только не-Extinct расы, из-за чего изгнанная раса (флаг Extinct, TTL не тронут) никогда не вайпилась: её планеты оставались занятыми, корабли висели, хотя сама раса уже не могла действовать. Теперь цикл идёт по всем расам и вайпит, если:

  • активная раса исчерпала TTL (бездействие/quit), или
  • Extinct-раса всё ещё владеет имуществом (banish).

Проверка наличия имущества делает повторные проходы идемпотентными.

wipeRace и так соответствовал правилам исключения (корабли удаляются, планеты становятся необитаемыми, рабочая промышленность и запасы обнуляются, сырьё остаётся) — поведение лишь задокументировано.

Документация

game/README.md: раздел banish теперь описывает поведение (флаг + освобождение на следующем ходе) вместо «owned by the engine maintainers». game/rules.txt уже корректен («…удаляется из списка участвующих рас перед началом просчёта очередного хода»). ARCHITECTURE.md про banish ничего не утверждает.

Тесты

go test ./game/... зелёный. Новые: TestBanishReleasesAssets (+ идемпотентность), TestIdleRaceWipedOnTimeout.

## Что Этап 5 сверки Правил и движка: освобождение имущества расы при административном изгнании (`banish`). `TurnWipeExtinctRaces` обходил только не-Extinct расы, из-за чего изгнанная раса (флаг `Extinct`, `TTL` не тронут) никогда не вайпилась: её планеты оставались занятыми, корабли висели, хотя сама раса уже не могла действовать. Теперь цикл идёт по **всем** расам и вайпит, если: - активная раса исчерпала `TTL` (бездействие/quit), **или** - Extinct-раса всё ещё владеет имуществом (`banish`). Проверка наличия имущества делает повторные проходы идемпотентными. `wipeRace` и так соответствовал правилам исключения (корабли удаляются, планеты становятся необитаемыми, рабочая промышленность и запасы обнуляются, сырьё остаётся) — поведение лишь задокументировано. ## Документация `game/README.md`: раздел `banish` теперь описывает поведение (флаг + освобождение на следующем ходе) вместо «owned by the engine maintainers». `game/rules.txt` уже корректен («…удаляется из списка участвующих рас перед началом просчёта очередного хода»). `ARCHITECTURE.md` про banish ничего не утверждает. ## Тесты `go test ./game/...` зелёный. Новые: `TestBanishReleasesAssets` (+ идемпотентность), `TestIdleRaceWipedOnTimeout`.
developer added 1 commit 2026-05-31 07:05:31 +00:00
fix(game): release a banished race's assets during turn generation
Tests · Go / test (push) Successful in 1m57s
Tests · Integration / integration (pull_request) Successful in 1m49s
Tests · Go / test (pull_request) Successful in 2m2s
3b1c52cd02
TurnWipeExtinctRaces iterated only non-extinct races, so an
administratively banished race (flagged extinct, TTL untouched) was never
wiped: its planets stayed owned and its ships lingered, while the race
itself could no longer act. The loop now covers every race and wipes when
either an active race's TTL has run out (idle / quit) or an extinct race
still holds assets (banish). The asset check makes repeated passes
idempotent.

wipeRace already matched the rules for exclusion (ships removed, planets
uninhabited, industry and capital cleared, material retained), so the
behaviour is just documented in game/README.md.

Tests: banish releases planets and ships on the next turn (and is
idempotent); idle-timeout wipe still fires under the new iterator.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
owner approved these changes 2026-05-31 07:16:42 +00:00
developer merged commit bef6c46a1c into development 2026-05-31 07:17:16 +00:00
developer deleted branch feature/game-banish-wipe 2026-05-31 07:17:16 +00:00
Sign in to join this conversation.
No Reviewers
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: developer/galaxy-game#80