Commit Graph

36 Commits

Author SHA1 Message Date
17200d47ec Merge branch 'main' of https://gitea.gahusb.synology.me/gahusb/maplecontest 2026-06-30 00:42:45 +09:00
95d6155086 Refine rogue progression and card pools 2026-06-29 23:34:19 +09:00
8a43ca91da fix(data): 설명이 미구현 효과를 주장하던 5장을 실제 동작에 일치
각 카드 설명이 데이터에 없는 효과를 주장하고 있었다. 실제 런타임
동작에 맞게 설명 수정(미구현 메커니즘 구현 대신 설명 정정):
- Malaise(불쾌): "힘 감소+약화+소멸" → 실제는 useAllEnergy+xWeakPerEnergy
  뿐(단일 적 약화, 소멸/힘감소 없음) → "에너지를 모두 사용하고, 사용한
  에너지만큼 적에게 약화를 부여합니다."
- Mirage(신기루): "중독만큼 방어+소멸" → 실제 draw:1 → "카드를 1장 뽑습니다."
- KnifeTrap(칼날 함정): "표창 재사용" → 실제 draw:1 → "카드를 1장 뽑습니다."
- Strangle(목 조르기): "카드마다 체력감소" 부분 미구현 → "피해를 8 줍니다."
- Rage(분노): kind=Power라 damage:4/aoe가 무시되고 powerEffect도 없어
  재생 시 아무 효과 없던 死카드. 데이터의 damage:4/aoe 의도대로
  kind Power→Attack으로 기능화 + "모든 적에게 피해를 4 줍니다."

카드 121장 유지. 산출물 재생성 포함.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUvHKjrt8jqLzDeCsRRGmj
2026-06-29 21:45:24 +09:00
fc03d58ee7 fix(data): Tactician·Adrenaline 잘린 설명 완성 (필드와 일치)
Tactician(전략가) "교활. 을 얻습니다." → gainEnergy:1 반영해
"교활. 에너지를 1 얻습니다." Adrenaline(아드레날린) "를 얻습니다..."
→ "에너지를 1 얻습니다. 카드를 2장 뽑습니다. 소멸." 산출물 재생성 포함.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUvHKjrt8jqLzDeCsRRGmj
2026-06-29 20:50:04 +09:00
5f615e30e2 fix(balance): Prepared 시뮬에 blockPerDamageDealtThisTurn 실제 방어 적용 + 설명 정확화
Lua는 Prepared(예비)에서 AddCardBlock으로 실제 방어를 부여하는데, JS
시뮬은 blockGained(통계 카운터)만 증가시키고 addBlock을 호출하지 않아
플레이어가 실제 방어를 못 받았다(시뮬이 방어를 과소집계).

