fix(debug): Ctrl+Shift+E 치트에 체력 회복 추가 (체력+에너지 전체 회복)

원인: Ctrl+Shift+E의 CheatFillEnergy는 #75에서 energy-only로 만들어져
self.Energy만 채우고 self.PlayerHp는 전혀 건드리지 않았다(설계상 체력 미회복).
바인딩·발동은 정상(Ctrl+Shift+C 카드 picker와 동일 입력 메커니즘)이라
에너지는 차지만 체력은 회복된 적이 없었음 → "체력 회복 안됨".

수정: CheatFillEnergy에 self.PlayerHp = self.PlayerMaxHp 추가 + RenderCombat()
호출(HP 표시 갱신). 누르던 Ctrl+Shift+E 그대로 체력+에너지 전체 회복으로 확장.
토스트 "치트: 체력·에너지 회복", README 디버그 단축키 표기도 갱신.

산출물 재생성: SlayDeckController.codeblock. 검증: cbgap GAP 0, JS 41/41.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-18 01:56:30 +09:00
parent 4fa0bc85c0
commit bdea6a8c28
3 changed files with 5 additions and 3 deletions

View File

@@ -164,7 +164,7 @@ c:AdjustAscension(1) -- 메뉴에서 승천 단계 +1
| 단축키 | 기능 | | 단축키 | 기능 |
|---|---| |---|---|
| **Ctrl + Shift + C** | **카드 picker** — 직업 전체 카드 패널을 띄우고, 카드를 클릭하면 **즉시 손패에 추가**. 상단 탭(전사/도적/마법사)으로 직업별 카드 풀 전환. 카드 효과·메커니즘 즉석 테스트용 | | **Ctrl + Shift + C** | **카드 picker** — 직업 전체 카드 패널을 띄우고, 카드를 클릭하면 **즉시 손패에 추가**. 상단 탭(전사/도적/마법사)으로 직업별 카드 풀 전환. 카드 효과·메커니즘 즉석 테스트용 |
| **Ctrl + Shift + E** | **에너지 치트**현재 에너지를 최대치로 회복 | | **Ctrl + Shift + E** | **전체 회복 치트**체력·에너지를 최대치로 회복 |
> 카드 picker는 메이커 저작 UI `DeckUIGroup/DeckAllHud`(120 슬롯 그리드 + 직업 탭 3종)를 사용하고, 컨트롤러가 런타임에 카드 비주얼·버튼을 바인딩합니다. 구현: 키 바인딩 `tools/deck/cb/boot.mjs`, picker 로직 `tools/deck/cb/deckview.mjs`(`OpenDebugCardPicker`/`OnAllDeckCardButton`), 버튼 바인딩 `tools/deck/cb/deckturn.mjs`(`BindButtons`). 옛 picker UI 생성기 `tools/deck/legacy/hud/deckall.mjs`는 UI 메이커-저작 전환 후 **휴면**(Maker UI가 대체). > 카드 picker는 메이커 저작 UI `DeckUIGroup/DeckAllHud`(120 슬롯 그리드 + 직업 탭 3종)를 사용하고, 컨트롤러가 런타임에 카드 비주얼·버튼을 바인딩합니다. 구현: 키 바인딩 `tools/deck/cb/boot.mjs`, picker 로직 `tools/deck/cb/deckview.mjs`(`OpenDebugCardPicker`/`OnAllDeckCardButton`), 버튼 바인딩 `tools/deck/cb/deckturn.mjs`(`BindButtons`). 옛 picker UI 생성기 `tools/deck/legacy/hud/deckall.mjs`는 UI 메이커-저작 전환 후 **휴면**(Maker UI가 대체).

View File

@@ -811,7 +811,7 @@
"Name": null "Name": null
}, },
"Arguments": [], "Arguments": [],
"Code": "if self.RunActive ~= true or self.CombatOver == true then\n\treturn\nend\nself.Energy = self.MaxEnergy\nself:RenderPiles()\nself:Toast(\"치트: 에너지 회복\")", "Code": "if self.RunActive ~= true or self.CombatOver == true then\n\treturn\nend\nself.PlayerHp = self.PlayerMaxHp\nself.Energy = self.MaxEnergy\nself:RenderCombat()\nself:RenderPiles()\nself:Toast(\"치트: 체력·에너지 회복\")",
"Scope": 2, "Scope": 2,
"ExecSpace": 6, "ExecSpace": 6,
"Attributes": [], "Attributes": [],

View File

@@ -56,9 +56,11 @@ end)`),
method('CheatFillEnergy', `if self.RunActive ~= true or self.CombatOver == true then method('CheatFillEnergy', `if self.RunActive ~= true or self.CombatOver == true then
return return
end end
self.PlayerHp = self.PlayerMaxHp
self.Energy = self.MaxEnergy self.Energy = self.MaxEnergy
self:RenderCombat()
self:RenderPiles() self:RenderPiles()
self:Toast("치트: 에너지 회복")`), self:Toast("치트: 체력·에너지 회복")`),
method('ReqLoadAscension', `local ds = _DataStorageService:GetUserDataStorage(userId) method('ReqLoadAscension', `local ds = _DataStorageService:GetUserDataStorage(userId)
local errCode, value = ds:GetAndWait("ascensionUnlocked") local errCode, value = ds:GetAndWait("ascensionUnlocked")
local n = 0 local n = 0