Commit Graph

69 Commits

Author SHA1 Message Date
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
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
b635cb3a63 feat(ascension): 승천 A1~A10·UserDataStorage 개인 저장·서버 RPC (생성기+산출물)
- ReqLoadAscension[Server]/RecvAscension[Client·특정 유저 응답]/SaveAscension[Server]
- ExecSpace 일괄 6 → 명시값 보존 (첫 서버-클라 RPC)
- 모디파이어: 적 HP/피해 ×1.1~1.2·정예 배율 +0.2/0.4·시작 HP -10/-20·메소 ×0.75/0.5
- 메인 메뉴 승천 [-]/라벨/[+], 클리어 시 해금+1·저장·'승천 N 해금!' 표시
- TopBar '· 승천N', 테스트 40건 유지

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 14:10:30 +09:00
fc0a96fcb7 fix(magician): Jobs prop 선언 누락 (빌드 경고 6건 해소)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 13:57:41 +09:00
e1d298f972 feat(magician): 캐릭터 선택 오픈·전직 화면 동적화 (생성기)
- Mage 버튼 활성·SelectClass(magician)·2클래스 하이라이트/가드
- JobSelectHud Job_slot1..3 범용화 + ShowJobSelect(클래스별 JOBS 채움)
- SetJob/JobLabel을 Jobs 테이블 기반으로 (luaJobsTable 주입, luaStr 개행 이스케이프)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 13:54:14 +09:00
811c8ec2ac feat(magician): 독 DoT·AoE·회복·드로 메커니즘 (생성기+시뮬 loadData)
- PlayCard: aoe→PlayAoeFx(전 생존 적 각자 취약/방어·슬롯별 팝업), heal/draw/poison
- EnemyActStep 행동 시작 독 틱(피해 팝업·사망 시 행동 생략·체인 계속)
- BuffsLabel 독N 표시, 클래스별 StartRun(HP 80/70·시작 덱), JOBS 상수·검증
- sim loadData: starterDecks.warrior 사용

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 13:51:15 +09:00
2c9a1b351e feat(job): 클래스 풀 필터·전직 선택 흐름·전직 HUD (생성기)
- CardPool(클래스 필터) — 보상·상점 공용
- 보스 분기: 1차+비최종막 → JobChoiceHud(유물/전직), ContinueAfterBoss 추출
- JobSelectHud 3직업 패널, SetJob(대표 카드 지급·직업명 갱신)
- guid 'job'=0xe4, HideGameHud·BindButtons 등록

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 13:36:46 +09:00
74e3a70a19 feat(job): 다단히트·방어무시·자가취약·파워 2종 (생성기)
- PlayCard Attack: hits 합산(힘·펜닙 타격마다 적용), pierce 전달, selfVuln
- DealDamageToTarget/PlayAttackFx pierce 시그니처 (물약 화염병 false)
- StartPlayerTurn 파워 루프: energyPerTurn·blockPerTurn (블록 리셋 후)
- 카드 class 직렬화(누락 시 fail-fast)·PlayerJob prop

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 13:34:11 +09:00
c69a17abe0 feat(rogue-map): 유물 방 상자 연출·TreasureHud·메소 표기 (생성기+산출물)
- TreasureHud: 보물 상자(클릭→흔들림 0.08s×6→열림 RUID 교체→유물+메소 보상)
- 상자 닫힘/열림 RUID 메이커 선별, PickNewRelic 재사용 (소진 시 메소 대체)
- ShowState/HideGameHud/LeaveNode treasure 등록, 표시 화폐 '골드'→'메소' 전환
- 테스트 30건(rogue-map 9 + sim 21) 통과

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 10:22:29 +09:00
1abd9f7987 feat(rogue-map): 맵 그리드·점선 도트 UI + RenderMap 상태 4단 (생성기)
- Node_r{1..7}c{1..4}+boss 정적 그리드, Dot 간선 192개 (기본 비활성)
- RenderMapNode: 타입색 6종·현재(골드)/방문(어둡게)/도달가능/잠김
- RenderMapDots: 간선 존재 토글·현재 노드 발신 간선 골드 강조

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 10:18:36 +09:00
1624ef6f3b feat(rogue-map): GenerateMap 런타임 절차 생성 + 층 시스템 (생성기)
- 정적 map.json·luaMapNodesTable·luaStartArray 제거
- GenerateMap: 경로 4개 걷기·행별 가중 타입·elite 연속 금지 (JS 미러 동기화)
- Depth/VisitedNodes prop, PickNode treasure 분기·층 갱신, 보스 클리어 시 새 맵
- TopBar '막 F/3 · D층', 메소 표기 시작

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 10:16:55 +09:00
62b2193f2e feat(potions-relics): 유물 아이콘 행·물약 슬롯·툴팁·물약 메뉴 UI (생성기+산출물)
- TopBar: RelicSlot×10(+오버플로)·PotionSlot×5 (UITouchReceive hover 툴팁)
- TooltipBox(이름+설명)·PotionMenu(사용/버리기/닫기) 팝업
- ShopHud Potion 판매 항목, AllDeckButton 우측 이동

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 07:33:15 +09:00
2a42c4a372 feat(potions-relics): 물약 사용·드랍·상점 로직 (생성기)
- AddPotion(슬롯 검사)·MaybeDropPotion(승리 40% 드랍)·RenderPotions(아이콘/빈칸/잠금)
- OpenPotionMenu/ClosePotionMenu/UsePotion(전투 중 한정)/TossPotion
- 상점 ShopPotion 판매 20골드 (BuyPotion, 슬롯 검사 선행)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 07:30:00 +09:00
42f9143f73 feat(potions-relics): 유물 15종 효과 훅 (생성기)
- HasRelic·PickNewRelic(미보유 추첨, 소진 시 골드+25)
- ApplyRelics 확장: strength/draw/heal/healOnWin/healIfLow + combatEnd 훅
- AddRelic passive: 물약 슬롯 5칸(장인의 벨트)·최대 HP+7(건강의 반지)
- CalcPlayerAttack: 아카베코(첫 공격+8)·펜닙(10번째 2배)·부츠(5 미만→5)
- DealDamageToPlayer: 브론즈 체인메일 반사·점토 갑옷·백년의 부적
- 챔피언 벨트(취약 부여 시 약화+1), 정예·보스 유물 보상 개선

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 07:29:01 +09:00
00844857ee feat(buffs-power): 적 방어도 배지·버프 라인·디버프 인텐트 UI (생성기)
- MonsterSlot에 BlockBadge(방어도)·Buffs(힘/약화/취약) 추가
- PlayerPanel Buffs 라인 (버프 + 활성 파워 표시)
- 인텐트: Debuff 보라색·공격 최종 예상치(힘·약화·취약 반영) 표시

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 01:29:04 +09:00
6df3fcf01c feat(buffs-power): 버프/디버프·Power 전투 규칙 (생성기)
- 약화(-25%)·취약(+50%)·힘(+N) 피해 공식 양방향 적용 (CalcPlayerAttack·EnemyActStep)
- Power 카드: 사용 시 소멸, PlayerPowers 등록, 매턴 strengthPerTurn 발동
- 적 Debuff 인텐트 처리·디버프 턴 감소(플레이어 턴 종료·적 행동 후)
- 인텐트 effect 직렬화·막 배율은 Debuff 값 제외

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 01:28:03 +09:00
8ff50b428d feat(system-gaps): 복합 카드(피해+방어)·런 종료 후 메뉴 복귀(EndRun)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 09:01:42 +09:00
1de8fac893 feat(system-gaps): 경제 상향(승리25·엘리트+15)·적 패턴 보강·신규 카드 2종 데이터
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 08:57:33 +09:00
32a0b2437b feat(act-maps): 막별 맵 텔레포트 + 등록 맵 필터
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 08:48:03 +09:00
f88e6ffeeb feat(combat-feel): 적 개별 차례 시퀀스 (ActFrame·EnemyActStep)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 08:31:37 +09:00
5921dfbeb8 feat(combat-feel): 데미지 팝업·사망 지연
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 08:28:02 +09:00
4b7ad753a4 feat(combat-feel): 공격 이펙트 후 지연 데미지 (SkillFx·FxBusy)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 08:25:05 +09:00
c80020a464 feat(combat-feel): 카드 드래그 타겟팅 (UITouchReceive·ResolveCardDrop)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 03:20:33 +09:00
76cb2cd65e feat(card-visuals): 보상·상점·그리드 카드 프레임 적용
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 02:59:38 +09:00
d2aba643fa feat(card-visuals): 손패 카드 프레임(Art·NamePlate·CostPlate)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 02:55:54 +09:00
d783cccea1 feat(card-visuals): ApplyCardFace 렌더 일원화 + Cards image 직렬화
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 02:53:07 +09:00
2f73910e47 fix(combat-ui): 보상 화면에서 손패/덱HUD 숨김 (플레이테스트 발견)
보상 오버레이 아래로 손패가 비쳐 시각 충돌 → OfferReward 진입 시 CardHand/DeckHud off
(PickReward→ShowMap 경로가 상태 복원).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 02:27:13 +09:00
b5facb7763 fix(combat-ui): AABB 겹침 해소(오브·턴종료 y160, 패널 y-494)·HP바 높이 일치·덱 팝업 숨김·cmbN 제거
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 02:16:58 +09:00
1762112296 feat(combat-ui): ShowState 가시성 통일 + 전투 시작 시 Result 초기화 2026-06-11 02:05:53 +09:00
389e7f36cf feat(combat-ui): 타겟 프레임·몬스터 슬롯 가독성·의도 색상
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 02:02:20 +09:00
24e6aca305 feat(combat-ui): 플레이어 패널(HP바·방어 뱃지) + SetHpBar 폭 인자
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 01:58:01 +09:00
d1f894a802 feat(combat-ui): 상단 TopBar (막·골드·유물·모든덱보기 통합)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 01:53:36 +09:00
c5e28062eb feat(combat-ui): 에너지 오브(좌)·턴 종료 버튼(우) 재배치
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 01:50:00 +09:00
fb5f0d6d5b Merge pull request 'fix(ui): keep deck popups above monster hp' (#33) from fix/deck-popup-layering into main
Reviewed-on: #33
2026-06-11 01:44:48 +09:00
569c1d5eb4 Merge pull request 'feat(map01): 노드 타입별 몬스터 그룹 콘텐츠 + HP바 몬스터 추종' (#32) from feature/map01-monster-content into main
Reviewed-on: #32
2026-06-11 01:44:24 +09:00
066ad6ddca fix(ui): keep deck popups above monster hp 2026-06-11 01:41:40 +09:00
1a15225ff6 Merge pull request '덱 팝업에서 몬스터 HP UI가 앞에 뜨지 않도록 수정' (#30) from fix/deck-popup-monster-layer into main
Reviewed-on: #30
2026-06-10 23:39:12 +09:00
33bc98c015 feat(map01): HP바를 각 몬스터 위에 표시(world→screen) + 엘리트/보스 우측 배치
- PositionMonsterSlot: 고정 좌표 대신 _UILogic:WorldToScreenPosition→ScreenToUIPosition 으로
  각 몬스터 월드 위치 위(HEAD_OFFSET_Y)에 슬롯을 띄움 → 몬스터를 옮겨도 자동 추종
- 미사용 고정좌표 시스템 제거: SlotPos/ActiveSlotPos prop·StartRun 주입·SLOTS 로드·
  luaSlotGroup·upsertUi 단언·data/monster-slots.json
- map01 엘리트(머쉬맘 x3·변형된 달팽이 x5)·보스(킹 슬라임 x4) 월드 위치를 우측으로 이동

메이커 검증: combat/elite/boss 각 노드에서 해당 그룹만 등장, HP바가 각 몬스터 머리 위에 표시.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-10 23:26:56 +09:00