From 3b678e35d1638ea5caf517c505535e80c2988aa6 Mon Sep 17 00:00:00 2001 From: gahusb Date: Fri, 3 Jul 2026 01:18:06 +0900 Subject: [PATCH] =?UTF-8?q?fix(monster):=20=EB=A7=B5=20=EC=9D=B8=EC=8A=A4?= =?UTF-8?q?=ED=84=B4=EC=8A=A4=20origin.entry=5Fid=EB=A5=BC=20modelId?= =?UTF-8?q?=EC=99=80=20=EC=9D=BC=EC=B9=98=EC=8B=9C=EC=BC=9C=20MissingModel?= =?UTF-8?q?=20=ED=95=B4=EC=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 메이커가 엔티티의 원본 모델을 origin.entry_id로 해석하는데, entry_id를 enemyId("junior_bugi")로 넣어 model://monster-junior_bugi(실제 EntryKey)와 불일치 → [LEA-3028] MissingModel로 전 몬스터 미표시. entry_id를 modelEntryId(=modelId="monster-")로 수정. 메이커 인게임 검증: 전투에서 전 종 정상 렌더(stump=1110101도 나무토막 확인). Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_011xhLoQbJvQYL65kBtDNDTy --- tools/monster/lib/monster-model.mjs | 2 +- tools/monster/monster-model.test.mjs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/monster/lib/monster-model.mjs b/tools/monster/lib/monster-model.mjs index 1b81403..38b40ac 100644 --- a/tools/monster/lib/monster-model.mjs +++ b/tools/monster/lib/monster-model.mjs @@ -69,7 +69,7 @@ export function buildMonsterInstance({ enemyId, enemy, name, guid, mapTag, x, gr jsonString: { name, path, nameEditable: true, enable: true, visible: true, localize: false, displayOrder: 4, pathConstraints: '///', revision: 2, - origin: { type: 'Model', entry_id: enemyId, sub_entity_id: null, root_entity_id: guid, replaced_model_id: null }, + origin: { type: 'Model', entry_id: modelEntryId(enemyId), sub_entity_id: null, root_entity_id: guid, replaced_model_id: null }, modelId: modelEntryId(enemyId), '@components': components, '@version': 1, diff --git a/tools/monster/monster-model.test.mjs b/tools/monster/monster-model.test.mjs index 92ff633..faf86df 100644 --- a/tools/monster/monster-model.test.mjs +++ b/tools/monster/monster-model.test.mjs @@ -42,7 +42,7 @@ test('buildMonsterModel: 원본 skeleton 비변형(순수 함수)', () => { test('buildMonsterInstance: 모델 연결·컴포넌트 값', () => { const e = buildMonsterInstance({ enemyId: 'slime', enemy, name: 'slime', guid: '00000bb9-0000-4000-8000-000000000bb9', mapTag: '03', x: 3.4, group: 'elite' }); assert.equal(e.jsonString.modelId, 'monster-slime'); - assert.equal(e.jsonString.origin.entry_id, 'slime'); + assert.equal(e.jsonString.origin.entry_id, 'monster-slime'); assert.equal(e.jsonString.origin.root_entity_id, e.id); assert.equal(e.path, '/maps/map03/slime'); const comp = (t) => e.jsonString['@components'].find((c) => c['@type'] === t);