4d8fa0f40f
docs(rules): 카드 kind↔효과 규칙(§9)+검증도구 + codex 규칙 보강 (협업자 하네스 반영)
...
이번 세션에서 발견·수정한 하네스 학습을 저장소(공유 매개)에 반영해
협업자(codex 등)도 적용받게 한다. 메모리는 로컬이라 공유 안 됨.
- RULES.md §9 신설 (카드 kind ↔ 효과 일치): ResolveCardDrop 라우팅
(Attack=몬스터드롭/Skill·Power=스윕/Status=unplayable)·Power 분기가
damage/aoe 무시 → 데미지=Attack, block/유틸=Skill, 지속효과=Power.
안 맞으면 사용불가/死카드(아이언 바디·분노 사고).
- tools/verify/cardkinds.mjs 신설: kind↔효과 위반(Attack-무데미지/
Power-무효과/미지원 kind) 정적 검출(이상 0=exit 0). 현재 main 147장 0,
Defend=Attack·Rage=Power 위반은 2건 검출 확인.
- docs/codex-working-rules.md 6~9 추가: ⑥ main 머지 충돌 시 머지 전체
revert 금지(소스 충돌만 해소·산출물 재생성 — #98/#99가 #96 날린 사고)
⑦ 카드 kind 일치+cardkinds 검증 ⑧ 변경 후 검증 스위트 ⑨ RULES.md 권위.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01UUvHKjrt8jqLzDeCsRRGmj
2026-06-30 17:11:11 +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
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
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
c34a1126fb
chore(verify): UIGroup 매핑·재연결 GAP 검증 헬퍼 추가
...
- uimap.mjs: .ui별 섹션/엔티티 카운트 매핑 (deny 우회, 카운트만)
- cbgap.mjs: cb 참조 경로↔새 UIGroup 대조, GAP 분류
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-17 02:36:27 +09:00
d265c8f918
chore(verify): diffcheck에 비교 ref 인자 추가(기본 HEAD)
2026-06-16 07:32:20 +09:00
fcc103227c
refactor(gen): lib/data.mjs로 데이터·lua 테이블 추출 (출력 바이트 동일)
...
gen-slaydeck.mjs의 데이터 로드·검증·luaXxxTable·게임상수(라인 3~188)를
tools/deck/lib/data.mjs로 이동, import로 연결. 산출물 무변경(diffcheck로 검증).
+ tools/verify/diffcheck.mjs: 워킹트리 vs HEAD 줄바꿈 정규화 비교(deny 회피) 게이트.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-16 02:30:28 +09:00
9e16465218
feat(map): 맵 5막화·노드 depth 7·rest/shop/elite 연속 금지 (P14-1)
...
- ACT_COUNT/RUN_LENGTH 3→5, ACT_MAPS map01~map05 (반복 런 기반 확장)
- MAP_ROWS 7→6 (걷는 행 6 + 보스 = depth 최대 7), 막 배율 0.6→0.45 완화
- 노드 타입 인접 금지를 elite 단독 → rest/shop/elite 3종으로 일반화
(Lua GenerateMap + rogue-map.mjs JS 미러 동시 수정, 테스트 9/9 통과)
- 맵 파일 생성기 카운트 11→5, map06~map11 삭제, SectorConfig 정리(stale 제거)
- 산출물 재생성(ui/codeblock/map01~05). 검증 헬퍼 tools/verify/count.mjs 추가
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-14 00:13:16 +09:00