diff --git a/Assets/WL/Combat/Settings/Resources/WL/WLTelegraphSettings.asset b/Assets/WL/Combat/Settings/Resources/WL/WLTelegraphSettings.asset index 52764c5f6..230009cfa 100644 --- a/Assets/WL/Combat/Settings/Resources/WL/WLTelegraphSettings.asset +++ b/Assets/WL/Combat/Settings/Resources/WL/WLTelegraphSettings.asset @@ -27,7 +27,7 @@ MonoBehaviour: defaultHitSeconds: 0.16 correctFromLiveClip: 1 maxTelegraphSeconds: 2.5 - decalEnabled: 1 + decalEnabled: 0 maxConcurrent: 6 poolWarmCount: 8 groundYOffset: 0.06 diff --git a/Assets/WL/Island/Resources/WL/WLIslandSettings.asset b/Assets/WL/Island/Resources/WL/WLIslandSettings.asset index 2ea88e8ee..79d63d340 100644 --- a/Assets/WL/Island/Resources/WL/WLIslandSettings.asset +++ b/Assets/WL/Island/Resources/WL/WLIslandSettings.asset @@ -78,6 +78,7 @@ MonoBehaviour: applyStartCoin: 1 startCoin: 10 saveResetToken: 816g-1 + resetSaveEveryStart: 1 dungeonCameraMatchIsland: 1 camPitch: 45 camYaw: 0 diff --git a/Assets/WL/Island/WLIslandSave.cs b/Assets/WL/Island/WLIslandSave.cs index 1bd93a481..074f06599 100644 --- a/Assets/WL/Island/WLIslandSave.cs +++ b/Assets/WL/Island/WLIslandSave.cs @@ -60,6 +60,7 @@ namespace WL.Island const string kTokenKey = "WL_Island_SaveToken"; static System.Reflection.FieldInfo s_startingMoney; + static bool s_resetDoneThisRun; // 2026-09-15 PD — 실행(Play) 1회당 1번만 초기화 /// `IslandManager.Awake` 안(= `LoadGameData()` 직전)에서 단 한 번 불린다. public static void Prepare(string saveName) @@ -67,10 +68,14 @@ namespace WL.Island var cfg = WLIslandSettings.Instance; if (cfg == null || cfg.enabled_ == 0 || cfg.gateFlowEnabled == 0) return; - // ① 세이브 1회 초기화 — 토큰이 바뀌었을 때만(PD 에게 새 초기 상태를 보여 줄 때) - if (!string.IsNullOrEmpty(cfg.saveResetToken) && - PlayerPrefs.GetString(kTokenKey, "") != cfg.saveResetToken) + // ① 세이브 초기화 — 토큰이 바뀌었을 때(1회) · 또는 `resetSaveEveryStart` 면 **게임 시작마다**(실행 1회당 1번 · + // 던전에서 섬으로 돌아올 때는 아님 · 2026-09-15 PD 「내가 얘기하기 전까지 매번 초기화 상태에서 시작」) + bool everyStart = cfg.resetSaveEveryStart != 0 && !s_resetDoneThisRun; + if (everyStart || + (!string.IsNullOrEmpty(cfg.saveResetToken) && + PlayerPrefs.GetString(kTokenKey, "") != cfg.saveResetToken)) { + s_resetDoneThisRun = true; try { string path = Application.persistentDataPath + "/" + saveName + ".dat"; diff --git a/Assets/WL/Island/WLIslandSettings.cs b/Assets/WL/Island/WLIslandSettings.cs index 81554a7ce..6a83995cf 100644 --- a/Assets/WL/Island/WLIslandSettings.cs +++ b/Assets/WL/Island/WLIslandSettings.cs @@ -313,6 +313,11 @@ namespace WL.Island "비우면 아무것도 지우지 않는다. PD 에게 새 상태를 보여 줄 때 값을 바꾼다.")] public string saveResetToken = "816g-1"; + [Tooltip("🔴 1 이면 **게임을 시작할 때마다**(Play/앱 실행 1회당 1번 · 던전에서 섬으로 돌아올 때는 아님) 섬 세이브·던전 해금·보류 보상을 " + + "전부 지우고 시작 골드부터 다시 시작한다 — 2026-09-15 PD 「내가 얘기하기 전까지는 게임 시작 시 매번 초기화된 상태에서 시작」" + + "(초반 Flow 구성 예정). 0 = 세이브 유지(토큰 1회 초기화만).")] + public int resetSaveEveryStart = 1; + // ───────────────────────────────── WL-816i · 카메라 구도 고정 // PD 「카메라 구도는 섬에서 조작할 때의 각도와 뷰를 말한거야. 전장에 진입해도 바뀌지 않아야 하기 때문」 // → 기준은 **섬**. 아래 기본값은 섬(FI) 카메라 실측값 그대로다.