From ad6dbdbe97813b550a6eb1d573470dbabbe6cf6e Mon Sep 17 00:00:00 2001 From: kjs Date: Fri, 14 Aug 2026 11:11:44 +0900 Subject: [PATCH] =?UTF-8?q?=ED=8A=9C=ED=86=A0=EB=A6=AC=EC=96=BC=20?= =?UTF-8?q?=EC=A1=B8=EC=97=85=20=EC=8B=9C=20=EC=A0=95=EC=B0=A9=20=EC=A7=80?= =?UTF-8?q?=EC=9B=90=EA=B8=88=20=EB=83=A5=EC=BD=94=EC=9D=B8=20200=20(?= =?UTF-8?q?=EA=B2=BD=EC=A0=9C=20=EC=86=8C=ED=94=84=ED=8A=B8=EB=9D=BD=20?= =?UTF-8?q?=EC=88=98=EC=A0=95)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 장터(회관 Lv2 건설) 전까지 코인 수입이 없어 3마리째 입양(100코인)이 불가능하던 문제 — 부엌 인력을 못 뽑아 굶는 소프트락 - 작별 단계 진입 시 촌장 냥이가 🪙200 지급 + 작별 대사에 안내 - 이미 튜토리얼을 마친 기존 마을도 접속 시 1회 소급 지급 (중복 방지 플래그) Co-Authored-By: Claude Fable 5 --- src/components/game/Game.tsx | 2 +- src/lib/game/engine.ts | 15 +++++++++++++++ src/lib/game/types.ts | 1 + 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/components/game/Game.tsx b/src/components/game/Game.tsx index 06895e5..3ca14da 100644 --- a/src/components/game/Game.tsx +++ b/src/components/game/Game.tsx @@ -98,7 +98,7 @@ const TUTORIAL_STEPS: TutStep[] = [ check: (s) => s.hall.level >= 2, }, { - text: "축하해! 이제 이 마을은 온전히 네 거야. 건물을 늘리고, 마을을 꾸미고, 친구들을 돌봐줘. 난 회관에 있을게 — 언제든 놀러 와! 🐾", + text: "축하해! 이제 이 마을은 온전히 네 거야. 아 참 — 정착 지원금으로 냥코인 🪙200을 문패 아래 두고 갈게. 새 친구를 데려오거나 장터를 짓는 데 쓰렴! 난 회관에 있을게 🐾", manual: true, }, ]; diff --git a/src/lib/game/engine.ts b/src/lib/game/engine.ts index 3ee0067..bcf80cd 100644 --- a/src/lib/game/engine.ts +++ b/src/lib/game/engine.ts @@ -317,6 +317,11 @@ export const engine = { state.decors ??= []; state.tutorialStep ??= 99; // 기존 마을은 튜토리얼 생략 state.coins ??= 0; + // 소급 지급: 이미 튜토리얼을 마쳤는데 정착 지원금을 못 받은 마을 + if ((state.tutorialStep ?? 0) >= 99 && !state.settleGrantGiven) { + state.coins += 200; + state.settleGrantGiven = true; + } if (state.happinessUnlocked === undefined) { const deckBuilt = state.buildings.some( (b) => b.type === "sun_deck" && b.constructionUntil === undefined, @@ -401,6 +406,11 @@ export const engine = { best.exp = 0; } } + if (step === 9 && !state.settleGrantGiven) { + // 졸업 선물: 마을 정착 지원금 (장터 전까지 코인 수입이 없는 구간 해소) + state.coins = (state.coins ?? 0) + 200; + state.settleGrantGiven = true; + } }, @@ -742,6 +752,11 @@ export const engine = { state.decors ??= []; state.tutorialStep ??= 99; // 기존 마을은 튜토리얼 생략 state.coins ??= 0; + // 소급 지급: 이미 튜토리얼을 마쳤는데 정착 지원금을 못 받은 마을 + if ((state.tutorialStep ?? 0) >= 99 && !state.settleGrantGiven) { + state.coins += 200; + state.settleGrantGiven = true; + } if (state.happinessUnlocked === undefined) { const deckBuilt = state.buildings.some( (b) => b.type === "sun_deck" && b.constructionUntil === undefined, diff --git a/src/lib/game/types.ts b/src/lib/game/types.ts index 9560b3f..d7c68f7 100644 --- a/src/lib/game/types.ts +++ b/src/lib/game/types.ts @@ -77,6 +77,7 @@ export interface GameState { syncToken?: string; // 세이브 보호 토큰 happinessUnlocked?: boolean; // 행복도 시스템 해금 (회관 Lv3 + 햇볕 데크) happinessIntroSeen?: boolean; // 촌장 냥이 행복도 안내를 봤는가 + settleGrantGiven?: boolean; // 정착 지원금 지급 여부 decors?: DecoTile[]; // 꾸미기 바닥 타일 resources: Record; cats: Cat[];