PD 결정 「1. 바꿔. 2. 붉은 기사 M05로 해」 · 조사서 §C① ⓒ안.
- 새 프리팹 Assets/Res_Addr/PC/LH_M05.prefab — M05 모델 + Ai01 컴포넌트 구성 이식
(WizardActor·NavMeshAgent·Rigidbody·CapsuleCollider·SkinnedMeshAfterImage · Layer 3 · rootMotion 0)
무기 소켓 7/7 을 Ai01 과 **같은 본 경로**에 같은 로컬 TRS 로 재생성 → ClassConfig 무기 인덱스 무변경
Animator 아바타 = M05 자신의 Humanoid → 기존 pcanim_* 12개 + 이벤트 250개가 그대로 리타깃
- 되돌리기 스위치 WLCharacterSwapSettings(SO) — enabled/pcPrefabName/verboseLog · off 면 원본 100 %
- 크기 보정 WLPcScaleCompensator — 원 높이 1.1316 × 1.5038 = 1.7017 m(= Ai01)
→ 인게임 1.1912 m · 로비 1.7017 m 로 Ai01 과 동일. **테이블 ClassConfig 수정 0**
(f_Scale 을 고치면 스위치를 껐을 때 Ai01 이 1.79 m 가 되어 되돌리기가 깨진다)
- CapsuleCollider 는 루트 스케일을 받으므로 로컬 값을 1.5038 로 나눠 월드 크기를 Ai01 과 동일하게
- 원본 수정 = PCInfo.cs 1줄(상한) · Addressables 0 · Assets/Suriyun/** 수정 0(참조만)
실측: 머리:키 5.49 → 2.55 · 도트A 머리 픽셀 7.6 → 16.5 px (+115.5 %)
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
근거 = QA Q3 qa/W2-3_바퀴2.md D-1·D-2 · Q2 qa/W2-2_스모크.md D-4
D-1/D-4 (에러 팝업) 원인 사슬 — 실측
Boss_Anubis.cs:114 Co_Skill2 → :140 JumpToPosition(onNavMesh:false)
→ Actor.cs:1867 Co_JumpToPosition 이 점프 동안 에이전트를 끄고 착지 보정은
Snap_toNavMesh(맵 mobNavSnapRadius = 2 m)뿐 → 2 m 초과 이탈 시 NavMesh 밖으로 남음
→ 다음 Co_Skill2 의 Change_MobStatus(eMobStatus.Skill) = MobActor.cs:339 이
가드 없이 isStopped=false(Resume) 대입 → 예외
→ Util/ErrorLogHookManager.cs:26-35 가 모든 Error 를 플레이어 모달 팝업으로 표시
변경
· MobActor.cs:339 — 원본 1줄(≤2줄 예외 · 보고). 같은 switch :304·:309 및
StopMove_Imm(Actor.cs:2149)과 동일한 isOnNavMesh 가드. 예외만 차단.
· Assets/WL/Combat/Nav/MobNavRecovery.cs (신규) — 가드만으로는 보스가 NavMesh 밖에
굳는 상태가 남는다. 에이전트 off/NavMesh 밖이 유예(1.5 s) 넘게 지속되면
Set_Warp 으로 가장 가까운 NavMesh 위로 복구. 원본 훅 0 · 폴링.
· Assets/WL/Combat/Auto/AutoCombatOnEnter.cs (신규) — D-2. 맵(런) 진입 경계에서
자동전투가 꺼져 있으면 Actor.Set_Auto() 1회. 로비 제외 · 진입 뒤 수동 OFF 는 존중.
전투 패드 아이콘(BattleUI.images[0])만 동기화(UI 파일 수정 0).
· WLCombatCoreSettings(.cs/.asset) — 값 10개 전부 SO(C45). 각 플래그 0 = 롤백(C8).
코어 스위치에는 의존하지 않는다(코어 A/B 중에도 팝업이 되살아나면 안 됨).
· AgentScripts/WL813x_Probe.cs — 에디트 모드 검증 프로브(Play 0 · 로그인 0)
Core 수정 0 · Boss_*.cs 수정 0 · Actor.cs 수정 0 · UI 파일 수정 0
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
존 전멸 → 보스 등장 게이트 · 아레나 경계 · 추적 반경 데이터화 · 처치 후 정리.
- BossArena.cs (NEW) — CombatEvents.Killed/Spawned 구독으로 813e 존 5개(813001~813005)의
생존/처치를 세고, 게이트 존(813004·813005) 전멸 또는 누적 처치 >= 54 면 보스를 등장시킨다.
- 원본 스포너 무수정 — FieldBossData.Start 훅 1줄이 자기 자신을 Action 으로 넘기고,
게이트가 열릴 때 그 델리게이트를 다시 부른다. 스폰 로직 복제 0 이고 On_Regen 을 원본이
부르므로 Spawned(isBoss) 가 등장 시점에 난다(811d 보스 캠 · 813c HP 바 · 813t 배너 구독).
- 아레나 — 등장 직전에 MonsterList 10006 행 f_BaseChaseRange 50 → 20(SO 값 · 코드 상수 0),
보스/PC 가 아레나를 벗어나면 복귀(리셋) · 처치 후 RegenTime 코루틴 차단(리젠 없음).
- 값 = Assets/WL/Combat/Settings/Resources/WL/WLBossArenaSettings.asset (C8 · 29필드).
- Boss_*.cs / MobActor.cs / Actor.cs / Combat Core / 프리팹 변경 0.
- Assets/WL/Combat/Boss/BossEvents.cs (NEW): BossPhase 통지 허브. 코어
CombatEvents.cs 는 무수정 — 811d~j 와 충돌 방지. 같은 규약(정적 · struct
페이로드 in 전달 · 사전 할당 구독자 배열 · 예외 격리 · WLCombatCoreSettings
enabled/RuntimeDisabled 준수). 실측 GC = 1000회 디스패치 0 byte.
- Assets/WL/Combat/Boss/BossPatternTable.cs (NEW): 보스 패턴 JSON 로더.
스폰(On_Regen) 시 그 Boss_*.cs 가 직접 선언한 public float/int/bool 필드에만
대입(DeclaredOnly) → Boss_*.cs 수정 0 · 프리팹 값 변경 0. 행이 없으면 무동작.
- Assets/WL/Combat/Settings/Resources/WL/WL813h_BossPattern.json (NEW):
보스 12행(10001~10012). 813b 실측(프리팹 인스펙터) 값 그대로이며, Anubis(10006)
의 예고(차징) 3 s → 1.2 s 만 발주서 제안값으로 데이터에서 바꾼다.
페이즈 임계 기본 [1.0, 0.7, 0.4] · 스킬 해금 임계 기본 0.9 / 0.7(원본과 동일).
- Assets/Script/Character/Mob/BossMobActor.cs: 훅 3줄(로더 적용 1 · 임계 조회 1 ·
페이즈 통지 1). 원본 라인은 그대로 둬서 C8 시 100% 원본 동작.
- AgentScripts/WL813h_Probe.cs + WL813h_PROBE.txt: 에디트 모드 프로브와 실행 덤프
(로더 적용 · 행 없음 원복 · 페이즈 3회 · GC 0 · RuntimeDisabled 롤백 전부 PASS).
게이트 A PASS(oneshot · exit 0 · error CS 0줄 · 0.8분) · 콘솔 error 0 · Play 0.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>