Project_WL/AgentScripts/WL813d_PROBE.txt

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 이어야 한다)
===== 끝 =====