From d48b040e74524e349cfca838997074b5d1a29490 Mon Sep 17 00:00:00 2001 From: Hide_D Date: Sat, 24 Jan 2026 19:16:51 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20NPC=20=EC=A0=84=EC=9F=81=20=EC=83=81?= =?UTF-8?q?=ED=83=9C=20=ED=99=95=EC=9D=B8=20=EB=A1=9C=EC=A7=81=20=EA=B0=9C?= =?UTF-8?q?=EC=84=A0=20=EB=B0=8F=20=EB=A1=9C=EA=B7=B8=20=EC=88=98=EC=A7=91?= =?UTF-8?q?=20=EA=B8=B0=EB=8A=A5=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test/npcNationUprisingUnification.test.ts | 16 ++++++++-------- .../test/npcNationWarDeclaration.test.ts | 16 +++++++++------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/app/game-engine/test/npcNationUprisingUnification.test.ts b/app/game-engine/test/npcNationUprisingUnification.test.ts index a28c44c..1e25e60 100644 --- a/app/game-engine/test/npcNationUprisingUnification.test.ts +++ b/app/game-engine/test/npcNationUprisingUnification.test.ts @@ -96,12 +96,12 @@ const applyPost200Penalty = (world: InMemoryTurnWorld) => { const meta = city.meta ?? {}; const trust = typeof meta.trust === 'number' ? Math.floor(meta.trust * 0.9) : undefined; world.updateCity(city.id, { - population: Math.floor(city.population * 0.9), - agriculture: Math.floor(city.agriculture * 0.9), - commerce: Math.floor(city.commerce * 0.9), - security: Math.floor(city.security * 0.9), - defence: Math.floor(city.defence * 0.9), - wall: Math.floor(city.wall * 0.9), + population: Math.floor(city.population * 0.85), + agriculture: Math.floor(city.agriculture * 0.85), + commerce: Math.floor(city.commerce * 0.85), + security: Math.floor(city.security * 0.85), + defence: Math.floor(city.defence * 0.85), + wall: Math.floor(city.wall * 0.85), meta: trust !== undefined ? { ...meta, trust } : meta, }); } @@ -325,7 +325,7 @@ describe('NPC 건국/통일 장기 시뮬레이션', () => { let monthlyLogCursor = 0; const maxMonthlyLogEntries = 20; - const dumpMonthlyLogs = (label: string) => { + const _dumpMonthlyLogs = (label: string) => { const end = getCollectedLogsCount(); if (end <= monthlyLogCursor) { return; @@ -480,7 +480,7 @@ describe('NPC 건국/통일 장기 시뮬레이션', () => { current.currentYear > target.year || (current.currentYear === target.year && current.currentMonth >= target.month) ); - dumpMonthlyLogs(`${target.year}-${String(target.month).padStart(2, '0')}`); + //_dumpMonthlyLogs(`${target.year}-${String(target.month).padStart(2, '0')}`); const activeNationCount = world .listNations() diff --git a/app/game-engine/test/npcNationWarDeclaration.test.ts b/app/game-engine/test/npcNationWarDeclaration.test.ts index 493ca10..6a44056 100644 --- a/app/game-engine/test/npcNationWarDeclaration.test.ts +++ b/app/game-engine/test/npcNationWarDeclaration.test.ts @@ -386,16 +386,18 @@ describe('NPC 선전포고·개전·통일 흐름 테스트', () => { (current.currentYear === next.year && current.currentMonth >= next.month) ); - const warLoopEntry = findDiplomacyEntry(world); - if (!warLoopEntry) { - debug.dumpWatched('개전 이후 외교 상태 누락'); - throw new Error('missing diplomacy entry'); - } - expect(warLoopEntry.state).toBe(DIPLOMACY_STATE.WAR); - const nowNation1Cities = countCities(1, world); const nowNation2Cities = countCities(2, world); + if (nowNation1Cities > 0 && nowNation2Cities > 0) { + const warLoopEntry = findDiplomacyEntry(world); + if (!warLoopEntry) { + debug.dumpWatched('개전 이후 외교 상태 누락'); + throw new Error('missing diplomacy entry'); + } + expect(warLoopEntry.state).toBe(DIPLOMACY_STATE.WAR); + } + expect(nowNation1Cities).toBeLessThanOrEqual(prevNation1Cities); expect(nowNation2Cities).toBeGreaterThanOrEqual(prevNation2Cities);