JS도 다른 블록 출처처럼 addBlock 경유로 변경(Lua 동기화). 또한
Prepared 데이터는 discard:1 + blockPerDamageDealtThisTurn뿐(draw 없음)
인데 설명이 "1장 뽑고 1장 버립니다"로 부정확해, 실제 동작(1장 버리고
이번 턴 피해만큼 방어)에 맞게 보강. RED-GREEN 테스트 추가. 88개.
산출물 재생성 포함.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UUvHKjrt8jqLzDeCsRRGmj
2026-06-29 20:40:02 +09:00
a3d5174b34 feat: 도적 공용 효과 정리 2026-06-22 21:59:28 +09:00
24a79a309f Add shared bandit effect hooks 2026-06-22 16:08:05 +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
acf295d56c 도적 카드 공용 효과 추가 2026-06-19 02:57:11 +09:00
b2bf1bf4dd 카드 설명 키워드 하이라이트 추가 2026-06-19 01:51:36 +09:00
71435a2c91 밴딧 카드 공용 효과 확장 2026-06-19 01:26:15 +09:00
ba1651e52c 밴딧 공용 효과와 문서 정리 2026-06-19 00:56:08 +09:00
f2828deb19 Implement thief discard and retain flows 2026-06-17 22:48:55 +09:00
4288c4101b feat(cards): add thief card icons 2026-06-16 23:05:40 +09:00
62187db5dd 표창 카드 손패 생성 구현 2026-06-16 02:19:22 +09:00
98ca1668c8 Implement dex and thorns effects 2026-06-16 01:59:40 +09:00
b43ee02014 feat(cards): implement retain keyword 2026-06-15 00:45:11 +09:00
05a06644cf feat(bandit): implement sly discard trigger 2026-06-15 00:06:53 +09:00
a24f3592c4 feat(bandit): STS2 사일런트 카드풀 반영 2026-06-14 21:14:13 +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
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
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
9aa4721790 feat(card-frames): 카드 등급 배정(normal10·unique17·legend5)·프레임 RUID 매핑 데이터
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 23:31:33 +09:00
6b6037739f feat(magician): 법사 카드 14종·클래스별 시작 덱 데이터
- 1차 5종(에너지 볼트·매직 가드·매직 클로·텔레포트·슬로우)
- 2차: 위자드 불독(파이어 애로우·포이즌 브레스·엘레멘트 앰플)
  위자드 썬콜(썬더 볼트 AoE·콜드 빔·칠링 스텝) 클레릭(힐·블레스·홀리 애로우)
- starterDeck → starterDecks{warrior, magician}, 신규 필드 draw/heal/poison/aoe

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 13:48:01 +09:00
15b342972d feat(job): 전사 2차 카드 9종·클래스 필드 데이터
- 기존 9종 class=warrior, 신규: 파이터(콤보 어택·버서크·라이징 어택)
  페이지(썬더/블리자드 차지·파워 가드) 스피어맨(피어스·아이언 월·하이퍼 바디)
- 신규 필드: hits(다단)·pierce(방어무시)·selfVuln·energyPerTurn/blockPerTurn
- 이미지 RUID 메이커 선별

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 13:31:48 +09:00
2bf5716fce feat(buffs-power): 신규 카드 4종·적 디버프 인텐트 데이터
- 차지 블로우(피해8·취약2)·위협(약화2)·인레이지(힘+2)·분노(Power, 매턴 힘+1)
- 카드 이미지 RUID 메이커 선별 (공식 리소스)
- 정예 슬라임·머쉬맘·변형된 달팽이(약화), 슬라임 킹·킹 슬라임(취약) 디버프 인텐트

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-12 01:25:02 +09:00
013f946c6b feat(system-gaps): 신규 카드 이미지 RUID (워 리프·브랜디시 — 메이커 선별)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 09:05:00 +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
c4ad8fc068 feat(card-visuals): 카드를 전사 스킬로 리네임 + 공식 스킬 이미지 RUID
파워 스트라이크(a71b…)/아이언 바디(1ae9…)/슬래시 블러스트(d5bc…) — 메이커 순회 주입으로 선별(26후보 중).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 02:50:26 +09:00
8789330a4e feat(D): 카드/적 데이터 외부화 (data/*.json)
Cards·시작덱·적 정의를 data/cards.json·data/enemies.json으로 분리, gen-slaydeck가 로드·검증·주입.

- data/cards.json: 카드 정의(name/cost/kind/damage|block/desc) + starterDeck
- data/enemies.json: 적 정의(name/maxHp/intents) + activeEnemy
- 생성기: JSON 로드 + fail-fast 검증(미존재 카드/적 id) + Lua 직렬화 헬퍼
- StartCombat·EnemyMaxHp·카드 미리보기·CombatHud 초기텍스트를 데이터에서 생성
- codeblock 출력은 기존과 동일(순수 리팩터), ui 미리보기는 카드 종류 순환 표시
- 검증: 데이터 1장 수치 변경→재생성 반영 확인, 결정성, fail-fast(exit1), 메이커 Play 정상
- 수치는 임시 placeholder, 추후 메이플 IP대로 카드/적 확장 예정

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