fix: map01 신규 몬스터 6종 등록 — 랜덤 행동 복구 #76

Merged
gahusb merged 3 commits from fix/map01-monster-roster into main 2026-06-18 01:44:12 +09:00
Owner

문제

메이커 저작(#74)에서 map01에 수작업 배치한 몬스터 6종의 EnemyIddata/enemies.json에 미등록 상태였다. 전투 시 BuildMonsters(run.mjs)가 self.Enemies[id] = nil 로 조회 실패 → fallback { maxHp = 10, intents = {{ Attack, 5 }} }(단일 intent)으로 떨어졌다.

그 결과 EnemyActStepmath.random(1, #intents)random(1, 1) 이 되어 항상 "공격 5"만 반복 — 행동 랜덤화 불가, 이름은 raw id(junior_bugi 등), HP 10 고정. ("몬스터 행동 랜덤이 안 된다"는 증상)

런타임 randomization 로직 자체는 정상이며, 원인은 데이터 누락.

미등록 6종

Group EnemyId
combat octopus, kapa_drake, junior_neki, junior_bugi
elite dile, mano

(map01의 green_mushroom·king_slime·orange_mushroom, map02~05는 전부 등록된 적이라 정상)

수정

  • data/enemies.json에 6종 등록 — 기존 티어 밸런스 범위(combat HP 1524 / elite HP 6580, 다중 intent)에 맞춤:
    • 문어 HP15 [공5/공6/방4], 카파 드레이크 HP24 [공9/공6/방6/공11], 주니어 네키 HP18 [공6/공8/약화1], 주니어 부기 HP20 [공7/방5/공9]
    • 다일 HP65 [공13/방9/공8/공16/약화1], 마노 HP80 [방12/공14/취약1/공10/저주(Wound)]
  • SlayDeckController.codeblock 재생성(산출물). 맵은 이미 해당 id를 참조하므로 맵 재생성 불필요 — 메이커 수작업 배치 그대로 유지.

검증

  • 전 맵 CombatMonster.EnemyId ↔ enemies.json 키 대조: OK 33 / MISSING 0
  • 컨트롤러 self.Enemies에 신규 6종 전부 포함
  • cbgap UI 경로 무결성 GAP 0
  • JS 미러 테스트 41/41
  • origin/main(#75 도적 버림/보존) 머지 후 재생성 — 산출물 바이트-동일(diffcheck), #75 Retain 기능 공존 확인
## 문제 메이커 저작(#74)에서 map01에 수작업 배치한 몬스터 6종의 `EnemyId`가 `data/enemies.json`에 미등록 상태였다. 전투 시 `BuildMonsters`(run.mjs)가 `self.Enemies[id] = nil` 로 조회 실패 → fallback `{ maxHp = 10, intents = {{ Attack, 5 }} }`(**단일 intent**)으로 떨어졌다. 그 결과 `EnemyActStep`의 `math.random(1, #intents)` 가 `random(1, 1)` 이 되어 **항상 "공격 5"만 반복** — 행동 랜덤화 불가, 이름은 raw id(`junior_bugi` 등), HP 10 고정. ("몬스터 행동 랜덤이 안 된다"는 증상) 런타임 randomization 로직 자체는 정상이며, 원인은 **데이터 누락**. ## 미등록 6종 | Group | EnemyId | |---|---| | combat | `octopus`, `kapa_drake`, `junior_neki`, `junior_bugi` | | elite | `dile`, `mano` | (map01의 `green_mushroom`·`king_slime`·`orange_mushroom`, map02~05는 전부 등록된 적이라 정상) ## 수정 - `data/enemies.json`에 6종 등록 — 기존 티어 밸런스 범위(combat HP 15~24 / elite HP 65~80, 다중 intent)에 맞춤: - 문어 HP15 [공5/공6/방4], 카파 드레이크 HP24 [공9/공6/방6/공11], 주니어 네키 HP18 [공6/공8/약화1], 주니어 부기 HP20 [공7/방5/공9] - 다일 HP65 [공13/방9/공8/공16/약화1], 마노 HP80 [방12/공14/취약1/공10/저주(Wound)] - `SlayDeckController.codeblock` 재생성(산출물). 맵은 이미 해당 id를 참조하므로 **맵 재생성 불필요 — 메이커 수작업 배치 그대로 유지**. ## 검증 - 전 맵 `CombatMonster.EnemyId` ↔ enemies.json 키 대조: **OK 33 / MISSING 0** - 컨트롤러 `self.Enemies`에 신규 6종 전부 포함 - cbgap UI 경로 무결성 **GAP 0** - JS 미러 테스트 **41/41** - `origin/main`(#75 도적 버림/보존) 머지 후 재생성 — 산출물 바이트-동일(diffcheck), #75 Retain 기능 공존 확인
gahusb added 2 commits 2026-06-17 23:28:23 +09:00
메이커 저작(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>
gahusb added 1 commit 2026-06-18 01:33:47 +09:00
덱창(카드 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>
gahusb merged commit 4fa0bc85c0 into main 2026-06-18 01:44:12 +09:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gahusb/maplecontest#76