Project_WL/AgentScripts/WL813l2_PROBE.txt

68 lines
5.1 KiB
Plaintext
Raw Permalink Normal View History

# WL813l2 Probe 2026-09-09 14:41:18 (edit mode · Play 0 · 로그인 0)
playMode=False
── 준비
[OK] 구독 ON · MyValue.bMyPC=False(월드 PC 없음 = 로비·에디트 경로)
── ⓪ 설정 에셋 · 성장 입력 값 전수 (C45 · 코드 상수 0)
[OK] WLPowerDeltaSettings 로드
[OK] Enabled · enabled_=True
성장 입력: useLevelUpPayload=True readGrowthFromServerData=True statPointWeight=1 atkGain=1 hpGain=22 perLevel=5 levelWeight=0 levelBase=1
기존 산식: atk=BaseDmg(폴백 ATK) hp=MaxHP hpWeight=0.1 powerScale=1 최소 표시 0.5% suppressToastOnLevelUp=True
[OK] statPointsPerLevel=5 (원본 실측 ServerClass.cs:2770 Get_Point() = (Lv1)*5 사용분)
[OK] 포인트 환산 ATK +1 / MaxHP +22 (원본 실측 MyValue.cs:335-336 dic_MainStatMultiplier[STR] = ATK 1 · MaxHP 22)
── ① 🔴 D-28 원인 실증 — 원본 스탯은 레벨업으로 안 움직인다 · 움직이는 것은 미사용 포인트뿐
Lv 1 → 16 · 스탯 포인트 사용 0 · 장비 변화 0 일 때 원본이 주는 것:
[OK] Get_Point() 0 → 75 (= (Lv1)*5 · 미사용 포인트만 늘어난다)
[OK] SD_PC.Get_Stat(STR) 0 → 0 (= **사용한** 포인트만 셈 · table_classconfig.Get_PureStat:246 이 읽는 값) → ActorStatInfo 는 그대로
⇒ `ActorStatInfo.Reset`(MyValue.cs:286-453)은 SD_PC.Lv 를 한 번도 안 읽는다 = 813l 이 폴링해도 값이 상수
(Q6 D-28 `PollCount 1573` 인데 `LastPower 52.000000` 불변 · 레벨 1→16)
[OK] ApplyGrowth ↔ 원본 Get_Point() 대조 — 내 값 70 · 원본 70 · level=16 (사용 5점 반영)
[OK] 813l 산식 회귀 4건(성장 입력 0) — 200.00 / 210.00 / 230.00 / 486.00 (기대 200 / 210 / 230 / 486)
[OK] 포인트 5점 → 216.00 (기대 216.00 = 105 + 111.0)
[OK] 포인트 10점 → 232.00 (기대 232.00 · 레벨당 +16.0)
[OK] 레벨업 1회 증가율 8.00% (최소 표시 0.5% 를 넘는다)
[OK] 포인트 사용 전/후 연속 — 미사용 216.00 ↔ 사용 후 216.00 (statPointWeight=1 의 뜻)
── ② 813k GrowthEvents.LevelUp 실 Dispatch — prev ATK 100 → new 112 (발주서 §1-3)
dispatch GrowthEvents.LevelUp 6→7 pt=30 · 구독자=1
[OK] 수신 1회 · 소스 "levelUp(813k 페이로드)"
[OK] 페이로드 전투력 prev=280.00 new=308.00 (기대 280.00 / 308.00 · 손계산)
[OK] 🔴 LastPower 0 → 308.00 (D-28 = 여기가 52 로 고정이었다)
[OK] 레벨업 프레임 토스트 생략(Suppressed=1 Toast=0) — 같은 값을 팝업 줄이 보여준다
[OK] 팝업 줄 "전투력 280 → 308 (+10.0%)" (기대 280 → 308 · +10.0%)
[OK] 토스트 1회 · 문구 "전투력 +10.0%" (기대 "전투력 +10.0%")
[OK] useLevelUpPayload=0 → 소스 "levelUp(스탯 읽기 실패)" · 토스트 0회 · LastPower 없음(= 813l 원래 경로)
── ③ 🔴 D-28 재현 · 수리 — 스탯이 **하나도 안 바뀌는** 원본 기본 동작(813k 보고 ①)에서
dispatch GrowthEvents.LevelUp 7→8 pt=35 · 구독자=1 · 스탯 3종 prev == new (원본 기본값)
[OK] 전투력 296.00 → 312.00 (기대 296.00 → 312.00)
[OK] ✅ 수리 후 — 토스트 1회 "전투력 +5.4%"
[OK] ❌ 재현(statPointWeight=0) — 레벨 7→8→9 인데 전투력 200.00 불변 · 토스트 0회 = Q6 D-28 그대로
[OK] 다단(5→8 · 3레벨) prev 포인트 역산 → prev 전투력 264.00 (기대 264.00 = 포인트 20점)
── ④ 레벨업 팝업 전투력 줄 — 813y StatPopup 왕복(구독 → Dispatch → 줄)
init: 구독 ON · box pos=(0.00, 180.00) size=(1080.00, 296.00) rows=3 power=on unitsPerPx=1.0000 titleFont=72.0 edge[LiberationSans SDF Material (WL813y Edge) shader=TextMeshPro/Mobile/Distance Field outlineW=0.260 outlineC=0D0805FF underlay=000000BF off(0.45,-0.45) soft=0.20 UNDERLAY_ON=True]
[OK] StatPopup.PowerLineOn
[OK] StatPopup 구독=True · GrowthEvents.LevelUp 구독자=2(StatPopup + PowerDeltaToast)
팝업 표시: rows=1 level=10 text="LEVEL 10 / +5 포인트 <size=70%>(보유 45)</size> / 전투력 328 → 344 (+4.9%)"
[OK] 🔴 팝업 전투력 줄 "전투력 328 → 344 (+4.9%)" (기대 328 → 344 · +4.9%)
[OK] 중복 표시 0 — Suppressed=1 Toast=0
[OK] 프레임 스탬프 prev=328.00 new=344.00 → 팝업/토스트가 같은 값을 본다(구독 순서 무관)
── ⑤ GC 0 (폴링 · 페이로드 · 포인트 산식)
[OK] Tick × 1000 → GetTotalMemory 0 B · MonoUsedSize 0 B (폴링 2회)
[OK] ApplyGrowth × 1000 = 0 B ↔ 원본 Get_Point() × 1000 = 0 B (원본은 LINQ Select+Sum · sink=138000)
레벨업 Dispatch × 1000 — 헬퍼만 126976 B · 구독 포함 176128 B → 내 경로 몫 49152 B / 1000회 (813l 때부터 있던 진단 문자열 · **프레임 경로 아님**)
대조군 new object() × 1000 = 24576 B (0 이 아니어야 측정이 살아 있다) · keep=1000
── ⑥ C8 롤백
[OK] Enabled=false
[OK] 레벨업 무시(LevelUpSeen=0 Toast=0)
[OK] BuildStatPopupLine()=null
[OK] 해제 후 Enabled=true
[OK] statPointWeight=0 · levelWeight=0 → 레벨 16 · 포인트 75 여도 200.00 (813l 원래 산식과 동일 = 값 하나로 되돌린다)
RESULT PASS