fix(game): 국가 수 판정에서 합성 재야를 제외한다

Ref nation table에 없는 id=0 행이 정찰 차단과 월간 경매 난수 소비에 관여하지 않도록 모집단을 맞춘다. Ref의 maxnation 건국 표시 제한도 실행 제약을 늘리지 않고 명령표에 이관한다.
This commit is contained in:
2026-08-23 12:31:53 +00:00
parent 2d31145994
commit e9c715e231
9 changed files with 107 additions and 17 deletions
@@ -119,7 +119,8 @@ export const createNeutralAuctionRegistrar = async (options: {
hiddenSeed,
seedYear: context.previousYear,
seedMonth: context.previousMonth,
nationCount: options.getNationPowerRollCount?.() ?? world.listNations().length,
nationCount:
options.getNationPowerRollCount?.() ?? world.listNations().filter((nation) => nation.id > 0).length,
consumeTournamentRoll,
averageGold: average(eligibleGenerals.map((general) => general.gold)),
averageRice: average(eligibleGenerals.map((general) => general.rice)),
@@ -25,7 +25,10 @@ export const createScoutBlockHandler = (options: {
// changing nation or game state. No provided scenario invokes it.
throw new Error('update(): at least 3 arguments expected');
}
for (const nation of world.listNations()) {
// Ref updates every row in its nation table. Core additionally keeps a
// synthetic id=0 neutral row, which is not a Ref nation row and must
// remain outside the last-nation scout policy.
for (const nation of world.listNations().filter((entry) => entry.id > 0)) {
world.updateNation(nation.id, {
meta: {
...nation.meta,
+2 -1
View File
@@ -414,7 +414,8 @@ const createMonthlyCalendarRuntime = async (options: {
clock: Clock;
}) => {
const cache: MonthlyRuntimeCache = {
nationPowerRollCount: options.snapshot.nations.length,
// Ref's monthly nation query has no Core-only id=0 neutral row.
nationPowerRollCount: options.snapshot.nations.filter((nation) => nation.id > 0).length,
tournamentRollConsumed: false,
};
const unification = options.calendarHandlerOverride