{"version":1,"kind":"hwanse-battle-roar-effect-review","status":"static-exe-proof-for-mengho-roar-effect","source":["out/battle_skill_complete_pattern_review.json","out/battle_helper_visual_behavior_review.json","out/battle_helper_frame_script_review.json","out/cns_frame_rect_exe_scan.json"],"summary":{"levels":4,"levelsWithVisualHelper":3,"levelsWithBlink":0,"btlEfcFrame190Rect":{"x":480,"y":208,"w":80,"h":80,"frame":190,"asset":"btl_efc"},"btlEfcFrame191Rect":{"x":0,"y":288,"w":128,"h":112,"frame":191,"asset":"btl_efc"}},"interpretationNotes":["actor frame #38 유지의 정적 근거는 helper 호출 레벨에서 result/reset 전 0xc1 actor flag wait가 있는 점이다.","helper frameScript 끝의 actor flag mode=0 mask=0x00000002는 0xc1 wait의 해제 신호로 취급한다.","display/actor +0x00 bit 0x10000000의 정확한 내부 이름은 미확정이지만, 3/4단 frameScript의 op6/op7 반복 토글은 EXE에서 직접 나온다.","btl_efc#190은 EXE rect 기준 80x80, btl_efc#191은 128x112로 4단 효과가 커지는 근거다."],"rows":[{"level":1,"skillIdHex":"0x27","mpCost":5,"actorFrames":["t0:#35@2","t2:#36@2","t4:#37@4","t8:#38@8","t16:#0@2"],"effectWlkNos":[6],"resultWlkNos":[0],"helperIds":[],"helperBehavior":null,"helperTargets":[],"helperFrames":[],"effectRects":[],"displayFlagBlink":false,"blinkFlagMaskHex":null,"blinkSegments":[],"actorFlagWaits":[],"actorFrame0Reset":[{"tick":16,"vaHex":"0x004d7128","summary":"set sprite=0x11, frame=0, gate=2, mode=0"}],"effectVerdict":"no-visual-helper","interpretation":"1단계는 0xbd helper 호출이 없고 WLK 6 시전음만 있다."},{"level":2,"skillIdHex":"0x28","mpCost":5,"actorFrames":["t0:#35@2","t2:#36@2","t4:#37@4","t8:#38@8","t16:#0@2"],"effectWlkNos":[6],"resultWlkNos":[0],"helperIds":[112],"helperBehavior":"single-frameScript-flash","helperTargets":["0x004bae04"],"helperFrames":["190@8"],"effectRects":[{"x":480,"y":208,"w":80,"h":80,"frame":190,"asset":"btl_efc"}],"displayFlagBlink":false,"blinkFlagMaskHex":null,"blinkSegments":[],"actorFlagWaits":[{"tick":16,"vaHex":"0x004d7108","summary":"actor flag wait mode=0, mask=0x00000002"}],"actorFrame0Reset":[{"tick":16,"vaHex":"0x004d7128","summary":"set sprite=0x11, frame=0, gate=2, mode=0"}],"effectVerdict":"single-flash","interpretation":"2단계는 helper가 btl_efc#190 한 프레임을 gate 8 동안 표시한다."},{"level":3,"skillIdHex":"0x29","mpCost":5,"actorFrames":["t0:#35@2","t2:#36@2","t4:#37@4","t8:#38@8","t16:#0@2"],"effectWlkNos":[6],"resultWlkNos":[0],"helperIds":[113],"helperBehavior":"multi-frameScript-effect","helperTargets":["0x004bae54"],"helperFrames":["190@2","190@6","190@2","190@4","190@2","190@3","190@2","190@2","190@12"],"effectRects":[{"x":480,"y":208,"w":80,"h":80,"frame":190,"asset":"btl_efc"}],"displayFlagBlink":false,"blinkFlagMaskHex":null,"blinkSegments":[],"actorFlagWaits":[{"tick":16,"vaHex":"0x004d7108","summary":"actor flag wait mode=0, mask=0x00000002"}],"actorFrame0Reset":[{"tick":16,"vaHex":"0x004d7128","summary":"set sprite=0x11, frame=0, gate=2, mode=0"}],"effectVerdict":"multi-frameScript-effect","interpretation":"helper 근거는 있으나 별도 시각 의미는 추가 검토 대상이다."},{"level":4,"skillIdHex":"0x2a","mpCost":4,"actorFrames":["t0:#35@2","t2:#36@2","t4:#37@4","t8:#38@8","t16:#0@2"],"effectWlkNos":[6],"resultWlkNos":[0],"helperIds":[114],"helperBehavior":"multi-frameScript-effect","helperTargets":["0x004baf24"],"helperFrames":["191@2","191@10","191@2","191@8","191@2","191@6","191@2","191@4","191@2","191@3","191@2","191@2","191@16"],"effectRects":[{"x":0,"y":288,"w":128,"h":112,"frame":191,"asset":"btl_efc"}],"displayFlagBlink":false,"blinkFlagMaskHex":null,"blinkSegments":[],"actorFlagWaits":[{"tick":16,"vaHex":"0x004d7108","summary":"actor flag wait mode=0, mask=0x00000002"}],"actorFrame0Reset":[{"tick":16,"vaHex":"0x004d7128","summary":"set sprite=0x11, frame=0, gate=2, mode=0"}],"effectVerdict":"multi-frameScript-effect","interpretation":"helper 근거는 있으나 별도 시각 의미는 추가 검토 대상이다."}]}