102 lines
5.6 KiB
Plaintext
102 lines
5.6 KiB
Plaintext
===== WL-813d 보스전 게이트 · 아레나 프로브 =====
|
|
playMode=False time=2026-09-09 02:03:44
|
|
|
|
── ⓪ 준비
|
|
가짜 FieldBossData = spawnerId 813010 · monsterId 10006 · pos (139.0, 0.8, -20.0) · RegenTime 60
|
|
MonsterList 10006 행 f_BaseChaseRange (실 JSON) = 50.0 dic_Data 주입 = True
|
|
|
|
── ① 설정 에셋
|
|
Instance = OK
|
|
코어 Enabled = True
|
|
게이트 Active = True
|
|
enabled/verboseLog = True / False
|
|
bossSpawnerId/Monster = 813010 / 10006
|
|
gateEnabled/mode = True / Either
|
|
zoneSpawnerIds = 813001, 813002, 813003, 813004, 813005
|
|
gateZoneSpawnerIds = 813004, 813005
|
|
requiredKills = 54 requireZoneSpawnedOnce=True
|
|
gateOpenDelaySeconds = 0
|
|
arena center/radius = FieldBossData 좌표 / 20
|
|
bossChaseRange = 20 restoreOnCleanup=True
|
|
leash margin/PC margin= 2 / 4 grace=1.5s interval=0.25s
|
|
resetHeals/rate = True / 1
|
|
cleanup delay/regen = 3s / suppressRegen=True
|
|
deactivateZones/rearm = False / False
|
|
|
|
── ② 게이트 A — 게이트 존 전멸 → 보스 등장
|
|
HoldSpawn() = True (true = 원본 Start 가 return · 보스 미등장)
|
|
GateArmed/Subscribed = True / True
|
|
CombatEvents 구독 수 = Killed 0→1 · Spawned 0→1
|
|
resume 호출 수 = 0 (게이트가 닫혀 있으므로 0 이어야 한다)
|
|
반경 적용 여부 = False (등장 직전에만 적용)
|
|
|
|
[스폰] 존별 n_MaxMonsterCount 만큼 가짜 Spawned
|
|
존 813001 : 스폰 12 → alive 12
|
|
존 813002 : 스폰 15 → alive 15
|
|
존 813003 : 스폰 14 → alive 14
|
|
존 813004 : 스폰 8 → alive 8
|
|
존 813005 : 스폰 5 → alive 5
|
|
GateOpen = False (아직 닫혀 있어야 한다)
|
|
|
|
[처치] 게이트 존만 전멸 — 비게이트 존은 살려 둔다(KillCount 경로와 분리)
|
|
존 813004 첫 처치 → alive 7 · GateOpen False
|
|
존 813004 마지막 처치 → alive 0 · 누적처치 8/54 · GateOpen False · resume 0
|
|
존 813005 첫 처치 → alive 4 · GateOpen False
|
|
▶ resume() 호출 = 원본 FieldBossData.Start 재진입(보스 활성) #1
|
|
존 813005 마지막 처치 → alive 0 · 누적처치 13/54 · GateOpen True · resume 1
|
|
|
|
결과 GateOpen = True
|
|
결과 resume 호출 수 = 1 (1 = 원본 FieldBossData.Start 재진입 = 보스 활성)
|
|
ReleaseCount = 1
|
|
누적 처치 = 13 / requiredKills 54 → KillCount 조건은 아직 미충족(= ZoneCleared 단독 개방)
|
|
LastLog = 보스 등장 개시 — released=1
|
|
|
|
── ④ 추적 반경 데이터화 (등장 직전 · MonsterList 행)
|
|
ChaseRangeApplied = True
|
|
before → after = 50.0 → 20.0 (SO bossChaseRange=20)
|
|
테이블 행 실측 = 20.0 (MobActor.cs:92 Check_Battle · :356 Check_Patrol 이 이 값을 읽는다)
|
|
재진입 HoldSpawn() = False (false = 원본 스폰 코드 진행 · 이중 스폰 없음)
|
|
재진입 후 resume 호출 = 1 (증가하지 않아야 한다)
|
|
|
|
── ③ 게이트 B — 누적 처치 ≥ requiredKills (리젠형 존에서 전멸이 안 잡힐 때)
|
|
▶ resume() 호출 = 원본 FieldBossData.Start 재진입(보스 활성) #1
|
|
리젠 흉내 (존 813001 처치↔리젠 반복 · 어떤 존도 전멸하지 않음)
|
|
게이트 존 alive = 813004, 813005 → 8, 5
|
|
누적 처치 / 임계 = 54 / 54
|
|
GateOpen / resume = True / 1
|
|
반복 횟수(안전 상한 500) = 54
|
|
LastLog = 보스 등장 개시 — released=1
|
|
|
|
── ⑤ 리쉬 판정표 (EvaluateLeash · 순수 함수 · Actor 접근 0)
|
|
중심 (139.0, 0.8, -20.0) · 반경 20 · leashMargin 2 · playerLeaveMargin 4 · grace 1.5s
|
|
보스 거리 PC 거리 경과(s) 판정
|
|
0.0m - 0.0 유지
|
|
19.0m - 0.0 유지
|
|
23.0m - 0.0 리셋 (보스 이탈)
|
|
0.0m 25.0m 0.0 유지
|
|
0.0m 25.0m 1.6 리셋 (PC 이탈)
|
|
0.0m 23.0m 0.0 유지
|
|
※ 실제 리셋 실행(Del_Target · On_Regen(reincarnation:true) · Set_Warp)은 살아 있는 MobActor 가 필요해
|
|
에디트 모드에서 측정 불가 = 「미확인」. Boss 참조 없음 → LeashTick() 는 무동작:
|
|
LeashTick() ResetCount 0 → 0
|
|
|
|
── ⑥ 보스 처치 → 정리
|
|
▶ resume() 호출 = 원본 FieldBossData.Start 재진입(보스 활성) #1
|
|
강제 개방 후 resume = 1 · 반경 50.0 → 20.0
|
|
보스 Spawned(isBoss) → BossSpawned=True (811d 보스 캠 · 813c HP 바 · 813t 배너가 구독하는 그 이벤트)
|
|
보스 Killed(Boss) → BossKilled=True · CleanupDone=True (에디트 모드라 cleanupDelaySeconds 무시 · 즉시 실행)
|
|
반경 원복 후 테이블 값 = 50.0 restoreChaseRangeOnCleanup=True
|
|
ChaseRangeApplied = False
|
|
LastLog = 정리 완료 — 리젠 없음
|
|
※ 리젠 차단은 FieldBossData.StopAllCoroutines() — 코루틴은 Play 에서만 돌아 「미확인」.
|
|
가짜 FieldBossData 생존 = True (정리가 오브젝트를 파괴하지 않는다)
|
|
|
|
── ⑦ C8 롤백 — 어느 스위치든 끄면 813e 상시 배치 100%
|
|
WLBossArenaSettings.RuntimeDisabled=true → HoldSpawn=False · Active=False · PassThrough=1
|
|
WLCombatCoreSettings.RuntimeDisabled=true → HoldSpawn=False · 코어 Enabled=False · 게이트 Active=False
|
|
다른 FieldBossData(spawnerId 999999) → HoldSpawn=False (false = 원본 즉시 배치 그대로)
|
|
gateEnabled=false / enabled=false / 에셋 삭제도 같은 경로(HoldSpawn 첫 3줄) — 에셋을 건드리지 않아 미실행
|
|
resume 호출 총합 = 0 (C8 구간에서 0 이어야 한다)
|
|
|
|
===== 끝 =====
|