95d6155086
Refine rogue progression and card pools
2026-06-29 23:34:19 +09:00
b4a4560678
Merge pull request 'fix: 버리기-뽑기 카드 미선언 prop 추가 (no such field 크래시)' ( #95 ) from fix/discard-draw-props into main
2026-06-29 17:51:50 +09:00
1e0b91294a
Merge pull request 'refactor: SlayDeckController 관심사별 모듈 분리 + 코드 규칙 3종' ( #94 ) from refactor/cb-concern-modules into main
2026-06-29 17:39:18 +09:00
8f8f17bd8f
fix(deck): 버리기-뽑기 카드의 미선언 prop 추가 (no such field 크래시)
...
`DiscardPostDraw`·`DiscardDrawPerPick`가 hand.mjs(BeginDiscardSelection·
AutoDiscardHand·FinishDiscardSelection·SelectDiscardSlot)에서 대입되는데
gen-slaydeck.mjs prop 목록에 선언되지 않아 런타임 "cannot set DiscardPostDraw,
no such field"로 BeginDiscardSelection이 중단됨. 그 직전 DiscardSelectRemaining/
Total이 이미 set되어 게임이 버리기-선택 모드에 갇혀, 이후 모든 카드(공중제비 포함)
클릭이 버리기 픽으로 처리됨("2장 버린다 표시 + 동작 없음").
근본 원인: 형제 prop DiscardPostShiv·DiscardShivPerPick는 선언됐으나
draw 변형 2개가 누락. 선언만 추가(병렬 패턴).
신규 가드 tools/verify/cbprops.mjs: cb의 `self.X =` 대입 ↔ 선언 prop 대조,
미선언 = no such field 후보 검출. 수정 전 2개 누락→후 0.
검증: cbprops 0·cbgap GAP 0·테스트 93/93. 산출물(codeblock) 재생성 포함.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-27 02:44:06 +09:00
478fd1e5f0
docs(rules): PR 머지 후 브랜치 삭제·변수명·관심사 모듈화 규칙 추가
...
RULES.md 규칙 3종:
- §1: codeblock 메서드를 관심사별 모듈로(화면전환=screens·NPC=npc·
포지션=navigation/layout). 17→20종. 새 메서드는 알맞은 모듈에.
- §4: PR 머지 후 머지된 feature/docs 브랜치 로컬·원격 삭제
(merge-base --is-ancestor로 확인, 미머지·codex/* 보존).
- §8 신규: cb Lua 지역변수는 의미명(e→entity 등), 반복 인덱스만 단일문자 허용.
설계 문서 docs/superpowers/specs/2026-06-26-cb-concern-modules-design.md 추가.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 18:40:53 +09:00
0c1dfd3162
refactor(cb): 분리 모듈 단일문자 지역변수 의미명으로 개명
...
손댄 모듈(screens·navigation·layout)의 단일문자 Lua 지역변수를
의미가 드러나는 이름으로 변경(규칙 시연):
- ActivateUIGroups: grp/n/g → enableGroup/name/group
- RenderSoulLabel: s → soulPoints
- BindLobbyButtons: e/fn → entity/handler
- GoLobbyMap: lp/go → localPlayer/tryTeleport
- TeleportToActMap: lp → localPlayer
- PositionMonsterSlot: m/tr/wp/e → monster/transform/worldPos/slotEntity
검증: cbset = 위 6개 메서드만 본문 변경(추가/삭제 0), cbgap GAP 0, 테스트 93/93.
산출물 재생성(SlayDeckController.codeblock) 포함.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 18:39:39 +09:00
8d2e320d60
refactor(cb): 컨트롤러 횡단 관심사 모듈 분리 (이동·본문 무변경)
...
화면 전환·NPC·포지션 관심사를 state.mjs/render.mjs/runend.mjs에서
전용 모듈로 분리. 런타임은 단일 SlayDeckController codeblock 유지.
- state.mjs → screens.mjs 개명 (화면 라우팅·버튼 바인딩)
- npc.mjs 신규: OnLobbyNpcInteract
- navigation.mjs 신규: GoLobbyMap·TeleportToActMap (월드 텔레포트)
- layout.mjs 신규: PositionMonsterSlot (UI 슬롯 배치)
- gen-slaydeck.mjs import·spread 갱신
검증: tools/verify/cbset.mjs (순서 무관 집합 비교) = 189/189 무손실,
본문/exec/params 변경 0. cbgap GAP 0, 테스트 93/93.
산출물 재생성(SlayDeckController.codeblock) 포함 — 메서드 순서만 바뀜.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-26 18:35:51 +09:00
7b5e79bcf2
Merge pull request 'Add Excel roundtrip for cards data' ( #93 ) from codex/cards-excel-json into main
...
Reviewed-on: #93
2026-06-24 21:55:35 +09:00
39356e5038
Add cards Excel roundtrip tools
2026-06-24 21:52:24 +09:00
4878e5d8cc
Merge pull request 'fix: 교활 카드 초기 필드 선언 추가' ( #92 ) from codex/fix-skill-sly-fields into main
...
Reviewed-on: #92
2026-06-23 23:30:40 +09:00
5f047ae41b
Revert "fix: 전투 데미지 팝업 순서 복구"
...
This reverts commit d83a377865 .
2026-06-23 22:55:42 +09:00
d83a377865
fix: 전투 데미지 팝업 순서 복구
2026-06-23 22:00:20 +09:00
8292e26726
fix: 보상 스크린 상태 추가
2026-06-23 21:56:33 +09:00
07ae56909a
fix: 쉬브 첫 피해 보너스 상태 추가
2026-06-23 21:47:49 +09:00
f33018194f
fix: 교활 카드 초기 필드 추가
2026-06-23 21:40:17 +09:00
a682baa5dc
Merge pull request 'fix: 스킬 반복 필드 중복 정리' ( #91 ) from codex/fix-skill-repeat-fields into main
...
Reviewed-on: #91
2026-06-23 21:38:10 +09:00
6d0ebde863
fix: 스킬 반복 필드 정리
2026-06-23 21:36:27 +09:00
4ce87bec5d
fix: 전투 드로우 필드 선언 추가
2026-06-23 21:28:15 +09:00
0cf714dca6
fix: 카드 호버 nil 가드 추가
2026-06-23 21:24:34 +09:00
fd00ed12d9
Merge pull request 'docs(readme): 도적 카드 공용 효과 항목 추가 + 테스트 수 갱신' ( #90 ) from docs/readme-bandit-effects into main
2026-06-23 11:24:50 +09:00
74a2106021
docs(readme): 도적 카드 공용 효과 항목 추가 + 테스트 수 갱신
...
구현 기능 표에 "도적 카드 공용 효과" 행 추가 — 카드명 하드코딩 대신
data/cards.json 공용 필드로 효과 표현(불가침·x-cost·드로우 비례·다음 스킬
반복·처치 보상·키워드 하이라이트·독 버스트 등), Lua+JS 미러 양쪽 구현,
필드 사전 docs/card-effect-fields.md. 밸런스 시뮬 단위테스트 현 84종 명시.
(codex PRs #82~#89로 main 반영된 내용 README 동기화)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-23 11:24:03 +09:00
a2044e20af
Merge pull request 'feat: 도적 공용 카드 효과 구현' ( #89 ) from codex/bandit-shared-effects into main
...
Reviewed-on: #89
2026-06-22 22:18:15 +09:00
a3d5174b34
feat: 도적 공용 효과 정리
2026-06-22 21:59:28 +09:00
4f9be00ff2
Merge pull request '도적 카드 공통 효과 훅 정리' ( #88 ) from codex/bandit-shared-hooks-pr into main
2026-06-22 17:50:37 +09:00
24a79a309f
Add shared bandit effect hooks
2026-06-22 16:08:05 +09:00
ba450f16b0
Merge codex/bandit-intangible-pr
2026-06-21 21:16:28 +09:00
278007f908
도적 다음 스킬 반복 효과 추가
2026-06-21 17:55:25 +09:00
16ebf304a5
사냥 처치 보상 추가
2026-06-21 15:43:47 +09:00
5b7f7bb69f
도적 불가침 기능 추가
2026-06-21 15:28:27 +09:00
34531b184f
도적 카드 공용 효과 추가
2026-06-19 21:59:49 +09:00
f6650a6c70
Merge pull request '도적 카드 공용 효과 추가' ( #84 ) from codex/bandit-effect-pack into main
2026-06-19 03:06:03 +09:00
acf295d56c
도적 카드 공용 효과 추가
2026-06-19 02:57:11 +09:00
9278c47901
Merge pull request '카드 설명 키워드 하이라이트와 드로우 연동 공용 효과 추가' ( #83 ) from codex/bandit-effect-pack into main
2026-06-19 01:53:02 +09:00
b2bf1bf4dd
카드 설명 키워드 하이라이트 추가
2026-06-19 01:51:36 +09:00
5da6e8f3aa
Merge pull request '밴딧 카드 공용 효과 확장 및 문서 정리' ( #82 ) from codex/bandit-effect-pack into main
2026-06-19 01:36:57 +09:00
71435a2c91
밴딧 카드 공용 효과 확장
2026-06-19 01:26:15 +09:00
f64e35668d
Merge origin/main into main
2026-06-19 00:58:31 +09:00
ba1651e52c
밴딧 공용 효과와 문서 정리
2026-06-19 00:56:08 +09:00
f8414a9c33
Merge pull request 'docs(readme): 현황 동기화 — 적 18종·카드 121장·로비 직행·캐릭터 선택 UI 반영' ( #80 ) from docs/sync-readme-memory into main
2026-06-18 10:04:39 +09:00
6344685052
docs(readme): 현황 동기화 — 적 18종·카드 121장·로비 직행·캐릭터 선택 UI 반영
...
지금까지 main 머지분(#76~#79)을 README에 반영하고 stale 수치/문구 정리:
- 적 12종 → 18종, 카드 122장 → 121장(도적 86), Silent 88 → 86
- 구현 PR 범위 #34~#57 → #34~#79
- 게임 시작 시 MainMenu 없이 로비 직행(MainMenu 추후 재지정) 명시
- 캐릭터 선택: 초상화·직업 설명·선택 테두리 강조 UI 반영
- 향후 계획: 로비 직행·캐릭터 선택 UI·디버그 치트·map01 로스터 [x],
도적 카드 아이콘 완료 반영(TODO는 카드명 재서사·한글화로 정정)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-18 10:04:05 +09:00
b0f1a0840c
Merge pull request 'feat(charselect): 캐릭터 선택 UI 배선 — 초상화·흰 테두리·직업 정보·Art 클리핑' ( #79 ) from feature/charselect-wire into main
2026-06-18 09:57:03 +09:00
c703bd9b4d
feat(charselect): 캐릭터 선택 UI 동작 배선 (초상화·흰 테두리·직업 정보·Art 클리핑)
...
사용자가 메이커에서 재구성한 CharacterSelectHud(SelectedClass/Eng/Status·
SelectedCharacterArt 신설, ThiefButton→BanditButton 개명)에 컨트롤러 연결.
RenderCharacterSelect:
- 버튼 클릭 시 해당 버튼 하위 Art의 ImageRUID를 SelectedCharacterArt로 복사(큰 그림)
- 선택 버튼 테두리 흰색(1,1,1,1)·비선택 디밍
- SelectedClass(한글)·SelectedClassEng(Warrior/Thief/Magician)·SelectedClassStatus
("직업군 · 모험가" + 설명) 갱신. 개행은 string.char(10) 연결(Lua 문자열 raw 개행 문법오류 회피)
- 각 Button에 MaskComponent(기본 Shape Rect) 런타임 부착 → Art를 Button 영역으로
클리핑(Art 크기 불변, 넘치는 부분 숨김)
경로 교정: BindMenuButtons ThiefButton→BanditButton, StartNewGame Status→SelectedClassStatus.
UI(메이커 저작): CharacterSelectHud 재구성 + MageButton/BanditButton Art 위치 미세조정,
char-select 배경 에셋 01_blue_background_clean(sprite ac448e…) 추가.
산출물 재생성: SlayDeckController.codeblock + common.gamelogic.
검증: cbgap GAP 0, JS 미러 41/41, 인게임(초상화·테두리·텍스트·Art 클리핑) 확인.
(map01·타 UIGroup의 메이커 재직렬화 churn은 revert.)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-18 09:56:19 +09:00
96102dc41f
Merge pull request 'feat(boot): 시작 시 MainMenu 대신 로비로 바로 진입 (MainMenu 일시 비활성)' ( #78 ) from feature/boot-to-lobby into main
2026-06-18 02:14:55 +09:00
8702d5209e
feat(boot): 시작 시 MainMenu 대신 로비로 바로 진입 (MainMenu 일시 비활성)
...
OnBeginPlay에서 UI 로드 후 self:ShowMainMenu() 대신 self:ShowLobby() 호출.
게임 시작하면 MainMenu를 거치지 않고 곧장 로비 맵(LobbyUIGroup)으로 진입한다.
ShowState("lobby")가 MainMenu를 숨기므로 메뉴는 표시되지 않음.
MainMenu는 한동안 비활성이지만 ShowMainMenu 메서드·BindMenuButtons·
DefaultGroup/MainMenu UI는 그대로 유지 — 추후 싱글/멀티/게임 종료 선택
메뉴가 필요할 때 OnBeginPlay를 self:ShowMainMenu()로 되돌리면 복구된다.
산출물 재생성: SlayDeckController.codeblock. 검증: cbgap GAP 0, JS 41/41.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-18 02:08:08 +09:00
74d4824a1c
Merge pull request 'fix(debug): Ctrl+Shift+E 치트 체력 회복 추가 (체력+에너지 전체 회복)' ( #77 ) from fix/debug-cheat-hp-restore into main
2026-06-18 01:58:51 +09:00
bdea6a8c28
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 >
2026-06-18 01:56:30 +09:00
4fa0bc85c0
Merge pull request 'fix: map01 신규 몬스터 6종 등록 — 랜덤 행동 복구' ( #76 ) from fix/map01-monster-roster into main
2026-06-18 01:44:10 +09:00
db76870d4e
fix(deck): 카드 picker 표시·클릭 복구 + UIGroup 렌더 순서/덱 레이아웃 조정
...
덱창(카드 picker)의 카드가 표시·클릭되지 않던 두 버그를 근본 수정.
표시 버그: 덱뷰 render(RenderAllDeck/RenderClassDeckTabs/RenderDeckInspect)가
비-DefaultGroup(DeckUIGroup) 카드를 직접 e.Enable로 켰는데, 깊게 중첩된
ExecSpace 6 호출이라 .Enable 토글이 스코프 상실로 무효(문서화된 afac34d 버그).
Maker 저작 DeckAllHud 카드는 기본 enable=false라 안 보였음. → SetEntityEnabled
(ExecSpace 2 ClientOnly, 인라인 실행) 경유로 변경(전투 HUD와 동일 패턴).
클릭 버그: Maker 저작 DeckAllHud 카드 120장의 SpriteGUIRendererComponent.
RaycastTarget=false라 클릭 레이를 못 받아 런타임 부착 ButtonComponent에 클릭이
도달 못함(같은 패널 탭/Close는 raycast=true라 정상이던 게 결정적 단서). →
BindButtons 카드 루프에서 RaycastTarget=true 런타임 주입.
README: 디버그 단축키 섹션 추가(Ctrl+Shift+C 카드 picker / Ctrl+Shift+E 에너지).
Maker UI 저작(메이커 편집분 동반): 6개 UIGroup GroupOrder 재배치
(DeckUIGroup 최상단 4→6 등) + DeckUIGroup 카드 그리드 위치 조정(180장).
산출물 재생성: SlayDeckController.codeblock.
검증: cbgap GAP 0, JS 미러 41/41, 인게임 클릭 동작 확인.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-18 01:33:26 +09:00
491833b025
Merge remote-tracking branch 'origin/main' into feature/maker-ui-edit
2026-06-17 23:26:20 +09:00
83de73c2c1
fix(combat): map01 신규 몬스터 6종 enemies.json 등록 — 랜덤 행동 복구
...
메이커 저작(964cf7c )에서 map01에 수작업 배치한 몬스터
octopus·kapa_drake·junior_neki·junior_bugi(combat) / dile·mano(elite)의
EnemyId가 enemies.json에 미등록 상태였다. 전투 시 BuildMonsters가
self.Enemies[id]=nil → fallback {maxHp=10, intents={{Attack,5}}}(단일 intent)
으로 떨어져, EnemyActStep의 math.random(1,#intents)가 random(1,1)이 되어
항상 "공격 5"만 반복 → 행동 랜덤화 불가·이름 raw id·HP 10 고정.
수정: 6종을 기존 티어 밸런스(combat HP15~24/elite HP65~80, 다중 intent)에
맞춰 enemies.json에 등록하고 SlayDeckController.codeblock 재생성(산출물).
맵은 이미 해당 id를 참조하므로 맵 재생성 불필요(수작업 배치 유지).
검증: 전 맵 EnemyId 매핑 OK 33/MISSING 0, JS 미러 테스트 41/41.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 23:14:14 +09:00