5b41eb78a4
feat(node-map): MapHud 배경 이미지+오버레이, 노드 아이콘화(라벨 제거·확대), RenderMapNode ImageRUID+상태 틴트
...
타입별 공식 아이콘(주황버섯/골렘/발록/돈주머니/모닥불/상자) + 리스항구 배경. 절차 배치·간선·바인딩 불변.
2026-06-15 14:26:28 +09:00
3902c9b1ee
feat(node-map): nodeicons.json 외부화 + 생성기 로드·검증·NodeIcons 직렬화
2026-06-15 14:22:32 +09:00
9cb5e1abff
feat(lobby): 로비 카메라를 플레이어 추종(follow)으로 — 전투맵은 고정 유지
...
로비 루트에서 script.MapCamera 제거(고정 framing 억제 해제) + LobbyMobility가 진입 시
ConfineCameraArea=false·ScreenOffset(0.5,0.5)·Zoom 90으로 플레이어 추종 카메라 설정.
MSW 카메라는 기본 follow이고 ConfineCameraArea=true가 그걸 억제하므로 false가 핵심.
검증: 로비 우측 이동 시 플레이어 중앙 유지+배경 스크롤, 런 시작→map01 Confine=true 고정, 복귀→follow 복원(누설 없음).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-15 08:05:22 +09:00
e269154d17
feat(combat): render monster damage popups with digit skins
2026-06-15 01:10:20 +09:00
b65d4af1eb
fix(ui): show target marker only while dragging
2026-06-15 00:51:50 +09:00
d5318ac86b
feat(ui): style monster damage numbers
2026-06-15 00:50:17 +09:00
bd91c67483
feat(ui): add prominent target marker
2026-06-15 00:47:24 +09:00
b43ee02014
feat(cards): implement retain keyword
2026-06-15 00:45:11 +09:00
6427d23f50
feat(cards): highlight drag target monster
2026-06-15 00:42:40 +09:00
b40c8d11d8
fix(combat): clear temporary curse cards after combat
2026-06-15 00:37:57 +09:00
f9e7bc3603
fix(cards): support large hand drag positions
2026-06-15 00:29:48 +09:00
256433d3f3
feat(bandit): add discard card selection
2026-06-15 00:14:08 +09:00
05a06644cf
feat(bandit): implement sly discard trigger
2026-06-15 00:06:53 +09:00
709e6f8f99
fix(ui): 카드 텍스트 그림자 제거
2026-06-14 21:26:51 +09:00
a88c1d344c
fix(ui): 카드 텍스트 가독성 개선
2026-06-14 21:23:52 +09:00
3db11f5d82
fix(ui): 전체덱 보기를 직업 탭으로 제한
2026-06-14 20:46:56 +09:00
304b2f3c2a
fix(ui): 덱 미리보기에 직업 탭 추가
2026-06-14 19:38:43 +09:00
15bc17b351
feat(ui): 직업별 덱 미리보기 추가
2026-06-14 19:27:40 +09:00
6f436ef3eb
fix(bandit): 도적 덱을 사일런트 전용으로 정리
2026-06-14 18:48:15 +09:00
1e87be2cd6
merge main into bandit silent deck
2026-06-14 17:48:59 +09:00
760b856576
fix(lobby): 로비 이동·점프를 기본값으로 — InputSpeed 5→1.4, JumpForce 5→1.23 (P15)
...
기존 5/5는 보행 ~9u/s·점프 상승 14u로 과함. freeze가 안 건드린 intact RigidbodyComponent.WalkSpeed(1.4)/WalkJump(1.23) 기본값에 맞춤. 실측: 보행 2.5u/s, 점프 상승 1.79u로 정상화.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-14 13:02:30 +09:00
989e3fe000
fix(lobby): 플레이테스트 — 이동 복원에 InputSpeed 필수 + FixedLookAt int 타입 (P15)
...
메이커 실측으로 확인:
- 이동에는 RigidbodyComponent.WalkAcceleration과 MovementComponent.InputSpeed가 둘 다 양수여야 함(WalkAccel만으론 안 걸림). LobbyMobility에 InputSpeed=5·JumpForce=5 추가.
- pc.FixedLookAt은 boolean이 아니라 int32 → false→0 (빌드 에러 해소).
- PlayerLock에 InputSpeed/JumpForce=0 대칭 재잠금 추가(전투맵 누설 방어).
- NPC 베이스 모델 inheritance 경고는 비치명적이라 proven-good(모델 유지) 결정 주석화.
검증: 로비 이동·점프, NpcCodex 근접(d=1.10<1.2)·↑키→카드 도감, 런 시작→map01 텔레포트+이동 잠금(InputSpeed=0), 로비 복귀→이동 재해제 전부 정상.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-14 12:50:51 +09:00
0e064cc1e9
feat(lobby): 로비 맵 흐름 통합 — 텔레포트·NPC 디스패치·StartRun map01·LobbyHud 슬림화 (P15)
...
- OnBeginPlay: 공격 키(Ctrl, 로비 한정) 바인딩
- ShowLobby→GoLobbyMap: 월드 시작·런 종료 시 로비 맵 텔레포트
- OnLobbyNpcInteract(id): 월드 NPC→기존 기능 패널 디스패치
- StartRun: 1막 진입 시 map01 물리 텔레포트(BuildMonsters CurrentMapName 필터 대응)
- LobbyHud: 버튼-행 제거, 투명·비레이캐스트화(맵 노출·클릭 통과), 영혼/승천 미니 정보바만 유지
- BindLobbyButtons: NPC 바인딩 제거
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-14 12:36:13 +09:00
de1e69de7d
fix(lobby): 전투맵 PlayerLock에 WalkAcceleration=0 런타임 재잠금 (P15)
...
로비에서 푼 이동(WalkAcceleration)이 텔레포트 후 전투맵에 누설돼도 PlayerLock이 맵 로드 시 0으로 재설정해 확실히 잠금. 정찰로 WalkAcceleration이 실제 이동 레버임을 확인.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-14 12:31:50 +09:00
a683f186d4
feat(lobby): LobbyNpc(근접·클릭 상호작용)·LobbyMobility(이동 해제) codeblock (P15)
...
LobbyNpc: 거리 폴링→머리위 마크 토글, TouchEvent/UpArrow→Interact→컨트롤러 OnLobbyNpcInteract. LobbyMobility: 진입 시 pc.Enable·WalkAcceleration=0.7 복원(정찰 확정). 공격 키는 컨트롤러에서 처리.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-14 12:29:44 +09:00
a309da2a99
feat(lobby): 로비 전용 맵 + NPC 4종 월드 엔티티 생성기 (P15)
...
map01 클론→lobby.map(헤네시스 배경), 몬스터 제거, NPC 4종(공식 메이플 NPC 스프라이트)+머리위 마크 배치. 각 NPC에 TouchReceiveComponent+script.LobbyNpc, 루트에 script.LobbyMobility(PlayerLock 제거). SectorConfig map://lobby 등록.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-14 12:27:44 +09:00
1f0a8099ee
fix(ui): 카드 효과 드로우 애니메이션 적용
...
- DrawCards에 animate 인자를 추가해 새로 뽑힌 손패 슬롯만 덱 위치에서 손패 위치로 이동하도록 처리
- 카드 효과의 draw 호출은 animate=true로 실행해 즉시 생성되는 느낌을 제거
- 턴 시작 드로우와 유물 드로우는 기존 렌더 흐름을 유지
- SlayDeckController.codeblock 산출물을 생성기로 재생성
검증:
- node --check tools/deck/gen-slaydeck.mjs
- node --test tools/balance/sim-balance.test.mjs tools/map/rogue-map.test.mjs
2026-06-14 02:59:34 +09:00
a5f6a4509d
fix(ui): 카드 드래그 중 hover 보간 중단
...
- hover 확대 보간 타이머 ID를 추적해 새 hover 또는 드래그 시작 시 기존 타이머를 종료
- 손패 카드 드래그 시작 시 모든 손패 카드의 scale과 위치를 기본값으로 즉시 정리
- 드래그 중 손패 hover enter/exit 처리를 무시해 드래그 위치와 hover 보간이 충돌하지 않도록 수정
- 드래그 종료 시 드래그 카드 scale을 1.0으로 복귀
검증:
- node --check tools/deck/gen-slaydeck.mjs
- node --test tools/balance/sim-balance.test.mjs tools/map/rogue-map.test.mjs
2026-06-14 02:55:38 +09:00
d3ae6c1c62
feat(ui): 카드 hover 보간 확대 적용
...
- hover된 손패/보상/상점 카드를 1.5배까지 SineEaseOut 보간으로 확대
- 같은 줄의 다른 카드는 hover 카드 기준 좌우로 110px 밀어 겹침을 줄임
- hover 해제 시 같은 보간으로 scale 1.0 및 기본 위치로 복귀
- SlayDeckController.codeblock 산출물을 생성기로 재생성
검증:
- node --check tools/deck/gen-slaydeck.mjs
- node --test tools/balance/sim-balance.test.mjs tools/map/rogue-map.test.mjs
2026-06-14 02:50:47 +09:00
4d3f6fc0af
feat(ui): 카드 hover 확대 추가
...
- 손패 카드에 마우스 진입/이탈 이벤트를 연결해 hover 시 1.12배로 확대
- 보상 카드와 상점 카드에도 UITouchReceiveComponent를 추가하고 같은 hover 확대 동작 적용
- ApplyCardFace에서 카드 렌더 시 UIScale을 기본값으로 리셋해 재사용 카드가 확대 상태로 남지 않도록 처리
- 생성기 변경 후 ui/DefaultGroup.ui와 SlayDeckController.codeblock 산출물 재생성
검증:
- node --check tools/deck/gen-slaydeck.mjs
- node --test tools/balance/sim-balance.test.mjs tools/map/rogue-map.test.mjs
- SetCardHover/UITouchEnterEvent/UITouchReceiveComponent 산출물 카운트 확인
2026-06-14 02:42:11 +09:00
a2b8d6bfb9
feat(bandit): 사일런트 도적 덱 추가
...
- 도적 시작 직업을 선택 화면에서 활성화하고 bandit 스타터 덱으로 런을 시작하도록 생성기를 연결
- Slay the Spire 사일런트 카드 75장을 bandit 카드 풀에 추가하고 카드명/설명을 한글화
- 현재 전투 엔진이 지원하는 피해, 방어도, 드로우, 독, 약화, 취약, 광역, 다단히트, 회복, 파워 효과로 카드 효과를 매핑
- 도적 스타터 덱을 타격 5장, 수비 5장, 무력화, 생존자로 구성
- bandit 및 도적 전직 계열(shiv, poisoner, trickster)을 카드 프레임 매핑에 연결
- ui/DefaultGroup.ui와 SlayDeckController.codeblock을 생성기로 재생성
검증:
- node --check tools/deck/gen-slaydeck.mjs
- node --test tools/balance/sim-balance.test.mjs tools/map/rogue-map.test.mjs
- 도적 카드 75장 및 한글화 잔여 영어/깨짐 없음 확인
2026-06-14 02:37:14 +09:00
5f89d61a8b
fix(lobby): 로비 카드 도감용 Cards/Frames 테이블을 OnBeginPlay에 시드
...
- ShowCodex가 self.Cards를 순회하는데 런 시작 전(로비)엔 미설정이라 pairs(nil) 오류
→ OnBeginPlay에서 luaCardsTable/luaFramesTable을 미리 주입(StartRun과 중복 무해)
- 메이커 플레이테스트로 로비·도감·가로맵·전투(도적/메소아이콘/스킬아이콘) 전 루프 검증
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-14 01:28:56 +09:00
8879647b26
feat(soul): 영혼 메타 성장 시스템 (P14-9)
...
- 2차 전직 상태로 맵 보스 클리어 시 영혼 +1 적립(CheckCombatEnd 보스 분기 AwardSouls)
- UserDataStorage 영속 RPC: ReqLoadSouls/RecvSouls/SaveSouls(ExecSpace 5/6, 승천 패턴 복제)
· key soulPoints(수치)·soulUnlocks(해금 set, 콤마 직렬화). OnBeginPlay에서 로드
- 로비 영혼 상점(SoulShopHud) 4종 해금: 두둑한 지갑(시작 메소+60)·단련된 육체(시작HP+15)
·덱 정제(기본카드 1장 제거)·유물 수집가(시작 유물+1). BuySoulUnlock 구매·영속 저장
- ApplySoulUnlocks가 StartRun에서 해금 효과 적용 → 덱빌딩 이점. 승천(패널티)과 분리 공존
- 산출물 재생성(id 유일성·JSON 검증 통과)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-14 01:23:00 +09:00
7ee323ea8b
feat(lobby): 로비 허브 + NPC 4종 + 반복 런 루프 (P14-8)
...
- LobbyHud: 메이플 로비 화면. NPC 4종 클릭 — 모험가(런 시작)·사서(카드 도감)·
상인(영혼 상점)·안내원(게시판) + 승천 +/- + 영혼 수치 표시
- ShowState "lobby" 추가, OnBeginPlay·EndRun → ShowLobby (첫 실행/패배/클리어 모두
로비 기점, 반복 런 루프). ShowLobby가 BindMenuButtons도 호출(전직 버튼 바인딩 보존)
- 카드 도감: DeckAllHud 재사용(CodexMode) — 저주 제외 전 카드 표시, 닫으면 로비 복귀
- 게시판(BoardHud): 게임 규칙/팁 패널. 영혼 상점(SoulShopHud): 셸(P9에서 해금 채움)
- guid 네임스페이스 lob/brd/soul 추가(id 충돌 방지). 산출물 재생성(id 유일성 검증 통과)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-14 01:16:56 +09:00
7cc311ee91
feat(economy): 메소 표기 완성 + 메소 코인 아이콘 추가 (P14-7)
...
- relics.json goldIdol 설명 "골드"→"메소" (유일하게 남았던 표면 잔존 정정)
- CombatHud TopBar·ShopHud 메소 금액 옆에 금색 코인 아이콘 스프라이트 추가
(공식 RUID 흰박스 리스크 회피 위해 색상 채움 스프라이트 사용)
- 내부 식별자 self.Gold 등은 산출물 id 안정성 위해 유지. 산출물 재생성
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-14 01:06:59 +09:00
5cde11647f
feat(card-ux): 손패 최대 10장·초과 자동버림 + 마우스오버 확대/툴팁 (P14-6)
...
- 손패 슬롯 5→10 확장(Card6~10 신규 생성), RenderHand 장수 비례 동적 간격 배치
- DrawCards 손패 10장 상한 — 초과 드로는 버린 더미로 자동 이동(StS식, sim 미러)
- 카드 마우스오버: UITouchEnter→UIScale 1.3배 확대 + ShowTooltip(이름/설명),
Exit→복원+숨김. 드래그 중(DragSlot) 확대 억제. RenderHand가 UIScale 리셋
- HoverCard/UnhoverCard 메서드 신설. sim 35/35 통과. 산출물 재생성
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-14 01:04:24 +09:00
8296775e21
feat(cards): 실제 메이플 스킬 아이콘 적용 + 피격 이펙트(fx) 분리 (P14-5)
...
- 카드 아트(image)를 경로 검증된 실제 스킬 아이콘 RUID로 교체(28종)
· mapleImgFullPath의 /icon 경로 확인으로 스킬 아이콘 보장(기존엔 이펙트 프레임·맵
오브젝트가 섞여 있었음)
- 피격 이펙트(fx) 필드 신설(18종) — 스킬 effect/hit 프레임 RUID
· PlayCard가 PlayAttackFx/PlayAoeFx에 c.fx or c.image 전달(이펙트 분리, 없으면 폴백)
· luaCardsTable fx 직렬화. MSW asset 메타데이터 경로 검증으로 수급(워크플로 6에이전트)
- 아이콘 미발견 카드는 기존 RUID 유지. sim 35/35 통과. 산출물 재생성
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-14 00:57:24 +09:00
d546d62755
feat(thief): 도적 클래스 + 2차 전직(어쌔신/시프) 추가 (P14-4)
...
- CLASSES.thief(maxHp 75), JOBS.thief = [어쌔신(CriticalThrow), 시프(SavageBlow)]
- 카드 11종: 도적1차(럭키세븐/더블스탭/다크사이트/헤이스트/드레인)
· 어쌔신(크리티컬스로우/쉐도우스타/클로마스터리)
· 시프(새비지블로우/스틸/메소가드), starterDecks.thief 추가
- cardframes classToFrame: thief/assassin/bandit → bandit 프레임(기존 RUID 재사용)
- CharacterSelectHud Thief 해금, BindMenuButtons ThiefButton, RenderCharacterSelect·
StartNewGame·StartRun·JobLabel 도적 분기. 전사/법사 2차는 기존 완비 확인
- 산출물 재생성(생성기 검증 통과)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-14 00:38:52 +09:00
8f58a90746
feat(combat): 몬스터 랜덤 구성·랜덤 행동·덱 오염(AddCard)·map01 로스터 (P14-3)
...
- 구성 랜덤화: BuildMonsters를 그룹별 수집 후 노드 타입별 추첨
(일반 1~3 / 엘리트 1+일반0~2 / 보스 1, MAX_MONSTERS=4 내)
- 행동 랜덤화: EnemyActStep 순차(round-robin) → 정의된 intent 중 math.random 선택
(스폰 시 시작 intent도 랜덤, sim-balance.mjs 미러 동기화)
- StS2식 덱 오염: AddCard intent 신규 — 저주 카드(Wound/Burn)를 버린 더미에 추가
· Wound=사용불가 사석, Burn=사용불가+턴종료 피해2(EndPlayerTurn 처리)
· PlayCard unplayable 가드, CardPool class 필터로 보상/상점 자동 제외
· luaIntentsArray(card/count)·luaCardsTable(unplayable/curse/endTurnDamage) 직렬화
- map01 인카운터: 일반 5종(주황/초록/빨강달팽이/파랑/돼지) + 엘리트1 + 보스1, 우측 포메이션
· enemies.json red_snail/stump 신규, blue_mushroom/mushmom에 AddCard intent
· gen-map-encounters 레이아웃 맵별 분기 + 풀 인덱싱 일반화
- 막 배율 0.6→0.45(5막 기준 완화). sim 테스트 35/35 통과(신규 3 포함). 산출물 재생성
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-14 00:33:49 +09:00
8fa1079548
feat(map-ui): 노드 맵 가로 진행 레이아웃(왼→오른쪽) (P14-2)
...
- nodeX=행(좌→우)·nodeY=열(분기)로 좌표축 스왑, 보스는 최우측 중앙
- 호출부(노드/도트/보스 간선) 인자 스왑. Lua 무수정(좌표는 JS 빌더 전담)
- 도트 보간·간선·라벨 좌표 함수 파생이라 자동 추종. 산출물 재생성
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-14 00:14:24 +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
afe995a895
fix(card-frames): 프레임 슬롯 픽셀 실측 기반 레이아웃 정밀 보정 (이름→배너 중심·코스트→육각 중심·이름 폭 축소로 육각 겹침 제거)
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-13 04:01:08 +09:00
b2693be111
fix(card-frames): 카드 단위 엔티티 id v2 네임스페이스 발급 — 에디터에서 소실된 자식 엔티티 신규 생성 유도
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-13 00:01:25 +09:00
675616bf51
fix(card-frames): 엔티티 id↔path 매핑 보존 (구 stride 유지·중복 검증) — 메이커 refresh in-place 병합 꼬임 수정
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-12 23:56:40 +09:00
aaa68ebe07
feat(card-frames): 보상 등급 가중 추첨 70/25/5 (Lua + JS 미러 rarityForRoll·경계 테스트)
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-12 23:40:58 +09:00
35dfcbaffe
feat(card-frames): 생성기 — 프레임 렌더링·cardFaceLayout 통합 (5개 카드 사이트·단색판 제거)
...
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-12 23:39:27 +09:00
abd6d00052
feat(motion): 전투 모션 — 공격/피격/독뎀 (생성기+산출물)
...
- PlayerAttackMotion(StateComponent ATTACK→IDLE)·PlayerHitMotion(HIT+넉백 틱)
- MonsterLunge(공격 시 런지)·MonsterHitMotion(hit 클립 스왑→stand 복귀, 폴백 흔들림)
- BuildMonsters에 hit/stand 클립 pcall 캐시·motionBusy
- 훅: PlayCard·DealDamageToTarget·PlayAoeFx·독 틱·체인메일 반사·EnemyActStep
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-12 18:37:42 +09:00
7aed1943b7
fix(ascension): 메뉴 Asc 엔티티 guid 충돌 해소 (190→195~197)
...
CharacterSelectHud/OpaqueBackdrop이 menu:190 선점 — AscMinus 미표시 원인
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-12 14:24:36 +09:00
9989a61675
fix(ascension): RPC ExecSpace 실측 보정 — Server=5·Client=6 (프로브 검증)
...
- 1은 ServerOnly(클라 호출 무시)라 저장/로드 RPC 미동작 → 5로 수정
- RecvAscension 6(Client): 서버→특정 클라 userId 라우팅 실측 확인
- 설계 문서 ExecSpace 표 갱신, 프로브 메서드 제거
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-12 14:20:05 +09:00
2c28935d95
fix(ascension): UserId 접근을 PlayerComponent.UserId로 (빌드 경고 2건 해소)
...
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-12 14:11:48 +09:00