튜토리얼 졸업 시 정착 지원금 냥코인 200 (경제 소프트락 수정)
- 장터(회관 Lv2 건설) 전까지 코인 수입이 없어 3마리째 입양(100코인)이 불가능하던 문제 — 부엌 인력을 못 뽑아 굶는 소프트락 - 작별 단계 진입 시 촌장 냥이가 🪙200 지급 + 작별 대사에 안내 - 이미 튜토리얼을 마친 기존 마을도 접속 시 1회 소급 지급 (중복 방지 플래그) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
이 커밋은 다음에 포함됨:
@@ -98,7 +98,7 @@ const TUTORIAL_STEPS: TutStep[] = [
|
|||||||
check: (s) => s.hall.level >= 2,
|
check: (s) => s.hall.level >= 2,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: "축하해! 이제 이 마을은 온전히 네 거야. 건물을 늘리고, 마을을 꾸미고, 친구들을 돌봐줘. 난 회관에 있을게 — 언제든 놀러 와! 🐾",
|
text: "축하해! 이제 이 마을은 온전히 네 거야. 아 참 — 정착 지원금으로 냥코인 🪙200을 문패 아래 두고 갈게. 새 친구를 데려오거나 장터를 짓는 데 쓰렴! 난 회관에 있을게 🐾",
|
||||||
manual: true,
|
manual: true,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|||||||
@@ -317,6 +317,11 @@ export const engine = {
|
|||||||
state.decors ??= [];
|
state.decors ??= [];
|
||||||
state.tutorialStep ??= 99; // 기존 마을은 튜토리얼 생략
|
state.tutorialStep ??= 99; // 기존 마을은 튜토리얼 생략
|
||||||
state.coins ??= 0;
|
state.coins ??= 0;
|
||||||
|
// 소급 지급: 이미 튜토리얼을 마쳤는데 정착 지원금을 못 받은 마을
|
||||||
|
if ((state.tutorialStep ?? 0) >= 99 && !state.settleGrantGiven) {
|
||||||
|
state.coins += 200;
|
||||||
|
state.settleGrantGiven = true;
|
||||||
|
}
|
||||||
if (state.happinessUnlocked === undefined) {
|
if (state.happinessUnlocked === undefined) {
|
||||||
const deckBuilt = state.buildings.some(
|
const deckBuilt = state.buildings.some(
|
||||||
(b) => b.type === "sun_deck" && b.constructionUntil === undefined,
|
(b) => b.type === "sun_deck" && b.constructionUntil === undefined,
|
||||||
@@ -401,6 +406,11 @@ export const engine = {
|
|||||||
best.exp = 0;
|
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.decors ??= [];
|
||||||
state.tutorialStep ??= 99; // 기존 마을은 튜토리얼 생략
|
state.tutorialStep ??= 99; // 기존 마을은 튜토리얼 생략
|
||||||
state.coins ??= 0;
|
state.coins ??= 0;
|
||||||
|
// 소급 지급: 이미 튜토리얼을 마쳤는데 정착 지원금을 못 받은 마을
|
||||||
|
if ((state.tutorialStep ?? 0) >= 99 && !state.settleGrantGiven) {
|
||||||
|
state.coins += 200;
|
||||||
|
state.settleGrantGiven = true;
|
||||||
|
}
|
||||||
if (state.happinessUnlocked === undefined) {
|
if (state.happinessUnlocked === undefined) {
|
||||||
const deckBuilt = state.buildings.some(
|
const deckBuilt = state.buildings.some(
|
||||||
(b) => b.type === "sun_deck" && b.constructionUntil === undefined,
|
(b) => b.type === "sun_deck" && b.constructionUntil === undefined,
|
||||||
|
|||||||
@@ -77,6 +77,7 @@ export interface GameState {
|
|||||||
syncToken?: string; // 세이브 보호 토큰
|
syncToken?: string; // 세이브 보호 토큰
|
||||||
happinessUnlocked?: boolean; // 행복도 시스템 해금 (회관 Lv3 + 햇볕 데크)
|
happinessUnlocked?: boolean; // 행복도 시스템 해금 (회관 Lv3 + 햇볕 데크)
|
||||||
happinessIntroSeen?: boolean; // 촌장 냥이 행복도 안내를 봤는가
|
happinessIntroSeen?: boolean; // 촌장 냥이 행복도 안내를 봤는가
|
||||||
|
settleGrantGiven?: boolean; // 정착 지원금 지급 여부
|
||||||
decors?: DecoTile[]; // 꾸미기 바닥 타일
|
decors?: DecoTile[]; // 꾸미기 바닥 타일
|
||||||
resources: Record<ResourceKey, number>;
|
resources: Record<ResourceKey, number>;
|
||||||
cats: Cat[];
|
cats: Cat[];
|
||||||
|
|||||||
새 이슈에서 참조
사용자 차단