{"version":1,"kind":"hwanse-battle-hogyeok-effect-review","status":"static-exe-proof-for-hogyeok-target-overlaid-effect","source":["out/battle_skill_complete_pattern_review.json","out/battle_helper_child_script_review.json","out/cns_rect_review_data.json"],"summary":{"levels":4,"levelsWithVisualHelper":3,"levelsWithBlink":0,"targetOverlayProofRows":3},"interpretationNotes":["호격권은 action row에서 targetClass=enemy-single, positionClass=single-target-ranged-caster-effect로 분류된다.","2~4단 helper #112/#113/#114는 모두 function 0x00414a79, bodyClass target-range child visual spawner다.","해당 helper featureSummary에는 targetRangeLoop=true, writesDisplayXy=true, knownCalls=[allocate display object, target range begin]가 있다.","따라서 울부짖음처럼 화면 중앙 고정 효과가 아니라, 공격 대상 range에서 display 좌표를 잡아 btl_efc 호랑이 얼굴을 대상 위에 띄우는 해석이 EXE 근거와 맞다.","2~4단은 helper 호출 뒤 actor frame #26@6 다음에 0xc1 actor flag wait(mode=0, mask=0x00000002)가 있다. 웹 프리뷰에서는 #26 자세를 helper 종료/hit까지 유지한다.","정확한 몬스터 위 픽셀 오프셋 이름은 아직 미명명이다. 현재 타임라인 프리뷰는 target-overlay anchor로 표시한다."],"rows":[{"level":1,"skillIdHex":"0x0a","mpCost":10,"actorFrames":["t0:#21@2","t2:#22@4","t6:#25@2","t8:#26@2","t10:#26@6","t16:#0@2"],"effectWlkNos":[6],"resultWlkNos":[0],"helperIds":[],"helperId":null,"helperBehavior":null,"helperScriptVaHex":null,"helperFunctionVaHex":null,"helperBodyClass":null,"helperCallTicks":[],"helperTargets":[],"helperFrames":[],"effectRects":[],"actorHoldFrame":null,"actorHoldBasis":null,"displayFlagBlink":false,"blinkFlagMaskHex":null,"blinkSegments":[],"actorFlagWaits":[],"targetOverlayEvidence":{"actionTargetClass":"enemy-single","actionPositionClass":"single-target-ranged-caster-effect","basis":["battle action row targetClass=enemy-single"]},"effectVerdict":"actor-only","interpretation":"1단계는 visual helper가 없다. actor 프레임과 WLK만 존재한다."},{"level":2,"skillIdHex":"0x0b","mpCost":10,"actorFrames":["t0:#21@2","t2:#22@4","t6:#25@2","t8:#26@2","t10:#26@6","t16:#0@2"],"effectWlkNos":[6],"resultWlkNos":[0],"helperIds":[112],"helperId":112,"helperBehavior":"single-frameScript-flash","helperScriptVaHex":"0x004badcc","helperFunctionVaHex":"0x00414a79","helperBodyClass":"target-range child visual spawner","helperCallTicks":[10],"helperTargets":["0x004bae04"],"helperFrames":["190@8"],"effectRects":[{"x":480,"y":208,"w":80,"h":80,"index":190,"asset":"btl_efc","frame":190}],"actorHoldFrame":26,"actorHoldBasis":"0xc1 actor flag wait after #26 frame","displayFlagBlink":false,"blinkFlagMaskHex":null,"blinkSegments":[],"actorFlagWaits":[{"tick":16,"vaHex":"0x004d65fc","summary":"actor flag wait mode=0, mask=0x00000002"}],"targetOverlayEvidence":{"actionTargetClass":"enemy-single","actionPositionClass":"single-target-ranged-caster-effect","helperBodyClass":"target-range child visual spawner","targetRangeLoop":true,"writesDisplayXy":true,"knownCalls":["allocate display object","target range begin"],"scriptTableOffsets":["0x00","0x40"],"basis":["battle action row targetClass=enemy-single","battle action row positionClass=single-target-ranged-caster-effect","helper bodyClass=target-range child visual spawner","helper featureSummary.targetRangeLoop=true","helper featureSummary.writesDisplayXy=true"]},"effectVerdict":"target-single-flash","interpretation":"helper가 target-range child visual spawner로 btl_efc#190 한 프레임을 대상 위치에 표시한다."},{"level":3,"skillIdHex":"0x0c","mpCost":9,"actorFrames":["t0:#21@2","t2:#22@4","t6:#23@2","t8:#24@2","t10:#25@2","t12:#26@2","t14:#26@6","t20:#0@2"],"effectWlkNos":[18,6],"resultWlkNos":[0],"helperIds":[113],"helperId":113,"helperBehavior":"multi-frameScript-effect","helperScriptVaHex":"0x004bae1c","helperFunctionVaHex":"0x00414a79","helperBodyClass":"target-range child visual spawner","helperCallTicks":[14],"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,"index":190,"asset":"btl_efc","frame":190}],"actorHoldFrame":26,"actorHoldBasis":"0xc1 actor flag wait after #26 frame","displayFlagBlink":false,"blinkFlagMaskHex":null,"blinkSegments":[],"actorFlagWaits":[{"tick":20,"vaHex":"0x004d65fc","summary":"actor flag wait mode=0, mask=0x00000002"}],"targetOverlayEvidence":{"actionTargetClass":"enemy-single","actionPositionClass":"single-target-ranged-caster-effect","helperBodyClass":"target-range child visual spawner","targetRangeLoop":true,"writesDisplayXy":true,"knownCalls":["allocate display object","target range begin"],"scriptTableOffsets":["0x00","0x40"],"basis":["battle action row targetClass=enemy-single","battle action row positionClass=single-target-ranged-caster-effect","helper bodyClass=target-range child visual spawner","helper featureSummary.targetRangeLoop=true","helper featureSummary.writesDisplayXy=true"]},"effectVerdict":"multi-frameScript-effect","interpretation":"helper 근거는 있으나 시각 의미는 추가 검토 대상이다."},{"level":4,"skillIdHex":"0x0d","mpCost":8,"actorFrames":["t0:#21@2","t2:#22@4","t6:#23@2","t8:#24@2","t10:#23@2","t12:#24@2","t14:#23@2","t16:#24@2","t18:#25@2","t20:#26@2","t22:#26@6","t28:#0@2"],"effectWlkNos":[18,18,18,6],"resultWlkNos":[0],"helperIds":[114],"helperId":114,"helperBehavior":"multi-frameScript-effect","helperScriptVaHex":"0x004baeec","helperFunctionVaHex":"0x00414a79","helperBodyClass":"target-range child visual spawner","helperCallTicks":[22],"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,"index":191,"asset":"btl_efc","frame":191}],"actorHoldFrame":26,"actorHoldBasis":"0xc1 actor flag wait after #26 frame","displayFlagBlink":false,"blinkFlagMaskHex":null,"blinkSegments":[],"actorFlagWaits":[{"tick":28,"vaHex":"0x004d65fc","summary":"actor flag wait mode=0, mask=0x00000002"}],"targetOverlayEvidence":{"actionTargetClass":"enemy-single","actionPositionClass":"single-target-ranged-caster-effect","helperBodyClass":"target-range child visual spawner","targetRangeLoop":true,"writesDisplayXy":true,"knownCalls":["allocate display object","target range begin"],"scriptTableOffsets":["0x00","0x40"],"basis":["battle action row targetClass=enemy-single","battle action row positionClass=single-target-ranged-caster-effect","helper bodyClass=target-range child visual spawner","helper featureSummary.targetRangeLoop=true","helper featureSummary.writesDisplayXy=true"]},"effectVerdict":"multi-frameScript-effect","interpretation":"helper 근거는 있으나 시각 의미는 추가 검토 대상이다."}]}