{"version":1,"kind":"hwanse-battle-skill-complete-pattern-review","source":["out/battle_action_event_timeline_review.json","out/battle_effect_semantics_review.json","out/battle_caster_position_rule_review.json","out/battle_frame_gate_review.json","out/battle_sound_role_review.json","out/battle_skill_pattern_review.json","out/battle_helper_visual_behavior_review.json","out/battle_skill_timeline_canonical.json"],"status":"aggregated-skill-pattern-evidence","summary":{"rows":156,"rowsWithHelper":96,"rowsWithHelperLifecycle":60,"rowsWithChildMotionLoop":5,"rowsWithBlinkHelper":0,"rowsWithRepeatLoop":18,"rowsWithSupportPolicy":25,"rowsWithUnresolvedFlags":0,"canonicalConfirmedRows":156,"legacyNeedsOverriddenByCanonical":43,"renderTrackCounts":{"actor-melee-or-dash":55,"support-or-status":25,"ranged-projectile-or-beam":16,"self-prep-actor-hit":2,"caster-action-screen-hit":24,"screen-wide-effect":23,"spawned-child-display-flow":9,"simple-screen-hit":1,"display-list-cleanup-flow":1},"implementationStateCounts":{"actor-frame-inferred":5,"actor-frame-mostly-promoted":49,"needs-ui/status-effect-policy":25,"needs-child-helper-script-runner":34,"actor-frame-self-prep":2,"actor-frame-plus-helper":27,"needs-helper-target-promotion":9,"actor-frame-simple-effect":1,"actor-frame-clone-or-spread-placement":2,"actor-frame-special-placement":1,"helper-cleanup-evidence-only":1},"effectiveImplementationStateCounts":{"actor-frame-inferred":5,"actor-frame-mostly-promoted":49,"canonical-confirmed; UI/status policy":25,"canonical-confirmed; runner consumes canonical timeline":43,"actor-frame-self-prep":2,"actor-frame-plus-helper":27,"actor-frame-simple-effect":1,"actor-frame-clone-or-spread-placement":2,"actor-frame-special-placement":1,"helper-cleanup-evidence-only":1},"canonicalTimelineStatusCounts":{"confirmed":156},"canonicalAlignmentClassCounts":{"start-confirmed":53,"visual-confirmed":103},"casterRuleCounts":{"target-front-basic-implicit":5,"target-front-direct":19,"self-support":21,"target-front-implicit-local-combo":20,"home-approach-target":7,"target-front-then-pierce":3,"target-fixed-side-direct":5,"self-prep-target-front-local-combo":2,"caster-local-all-target-action":24,"screen-or-ranged-all-target-effect":22,"self-prep-screen-all-target-effect":3,"caster-ranged-effect":7,"all-target-no-promoted-position":1,"clone-spread-direct":7,"target-opposite-side-motion":1,"ally-single-support":2,"ally-all-support":1,"home-pierce-through":1,"target-side-direct":5},"positionBucketCounts":{"몬스터 앞":46,"자기/아군 지원":24,"돌진/접근":7,"관통":4,"고정 측면":5,"제자리/아군측":25,"맵/화면 전체":25,"떨어져서 쏨":7,"사방팔방/분신":7,"몬스터 측면":6},"positionEvidenceTierCounts":{"actor VM 암시 확정":81,"0xbc 위치 opcode 확정":51,"지원 범위 확정":24},"familyPatternCounts":{"hit-count-scaling":71,"visual-scaling":48,"speed-scaling":8,"mixed-fixed-family":9,"constant-fixed-family":20},"helperBehaviorCounts":{"single-frameScript-flash":2,"multi-frameScript-effect":55,"init-frame-effect":7,"direct-frame-spawn":35,"randomized-child-spawn-stream":30,"actor-flag-sync":10,"nested-frameScript-spawn-effect":2,"repeated-direct-frame-spawn":3},"soundModelCounts":{"result-only":58,"effect-only":28,"effect+result":66,"no-action-wlk":4}},"interpretationNotes":["이 파일은 새 분석을 invent하지 않고, 이미 EXE에서 승격된 actor VM, helper VM, WLK, 위치 규칙, render track 정보를 기술 단위로 결합한다.","helper lifecycle은 반복 child spawn, root counter, child motion loop 등 helper 내부 흐름을 의미한다.","battle_skill_timeline_canonical.json이 confirmed로 승격한 기술은 구 implementationState의 needs-child-helper-script-runner/needs-helper-target-promotion보다 우선한다.","support/status UI policy는 공격 타임라인 누락이 아니라 도주, 방어, 회복, 취기/도발/눈요기 같은 UI/상태 처리 분기다.","positionConfidence가 medium인 항목은 EXE 근거는 있으나 최종 화면 좌표/상황별 배치가 더 필요할 수 있다."],"rows":[{"recordKey":"ataho:0x01","ownerKey":"ataho","ownerName":"아타호","skillName":"정권","familyName":"display-table fallback","skillIdHex":"0x01","levelOrFixed":null,"targetClass":"enemy-single","mpCost":0,"hitCount":1,"frameSequence":[12,13,0],"expandedFrameGateSequence":[{"tick":0,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":6,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[4],"soundModel":"result-only","soundCalls":[{"tick":4,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d63a8"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-inferred","effectiveImplementationState":"actor-frame-inferred","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:ataho:0x01","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d6398","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-front-basic-implicit","casterRule":"target-front-basic-implicit","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["display stream has hit/result evidence but no explicit movement; surrounding battle placement supplies the close target-front anchor for basic/local strikes"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d6398","opcode":"0x21","summary":"set sprite=0x11, frame=12, gate=2, mode=0","spriteHex":"0x11","frame":12,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d63a0","opcode":"0x21","summary":"set sprite=0x11, frame=13, gate=2, mode=0","spriteHex":"0x11","frame":13,"gate":2},{"tick":4,"kind":"result-sound","vaHex":"0x004d63a8","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":4,"kind":"actor-flag","vaHex":"0x004d63ac","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":4,"kind":"actor-flag","vaHex":"0x004d63b4","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":4,"kind":"wait","vaHex":"0x004d63bc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":4,"kind":"actor-frame","vaHex":"0x004d63c0","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[{"tick":4,"soundVaHex":"0x004d63a8","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d63ac","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d63b4","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d63bc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x02","ownerKey":"ataho","ownerName":"아타호","skillName":"돌려차기","familyName":"display-table fallback","skillIdHex":"0x02","levelOrFixed":null,"targetClass":"enemy-single","mpCost":0,"hitCount":1,"frameSequence":[8,9,10,11,0],"expandedFrameGateSequence":[{"tick":0,"frame":8,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":9,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":10,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":11,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":14,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[4],"soundModel":"result-only","soundCalls":[{"tick":12,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d63f8"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:ataho:0x02","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d63d4","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-front-direct-placement","casterRule":"target-front-direct","startAnchor":"target-front","motionKind":"teleport","motionTarget":"target-front","positionConfidence":"high","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 3 fixes the actor at target-front before frames"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004d63d4","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d63d8","opcode":"0x21","summary":"set sprite=0x11, frame=8, gate=4, mode=0","spriteHex":"0x11","frame":8,"gate":4},{"tick":4,"kind":"actor-frame","vaHex":"0x004d63e0","opcode":"0x21","summary":"set sprite=0x11, frame=9, gate=2, mode=0","spriteHex":"0x11","frame":9,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x004d63e8","opcode":"0x21","summary":"set sprite=0x11, frame=10, gate=4, mode=0","spriteHex":"0x11","frame":10,"gate":4},{"tick":10,"kind":"actor-frame","vaHex":"0x004d63f0","opcode":"0x21","summary":"set sprite=0x11, frame=11, gate=2, mode=0","spriteHex":"0x11","frame":11,"gate":2},{"tick":12,"kind":"result-sound","vaHex":"0x004d63f8","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x004d63fc","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x004d6404","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x004d640c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d6410","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":14,"kind":"movement","vaHex":"0x004d6418","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":12,"soundVaHex":"0x004d63f8","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d63fc","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6404","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d640c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x03","ownerKey":"ataho","ownerName":"아타호","skillName":"던지기","familyName":"display-table fallback","skillIdHex":"0x03","levelOrFixed":null,"targetClass":"enemy-single","mpCost":0,"hitCount":1,"frameSequence":[51,52,0],"expandedFrameGateSequence":[{"tick":0,"frame":51,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":52,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":6,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[18],"soundModel":"result-only","soundCalls":[{"tick":4,"opcode":"0xc2","wlkNo":18,"normalWlkNo":18,"altWlkNo":14,"mode":1,"role":"result normal with alternate operand","vaHex":"0x004d643c"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:ataho:0x03","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d6428","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-front-direct-placement","casterRule":"target-front-direct","startAnchor":"target-front","motionKind":"teleport","motionTarget":"target-front","positionConfidence":"high","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 3 fixes the actor at target-front before frames"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004d6428","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d642c","opcode":"0x21","summary":"set sprite=0x11, frame=51, gate=2, mode=0","spriteHex":"0x11","frame":51,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d6434","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=2, mode=0","spriteHex":"0x11","frame":52,"gate":2},{"tick":4,"kind":"result-sound","vaHex":"0x004d643c","opcode":"0xc2","summary":"WLK id 18 (normal id 18, alt id 14, mode=1)","wlkNo":18,"normalWlkNo":18,"altWlkNo":14,"mode":1},{"tick":4,"kind":"actor-flag","vaHex":"0x004d6440","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":4,"kind":"actor-flag","vaHex":"0x004d6448","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":4,"kind":"wait","vaHex":"0x004d6450","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":4,"kind":"actor-frame","vaHex":"0x004d6454","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":6,"kind":"movement","vaHex":"0x004d645c","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":4,"soundVaHex":"0x004d643c","normalWlkNo":18,"altWlkNo":14,"mode":1,"flags":[{"vaHex":"0x004d6440","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6448","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6450","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x04","ownerKey":"ataho","ownerName":"아타호","skillName":"다리후리기","familyName":"display-table fallback","skillIdHex":"0x04","levelOrFixed":null,"targetClass":"enemy-single","mpCost":0,"hitCount":1,"frameSequence":[51,52,0],"expandedFrameGateSequence":[{"tick":0,"frame":51,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":52,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":6,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[3],"soundModel":"result-only","soundCalls":[{"tick":4,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d647c"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-inferred","effectiveImplementationState":"actor-frame-inferred","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:ataho:0x04","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d646c","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-front-basic-implicit","casterRule":"target-front-basic-implicit","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["display stream has hit/result evidence but no explicit movement; surrounding battle placement supplies the close target-front anchor for basic/local strikes"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d646c","opcode":"0x21","summary":"set sprite=0x11, frame=51, gate=2, mode=0","spriteHex":"0x11","frame":51,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d6474","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=2, mode=0","spriteHex":"0x11","frame":52,"gate":2},{"tick":4,"kind":"result-sound","vaHex":"0x004d647c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":4,"kind":"actor-flag","vaHex":"0x004d6480","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":4,"kind":"actor-flag","vaHex":"0x004d6488","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":4,"kind":"wait","vaHex":"0x004d6490","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":4,"kind":"actor-frame","vaHex":"0x004d6494","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[{"tick":4,"soundVaHex":"0x004d647c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6480","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6488","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6490","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x05","ownerKey":"ataho","ownerName":"아타호","skillName":"마시기","familyName":"display-table fallback","skillIdHex":"0x05","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[40,41,42,43,42,43,42,43,41,40,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":34,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[23,23,23],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64d0"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64e4"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64f8"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x05","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d64a8","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d64a8","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d64b0","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d64b8","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d64c0","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d64c8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d64d0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d64d4","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d64dc","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d64e4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d64e8","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d64f0","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d64f8","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d64fc","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d6504","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d650c","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d6514","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-write","vaHex":"0x004d651c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-write","vaHex":"0x004d6524","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-frame","vaHex":"0x004d652c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","caster-position-rule","render:support-or-status","sound:effect-only"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x06","ownerKey":"ataho","ownerName":"아타호","skillName":"마시기","familyName":"display-table fallback","skillIdHex":"0x06","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[40,41,42,43,42,43,42,43,41,40,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":34,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[23,23,23],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64d0"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64e4"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64f8"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x06","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d64a8","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d64a8","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d64b0","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d64b8","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d64c0","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d64c8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d64d0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d64d4","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d64dc","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d64e4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d64e8","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d64f0","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d64f8","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d64fc","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d6504","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d650c","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d6514","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-write","vaHex":"0x004d651c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-write","vaHex":"0x004d6524","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-frame","vaHex":"0x004d652c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","caster-position-rule","render:support-or-status","sound:effect-only"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x07","ownerKey":"ataho","ownerName":"아타호","skillName":"마시기","familyName":"display-table fallback","skillIdHex":"0x07","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[40,41,42,43,42,43,42,43,41,40,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":34,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[23,23,23],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64d0"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64e4"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64f8"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x07","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d64a8","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d64a8","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d64b0","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d64b8","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d64c0","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d64c8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d64d0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d64d4","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d64dc","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d64e4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d64e8","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d64f0","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d64f8","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d64fc","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d6504","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d650c","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d6514","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-write","vaHex":"0x004d651c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-write","vaHex":"0x004d6524","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-frame","vaHex":"0x004d652c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","caster-position-rule","render:support-or-status","sound:effect-only"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x08","ownerKey":"ataho","ownerName":"아타호","skillName":"마시기","familyName":"display-table fallback","skillIdHex":"0x08","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[40,41,42,43,42,43,42,43,41,40,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":34,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[23,23,23],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64d0"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64e4"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64f8"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x08","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d64a8","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d64a8","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d64b0","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d64b8","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d64c0","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d64c8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d64d0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d64d4","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d64dc","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d64e4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d64e8","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d64f0","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d64f8","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d64fc","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d6504","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d650c","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d6514","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-write","vaHex":"0x004d651c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-write","vaHex":"0x004d6524","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-frame","vaHex":"0x004d652c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","caster-position-rule","render:support-or-status","sound:effect-only"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x09","ownerKey":"ataho","ownerName":"아타호","skillName":"마시기","familyName":"display-table fallback","skillIdHex":"0x09","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[40,41,42,43,42,43,42,43,41,40,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":34,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[23,23,23],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64d0"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64e4"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64f8"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x09","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d64a8","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d64a8","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d64b0","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d64b8","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d64c0","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d64c8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d64d0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d64d4","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d64dc","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d64e4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d64e8","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d64f0","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d64f8","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d64fc","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d6504","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d650c","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d6514","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-write","vaHex":"0x004d651c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-write","vaHex":"0x004d6524","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-frame","vaHex":"0x004d652c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","caster-position-rule","render:support-or-status","sound:effect-only"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x0a","ownerKey":"ataho","ownerName":"아타호","skillName":"호격권","familyName":"호격권","skillIdHex":"0x0a","levelOrFixed":1,"targetClass":"enemy-single","mpCost":10,"hitCount":1,"frameSequence":[21,22,25,26,26,0],"expandedFrameGateSequence":[{"tick":0,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":22,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":26,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":18,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[6],"resultWlkNos":[0],"soundModel":"effect-only","soundCalls":[{"tick":6,"opcode":"0x24","wlkNo":6,"effectArgsHex":"01 00 06","role":"effect/cast cue","vaHex":"0x004d65a4"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"ranged-projectile-or-beam","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"개인기지만 target-front가 아니라 수평 거리에서 helper/effect를 쏘는 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:ataho:0x0a","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6540","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-ranged-caster-effect","casterRule":"target-front-implicit-local-combo","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has actor/display local x/y writes but no movement selector; treat as implicit close target-front combo","helper/effect cues are attached effects, not enough by themselves to classify the caster as ranged"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 6, 8, 12, effect WLK count: 1, 1, 2, 4"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d6540","opcode":"0x21","summary":"set sprite=0x11, frame=21, gate=2, mode=0","spriteHex":"0x11","frame":21,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d6548","opcode":"0x21","summary":"set sprite=0x11, frame=22, gate=4, mode=0","spriteHex":"0x11","frame":22,"gate":4},{"tick":6,"kind":"actor-write","vaHex":"0x004d659c","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":6,"kind":"effect-sound","vaHex":"0x004d65a4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 06; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":6,"effectArgsHex":"01 00 06"},{"tick":6,"kind":"actor-frame","vaHex":"0x004d65a8","opcode":"0x21","summary":"set sprite=0x11, frame=25, gate=2, mode=0","spriteHex":"0x11","frame":25,"gate":2},{"tick":8,"kind":"actor-frame","vaHex":"0x004d65b0","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=2, mode=0","spriteHex":"0x11","frame":26,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004d65ec","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=6, mode=0","spriteHex":"0x11","frame":26,"gate":6},{"tick":16,"kind":"result-sound","vaHex":"0x004d6604","opcode":"0xc2","summary":"WLK id 00 (normal id 00, alt id 00, mode=2)","wlkNo":0,"normalWlkNo":0,"altWlkNo":0,"mode":2},{"tick":16,"kind":"actor-flag","vaHex":"0x004d6608","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":16,"kind":"actor-flag","vaHex":"0x004d6610","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":16,"kind":"wait","vaHex":"0x004d6618","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":16,"kind":"actor-write","vaHex":"0x004d661c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":16,"kind":"actor-frame","vaHex":"0x004d6624","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[{"tick":16,"soundVaHex":"0x004d6604","normalWlkNo":0,"altWlkNo":0,"mode":2,"flags":[{"vaHex":"0x004d6608","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6610","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6618","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:ranged-projectile-or-beam","sound:effect-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x0b","ownerKey":"ataho","ownerName":"아타호","skillName":"호격권","familyName":"호격권","skillIdHex":"0x0b","levelOrFixed":2,"targetClass":"enemy-single","mpCost":10,"hitCount":1,"frameSequence":[21,22,25,26,26,0],"expandedFrameGateSequence":[{"tick":0,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":22,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":26,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":18,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[6],"resultWlkNos":[0],"soundModel":"effect-only","soundCalls":[{"tick":6,"opcode":"0x24","wlkNo":6,"effectArgsHex":"01 00 06","role":"effect/cast cue","vaHex":"0x004d65a4"}],"helperIds":[112],"helperFacts":[{"helperId":112,"behaviorClass":"single-frameScript-flash","frameScripts":[{"targetVaHex":"0x004bae04","startTick":0,"durationGate":8,"stopReason":"destroy/end at 0x004bae18","frames":["190@8"],"frameCount":1,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["single 0x20 frameScript frame with EXE gate"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"ranged-projectile-or-beam","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"개인기지만 target-front가 아니라 수평 거리에서 helper/effect를 쏘는 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:ataho:0x0b","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6540","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-ranged-caster-effect","casterRule":"target-front-implicit-local-combo","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has actor/display local x/y writes but no movement selector; treat as implicit close target-front combo","helper/effect cues are attached effects, not enough by themselves to classify the caster as ranged"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 6, 8, 12, effect WLK count: 1, 1, 2, 4"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d6540","opcode":"0x21","summary":"set sprite=0x11, frame=21, gate=2, mode=0","spriteHex":"0x11","frame":21,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d6548","opcode":"0x21","summary":"set sprite=0x11, frame=22, gate=4, mode=0","spriteHex":"0x11","frame":22,"gate":4},{"tick":6,"kind":"actor-write","vaHex":"0x004d659c","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":6,"kind":"effect-sound","vaHex":"0x004d65a4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 06; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":6,"effectArgsHex":"01 00 06"},{"tick":6,"kind":"actor-frame","vaHex":"0x004d65a8","opcode":"0x21","summary":"set sprite=0x11, frame=25, gate=2, mode=0","spriteHex":"0x11","frame":25,"gate":2},{"tick":8,"kind":"actor-frame","vaHex":"0x004d65b0","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=2, mode=0","spriteHex":"0x11","frame":26,"gate":2},{"tick":10,"kind":"helper-call","vaHex":"0x004d65d0","opcode":"0xbd","summary":"helper-call id=112; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":112},{"tick":10,"kind":"actor-frame","vaHex":"0x004d65ec","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=6, mode=0","spriteHex":"0x11","frame":26,"gate":6},{"tick":16,"kind":"wait","vaHex":"0x004d65fc","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":16,"kind":"result-sound","vaHex":"0x004d6604","opcode":"0xc2","summary":"WLK id 00 (normal id 00, alt id 00, mode=2)","wlkNo":0,"normalWlkNo":0,"altWlkNo":0,"mode":2},{"tick":16,"kind":"actor-flag","vaHex":"0x004d6608","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":16,"kind":"actor-flag","vaHex":"0x004d6610","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":16,"kind":"wait","vaHex":"0x004d6618","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":16,"kind":"actor-write","vaHex":"0x004d661c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":16,"kind":"actor-frame","vaHex":"0x004d6624","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[{"tick":16,"soundVaHex":"0x004d6604","normalWlkNo":0,"altWlkNo":0,"mode":2,"flags":[{"vaHex":"0x004d6608","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6610","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6618","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:ranged-projectile-or-beam","sound:effect-only","helper:single-frameScript-flash"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x0c","ownerKey":"ataho","ownerName":"아타호","skillName":"호격권","familyName":"호격권","skillIdHex":"0x0c","levelOrFixed":3,"targetClass":"enemy-single","mpCost":9,"hitCount":1,"frameSequence":[21,22,23,24,25,26,26,0],"expandedFrameGateSequence":[{"tick":0,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":22,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":24,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":26,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":22,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[18,6],"resultWlkNos":[0],"soundModel":"effect-only","soundCalls":[{"tick":6,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004d6588"},{"tick":10,"opcode":"0x24","wlkNo":6,"effectArgsHex":"01 00 06","role":"effect/cast cue","vaHex":"0x004d65a4"}],"helperIds":[113],"helperFacts":[{"helperId":113,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004bae54","startTick":0,"durationGate":35,"stopReason":"destroy/end at 0x004baee8","frames":["190@2","190@6","190@2","190@4","190@2","190@3","190@2","190@2","190@12"],"frameCount":9,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"ranged-projectile-or-beam","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"개인기지만 target-front가 아니라 수평 거리에서 helper/effect를 쏘는 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:ataho:0x0c","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6540","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-ranged-caster-effect","casterRule":"target-front-implicit-local-combo","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has actor/display local x/y writes but no movement selector; treat as implicit close target-front combo","helper/effect cues are attached effects, not enough by themselves to classify the caster as ranged"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 6, 8, 12, effect WLK count: 1, 1, 2, 4"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d6540","opcode":"0x21","summary":"set sprite=0x11, frame=21, gate=2, mode=0","spriteHex":"0x11","frame":21,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d6548","opcode":"0x21","summary":"set sprite=0x11, frame=22, gate=4, mode=0","spriteHex":"0x11","frame":22,"gate":4},{"tick":6,"kind":"effect-sound","vaHex":"0x004d6588","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":6,"kind":"actor-frame","vaHex":"0x004d658c","opcode":"0x21","summary":"set sprite=0x11, frame=23, gate=2, mode=0","spriteHex":"0x11","frame":23,"gate":2},{"tick":8,"kind":"actor-frame","vaHex":"0x004d6594","opcode":"0x21","summary":"set sprite=0x11, frame=24, gate=2, mode=0","spriteHex":"0x11","frame":24,"gate":2},{"tick":10,"kind":"actor-write","vaHex":"0x004d659c","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":10,"kind":"effect-sound","vaHex":"0x004d65a4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 06; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":6,"effectArgsHex":"01 00 06"},{"tick":10,"kind":"actor-frame","vaHex":"0x004d65a8","opcode":"0x21","summary":"set sprite=0x11, frame=25, gate=2, mode=0","spriteHex":"0x11","frame":25,"gate":2},{"tick":12,"kind":"actor-frame","vaHex":"0x004d65b0","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=2, mode=0","spriteHex":"0x11","frame":26,"gate":2},{"tick":14,"kind":"helper-call","vaHex":"0x004d65dc","opcode":"0xbd","summary":"helper-call id=113; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":113},{"tick":14,"kind":"actor-frame","vaHex":"0x004d65ec","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=6, mode=0","spriteHex":"0x11","frame":26,"gate":6},{"tick":20,"kind":"wait","vaHex":"0x004d65fc","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":20,"kind":"result-sound","vaHex":"0x004d6604","opcode":"0xc2","summary":"WLK id 00 (normal id 00, alt id 00, mode=2)","wlkNo":0,"normalWlkNo":0,"altWlkNo":0,"mode":2},{"tick":20,"kind":"actor-flag","vaHex":"0x004d6608","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":20,"kind":"actor-flag","vaHex":"0x004d6610","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":20,"kind":"wait","vaHex":"0x004d6618","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":20,"kind":"actor-write","vaHex":"0x004d661c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":20,"kind":"actor-frame","vaHex":"0x004d6624","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[{"tick":20,"soundVaHex":"0x004d6604","normalWlkNo":0,"altWlkNo":0,"mode":2,"flags":[{"vaHex":"0x004d6608","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6610","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6618","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:ranged-projectile-or-beam","sound:effect-only","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x0d","ownerKey":"ataho","ownerName":"아타호","skillName":"호격권","familyName":"호격권","skillIdHex":"0x0d","levelOrFixed":4,"targetClass":"enemy-single","mpCost":8,"hitCount":1,"frameSequence":[21,22,23,24,23,24,23,24,25,26,26,0],"expandedFrameGateSequence":[{"tick":0,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":22,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":24,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":24,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":24,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":26,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":30,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[18,18,18,6],"resultWlkNos":[0],"soundModel":"effect-only","soundCalls":[{"tick":6,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004d6560"},{"tick":10,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004d6574"},{"tick":14,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004d6588"},{"tick":18,"opcode":"0x24","wlkNo":6,"effectArgsHex":"01 00 06","role":"effect/cast cue","vaHex":"0x004d65a4"}],"helperIds":[114],"helperFacts":[{"helperId":114,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004baf24","startTick":0,"durationGate":61,"stopReason":"destroy/end at 0x004baff8","frames":["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"],"frameCount":13,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"ranged-projectile-or-beam","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"개인기지만 target-front가 아니라 수평 거리에서 helper/effect를 쏘는 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:ataho:0x0d","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6540","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-ranged-caster-effect","casterRule":"target-front-implicit-local-combo","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has actor/display local x/y writes but no movement selector; treat as implicit close target-front combo","helper/effect cues are attached effects, not enough by themselves to classify the caster as ranged"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 6, 8, 12, effect WLK count: 1, 1, 2, 4"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d6540","opcode":"0x21","summary":"set sprite=0x11, frame=21, gate=2, mode=0","spriteHex":"0x11","frame":21,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d6548","opcode":"0x21","summary":"set sprite=0x11, frame=22, gate=4, mode=0","spriteHex":"0x11","frame":22,"gate":4},{"tick":6,"kind":"effect-sound","vaHex":"0x004d6560","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":6,"kind":"actor-frame","vaHex":"0x004d6564","opcode":"0x21","summary":"set sprite=0x11, frame=23, gate=2, mode=0","spriteHex":"0x11","frame":23,"gate":2},{"tick":8,"kind":"actor-frame","vaHex":"0x004d656c","opcode":"0x21","summary":"set sprite=0x11, frame=24, gate=2, mode=0","spriteHex":"0x11","frame":24,"gate":2},{"tick":10,"kind":"effect-sound","vaHex":"0x004d6574","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":10,"kind":"actor-frame","vaHex":"0x004d6578","opcode":"0x21","summary":"set sprite=0x11, frame=23, gate=2, mode=0","spriteHex":"0x11","frame":23,"gate":2},{"tick":12,"kind":"actor-frame","vaHex":"0x004d6580","opcode":"0x21","summary":"set sprite=0x11, frame=24, gate=2, mode=0","spriteHex":"0x11","frame":24,"gate":2},{"tick":14,"kind":"effect-sound","vaHex":"0x004d6588","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":14,"kind":"actor-frame","vaHex":"0x004d658c","opcode":"0x21","summary":"set sprite=0x11, frame=23, gate=2, mode=0","spriteHex":"0x11","frame":23,"gate":2},{"tick":16,"kind":"actor-frame","vaHex":"0x004d6594","opcode":"0x21","summary":"set sprite=0x11, frame=24, gate=2, mode=0","spriteHex":"0x11","frame":24,"gate":2},{"tick":18,"kind":"actor-write","vaHex":"0x004d659c","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":18,"kind":"effect-sound","vaHex":"0x004d65a4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 06; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":6,"effectArgsHex":"01 00 06"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d65a8","opcode":"0x21","summary":"set sprite=0x11, frame=25, gate=2, mode=0","spriteHex":"0x11","frame":25,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x004d65b0","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=2, mode=0","spriteHex":"0x11","frame":26,"gate":2},{"tick":22,"kind":"helper-call","vaHex":"0x004d65e8","opcode":"0xbd","summary":"helper-call id=114; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":114},{"tick":22,"kind":"actor-frame","vaHex":"0x004d65ec","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=6, mode=0","spriteHex":"0x11","frame":26,"gate":6},{"tick":28,"kind":"wait","vaHex":"0x004d65fc","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":28,"kind":"result-sound","vaHex":"0x004d6604","opcode":"0xc2","summary":"WLK id 00 (normal id 00, alt id 00, mode=2)","wlkNo":0,"normalWlkNo":0,"altWlkNo":0,"mode":2},{"tick":28,"kind":"actor-flag","vaHex":"0x004d6608","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":28,"kind":"actor-flag","vaHex":"0x004d6610","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":28,"kind":"wait","vaHex":"0x004d6618","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":28,"kind":"actor-write","vaHex":"0x004d661c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":28,"kind":"actor-frame","vaHex":"0x004d6624","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[{"tick":28,"soundVaHex":"0x004d6604","normalWlkNo":0,"altWlkNo":0,"mode":2,"flags":[{"vaHex":"0x004d6608","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6610","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6618","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:ranged-projectile-or-beam","sound:effect-only","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x0e","ownerKey":"ataho","ownerName":"아타호","skillName":"맹호비상각","familyName":"맹호비상각","skillIdHex":"0x0e","levelOrFixed":1,"targetClass":"enemy-single","mpCost":12,"hitCount":1,"frameSequence":[7,0],"expandedFrameGateSequence":[{"tick":0,"frame":7,"gate":32,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":34,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[16],"resultWlkNos":[4],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":16,"effectArgsHex":"01 00 10","role":"effect/cast cue","vaHex":"0x004d6640"},{"tick":32,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d66a4"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:ataho:0x0e","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6640","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-approach-motion","casterRule":"home-approach-target","startAnchor":"home","motionKind":"dash","motionTarget":"target-front","positionConfidence":"high","positionBucket":"approach","positionBucketLabel":"돌진/접근","battleMapPlacementSummary":"기본 위치에서 출발해 몬스터 앞까지 돌진한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["nonzero movement selector 1 moves the actor from home toward target-front"],"familyPatternClass":"speed-scaling","familyPatternNotes":["movement divisor descends: 32, 24, 16, 8","first frame gate descends: 32, 24, 16, 8","타수 증가가 아니라 같은 동작의 속도/관통 시간 변화로 처리해야 한다."],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004d6640","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 16; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":16,"effectArgsHex":"01 00 10"},{"tick":0,"kind":"movement","vaHex":"0x004d665c","opcode":"0xbc","summary":"interpolated child motion mode=1, selector=1, stepDivisor=32: target-relative center/size-adjusted placement.","selector":1,"divisor":32,"movementMode":1},{"tick":0,"kind":"actor-frame","vaHex":"0x004d6660","opcode":"0x21","summary":"set sprite=0x11, frame=7, gate=32, mode=0","spriteHex":"0x11","frame":7,"gate":32},{"tick":32,"kind":"result-sound","vaHex":"0x004d66a4","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":32,"kind":"actor-flag","vaHex":"0x004d66a8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":32,"kind":"actor-flag","vaHex":"0x004d66b0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":32,"kind":"wait","vaHex":"0x004d66b8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":32,"kind":"movement","vaHex":"0x004d66bc","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0},{"tick":32,"kind":"actor-frame","vaHex":"0x004d66c0","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[{"tick":32,"soundVaHex":"0x004d66a4","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d66a8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d66b0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d66b8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:effect+result"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x0f","ownerKey":"ataho","ownerName":"아타호","skillName":"맹호비상각","familyName":"맹호비상각","skillIdHex":"0x0f","levelOrFixed":2,"targetClass":"enemy-single","mpCost":12,"hitCount":1,"frameSequence":[7,0],"expandedFrameGateSequence":[{"tick":0,"frame":7,"gate":24,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":26,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[16],"resultWlkNos":[4],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":16,"effectArgsHex":"01 00 10","role":"effect/cast cue","vaHex":"0x004d6640"},{"tick":24,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d66a4"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:ataho:0x0f","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6640","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-approach-motion","casterRule":"home-approach-target","startAnchor":"home","motionKind":"dash","motionTarget":"target-front","positionConfidence":"high","positionBucket":"approach","positionBucketLabel":"돌진/접근","battleMapPlacementSummary":"기본 위치에서 출발해 몬스터 앞까지 돌진한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["nonzero movement selector 1 moves the actor from home toward target-front"],"familyPatternClass":"speed-scaling","familyPatternNotes":["movement divisor descends: 32, 24, 16, 8","first frame gate descends: 32, 24, 16, 8","타수 증가가 아니라 같은 동작의 속도/관통 시간 변화로 처리해야 한다."],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004d6640","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 16; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":16,"effectArgsHex":"01 00 10"},{"tick":0,"kind":"movement","vaHex":"0x004d6670","opcode":"0xbc","summary":"interpolated child motion mode=1, selector=1, stepDivisor=24: target-relative center/size-adjusted placement.","selector":1,"divisor":24,"movementMode":1},{"tick":0,"kind":"actor-frame","vaHex":"0x004d6674","opcode":"0x21","summary":"set sprite=0x11, frame=7, gate=24, mode=0","spriteHex":"0x11","frame":7,"gate":24},{"tick":24,"kind":"result-sound","vaHex":"0x004d66a4","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":24,"kind":"actor-flag","vaHex":"0x004d66a8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":24,"kind":"actor-flag","vaHex":"0x004d66b0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":24,"kind":"wait","vaHex":"0x004d66b8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":24,"kind":"movement","vaHex":"0x004d66bc","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0},{"tick":24,"kind":"actor-frame","vaHex":"0x004d66c0","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[{"tick":24,"soundVaHex":"0x004d66a4","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d66a8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d66b0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d66b8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:effect+result"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x10","ownerKey":"ataho","ownerName":"아타호","skillName":"맹호비상각","familyName":"맹호비상각","skillIdHex":"0x10","levelOrFixed":3,"targetClass":"enemy-single","mpCost":11,"hitCount":1,"frameSequence":[7,0],"expandedFrameGateSequence":[{"tick":0,"frame":7,"gate":16,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":18,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[16],"resultWlkNos":[4],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":16,"effectArgsHex":"01 00 10","role":"effect/cast cue","vaHex":"0x004d6640"},{"tick":16,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d66a4"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:ataho:0x10","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6640","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-approach-motion","casterRule":"home-approach-target","startAnchor":"home","motionKind":"dash","motionTarget":"target-front","positionConfidence":"high","positionBucket":"approach","positionBucketLabel":"돌진/접근","battleMapPlacementSummary":"기본 위치에서 출발해 몬스터 앞까지 돌진한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["nonzero movement selector 1 moves the actor from home toward target-front"],"familyPatternClass":"speed-scaling","familyPatternNotes":["movement divisor descends: 32, 24, 16, 8","first frame gate descends: 32, 24, 16, 8","타수 증가가 아니라 같은 동작의 속도/관통 시간 변화로 처리해야 한다."],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004d6640","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 16; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":16,"effectArgsHex":"01 00 10"},{"tick":0,"kind":"movement","vaHex":"0x004d6684","opcode":"0xbc","summary":"interpolated child motion mode=2, selector=1, stepDivisor=16: target-relative center/size-adjusted placement.","selector":1,"divisor":16,"movementMode":2},{"tick":0,"kind":"actor-frame","vaHex":"0x004d6688","opcode":"0x21","summary":"set sprite=0x11, frame=7, gate=16, mode=0","spriteHex":"0x11","frame":7,"gate":16},{"tick":16,"kind":"result-sound","vaHex":"0x004d66a4","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":16,"kind":"actor-flag","vaHex":"0x004d66a8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":16,"kind":"actor-flag","vaHex":"0x004d66b0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":16,"kind":"wait","vaHex":"0x004d66b8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":16,"kind":"movement","vaHex":"0x004d66bc","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0},{"tick":16,"kind":"actor-frame","vaHex":"0x004d66c0","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[{"tick":16,"soundVaHex":"0x004d66a4","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d66a8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d66b0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d66b8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:effect+result"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x11","ownerKey":"ataho","ownerName":"아타호","skillName":"맹호비상각","familyName":"맹호비상각","skillIdHex":"0x11","levelOrFixed":4,"targetClass":"enemy-single","mpCost":10,"hitCount":1,"frameSequence":[7,0],"expandedFrameGateSequence":[{"tick":0,"frame":7,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":10,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[16],"resultWlkNos":[4],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":16,"effectArgsHex":"01 00 10","role":"effect/cast cue","vaHex":"0x004d6640"},{"tick":8,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d66a4"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:ataho:0x11","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6640","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-approach-motion","casterRule":"home-approach-target","startAnchor":"home","motionKind":"dash","motionTarget":"target-front","positionConfidence":"high","positionBucket":"approach","positionBucketLabel":"돌진/접근","battleMapPlacementSummary":"기본 위치에서 출발해 몬스터 앞까지 돌진한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["nonzero movement selector 1 moves the actor from home toward target-front"],"familyPatternClass":"speed-scaling","familyPatternNotes":["movement divisor descends: 32, 24, 16, 8","first frame gate descends: 32, 24, 16, 8","타수 증가가 아니라 같은 동작의 속도/관통 시간 변화로 처리해야 한다."],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004d6640","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 16; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":16,"effectArgsHex":"01 00 10"},{"tick":0,"kind":"movement","vaHex":"0x004d6698","opcode":"0xbc","summary":"interpolated child motion mode=3, selector=1, stepDivisor=8: target-relative center/size-adjusted placement.","selector":1,"divisor":8,"movementMode":3},{"tick":0,"kind":"actor-frame","vaHex":"0x004d669c","opcode":"0x21","summary":"set sprite=0x11, frame=7, gate=8, mode=0","spriteHex":"0x11","frame":7,"gate":8},{"tick":8,"kind":"result-sound","vaHex":"0x004d66a4","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":8,"kind":"actor-flag","vaHex":"0x004d66a8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":8,"kind":"actor-flag","vaHex":"0x004d66b0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":8,"kind":"wait","vaHex":"0x004d66b8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":8,"kind":"movement","vaHex":"0x004d66bc","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0},{"tick":8,"kind":"actor-frame","vaHex":"0x004d66c0","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[{"tick":8,"soundVaHex":"0x004d66a4","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d66a8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d66b0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d66b8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:effect+result"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x12","ownerKey":"ataho","ownerName":"아타호","skillName":"폭전축","familyName":"폭전축/퍽전축","skillIdHex":"0x12","levelOrFixed":1,"targetClass":"enemy-single","mpCost":15,"hitCount":1,"frameSequence":[3,4,4,5,6,6,3,4,0],"expandedFrameGateSequence":[{"tick":0,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":4,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":5,"frame":4,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":5,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":4,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":20,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[5],"soundModel":"result-only","soundCalls":[{"tick":8,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d673c"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:ataho:0x12","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d66d4","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-front-direct-placement","casterRule":"target-front-direct","startAnchor":"target-front","motionKind":"teleport","motionTarget":"target-front","positionConfidence":"high","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 3 fixes the actor at target-front before frames"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 2, 3","0xc2 result sound count changes: 1, 1, 2, 3"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004d66d4","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d66d8","opcode":"0x21","summary":"set sprite=0x11, frame=3, gate=2, mode=0","spriteHex":"0x11","frame":3,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d66e0","opcode":"0x21","summary":"set sprite=0x11, frame=4, gate=3, mode=0","spriteHex":"0x11","frame":4,"gate":3},{"tick":5,"kind":"actor-frame","vaHex":"0x004d671c","opcode":"0x21","summary":"set sprite=0x11, frame=4, gate=1, mode=0","spriteHex":"0x11","frame":4,"gate":1},{"tick":6,"kind":"actor-write","vaHex":"0x004d6724","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":6,"kind":"actor-write","vaHex":"0x004d672c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":6,"kind":"actor-frame","vaHex":"0x004d6734","opcode":"0x21","summary":"set sprite=0x11, frame=5, gate=2, mode=0","spriteHex":"0x11","frame":5,"gate":2},{"tick":8,"kind":"result-sound","vaHex":"0x004d673c","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":8,"kind":"actor-flag","vaHex":"0x004d6740","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":8,"kind":"actor-flag","vaHex":"0x004d6748","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":8,"kind":"wait","vaHex":"0x004d6750","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":8,"kind":"actor-frame","vaHex":"0x004d6754","opcode":"0x21","summary":"set sprite=0x11, frame=6, gate=2, mode=0","spriteHex":"0x11","frame":6,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004d677c","opcode":"0x21","summary":"set sprite=0x11, frame=6, gate=2, mode=0","spriteHex":"0x11","frame":6,"gate":2},{"tick":12,"kind":"actor-write","vaHex":"0x004d67a4","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":12,"kind":"actor-frame","vaHex":"0x004d67ac","opcode":"0x21","summary":"set sprite=0x11, frame=3, gate=2, mode=0","spriteHex":"0x11","frame":3,"gate":2},{"tick":14,"kind":"actor-frame","vaHex":"0x004d67b4","opcode":"0x21","summary":"set sprite=0x11, frame=4, gate=4, mode=0","spriteHex":"0x11","frame":4,"gate":4},{"tick":18,"kind":"actor-frame","vaHex":"0x004d67bc","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":20,"kind":"movement","vaHex":"0x004d67c4","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":8,"soundVaHex":"0x004d673c","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6740","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6748","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6750","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x13","ownerKey":"ataho","ownerName":"아타호","skillName":"폭전축","familyName":"폭전축/퍽전축","skillIdHex":"0x13","levelOrFixed":2,"targetClass":"enemy-single","mpCost":15,"hitCount":1,"frameSequence":[3,4,4,5,6,6,3,4,0],"expandedFrameGateSequence":[{"tick":0,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":4,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":5,"frame":4,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":5,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":4,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":20,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[5],"soundModel":"result-only","soundCalls":[{"tick":8,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d673c"}],"helperIds":[115],"helperFacts":[{"helperId":115,"behaviorClass":"init-frame-effect","frameScripts":[],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004bb03c","fieldHex":"0x8c","role":"unknown-root-branch","targetVaHex":"0x004bb05c","condition":"word conditional branch external-static-target if left:display.word[+0x8c] == right:imm.word=0x0000 -> 0x004bb05c","targetSnippet":[{"vaHex":"0x004bb05c","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x8e] == right:imm.word=0x0000 -> 0x004bb098"},{"vaHex":"0x004bb068","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004bb06c","opcode":"0x12","category":"write","summary":"set display/actor field +0x58, source +0x88, mode=0xa0"},{"vaHex":"0x004bb070","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, source +0x20, mode=0xa2"},{"vaHex":"0x004bb074","opcode":"0x12","category":"write","summary":"div display/actor field +0x58, imm=0x00080000 (8px)"},{"vaHex":"0x004bb07c","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:display.byte[+0x58] add= source:display.byte[+0xe6]"},{"vaHex":"0x004bb080","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:display.byte[+0xe7] = source:display.byte[+0x58]"},{"vaHex":"0x004bb084","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"}]}],"childMotionLoops":[],"interpretation":[],"notes":["child init-block writes display.spriteFrame +0x28 directly"]}],"helperRole":"visual-helper-id-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:ataho:0x13","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d66d4","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-front-direct-placement","casterRule":"target-front-direct","startAnchor":"target-front","motionKind":"teleport","motionTarget":"target-front","positionConfidence":"high","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 3 fixes the actor at target-front before frames"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 2, 3","0xc2 result sound count changes: 1, 1, 2, 3"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004d66d4","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d66d8","opcode":"0x21","summary":"set sprite=0x11, frame=3, gate=2, mode=0","spriteHex":"0x11","frame":3,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d66e0","opcode":"0x21","summary":"set sprite=0x11, frame=4, gate=3, mode=0","spriteHex":"0x11","frame":4,"gate":3},{"tick":5,"kind":"helper-call","vaHex":"0x004d6700","opcode":"0xbd","summary":"helper-call id=115; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":115},{"tick":5,"kind":"actor-frame","vaHex":"0x004d671c","opcode":"0x21","summary":"set sprite=0x11, frame=4, gate=1, mode=0","spriteHex":"0x11","frame":4,"gate":1},{"tick":6,"kind":"actor-write","vaHex":"0x004d6724","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":6,"kind":"actor-write","vaHex":"0x004d672c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":6,"kind":"actor-frame","vaHex":"0x004d6734","opcode":"0x21","summary":"set sprite=0x11, frame=5, gate=2, mode=0","spriteHex":"0x11","frame":5,"gate":2},{"tick":8,"kind":"result-sound","vaHex":"0x004d673c","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":8,"kind":"actor-flag","vaHex":"0x004d6740","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":8,"kind":"actor-flag","vaHex":"0x004d6748","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":8,"kind":"wait","vaHex":"0x004d6750","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":8,"kind":"actor-frame","vaHex":"0x004d6754","opcode":"0x21","summary":"set sprite=0x11, frame=6, gate=2, mode=0","spriteHex":"0x11","frame":6,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004d677c","opcode":"0x21","summary":"set sprite=0x11, frame=6, gate=2, mode=0","spriteHex":"0x11","frame":6,"gate":2},{"tick":12,"kind":"actor-write","vaHex":"0x004d67a4","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":12,"kind":"actor-frame","vaHex":"0x004d67ac","opcode":"0x21","summary":"set sprite=0x11, frame=3, gate=2, mode=0","spriteHex":"0x11","frame":3,"gate":2},{"tick":14,"kind":"actor-frame","vaHex":"0x004d67b4","opcode":"0x21","summary":"set sprite=0x11, frame=4, gate=4, mode=0","spriteHex":"0x11","frame":4,"gate":4},{"tick":18,"kind":"actor-frame","vaHex":"0x004d67bc","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":20,"kind":"movement","vaHex":"0x004d67c4","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":8,"soundVaHex":"0x004d673c","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6740","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6748","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6750","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only","helper:init-frame-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x14","ownerKey":"ataho","ownerName":"아타호","skillName":"퍽전축","familyName":"폭전축/퍽전축","skillIdHex":"0x14","levelOrFixed":3,"targetClass":"enemy-single","mpCost":14,"hitCount":2,"frameSequence":[3,4,4,5,6,6,3,4,0],"expandedFrameGateSequence":[{"tick":0,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":4,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":5,"frame":4,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":5,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":4,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":20,"repeatLoopCount":0,"hitEventCount":2,"hitClassCounts":{"confirmed-result-hit-window":2},"effectWlkNos":[],"resultWlkNos":[5,4],"soundModel":"result-only","soundCalls":[{"tick":8,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d673c"},{"tick":10,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6764"}],"helperIds":[116],"helperFacts":[{"helperId":116,"behaviorClass":"init-frame-effect","frameScripts":[],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004bb03c","fieldHex":"0x8c","role":"unknown-root-branch","targetVaHex":"0x004bb05c","condition":"word conditional branch external-static-target if left:display.word[+0x8c] == right:imm.word=0x0000 -> 0x004bb05c","targetSnippet":[{"vaHex":"0x004bb05c","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x8e] == right:imm.word=0x0000 -> 0x004bb098"},{"vaHex":"0x004bb068","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004bb06c","opcode":"0x12","category":"write","summary":"set display/actor field +0x58, source +0x88, mode=0xa0"},{"vaHex":"0x004bb070","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, source +0x20, mode=0xa2"},{"vaHex":"0x004bb074","opcode":"0x12","category":"write","summary":"div display/actor field +0x58, imm=0x00080000 (8px)"},{"vaHex":"0x004bb07c","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:display.byte[+0x58] add= source:display.byte[+0xe6]"},{"vaHex":"0x004bb080","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:display.byte[+0xe7] = source:display.byte[+0x58]"},{"vaHex":"0x004bb084","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"}]}],"childMotionLoops":[],"interpretation":[],"notes":["child init-block writes display.spriteFrame +0x28 directly"]}],"helperRole":"visual-helper-id-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:ataho:0x14","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d66d4","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-front-direct-placement","casterRule":"target-front-direct","startAnchor":"target-front","motionKind":"teleport","motionTarget":"target-front","positionConfidence":"high","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 3 fixes the actor at target-front before frames"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 2, 3","0xc2 result sound count changes: 1, 1, 2, 3"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004d66d4","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d66d8","opcode":"0x21","summary":"set sprite=0x11, frame=3, gate=2, mode=0","spriteHex":"0x11","frame":3,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d66e0","opcode":"0x21","summary":"set sprite=0x11, frame=4, gate=3, mode=0","spriteHex":"0x11","frame":4,"gate":3},{"tick":5,"kind":"helper-call","vaHex":"0x004d670c","opcode":"0xbd","summary":"helper-call id=116; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":116},{"tick":5,"kind":"actor-frame","vaHex":"0x004d671c","opcode":"0x21","summary":"set sprite=0x11, frame=4, gate=1, mode=0","spriteHex":"0x11","frame":4,"gate":1},{"tick":6,"kind":"actor-write","vaHex":"0x004d6724","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":6,"kind":"actor-write","vaHex":"0x004d672c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":6,"kind":"actor-frame","vaHex":"0x004d6734","opcode":"0x21","summary":"set sprite=0x11, frame=5, gate=2, mode=0","spriteHex":"0x11","frame":5,"gate":2},{"tick":8,"kind":"result-sound","vaHex":"0x004d673c","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":8,"kind":"actor-flag","vaHex":"0x004d6740","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":8,"kind":"actor-flag","vaHex":"0x004d6748","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":8,"kind":"wait","vaHex":"0x004d6750","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":8,"kind":"actor-frame","vaHex":"0x004d6754","opcode":"0x21","summary":"set sprite=0x11, frame=6, gate=2, mode=0","spriteHex":"0x11","frame":6,"gate":2},{"tick":10,"kind":"result-sound","vaHex":"0x004d6764","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":10,"kind":"actor-flag","vaHex":"0x004d6768","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x004d6770","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x004d6778","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-frame","vaHex":"0x004d677c","opcode":"0x21","summary":"set sprite=0x11, frame=6, gate=2, mode=0","spriteHex":"0x11","frame":6,"gate":2},{"tick":12,"kind":"actor-write","vaHex":"0x004d67a4","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":12,"kind":"actor-frame","vaHex":"0x004d67ac","opcode":"0x21","summary":"set sprite=0x11, frame=3, gate=2, mode=0","spriteHex":"0x11","frame":3,"gate":2},{"tick":14,"kind":"actor-frame","vaHex":"0x004d67b4","opcode":"0x21","summary":"set sprite=0x11, frame=4, gate=4, mode=0","spriteHex":"0x11","frame":4,"gate":4},{"tick":18,"kind":"actor-frame","vaHex":"0x004d67bc","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":20,"kind":"movement","vaHex":"0x004d67c4","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":8,"soundVaHex":"0x004d673c","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6740","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6748","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6750","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":10,"soundVaHex":"0x004d6764","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6768","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6770","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6778","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only","helper:init-frame-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x15","ownerKey":"ataho","ownerName":"아타호","skillName":"폭전축","familyName":"폭전축/퍽전축","skillIdHex":"0x15","levelOrFixed":4,"targetClass":"enemy-single","mpCost":12,"hitCount":3,"frameSequence":[3,4,4,5,6,6,3,4,0],"expandedFrameGateSequence":[{"tick":0,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":4,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":5,"frame":4,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":5,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":4,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":20,"repeatLoopCount":0,"hitEventCount":3,"hitClassCounts":{"confirmed-result-hit-window":3},"effectWlkNos":[],"resultWlkNos":[5,4,3],"soundModel":"result-only","soundCalls":[{"tick":8,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d673c"},{"tick":10,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6764"},{"tick":12,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d678c"}],"helperIds":[117],"helperFacts":[{"helperId":117,"behaviorClass":"init-frame-effect","frameScripts":[],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004bb03c","fieldHex":"0x8c","role":"unknown-root-branch","targetVaHex":"0x004bb05c","condition":"word conditional branch external-static-target if left:display.word[+0x8c] == right:imm.word=0x0000 -> 0x004bb05c","targetSnippet":[{"vaHex":"0x004bb05c","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x8e] == right:imm.word=0x0000 -> 0x004bb098"},{"vaHex":"0x004bb068","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004bb06c","opcode":"0x12","category":"write","summary":"set display/actor field +0x58, source +0x88, mode=0xa0"},{"vaHex":"0x004bb070","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, source +0x20, mode=0xa2"},{"vaHex":"0x004bb074","opcode":"0x12","category":"write","summary":"div display/actor field +0x58, imm=0x00080000 (8px)"},{"vaHex":"0x004bb07c","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:display.byte[+0x58] add= source:display.byte[+0xe6]"},{"vaHex":"0x004bb080","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:display.byte[+0xe7] = source:display.byte[+0x58]"},{"vaHex":"0x004bb084","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"}]}],"childMotionLoops":[],"interpretation":[],"notes":["child init-block writes display.spriteFrame +0x28 directly"]}],"helperRole":"visual-helper-id-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:ataho:0x15","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d66d4","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-front-direct-placement","casterRule":"target-front-direct","startAnchor":"target-front","motionKind":"teleport","motionTarget":"target-front","positionConfidence":"high","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 3 fixes the actor at target-front before frames"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 2, 3","0xc2 result sound count changes: 1, 1, 2, 3"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004d66d4","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d66d8","opcode":"0x21","summary":"set sprite=0x11, frame=3, gate=2, mode=0","spriteHex":"0x11","frame":3,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d66e0","opcode":"0x21","summary":"set sprite=0x11, frame=4, gate=3, mode=0","spriteHex":"0x11","frame":4,"gate":3},{"tick":5,"kind":"helper-call","vaHex":"0x004d6718","opcode":"0xbd","summary":"helper-call id=117; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":117},{"tick":5,"kind":"actor-frame","vaHex":"0x004d671c","opcode":"0x21","summary":"set sprite=0x11, frame=4, gate=1, mode=0","spriteHex":"0x11","frame":4,"gate":1},{"tick":6,"kind":"actor-write","vaHex":"0x004d6724","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":6,"kind":"actor-write","vaHex":"0x004d672c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":6,"kind":"actor-frame","vaHex":"0x004d6734","opcode":"0x21","summary":"set sprite=0x11, frame=5, gate=2, mode=0","spriteHex":"0x11","frame":5,"gate":2},{"tick":8,"kind":"result-sound","vaHex":"0x004d673c","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":8,"kind":"actor-flag","vaHex":"0x004d6740","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":8,"kind":"actor-flag","vaHex":"0x004d6748","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":8,"kind":"wait","vaHex":"0x004d6750","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":8,"kind":"actor-frame","vaHex":"0x004d6754","opcode":"0x21","summary":"set sprite=0x11, frame=6, gate=2, mode=0","spriteHex":"0x11","frame":6,"gate":2},{"tick":10,"kind":"result-sound","vaHex":"0x004d6764","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":10,"kind":"actor-flag","vaHex":"0x004d6768","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x004d6770","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x004d6778","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-frame","vaHex":"0x004d677c","opcode":"0x21","summary":"set sprite=0x11, frame=6, gate=2, mode=0","spriteHex":"0x11","frame":6,"gate":2},{"tick":12,"kind":"result-sound","vaHex":"0x004d678c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x004d6790","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x004d6798","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x004d67a0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-write","vaHex":"0x004d67a4","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":12,"kind":"actor-frame","vaHex":"0x004d67ac","opcode":"0x21","summary":"set sprite=0x11, frame=3, gate=2, mode=0","spriteHex":"0x11","frame":3,"gate":2},{"tick":14,"kind":"actor-frame","vaHex":"0x004d67b4","opcode":"0x21","summary":"set sprite=0x11, frame=4, gate=4, mode=0","spriteHex":"0x11","frame":4,"gate":4},{"tick":18,"kind":"actor-frame","vaHex":"0x004d67bc","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":20,"kind":"movement","vaHex":"0x004d67c4","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":8,"soundVaHex":"0x004d673c","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6740","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6748","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6750","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":10,"soundVaHex":"0x004d6764","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6768","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6770","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6778","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":12,"soundVaHex":"0x004d678c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6790","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6798","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d67a0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only","helper:init-frame-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x16","ownerKey":"ataho","ownerName":"아타호","skillName":"맹호스페셜","familyName":"맹호스페셜","skillIdHex":"0x16","levelOrFixed":1,"targetClass":"enemy-single","mpCost":20,"hitCount":3,"frameSequence":[12,13,21,22,25,26,26,0,8,9,10,11,11,0],"expandedFrameGateSequence":[{"tick":0,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":8,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":9,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":10,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":11,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":11,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":32,"repeatLoopCount":0,"hitEventCount":3,"hitClassCounts":{"confirmed-result-hit-window":3},"effectWlkNos":[],"resultWlkNos":[3,3,4],"soundModel":"result-only","soundCalls":[{"tick":2,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d67e8"},{"tick":12,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6830"},{"tick":28,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6920"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:ataho:0x16","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d67e0","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-front-local-combo-inferred","casterRule":"target-front-implicit-local-combo","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has actor/display local x/y writes but no movement selector; treat as implicit close target-front combo"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 3, 3, 4, 7","0xc2 result sound count changes: 3, 3, 4, 7","frame count changes: 14, 10, 20, 28"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d67e0","opcode":"0x21","summary":"set sprite=0x11, frame=12, gate=2, mode=0","spriteHex":"0x11","frame":12,"gate":2},{"tick":2,"kind":"result-sound","vaHex":"0x004d67e8","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":2,"kind":"actor-frame","vaHex":"0x004d67ec","opcode":"0x21","summary":"set sprite=0x11, frame=13, gate=2, mode=0","spriteHex":"0x11","frame":13,"gate":2},{"tick":4,"kind":"actor-flag","vaHex":"0x004d67f4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":4,"kind":"actor-flag","vaHex":"0x004d67fc","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":4,"kind":"wait","vaHex":"0x004d6804","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":4,"kind":"actor-frame","vaHex":"0x004d6808","opcode":"0x21","summary":"set sprite=0x11, frame=21, gate=2, mode=0","spriteHex":"0x11","frame":21,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x004d6810","opcode":"0x21","summary":"set sprite=0x11, frame=22, gate=2, mode=0","spriteHex":"0x11","frame":22,"gate":2},{"tick":8,"kind":"actor-write","vaHex":"0x004d6818","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004d6820","opcode":"0x21","summary":"set sprite=0x11, frame=25, gate=2, mode=0","spriteHex":"0x11","frame":25,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004d6828","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=2, mode=0","spriteHex":"0x11","frame":26,"gate":2},{"tick":12,"kind":"result-sound","vaHex":"0x004d6830","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x004d6834","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x004d683c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x004d6844","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d6848","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=2, mode=0","spriteHex":"0x11","frame":26,"gate":2},{"tick":14,"kind":"actor-write","vaHex":"0x004d6850","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":14,"kind":"actor-frame","vaHex":"0x004d6858","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":16,"kind":"actor-frame","vaHex":"0x004d68f8","opcode":"0x21","summary":"set sprite=0x11, frame=8, gate=4, mode=0","spriteHex":"0x11","frame":8,"gate":4},{"tick":20,"kind":"actor-frame","vaHex":"0x004d6900","opcode":"0x21","summary":"set sprite=0x11, frame=9, gate=2, mode=0","spriteHex":"0x11","frame":9,"gate":2},{"tick":22,"kind":"actor-frame","vaHex":"0x004d6908","opcode":"0x21","summary":"set sprite=0x11, frame=10, gate=4, mode=0","spriteHex":"0x11","frame":10,"gate":4},{"tick":26,"kind":"actor-frame","vaHex":"0x004d6910","opcode":"0x21","summary":"set sprite=0x11, frame=11, gate=2, mode=0","spriteHex":"0x11","frame":11,"gate":2},{"tick":28,"kind":"result-sound","vaHex":"0x004d6920","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":28,"kind":"actor-flag","vaHex":"0x004d6930","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":28,"kind":"actor-flag","vaHex":"0x004d6938","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":28,"kind":"wait","vaHex":"0x004d6940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":28,"kind":"actor-frame","vaHex":"0x004d6944","opcode":"0x21","summary":"set sprite=0x11, frame=11, gate=2, mode=0","spriteHex":"0x11","frame":11,"gate":2},{"tick":30,"kind":"actor-frame","vaHex":"0x004d69fc","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":32,"kind":"movement","vaHex":"0x004d6a04","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":2,"soundVaHex":"0x004d67e8","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d67f4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d67fc","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6804","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":12,"soundVaHex":"0x004d6830","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6834","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d683c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6844","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":28,"soundVaHex":"0x004d6920","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6930","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6938","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x17","ownerKey":"ataho","ownerName":"아타호","skillName":"맹호스페셜","familyName":"맹호스페셜","skillIdHex":"0x17","levelOrFixed":2,"targetClass":"enemy-single","mpCost":20,"hitCount":3,"frameSequence":[12,13,21,22,25,26,26,0,7,0],"expandedFrameGateSequence":[{"tick":0,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":7,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":22,"repeatLoopCount":0,"hitEventCount":3,"hitClassCounts":{"confirmed-result-hit-window":3},"effectWlkNos":[],"resultWlkNos":[3,3,5],"soundModel":"result-only","soundCalls":[{"tick":2,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d67e8"},{"tick":12,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6830"},{"tick":20,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d69e4"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:ataho:0x17","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d67e0","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-pierce-motion","casterRule":"target-front-then-pierce","startAnchor":"target-front","motionKind":"pierce","motionTarget":"target-through","positionConfidence":"high","positionBucket":"pierce","positionBucketLabel":"관통","battleMapPlacementSummary":"대상 기준선을 지나 화면 반대쪽으로 관통한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["selector 2 occurs after a hit/target-front phase; actor pierces through from target-front"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 3, 3, 4, 7","0xc2 result sound count changes: 3, 3, 4, 7","frame count changes: 14, 10, 20, 28"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d67e0","opcode":"0x21","summary":"set sprite=0x11, frame=12, gate=2, mode=0","spriteHex":"0x11","frame":12,"gate":2},{"tick":2,"kind":"result-sound","vaHex":"0x004d67e8","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":2,"kind":"actor-frame","vaHex":"0x004d67ec","opcode":"0x21","summary":"set sprite=0x11, frame=13, gate=2, mode=0","spriteHex":"0x11","frame":13,"gate":2},{"tick":4,"kind":"actor-flag","vaHex":"0x004d67f4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":4,"kind":"actor-flag","vaHex":"0x004d67fc","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":4,"kind":"wait","vaHex":"0x004d6804","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":4,"kind":"actor-frame","vaHex":"0x004d6808","opcode":"0x21","summary":"set sprite=0x11, frame=21, gate=2, mode=0","spriteHex":"0x11","frame":21,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x004d6810","opcode":"0x21","summary":"set sprite=0x11, frame=22, gate=2, mode=0","spriteHex":"0x11","frame":22,"gate":2},{"tick":8,"kind":"actor-write","vaHex":"0x004d6818","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004d6820","opcode":"0x21","summary":"set sprite=0x11, frame=25, gate=2, mode=0","spriteHex":"0x11","frame":25,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004d6828","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=2, mode=0","spriteHex":"0x11","frame":26,"gate":2},{"tick":12,"kind":"result-sound","vaHex":"0x004d6830","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x004d6834","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x004d683c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x004d6844","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d6848","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=2, mode=0","spriteHex":"0x11","frame":26,"gate":2},{"tick":14,"kind":"actor-write","vaHex":"0x004d6850","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":14,"kind":"actor-frame","vaHex":"0x004d6858","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":16,"kind":"movement","vaHex":"0x004d69d8","opcode":"0xbc","summary":"interpolated child motion mode=1, selector=2, stepDivisor=4: one target-side edge placement; side depends on actor kind.","selector":2,"divisor":4,"movementMode":1},{"tick":16,"kind":"actor-frame","vaHex":"0x004d69dc","opcode":"0x21","summary":"set sprite=0x11, frame=7, gate=4, mode=0","spriteHex":"0x11","frame":7,"gate":4},{"tick":20,"kind":"result-sound","vaHex":"0x004d69e4","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":20,"kind":"actor-flag","vaHex":"0x004d69e8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":20,"kind":"actor-flag","vaHex":"0x004d69f0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":20,"kind":"wait","vaHex":"0x004d69f8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":20,"kind":"actor-frame","vaHex":"0x004d69fc","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":22,"kind":"movement","vaHex":"0x004d6a04","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":2,"soundVaHex":"0x004d67e8","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d67f4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d67fc","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6804","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":12,"soundVaHex":"0x004d6830","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6834","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d683c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6844","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":20,"soundVaHex":"0x004d69e4","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d69e8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d69f0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d69f8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x18","ownerKey":"ataho","ownerName":"아타호","skillName":"맹호스페셜","familyName":"맹호스페셜","skillIdHex":"0x18","levelOrFixed":3,"targetClass":"enemy-single","mpCost":18,"hitCount":4,"frameSequence":[12,13,21,22,25,26,26,0,8,9,10,11,11,3,4,5,6,3,4,0],"expandedFrameGateSequence":[{"tick":0,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":8,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":9,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":10,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":11,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":11,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":4,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":5,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":40,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":42,"frame":4,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":46,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":48,"repeatLoopCount":0,"hitEventCount":4,"hitClassCounts":{"confirmed-result-hit-window":4},"effectWlkNos":[],"resultWlkNos":[3,3,4,4],"soundModel":"result-only","soundCalls":[{"tick":2,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d67e8"},{"tick":12,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6830"},{"tick":28,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6920"},{"tick":40,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6984"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:ataho:0x18","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d67e0","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-front-local-combo-inferred","casterRule":"target-front-implicit-local-combo","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has actor/display local x/y writes but no movement selector; treat as implicit close target-front combo"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 3, 3, 4, 7","0xc2 result sound count changes: 3, 3, 4, 7","frame count changes: 14, 10, 20, 28"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d67e0","opcode":"0x21","summary":"set sprite=0x11, frame=12, gate=2, mode=0","spriteHex":"0x11","frame":12,"gate":2},{"tick":2,"kind":"result-sound","vaHex":"0x004d67e8","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":2,"kind":"actor-frame","vaHex":"0x004d67ec","opcode":"0x21","summary":"set sprite=0x11, frame=13, gate=2, mode=0","spriteHex":"0x11","frame":13,"gate":2},{"tick":4,"kind":"actor-flag","vaHex":"0x004d67f4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":4,"kind":"actor-flag","vaHex":"0x004d67fc","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":4,"kind":"wait","vaHex":"0x004d6804","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":4,"kind":"actor-frame","vaHex":"0x004d6808","opcode":"0x21","summary":"set sprite=0x11, frame=21, gate=2, mode=0","spriteHex":"0x11","frame":21,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x004d6810","opcode":"0x21","summary":"set sprite=0x11, frame=22, gate=2, mode=0","spriteHex":"0x11","frame":22,"gate":2},{"tick":8,"kind":"actor-write","vaHex":"0x004d6818","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004d6820","opcode":"0x21","summary":"set sprite=0x11, frame=25, gate=2, mode=0","spriteHex":"0x11","frame":25,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004d6828","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=2, mode=0","spriteHex":"0x11","frame":26,"gate":2},{"tick":12,"kind":"result-sound","vaHex":"0x004d6830","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x004d6834","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x004d683c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x004d6844","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d6848","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=2, mode=0","spriteHex":"0x11","frame":26,"gate":2},{"tick":14,"kind":"actor-write","vaHex":"0x004d6850","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":14,"kind":"actor-frame","vaHex":"0x004d6858","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":16,"kind":"actor-frame","vaHex":"0x004d68f8","opcode":"0x21","summary":"set sprite=0x11, frame=8, gate=4, mode=0","spriteHex":"0x11","frame":8,"gate":4},{"tick":20,"kind":"actor-frame","vaHex":"0x004d6900","opcode":"0x21","summary":"set sprite=0x11, frame=9, gate=2, mode=0","spriteHex":"0x11","frame":9,"gate":2},{"tick":22,"kind":"actor-frame","vaHex":"0x004d6908","opcode":"0x21","summary":"set sprite=0x11, frame=10, gate=4, mode=0","spriteHex":"0x11","frame":10,"gate":4},{"tick":26,"kind":"actor-frame","vaHex":"0x004d6910","opcode":"0x21","summary":"set sprite=0x11, frame=11, gate=2, mode=0","spriteHex":"0x11","frame":11,"gate":2},{"tick":28,"kind":"result-sound","vaHex":"0x004d6920","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":28,"kind":"actor-flag","vaHex":"0x004d6930","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":28,"kind":"actor-flag","vaHex":"0x004d6938","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":28,"kind":"wait","vaHex":"0x004d6940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":28,"kind":"actor-frame","vaHex":"0x004d6944","opcode":"0x21","summary":"set sprite=0x11, frame=11, gate=2, mode=0","spriteHex":"0x11","frame":11,"gate":2},{"tick":30,"kind":"actor-frame","vaHex":"0x004d6954","opcode":"0x21","summary":"set sprite=0x11, frame=3, gate=2, mode=0","spriteHex":"0x11","frame":3,"gate":2},{"tick":32,"kind":"actor-frame","vaHex":"0x004d695c","opcode":"0x21","summary":"set sprite=0x11, frame=4, gate=4, mode=0","spriteHex":"0x11","frame":4,"gate":4},{"tick":36,"kind":"actor-write","vaHex":"0x004d6964","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":36,"kind":"actor-write","vaHex":"0x004d696c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":36,"kind":"actor-frame","vaHex":"0x004d6974","opcode":"0x21","summary":"set sprite=0x11, frame=5, gate=2, mode=0","spriteHex":"0x11","frame":5,"gate":2},{"tick":38,"kind":"actor-frame","vaHex":"0x004d697c","opcode":"0x21","summary":"set sprite=0x11, frame=6, gate=2, mode=0","spriteHex":"0x11","frame":6,"gate":2},{"tick":40,"kind":"result-sound","vaHex":"0x004d6984","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":40,"kind":"actor-flag","vaHex":"0x004d6988","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":40,"kind":"actor-flag","vaHex":"0x004d6990","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":40,"kind":"wait","vaHex":"0x004d6998","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":40,"kind":"actor-write","vaHex":"0x004d69a4","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":40,"kind":"actor-frame","vaHex":"0x004d69ac","opcode":"0x21","summary":"set sprite=0x11, frame=3, gate=2, mode=0","spriteHex":"0x11","frame":3,"gate":2},{"tick":42,"kind":"actor-frame","vaHex":"0x004d69b4","opcode":"0x21","summary":"set sprite=0x11, frame=4, gate=4, mode=0","spriteHex":"0x11","frame":4,"gate":4},{"tick":46,"kind":"actor-frame","vaHex":"0x004d69fc","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":48,"kind":"movement","vaHex":"0x004d6a04","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":2,"soundVaHex":"0x004d67e8","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d67f4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d67fc","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6804","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":12,"soundVaHex":"0x004d6830","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6834","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d683c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6844","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":28,"soundVaHex":"0x004d6920","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6930","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6938","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":40,"soundVaHex":"0x004d6984","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6988","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6990","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6998","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x19","ownerKey":"ataho","ownerName":"아타호","skillName":"맹호스페셜","familyName":"맹호스페셜","skillIdHex":"0x19","levelOrFixed":4,"targetClass":"enemy-single","mpCost":16,"hitCount":7,"frameSequence":[12,13,21,22,25,26,26,0,12,13,13,0,21,22,25,26,26,8,9,10,11,11,3,4,5,6,7,0],"expandedFrameGateSequence":[{"tick":0,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":22,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":8,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":40,"frame":9,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":42,"frame":10,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":46,"frame":11,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":48,"frame":11,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":50,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":52,"frame":4,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":56,"frame":5,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":58,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":60,"frame":7,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":64,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":66,"repeatLoopCount":0,"hitEventCount":7,"hitClassCounts":{"confirmed-result-hit-window":7},"effectWlkNos":[],"resultWlkNos":[3,3,3,3,5,4,5],"soundModel":"result-only","soundCalls":[{"tick":2,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d67e8"},{"tick":12,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6830"},{"tick":20,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6880"},{"tick":34,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d68d0"},{"tick":48,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d692c"},{"tick":60,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6984"},{"tick":64,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d69e4"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:ataho:0x19","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d67e0","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-pierce-motion","casterRule":"target-front-then-pierce","startAnchor":"target-front","motionKind":"pierce","motionTarget":"target-through","positionConfidence":"high","positionBucket":"pierce","positionBucketLabel":"관통","battleMapPlacementSummary":"대상 기준선을 지나 화면 반대쪽으로 관통한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["selector 2 occurs after a hit/target-front phase; actor pierces through from target-front"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 3, 3, 4, 7","0xc2 result sound count changes: 3, 3, 4, 7","frame count changes: 14, 10, 20, 28"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d67e0","opcode":"0x21","summary":"set sprite=0x11, frame=12, gate=2, mode=0","spriteHex":"0x11","frame":12,"gate":2},{"tick":2,"kind":"result-sound","vaHex":"0x004d67e8","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":2,"kind":"actor-frame","vaHex":"0x004d67ec","opcode":"0x21","summary":"set sprite=0x11, frame=13, gate=2, mode=0","spriteHex":"0x11","frame":13,"gate":2},{"tick":4,"kind":"actor-flag","vaHex":"0x004d67f4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":4,"kind":"actor-flag","vaHex":"0x004d67fc","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":4,"kind":"wait","vaHex":"0x004d6804","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":4,"kind":"actor-frame","vaHex":"0x004d6808","opcode":"0x21","summary":"set sprite=0x11, frame=21, gate=2, mode=0","spriteHex":"0x11","frame":21,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x004d6810","opcode":"0x21","summary":"set sprite=0x11, frame=22, gate=2, mode=0","spriteHex":"0x11","frame":22,"gate":2},{"tick":8,"kind":"actor-write","vaHex":"0x004d6818","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004d6820","opcode":"0x21","summary":"set sprite=0x11, frame=25, gate=2, mode=0","spriteHex":"0x11","frame":25,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004d6828","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=2, mode=0","spriteHex":"0x11","frame":26,"gate":2},{"tick":12,"kind":"result-sound","vaHex":"0x004d6830","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x004d6834","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x004d683c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x004d6844","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d6848","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=2, mode=0","spriteHex":"0x11","frame":26,"gate":2},{"tick":14,"kind":"actor-write","vaHex":"0x004d6850","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":14,"kind":"actor-frame","vaHex":"0x004d6858","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":16,"kind":"actor-frame","vaHex":"0x004d6870","opcode":"0x21","summary":"set sprite=0x11, frame=12, gate=2, mode=0","spriteHex":"0x11","frame":12,"gate":2},{"tick":18,"kind":"actor-frame","vaHex":"0x004d6878","opcode":"0x21","summary":"set sprite=0x11, frame=13, gate=2, mode=0","spriteHex":"0x11","frame":13,"gate":2},{"tick":20,"kind":"result-sound","vaHex":"0x004d6880","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":20,"kind":"actor-flag","vaHex":"0x004d6884","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":20,"kind":"actor-flag","vaHex":"0x004d688c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":20,"kind":"wait","vaHex":"0x004d6894","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":20,"kind":"actor-frame","vaHex":"0x004d6898","opcode":"0x21","summary":"set sprite=0x11, frame=13, gate=2, mode=0","spriteHex":"0x11","frame":13,"gate":2},{"tick":22,"kind":"actor-frame","vaHex":"0x004d68a0","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":24,"kind":"actor-frame","vaHex":"0x004d68a8","opcode":"0x21","summary":"set sprite=0x11, frame=21, gate=2, mode=0","spriteHex":"0x11","frame":21,"gate":2},{"tick":26,"kind":"actor-frame","vaHex":"0x004d68b0","opcode":"0x21","summary":"set sprite=0x11, frame=22, gate=4, mode=0","spriteHex":"0x11","frame":22,"gate":4},{"tick":30,"kind":"actor-write","vaHex":"0x004d68b8","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":30,"kind":"actor-frame","vaHex":"0x004d68c0","opcode":"0x21","summary":"set sprite=0x11, frame=25, gate=2, mode=0","spriteHex":"0x11","frame":25,"gate":2},{"tick":32,"kind":"actor-frame","vaHex":"0x004d68c8","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=2, mode=0","spriteHex":"0x11","frame":26,"gate":2},{"tick":34,"kind":"result-sound","vaHex":"0x004d68d0","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":34,"kind":"actor-flag","vaHex":"0x004d68d4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":34,"kind":"actor-flag","vaHex":"0x004d68dc","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":34,"kind":"wait","vaHex":"0x004d68e4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":34,"kind":"actor-frame","vaHex":"0x004d68e8","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=2, mode=0","spriteHex":"0x11","frame":26,"gate":2},{"tick":36,"kind":"actor-write","vaHex":"0x004d68f0","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":36,"kind":"actor-frame","vaHex":"0x004d68f8","opcode":"0x21","summary":"set sprite=0x11, frame=8, gate=4, mode=0","spriteHex":"0x11","frame":8,"gate":4},{"tick":40,"kind":"actor-frame","vaHex":"0x004d6900","opcode":"0x21","summary":"set sprite=0x11, frame=9, gate=2, mode=0","spriteHex":"0x11","frame":9,"gate":2},{"tick":42,"kind":"actor-frame","vaHex":"0x004d6908","opcode":"0x21","summary":"set sprite=0x11, frame=10, gate=4, mode=0","spriteHex":"0x11","frame":10,"gate":4},{"tick":46,"kind":"actor-frame","vaHex":"0x004d6910","opcode":"0x21","summary":"set sprite=0x11, frame=11, gate=2, mode=0","spriteHex":"0x11","frame":11,"gate":2},{"tick":48,"kind":"result-sound","vaHex":"0x004d692c","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":48,"kind":"actor-flag","vaHex":"0x004d6930","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":48,"kind":"actor-flag","vaHex":"0x004d6938","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":48,"kind":"wait","vaHex":"0x004d6940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":48,"kind":"actor-frame","vaHex":"0x004d6944","opcode":"0x21","summary":"set sprite=0x11, frame=11, gate=2, mode=0","spriteHex":"0x11","frame":11,"gate":2},{"tick":50,"kind":"actor-frame","vaHex":"0x004d6954","opcode":"0x21","summary":"set sprite=0x11, frame=3, gate=2, mode=0","spriteHex":"0x11","frame":3,"gate":2},{"tick":52,"kind":"actor-frame","vaHex":"0x004d695c","opcode":"0x21","summary":"set sprite=0x11, frame=4, gate=4, mode=0","spriteHex":"0x11","frame":4,"gate":4},{"tick":56,"kind":"actor-write","vaHex":"0x004d6964","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":56,"kind":"actor-write","vaHex":"0x004d696c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":56,"kind":"actor-frame","vaHex":"0x004d6974","opcode":"0x21","summary":"set sprite=0x11, frame=5, gate=2, mode=0","spriteHex":"0x11","frame":5,"gate":2},{"tick":58,"kind":"actor-frame","vaHex":"0x004d697c","opcode":"0x21","summary":"set sprite=0x11, frame=6, gate=2, mode=0","spriteHex":"0x11","frame":6,"gate":2},{"tick":60,"kind":"result-sound","vaHex":"0x004d6984","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":60,"kind":"actor-flag","vaHex":"0x004d6988","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":60,"kind":"actor-flag","vaHex":"0x004d6990","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":60,"kind":"wait","vaHex":"0x004d6998","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":60,"kind":"actor-write","vaHex":"0x004d69c4","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":60,"kind":"movement","vaHex":"0x004d69cc","opcode":"0xbc","summary":"interpolated child motion mode=4, selector=2, stepDivisor=4: one target-side edge placement; side depends on actor kind.","selector":2,"divisor":4,"movementMode":4},{"tick":60,"kind":"actor-frame","vaHex":"0x004d69dc","opcode":"0x21","summary":"set sprite=0x11, frame=7, gate=4, mode=0","spriteHex":"0x11","frame":7,"gate":4},{"tick":64,"kind":"result-sound","vaHex":"0x004d69e4","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":64,"kind":"actor-flag","vaHex":"0x004d69e8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":64,"kind":"actor-flag","vaHex":"0x004d69f0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":64,"kind":"wait","vaHex":"0x004d69f8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":64,"kind":"actor-frame","vaHex":"0x004d69fc","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":66,"kind":"movement","vaHex":"0x004d6a04","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":2,"soundVaHex":"0x004d67e8","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d67f4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d67fc","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6804","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":12,"soundVaHex":"0x004d6830","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6834","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d683c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6844","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":20,"soundVaHex":"0x004d6880","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6884","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d688c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6894","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":34,"soundVaHex":"0x004d68d0","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d68d4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d68dc","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d68e4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":48,"soundVaHex":"0x004d692c","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6930","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6938","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":60,"soundVaHex":"0x004d6984","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6988","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6990","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6998","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":64,"soundVaHex":"0x004d69e4","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d69e8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d69f0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d69f8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x1a","ownerKey":"ataho","ownerName":"아타호","skillName":"비기·맹호광파참","familyName":"비기·맹호광파참","skillIdHex":"0x1a","levelOrFixed":1,"targetClass":"enemy-single","mpCost":30,"hitCount":3,"frameSequence":[0,18,19,20,20,20,0],"expandedFrameGateSequence":[{"tick":0,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":19,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":5,"frame":20,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":20,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":20,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":11,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":13,"repeatLoopCount":0,"hitEventCount":3,"hitClassCounts":{"confirmed-result-hit-window":3},"effectWlkNos":[22,17],"resultWlkNos":[3,3,3],"soundModel":"effect+result","soundCalls":[{"tick":4,"opcode":"0x24","wlkNo":22,"effectArgsHex":"01 00 16","role":"effect/cast cue","vaHex":"0x004d6a28"},{"tick":5,"opcode":"0x24","wlkNo":17,"effectArgsHex":"01 00 11","role":"effect/cast cue","vaHex":"0x004d6abc"},{"tick":9,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6ac8"},{"tick":10,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6ae8"},{"tick":11,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6b08"}],"helperIds":[23,19],"helperFacts":[{"helperId":23,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["81@0"],"emitFrames":[81],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b4c88","fieldHex":"0x94","role":"unknown-root-branch","targetVaHex":"0x004b4c3c","condition":"word conditional branch local-backward-loop if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004b4c3c","targetSnippet":[{"vaHex":"0x004b4c3c","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, imm=0x00004000 (0.25px), mode=0x81"},{"vaHex":"0x004b4c44","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b4ccc into +0x58"},{"vaHex":"0x004b4c4c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b4c50","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b4c54","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x80, mode=0xe0"},{"vaHex":"0x004b4c58","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x84, mode=0xe0"},{"vaHex":"0x004b4c5c","opcode":"0x11","category":"child-write","summary":"display/child field +0x92, source +0x92, mode=0xe0"},{"vaHex":"0x004b4c60","opcode":"0x11","category":"child-write","summary":"display/child field +0x94, source +0x92, mode=0xe0"}]},{"vaHex":"0x004b4ca0","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b4c94","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b4c94","targetSnippet":[{"vaHex":"0x004b4c94","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b4c98","opcode":"0x11","category":"child-write","summary":"display/child field +0x92, imm=0x00000004 (6.10352e-05px), mode=0x82"},{"vaHex":"0x004b4ca0","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b4c94"},{"vaHex":"0x004b4cac","opcode":"0x02","category":"countdown-wait","summary":"countdown wait frames=8"},{"vaHex":"0x004b4cb0","opcode":"0x12","category":"write","summary":"set display/actor field +0x14, imm=0x00000000 (0px)"},{"vaHex":"0x004b4cb8","opcode":"0x4b","category":"clear-display-list","summary":"clear/free display list slot=2 mask=0x0010"},{"vaHex":"0x004b4cbc","opcode":"0x42","category":"parent-actor","summary":"set parent actor pointer from this display object's actor slot"},{"vaHex":"0x004b4cc0","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]},{"helperId":19,"behaviorClass":"init-frame-effect","frameScripts":[],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{"0x90":0},"rootBranches":[{"vaHex":"0x004b401c","fieldHex":"0x8c","role":"unknown-root-branch","targetVaHex":"0x004b400c","condition":"word conditional branch local-backward-loop if left:display.word[+0x8c] != right:imm.word=0x0000 -> 0x004b400c","targetSnippet":[{"vaHex":"0x004b400c","opcode":"0x12","category":"write","summary":"add display/actor field +0x74, imm=0x00100000 (16px)"},{"vaHex":"0x004b4014","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b401c","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x8c] != right:imm.word=0x0000 -> 0x004b400c"},{"vaHex":"0x004b4028","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x94] == right:imm.word=0x0000 -> 0x004b4098"},{"vaHex":"0x004b4034","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x80, mode=0xa0"},{"vaHex":"0x004b4038","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x92, mode=0xa0"},{"vaHex":"0x004b403c","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b415c into +0x58"},{"vaHex":"0x004b4044","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.childObject +0xa4 == 0x00000000; target 0x004b4058"}]},{"vaHex":"0x004b4028","fieldHex":"0x94","role":"unknown-root-branch","targetVaHex":"0x004b4098","condition":"word conditional branch local-forward-skip if left:display.word[+0x94] == right:imm.word=0x0000 -> 0x004b4098","targetSnippet":[{"vaHex":"0x004b4098","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b409c","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b40a0","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b40a8","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x96] == right:imm.word=0x0000 -> 0x004b40bc"},{"vaHex":"0x004b40b4","opcode":"0x03","category":"jump","summary":"jump 0x004b4028"},{"vaHex":"0x004b40bc","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.spriteFrame +0x28 != 0x001a0028; target 0x004b40e0"},{"vaHex":"0x004b40c8","opcode":"0x12","category":"frame","summary":"direct sprite/frame selector write sprite=0x1a, frame=43, field +0x28, mode=0x80"},{"vaHex":"0x004b40d0","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000002 (3.05176e-05px), mode=0x80"}]},{"vaHex":"0x004b4044","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b4058","condition":"conditional branch display.childObject +0xa4 == 0x00000000; target 0x004b4058","targetSnippet":[{"vaHex":"0x004b4058","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b405c","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0x58, mode=0xa0"},{"vaHex":"0x004b4060","opcode":"0x12","category":"write","summary":"sub display/actor field +0x84, imm=0x00100000 (16px)"},{"vaHex":"0x004b4068","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x84, mode=0xe0"},{"vaHex":"0x004b406c","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b4070","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x74, mode=0xe0"},{"vaHex":"0x004b4074","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, imm=0x00000001 (1.52588e-05px), mode=0x81"},{"vaHex":"0x004b407c","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, imm=0x00000001 (1.52588e-05px), mode=0x82"}]},{"vaHex":"0x004b4084","fieldHex":"0x8c","role":"unknown-root-branch","targetVaHex":"0x004b403c","condition":"word conditional branch local-backward-loop if left:display.word[+0x8c] != right:imm.word=0x0000 -> 0x004b403c","targetSnippet":[{"vaHex":"0x004b403c","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b415c into +0x58"},{"vaHex":"0x004b4044","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.childObject +0xa4 == 0x00000000; target 0x004b4058"},{"vaHex":"0x004b4050","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b4054","opcode":"0x12","category":"write","summary":"set display/actor field +0xa4, source +0x58, mode=0xe0"},{"vaHex":"0x004b4058","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b405c","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0x58, mode=0xa0"},{"vaHex":"0x004b4060","opcode":"0x12","category":"write","summary":"sub display/actor field +0x84, imm=0x00100000 (16px)"},{"vaHex":"0x004b4068","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x84, mode=0xe0"}]},{"vaHex":"0x004b40a8","fieldHex":"0x96","role":"outer-repeat-step-while-repeat-counter-nonzero","targetVaHex":"0x004b40bc","condition":"word conditional branch external-static-target if left:display.word[+0x96] == right:imm.word=0x0000 -> 0x004b40bc","targetSnippet":[{"vaHex":"0x004b40bc","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.spriteFrame +0x28 != 0x001a0028; target 0x004b40e0"},{"vaHex":"0x004b40c8","opcode":"0x12","category":"frame","summary":"direct sprite/frame selector write sprite=0x1a, frame=43, field +0x28, mode=0x80"},{"vaHex":"0x004b40d0","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000002 (3.05176e-05px), mode=0x80"},{"vaHex":"0x004b40d8","opcode":"0x03","category":"jump","summary":"jump 0x004b4028"},{"vaHex":"0x004b40e0","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.spriteFrame +0x28 != 0x001a002b; target 0x004b4104"},{"vaHex":"0x004b40ec","opcode":"0x12","category":"frame","summary":"direct sprite/frame selector write sprite=0x1a, frame=88, field +0x28, mode=0x80"},{"vaHex":"0x004b40f4","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000002 (3.05176e-05px), mode=0x80"},{"vaHex":"0x004b40fc","opcode":"0x03","category":"jump","summary":"jump 0x004b4028"}]}],"childMotionLoops":[],"interpretation":["root op14 on +0x96 yields one VM tick, reseeds +0x8e from +0x94, then emits another burst"],"notes":["child init-block writes display.spriteFrame +0x28 directly"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"ranged-projectile-or-beam","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"개인기지만 target-front가 아니라 수평 거리에서 helper/effect를 쏘는 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:ataho:0x1a","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6a14","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-ranged-engine-effect","casterRule":"target-fixed-side-direct","startAnchor":"target-fixed-side","motionKind":"teleport","motionTarget":"target-fixed-side","positionConfidence":"high","positionBucket":"target-fixed-side","positionBucketLabel":"고정 측면","battleMapPlacementSummary":"화면 고정 X와 대상 Y를 결합한 측면 기준점에 배치된다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 4 uses fixed screen X with target-relative Y; this is a target-side staging anchor."],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 3, 3, 4, 5","0xc2 result sound count changes: 3, 3, 4, 5","frame count changes: 7, 7, 8, 9"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004d6a14","opcode":"0xbc","summary":"direct placement selector=4: side-fixed screen X with target-relative Y.","selector":4,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d6a18","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d6a20","opcode":"0x21","summary":"set sprite=0x11, frame=18, gate=2, mode=0","spriteHex":"0x11","frame":18,"gate":2},{"tick":4,"kind":"effect-sound","vaHex":"0x004d6a28","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 22; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":22,"effectArgsHex":"01 00 16"},{"tick":4,"kind":"helper-call","vaHex":"0x004d6a44","opcode":"0xbd","summary":"helper-call id=23; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":23},{"tick":4,"kind":"actor-frame","vaHex":"0x004d6a6c","opcode":"0x12","summary":"direct sprite/frame selector write sprite=0x11, frame=19, field +0x28, mode=0x80","spriteHex":"0x11","frame":19,"gate":1},{"tick":5,"kind":"wait","vaHex":"0x004d6a74","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":5,"kind":"helper-call","vaHex":"0x004d6a94","opcode":"0xbd","summary":"helper-call id=19; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":19},{"tick":5,"kind":"effect-sound","vaHex":"0x004d6abc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 17; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":17,"effectArgsHex":"01 00 11"},{"tick":5,"kind":"actor-frame","vaHex":"0x004d6ac0","opcode":"0x21","summary":"set sprite=0x11, frame=20, gate=4, mode=0","spriteHex":"0x11","frame":20,"gate":4},{"tick":9,"kind":"result-sound","vaHex":"0x004d6ac8","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":9,"kind":"actor-flag","vaHex":"0x004d6acc","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":9,"kind":"actor-flag","vaHex":"0x004d6ad4","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":9,"kind":"wait","vaHex":"0x004d6adc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":9,"kind":"actor-frame","vaHex":"0x004d6ae0","opcode":"0x21","summary":"set sprite=0x11, frame=20, gate=1, mode=0","spriteHex":"0x11","frame":20,"gate":1},{"tick":10,"kind":"result-sound","vaHex":"0x004d6ae8","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":10,"kind":"actor-flag","vaHex":"0x004d6aec","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x004d6af4","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x004d6afc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-frame","vaHex":"0x004d6b00","opcode":"0x21","summary":"set sprite=0x11, frame=20, gate=1, mode=0","spriteHex":"0x11","frame":20,"gate":1},{"tick":11,"kind":"result-sound","vaHex":"0x004d6b08","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":11,"kind":"actor-flag","vaHex":"0x004d6b0c","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":11,"kind":"actor-flag","vaHex":"0x004d6b14","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":11,"kind":"wait","vaHex":"0x004d6b1c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":11,"kind":"actor-frame","vaHex":"0x004d6b70","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":13,"kind":"movement","vaHex":"0x004d6b78","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":9,"soundVaHex":"0x004d6ac8","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6acc","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6ad4","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6adc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":10,"soundVaHex":"0x004d6ae8","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6aec","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6af4","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6afc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":11,"soundVaHex":"0x004d6b08","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6b0c","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6b14","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6b1c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:ranged-projectile-or-beam","sound:effect+result","helper:direct-frame-spawn","helper:init-frame-effect","helper-root-counters"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x1b","ownerKey":"ataho","ownerName":"아타호","skillName":"비기·맹호광파참","familyName":"비기·맹호광파참","skillIdHex":"0x1b","levelOrFixed":2,"targetClass":"enemy-single","mpCost":30,"hitCount":3,"frameSequence":[0,18,19,20,20,20,0],"expandedFrameGateSequence":[{"tick":0,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":19,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":5,"frame":20,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":20,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":20,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":11,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":13,"repeatLoopCount":0,"hitEventCount":3,"hitClassCounts":{"confirmed-result-hit-window":3},"effectWlkNos":[22,17],"resultWlkNos":[3,3,3],"soundModel":"effect+result","soundCalls":[{"tick":4,"opcode":"0x24","wlkNo":22,"effectArgsHex":"01 00 16","role":"effect/cast cue","vaHex":"0x004d6a28"},{"tick":5,"opcode":"0x24","wlkNo":17,"effectArgsHex":"01 00 11","role":"effect/cast cue","vaHex":"0x004d6abc"},{"tick":9,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6ac8"},{"tick":10,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6ae8"},{"tick":11,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6b08"}],"helperIds":[27,20],"helperFacts":[{"helperId":27,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["81@0"],"emitFrames":[81],"rootCounterSets":{"0x94":4,"0x96":28},"rootBranches":[{"vaHex":"0x004b4df8","fieldHex":"0x94","role":"unknown-root-branch","targetVaHex":"0x004b4da4","condition":"word conditional branch local-backward-loop if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004b4da4","targetSnippet":[{"vaHex":"0x004b4da4","opcode":"0x2b","category":"random-range","summary":"rng(range=4096) -> +0x58"},{"vaHex":"0x004b4da8","opcode":"0x11","category":"child-write","summary":"display/child field +0x58, imm=0x00000004 (6.10352e-05px), mode=0x8b"},{"vaHex":"0x004b4db0","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x58, mode=0xa0"},{"vaHex":"0x004b4db4","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b4ccc into +0x58"},{"vaHex":"0x004b4dbc","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b4dc0","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b4dc4","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x80, mode=0xe0"},{"vaHex":"0x004b4dc8","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x84, mode=0xe0"}]},{"vaHex":"0x004b4e10","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b4e04","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b4e04","targetSnippet":[{"vaHex":"0x004b4e04","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b4e08","opcode":"0x11","category":"child-write","summary":"display/child field +0x92, imm=0x00000004 (6.10352e-05px), mode=0x82"},{"vaHex":"0x004b4e10","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b4e04"},{"vaHex":"0x004b4e1c","opcode":"0x02","category":"countdown-wait","summary":"countdown wait frames=8"},{"vaHex":"0x004b4e20","opcode":"0x12","category":"write","summary":"set display/actor field +0x14, imm=0x00000000 (0px)"},{"vaHex":"0x004b4e28","opcode":"0x4b","category":"clear-display-list","summary":"clear/free display list slot=2 mask=0x0010"},{"vaHex":"0x004b4e2c","opcode":"0x42","category":"parent-actor","summary":"set parent actor pointer from this display object's actor slot"},{"vaHex":"0x004b4e30","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"}]}],"childMotionLoops":[],"interpretation":["+0x94 raw 4 acts as burst/current-counter seed for +0x8e","+0x96 raw 28 acts as outer repeat counter","static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]},{"helperId":20,"behaviorClass":"init-frame-effect","frameScripts":[],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{"0x90":0},"rootBranches":[{"vaHex":"0x004b41e8","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b43d0","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] == right:imm.byte=0x02 -> 0x004b43d0","targetSnippet":[{"vaHex":"0x004b43d0","opcode":"0x08","category":"init-block","summary":"variable init block writes=8 stop=terminator"},{"vaHex":"0x004b4400","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x1c, mode=0xa0"},{"vaHex":"0x004b4404","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x92, mode=0xa0"},{"vaHex":"0x004b4408","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, imm=0x00000000 (0px)"},{"vaHex":"0x004b4410","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, imm=0x00000000 (0px), mode=0x80"},{"vaHex":"0x004b4418","opcode":"0x12","category":"write","summary":"add display/actor field +0x74, imm=0xfff00000 (-16px)"},{"vaHex":"0x004b4420","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b4428","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x8c] != right:imm.word=0x0000 -> 0x004b4418"}]},{"vaHex":"0x004b4248","fieldHex":"0x8c","role":"unknown-root-branch","targetVaHex":"0x004b4238","condition":"word conditional branch local-backward-loop if left:display.word[+0x8c] != right:imm.word=0x0000 -> 0x004b4238","targetSnippet":[{"vaHex":"0x004b4238","opcode":"0x12","category":"write","summary":"add display/actor field +0x74, imm=0x00100000 (16px)"},{"vaHex":"0x004b4240","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b4248","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x8c] != right:imm.word=0x0000 -> 0x004b4238"},{"vaHex":"0x004b4254","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x94] == right:imm.word=0x0000 -> 0x004b42c4"},{"vaHex":"0x004b4260","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x80, mode=0xa0"},{"vaHex":"0x004b4264","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x92, mode=0xa0"},{"vaHex":"0x004b4268","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b415c into +0x58"},{"vaHex":"0x004b4270","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.childObject +0xa4 == 0x00000000; target 0x004b4284"}]},{"vaHex":"0x004b4254","fieldHex":"0x94","role":"unknown-root-branch","targetVaHex":"0x004b42c4","condition":"word conditional branch local-forward-skip if left:display.word[+0x94] == right:imm.word=0x0000 -> 0x004b42c4","targetSnippet":[{"vaHex":"0x004b42c4","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b42c8","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b42cc","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b42d4","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x96] == right:imm.word=0x0000 -> 0x004b42e8"},{"vaHex":"0x004b42e0","opcode":"0x03","category":"jump","summary":"jump 0x004b4254"},{"vaHex":"0x004b42e8","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.spriteFrame +0x28 != 0x001a002e; target 0x004b430c"},{"vaHex":"0x004b42f4","opcode":"0x12","category":"frame","summary":"direct sprite/frame selector write sprite=0x1a, frame=49, field +0x28, mode=0x80"},{"vaHex":"0x004b42fc","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000002 (3.05176e-05px), mode=0x80"}]},{"vaHex":"0x004b4270","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b4284","condition":"conditional branch display.childObject +0xa4 == 0x00000000; target 0x004b4284","targetSnippet":[{"vaHex":"0x004b4284","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b4288","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0x58, mode=0xa0"},{"vaHex":"0x004b428c","opcode":"0x12","category":"write","summary":"sub display/actor field +0x84, imm=0x00100000 (16px)"},{"vaHex":"0x004b4294","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x84, mode=0xe0"},{"vaHex":"0x004b4298","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b429c","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x74, mode=0xe0"},{"vaHex":"0x004b42a0","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, imm=0x00000001 (1.52588e-05px), mode=0x81"},{"vaHex":"0x004b42a8","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, imm=0x00000001 (1.52588e-05px), mode=0x82"}]},{"vaHex":"0x004b42b0","fieldHex":"0x8c","role":"unknown-root-branch","targetVaHex":"0x004b4268","condition":"word conditional branch local-backward-loop if left:display.word[+0x8c] != right:imm.word=0x0000 -> 0x004b4268","targetSnippet":[{"vaHex":"0x004b4268","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b415c into +0x58"},{"vaHex":"0x004b4270","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.childObject +0xa4 == 0x00000000; target 0x004b4284"},{"vaHex":"0x004b427c","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b4280","opcode":"0x12","category":"write","summary":"set display/actor field +0xa4, source +0x58, mode=0xe0"},{"vaHex":"0x004b4284","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b4288","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0x58, mode=0xa0"},{"vaHex":"0x004b428c","opcode":"0x12","category":"write","summary":"sub display/actor field +0x84, imm=0x00100000 (16px)"},{"vaHex":"0x004b4294","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x84, mode=0xe0"}]},{"vaHex":"0x004b42d4","fieldHex":"0x96","role":"outer-repeat-step-while-repeat-counter-nonzero","targetVaHex":"0x004b42e8","condition":"word conditional branch external-static-target if left:display.word[+0x96] == right:imm.word=0x0000 -> 0x004b42e8","targetSnippet":[{"vaHex":"0x004b42e8","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.spriteFrame +0x28 != 0x001a002e; target 0x004b430c"},{"vaHex":"0x004b42f4","opcode":"0x12","category":"frame","summary":"direct sprite/frame selector write sprite=0x1a, frame=49, field +0x28, mode=0x80"},{"vaHex":"0x004b42fc","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000002 (3.05176e-05px), mode=0x80"},{"vaHex":"0x004b4304","opcode":"0x03","category":"jump","summary":"jump 0x004b4254"},{"vaHex":"0x004b430c","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.spriteFrame +0x28 != 0x001a0031; target 0x004b4330"},{"vaHex":"0x004b4318","opcode":"0x12","category":"frame","summary":"direct sprite/frame selector write sprite=0x1a, frame=40, field +0x28, mode=0x80"},{"vaHex":"0x004b4320","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000002 (3.05176e-05px), mode=0x80"},{"vaHex":"0x004b4328","opcode":"0x03","category":"jump","summary":"jump 0x004b4254"}]}],"childMotionLoops":[],"interpretation":["root op14 on +0x96 yields one VM tick, reseeds +0x8e from +0x94, then emits another burst"],"notes":["child init-block writes display.spriteFrame +0x28 directly"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"ranged-projectile-or-beam","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"개인기지만 target-front가 아니라 수평 거리에서 helper/effect를 쏘는 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:ataho:0x1b","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6a14","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-ranged-engine-effect","casterRule":"target-fixed-side-direct","startAnchor":"target-fixed-side","motionKind":"teleport","motionTarget":"target-fixed-side","positionConfidence":"high","positionBucket":"target-fixed-side","positionBucketLabel":"고정 측면","battleMapPlacementSummary":"화면 고정 X와 대상 Y를 결합한 측면 기준점에 배치된다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 4 uses fixed screen X with target-relative Y; this is a target-side staging anchor."],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 3, 3, 4, 5","0xc2 result sound count changes: 3, 3, 4, 5","frame count changes: 7, 7, 8, 9"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004d6a14","opcode":"0xbc","summary":"direct placement selector=4: side-fixed screen X with target-relative Y.","selector":4,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d6a18","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d6a20","opcode":"0x21","summary":"set sprite=0x11, frame=18, gate=2, mode=0","spriteHex":"0x11","frame":18,"gate":2},{"tick":4,"kind":"effect-sound","vaHex":"0x004d6a28","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 22; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":22,"effectArgsHex":"01 00 16"},{"tick":4,"kind":"helper-call","vaHex":"0x004d6a50","opcode":"0xbd","summary":"helper-call id=27; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":27},{"tick":4,"kind":"actor-frame","vaHex":"0x004d6a6c","opcode":"0x12","summary":"direct sprite/frame selector write sprite=0x11, frame=19, field +0x28, mode=0x80","spriteHex":"0x11","frame":19,"gate":1},{"tick":5,"kind":"wait","vaHex":"0x004d6a74","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":5,"kind":"helper-call","vaHex":"0x004d6aa0","opcode":"0xbd","summary":"helper-call id=20; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":20},{"tick":5,"kind":"effect-sound","vaHex":"0x004d6abc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 17; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":17,"effectArgsHex":"01 00 11"},{"tick":5,"kind":"actor-frame","vaHex":"0x004d6ac0","opcode":"0x21","summary":"set sprite=0x11, frame=20, gate=4, mode=0","spriteHex":"0x11","frame":20,"gate":4},{"tick":9,"kind":"result-sound","vaHex":"0x004d6ac8","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":9,"kind":"actor-flag","vaHex":"0x004d6acc","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":9,"kind":"actor-flag","vaHex":"0x004d6ad4","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":9,"kind":"wait","vaHex":"0x004d6adc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":9,"kind":"actor-frame","vaHex":"0x004d6ae0","opcode":"0x21","summary":"set sprite=0x11, frame=20, gate=1, mode=0","spriteHex":"0x11","frame":20,"gate":1},{"tick":10,"kind":"result-sound","vaHex":"0x004d6ae8","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":10,"kind":"actor-flag","vaHex":"0x004d6aec","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x004d6af4","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x004d6afc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-frame","vaHex":"0x004d6b00","opcode":"0x21","summary":"set sprite=0x11, frame=20, gate=1, mode=0","spriteHex":"0x11","frame":20,"gate":1},{"tick":11,"kind":"result-sound","vaHex":"0x004d6b08","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":11,"kind":"actor-flag","vaHex":"0x004d6b0c","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":11,"kind":"actor-flag","vaHex":"0x004d6b14","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":11,"kind":"wait","vaHex":"0x004d6b1c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":11,"kind":"actor-frame","vaHex":"0x004d6b70","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":13,"kind":"movement","vaHex":"0x004d6b78","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":9,"soundVaHex":"0x004d6ac8","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6acc","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6ad4","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6adc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":10,"soundVaHex":"0x004d6ae8","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6aec","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6af4","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6afc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":11,"soundVaHex":"0x004d6b08","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6b0c","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6b14","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6b1c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:ranged-projectile-or-beam","sound:effect+result","helper:direct-frame-spawn","helper-root-counters","helper:init-frame-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x1c","ownerKey":"ataho","ownerName":"아타호","skillName":"비기·맹호광파참","familyName":"비기·맹호광파참","skillIdHex":"0x1c","levelOrFixed":3,"targetClass":"enemy-single","mpCost":27,"hitCount":4,"frameSequence":[0,18,19,20,20,20,20,0],"expandedFrameGateSequence":[{"tick":0,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":19,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":5,"frame":20,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":20,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":20,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":11,"frame":20,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":14,"repeatLoopCount":0,"hitEventCount":4,"hitClassCounts":{"confirmed-result-hit-window":4},"effectWlkNos":[22,17],"resultWlkNos":[3,3,3,3],"soundModel":"effect+result","soundCalls":[{"tick":4,"opcode":"0x24","wlkNo":22,"effectArgsHex":"01 00 16","role":"effect/cast cue","vaHex":"0x004d6a28"},{"tick":5,"opcode":"0x24","wlkNo":17,"effectArgsHex":"01 00 11","role":"effect/cast cue","vaHex":"0x004d6abc"},{"tick":9,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6ac8"},{"tick":10,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6ae8"},{"tick":11,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6b08"},{"tick":12,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6b58"}],"helperIds":[25,21],"helperFacts":[{"helperId":25,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["81@0"],"emitFrames":[81],"rootCounterSets":{"0x94":8,"0x96":36},"rootBranches":[{"vaHex":"0x004b4c88","fieldHex":"0x94","role":"unknown-root-branch","targetVaHex":"0x004b4c3c","condition":"word conditional branch local-backward-loop if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004b4c3c","targetSnippet":[{"vaHex":"0x004b4c3c","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, imm=0x00004000 (0.25px), mode=0x81"},{"vaHex":"0x004b4c44","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b4ccc into +0x58"},{"vaHex":"0x004b4c4c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b4c50","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b4c54","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x80, mode=0xe0"},{"vaHex":"0x004b4c58","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x84, mode=0xe0"},{"vaHex":"0x004b4c5c","opcode":"0x11","category":"child-write","summary":"display/child field +0x92, source +0x92, mode=0xe0"},{"vaHex":"0x004b4c60","opcode":"0x11","category":"child-write","summary":"display/child field +0x94, source +0x92, mode=0xe0"}]},{"vaHex":"0x004b4ca0","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b4c94","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b4c94","targetSnippet":[{"vaHex":"0x004b4c94","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b4c98","opcode":"0x11","category":"child-write","summary":"display/child field +0x92, imm=0x00000004 (6.10352e-05px), mode=0x82"},{"vaHex":"0x004b4ca0","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b4c94"},{"vaHex":"0x004b4cac","opcode":"0x02","category":"countdown-wait","summary":"countdown wait frames=8"},{"vaHex":"0x004b4cb0","opcode":"0x12","category":"write","summary":"set display/actor field +0x14, imm=0x00000000 (0px)"},{"vaHex":"0x004b4cb8","opcode":"0x4b","category":"clear-display-list","summary":"clear/free display list slot=2 mask=0x0010"},{"vaHex":"0x004b4cbc","opcode":"0x42","category":"parent-actor","summary":"set parent actor pointer from this display object's actor slot"},{"vaHex":"0x004b4cc0","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"}]}],"childMotionLoops":[],"interpretation":["+0x94 raw 8 acts as burst/current-counter seed for +0x8e","+0x96 raw 36 acts as outer repeat counter","static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]},{"helperId":21,"behaviorClass":"init-frame-effect","frameScripts":[],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{"0x90":0},"rootBranches":[{"vaHex":"0x004b46a8","fieldHex":"0x8c","role":"unknown-root-branch","targetVaHex":"0x004b4698","condition":"word conditional branch local-backward-loop if left:display.word[+0x8c] != right:imm.word=0x0000 -> 0x004b4698","targetSnippet":[{"vaHex":"0x004b4698","opcode":"0x12","category":"write","summary":"add display/actor field +0x74, imm=0x00100000 (16px)"},{"vaHex":"0x004b46a0","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b46a8","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x8c] != right:imm.word=0x0000 -> 0x004b4698"},{"vaHex":"0x004b46b4","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x94] == right:imm.word=0x0000 -> 0x004b4724"},{"vaHex":"0x004b46c0","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x80, mode=0xa0"},{"vaHex":"0x004b46c4","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x92, mode=0xa0"},{"vaHex":"0x004b46c8","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b415c into +0x58"},{"vaHex":"0x004b46d0","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.childObject +0xa4 == 0x00000000; target 0x004b46e4"}]},{"vaHex":"0x004b46b4","fieldHex":"0x94","role":"unknown-root-branch","targetVaHex":"0x004b4724","condition":"word conditional branch local-forward-skip if left:display.word[+0x94] == right:imm.word=0x0000 -> 0x004b4724","targetSnippet":[{"vaHex":"0x004b4724","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b4728","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b472c","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b4734","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x96] == right:imm.word=0x0000 -> 0x004b4748"},{"vaHex":"0x004b4740","opcode":"0x03","category":"jump","summary":"jump 0x004b46b4"},{"vaHex":"0x004b4748","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.spriteFrame +0x28 != 0x001a0034; target 0x004b476c"},{"vaHex":"0x004b4754","opcode":"0x12","category":"frame","summary":"direct sprite/frame selector write sprite=0x1a, frame=55, field +0x28, mode=0x80"},{"vaHex":"0x004b475c","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000002 (3.05176e-05px), mode=0x80"}]},{"vaHex":"0x004b46d0","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b46e4","condition":"conditional branch display.childObject +0xa4 == 0x00000000; target 0x004b46e4","targetSnippet":[{"vaHex":"0x004b46e4","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b46e8","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0x58, mode=0xa0"},{"vaHex":"0x004b46ec","opcode":"0x12","category":"write","summary":"sub display/actor field +0x84, imm=0x00100000 (16px)"},{"vaHex":"0x004b46f4","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x84, mode=0xe0"},{"vaHex":"0x004b46f8","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b46fc","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x74, mode=0xe0"},{"vaHex":"0x004b4700","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, imm=0x00000001 (1.52588e-05px), mode=0x81"},{"vaHex":"0x004b4708","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, imm=0x00000001 (1.52588e-05px), mode=0x82"}]},{"vaHex":"0x004b4710","fieldHex":"0x8c","role":"unknown-root-branch","targetVaHex":"0x004b46c8","condition":"word conditional branch local-backward-loop if left:display.word[+0x8c] != right:imm.word=0x0000 -> 0x004b46c8","targetSnippet":[{"vaHex":"0x004b46c8","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b415c into +0x58"},{"vaHex":"0x004b46d0","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.childObject +0xa4 == 0x00000000; target 0x004b46e4"},{"vaHex":"0x004b46dc","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b46e0","opcode":"0x12","category":"write","summary":"set display/actor field +0xa4, source +0x58, mode=0xe0"},{"vaHex":"0x004b46e4","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b46e8","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0x58, mode=0xa0"},{"vaHex":"0x004b46ec","opcode":"0x12","category":"write","summary":"sub display/actor field +0x84, imm=0x00100000 (16px)"},{"vaHex":"0x004b46f4","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x84, mode=0xe0"}]},{"vaHex":"0x004b4734","fieldHex":"0x96","role":"outer-repeat-step-while-repeat-counter-nonzero","targetVaHex":"0x004b4748","condition":"word conditional branch external-static-target if left:display.word[+0x96] == right:imm.word=0x0000 -> 0x004b4748","targetSnippet":[{"vaHex":"0x004b4748","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.spriteFrame +0x28 != 0x001a0034; target 0x004b476c"},{"vaHex":"0x004b4754","opcode":"0x12","category":"frame","summary":"direct sprite/frame selector write sprite=0x1a, frame=55, field +0x28, mode=0x80"},{"vaHex":"0x004b475c","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000002 (3.05176e-05px), mode=0x80"},{"vaHex":"0x004b4764","opcode":"0x03","category":"jump","summary":"jump 0x004b46b4"},{"vaHex":"0x004b476c","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.spriteFrame +0x28 != 0x001a0037; target 0x004b479c"},{"vaHex":"0x004b4778","opcode":"0x12","category":"frame","summary":"direct sprite/frame selector write sprite=0x1a, frame=46, field +0x28, mode=0x80"},{"vaHex":"0x004b4780","opcode":"0x12","category":"write","summary":"sub display/actor field +0x20, imm=0xfff80000 (-8px)"},{"vaHex":"0x004b4788","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:display.byte[+0xe7] add= source:imm.byte=0xff"}]}],"childMotionLoops":[],"interpretation":["root op14 on +0x96 yields one VM tick, reseeds +0x8e from +0x94, then emits another burst"],"notes":["child init-block writes display.spriteFrame +0x28 directly"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"ranged-projectile-or-beam","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"개인기지만 target-front가 아니라 수평 거리에서 helper/effect를 쏘는 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:ataho:0x1c","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6a14","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-ranged-engine-effect","casterRule":"target-fixed-side-direct","startAnchor":"target-fixed-side","motionKind":"teleport","motionTarget":"target-fixed-side","positionConfidence":"high","positionBucket":"target-fixed-side","positionBucketLabel":"고정 측면","battleMapPlacementSummary":"화면 고정 X와 대상 Y를 결합한 측면 기준점에 배치된다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 4 uses fixed screen X with target-relative Y; this is a target-side staging anchor."],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 3, 3, 4, 5","0xc2 result sound count changes: 3, 3, 4, 5","frame count changes: 7, 7, 8, 9"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004d6a14","opcode":"0xbc","summary":"direct placement selector=4: side-fixed screen X with target-relative Y.","selector":4,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d6a18","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d6a20","opcode":"0x21","summary":"set sprite=0x11, frame=18, gate=2, mode=0","spriteHex":"0x11","frame":18,"gate":2},{"tick":4,"kind":"effect-sound","vaHex":"0x004d6a28","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 22; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":22,"effectArgsHex":"01 00 16"},{"tick":4,"kind":"helper-call","vaHex":"0x004d6a5c","opcode":"0xbd","summary":"helper-call id=25; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":25},{"tick":4,"kind":"actor-frame","vaHex":"0x004d6a6c","opcode":"0x12","summary":"direct sprite/frame selector write sprite=0x11, frame=19, field +0x28, mode=0x80","spriteHex":"0x11","frame":19,"gate":1},{"tick":5,"kind":"wait","vaHex":"0x004d6a74","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":5,"kind":"helper-call","vaHex":"0x004d6aac","opcode":"0xbd","summary":"helper-call id=21; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":21},{"tick":5,"kind":"effect-sound","vaHex":"0x004d6abc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 17; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":17,"effectArgsHex":"01 00 11"},{"tick":5,"kind":"actor-frame","vaHex":"0x004d6ac0","opcode":"0x21","summary":"set sprite=0x11, frame=20, gate=4, mode=0","spriteHex":"0x11","frame":20,"gate":4},{"tick":9,"kind":"result-sound","vaHex":"0x004d6ac8","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":9,"kind":"actor-flag","vaHex":"0x004d6acc","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":9,"kind":"actor-flag","vaHex":"0x004d6ad4","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":9,"kind":"wait","vaHex":"0x004d6adc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":9,"kind":"actor-frame","vaHex":"0x004d6ae0","opcode":"0x21","summary":"set sprite=0x11, frame=20, gate=1, mode=0","spriteHex":"0x11","frame":20,"gate":1},{"tick":10,"kind":"result-sound","vaHex":"0x004d6ae8","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":10,"kind":"actor-flag","vaHex":"0x004d6aec","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x004d6af4","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x004d6afc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-frame","vaHex":"0x004d6b00","opcode":"0x21","summary":"set sprite=0x11, frame=20, gate=1, mode=0","spriteHex":"0x11","frame":20,"gate":1},{"tick":11,"kind":"result-sound","vaHex":"0x004d6b08","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":11,"kind":"actor-flag","vaHex":"0x004d6b0c","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":11,"kind":"actor-flag","vaHex":"0x004d6b14","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":11,"kind":"wait","vaHex":"0x004d6b1c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":11,"kind":"actor-frame","vaHex":"0x004d6b50","opcode":"0x21","summary":"set sprite=0x11, frame=20, gate=1, mode=0","spriteHex":"0x11","frame":20,"gate":1},{"tick":12,"kind":"result-sound","vaHex":"0x004d6b58","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x004d6b5c","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x004d6b64","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x004d6b6c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d6b70","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":14,"kind":"movement","vaHex":"0x004d6b78","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":9,"soundVaHex":"0x004d6ac8","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6acc","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6ad4","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6adc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":10,"soundVaHex":"0x004d6ae8","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6aec","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6af4","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6afc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":11,"soundVaHex":"0x004d6b08","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6b0c","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6b14","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6b1c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":12,"soundVaHex":"0x004d6b58","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6b5c","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6b64","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6b6c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:ranged-projectile-or-beam","sound:effect+result","helper:direct-frame-spawn","helper-root-counters","helper:init-frame-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x1d","ownerKey":"ataho","ownerName":"아타호","skillName":"비기·맹호광파참","familyName":"비기·맹호광파참","skillIdHex":"0x1d","levelOrFixed":4,"targetClass":"enemy-single","mpCost":24,"hitCount":5,"frameSequence":[0,18,19,20,20,20,20,20,0],"expandedFrameGateSequence":[{"tick":0,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":19,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":5,"frame":20,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":20,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":20,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":11,"frame":20,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":20,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":13,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":15,"repeatLoopCount":0,"hitEventCount":5,"hitClassCounts":{"confirmed-result-hit-window":5},"effectWlkNos":[22,17],"resultWlkNos":[3,3,3,3,3],"soundModel":"effect+result","soundCalls":[{"tick":4,"opcode":"0x24","wlkNo":22,"effectArgsHex":"01 00 16","role":"effect/cast cue","vaHex":"0x004d6a28"},{"tick":5,"opcode":"0x24","wlkNo":17,"effectArgsHex":"01 00 11","role":"effect/cast cue","vaHex":"0x004d6abc"},{"tick":9,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6ac8"},{"tick":10,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6ae8"},{"tick":11,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6b08"},{"tick":12,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6b38"},{"tick":13,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6b58"}],"helperIds":[28,126],"helperFacts":[{"helperId":28,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["81@0"],"emitFrames":[81],"rootCounterSets":{"0x94":8,"0x96":36},"rootBranches":[{"vaHex":"0x004b4df8","fieldHex":"0x94","role":"unknown-root-branch","targetVaHex":"0x004b4da4","condition":"word conditional branch local-backward-loop if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004b4da4","targetSnippet":[{"vaHex":"0x004b4da4","opcode":"0x2b","category":"random-range","summary":"rng(range=4096) -> +0x58"},{"vaHex":"0x004b4da8","opcode":"0x11","category":"child-write","summary":"display/child field +0x58, imm=0x00000004 (6.10352e-05px), mode=0x8b"},{"vaHex":"0x004b4db0","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x58, mode=0xa0"},{"vaHex":"0x004b4db4","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b4ccc into +0x58"},{"vaHex":"0x004b4dbc","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b4dc0","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b4dc4","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x80, mode=0xe0"},{"vaHex":"0x004b4dc8","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x84, mode=0xe0"}]},{"vaHex":"0x004b4e10","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b4e04","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b4e04","targetSnippet":[{"vaHex":"0x004b4e04","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b4e08","opcode":"0x11","category":"child-write","summary":"display/child field +0x92, imm=0x00000004 (6.10352e-05px), mode=0x82"},{"vaHex":"0x004b4e10","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b4e04"},{"vaHex":"0x004b4e1c","opcode":"0x02","category":"countdown-wait","summary":"countdown wait frames=8"},{"vaHex":"0x004b4e20","opcode":"0x12","category":"write","summary":"set display/actor field +0x14, imm=0x00000000 (0px)"},{"vaHex":"0x004b4e28","opcode":"0x4b","category":"clear-display-list","summary":"clear/free display list slot=2 mask=0x0010"},{"vaHex":"0x004b4e2c","opcode":"0x42","category":"parent-actor","summary":"set parent actor pointer from this display object's actor slot"},{"vaHex":"0x004b4e30","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"}]}],"childMotionLoops":[],"interpretation":["+0x94 raw 8 acts as burst/current-counter seed for +0x8e","+0x96 raw 36 acts as outer repeat counter","static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]},{"helperId":126,"behaviorClass":"init-frame-effect","frameScripts":[],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{"0x90":0},"rootBranches":[{"vaHex":"0x004b48f0","fieldHex":"0x8c","role":"unknown-root-branch","targetVaHex":"0x004b48e0","condition":"word conditional branch local-backward-loop if left:display.word[+0x8c] != right:imm.word=0x0000 -> 0x004b48e0","targetSnippet":[{"vaHex":"0x004b48e0","opcode":"0x12","category":"write","summary":"add display/actor field +0x74, imm=0x00100000 (16px)"},{"vaHex":"0x004b48e8","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b48f0","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x8c] != right:imm.word=0x0000 -> 0x004b48e0"},{"vaHex":"0x004b48fc","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x94] == right:imm.word=0x0000 -> 0x004b496c"},{"vaHex":"0x004b4908","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x80, mode=0xa0"},{"vaHex":"0x004b490c","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x92, mode=0xa0"},{"vaHex":"0x004b4910","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b4afc into +0x58"},{"vaHex":"0x004b4918","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.childObject +0xa4 == 0x00000000; target 0x004b492c"}]},{"vaHex":"0x004b48fc","fieldHex":"0x94","role":"unknown-root-branch","targetVaHex":"0x004b496c","condition":"word conditional branch local-forward-skip if left:display.word[+0x94] == right:imm.word=0x0000 -> 0x004b496c","targetSnippet":[{"vaHex":"0x004b496c","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b4970","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b4974","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b497c","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x96] == right:imm.word=0x0000 -> 0x004b4990"},{"vaHex":"0x004b4988","opcode":"0x03","category":"jump","summary":"jump 0x004b48fc"},{"vaHex":"0x004b4990","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.spriteFrame +0x28 != 0x001a00d0; target 0x004b49c0"},{"vaHex":"0x004b499c","opcode":"0x12","category":"frame","summary":"direct sprite/frame selector write sprite=0x1a, frame=52, field +0x28, mode=0x80"},{"vaHex":"0x004b49a4","opcode":"0x12","category":"write","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)"}]},{"vaHex":"0x004b4918","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b492c","condition":"conditional branch display.childObject +0xa4 == 0x00000000; target 0x004b492c","targetSnippet":[{"vaHex":"0x004b492c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b4930","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0x58, mode=0xa0"},{"vaHex":"0x004b4934","opcode":"0x12","category":"write","summary":"sub display/actor field +0x84, imm=0x00100000 (16px)"},{"vaHex":"0x004b493c","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x84, mode=0xe0"},{"vaHex":"0x004b4940","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b4944","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x74, mode=0xe0"},{"vaHex":"0x004b4948","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, imm=0x00000001 (1.52588e-05px), mode=0x81"},{"vaHex":"0x004b4950","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, imm=0x00000001 (1.52588e-05px), mode=0x82"}]},{"vaHex":"0x004b4958","fieldHex":"0x8c","role":"unknown-root-branch","targetVaHex":"0x004b4910","condition":"word conditional branch local-backward-loop if left:display.word[+0x8c] != right:imm.word=0x0000 -> 0x004b4910","targetSnippet":[{"vaHex":"0x004b4910","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b4afc into +0x58"},{"vaHex":"0x004b4918","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.childObject +0xa4 == 0x00000000; target 0x004b492c"},{"vaHex":"0x004b4924","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b4928","opcode":"0x12","category":"write","summary":"set display/actor field +0xa4, source +0x58, mode=0xe0"},{"vaHex":"0x004b492c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b4930","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0x58, mode=0xa0"},{"vaHex":"0x004b4934","opcode":"0x12","category":"write","summary":"sub display/actor field +0x84, imm=0x00100000 (16px)"},{"vaHex":"0x004b493c","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x84, mode=0xe0"}]},{"vaHex":"0x004b497c","fieldHex":"0x96","role":"outer-repeat-step-while-repeat-counter-nonzero","targetVaHex":"0x004b4990","condition":"word conditional branch external-static-target if left:display.word[+0x96] == right:imm.word=0x0000 -> 0x004b4990","targetSnippet":[{"vaHex":"0x004b4990","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.spriteFrame +0x28 != 0x001a00d0; target 0x004b49c0"},{"vaHex":"0x004b499c","opcode":"0x12","category":"frame","summary":"direct sprite/frame selector write sprite=0x1a, frame=52, field +0x28, mode=0x80"},{"vaHex":"0x004b49a4","opcode":"0x12","category":"write","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)"},{"vaHex":"0x004b49ac","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:display.byte[+0xe7] add= source:imm.byte=0xfd"},{"vaHex":"0x004b49b0","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000002 (3.05176e-05px), mode=0x80"},{"vaHex":"0x004b49b8","opcode":"0x03","category":"jump","summary":"jump 0x004b48fc"},{"vaHex":"0x004b49c0","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.spriteFrame +0x28 != 0x001a0034; target 0x004b49e4"},{"vaHex":"0x004b49cc","opcode":"0x12","category":"frame","summary":"direct sprite/frame selector write sprite=0x1a, frame=55, field +0x28, mode=0x80"}]}],"childMotionLoops":[],"interpretation":["root op14 on +0x96 yields one VM tick, reseeds +0x8e from +0x94, then emits another burst"],"notes":["child init-block writes display.spriteFrame +0x28 directly"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"ranged-projectile-or-beam","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"개인기지만 target-front가 아니라 수평 거리에서 helper/effect를 쏘는 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:ataho:0x1d","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6a14","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-ranged-engine-effect","casterRule":"target-fixed-side-direct","startAnchor":"target-fixed-side","motionKind":"teleport","motionTarget":"target-fixed-side","positionConfidence":"high","positionBucket":"target-fixed-side","positionBucketLabel":"고정 측면","battleMapPlacementSummary":"화면 고정 X와 대상 Y를 결합한 측면 기준점에 배치된다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 4 uses fixed screen X with target-relative Y; this is a target-side staging anchor."],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 3, 3, 4, 5","0xc2 result sound count changes: 3, 3, 4, 5","frame count changes: 7, 7, 8, 9"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004d6a14","opcode":"0xbc","summary":"direct placement selector=4: side-fixed screen X with target-relative Y.","selector":4,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d6a18","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d6a20","opcode":"0x21","summary":"set sprite=0x11, frame=18, gate=2, mode=0","spriteHex":"0x11","frame":18,"gate":2},{"tick":4,"kind":"effect-sound","vaHex":"0x004d6a28","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 22; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":22,"effectArgsHex":"01 00 16"},{"tick":4,"kind":"helper-call","vaHex":"0x004d6a68","opcode":"0xbd","summary":"helper-call id=28; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":28},{"tick":4,"kind":"actor-frame","vaHex":"0x004d6a6c","opcode":"0x12","summary":"direct sprite/frame selector write sprite=0x11, frame=19, field +0x28, mode=0x80","spriteHex":"0x11","frame":19,"gate":1},{"tick":5,"kind":"wait","vaHex":"0x004d6a74","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":5,"kind":"helper-call","vaHex":"0x004d6ab8","opcode":"0xbd","summary":"helper-call id=126; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":126},{"tick":5,"kind":"effect-sound","vaHex":"0x004d6abc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 17; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":17,"effectArgsHex":"01 00 11"},{"tick":5,"kind":"actor-frame","vaHex":"0x004d6ac0","opcode":"0x21","summary":"set sprite=0x11, frame=20, gate=4, mode=0","spriteHex":"0x11","frame":20,"gate":4},{"tick":9,"kind":"result-sound","vaHex":"0x004d6ac8","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":9,"kind":"actor-flag","vaHex":"0x004d6acc","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":9,"kind":"actor-flag","vaHex":"0x004d6ad4","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":9,"kind":"wait","vaHex":"0x004d6adc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":9,"kind":"actor-frame","vaHex":"0x004d6ae0","opcode":"0x21","summary":"set sprite=0x11, frame=20, gate=1, mode=0","spriteHex":"0x11","frame":20,"gate":1},{"tick":10,"kind":"result-sound","vaHex":"0x004d6ae8","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":10,"kind":"actor-flag","vaHex":"0x004d6aec","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x004d6af4","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x004d6afc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-frame","vaHex":"0x004d6b00","opcode":"0x21","summary":"set sprite=0x11, frame=20, gate=1, mode=0","spriteHex":"0x11","frame":20,"gate":1},{"tick":11,"kind":"result-sound","vaHex":"0x004d6b08","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":11,"kind":"actor-flag","vaHex":"0x004d6b0c","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":11,"kind":"actor-flag","vaHex":"0x004d6b14","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":11,"kind":"wait","vaHex":"0x004d6b1c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":11,"kind":"actor-frame","vaHex":"0x004d6b30","opcode":"0x21","summary":"set sprite=0x11, frame=20, gate=1, mode=0","spriteHex":"0x11","frame":20,"gate":1},{"tick":12,"kind":"result-sound","vaHex":"0x004d6b38","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x004d6b3c","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x004d6b44","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x004d6b4c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d6b50","opcode":"0x21","summary":"set sprite=0x11, frame=20, gate=1, mode=0","spriteHex":"0x11","frame":20,"gate":1},{"tick":13,"kind":"result-sound","vaHex":"0x004d6b58","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":13,"kind":"actor-flag","vaHex":"0x004d6b5c","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":13,"kind":"actor-flag","vaHex":"0x004d6b64","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":13,"kind":"wait","vaHex":"0x004d6b6c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":13,"kind":"actor-frame","vaHex":"0x004d6b70","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":15,"kind":"movement","vaHex":"0x004d6b78","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":9,"soundVaHex":"0x004d6ac8","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6acc","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6ad4","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6adc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":10,"soundVaHex":"0x004d6ae8","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6aec","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6af4","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6afc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":11,"soundVaHex":"0x004d6b08","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6b0c","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6b14","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6b1c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":12,"soundVaHex":"0x004d6b38","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6b3c","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6b44","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6b4c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":13,"soundVaHex":"0x004d6b58","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6b5c","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6b64","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6b6c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:ranged-projectile-or-beam","sound:effect+result","helper:direct-frame-spawn","helper-root-counters","helper:init-frame-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x1e","ownerKey":"ataho","ownerName":"아타호","skillName":"조금 취한 철권","familyName":"취호권 개인공격기","skillIdHex":"0x1e","levelOrFixed":null,"targetClass":"self-then-enemy-single","mpCost":8,"hitCount":2,"frameSequence":[43,42,43,42,41,40,0,12,13,0],"expandedFrameGateSequence":[{"tick":0,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":3,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":17,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":19,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":13,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":29,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[23,23],"resultWlkNos":[3],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d6bb8"},{"tick":6,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d6bcc"},{"tick":27,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6c40"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"self-prep-actor-hit","implementationState":"actor-frame-self-prep","effectiveImplementationState":"actor-frame-self-prep","semanticNote":"술/자기 준비 프레임 뒤에 actor-frame 기반 타격이 이어지는 계열이다.","canonicalKey":"player:ataho:0x1e","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6bb8","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-prep-caster-local","casterRule":"self-prep-target-front-local-combo","startAnchor":"target-front","motionKind":"self-prep/local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["self-prep plus enemy-single payload has local actor/display writes; preview the attack phase at target-front"],"familyPatternClass":"mixed-fixed-family","familyPatternNotes":["한 패밀리에 서로 다른 고정/장비 기술명이 섞여 있어 4단계 숙련도 비교로 보면 안 된다.","skill names: 조금 취한 철권, 지옥 다리후리기, 만취한 철권, 염가열소, 인사불성 철권","repeat-loop 포함 기술이 있어 별도 수동 검토가 필요하다."],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004d6bb8","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":0,"kind":"actor-frame","vaHex":"0x004d6bbc","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":3,"kind":"actor-frame","vaHex":"0x004d6bc4","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":6,"kind":"effect-sound","vaHex":"0x004d6bcc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":6,"kind":"actor-frame","vaHex":"0x004d6bd0","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d6bd8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"actor-frame","vaHex":"0x004d6be0","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d6be8","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":17,"kind":"actor-write","vaHex":"0x004d6bf0","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":17,"kind":"actor-write","vaHex":"0x004d6bf8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":17,"kind":"actor-frame","vaHex":"0x004d6c00","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":19,"kind":"actor-flag","vaHex":"0x004d6c08","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":19,"kind":"actor-frame","vaHex":"0x004d6c30","opcode":"0x21","summary":"set sprite=0x11, frame=12, gate=2, mode=0","spriteHex":"0x11","frame":12,"gate":2},{"tick":21,"kind":"actor-frame","vaHex":"0x004d6c38","opcode":"0x21","summary":"set sprite=0x11, frame=13, gate=6, mode=0","spriteHex":"0x11","frame":13,"gate":6},{"tick":27,"kind":"result-sound","vaHex":"0x004d6c40","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":27,"kind":"actor-flag","vaHex":"0x004d6c44","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":27,"kind":"actor-flag","vaHex":"0x004d6c4c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":27,"kind":"wait","vaHex":"0x004d6c54","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":27,"kind":"actor-frame","vaHex":"0x004d6dd0","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":29,"kind":"movement","vaHex":"0x004d6dd8","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":27,"soundVaHex":"0x004d6c40","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6c44","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6c4c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6c54","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:self-prep-actor-hit","sound:effect+result"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x1f","ownerKey":"ataho","ownerName":"아타호","skillName":"지옥 다리후리기","familyName":"취호권 개인공격기","skillIdHex":"0x1f","levelOrFixed":null,"targetClass":"self-then-enemy-single","mpCost":12,"hitCount":6,"frameSequence":[43,42,43,42,41,40,0,0,0,51,52,52,0,51,52,52,0,51,52,52,0,51,52,52,0,51,52,52,0],"expandedFrameGateSequence":[{"tick":0,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":3,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":17,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":19,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":23,"frame":51,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":25,"frame":52,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":52,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":29,"frame":0,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x004d6ca4"},{"tick":31,"frame":51,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x004d6ca4"},{"tick":33,"frame":52,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x004d6ca4"},{"tick":35,"frame":52,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x004d6ca4"},{"tick":37,"frame":0,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x004d6ca4"},{"tick":39,"frame":51,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x004d6ca4"},{"tick":41,"frame":52,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x004d6ca4"},{"tick":43,"frame":52,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x004d6ca4"},{"tick":45,"frame":0,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x004d6ca4"},{"tick":47,"frame":51,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x004d6ca4"},{"tick":49,"frame":52,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x004d6ca4"},{"tick":51,"frame":52,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x004d6ca4"},{"tick":53,"frame":0,"gate":2,"repeatIteration":4,"repeatSourceVaHex":"0x004d6ca4"},{"tick":55,"frame":51,"gate":2,"repeatIteration":4,"repeatSourceVaHex":"0x004d6ca4"},{"tick":57,"frame":52,"gate":2,"repeatIteration":4,"repeatSourceVaHex":"0x004d6ca4"},{"tick":59,"frame":52,"gate":2,"repeatIteration":4,"repeatSourceVaHex":"0x004d6ca4"},{"tick":61,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":63,"repeatLoopCount":1,"hitEventCount":5,"hitClassCounts":{"confirmed-result-hit-window":5},"effectWlkNos":[23,23],"resultWlkNos":[18],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d6bb8"},{"tick":6,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d6bcc"},{"tick":27,"opcode":"0xc2","wlkNo":18,"normalWlkNo":18,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6c84"},{"tick":35,"opcode":"0xc2","wlkNo":18,"normalWlkNo":18,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6c84"},{"tick":43,"opcode":"0xc2","wlkNo":18,"normalWlkNo":18,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6c84"},{"tick":51,"opcode":"0xc2","wlkNo":18,"normalWlkNo":18,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6c84"},{"tick":59,"opcode":"0xc2","wlkNo":18,"normalWlkNo":18,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6c84"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:ataho:0x1f","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6bb8","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-prep-target-front-direct","casterRule":"target-front-direct","startAnchor":"target-front","motionKind":"teleport","motionTarget":"target-front","positionConfidence":"high","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 3 fixes the actor at target-front before frames"],"familyPatternClass":"mixed-fixed-family","familyPatternNotes":["한 패밀리에 서로 다른 고정/장비 기술명이 섞여 있어 4단계 숙련도 비교로 보면 안 된다.","skill names: 조금 취한 철권, 지옥 다리후리기, 만취한 철권, 염가열소, 인사불성 철권","repeat-loop 포함 기술이 있어 별도 수동 검토가 필요하다."],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004d6bb8","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":0,"kind":"actor-frame","vaHex":"0x004d6bbc","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":3,"kind":"actor-frame","vaHex":"0x004d6bc4","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":6,"kind":"effect-sound","vaHex":"0x004d6bcc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":6,"kind":"actor-frame","vaHex":"0x004d6bd0","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d6bd8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"actor-frame","vaHex":"0x004d6be0","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d6be8","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":17,"kind":"actor-write","vaHex":"0x004d6bf0","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":17,"kind":"actor-write","vaHex":"0x004d6bf8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":17,"kind":"actor-frame","vaHex":"0x004d6c00","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":19,"kind":"actor-flag","vaHex":"0x004d6c08","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":19,"kind":"actor-frame","vaHex":"0x004d6c60","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":21,"kind":"movement","vaHex":"0x004d6c68","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":21,"kind":"actor-frame","vaHex":"0x004d6c6c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":23,"kind":"actor-frame","vaHex":"0x004d6c74","opcode":"0x21","summary":"set sprite=0x11, frame=51, gate=2, mode=0","spriteHex":"0x11","frame":51,"gate":2},{"tick":25,"kind":"actor-frame","vaHex":"0x004d6c7c","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=2, mode=0","spriteHex":"0x11","frame":52,"gate":2},{"tick":27,"kind":"result-sound","vaHex":"0x004d6c84","opcode":"0xc2","summary":"WLK id 18 (normal id 18, alt id 14, mode=0)","wlkNo":18,"normalWlkNo":18,"altWlkNo":14,"mode":0},{"tick":27,"kind":"actor-flag","vaHex":"0x004d6c88","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":27,"kind":"actor-flag","vaHex":"0x004d6c90","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":27,"kind":"wait","vaHex":"0x004d6c98","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":27,"kind":"actor-frame","vaHex":"0x004d6c9c","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=2, mode=0","spriteHex":"0x11","frame":52,"gate":2},{"tick":29,"kind":"repeat-loop","vaHex":"0x004d6ca4","opcode":"0x06","summary":"repeat-loop count=5, target=0x004d6c6c; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x004d6c6c","repeatCount":5},{"tick":29,"kind":"actor-frame","vaHex":"0x004d6c6c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x004d6ca4"},{"tick":31,"kind":"actor-frame","vaHex":"0x004d6c74","opcode":"0x21","summary":"set sprite=0x11, frame=51, gate=2, mode=0","spriteHex":"0x11","frame":51,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x004d6ca4"},{"tick":33,"kind":"actor-frame","vaHex":"0x004d6c7c","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=2, mode=0","spriteHex":"0x11","frame":52,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x004d6ca4"},{"tick":35,"kind":"result-sound","vaHex":"0x004d6c84","opcode":"0xc2","summary":"WLK id 18 (normal id 18, alt id 14, mode=0)","wlkNo":18,"normalWlkNo":18,"altWlkNo":14,"mode":0,"repeatIteration":1,"repeatSourceVaHex":"0x004d6ca4"},{"tick":35,"kind":"actor-flag","vaHex":"0x004d6c88","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":1,"repeatSourceVaHex":"0x004d6ca4"},{"tick":35,"kind":"actor-flag","vaHex":"0x004d6c90","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":1,"repeatSourceVaHex":"0x004d6ca4"},{"tick":35,"kind":"wait","vaHex":"0x004d6c98","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":1,"repeatSourceVaHex":"0x004d6ca4"},{"tick":35,"kind":"actor-frame","vaHex":"0x004d6c9c","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=2, mode=0","spriteHex":"0x11","frame":52,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x004d6ca4"},{"tick":37,"kind":"actor-frame","vaHex":"0x004d6c6c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x004d6ca4"},{"tick":39,"kind":"actor-frame","vaHex":"0x004d6c74","opcode":"0x21","summary":"set sprite=0x11, frame=51, gate=2, mode=0","spriteHex":"0x11","frame":51,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x004d6ca4"},{"tick":41,"kind":"actor-frame","vaHex":"0x004d6c7c","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=2, mode=0","spriteHex":"0x11","frame":52,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x004d6ca4"},{"tick":43,"kind":"result-sound","vaHex":"0x004d6c84","opcode":"0xc2","summary":"WLK id 18 (normal id 18, alt id 14, mode=0)","wlkNo":18,"normalWlkNo":18,"altWlkNo":14,"mode":0,"repeatIteration":2,"repeatSourceVaHex":"0x004d6ca4"},{"tick":43,"kind":"actor-flag","vaHex":"0x004d6c88","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":2,"repeatSourceVaHex":"0x004d6ca4"},{"tick":43,"kind":"actor-flag","vaHex":"0x004d6c90","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":2,"repeatSourceVaHex":"0x004d6ca4"},{"tick":43,"kind":"wait","vaHex":"0x004d6c98","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":2,"repeatSourceVaHex":"0x004d6ca4"},{"tick":43,"kind":"actor-frame","vaHex":"0x004d6c9c","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=2, mode=0","spriteHex":"0x11","frame":52,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x004d6ca4"},{"tick":45,"kind":"actor-frame","vaHex":"0x004d6c6c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x004d6ca4"},{"tick":47,"kind":"actor-frame","vaHex":"0x004d6c74","opcode":"0x21","summary":"set sprite=0x11, frame=51, gate=2, mode=0","spriteHex":"0x11","frame":51,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x004d6ca4"},{"tick":49,"kind":"actor-frame","vaHex":"0x004d6c7c","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=2, mode=0","spriteHex":"0x11","frame":52,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x004d6ca4"},{"tick":51,"kind":"result-sound","vaHex":"0x004d6c84","opcode":"0xc2","summary":"WLK id 18 (normal id 18, alt id 14, mode=0)","wlkNo":18,"normalWlkNo":18,"altWlkNo":14,"mode":0,"repeatIteration":3,"repeatSourceVaHex":"0x004d6ca4"},{"tick":51,"kind":"actor-flag","vaHex":"0x004d6c88","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":3,"repeatSourceVaHex":"0x004d6ca4"},{"tick":51,"kind":"actor-flag","vaHex":"0x004d6c90","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":3,"repeatSourceVaHex":"0x004d6ca4"},{"tick":51,"kind":"wait","vaHex":"0x004d6c98","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":3,"repeatSourceVaHex":"0x004d6ca4"},{"tick":51,"kind":"actor-frame","vaHex":"0x004d6c9c","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=2, mode=0","spriteHex":"0x11","frame":52,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x004d6ca4"},{"tick":53,"kind":"actor-frame","vaHex":"0x004d6c6c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2,"repeatIteration":4,"repeatSourceVaHex":"0x004d6ca4"},{"tick":55,"kind":"actor-frame","vaHex":"0x004d6c74","opcode":"0x21","summary":"set sprite=0x11, frame=51, gate=2, mode=0","spriteHex":"0x11","frame":51,"gate":2,"repeatIteration":4,"repeatSourceVaHex":"0x004d6ca4"},{"tick":57,"kind":"actor-frame","vaHex":"0x004d6c7c","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=2, mode=0","spriteHex":"0x11","frame":52,"gate":2,"repeatIteration":4,"repeatSourceVaHex":"0x004d6ca4"},{"tick":59,"kind":"result-sound","vaHex":"0x004d6c84","opcode":"0xc2","summary":"WLK id 18 (normal id 18, alt id 14, mode=0)","wlkNo":18,"normalWlkNo":18,"altWlkNo":14,"mode":0,"repeatIteration":4,"repeatSourceVaHex":"0x004d6ca4"},{"tick":59,"kind":"actor-flag","vaHex":"0x004d6c88","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":4,"repeatSourceVaHex":"0x004d6ca4"},{"tick":59,"kind":"actor-flag","vaHex":"0x004d6c90","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":4,"repeatSourceVaHex":"0x004d6ca4"},{"tick":59,"kind":"wait","vaHex":"0x004d6c98","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":4,"repeatSourceVaHex":"0x004d6ca4"},{"tick":59,"kind":"actor-frame","vaHex":"0x004d6c9c","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=2, mode=0","spriteHex":"0x11","frame":52,"gate":2,"repeatIteration":4,"repeatSourceVaHex":"0x004d6ca4"},{"tick":61,"kind":"actor-frame","vaHex":"0x004d6dd0","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":63,"kind":"movement","vaHex":"0x004d6dd8","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":27,"soundVaHex":"0x004d6c84","normalWlkNo":18,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6c88","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6c90","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6c98","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":35,"soundVaHex":"0x004d6c84","normalWlkNo":18,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6c88","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6c90","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6c98","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":1,"repeatSourceVaHex":"0x004d6ca4"},{"tick":43,"soundVaHex":"0x004d6c84","normalWlkNo":18,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6c88","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6c90","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6c98","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":2,"repeatSourceVaHex":"0x004d6ca4"},{"tick":51,"soundVaHex":"0x004d6c84","normalWlkNo":18,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6c88","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6c90","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6c98","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":3,"repeatSourceVaHex":"0x004d6ca4"},{"tick":59,"soundVaHex":"0x004d6c84","normalWlkNo":18,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6c88","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6c90","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6c98","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":4,"repeatSourceVaHex":"0x004d6ca4"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","repeat-loop-expanded","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:effect+result"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x20","ownerKey":"ataho","ownerName":"아타호","skillName":"만취한 철권","familyName":"취호권 개인공격기","skillIdHex":"0x20","levelOrFixed":null,"targetClass":"self-then-enemy-single","mpCost":10,"hitCount":2,"frameSequence":[43,42,43,42,41,40,0,21,22,25,26,0],"expandedFrameGateSequence":[{"tick":0,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":3,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":17,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":19,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":22,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":25,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":29,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":31,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[23,23],"resultWlkNos":[3],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d6bb8"},{"tick":6,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d6bcc"},{"tick":29,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6cdc"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"self-prep-actor-hit","implementationState":"actor-frame-self-prep","effectiveImplementationState":"actor-frame-self-prep","semanticNote":"술/자기 준비 프레임 뒤에 actor-frame 기반 타격이 이어지는 계열이다.","canonicalKey":"player:ataho:0x20","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6bb8","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-prep-caster-local","casterRule":"self-prep-target-front-local-combo","startAnchor":"target-front","motionKind":"self-prep/local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["self-prep plus enemy-single payload has local actor/display writes; preview the attack phase at target-front"],"familyPatternClass":"mixed-fixed-family","familyPatternNotes":["한 패밀리에 서로 다른 고정/장비 기술명이 섞여 있어 4단계 숙련도 비교로 보면 안 된다.","skill names: 조금 취한 철권, 지옥 다리후리기, 만취한 철권, 염가열소, 인사불성 철권","repeat-loop 포함 기술이 있어 별도 수동 검토가 필요하다."],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004d6bb8","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":0,"kind":"actor-frame","vaHex":"0x004d6bbc","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":3,"kind":"actor-frame","vaHex":"0x004d6bc4","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":6,"kind":"effect-sound","vaHex":"0x004d6bcc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":6,"kind":"actor-frame","vaHex":"0x004d6bd0","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d6bd8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"actor-frame","vaHex":"0x004d6be0","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d6be8","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":17,"kind":"actor-write","vaHex":"0x004d6bf0","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":17,"kind":"actor-write","vaHex":"0x004d6bf8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":17,"kind":"actor-frame","vaHex":"0x004d6c00","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":19,"kind":"actor-flag","vaHex":"0x004d6c08","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":19,"kind":"actor-frame","vaHex":"0x004d6cb4","opcode":"0x21","summary":"set sprite=0x11, frame=21, gate=2, mode=0","spriteHex":"0x11","frame":21,"gate":2},{"tick":21,"kind":"actor-frame","vaHex":"0x004d6cbc","opcode":"0x21","summary":"set sprite=0x11, frame=22, gate=4, mode=0","spriteHex":"0x11","frame":22,"gate":4},{"tick":25,"kind":"actor-write","vaHex":"0x004d6cc4","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":25,"kind":"actor-frame","vaHex":"0x004d6ccc","opcode":"0x21","summary":"set sprite=0x11, frame=25, gate=2, mode=0","spriteHex":"0x11","frame":25,"gate":2},{"tick":27,"kind":"actor-frame","vaHex":"0x004d6cd4","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=2, mode=0","spriteHex":"0x11","frame":26,"gate":2},{"tick":29,"kind":"result-sound","vaHex":"0x004d6cdc","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":29,"kind":"actor-flag","vaHex":"0x004d6ce0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":29,"kind":"actor-flag","vaHex":"0x004d6ce8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":29,"kind":"wait","vaHex":"0x004d6cf0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":29,"kind":"actor-write","vaHex":"0x004d6cf4","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":29,"kind":"actor-frame","vaHex":"0x004d6dd0","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":31,"kind":"movement","vaHex":"0x004d6dd8","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":29,"soundVaHex":"0x004d6cdc","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6ce0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6ce8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6cf0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:self-prep-actor-hit","sound:effect+result"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x21","ownerKey":"ataho","ownerName":"아타호","skillName":"염가열소","familyName":"취호권 개인공격기","skillIdHex":"0x21","levelOrFixed":null,"targetClass":"self-then-enemy-single","mpCost":12,"hitCount":2,"frameSequence":[43,42,43,42,41,40,0,0,35,36,37,38,0],"expandedFrameGateSequence":[{"tick":0,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":3,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":17,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":19,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":23,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":25,"frame":37,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":29,"frame":38,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":37,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":39,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[23,23],"resultWlkNos":[21],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d6bb8"},{"tick":6,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d6bcc"},{"tick":29,"opcode":"0xc2","wlkNo":21,"normalWlkNo":21,"altWlkNo":21,"mode":1,"role":"skill-specific result cue","vaHex":"0x004d6d2c"}],"helperIds":[62],"helperFacts":[{"helperId":62,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":2,"directSpawnFrames":["119@0","119@1"],"emitFrames":[119],"rootCounterSets":{"0x96":24,"0x90":64512},"rootBranches":[{"vaHex":"0x004b6a60","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b6ba0","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] == right:imm.byte=0x02 -> 0x004b6ba0","targetSnippet":[{"vaHex":"0x004b6ba0","opcode":"0x08","category":"init-block","summary":"variable init block writes=2 stop=terminator"},{"vaHex":"0x004b6bac","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x1c, mode=0xa0"},{"vaHex":"0x004b6bb0","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x20, mode=0xa0"},{"vaHex":"0x004b6bb4","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000018 (0.000366211px), mode=0x80"},{"vaHex":"0x004b6bbc","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, imm=0x0000c000 (0.75px), mode=0x80"},{"vaHex":"0x004b6bc4","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, imm=0x0000fc00 (0.984375px), mode=0x80"},{"vaHex":"0x004b6bcc","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b6850 into +0x58"},{"vaHex":"0x004b6bd4","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"}]},{"vaHex":"0x004b6abc","fieldHex":"0x8c","role":"unknown-root-branch","targetVaHex":"0x004b6ae4","condition":"word conditional branch external-static-target if left:display.word[+0x8c] <= right:imm.word=0x2000 -> 0x004b6ae4","targetSnippet":[{"vaHex":"0x004b6ae4","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, imm=0x00000400 (0.015625px), mode=0x80"},{"vaHex":"0x004b6aec","opcode":"0x11","category":"child-write","summary":"display/child field +0x8e, source +0x8c, mode=0xa0"},{"vaHex":"0x004b6af0","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, imm=0x00000000 (0px)"},{"vaHex":"0x004b6af8","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, imm=0x00000000 (0px)"},{"vaHex":"0x004b6b00","opcode":"0x2d","category":"motion-step","summary":"relative trig step motion step mode=0x03 axes=x+y"},{"vaHex":"0x004b6b04","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.x +0x1c >= 0x80000000; target 0x004b6b20"},{"vaHex":"0x004b6b10","opcode":"0x12","category":"write","summary":"shr display/actor field +0x1c, imm=0x00000003 (4.57764e-05px)"},{"vaHex":"0x004b6b18","opcode":"0x03","category":"jump","summary":"jump 0x004b6b30"}]},{"vaHex":"0x004b6ac8","fieldHex":"0x8c","role":"unknown-root-branch","targetVaHex":"0x004b6aec","condition":"word conditional branch local-forward-skip if left:display.word[+0x8c] < right:imm.word=0x6000 -> 0x004b6aec","targetSnippet":[{"vaHex":"0x004b6aec","opcode":"0x11","category":"child-write","summary":"display/child field +0x8e, source +0x8c, mode=0xa0"},{"vaHex":"0x004b6af0","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, imm=0x00000000 (0px)"},{"vaHex":"0x004b6af8","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, imm=0x00000000 (0px)"},{"vaHex":"0x004b6b00","opcode":"0x2d","category":"motion-step","summary":"relative trig step motion step mode=0x03 axes=x+y"},{"vaHex":"0x004b6b04","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.x +0x1c >= 0x80000000; target 0x004b6b20"},{"vaHex":"0x004b6b10","opcode":"0x12","category":"write","summary":"shr display/actor field +0x1c, imm=0x00000003 (4.57764e-05px)"},{"vaHex":"0x004b6b18","opcode":"0x03","category":"jump","summary":"jump 0x004b6b30"},{"vaHex":"0x004b6b20","opcode":"0x12","category":"write","summary":"neg display/actor field +0x1c, source +0x1c, mode=0xaa"}]},{"vaHex":"0x004b6b04","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b6b20","condition":"conditional branch display.x +0x1c >= 0x80000000; target 0x004b6b20","targetSnippet":[{"vaHex":"0x004b6b20","opcode":"0x12","category":"write","summary":"neg display/actor field +0x1c, source +0x1c, mode=0xaa"},{"vaHex":"0x004b6b24","opcode":"0x12","category":"write","summary":"shr display/actor field +0x1c, imm=0x00000003 (4.57764e-05px)"},{"vaHex":"0x004b6b2c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x1c, source +0x1c, mode=0xaa"},{"vaHex":"0x004b6b30","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.y +0x20 >= 0x80000000; target 0x004b6b4c"},{"vaHex":"0x004b6b3c","opcode":"0x12","category":"write","summary":"shr display/actor field +0x20, imm=0x00000003 (4.57764e-05px)"},{"vaHex":"0x004b6b44","opcode":"0x03","category":"jump","summary":"jump 0x004b6b5c"},{"vaHex":"0x004b6b4c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x20, source +0x20, mode=0xaa"},{"vaHex":"0x004b6b50","opcode":"0x12","category":"write","summary":"shr display/actor field +0x20, imm=0x00000003 (4.57764e-05px)"}]},{"vaHex":"0x004b6b30","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b6b4c","condition":"conditional branch display.y +0x20 >= 0x80000000; target 0x004b6b4c","targetSnippet":[{"vaHex":"0x004b6b4c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x20, source +0x20, mode=0xaa"},{"vaHex":"0x004b6b50","opcode":"0x12","category":"write","summary":"shr display/actor field +0x20, imm=0x00000003 (4.57764e-05px)"},{"vaHex":"0x004b6b58","opcode":"0x12","category":"write","summary":"neg display/actor field +0x20, source +0x20, mode=0xaa"},{"vaHex":"0x004b6b5c","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x80, mode=0xe0"},{"vaHex":"0x004b6b60","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x84, mode=0xe0"},{"vaHex":"0x004b6b64","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x1c, mode=0xe0"},{"vaHex":"0x004b6b68","opcode":"0x12","category":"write","summary":"set display/actor field +0x78, source +0x20, mode=0xe0"},{"vaHex":"0x004b6b6c","opcode":"0x06","category":"repeat-loop","summary":"repeat-loop count=2, target=0x004b6a94; handler stores target in object +0x3c and counter in +0x60"}]},{"vaHex":"0x004b6b80","fieldHex":"0x96","role":"outer-repeat-step-while-repeat-counter-nonzero","targetVaHex":"0x004b6a94","condition":"word conditional branch local-backward-loop if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004b6a94","targetSnippet":[{"vaHex":"0x004b6a94","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b6850 into +0x58"},{"vaHex":"0x004b6a9c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b6aa0","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0x58, mode=0xa0"},{"vaHex":"0x004b6aa4","opcode":"0x2b","category":"random-range","summary":"rng(range=16) -> +0x58"},{"vaHex":"0x004b6aa8","opcode":"0x12","category":"write","summary":"add display/actor field +0x58, imm=0x00000010 (0.000244141px)"},{"vaHex":"0x004b6ab0","opcode":"0x11","category":"child-write","summary":"display/child field +0x92, source +0x58, mode=0xa0"},{"vaHex":"0x004b6ab4","opcode":"0x11","category":"child-write","summary":"display/child field +0x94, source +0x92, mode=0xa0"},{"vaHex":"0x004b6ab8","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x90, mode=0xa1"}]}],"childMotionLoops":[],"interpretation":["+0x96 raw 24 acts as outer repeat counter","root op14 on +0x96 yields one VM tick, reseeds +0x8e from +0x94, then emits another burst","static direct-spawn expansion currently exposes 2 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:ataho:0x21","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6bb8","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-prep-target-front-direct","casterRule":"target-front-direct","startAnchor":"target-front","motionKind":"teleport","motionTarget":"target-front","positionConfidence":"high","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 3 fixes the actor at target-front before frames"],"familyPatternClass":"mixed-fixed-family","familyPatternNotes":["한 패밀리에 서로 다른 고정/장비 기술명이 섞여 있어 4단계 숙련도 비교로 보면 안 된다.","skill names: 조금 취한 철권, 지옥 다리후리기, 만취한 철권, 염가열소, 인사불성 철권","repeat-loop 포함 기술이 있어 별도 수동 검토가 필요하다."],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004d6bb8","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":0,"kind":"actor-frame","vaHex":"0x004d6bbc","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":3,"kind":"actor-frame","vaHex":"0x004d6bc4","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":6,"kind":"effect-sound","vaHex":"0x004d6bcc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":6,"kind":"actor-frame","vaHex":"0x004d6bd0","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d6bd8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"actor-frame","vaHex":"0x004d6be0","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d6be8","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":17,"kind":"actor-write","vaHex":"0x004d6bf0","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":17,"kind":"actor-write","vaHex":"0x004d6bf8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":17,"kind":"actor-frame","vaHex":"0x004d6c00","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":19,"kind":"actor-flag","vaHex":"0x004d6c08","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":19,"kind":"actor-frame","vaHex":"0x004d6d04","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":21,"kind":"movement","vaHex":"0x004d6d0c","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":21,"kind":"actor-frame","vaHex":"0x004d6d10","opcode":"0x21","summary":"set sprite=0x11, frame=35, gate=2, mode=0","spriteHex":"0x11","frame":35,"gate":2},{"tick":23,"kind":"actor-frame","vaHex":"0x004d6d18","opcode":"0x21","summary":"set sprite=0x11, frame=36, gate=2, mode=0","spriteHex":"0x11","frame":36,"gate":2},{"tick":25,"kind":"actor-frame","vaHex":"0x004d6d20","opcode":"0x21","summary":"set sprite=0x11, frame=37, gate=4, mode=0","spriteHex":"0x11","frame":37,"gate":4},{"tick":29,"kind":"helper-call","vaHex":"0x004d6d28","opcode":"0xbd","summary":"helper-call id=62; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":62},{"tick":29,"kind":"result-sound","vaHex":"0x004d6d2c","opcode":"0xc2","summary":"WLK id 21 (normal id 21, alt id 21, mode=1)","wlkNo":21,"normalWlkNo":21,"altWlkNo":21,"mode":1},{"tick":29,"kind":"actor-frame","vaHex":"0x004d6d30","opcode":"0x21","summary":"set sprite=0x11, frame=38, gate=8, mode=0","spriteHex":"0x11","frame":38,"gate":8},{"tick":37,"kind":"wait","vaHex":"0x004d6d38","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":37,"kind":"actor-flag","vaHex":"0x004d6d40","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":37,"kind":"actor-flag","vaHex":"0x004d6d48","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":37,"kind":"wait","vaHex":"0x004d6d50","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":37,"kind":"actor-frame","vaHex":"0x004d6dd0","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":39,"kind":"movement","vaHex":"0x004d6dd8","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":29,"soundVaHex":"0x004d6d2c","normalWlkNo":21,"altWlkNo":21,"mode":1,"flags":[{"vaHex":"0x004d6d40","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6d48","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6d38","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:effect+result","helper:randomized-child-spawn-stream","helper-root-counters"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x22","ownerKey":"ataho","ownerName":"아타호","skillName":"인사불성 철권","familyName":"취호권 개인공격기","skillIdHex":"0x22","levelOrFixed":null,"targetClass":"self-then-enemy-single","mpCost":12,"hitCount":2,"frameSequence":[43,42,43,42,41,40,0,0,27,28,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,39,3,4,0],"expandedFrameGateSequence":[{"tick":0,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":3,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":17,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":19,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":23,"frame":28,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":39,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":39,"gate":1,"repeatIteration":1,"repeatSourceVaHex":"0x004d6d88"},{"tick":29,"frame":39,"gate":1,"repeatIteration":2,"repeatSourceVaHex":"0x004d6d88"},{"tick":30,"frame":39,"gate":1,"repeatIteration":3,"repeatSourceVaHex":"0x004d6d88"},{"tick":31,"frame":39,"gate":1,"repeatIteration":4,"repeatSourceVaHex":"0x004d6d88"},{"tick":32,"frame":39,"gate":1,"repeatIteration":5,"repeatSourceVaHex":"0x004d6d88"},{"tick":33,"frame":39,"gate":1,"repeatIteration":6,"repeatSourceVaHex":"0x004d6d88"},{"tick":34,"frame":39,"gate":1,"repeatIteration":7,"repeatSourceVaHex":"0x004d6d88"},{"tick":35,"frame":39,"gate":1,"repeatIteration":8,"repeatSourceVaHex":"0x004d6d88"},{"tick":36,"frame":39,"gate":1,"repeatIteration":9,"repeatSourceVaHex":"0x004d6d88"},{"tick":37,"frame":39,"gate":1,"repeatIteration":10,"repeatSourceVaHex":"0x004d6d88"},{"tick":38,"frame":39,"gate":1,"repeatIteration":11,"repeatSourceVaHex":"0x004d6d88"},{"tick":39,"frame":39,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":40,"frame":39,"gate":1,"repeatIteration":1,"repeatSourceVaHex":"0x004d6db8"},{"tick":41,"frame":39,"gate":1,"repeatIteration":2,"repeatSourceVaHex":"0x004d6db8"},{"tick":42,"frame":39,"gate":1,"repeatIteration":3,"repeatSourceVaHex":"0x004d6db8"},{"tick":43,"frame":39,"gate":1,"repeatIteration":4,"repeatSourceVaHex":"0x004d6db8"},{"tick":44,"frame":39,"gate":1,"repeatIteration":5,"repeatSourceVaHex":"0x004d6db8"},{"tick":45,"frame":39,"gate":1,"repeatIteration":6,"repeatSourceVaHex":"0x004d6db8"},{"tick":46,"frame":39,"gate":1,"repeatIteration":7,"repeatSourceVaHex":"0x004d6db8"},{"tick":47,"frame":39,"gate":1,"repeatIteration":8,"repeatSourceVaHex":"0x004d6db8"},{"tick":48,"frame":39,"gate":1,"repeatIteration":9,"repeatSourceVaHex":"0x004d6db8"},{"tick":49,"frame":39,"gate":1,"repeatIteration":10,"repeatSourceVaHex":"0x004d6db8"},{"tick":50,"frame":39,"gate":1,"repeatIteration":11,"repeatSourceVaHex":"0x004d6db8"},{"tick":51,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":53,"frame":4,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":57,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":59,"repeatLoopCount":2,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[23,23],"resultWlkNos":[5],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d6bb8"},{"tick":6,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d6bcc"},{"tick":39,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6d90"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:ataho:0x22","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6bb8","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-prep-target-front-direct","casterRule":"target-front-direct","startAnchor":"target-front","motionKind":"teleport","motionTarget":"target-front","positionConfidence":"high","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 3 fixes the actor at target-front before frames"],"familyPatternClass":"mixed-fixed-family","familyPatternNotes":["한 패밀리에 서로 다른 고정/장비 기술명이 섞여 있어 4단계 숙련도 비교로 보면 안 된다.","skill names: 조금 취한 철권, 지옥 다리후리기, 만취한 철권, 염가열소, 인사불성 철권","repeat-loop 포함 기술이 있어 별도 수동 검토가 필요하다."],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004d6bb8","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":0,"kind":"actor-frame","vaHex":"0x004d6bbc","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":3,"kind":"actor-frame","vaHex":"0x004d6bc4","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":6,"kind":"effect-sound","vaHex":"0x004d6bcc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":6,"kind":"actor-frame","vaHex":"0x004d6bd0","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d6bd8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"actor-frame","vaHex":"0x004d6be0","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d6be8","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":17,"kind":"actor-write","vaHex":"0x004d6bf0","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":17,"kind":"actor-write","vaHex":"0x004d6bf8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":17,"kind":"actor-frame","vaHex":"0x004d6c00","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":19,"kind":"actor-flag","vaHex":"0x004d6c08","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":19,"kind":"actor-frame","vaHex":"0x004d6d5c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":21,"kind":"movement","vaHex":"0x004d6d64","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":21,"kind":"actor-frame","vaHex":"0x004d6d68","opcode":"0x21","summary":"set sprite=0x11, frame=27, gate=2, mode=0","spriteHex":"0x11","frame":27,"gate":2},{"tick":23,"kind":"actor-frame","vaHex":"0x004d6d70","opcode":"0x21","summary":"set sprite=0x11, frame=28, gate=4, mode=0","spriteHex":"0x11","frame":28,"gate":4},{"tick":27,"kind":"actor-write","vaHex":"0x004d6d78","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0},{"tick":27,"kind":"actor-frame","vaHex":"0x004d6d80","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1},{"tick":28,"kind":"repeat-loop","vaHex":"0x004d6d88","opcode":"0x06","summary":"repeat-loop count=12, target=0x004d6d78; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x004d6d78","repeatCount":12},{"tick":28,"kind":"actor-write","vaHex":"0x004d6d78","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":1,"repeatSourceVaHex":"0x004d6d88"},{"tick":28,"kind":"actor-frame","vaHex":"0x004d6d80","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":1,"repeatSourceVaHex":"0x004d6d88"},{"tick":29,"kind":"actor-write","vaHex":"0x004d6d78","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":2,"repeatSourceVaHex":"0x004d6d88"},{"tick":29,"kind":"actor-frame","vaHex":"0x004d6d80","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":2,"repeatSourceVaHex":"0x004d6d88"},{"tick":30,"kind":"actor-write","vaHex":"0x004d6d78","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":3,"repeatSourceVaHex":"0x004d6d88"},{"tick":30,"kind":"actor-frame","vaHex":"0x004d6d80","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":3,"repeatSourceVaHex":"0x004d6d88"},{"tick":31,"kind":"actor-write","vaHex":"0x004d6d78","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":4,"repeatSourceVaHex":"0x004d6d88"},{"tick":31,"kind":"actor-frame","vaHex":"0x004d6d80","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":4,"repeatSourceVaHex":"0x004d6d88"},{"tick":32,"kind":"actor-write","vaHex":"0x004d6d78","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":5,"repeatSourceVaHex":"0x004d6d88"},{"tick":32,"kind":"actor-frame","vaHex":"0x004d6d80","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":5,"repeatSourceVaHex":"0x004d6d88"},{"tick":33,"kind":"actor-write","vaHex":"0x004d6d78","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":6,"repeatSourceVaHex":"0x004d6d88"},{"tick":33,"kind":"actor-frame","vaHex":"0x004d6d80","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":6,"repeatSourceVaHex":"0x004d6d88"},{"tick":34,"kind":"actor-write","vaHex":"0x004d6d78","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":7,"repeatSourceVaHex":"0x004d6d88"},{"tick":34,"kind":"actor-frame","vaHex":"0x004d6d80","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":7,"repeatSourceVaHex":"0x004d6d88"},{"tick":35,"kind":"actor-write","vaHex":"0x004d6d78","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":8,"repeatSourceVaHex":"0x004d6d88"},{"tick":35,"kind":"actor-frame","vaHex":"0x004d6d80","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":8,"repeatSourceVaHex":"0x004d6d88"},{"tick":36,"kind":"actor-write","vaHex":"0x004d6d78","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":9,"repeatSourceVaHex":"0x004d6d88"},{"tick":36,"kind":"actor-frame","vaHex":"0x004d6d80","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":9,"repeatSourceVaHex":"0x004d6d88"},{"tick":37,"kind":"actor-write","vaHex":"0x004d6d78","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":10,"repeatSourceVaHex":"0x004d6d88"},{"tick":37,"kind":"actor-frame","vaHex":"0x004d6d80","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":10,"repeatSourceVaHex":"0x004d6d88"},{"tick":38,"kind":"actor-write","vaHex":"0x004d6d78","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":11,"repeatSourceVaHex":"0x004d6d88"},{"tick":38,"kind":"actor-frame","vaHex":"0x004d6d80","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":11,"repeatSourceVaHex":"0x004d6d88"},{"tick":39,"kind":"result-sound","vaHex":"0x004d6d90","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":39,"kind":"actor-flag","vaHex":"0x004d6d94","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":39,"kind":"actor-flag","vaHex":"0x004d6d9c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":39,"kind":"wait","vaHex":"0x004d6da4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":39,"kind":"actor-write","vaHex":"0x004d6da8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0},{"tick":39,"kind":"actor-frame","vaHex":"0x004d6db0","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1},{"tick":40,"kind":"repeat-loop","vaHex":"0x004d6db8","opcode":"0x06","summary":"repeat-loop count=12, target=0x004d6da8; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x004d6da8","repeatCount":12},{"tick":40,"kind":"actor-write","vaHex":"0x004d6da8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":1,"repeatSourceVaHex":"0x004d6db8"},{"tick":40,"kind":"actor-frame","vaHex":"0x004d6db0","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":1,"repeatSourceVaHex":"0x004d6db8"},{"tick":41,"kind":"actor-write","vaHex":"0x004d6da8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":2,"repeatSourceVaHex":"0x004d6db8"},{"tick":41,"kind":"actor-frame","vaHex":"0x004d6db0","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":2,"repeatSourceVaHex":"0x004d6db8"},{"tick":42,"kind":"actor-write","vaHex":"0x004d6da8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":3,"repeatSourceVaHex":"0x004d6db8"},{"tick":42,"kind":"actor-frame","vaHex":"0x004d6db0","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":3,"repeatSourceVaHex":"0x004d6db8"},{"tick":43,"kind":"actor-write","vaHex":"0x004d6da8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":4,"repeatSourceVaHex":"0x004d6db8"},{"tick":43,"kind":"actor-frame","vaHex":"0x004d6db0","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":4,"repeatSourceVaHex":"0x004d6db8"},{"tick":44,"kind":"actor-write","vaHex":"0x004d6da8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":5,"repeatSourceVaHex":"0x004d6db8"},{"tick":44,"kind":"actor-frame","vaHex":"0x004d6db0","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":5,"repeatSourceVaHex":"0x004d6db8"},{"tick":45,"kind":"actor-write","vaHex":"0x004d6da8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":6,"repeatSourceVaHex":"0x004d6db8"},{"tick":45,"kind":"actor-frame","vaHex":"0x004d6db0","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":6,"repeatSourceVaHex":"0x004d6db8"},{"tick":46,"kind":"actor-write","vaHex":"0x004d6da8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":7,"repeatSourceVaHex":"0x004d6db8"},{"tick":46,"kind":"actor-frame","vaHex":"0x004d6db0","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":7,"repeatSourceVaHex":"0x004d6db8"},{"tick":47,"kind":"actor-write","vaHex":"0x004d6da8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":8,"repeatSourceVaHex":"0x004d6db8"},{"tick":47,"kind":"actor-frame","vaHex":"0x004d6db0","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":8,"repeatSourceVaHex":"0x004d6db8"},{"tick":48,"kind":"actor-write","vaHex":"0x004d6da8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":9,"repeatSourceVaHex":"0x004d6db8"},{"tick":48,"kind":"actor-frame","vaHex":"0x004d6db0","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":9,"repeatSourceVaHex":"0x004d6db8"},{"tick":49,"kind":"actor-write","vaHex":"0x004d6da8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":10,"repeatSourceVaHex":"0x004d6db8"},{"tick":49,"kind":"actor-frame","vaHex":"0x004d6db0","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":10,"repeatSourceVaHex":"0x004d6db8"},{"tick":50,"kind":"actor-write","vaHex":"0x004d6da8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffd0000 (-3px)","destHex":"0x20","immHex":"0xfffd0000","immFixed":-3.0,"repeatIteration":11,"repeatSourceVaHex":"0x004d6db8"},{"tick":50,"kind":"actor-frame","vaHex":"0x004d6db0","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=1, mode=0","spriteHex":"0x11","frame":39,"gate":1,"repeatIteration":11,"repeatSourceVaHex":"0x004d6db8"},{"tick":51,"kind":"actor-frame","vaHex":"0x004d6dc0","opcode":"0x21","summary":"set sprite=0x11, frame=3, gate=2, mode=0","spriteHex":"0x11","frame":3,"gate":2},{"tick":53,"kind":"actor-frame","vaHex":"0x004d6dc8","opcode":"0x21","summary":"set sprite=0x11, frame=4, gate=4, mode=0","spriteHex":"0x11","frame":4,"gate":4},{"tick":57,"kind":"actor-frame","vaHex":"0x004d6dd0","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":59,"kind":"movement","vaHex":"0x004d6dd8","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":39,"soundVaHex":"0x004d6d90","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6d94","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6d9c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6da4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","repeat-loop-expanded","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:effect+result"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x23","ownerKey":"ataho","ownerName":"아타호","skillName":"맹호난무","familyName":"맹호난무","skillIdHex":"0x23","levelOrFixed":1,"targetClass":"enemy-all","mpCost":10,"hitCount":1,"frameSequence":[13,25,26,24,27,28,39,39,4,3,0],"expandedFrameGateSequence":[{"tick":0,"frame":13,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":26,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":24,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":39,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":39,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":4,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":38,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[18,18],"resultWlkNos":[3],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004d6df4"},{"tick":10,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004d6e08"},{"tick":26,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6e54"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:ataho:0x23","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6df4","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 11, 12, 13, 19, effect WLK count: 2, 2, 2, 3"],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004d6df4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":0,"kind":"actor-frame","vaHex":"0x004d6df8","opcode":"0x21","summary":"set sprite=0x11, frame=13, gate=8, mode=0","spriteHex":"0x11","frame":13,"gate":8},{"tick":8,"kind":"actor-frame","vaHex":"0x004d6e00","opcode":"0x21","summary":"set sprite=0x11, frame=25, gate=2, mode=0","spriteHex":"0x11","frame":25,"gate":2},{"tick":10,"kind":"effect-sound","vaHex":"0x004d6e08","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":10,"kind":"actor-frame","vaHex":"0x004d6e0c","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=8, mode=0","spriteHex":"0x11","frame":26,"gate":8},{"tick":18,"kind":"actor-frame","vaHex":"0x004d6e14","opcode":"0x21","summary":"set sprite=0x11, frame=24, gate=2, mode=0","spriteHex":"0x11","frame":24,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x004d6e1c","opcode":"0x21","summary":"set sprite=0x11, frame=27, gate=2, mode=0","spriteHex":"0x11","frame":27,"gate":2},{"tick":22,"kind":"actor-frame","vaHex":"0x004d6e24","opcode":"0x21","summary":"set sprite=0x11, frame=28, gate=2, mode=0","spriteHex":"0x11","frame":28,"gate":2},{"tick":24,"kind":"actor-write","vaHex":"0x004d6e44","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":24,"kind":"actor-frame","vaHex":"0x004d6e4c","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=2, mode=0","spriteHex":"0x11","frame":39,"gate":2},{"tick":26,"kind":"result-sound","vaHex":"0x004d6e54","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":26,"kind":"actor-flag","vaHex":"0x004d6e58","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":26,"kind":"actor-flag","vaHex":"0x004d6e60","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":26,"kind":"wait","vaHex":"0x004d6e68","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":26,"kind":"actor-frame","vaHex":"0x004d6e6c","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=6, mode=0","spriteHex":"0x11","frame":39,"gate":6},{"tick":32,"kind":"actor-write","vaHex":"0x004d6e74","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-frame","vaHex":"0x004d6e7c","opcode":"0x21","summary":"set sprite=0x11, frame=4, gate=2, mode=0","spriteHex":"0x11","frame":4,"gate":2},{"tick":34,"kind":"actor-frame","vaHex":"0x004d6e84","opcode":"0x21","summary":"set sprite=0x11, frame=3, gate=2, mode=0","spriteHex":"0x11","frame":3,"gate":2},{"tick":36,"kind":"actor-frame","vaHex":"0x004d7090","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":38,"kind":"movement","vaHex":"0x004d7098","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":26,"soundVaHex":"0x004d6e54","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6e58","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6e60","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6e68","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:effect+result"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x24","ownerKey":"ataho","ownerName":"아타호","skillName":"맹호난무","familyName":"맹호난무","skillIdHex":"0x24","levelOrFixed":2,"targetClass":"enemy-all","mpCost":10,"hitCount":1,"frameSequence":[13,25,26,24,27,28,39,39,39,39,39,39,39,39,4,3,0],"expandedFrameGateSequence":[{"tick":0,"frame":13,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":26,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":24,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":39,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":39,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":39,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x004d6ed4"},{"tick":30,"frame":39,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x004d6ed4"},{"tick":32,"frame":39,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":39,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x004d6eec"},{"tick":36,"frame":39,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x004d6eec"},{"tick":38,"frame":39,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x004d6eec"},{"tick":40,"frame":4,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":42,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":44,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":46,"repeatLoopCount":2,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[18,18],"resultWlkNos":[4],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004d6df4"},{"tick":10,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004d6e08"},{"tick":26,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6eac"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:ataho:0x24","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6df4","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 11, 12, 13, 19, effect WLK count: 2, 2, 2, 3"],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004d6df4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":0,"kind":"actor-frame","vaHex":"0x004d6df8","opcode":"0x21","summary":"set sprite=0x11, frame=13, gate=8, mode=0","spriteHex":"0x11","frame":13,"gate":8},{"tick":8,"kind":"actor-frame","vaHex":"0x004d6e00","opcode":"0x21","summary":"set sprite=0x11, frame=25, gate=2, mode=0","spriteHex":"0x11","frame":25,"gate":2},{"tick":10,"kind":"effect-sound","vaHex":"0x004d6e08","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":10,"kind":"actor-frame","vaHex":"0x004d6e0c","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=8, mode=0","spriteHex":"0x11","frame":26,"gate":8},{"tick":18,"kind":"actor-frame","vaHex":"0x004d6e14","opcode":"0x21","summary":"set sprite=0x11, frame=24, gate=2, mode=0","spriteHex":"0x11","frame":24,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x004d6e1c","opcode":"0x21","summary":"set sprite=0x11, frame=27, gate=2, mode=0","spriteHex":"0x11","frame":27,"gate":2},{"tick":22,"kind":"actor-frame","vaHex":"0x004d6e24","opcode":"0x21","summary":"set sprite=0x11, frame=28, gate=2, mode=0","spriteHex":"0x11","frame":28,"gate":2},{"tick":24,"kind":"actor-write","vaHex":"0x004d6e94","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":24,"kind":"actor-frame","vaHex":"0x004d6e9c","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=2, mode=0","spriteHex":"0x11","frame":39,"gate":2},{"tick":26,"kind":"actor-write","vaHex":"0x004d6ea4","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffe0000 (-2px)","destHex":"0x20","immHex":"0xfffe0000","immFixed":-2.0},{"tick":26,"kind":"result-sound","vaHex":"0x004d6eac","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":26,"kind":"actor-flag","vaHex":"0x004d6eb0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":26,"kind":"actor-flag","vaHex":"0x004d6eb8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":26,"kind":"wait","vaHex":"0x004d6ec0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":26,"kind":"actor-frame","vaHex":"0x004d6ec4","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=2, mode=0","spriteHex":"0x11","frame":39,"gate":2},{"tick":28,"kind":"actor-write","vaHex":"0x004d6ecc","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffe0000 (-2px)","destHex":"0x20","immHex":"0xfffe0000","immFixed":-2.0},{"tick":28,"kind":"repeat-loop","vaHex":"0x004d6ed4","opcode":"0x06","summary":"repeat-loop count=3, target=0x004d6ec4; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x004d6ec4","repeatCount":3},{"tick":28,"kind":"actor-frame","vaHex":"0x004d6ec4","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=2, mode=0","spriteHex":"0x11","frame":39,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x004d6ed4"},{"tick":30,"kind":"actor-write","vaHex":"0x004d6ecc","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffe0000 (-2px)","destHex":"0x20","immHex":"0xfffe0000","immFixed":-2.0,"repeatIteration":1,"repeatSourceVaHex":"0x004d6ed4"},{"tick":30,"kind":"actor-frame","vaHex":"0x004d6ec4","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=2, mode=0","spriteHex":"0x11","frame":39,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x004d6ed4"},{"tick":32,"kind":"actor-write","vaHex":"0x004d6ecc","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffe0000 (-2px)","destHex":"0x20","immHex":"0xfffe0000","immFixed":-2.0,"repeatIteration":2,"repeatSourceVaHex":"0x004d6ed4"},{"tick":32,"kind":"actor-frame","vaHex":"0x004d6edc","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=2, mode=0","spriteHex":"0x11","frame":39,"gate":2},{"tick":34,"kind":"actor-write","vaHex":"0x004d6ee4","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffe0000 (-2px)","destHex":"0x20","immHex":"0xfffe0000","immFixed":-2.0},{"tick":34,"kind":"repeat-loop","vaHex":"0x004d6eec","opcode":"0x06","summary":"repeat-loop count=4, target=0x004d6edc; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x004d6edc","repeatCount":4},{"tick":34,"kind":"actor-frame","vaHex":"0x004d6edc","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=2, mode=0","spriteHex":"0x11","frame":39,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x004d6eec"},{"tick":36,"kind":"actor-write","vaHex":"0x004d6ee4","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffe0000 (-2px)","destHex":"0x20","immHex":"0xfffe0000","immFixed":-2.0,"repeatIteration":1,"repeatSourceVaHex":"0x004d6eec"},{"tick":36,"kind":"actor-frame","vaHex":"0x004d6edc","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=2, mode=0","spriteHex":"0x11","frame":39,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x004d6eec"},{"tick":38,"kind":"actor-write","vaHex":"0x004d6ee4","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffe0000 (-2px)","destHex":"0x20","immHex":"0xfffe0000","immFixed":-2.0,"repeatIteration":2,"repeatSourceVaHex":"0x004d6eec"},{"tick":38,"kind":"actor-frame","vaHex":"0x004d6edc","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=2, mode=0","spriteHex":"0x11","frame":39,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x004d6eec"},{"tick":40,"kind":"actor-write","vaHex":"0x004d6ee4","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffe0000 (-2px)","destHex":"0x20","immHex":"0xfffe0000","immFixed":-2.0,"repeatIteration":3,"repeatSourceVaHex":"0x004d6eec"},{"tick":40,"kind":"actor-write","vaHex":"0x004d6ef4","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":40,"kind":"actor-frame","vaHex":"0x004d6efc","opcode":"0x21","summary":"set sprite=0x11, frame=4, gate=2, mode=0","spriteHex":"0x11","frame":4,"gate":2},{"tick":42,"kind":"actor-frame","vaHex":"0x004d6f04","opcode":"0x21","summary":"set sprite=0x11, frame=3, gate=2, mode=0","spriteHex":"0x11","frame":3,"gate":2},{"tick":44,"kind":"actor-frame","vaHex":"0x004d7090","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":46,"kind":"movement","vaHex":"0x004d7098","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":26,"soundVaHex":"0x004d6eac","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6eb0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6eb8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6ec0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","repeat-loop-expanded","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:effect+result"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x25","ownerKey":"ataho","ownerName":"아타호","skillName":"맹호난무","familyName":"맹호난무","skillIdHex":"0x25","levelOrFixed":3,"targetClass":"enemy-all","mpCost":9,"hitCount":1,"frameSequence":[13,25,26,24,27,28,39,39,39,39,4,3,0],"expandedFrameGateSequence":[{"tick":0,"frame":13,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":26,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":24,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":39,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":39,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":39,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":39,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":4,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":38,"repeatLoopCount":2,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[18,18],"resultWlkNos":[5],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004d6df4"},{"tick":10,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004d6e08"},{"tick":28,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d6f3c"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:ataho:0x25","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6df4","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 11, 12, 13, 19, effect WLK count: 2, 2, 2, 3"],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004d6df4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":0,"kind":"actor-frame","vaHex":"0x004d6df8","opcode":"0x21","summary":"set sprite=0x11, frame=13, gate=8, mode=0","spriteHex":"0x11","frame":13,"gate":8},{"tick":8,"kind":"actor-frame","vaHex":"0x004d6e00","opcode":"0x21","summary":"set sprite=0x11, frame=25, gate=2, mode=0","spriteHex":"0x11","frame":25,"gate":2},{"tick":10,"kind":"effect-sound","vaHex":"0x004d6e08","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":10,"kind":"actor-frame","vaHex":"0x004d6e0c","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=8, mode=0","spriteHex":"0x11","frame":26,"gate":8},{"tick":18,"kind":"actor-frame","vaHex":"0x004d6e14","opcode":"0x21","summary":"set sprite=0x11, frame=24, gate=2, mode=0","spriteHex":"0x11","frame":24,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x004d6e1c","opcode":"0x21","summary":"set sprite=0x11, frame=27, gate=2, mode=0","spriteHex":"0x11","frame":27,"gate":2},{"tick":22,"kind":"actor-frame","vaHex":"0x004d6e24","opcode":"0x21","summary":"set sprite=0x11, frame=28, gate=2, mode=0","spriteHex":"0x11","frame":28,"gate":2},{"tick":24,"kind":"actor-write","vaHex":"0x004d6f14","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":24,"kind":"actor-frame","vaHex":"0x004d6f1c","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=2, mode=0","spriteHex":"0x11","frame":39,"gate":2},{"tick":26,"kind":"actor-write","vaHex":"0x004d6f24","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffe0000 (-2px)","destHex":"0x20","immHex":"0xfffe0000","immFixed":-2.0},{"tick":26,"kind":"actor-frame","vaHex":"0x004d6f2c","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=2, mode=0","spriteHex":"0x11","frame":39,"gate":2},{"tick":28,"kind":"actor-write","vaHex":"0x004d6f34","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffe0000 (-2px)","destHex":"0x20","immHex":"0xfffe0000","immFixed":-2.0},{"tick":28,"kind":"result-sound","vaHex":"0x004d6f3c","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":28,"kind":"actor-flag","vaHex":"0x004d6f40","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":28,"kind":"actor-flag","vaHex":"0x004d6f48","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":28,"kind":"wait","vaHex":"0x004d6f50","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":28,"kind":"actor-frame","vaHex":"0x004d6f54","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=2, mode=0","spriteHex":"0x11","frame":39,"gate":2},{"tick":30,"kind":"actor-write","vaHex":"0x004d6f5c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffe0000 (-2px)","destHex":"0x20","immHex":"0xfffe0000","immFixed":-2.0},{"tick":30,"kind":"repeat-loop","vaHex":"0x004d6f64","opcode":"0x06","summary":"repeat-loop count=6, target=0x004d6ec4; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x004d6ec4","repeatCount":6},{"tick":30,"kind":"actor-frame","vaHex":"0x004d6f6c","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=2, mode=0","spriteHex":"0x11","frame":39,"gate":2},{"tick":32,"kind":"actor-write","vaHex":"0x004d6f74","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffe0000 (-2px)","destHex":"0x20","immHex":"0xfffe0000","immFixed":-2.0},{"tick":32,"kind":"repeat-loop","vaHex":"0x004d6f7c","opcode":"0x06","summary":"repeat-loop count=8, target=0x004d6edc; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x004d6edc","repeatCount":8},{"tick":32,"kind":"actor-write","vaHex":"0x004d6f84","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-frame","vaHex":"0x004d6f8c","opcode":"0x21","summary":"set sprite=0x11, frame=4, gate=2, mode=0","spriteHex":"0x11","frame":4,"gate":2},{"tick":34,"kind":"actor-frame","vaHex":"0x004d6f94","opcode":"0x21","summary":"set sprite=0x11, frame=3, gate=2, mode=0","spriteHex":"0x11","frame":3,"gate":2},{"tick":36,"kind":"actor-frame","vaHex":"0x004d7090","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":38,"kind":"movement","vaHex":"0x004d7098","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":28,"soundVaHex":"0x004d6f3c","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d6f40","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d6f48","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d6f50","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","repeat-loop-expanded","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:effect+result"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x26","ownerKey":"ataho","ownerName":"아타호","skillName":"맹호난무","familyName":"맹호난무","skillIdHex":"0x26","levelOrFixed":4,"targetClass":"enemy-all","mpCost":8,"hitCount":1,"frameSequence":[13,25,26,24,27,28,27,28,27,28,27,28,39,39,39,39,4,3,0],"expandedFrameGateSequence":[{"tick":0,"frame":13,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":26,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":24,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":39,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":39,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":40,"frame":39,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":42,"frame":39,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":44,"frame":4,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":46,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":48,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":50,"repeatLoopCount":2,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[18,18,53],"resultWlkNos":[5],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004d6df4"},{"tick":10,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004d6e08"},{"tick":24,"opcode":"0x24","wlkNo":53,"effectArgsHex":"01 00 35","role":"effect/cast cue","vaHex":"0x004d6fa4"},{"tick":40,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d7030"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:ataho:0x26","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d6df4","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 11, 12, 13, 19, effect WLK count: 2, 2, 2, 3"],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004d6df4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":0,"kind":"actor-frame","vaHex":"0x004d6df8","opcode":"0x21","summary":"set sprite=0x11, frame=13, gate=8, mode=0","spriteHex":"0x11","frame":13,"gate":8},{"tick":8,"kind":"actor-frame","vaHex":"0x004d6e00","opcode":"0x21","summary":"set sprite=0x11, frame=25, gate=2, mode=0","spriteHex":"0x11","frame":25,"gate":2},{"tick":10,"kind":"effect-sound","vaHex":"0x004d6e08","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":10,"kind":"actor-frame","vaHex":"0x004d6e0c","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=8, mode=0","spriteHex":"0x11","frame":26,"gate":8},{"tick":18,"kind":"actor-frame","vaHex":"0x004d6e14","opcode":"0x21","summary":"set sprite=0x11, frame=24, gate=2, mode=0","spriteHex":"0x11","frame":24,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x004d6e1c","opcode":"0x21","summary":"set sprite=0x11, frame=27, gate=2, mode=0","spriteHex":"0x11","frame":27,"gate":2},{"tick":22,"kind":"actor-frame","vaHex":"0x004d6e24","opcode":"0x21","summary":"set sprite=0x11, frame=28, gate=2, mode=0","spriteHex":"0x11","frame":28,"gate":2},{"tick":24,"kind":"effect-sound","vaHex":"0x004d6fa4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 53; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":53,"effectArgsHex":"01 00 35"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d6fa8","opcode":"0x21","summary":"set sprite=0x11, frame=27, gate=2, mode=0","spriteHex":"0x11","frame":27,"gate":2},{"tick":26,"kind":"actor-write","vaHex":"0x004d6fb0","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00040000 (4px)","destHex":"0x1c","immHex":"0x00040000","immFixed":4.0},{"tick":26,"kind":"actor-frame","vaHex":"0x004d6fb8","opcode":"0x21","summary":"set sprite=0x11, frame=28, gate=2, mode=0","spriteHex":"0x11","frame":28,"gate":2},{"tick":28,"kind":"actor-write","vaHex":"0x004d6fc0","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00040000 (4px)","destHex":"0x1c","immHex":"0x00040000","immFixed":4.0},{"tick":28,"kind":"actor-frame","vaHex":"0x004d6fc8","opcode":"0x21","summary":"set sprite=0x11, frame=27, gate=2, mode=0","spriteHex":"0x11","frame":27,"gate":2},{"tick":30,"kind":"actor-write","vaHex":"0x004d6fd0","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00040000 (4px)","destHex":"0x1c","immHex":"0x00040000","immFixed":4.0},{"tick":30,"kind":"actor-frame","vaHex":"0x004d6fd8","opcode":"0x21","summary":"set sprite=0x11, frame=28, gate=2, mode=0","spriteHex":"0x11","frame":28,"gate":2},{"tick":32,"kind":"actor-write","vaHex":"0x004d6fe0","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00040000 (4px)","destHex":"0x1c","immHex":"0x00040000","immFixed":4.0},{"tick":32,"kind":"actor-frame","vaHex":"0x004d6fe8","opcode":"0x21","summary":"set sprite=0x11, frame=27, gate=2, mode=0","spriteHex":"0x11","frame":27,"gate":2},{"tick":34,"kind":"actor-write","vaHex":"0x004d6ff0","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00040000 (4px)","destHex":"0x1c","immHex":"0x00040000","immFixed":4.0},{"tick":34,"kind":"actor-frame","vaHex":"0x004d6ff8","opcode":"0x21","summary":"set sprite=0x11, frame=28, gate=2, mode=0","spriteHex":"0x11","frame":28,"gate":2},{"tick":36,"kind":"actor-write","vaHex":"0x004d7000","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00040000 (4px)","destHex":"0x1c","immHex":"0x00040000","immFixed":4.0},{"tick":36,"kind":"actor-write","vaHex":"0x004d7008","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":36,"kind":"actor-frame","vaHex":"0x004d7010","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=2, mode=0","spriteHex":"0x11","frame":39,"gate":2},{"tick":38,"kind":"actor-write","vaHex":"0x004d7018","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffc0000 (-4px)","destHex":"0x20","immHex":"0xfffc0000","immFixed":-4.0},{"tick":38,"kind":"actor-frame","vaHex":"0x004d7020","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=2, mode=0","spriteHex":"0x11","frame":39,"gate":2},{"tick":40,"kind":"actor-write","vaHex":"0x004d7028","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffc0000 (-4px)","destHex":"0x20","immHex":"0xfffc0000","immFixed":-4.0},{"tick":40,"kind":"result-sound","vaHex":"0x004d7030","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":40,"kind":"actor-flag","vaHex":"0x004d7034","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":40,"kind":"actor-flag","vaHex":"0x004d703c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":40,"kind":"wait","vaHex":"0x004d7044","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":40,"kind":"actor-frame","vaHex":"0x004d7048","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=2, mode=0","spriteHex":"0x11","frame":39,"gate":2},{"tick":42,"kind":"actor-write","vaHex":"0x004d7050","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfffc0000 (-4px)","destHex":"0x20","immHex":"0xfffc0000","immFixed":-4.0},{"tick":42,"kind":"repeat-loop","vaHex":"0x004d7058","opcode":"0x06","summary":"repeat-loop count=6, target=0x004d6ec4; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x004d6ec4","repeatCount":6},{"tick":42,"kind":"actor-frame","vaHex":"0x004d7060","opcode":"0x21","summary":"set sprite=0x11, frame=39, gate=2, mode=0","spriteHex":"0x11","frame":39,"gate":2},{"tick":44,"kind":"actor-write","vaHex":"0x004d7068","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffc0000 (-4px)","destHex":"0x20","immHex":"0xfffc0000","immFixed":-4.0},{"tick":44,"kind":"repeat-loop","vaHex":"0x004d7070","opcode":"0x06","summary":"repeat-loop count=8, target=0x004d6edc; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x004d6edc","repeatCount":8},{"tick":44,"kind":"actor-write","vaHex":"0x004d7078","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":44,"kind":"actor-frame","vaHex":"0x004d7080","opcode":"0x21","summary":"set sprite=0x11, frame=4, gate=2, mode=0","spriteHex":"0x11","frame":4,"gate":2},{"tick":46,"kind":"actor-frame","vaHex":"0x004d7088","opcode":"0x21","summary":"set sprite=0x11, frame=3, gate=2, mode=0","spriteHex":"0x11","frame":3,"gate":2},{"tick":48,"kind":"actor-frame","vaHex":"0x004d7090","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":50,"kind":"movement","vaHex":"0x004d7098","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":40,"soundVaHex":"0x004d7030","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d7034","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d703c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7044","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","repeat-loop-expanded","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:effect+result"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x27","ownerKey":"ataho","ownerName":"아타호","skillName":"맹호의 울부짖음","familyName":"맹호의 울부짖음","skillIdHex":"0x27","levelOrFixed":1,"targetClass":"enemy-all","mpCost":5,"hitCount":1,"frameSequence":[35,36,37,38,0],"expandedFrameGateSequence":[{"tick":0,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":37,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":38,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":18,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[6],"resultWlkNos":[0],"soundModel":"effect-only","soundCalls":[{"tick":8,"opcode":"0x24","wlkNo":6,"effectArgsHex":"01 00 06","role":"effect/cast cue","vaHex":"0x004d70c0"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"screen-wide-effect","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"전체기 중 actor 위치 변화 없이 화면/대상 전체 helper effect가 본체인 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:ataho:0x27","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d70a8","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"constant-fixed-family","familyPatternNotes":["현재 승격된 actor VM 기준으로 숙련도별 frame/gate/hit 변화가 없다.","이는 미해석이 아니라 actor 동작은 고정이고, 숙련도 차이는 MP/헬퍼/효과 크기/결과음 등 다른 레이어에서 확인해야 하는 패밀리다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d70a8","opcode":"0x21","summary":"set sprite=0x11, frame=35, gate=2, mode=0","spriteHex":"0x11","frame":35,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d70b0","opcode":"0x21","summary":"set sprite=0x11, frame=36, gate=2, mode=0","spriteHex":"0x11","frame":36,"gate":2},{"tick":4,"kind":"actor-frame","vaHex":"0x004d70b8","opcode":"0x21","summary":"set sprite=0x11, frame=37, gate=4, mode=0","spriteHex":"0x11","frame":37,"gate":4},{"tick":8,"kind":"effect-sound","vaHex":"0x004d70c0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 06; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":6,"effectArgsHex":"01 00 06"},{"tick":8,"kind":"actor-frame","vaHex":"0x004d70f8","opcode":"0x21","summary":"set sprite=0x11, frame=38, gate=8, mode=0","spriteHex":"0x11","frame":38,"gate":8},{"tick":16,"kind":"result-sound","vaHex":"0x004d7110","opcode":"0xc2","summary":"WLK id 00 (normal id 00, alt id 00, mode=2)","wlkNo":0,"normalWlkNo":0,"altWlkNo":0,"mode":2},{"tick":16,"kind":"actor-flag","vaHex":"0x004d7114","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":16,"kind":"actor-flag","vaHex":"0x004d711c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":16,"kind":"wait","vaHex":"0x004d7124","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":16,"kind":"actor-frame","vaHex":"0x004d7128","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":18,"kind":"movement","vaHex":"0x004d7130","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":16,"soundVaHex":"0x004d7110","normalWlkNo":0,"altWlkNo":0,"mode":2,"flags":[{"vaHex":"0x004d7114","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d711c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7124","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:effect-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x28","ownerKey":"ataho","ownerName":"아타호","skillName":"맹호의 울부짖음","familyName":"맹호의 울부짖음","skillIdHex":"0x28","levelOrFixed":2,"targetClass":"enemy-all","mpCost":5,"hitCount":1,"frameSequence":[35,36,37,38,0],"expandedFrameGateSequence":[{"tick":0,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":37,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":38,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":18,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[6],"resultWlkNos":[0],"soundModel":"effect-only","soundCalls":[{"tick":8,"opcode":"0x24","wlkNo":6,"effectArgsHex":"01 00 06","role":"effect/cast cue","vaHex":"0x004d70c0"}],"helperIds":[112],"helperFacts":[{"helperId":112,"behaviorClass":"single-frameScript-flash","frameScripts":[{"targetVaHex":"0x004bae04","startTick":0,"durationGate":8,"stopReason":"destroy/end at 0x004bae18","frames":["190@8"],"frameCount":1,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["single 0x20 frameScript frame with EXE gate"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"screen-wide-effect","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"전체기 중 actor 위치 변화 없이 화면/대상 전체 helper effect가 본체인 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:ataho:0x28","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d70a8","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"constant-fixed-family","familyPatternNotes":["현재 승격된 actor VM 기준으로 숙련도별 frame/gate/hit 변화가 없다.","이는 미해석이 아니라 actor 동작은 고정이고, 숙련도 차이는 MP/헬퍼/효과 크기/결과음 등 다른 레이어에서 확인해야 하는 패밀리다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d70a8","opcode":"0x21","summary":"set sprite=0x11, frame=35, gate=2, mode=0","spriteHex":"0x11","frame":35,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d70b0","opcode":"0x21","summary":"set sprite=0x11, frame=36, gate=2, mode=0","spriteHex":"0x11","frame":36,"gate":2},{"tick":4,"kind":"actor-frame","vaHex":"0x004d70b8","opcode":"0x21","summary":"set sprite=0x11, frame=37, gate=4, mode=0","spriteHex":"0x11","frame":37,"gate":4},{"tick":8,"kind":"effect-sound","vaHex":"0x004d70c0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 06; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":6,"effectArgsHex":"01 00 06"},{"tick":8,"kind":"helper-call","vaHex":"0x004d70dc","opcode":"0xbd","summary":"helper-call id=112; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":112},{"tick":8,"kind":"actor-frame","vaHex":"0x004d70f8","opcode":"0x21","summary":"set sprite=0x11, frame=38, gate=8, mode=0","spriteHex":"0x11","frame":38,"gate":8},{"tick":16,"kind":"wait","vaHex":"0x004d7108","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":16,"kind":"result-sound","vaHex":"0x004d7110","opcode":"0xc2","summary":"WLK id 00 (normal id 00, alt id 00, mode=2)","wlkNo":0,"normalWlkNo":0,"altWlkNo":0,"mode":2},{"tick":16,"kind":"actor-flag","vaHex":"0x004d7114","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":16,"kind":"actor-flag","vaHex":"0x004d711c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":16,"kind":"wait","vaHex":"0x004d7124","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":16,"kind":"actor-frame","vaHex":"0x004d7128","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":18,"kind":"movement","vaHex":"0x004d7130","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":16,"soundVaHex":"0x004d7110","normalWlkNo":0,"altWlkNo":0,"mode":2,"flags":[{"vaHex":"0x004d7114","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d711c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7124","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:effect-only","helper:single-frameScript-flash"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x29","ownerKey":"ataho","ownerName":"아타호","skillName":"맹호의 울부짖음","familyName":"맹호의 울부짖음","skillIdHex":"0x29","levelOrFixed":3,"targetClass":"enemy-all","mpCost":5,"hitCount":1,"frameSequence":[35,36,37,38,0],"expandedFrameGateSequence":[{"tick":0,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":37,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":38,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":18,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[6],"resultWlkNos":[0],"soundModel":"effect-only","soundCalls":[{"tick":8,"opcode":"0x24","wlkNo":6,"effectArgsHex":"01 00 06","role":"effect/cast cue","vaHex":"0x004d70c0"}],"helperIds":[113],"helperFacts":[{"helperId":113,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004bae54","startTick":0,"durationGate":35,"stopReason":"destroy/end at 0x004baee8","frames":["190@2","190@6","190@2","190@4","190@2","190@3","190@2","190@2","190@12"],"frameCount":9,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"screen-wide-effect","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"전체기 중 actor 위치 변화 없이 화면/대상 전체 helper effect가 본체인 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:ataho:0x29","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d70a8","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"constant-fixed-family","familyPatternNotes":["현재 승격된 actor VM 기준으로 숙련도별 frame/gate/hit 변화가 없다.","이는 미해석이 아니라 actor 동작은 고정이고, 숙련도 차이는 MP/헬퍼/효과 크기/결과음 등 다른 레이어에서 확인해야 하는 패밀리다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d70a8","opcode":"0x21","summary":"set sprite=0x11, frame=35, gate=2, mode=0","spriteHex":"0x11","frame":35,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d70b0","opcode":"0x21","summary":"set sprite=0x11, frame=36, gate=2, mode=0","spriteHex":"0x11","frame":36,"gate":2},{"tick":4,"kind":"actor-frame","vaHex":"0x004d70b8","opcode":"0x21","summary":"set sprite=0x11, frame=37, gate=4, mode=0","spriteHex":"0x11","frame":37,"gate":4},{"tick":8,"kind":"effect-sound","vaHex":"0x004d70c0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 06; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":6,"effectArgsHex":"01 00 06"},{"tick":8,"kind":"helper-call","vaHex":"0x004d70e8","opcode":"0xbd","summary":"helper-call id=113; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":113},{"tick":8,"kind":"actor-frame","vaHex":"0x004d70f8","opcode":"0x21","summary":"set sprite=0x11, frame=38, gate=8, mode=0","spriteHex":"0x11","frame":38,"gate":8},{"tick":16,"kind":"wait","vaHex":"0x004d7108","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":16,"kind":"result-sound","vaHex":"0x004d7110","opcode":"0xc2","summary":"WLK id 00 (normal id 00, alt id 00, mode=2)","wlkNo":0,"normalWlkNo":0,"altWlkNo":0,"mode":2},{"tick":16,"kind":"actor-flag","vaHex":"0x004d7114","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":16,"kind":"actor-flag","vaHex":"0x004d711c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":16,"kind":"wait","vaHex":"0x004d7124","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":16,"kind":"actor-frame","vaHex":"0x004d7128","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":18,"kind":"movement","vaHex":"0x004d7130","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":16,"soundVaHex":"0x004d7110","normalWlkNo":0,"altWlkNo":0,"mode":2,"flags":[{"vaHex":"0x004d7114","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d711c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7124","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:effect-only","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x2a","ownerKey":"ataho","ownerName":"아타호","skillName":"맹호의 울부짖음","familyName":"맹호의 울부짖음","skillIdHex":"0x2a","levelOrFixed":4,"targetClass":"enemy-all","mpCost":4,"hitCount":1,"frameSequence":[35,36,37,38,0],"expandedFrameGateSequence":[{"tick":0,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":37,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":38,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":18,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[6],"resultWlkNos":[0],"soundModel":"effect-only","soundCalls":[{"tick":8,"opcode":"0x24","wlkNo":6,"effectArgsHex":"01 00 06","role":"effect/cast cue","vaHex":"0x004d70c0"}],"helperIds":[114],"helperFacts":[{"helperId":114,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004baf24","startTick":0,"durationGate":61,"stopReason":"destroy/end at 0x004baff8","frames":["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"],"frameCount":13,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"screen-wide-effect","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"전체기 중 actor 위치 변화 없이 화면/대상 전체 helper effect가 본체인 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:ataho:0x2a","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d70a8","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"constant-fixed-family","familyPatternNotes":["현재 승격된 actor VM 기준으로 숙련도별 frame/gate/hit 변화가 없다.","이는 미해석이 아니라 actor 동작은 고정이고, 숙련도 차이는 MP/헬퍼/효과 크기/결과음 등 다른 레이어에서 확인해야 하는 패밀리다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d70a8","opcode":"0x21","summary":"set sprite=0x11, frame=35, gate=2, mode=0","spriteHex":"0x11","frame":35,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d70b0","opcode":"0x21","summary":"set sprite=0x11, frame=36, gate=2, mode=0","spriteHex":"0x11","frame":36,"gate":2},{"tick":4,"kind":"actor-frame","vaHex":"0x004d70b8","opcode":"0x21","summary":"set sprite=0x11, frame=37, gate=4, mode=0","spriteHex":"0x11","frame":37,"gate":4},{"tick":8,"kind":"effect-sound","vaHex":"0x004d70c0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 06; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":6,"effectArgsHex":"01 00 06"},{"tick":8,"kind":"helper-call","vaHex":"0x004d70f4","opcode":"0xbd","summary":"helper-call id=114; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":114},{"tick":8,"kind":"actor-frame","vaHex":"0x004d70f8","opcode":"0x21","summary":"set sprite=0x11, frame=38, gate=8, mode=0","spriteHex":"0x11","frame":38,"gate":8},{"tick":16,"kind":"wait","vaHex":"0x004d7108","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":16,"kind":"result-sound","vaHex":"0x004d7110","opcode":"0xc2","summary":"WLK id 00 (normal id 00, alt id 00, mode=2)","wlkNo":0,"normalWlkNo":0,"altWlkNo":0,"mode":2},{"tick":16,"kind":"actor-flag","vaHex":"0x004d7114","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":16,"kind":"actor-flag","vaHex":"0x004d711c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":16,"kind":"wait","vaHex":"0x004d7124","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":16,"kind":"actor-frame","vaHex":"0x004d7128","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":18,"kind":"movement","vaHex":"0x004d7130","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":16,"soundVaHex":"0x004d7110","normalWlkNo":0,"altWlkNo":0,"mode":2,"flags":[{"vaHex":"0x004d7114","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d711c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7124","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:effect-only","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x2b","ownerKey":"ataho","ownerName":"아타호","skillName":"호포권","familyName":"호포권","skillIdHex":"0x2b","levelOrFixed":1,"targetClass":"enemy-all","mpCost":15,"hitCount":1,"frameSequence":[18,19,20,0],"expandedFrameGateSequence":[{"tick":0,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":19,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":3,"frame":20,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":5,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":7,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[22],"resultWlkNos":[3],"soundModel":"effect+result","soundCalls":[{"tick":2,"opcode":"0x24","wlkNo":22,"effectArgsHex":"01 00 16","role":"effect/cast cue","vaHex":"0x004d7148"},{"tick":5,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d71c8"}],"helperIds":[23,66],"helperFacts":[{"helperId":23,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["81@0"],"emitFrames":[81],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b4c88","fieldHex":"0x94","role":"unknown-root-branch","targetVaHex":"0x004b4c3c","condition":"word conditional branch local-backward-loop if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004b4c3c","targetSnippet":[{"vaHex":"0x004b4c3c","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, imm=0x00004000 (0.25px), mode=0x81"},{"vaHex":"0x004b4c44","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b4ccc into +0x58"},{"vaHex":"0x004b4c4c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b4c50","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b4c54","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x80, mode=0xe0"},{"vaHex":"0x004b4c58","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x84, mode=0xe0"},{"vaHex":"0x004b4c5c","opcode":"0x11","category":"child-write","summary":"display/child field +0x92, source +0x92, mode=0xe0"},{"vaHex":"0x004b4c60","opcode":"0x11","category":"child-write","summary":"display/child field +0x94, source +0x92, mode=0xe0"}]},{"vaHex":"0x004b4ca0","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b4c94","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b4c94","targetSnippet":[{"vaHex":"0x004b4c94","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b4c98","opcode":"0x11","category":"child-write","summary":"display/child field +0x92, imm=0x00000004 (6.10352e-05px), mode=0x82"},{"vaHex":"0x004b4ca0","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b4c94"},{"vaHex":"0x004b4cac","opcode":"0x02","category":"countdown-wait","summary":"countdown wait frames=8"},{"vaHex":"0x004b4cb0","opcode":"0x12","category":"write","summary":"set display/actor field +0x14, imm=0x00000000 (0px)"},{"vaHex":"0x004b4cb8","opcode":"0x4b","category":"clear-display-list","summary":"clear/free display list slot=2 mask=0x0010"},{"vaHex":"0x004b4cbc","opcode":"0x42","category":"parent-actor","summary":"set parent actor pointer from this display object's actor slot"},{"vaHex":"0x004b4cc0","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]},{"helperId":66,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b7320","startTick":0,"durationGate":6,"stopReason":"loop at 0x004b7320","frames":["146@2","147@2","148@2"],"frameCount":3,"loopEvents":[{"tick":6,"targetVaHex":"0x004b7320","repeatCount":null,"vaHex":"0x004b7338"}],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]},{"targetVaHex":"0x004b7340","startTick":0,"durationGate":4,"stopReason":"destroy/end at 0x004b735c","frames":["132@2","133@2"],"frameCount":2,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"screen-wide-effect","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"전체기 중 actor 위치 변화 없이 화면/대상 전체 helper effect가 본체인 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:ataho:0x2b","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d7140","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"constant-fixed-family","familyPatternNotes":["현재 승격된 actor VM 기준으로 숙련도별 frame/gate/hit 변화가 없다.","이는 미해석이 아니라 actor 동작은 고정이고, 숙련도 차이는 MP/헬퍼/효과 크기/결과음 등 다른 레이어에서 확인해야 하는 패밀리다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d7140","opcode":"0x21","summary":"set sprite=0x11, frame=18, gate=2, mode=0","spriteHex":"0x11","frame":18,"gate":2},{"tick":2,"kind":"effect-sound","vaHex":"0x004d7148","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 22; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":22,"effectArgsHex":"01 00 16"},{"tick":2,"kind":"helper-call","vaHex":"0x004d7164","opcode":"0xbd","summary":"helper-call id=23; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":23},{"tick":2,"kind":"actor-frame","vaHex":"0x004d718c","opcode":"0x12","summary":"direct sprite/frame selector write sprite=0x11, frame=19, field +0x28, mode=0x80","spriteHex":"0x11","frame":19,"gate":1},{"tick":3,"kind":"wait","vaHex":"0x004d7194","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":3,"kind":"actor-frame","vaHex":"0x004d719c","opcode":"0x21","summary":"set sprite=0x11, frame=20, gate=2, mode=0","spriteHex":"0x11","frame":20,"gate":2},{"tick":5,"kind":"helper-call","vaHex":"0x004d71bc","opcode":"0xbd","summary":"helper-call id=66; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":66},{"tick":5,"kind":"wait","vaHex":"0x004d71c0","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":5,"kind":"result-sound","vaHex":"0x004d71c8","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":5,"kind":"actor-flag","vaHex":"0x004d7214","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":5,"kind":"actor-flag","vaHex":"0x004d721c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":5,"kind":"wait","vaHex":"0x004d7224","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":5,"kind":"actor-frame","vaHex":"0x004d7228","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[{"tick":5,"soundVaHex":"0x004d71c8","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d7214","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d721c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7224","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:effect+result","helper:direct-frame-spawn","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x2c","ownerKey":"ataho","ownerName":"아타호","skillName":"호포권","familyName":"호포권","skillIdHex":"0x2c","levelOrFixed":2,"targetClass":"enemy-all","mpCost":15,"hitCount":1,"frameSequence":[18,19,20,0],"expandedFrameGateSequence":[{"tick":0,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":19,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":3,"frame":20,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":5,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":7,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[22],"resultWlkNos":[4],"soundModel":"effect+result","soundCalls":[{"tick":2,"opcode":"0x24","wlkNo":22,"effectArgsHex":"01 00 16","role":"effect/cast cue","vaHex":"0x004d7148"},{"tick":5,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d71e0"}],"helperIds":[27,67],"helperFacts":[{"helperId":27,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["81@0"],"emitFrames":[81],"rootCounterSets":{"0x94":4,"0x96":28},"rootBranches":[{"vaHex":"0x004b4df8","fieldHex":"0x94","role":"unknown-root-branch","targetVaHex":"0x004b4da4","condition":"word conditional branch local-backward-loop if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004b4da4","targetSnippet":[{"vaHex":"0x004b4da4","opcode":"0x2b","category":"random-range","summary":"rng(range=4096) -> +0x58"},{"vaHex":"0x004b4da8","opcode":"0x11","category":"child-write","summary":"display/child field +0x58, imm=0x00000004 (6.10352e-05px), mode=0x8b"},{"vaHex":"0x004b4db0","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x58, mode=0xa0"},{"vaHex":"0x004b4db4","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b4ccc into +0x58"},{"vaHex":"0x004b4dbc","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b4dc0","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b4dc4","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x80, mode=0xe0"},{"vaHex":"0x004b4dc8","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x84, mode=0xe0"}]},{"vaHex":"0x004b4e10","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b4e04","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b4e04","targetSnippet":[{"vaHex":"0x004b4e04","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b4e08","opcode":"0x11","category":"child-write","summary":"display/child field +0x92, imm=0x00000004 (6.10352e-05px), mode=0x82"},{"vaHex":"0x004b4e10","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b4e04"},{"vaHex":"0x004b4e1c","opcode":"0x02","category":"countdown-wait","summary":"countdown wait frames=8"},{"vaHex":"0x004b4e20","opcode":"0x12","category":"write","summary":"set display/actor field +0x14, imm=0x00000000 (0px)"},{"vaHex":"0x004b4e28","opcode":"0x4b","category":"clear-display-list","summary":"clear/free display list slot=2 mask=0x0010"},{"vaHex":"0x004b4e2c","opcode":"0x42","category":"parent-actor","summary":"set parent actor pointer from this display object's actor slot"},{"vaHex":"0x004b4e30","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"}]}],"childMotionLoops":[],"interpretation":["+0x94 raw 4 acts as burst/current-counter seed for +0x8e","+0x96 raw 28 acts as outer repeat counter","static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]},{"helperId":67,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b73e0","startTick":0,"durationGate":6,"stopReason":"loop at 0x004b73e0","frames":["149@2","150@2","151@2"],"frameCount":3,"loopEvents":[{"tick":6,"targetVaHex":"0x004b73e0","repeatCount":null,"vaHex":"0x004b73f8"}],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]},{"targetVaHex":"0x004b7400","startTick":0,"durationGate":8,"stopReason":"destroy/end at 0x004b742c","frames":["130@2","131@2","132@2","133@2"],"frameCount":4,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"screen-wide-effect","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"전체기 중 actor 위치 변화 없이 화면/대상 전체 helper effect가 본체인 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:ataho:0x2c","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d7140","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"constant-fixed-family","familyPatternNotes":["현재 승격된 actor VM 기준으로 숙련도별 frame/gate/hit 변화가 없다.","이는 미해석이 아니라 actor 동작은 고정이고, 숙련도 차이는 MP/헬퍼/효과 크기/결과음 등 다른 레이어에서 확인해야 하는 패밀리다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d7140","opcode":"0x21","summary":"set sprite=0x11, frame=18, gate=2, mode=0","spriteHex":"0x11","frame":18,"gate":2},{"tick":2,"kind":"effect-sound","vaHex":"0x004d7148","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 22; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":22,"effectArgsHex":"01 00 16"},{"tick":2,"kind":"helper-call","vaHex":"0x004d7170","opcode":"0xbd","summary":"helper-call id=27; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":27},{"tick":2,"kind":"actor-frame","vaHex":"0x004d718c","opcode":"0x12","summary":"direct sprite/frame selector write sprite=0x11, frame=19, field +0x28, mode=0x80","spriteHex":"0x11","frame":19,"gate":1},{"tick":3,"kind":"wait","vaHex":"0x004d7194","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":3,"kind":"actor-frame","vaHex":"0x004d719c","opcode":"0x21","summary":"set sprite=0x11, frame=20, gate=2, mode=0","spriteHex":"0x11","frame":20,"gate":2},{"tick":5,"kind":"helper-call","vaHex":"0x004d71d4","opcode":"0xbd","summary":"helper-call id=67; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":67},{"tick":5,"kind":"wait","vaHex":"0x004d71d8","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":5,"kind":"result-sound","vaHex":"0x004d71e0","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":5,"kind":"actor-flag","vaHex":"0x004d7214","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":5,"kind":"actor-flag","vaHex":"0x004d721c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":5,"kind":"wait","vaHex":"0x004d7224","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":5,"kind":"actor-frame","vaHex":"0x004d7228","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[{"tick":5,"soundVaHex":"0x004d71e0","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d7214","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d721c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7224","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:effect+result","helper:direct-frame-spawn","helper-root-counters","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x2d","ownerKey":"ataho","ownerName":"아타호","skillName":"호포권","familyName":"호포권","skillIdHex":"0x2d","levelOrFixed":3,"targetClass":"enemy-all","mpCost":14,"hitCount":1,"frameSequence":[18,19,20,0],"expandedFrameGateSequence":[{"tick":0,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":19,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":3,"frame":20,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":5,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":7,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[22],"resultWlkNos":[4],"soundModel":"effect+result","soundCalls":[{"tick":2,"opcode":"0x24","wlkNo":22,"effectArgsHex":"01 00 16","role":"effect/cast cue","vaHex":"0x004d7148"},{"tick":5,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d71f8"}],"helperIds":[25,68],"helperFacts":[{"helperId":25,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["81@0"],"emitFrames":[81],"rootCounterSets":{"0x94":8,"0x96":36},"rootBranches":[{"vaHex":"0x004b4c88","fieldHex":"0x94","role":"unknown-root-branch","targetVaHex":"0x004b4c3c","condition":"word conditional branch local-backward-loop if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004b4c3c","targetSnippet":[{"vaHex":"0x004b4c3c","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, imm=0x00004000 (0.25px), mode=0x81"},{"vaHex":"0x004b4c44","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b4ccc into +0x58"},{"vaHex":"0x004b4c4c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b4c50","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b4c54","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x80, mode=0xe0"},{"vaHex":"0x004b4c58","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x84, mode=0xe0"},{"vaHex":"0x004b4c5c","opcode":"0x11","category":"child-write","summary":"display/child field +0x92, source +0x92, mode=0xe0"},{"vaHex":"0x004b4c60","opcode":"0x11","category":"child-write","summary":"display/child field +0x94, source +0x92, mode=0xe0"}]},{"vaHex":"0x004b4ca0","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b4c94","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b4c94","targetSnippet":[{"vaHex":"0x004b4c94","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b4c98","opcode":"0x11","category":"child-write","summary":"display/child field +0x92, imm=0x00000004 (6.10352e-05px), mode=0x82"},{"vaHex":"0x004b4ca0","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b4c94"},{"vaHex":"0x004b4cac","opcode":"0x02","category":"countdown-wait","summary":"countdown wait frames=8"},{"vaHex":"0x004b4cb0","opcode":"0x12","category":"write","summary":"set display/actor field +0x14, imm=0x00000000 (0px)"},{"vaHex":"0x004b4cb8","opcode":"0x4b","category":"clear-display-list","summary":"clear/free display list slot=2 mask=0x0010"},{"vaHex":"0x004b4cbc","opcode":"0x42","category":"parent-actor","summary":"set parent actor pointer from this display object's actor slot"},{"vaHex":"0x004b4cc0","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"}]}],"childMotionLoops":[],"interpretation":["+0x94 raw 8 acts as burst/current-counter seed for +0x8e","+0x96 raw 36 acts as outer repeat counter","static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]},{"helperId":68,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b749c","startTick":0,"durationGate":6,"stopReason":"loop at 0x004b749c","frames":["152@2","153@2","154@2"],"frameCount":3,"loopEvents":[{"tick":6,"targetVaHex":"0x004b749c","repeatCount":null,"vaHex":"0x004b74b4"}],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]},{"targetVaHex":"0x004b74bc","startTick":0,"durationGate":8,"stopReason":"destroy/end at 0x004b74f0","frames":["130@2","131@2","132@2","133@2"],"frameCount":4,"loopEvents":[{"tick":8,"targetVaHex":"0x004b74bc","repeatCount":2,"vaHex":"0x004b74dc"}],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"screen-wide-effect","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"전체기 중 actor 위치 변화 없이 화면/대상 전체 helper effect가 본체인 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:ataho:0x2d","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d7140","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"constant-fixed-family","familyPatternNotes":["현재 승격된 actor VM 기준으로 숙련도별 frame/gate/hit 변화가 없다.","이는 미해석이 아니라 actor 동작은 고정이고, 숙련도 차이는 MP/헬퍼/효과 크기/결과음 등 다른 레이어에서 확인해야 하는 패밀리다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d7140","opcode":"0x21","summary":"set sprite=0x11, frame=18, gate=2, mode=0","spriteHex":"0x11","frame":18,"gate":2},{"tick":2,"kind":"effect-sound","vaHex":"0x004d7148","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 22; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":22,"effectArgsHex":"01 00 16"},{"tick":2,"kind":"helper-call","vaHex":"0x004d717c","opcode":"0xbd","summary":"helper-call id=25; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":25},{"tick":2,"kind":"actor-frame","vaHex":"0x004d718c","opcode":"0x12","summary":"direct sprite/frame selector write sprite=0x11, frame=19, field +0x28, mode=0x80","spriteHex":"0x11","frame":19,"gate":1},{"tick":3,"kind":"wait","vaHex":"0x004d7194","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":3,"kind":"actor-frame","vaHex":"0x004d719c","opcode":"0x21","summary":"set sprite=0x11, frame=20, gate=2, mode=0","spriteHex":"0x11","frame":20,"gate":2},{"tick":5,"kind":"helper-call","vaHex":"0x004d71ec","opcode":"0xbd","summary":"helper-call id=68; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":68},{"tick":5,"kind":"wait","vaHex":"0x004d71f0","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":5,"kind":"result-sound","vaHex":"0x004d71f8","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":5,"kind":"actor-flag","vaHex":"0x004d7214","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":5,"kind":"actor-flag","vaHex":"0x004d721c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":5,"kind":"wait","vaHex":"0x004d7224","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":5,"kind":"actor-frame","vaHex":"0x004d7228","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[{"tick":5,"soundVaHex":"0x004d71f8","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d7214","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d721c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7224","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:effect+result","helper:direct-frame-spawn","helper-root-counters","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x2e","ownerKey":"ataho","ownerName":"아타호","skillName":"호포권","familyName":"호포권","skillIdHex":"0x2e","levelOrFixed":4,"targetClass":"enemy-all","mpCost":12,"hitCount":1,"frameSequence":[18,19,20,0],"expandedFrameGateSequence":[{"tick":0,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":19,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":3,"frame":20,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":5,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":7,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[22],"resultWlkNos":[5],"soundModel":"effect+result","soundCalls":[{"tick":2,"opcode":"0x24","wlkNo":22,"effectArgsHex":"01 00 16","role":"effect/cast cue","vaHex":"0x004d7148"},{"tick":5,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d7210"}],"helperIds":[28,69],"helperFacts":[{"helperId":28,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["81@0"],"emitFrames":[81],"rootCounterSets":{"0x94":8,"0x96":36},"rootBranches":[{"vaHex":"0x004b4df8","fieldHex":"0x94","role":"unknown-root-branch","targetVaHex":"0x004b4da4","condition":"word conditional branch local-backward-loop if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004b4da4","targetSnippet":[{"vaHex":"0x004b4da4","opcode":"0x2b","category":"random-range","summary":"rng(range=4096) -> +0x58"},{"vaHex":"0x004b4da8","opcode":"0x11","category":"child-write","summary":"display/child field +0x58, imm=0x00000004 (6.10352e-05px), mode=0x8b"},{"vaHex":"0x004b4db0","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x58, mode=0xa0"},{"vaHex":"0x004b4db4","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b4ccc into +0x58"},{"vaHex":"0x004b4dbc","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b4dc0","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b4dc4","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x80, mode=0xe0"},{"vaHex":"0x004b4dc8","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x84, mode=0xe0"}]},{"vaHex":"0x004b4e10","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b4e04","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b4e04","targetSnippet":[{"vaHex":"0x004b4e04","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b4e08","opcode":"0x11","category":"child-write","summary":"display/child field +0x92, imm=0x00000004 (6.10352e-05px), mode=0x82"},{"vaHex":"0x004b4e10","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b4e04"},{"vaHex":"0x004b4e1c","opcode":"0x02","category":"countdown-wait","summary":"countdown wait frames=8"},{"vaHex":"0x004b4e20","opcode":"0x12","category":"write","summary":"set display/actor field +0x14, imm=0x00000000 (0px)"},{"vaHex":"0x004b4e28","opcode":"0x4b","category":"clear-display-list","summary":"clear/free display list slot=2 mask=0x0010"},{"vaHex":"0x004b4e2c","opcode":"0x42","category":"parent-actor","summary":"set parent actor pointer from this display object's actor slot"},{"vaHex":"0x004b4e30","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"}]}],"childMotionLoops":[],"interpretation":["+0x94 raw 8 acts as burst/current-counter seed for +0x8e","+0x96 raw 36 acts as outer repeat counter","static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]},{"helperId":69,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b75f8","startTick":0,"durationGate":6,"stopReason":"loop at 0x004b75f8","frames":["152@2","153@2","154@2"],"frameCount":3,"loopEvents":[{"tick":6,"targetVaHex":"0x004b75f8","repeatCount":null,"vaHex":"0x004b7610"}],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]},{"targetVaHex":"0x004b7618","startTick":13,"durationGate":8,"stopReason":"destroy/end at 0x004b764c","frames":["130@2","131@2","132@2","133@2"],"frameCount":4,"loopEvents":[{"tick":8,"targetVaHex":"0x004b74bc","repeatCount":3,"vaHex":"0x004b7638"}],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{"0x96":8},"rootBranches":[{"vaHex":"0x004b7578","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b7594","condition":"conditional branch motion.dx +0x74 >= 0x80000000; target 0x004b7594","targetSnippet":[{"vaHex":"0x004b7594","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xfa"},{"vaHex":"0x004b7598","opcode":"0x12","category":"write","summary":"div display/actor field +0x74, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b75a0","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xfa"},{"vaHex":"0x004b75a4","opcode":"0x12","category":"write","summary":"set display/actor field +0x78, source +0x84, mode=0xe0"},{"vaHex":"0x004b75a8","opcode":"0x12","category":"write","summary":"sub display/actor field +0x78, source +0x20, mode=0xe2"},{"vaHex":"0x004b75ac","opcode":"0x15","category":"conditional-branch","summary":"conditional branch motion.dy +0x78 >= 0x80000000; target 0x004b75c8"},{"vaHex":"0x004b75b8","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b75c0","opcode":"0x03","category":"jump","summary":"jump 0x004b75d8"}]},{"vaHex":"0x004b75ac","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b75c8","condition":"conditional branch motion.dy +0x78 >= 0x80000000; target 0x004b75c8","targetSnippet":[{"vaHex":"0x004b75c8","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xfa"},{"vaHex":"0x004b75cc","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b75d4","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xfa"},{"vaHex":"0x004b75d8","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000008 (0.00012207px), mode=0xc0"},{"vaHex":"0x004b75e0","opcode":"0x02","category":"countdown-wait","summary":"countdown wait frames=12"},{"vaHex":"0x004b75e4","opcode":"0x20","category":"frame-script-pointer","summary":"set display.frameScript(+0x64) = 0x004b7618"},{"vaHex":"0x004b75ec","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b75f0","opcode":"0x03","category":"jump","summary":"jump 0x004b75ec"}]}],"childMotionLoops":[],"interpretation":["+0x96 raw 8 acts as outer repeat counter"],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"screen-wide-effect","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"전체기 중 actor 위치 변화 없이 화면/대상 전체 helper effect가 본체인 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:ataho:0x2e","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d7140","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"constant-fixed-family","familyPatternNotes":["현재 승격된 actor VM 기준으로 숙련도별 frame/gate/hit 변화가 없다.","이는 미해석이 아니라 actor 동작은 고정이고, 숙련도 차이는 MP/헬퍼/효과 크기/결과음 등 다른 레이어에서 확인해야 하는 패밀리다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d7140","opcode":"0x21","summary":"set sprite=0x11, frame=18, gate=2, mode=0","spriteHex":"0x11","frame":18,"gate":2},{"tick":2,"kind":"effect-sound","vaHex":"0x004d7148","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 22; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":22,"effectArgsHex":"01 00 16"},{"tick":2,"kind":"helper-call","vaHex":"0x004d7188","opcode":"0xbd","summary":"helper-call id=28; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":28},{"tick":2,"kind":"actor-frame","vaHex":"0x004d718c","opcode":"0x12","summary":"direct sprite/frame selector write sprite=0x11, frame=19, field +0x28, mode=0x80","spriteHex":"0x11","frame":19,"gate":1},{"tick":3,"kind":"wait","vaHex":"0x004d7194","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":3,"kind":"actor-frame","vaHex":"0x004d719c","opcode":"0x21","summary":"set sprite=0x11, frame=20, gate=2, mode=0","spriteHex":"0x11","frame":20,"gate":2},{"tick":5,"kind":"helper-call","vaHex":"0x004d7204","opcode":"0xbd","summary":"helper-call id=69; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":69},{"tick":5,"kind":"wait","vaHex":"0x004d7208","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":5,"kind":"result-sound","vaHex":"0x004d7210","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":5,"kind":"actor-flag","vaHex":"0x004d7214","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":5,"kind":"actor-flag","vaHex":"0x004d721c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":5,"kind":"wait","vaHex":"0x004d7224","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":5,"kind":"actor-frame","vaHex":"0x004d7228","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[{"tick":5,"soundVaHex":"0x004d7210","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d7214","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d721c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7224","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:effect+result","helper:direct-frame-spawn","helper-root-counters","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x2f","ownerKey":"ataho","ownerName":"아타호","skillName":"맹호룬룬권","familyName":"맹호룬룬권","skillIdHex":"0x2f","levelOrFixed":1,"targetClass":"enemy-all","mpCost":20,"hitCount":2,"frameSequence":[44,45,46,47,44,48,49,50,0],"expandedFrameGateSequence":[{"tick":0,"frame":44,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":45,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":46,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":47,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":44,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":48,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":49,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":50,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":22,"repeatLoopCount":0,"hitEventCount":2,"hitClassCounts":{"confirmed-result-hit-window":2},"effectWlkNos":[32],"resultWlkNos":[3,3],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":32,"effectArgsHex":"01 00 20","role":"effect/cast cue","vaHex":"0x004d7240"},{"tick":10,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d726c"},{"tick":20,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d72a4"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:ataho:0x2f","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d7240","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 2, 3, 4, 5","0xc2 result sound count changes: 2, 3, 4, 5","frame count changes: 9, 11, 13, 17"],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004d7240","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 32; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":32,"effectArgsHex":"01 00 20"},{"tick":0,"kind":"actor-write","vaHex":"0x004d7244","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d724c","opcode":"0x21","summary":"set sprite=0x11, frame=44, gate=2, mode=0","spriteHex":"0x11","frame":44,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d7254","opcode":"0x21","summary":"set sprite=0x11, frame=45, gate=2, mode=0","spriteHex":"0x11","frame":45,"gate":2},{"tick":4,"kind":"actor-frame","vaHex":"0x004d725c","opcode":"0x21","summary":"set sprite=0x11, frame=46, gate=4, mode=0","spriteHex":"0x11","frame":46,"gate":4},{"tick":8,"kind":"actor-frame","vaHex":"0x004d7264","opcode":"0x21","summary":"set sprite=0x11, frame=47, gate=2, mode=0","spriteHex":"0x11","frame":47,"gate":2},{"tick":10,"kind":"result-sound","vaHex":"0x004d726c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":10,"kind":"actor-flag","vaHex":"0x004d7270","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x004d7278","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x004d7280","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-frame","vaHex":"0x004d7284","opcode":"0x21","summary":"set sprite=0x11, frame=44, gate=2, mode=0","spriteHex":"0x11","frame":44,"gate":2},{"tick":12,"kind":"actor-frame","vaHex":"0x004d728c","opcode":"0x21","summary":"set sprite=0x11, frame=48, gate=2, mode=0","spriteHex":"0x11","frame":48,"gate":2},{"tick":14,"kind":"actor-frame","vaHex":"0x004d7294","opcode":"0x21","summary":"set sprite=0x11, frame=49, gate=4, mode=0","spriteHex":"0x11","frame":49,"gate":4},{"tick":18,"kind":"actor-frame","vaHex":"0x004d729c","opcode":"0x21","summary":"set sprite=0x11, frame=50, gate=2, mode=0","spriteHex":"0x11","frame":50,"gate":2},{"tick":20,"kind":"result-sound","vaHex":"0x004d72a4","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":20,"kind":"actor-flag","vaHex":"0x004d72a8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":20,"kind":"actor-flag","vaHex":"0x004d72b0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":20,"kind":"wait","vaHex":"0x004d72b8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":20,"kind":"actor-write","vaHex":"0x004d72bc","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":20,"kind":"actor-frame","vaHex":"0x004d7364","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":22,"kind":"movement","vaHex":"0x004d736c","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":10,"soundVaHex":"0x004d726c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d7270","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d7278","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7280","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":20,"soundVaHex":"0x004d72a4","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d72a8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d72b0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d72b8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:effect+result"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x30","ownerKey":"ataho","ownerName":"아타호","skillName":"맹호룬룬권","familyName":"맹호룬룬권","skillIdHex":"0x30","levelOrFixed":2,"targetClass":"enemy-all","mpCost":20,"hitCount":3,"frameSequence":[44,45,46,47,44,48,49,50,12,13,0],"expandedFrameGateSequence":[{"tick":0,"frame":44,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":45,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":46,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":47,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":44,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":48,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":49,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":50,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":13,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":28,"repeatLoopCount":0,"hitEventCount":3,"hitClassCounts":{"confirmed-result-hit-window":3},"effectWlkNos":[32],"resultWlkNos":[3,3,3],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":32,"effectArgsHex":"01 00 20","role":"effect/cast cue","vaHex":"0x004d7240"},{"tick":10,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d726c"},{"tick":20,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d72a4"},{"tick":22,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d72d4"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:ataho:0x30","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d7240","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 2, 3, 4, 5","0xc2 result sound count changes: 2, 3, 4, 5","frame count changes: 9, 11, 13, 17"],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004d7240","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 32; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":32,"effectArgsHex":"01 00 20"},{"tick":0,"kind":"actor-write","vaHex":"0x004d7244","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d724c","opcode":"0x21","summary":"set sprite=0x11, frame=44, gate=2, mode=0","spriteHex":"0x11","frame":44,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d7254","opcode":"0x21","summary":"set sprite=0x11, frame=45, gate=2, mode=0","spriteHex":"0x11","frame":45,"gate":2},{"tick":4,"kind":"actor-frame","vaHex":"0x004d725c","opcode":"0x21","summary":"set sprite=0x11, frame=46, gate=4, mode=0","spriteHex":"0x11","frame":46,"gate":4},{"tick":8,"kind":"actor-frame","vaHex":"0x004d7264","opcode":"0x21","summary":"set sprite=0x11, frame=47, gate=2, mode=0","spriteHex":"0x11","frame":47,"gate":2},{"tick":10,"kind":"result-sound","vaHex":"0x004d726c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":10,"kind":"actor-flag","vaHex":"0x004d7270","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x004d7278","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x004d7280","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-frame","vaHex":"0x004d7284","opcode":"0x21","summary":"set sprite=0x11, frame=44, gate=2, mode=0","spriteHex":"0x11","frame":44,"gate":2},{"tick":12,"kind":"actor-frame","vaHex":"0x004d728c","opcode":"0x21","summary":"set sprite=0x11, frame=48, gate=2, mode=0","spriteHex":"0x11","frame":48,"gate":2},{"tick":14,"kind":"actor-frame","vaHex":"0x004d7294","opcode":"0x21","summary":"set sprite=0x11, frame=49, gate=4, mode=0","spriteHex":"0x11","frame":49,"gate":4},{"tick":18,"kind":"actor-frame","vaHex":"0x004d729c","opcode":"0x21","summary":"set sprite=0x11, frame=50, gate=2, mode=0","spriteHex":"0x11","frame":50,"gate":2},{"tick":20,"kind":"result-sound","vaHex":"0x004d72a4","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":20,"kind":"actor-flag","vaHex":"0x004d72a8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":20,"kind":"actor-flag","vaHex":"0x004d72b0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":20,"kind":"wait","vaHex":"0x004d72b8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":20,"kind":"actor-write","vaHex":"0x004d72bc","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":20,"kind":"actor-frame","vaHex":"0x004d72cc","opcode":"0x21","summary":"set sprite=0x11, frame=12, gate=2, mode=0","spriteHex":"0x11","frame":12,"gate":2},{"tick":22,"kind":"result-sound","vaHex":"0x004d72d4","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":22,"kind":"actor-flag","vaHex":"0x004d72d8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":22,"kind":"actor-flag","vaHex":"0x004d72e0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":22,"kind":"wait","vaHex":"0x004d72e8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":22,"kind":"actor-frame","vaHex":"0x004d72ec","opcode":"0x21","summary":"set sprite=0x11, frame=13, gate=4, mode=0","spriteHex":"0x11","frame":13,"gate":4},{"tick":26,"kind":"actor-frame","vaHex":"0x004d7364","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":28,"kind":"movement","vaHex":"0x004d736c","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":10,"soundVaHex":"0x004d726c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d7270","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d7278","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7280","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":20,"soundVaHex":"0x004d72a4","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d72a8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d72b0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d72b8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":22,"soundVaHex":"0x004d72d4","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d72d8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d72e0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d72e8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:effect+result"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x31","ownerKey":"ataho","ownerName":"아타호","skillName":"맹호룬룬권","familyName":"맹호룬룬권","skillIdHex":"0x31","levelOrFixed":3,"targetClass":"enemy-all","mpCost":18,"hitCount":4,"frameSequence":[44,45,46,47,44,48,49,50,12,13,25,26,0],"expandedFrameGateSequence":[{"tick":0,"frame":44,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":45,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":46,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":47,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":44,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":48,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":49,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":50,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":13,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":26,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":34,"repeatLoopCount":0,"hitEventCount":4,"hitClassCounts":{"confirmed-result-hit-window":4},"effectWlkNos":[32],"resultWlkNos":[3,3,3,3],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":32,"effectArgsHex":"01 00 20","role":"effect/cast cue","vaHex":"0x004d7240"},{"tick":10,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d726c"},{"tick":20,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d72a4"},{"tick":22,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d72d4"},{"tick":28,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d7304"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:ataho:0x31","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d7240","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 2, 3, 4, 5","0xc2 result sound count changes: 2, 3, 4, 5","frame count changes: 9, 11, 13, 17"],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004d7240","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 32; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":32,"effectArgsHex":"01 00 20"},{"tick":0,"kind":"actor-write","vaHex":"0x004d7244","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d724c","opcode":"0x21","summary":"set sprite=0x11, frame=44, gate=2, mode=0","spriteHex":"0x11","frame":44,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d7254","opcode":"0x21","summary":"set sprite=0x11, frame=45, gate=2, mode=0","spriteHex":"0x11","frame":45,"gate":2},{"tick":4,"kind":"actor-frame","vaHex":"0x004d725c","opcode":"0x21","summary":"set sprite=0x11, frame=46, gate=4, mode=0","spriteHex":"0x11","frame":46,"gate":4},{"tick":8,"kind":"actor-frame","vaHex":"0x004d7264","opcode":"0x21","summary":"set sprite=0x11, frame=47, gate=2, mode=0","spriteHex":"0x11","frame":47,"gate":2},{"tick":10,"kind":"result-sound","vaHex":"0x004d726c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":10,"kind":"actor-flag","vaHex":"0x004d7270","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x004d7278","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x004d7280","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-frame","vaHex":"0x004d7284","opcode":"0x21","summary":"set sprite=0x11, frame=44, gate=2, mode=0","spriteHex":"0x11","frame":44,"gate":2},{"tick":12,"kind":"actor-frame","vaHex":"0x004d728c","opcode":"0x21","summary":"set sprite=0x11, frame=48, gate=2, mode=0","spriteHex":"0x11","frame":48,"gate":2},{"tick":14,"kind":"actor-frame","vaHex":"0x004d7294","opcode":"0x21","summary":"set sprite=0x11, frame=49, gate=4, mode=0","spriteHex":"0x11","frame":49,"gate":4},{"tick":18,"kind":"actor-frame","vaHex":"0x004d729c","opcode":"0x21","summary":"set sprite=0x11, frame=50, gate=2, mode=0","spriteHex":"0x11","frame":50,"gate":2},{"tick":20,"kind":"result-sound","vaHex":"0x004d72a4","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":20,"kind":"actor-flag","vaHex":"0x004d72a8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":20,"kind":"actor-flag","vaHex":"0x004d72b0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":20,"kind":"wait","vaHex":"0x004d72b8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":20,"kind":"actor-write","vaHex":"0x004d72bc","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":20,"kind":"actor-frame","vaHex":"0x004d72cc","opcode":"0x21","summary":"set sprite=0x11, frame=12, gate=2, mode=0","spriteHex":"0x11","frame":12,"gate":2},{"tick":22,"kind":"result-sound","vaHex":"0x004d72d4","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":22,"kind":"actor-flag","vaHex":"0x004d72d8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":22,"kind":"actor-flag","vaHex":"0x004d72e0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":22,"kind":"wait","vaHex":"0x004d72e8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":22,"kind":"actor-frame","vaHex":"0x004d72ec","opcode":"0x21","summary":"set sprite=0x11, frame=13, gate=4, mode=0","spriteHex":"0x11","frame":13,"gate":4},{"tick":26,"kind":"actor-frame","vaHex":"0x004d72fc","opcode":"0x21","summary":"set sprite=0x11, frame=25, gate=2, mode=0","spriteHex":"0x11","frame":25,"gate":2},{"tick":28,"kind":"result-sound","vaHex":"0x004d7304","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":28,"kind":"actor-flag","vaHex":"0x004d7308","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":28,"kind":"actor-flag","vaHex":"0x004d7310","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":28,"kind":"wait","vaHex":"0x004d7318","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":28,"kind":"actor-frame","vaHex":"0x004d731c","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=4, mode=0","spriteHex":"0x11","frame":26,"gate":4},{"tick":32,"kind":"actor-frame","vaHex":"0x004d7364","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":34,"kind":"movement","vaHex":"0x004d736c","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":10,"soundVaHex":"0x004d726c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d7270","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d7278","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7280","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":20,"soundVaHex":"0x004d72a4","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d72a8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d72b0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d72b8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":22,"soundVaHex":"0x004d72d4","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d72d8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d72e0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d72e8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":28,"soundVaHex":"0x004d7304","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d7308","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d7310","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7318","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:effect+result"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x32","ownerKey":"ataho","ownerName":"아타호","skillName":"맹호룬룬권","familyName":"맹호룬룬권","skillIdHex":"0x32","levelOrFixed":4,"targetClass":"enemy-all","mpCost":16,"hitCount":5,"frameSequence":[44,45,46,47,44,48,49,50,12,13,25,26,8,9,10,11,0],"expandedFrameGateSequence":[{"tick":0,"frame":44,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":45,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":46,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":47,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":44,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":48,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":49,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":50,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":13,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":26,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":8,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":9,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":10,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":40,"frame":11,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":46,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":48,"repeatLoopCount":0,"hitEventCount":5,"hitClassCounts":{"confirmed-result-hit-window":5},"effectWlkNos":[32],"resultWlkNos":[3,3,3,3,4],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":32,"effectArgsHex":"01 00 20","role":"effect/cast cue","vaHex":"0x004d7240"},{"tick":10,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d726c"},{"tick":20,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d72a4"},{"tick":22,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d72d4"},{"tick":28,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d7304"},{"tick":40,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d7344"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:ataho:0x32","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004d7240","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 2, 3, 4, 5","0xc2 result sound count changes: 2, 3, 4, 5","frame count changes: 9, 11, 13, 17"],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004d7240","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 32; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":32,"effectArgsHex":"01 00 20"},{"tick":0,"kind":"actor-write","vaHex":"0x004d7244","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d724c","opcode":"0x21","summary":"set sprite=0x11, frame=44, gate=2, mode=0","spriteHex":"0x11","frame":44,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004d7254","opcode":"0x21","summary":"set sprite=0x11, frame=45, gate=2, mode=0","spriteHex":"0x11","frame":45,"gate":2},{"tick":4,"kind":"actor-frame","vaHex":"0x004d725c","opcode":"0x21","summary":"set sprite=0x11, frame=46, gate=4, mode=0","spriteHex":"0x11","frame":46,"gate":4},{"tick":8,"kind":"actor-frame","vaHex":"0x004d7264","opcode":"0x21","summary":"set sprite=0x11, frame=47, gate=2, mode=0","spriteHex":"0x11","frame":47,"gate":2},{"tick":10,"kind":"result-sound","vaHex":"0x004d726c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":10,"kind":"actor-flag","vaHex":"0x004d7270","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x004d7278","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x004d7280","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-frame","vaHex":"0x004d7284","opcode":"0x21","summary":"set sprite=0x11, frame=44, gate=2, mode=0","spriteHex":"0x11","frame":44,"gate":2},{"tick":12,"kind":"actor-frame","vaHex":"0x004d728c","opcode":"0x21","summary":"set sprite=0x11, frame=48, gate=2, mode=0","spriteHex":"0x11","frame":48,"gate":2},{"tick":14,"kind":"actor-frame","vaHex":"0x004d7294","opcode":"0x21","summary":"set sprite=0x11, frame=49, gate=4, mode=0","spriteHex":"0x11","frame":49,"gate":4},{"tick":18,"kind":"actor-frame","vaHex":"0x004d729c","opcode":"0x21","summary":"set sprite=0x11, frame=50, gate=2, mode=0","spriteHex":"0x11","frame":50,"gate":2},{"tick":20,"kind":"result-sound","vaHex":"0x004d72a4","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":20,"kind":"actor-flag","vaHex":"0x004d72a8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":20,"kind":"actor-flag","vaHex":"0x004d72b0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":20,"kind":"wait","vaHex":"0x004d72b8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":20,"kind":"actor-write","vaHex":"0x004d72bc","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":20,"kind":"actor-frame","vaHex":"0x004d72cc","opcode":"0x21","summary":"set sprite=0x11, frame=12, gate=2, mode=0","spriteHex":"0x11","frame":12,"gate":2},{"tick":22,"kind":"result-sound","vaHex":"0x004d72d4","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":22,"kind":"actor-flag","vaHex":"0x004d72d8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":22,"kind":"actor-flag","vaHex":"0x004d72e0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":22,"kind":"wait","vaHex":"0x004d72e8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":22,"kind":"actor-frame","vaHex":"0x004d72ec","opcode":"0x21","summary":"set sprite=0x11, frame=13, gate=4, mode=0","spriteHex":"0x11","frame":13,"gate":4},{"tick":26,"kind":"actor-frame","vaHex":"0x004d72fc","opcode":"0x21","summary":"set sprite=0x11, frame=25, gate=2, mode=0","spriteHex":"0x11","frame":25,"gate":2},{"tick":28,"kind":"result-sound","vaHex":"0x004d7304","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":28,"kind":"actor-flag","vaHex":"0x004d7308","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":28,"kind":"actor-flag","vaHex":"0x004d7310","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":28,"kind":"wait","vaHex":"0x004d7318","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":28,"kind":"actor-frame","vaHex":"0x004d731c","opcode":"0x21","summary":"set sprite=0x11, frame=26, gate=4, mode=0","spriteHex":"0x11","frame":26,"gate":4},{"tick":32,"kind":"actor-frame","vaHex":"0x004d732c","opcode":"0x21","summary":"set sprite=0x11, frame=8, gate=4, mode=0","spriteHex":"0x11","frame":8,"gate":4},{"tick":36,"kind":"actor-frame","vaHex":"0x004d7334","opcode":"0x21","summary":"set sprite=0x11, frame=9, gate=2, mode=0","spriteHex":"0x11","frame":9,"gate":2},{"tick":38,"kind":"actor-frame","vaHex":"0x004d733c","opcode":"0x21","summary":"set sprite=0x11, frame=10, gate=2, mode=0","spriteHex":"0x11","frame":10,"gate":2},{"tick":40,"kind":"result-sound","vaHex":"0x004d7344","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":40,"kind":"actor-flag","vaHex":"0x004d7348","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":40,"kind":"actor-flag","vaHex":"0x004d7350","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":40,"kind":"wait","vaHex":"0x004d7358","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":40,"kind":"actor-frame","vaHex":"0x004d735c","opcode":"0x21","summary":"set sprite=0x11, frame=11, gate=6, mode=0","spriteHex":"0x11","frame":11,"gate":6},{"tick":46,"kind":"actor-frame","vaHex":"0x004d7364","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":48,"kind":"movement","vaHex":"0x004d736c","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":10,"soundVaHex":"0x004d726c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d7270","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d7278","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7280","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":20,"soundVaHex":"0x004d72a4","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d72a8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d72b0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d72b8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":22,"soundVaHex":"0x004d72d4","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d72d8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d72e0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d72e8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":28,"soundVaHex":"0x004d7304","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d7308","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d7310","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7318","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":40,"soundVaHex":"0x004d7344","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d7348","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d7350","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7358","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:effect+result"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x33","ownerKey":"ataho","ownerName":"아타호","skillName":"비기·맹호유성각","familyName":"display-table fallback","skillIdHex":"0x33","levelOrFixed":1,"targetClass":"enemy-all","mpCost":30,"hitCount":1,"frameSequence":[0,0],"expandedFrameGateSequence":[{"tick":0,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":0,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":3,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[16,27],"resultWlkNos":[7],"soundModel":"effect+result","soundCalls":[{"tick":2,"opcode":"0x24","wlkNo":16,"effectArgsHex":"01 00 10","role":"effect/cast cue","vaHex":"0x004d7384"},{"tick":2,"opcode":"0x24","wlkNo":27,"effectArgsHex":"01 00 1b","role":"effect/cast cue","vaHex":"0x004d7390"},{"tick":2,"opcode":"0xc2","wlkNo":7,"normalWlkNo":7,"altWlkNo":7,"mode":1,"role":"skill-specific result cue","vaHex":"0x004d7460"}],"helperIds":[79],"helperFacts":[{"helperId":79,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["144@0"],"emitFrames":[144],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b8190","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b8124","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b8124","targetSnippet":[{"vaHex":"0x004b8124","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b8364 into +0x58"},{"vaHex":"0x004b812c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b8130","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b8134","opcode":"0x2b","category":"random-range","summary":"rng(range=128) -> +0x58"},{"vaHex":"0x004b8138","opcode":"0x12","category":"write","summary":"add display/actor field +0x58, imm=0x000001b0 (0.0065918px)"},{"vaHex":"0x004b8140","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00010000 (1px)"},{"vaHex":"0x004b8148","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00800000 (128px)"},{"vaHex":"0x004b8150","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x58, mode=0xe0"}]},{"vaHex":"0x004b81a8","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b8120","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b8120","targetSnippet":[{"vaHex":"0x004b8120","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b8124","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b8364 into +0x58"},{"vaHex":"0x004b812c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b8130","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b8134","opcode":"0x2b","category":"random-range","summary":"rng(range=128) -> +0x58"},{"vaHex":"0x004b8138","opcode":"0x12","category":"write","summary":"add display/actor field +0x58, imm=0x000001b0 (0.0065918px)"},{"vaHex":"0x004b8140","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00010000 (1px)"},{"vaHex":"0x004b8148","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00800000 (128px)"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"spawned-child-display-flow","renderTrack":"spawned-child-display-flow","implementationState":"needs-helper-target-promotion","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"0x07 child display VM spawn target이 있어 actor frame만으로는 부족하다.","canonicalKey":"player:ataho:0x33","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d737c","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[79],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d737c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":2,"kind":"effect-sound","vaHex":"0x004d7384","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 16; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":16,"effectArgsHex":"01 00 10"},{"tick":2,"kind":"effect-sound","vaHex":"0x004d7390","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 27; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":27,"effectArgsHex":"01 00 1b"},{"tick":2,"kind":"actor-write","vaHex":"0x004d73c0","opcode":"0x12","summary":"set display/actor field +0x74, imm=0x00010000 (1px)","destHex":"0x74","immHex":"0x00010000","immFixed":1.0},{"tick":2,"kind":"helper-call","vaHex":"0x004d73d8","opcode":"0xbd","summary":"helper-call id=79; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":79},{"tick":2,"kind":"wait","vaHex":"0x004d744c","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":2,"kind":"wait","vaHex":"0x004d7454","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000200"},{"tick":2,"kind":"result-sound","vaHex":"0x004d7460","opcode":"0xc2","summary":"WLK id 07 (normal id 07, alt id 07, mode=1)","wlkNo":7,"normalWlkNo":7,"altWlkNo":7,"mode":1},{"tick":2,"kind":"actor-flag","vaHex":"0x004d7464","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":2,"kind":"actor-flag","vaHex":"0x004d746c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":2,"kind":"wait","vaHex":"0x004d7474","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":2,"kind":"actor-frame","vaHex":"0x004d7478","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=1, mode=0","spriteHex":"0x11","frame":0,"gate":1},{"tick":3,"kind":"movement","vaHex":"0x004d7480","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":2,"soundVaHex":"0x004d7460","normalWlkNo":7,"altWlkNo":7,"mode":1,"flags":[{"vaHex":"0x004d7464","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d746c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7474","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:spawned-child-display-flow","sound:effect+result","helper:direct-frame-spawn"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x34","ownerKey":"ataho","ownerName":"아타호","skillName":"비기·맹호유성각","familyName":"display-table fallback","skillIdHex":"0x34","levelOrFixed":2,"targetClass":"enemy-all","mpCost":30,"hitCount":1,"frameSequence":[0,0],"expandedFrameGateSequence":[{"tick":0,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":0,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":3,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[16,27],"resultWlkNos":[7],"soundModel":"effect+result","soundCalls":[{"tick":2,"opcode":"0x24","wlkNo":16,"effectArgsHex":"01 00 10","role":"effect/cast cue","vaHex":"0x004d7384"},{"tick":2,"opcode":"0x24","wlkNo":27,"effectArgsHex":"01 00 1b","role":"effect/cast cue","vaHex":"0x004d7390"},{"tick":2,"opcode":"0xc2","wlkNo":7,"normalWlkNo":7,"altWlkNo":7,"mode":1,"role":"skill-specific result cue","vaHex":"0x004d7460"}],"helperIds":[79],"helperFacts":[{"helperId":79,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["144@0"],"emitFrames":[144],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b8190","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b8124","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b8124","targetSnippet":[{"vaHex":"0x004b8124","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b8364 into +0x58"},{"vaHex":"0x004b812c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b8130","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b8134","opcode":"0x2b","category":"random-range","summary":"rng(range=128) -> +0x58"},{"vaHex":"0x004b8138","opcode":"0x12","category":"write","summary":"add display/actor field +0x58, imm=0x000001b0 (0.0065918px)"},{"vaHex":"0x004b8140","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00010000 (1px)"},{"vaHex":"0x004b8148","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00800000 (128px)"},{"vaHex":"0x004b8150","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x58, mode=0xe0"}]},{"vaHex":"0x004b81a8","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b8120","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b8120","targetSnippet":[{"vaHex":"0x004b8120","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b8124","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b8364 into +0x58"},{"vaHex":"0x004b812c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b8130","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b8134","opcode":"0x2b","category":"random-range","summary":"rng(range=128) -> +0x58"},{"vaHex":"0x004b8138","opcode":"0x12","category":"write","summary":"add display/actor field +0x58, imm=0x000001b0 (0.0065918px)"},{"vaHex":"0x004b8140","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00010000 (1px)"},{"vaHex":"0x004b8148","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00800000 (128px)"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"spawned-child-display-flow","renderTrack":"spawned-child-display-flow","implementationState":"needs-helper-target-promotion","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"0x07 child display VM spawn target이 있어 actor frame만으로는 부족하다.","canonicalKey":"player:ataho:0x34","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d737c","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[79],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d737c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":2,"kind":"effect-sound","vaHex":"0x004d7384","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 16; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":16,"effectArgsHex":"01 00 10"},{"tick":2,"kind":"effect-sound","vaHex":"0x004d7390","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 27; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":27,"effectArgsHex":"01 00 1b"},{"tick":2,"kind":"actor-write","vaHex":"0x004d73c0","opcode":"0x12","summary":"set display/actor field +0x74, imm=0x00010000 (1px)","destHex":"0x74","immHex":"0x00010000","immFixed":1.0},{"tick":2,"kind":"helper-call","vaHex":"0x004d73d8","opcode":"0xbd","summary":"helper-call id=79; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":79},{"tick":2,"kind":"wait","vaHex":"0x004d744c","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":2,"kind":"wait","vaHex":"0x004d7454","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000200"},{"tick":2,"kind":"result-sound","vaHex":"0x004d7460","opcode":"0xc2","summary":"WLK id 07 (normal id 07, alt id 07, mode=1)","wlkNo":7,"normalWlkNo":7,"altWlkNo":7,"mode":1},{"tick":2,"kind":"actor-flag","vaHex":"0x004d7464","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":2,"kind":"actor-flag","vaHex":"0x004d746c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":2,"kind":"wait","vaHex":"0x004d7474","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":2,"kind":"actor-frame","vaHex":"0x004d7478","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=1, mode=0","spriteHex":"0x11","frame":0,"gate":1},{"tick":3,"kind":"movement","vaHex":"0x004d7480","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":2,"soundVaHex":"0x004d7460","normalWlkNo":7,"altWlkNo":7,"mode":1,"flags":[{"vaHex":"0x004d7464","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d746c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7474","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:spawned-child-display-flow","sound:effect+result","helper:direct-frame-spawn"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x35","ownerKey":"ataho","ownerName":"아타호","skillName":"비기·맹호유성각","familyName":"display-table fallback","skillIdHex":"0x35","levelOrFixed":3,"targetClass":"enemy-all","mpCost":27,"hitCount":1,"frameSequence":[0,0],"expandedFrameGateSequence":[{"tick":0,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":0,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":3,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[16,27],"resultWlkNos":[7],"soundModel":"effect+result","soundCalls":[{"tick":2,"opcode":"0x24","wlkNo":16,"effectArgsHex":"01 00 10","role":"effect/cast cue","vaHex":"0x004d7384"},{"tick":2,"opcode":"0x24","wlkNo":27,"effectArgsHex":"01 00 1b","role":"effect/cast cue","vaHex":"0x004d7390"},{"tick":2,"opcode":"0xc2","wlkNo":7,"normalWlkNo":7,"altWlkNo":7,"mode":1,"role":"skill-specific result cue","vaHex":"0x004d7460"}],"helperIds":[79],"helperFacts":[{"helperId":79,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["144@0"],"emitFrames":[144],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b8190","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b8124","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b8124","targetSnippet":[{"vaHex":"0x004b8124","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b8364 into +0x58"},{"vaHex":"0x004b812c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b8130","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b8134","opcode":"0x2b","category":"random-range","summary":"rng(range=128) -> +0x58"},{"vaHex":"0x004b8138","opcode":"0x12","category":"write","summary":"add display/actor field +0x58, imm=0x000001b0 (0.0065918px)"},{"vaHex":"0x004b8140","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00010000 (1px)"},{"vaHex":"0x004b8148","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00800000 (128px)"},{"vaHex":"0x004b8150","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x58, mode=0xe0"}]},{"vaHex":"0x004b81a8","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b8120","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b8120","targetSnippet":[{"vaHex":"0x004b8120","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b8124","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b8364 into +0x58"},{"vaHex":"0x004b812c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b8130","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b8134","opcode":"0x2b","category":"random-range","summary":"rng(range=128) -> +0x58"},{"vaHex":"0x004b8138","opcode":"0x12","category":"write","summary":"add display/actor field +0x58, imm=0x000001b0 (0.0065918px)"},{"vaHex":"0x004b8140","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00010000 (1px)"},{"vaHex":"0x004b8148","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00800000 (128px)"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"spawned-child-display-flow","renderTrack":"spawned-child-display-flow","implementationState":"needs-helper-target-promotion","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"0x07 child display VM spawn target이 있어 actor frame만으로는 부족하다.","canonicalKey":"player:ataho:0x35","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d737c","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[79],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d737c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":2,"kind":"effect-sound","vaHex":"0x004d7384","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 16; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":16,"effectArgsHex":"01 00 10"},{"tick":2,"kind":"effect-sound","vaHex":"0x004d7390","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 27; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":27,"effectArgsHex":"01 00 1b"},{"tick":2,"kind":"actor-write","vaHex":"0x004d73c0","opcode":"0x12","summary":"set display/actor field +0x74, imm=0x00010000 (1px)","destHex":"0x74","immHex":"0x00010000","immFixed":1.0},{"tick":2,"kind":"helper-call","vaHex":"0x004d73d8","opcode":"0xbd","summary":"helper-call id=79; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":79},{"tick":2,"kind":"wait","vaHex":"0x004d744c","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":2,"kind":"wait","vaHex":"0x004d7454","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000200"},{"tick":2,"kind":"result-sound","vaHex":"0x004d7460","opcode":"0xc2","summary":"WLK id 07 (normal id 07, alt id 07, mode=1)","wlkNo":7,"normalWlkNo":7,"altWlkNo":7,"mode":1},{"tick":2,"kind":"actor-flag","vaHex":"0x004d7464","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":2,"kind":"actor-flag","vaHex":"0x004d746c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":2,"kind":"wait","vaHex":"0x004d7474","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":2,"kind":"actor-frame","vaHex":"0x004d7478","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=1, mode=0","spriteHex":"0x11","frame":0,"gate":1},{"tick":3,"kind":"movement","vaHex":"0x004d7480","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":2,"soundVaHex":"0x004d7460","normalWlkNo":7,"altWlkNo":7,"mode":1,"flags":[{"vaHex":"0x004d7464","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d746c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7474","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:spawned-child-display-flow","sound:effect+result","helper:direct-frame-spawn"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x36","ownerKey":"ataho","ownerName":"아타호","skillName":"비기·맹호유성각","familyName":"display-table fallback","skillIdHex":"0x36","levelOrFixed":4,"targetClass":"enemy-all","mpCost":24,"hitCount":1,"frameSequence":[0,0],"expandedFrameGateSequence":[{"tick":0,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":0,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":3,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[16,27],"resultWlkNos":[7],"soundModel":"effect+result","soundCalls":[{"tick":2,"opcode":"0x24","wlkNo":16,"effectArgsHex":"01 00 10","role":"effect/cast cue","vaHex":"0x004d7384"},{"tick":2,"opcode":"0x24","wlkNo":27,"effectArgsHex":"01 00 1b","role":"effect/cast cue","vaHex":"0x004d7390"},{"tick":2,"opcode":"0xc2","wlkNo":7,"normalWlkNo":7,"altWlkNo":7,"mode":1,"role":"skill-specific result cue","vaHex":"0x004d7460"}],"helperIds":[79],"helperFacts":[{"helperId":79,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["144@0"],"emitFrames":[144],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b8190","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b8124","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b8124","targetSnippet":[{"vaHex":"0x004b8124","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b8364 into +0x58"},{"vaHex":"0x004b812c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b8130","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b8134","opcode":"0x2b","category":"random-range","summary":"rng(range=128) -> +0x58"},{"vaHex":"0x004b8138","opcode":"0x12","category":"write","summary":"add display/actor field +0x58, imm=0x000001b0 (0.0065918px)"},{"vaHex":"0x004b8140","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00010000 (1px)"},{"vaHex":"0x004b8148","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00800000 (128px)"},{"vaHex":"0x004b8150","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x58, mode=0xe0"}]},{"vaHex":"0x004b81a8","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b8120","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b8120","targetSnippet":[{"vaHex":"0x004b8120","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b8124","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b8364 into +0x58"},{"vaHex":"0x004b812c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b8130","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b8134","opcode":"0x2b","category":"random-range","summary":"rng(range=128) -> +0x58"},{"vaHex":"0x004b8138","opcode":"0x12","category":"write","summary":"add display/actor field +0x58, imm=0x000001b0 (0.0065918px)"},{"vaHex":"0x004b8140","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00010000 (1px)"},{"vaHex":"0x004b8148","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00800000 (128px)"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"spawned-child-display-flow","renderTrack":"spawned-child-display-flow","implementationState":"needs-helper-target-promotion","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"0x07 child display VM spawn target이 있어 actor frame만으로는 부족하다.","canonicalKey":"player:ataho:0x36","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d737c","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[79],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d737c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":2,"kind":"effect-sound","vaHex":"0x004d7384","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 16; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":16,"effectArgsHex":"01 00 10"},{"tick":2,"kind":"effect-sound","vaHex":"0x004d7390","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 27; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":27,"effectArgsHex":"01 00 1b"},{"tick":2,"kind":"actor-write","vaHex":"0x004d73c0","opcode":"0x12","summary":"set display/actor field +0x74, imm=0x00010000 (1px)","destHex":"0x74","immHex":"0x00010000","immFixed":1.0},{"tick":2,"kind":"helper-call","vaHex":"0x004d73d8","opcode":"0xbd","summary":"helper-call id=79; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":79},{"tick":2,"kind":"wait","vaHex":"0x004d744c","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":2,"kind":"wait","vaHex":"0x004d7454","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000200"},{"tick":2,"kind":"result-sound","vaHex":"0x004d7460","opcode":"0xc2","summary":"WLK id 07 (normal id 07, alt id 07, mode=1)","wlkNo":7,"normalWlkNo":7,"altWlkNo":7,"mode":1},{"tick":2,"kind":"actor-flag","vaHex":"0x004d7464","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":2,"kind":"actor-flag","vaHex":"0x004d746c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":2,"kind":"wait","vaHex":"0x004d7474","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":2,"kind":"actor-frame","vaHex":"0x004d7478","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=1, mode=0","spriteHex":"0x11","frame":0,"gate":1},{"tick":3,"kind":"movement","vaHex":"0x004d7480","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":2,"soundVaHex":"0x004d7460","normalWlkNo":7,"altWlkNo":7,"mode":1,"flags":[{"vaHex":"0x004d7464","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d746c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7474","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:spawned-child-display-flow","sound:effect+result","helper:direct-frame-spawn"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x37","ownerKey":"ataho","ownerName":"아타호","skillName":"주구격","familyName":"display-table fallback","skillIdHex":"0x37","levelOrFixed":null,"targetClass":"self-then-enemy-all","mpCost":5,"hitCount":2,"frameSequence":[40,41,42,43,42,43,42,43,41,40,40,35,36,37,38,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":37,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":42,"frame":38,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":48,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":50,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[23,23,23,31],"resultWlkNos":[18],"soundModel":"effect+result","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d756c"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d7580"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d7594"},{"tick":42,"opcode":"0x24","wlkNo":31,"effectArgsHex":"01 00 1f","role":"effect/cast cue","vaHex":"0x004d7600"},{"tick":48,"opcode":"0xc2","wlkNo":18,"normalWlkNo":18,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004d7614"}],"helperIds":[61],"helperFacts":[{"helperId":61,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b69ac","startTick":0,"durationGate":16,"stopReason":"loop at 0x004b69d4","frames":["180@2","181@2","182@2","183@2","180@1","180@1","181@1","181@1","182@1","182@1","183@1","183@1"],"frameCount":12,"loopEvents":[{"tick":8,"targetVaHex":"0x004b69ac","repeatCount":3,"vaHex":"0x004b69cc"},{"tick":16,"targetVaHex":"0x004b69d4","repeatCount":null,"vaHex":"0x004b6a54"}],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{"0x90":48},"rootBranches":[{"vaHex":"0x004b6914","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b6930","condition":"conditional branch motion.dx +0x74 >= 0x80000000; target 0x004b6930","targetSnippet":[{"vaHex":"0x004b6930","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b6934","opcode":"0x12","category":"write","summary":"div display/actor field +0x74, imm=0x00000030 (0.000732422px)"},{"vaHex":"0x004b693c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b6940","opcode":"0x12","category":"write","summary":"set display/actor field +0x78, source +0x84, mode=0xa0"},{"vaHex":"0x004b6944","opcode":"0x12","category":"write","summary":"sub display/actor field +0x78, source +0x20, mode=0xa2"},{"vaHex":"0x004b6948","opcode":"0x15","category":"conditional-branch","summary":"conditional branch motion.dy +0x78 >= 0x80000000; target 0x004b6964"},{"vaHex":"0x004b6954","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000030 (0.000732422px)"},{"vaHex":"0x004b695c","opcode":"0x03","category":"jump","summary":"jump 0x004b6974"}]},{"vaHex":"0x004b6948","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b6964","condition":"conditional branch motion.dy +0x78 >= 0x80000000; target 0x004b6964","targetSnippet":[{"vaHex":"0x004b6964","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b6968","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000030 (0.000732422px)"},{"vaHex":"0x004b6970","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b6974","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b6978","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, imm=0x00000030 (0.000732422px), mode=0x80"},{"vaHex":"0x004b6980","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b6984","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b6988","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, imm=0x00000001 (1.52588e-05px), mode=0x82"}]},{"vaHex":"0x004b6990","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b6980","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b6980","targetSnippet":[{"vaHex":"0x004b6980","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b6984","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b6988","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b6990","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b6980"},{"vaHex":"0x004b699c","opcode":"0x42","category":"parent-actor","summary":"set parent actor pointer from this display object's actor slot"},{"vaHex":"0x004b69a0","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"},{"vaHex":"0x004b69a8","opcode":"0x00","category":"destroy/end","summary":"destroy/free display object candidate"}]}],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"screen-wide-effect","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"자기 준비/시전 프레임 뒤에 적 전체 helper/result 효과가 이어지는 계열이다.","canonicalKey":"player:ataho:0x37","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d7544","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[61],"positionClass":"self-prep-all-target-screen-effect","casterRule":"self-prep-screen-all-target-effect","startAnchor":"home","motionKind":"self-prep/screen-effect","motionTarget":"all-targets/screen","positionConfidence":"high","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM selector 5 appears after self-prep for an all-enemy drink skill; treat as screen/all-target effect placement, not a clone actor."],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d7544","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d754c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d7554","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d755c","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d7564","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d756c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d7570","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d7578","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d7580","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d7584","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d758c","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d7594","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d7598","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d75a0","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d75a8","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d75b0","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-write","vaHex":"0x004d75b8","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-write","vaHex":"0x004d75c0","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"movement","vaHex":"0x004d75d0","opcode":"0xbc","summary":"direct placement selector=5: screen-size/display-size based fixed placement.","selector":5,"divisor":0,"movementMode":0},{"tick":32,"kind":"actor-frame","vaHex":"0x004d75d4","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":34,"kind":"actor-frame","vaHex":"0x004d75dc","opcode":"0x21","summary":"set sprite=0x11, frame=35, gate=2, mode=0","spriteHex":"0x11","frame":35,"gate":2},{"tick":36,"kind":"actor-frame","vaHex":"0x004d75e4","opcode":"0x21","summary":"set sprite=0x11, frame=36, gate=2, mode=0","spriteHex":"0x11","frame":36,"gate":2},{"tick":38,"kind":"actor-frame","vaHex":"0x004d75ec","opcode":"0x21","summary":"set sprite=0x11, frame=37, gate=4, mode=0","spriteHex":"0x11","frame":37,"gate":4},{"tick":42,"kind":"helper-call","vaHex":"0x004d75fc","opcode":"0xbd","summary":"helper-call id=61; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":61},{"tick":42,"kind":"effect-sound","vaHex":"0x004d7600","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 31; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":31,"effectArgsHex":"01 00 1f"},{"tick":42,"kind":"actor-frame","vaHex":"0x004d7604","opcode":"0x21","summary":"set sprite=0x11, frame=38, gate=6, mode=0","spriteHex":"0x11","frame":38,"gate":6},{"tick":48,"kind":"wait","vaHex":"0x004d760c","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":48,"kind":"result-sound","vaHex":"0x004d7614","opcode":"0xc2","summary":"WLK id 18 (normal id 18, alt id 14, mode=0)","wlkNo":18,"normalWlkNo":18,"altWlkNo":14,"mode":0},{"tick":48,"kind":"actor-flag","vaHex":"0x004d76f8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":48,"kind":"actor-flag","vaHex":"0x004d7700","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":48,"kind":"wait","vaHex":"0x004d7708","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":48,"kind":"actor-frame","vaHex":"0x004d770c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":50,"kind":"movement","vaHex":"0x004d7714","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":48,"soundVaHex":"0x004d7614","normalWlkNo":18,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004d76f8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d7700","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7708","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:effect+result","helper:multi-frameScript-effect","helper-root-counters"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x38","ownerKey":"ataho","ownerName":"아타호","skillName":"취호염무","familyName":"display-table fallback","skillIdHex":"0x38","levelOrFixed":null,"targetClass":"self-then-enemy-all","mpCost":15,"hitCount":2,"frameSequence":[40,41,42,43,42,43,42,43,41,40,40,35,36,37,38,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":37,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":42,"frame":38,"gate":16,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":58,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":60,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[23,23,23,21],"resultWlkNos":[7],"soundModel":"effect+result","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d756c"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d7580"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d7594"},{"tick":42,"opcode":"0x24","wlkNo":21,"effectArgsHex":"01 00 15","role":"effect/cast cue","vaHex":"0x004d7624"},{"tick":58,"opcode":"0xc2","wlkNo":7,"normalWlkNo":7,"altWlkNo":7,"mode":1,"role":"skill-specific result cue","vaHex":"0x004d7630"}],"helperIds":[63],"helperFacts":[{"helperId":63,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":4,"directSpawnFrames":["119@0","119@1","119@2","119@3"],"emitFrames":[119],"rootCounterSets":{"0x96":48,"0x90":65024},"rootBranches":[{"vaHex":"0x004b6cdc","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b6e1c","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] == right:imm.byte=0x02 -> 0x004b6e1c","targetSnippet":[{"vaHex":"0x004b6e1c","opcode":"0x13","category":"branch","summary":"byte conditional branch unresolved if left:parentActor.byte[+0x05] == right:imm.byte=0x47 -> 0x004b6f5c"},{"vaHex":"0x004b6e24","opcode":"0x08","category":"init-block","summary":"variable init block writes=2 stop=terminator"},{"vaHex":"0x004b6e30","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x1c, mode=0xa0"},{"vaHex":"0x004b6e34","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x20, mode=0xa0"},{"vaHex":"0x004b6e38","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000030 (0.000732422px), mode=0x80"},{"vaHex":"0x004b6e40","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, imm=0x0000b000 (0.6875px), mode=0x80"},{"vaHex":"0x004b6e48","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, imm=0x0000fe00 (0.992188px), mode=0x80"},{"vaHex":"0x004b6e50","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b8660 into +0x58"}]},{"vaHex":"0x004b6d38","fieldHex":"0x8c","role":"unknown-root-branch","targetVaHex":"0x004b6d60","condition":"word conditional branch external-static-target if left:display.word[+0x8c] <= right:imm.word=0x2000 -> 0x004b6d60","targetSnippet":[{"vaHex":"0x004b6d60","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, imm=0x00000200 (0.0078125px), mode=0x80"},{"vaHex":"0x004b6d68","opcode":"0x11","category":"child-write","summary":"display/child field +0x8e, source +0x8c, mode=0xa0"},{"vaHex":"0x004b6d6c","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, imm=0x00000000 (0px)"},{"vaHex":"0x004b6d74","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, imm=0x00000000 (0px)"},{"vaHex":"0x004b6d7c","opcode":"0x2d","category":"motion-step","summary":"relative trig step motion step mode=0x03 axes=x+y"},{"vaHex":"0x004b6d80","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.x +0x1c >= 0x80000000; target 0x004b6d9c"},{"vaHex":"0x004b6d8c","opcode":"0x12","category":"write","summary":"shr display/actor field +0x1c, imm=0x00000003 (4.57764e-05px)"},{"vaHex":"0x004b6d94","opcode":"0x03","category":"jump","summary":"jump 0x004b6dac"}]},{"vaHex":"0x004b6d44","fieldHex":"0x8c","role":"unknown-root-branch","targetVaHex":"0x004b6d68","condition":"word conditional branch local-forward-skip if left:display.word[+0x8c] < right:imm.word=0x6000 -> 0x004b6d68","targetSnippet":[{"vaHex":"0x004b6d68","opcode":"0x11","category":"child-write","summary":"display/child field +0x8e, source +0x8c, mode=0xa0"},{"vaHex":"0x004b6d6c","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, imm=0x00000000 (0px)"},{"vaHex":"0x004b6d74","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, imm=0x00000000 (0px)"},{"vaHex":"0x004b6d7c","opcode":"0x2d","category":"motion-step","summary":"relative trig step motion step mode=0x03 axes=x+y"},{"vaHex":"0x004b6d80","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.x +0x1c >= 0x80000000; target 0x004b6d9c"},{"vaHex":"0x004b6d8c","opcode":"0x12","category":"write","summary":"shr display/actor field +0x1c, imm=0x00000003 (4.57764e-05px)"},{"vaHex":"0x004b6d94","opcode":"0x03","category":"jump","summary":"jump 0x004b6dac"},{"vaHex":"0x004b6d9c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x1c, source +0x1c, mode=0xaa"}]},{"vaHex":"0x004b6d80","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b6d9c","condition":"conditional branch display.x +0x1c >= 0x80000000; target 0x004b6d9c","targetSnippet":[{"vaHex":"0x004b6d9c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x1c, source +0x1c, mode=0xaa"},{"vaHex":"0x004b6da0","opcode":"0x12","category":"write","summary":"shr display/actor field +0x1c, imm=0x00000003 (4.57764e-05px)"},{"vaHex":"0x004b6da8","opcode":"0x12","category":"write","summary":"neg display/actor field +0x1c, source +0x1c, mode=0xaa"},{"vaHex":"0x004b6dac","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.y +0x20 >= 0x80000000; target 0x004b6dc8"},{"vaHex":"0x004b6db8","opcode":"0x12","category":"write","summary":"shr display/actor field +0x20, imm=0x00000003 (4.57764e-05px)"},{"vaHex":"0x004b6dc0","opcode":"0x03","category":"jump","summary":"jump 0x004b6dd8"},{"vaHex":"0x004b6dc8","opcode":"0x12","category":"write","summary":"neg display/actor field +0x20, source +0x20, mode=0xaa"},{"vaHex":"0x004b6dcc","opcode":"0x12","category":"write","summary":"shr display/actor field +0x20, imm=0x00000003 (4.57764e-05px)"}]},{"vaHex":"0x004b6dac","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b6dc8","condition":"conditional branch display.y +0x20 >= 0x80000000; target 0x004b6dc8","targetSnippet":[{"vaHex":"0x004b6dc8","opcode":"0x12","category":"write","summary":"neg display/actor field +0x20, source +0x20, mode=0xaa"},{"vaHex":"0x004b6dcc","opcode":"0x12","category":"write","summary":"shr display/actor field +0x20, imm=0x00000003 (4.57764e-05px)"},{"vaHex":"0x004b6dd4","opcode":"0x12","category":"write","summary":"neg display/actor field +0x20, source +0x20, mode=0xaa"},{"vaHex":"0x004b6dd8","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x80, mode=0xe0"},{"vaHex":"0x004b6ddc","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x84, mode=0xe0"},{"vaHex":"0x004b6de0","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x1c, mode=0xe0"},{"vaHex":"0x004b6de4","opcode":"0x12","category":"write","summary":"set display/actor field +0x78, source +0x20, mode=0xe0"},{"vaHex":"0x004b6de8","opcode":"0x06","category":"repeat-loop","summary":"repeat-loop count=4, target=0x004b6d10; handler stores target in object +0x3c and counter in +0x60"}]},{"vaHex":"0x004b6dfc","fieldHex":"0x96","role":"outer-repeat-step-while-repeat-counter-nonzero","targetVaHex":"0x004b6d10","condition":"word conditional branch local-backward-loop if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004b6d10","targetSnippet":[{"vaHex":"0x004b6d10","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b6850 into +0x58"},{"vaHex":"0x004b6d18","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b6d1c","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0x58, mode=0xa0"},{"vaHex":"0x004b6d20","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b6d24","opcode":"0x12","category":"write","summary":"add display/actor field +0x58, imm=0x00000040 (0.000976562px)"},{"vaHex":"0x004b6d2c","opcode":"0x11","category":"child-write","summary":"display/child field +0x92, source +0x58, mode=0xa0"},{"vaHex":"0x004b6d30","opcode":"0x11","category":"child-write","summary":"display/child field +0x94, source +0x92, mode=0xa0"},{"vaHex":"0x004b6d34","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x90, mode=0xa1"}]}],"childMotionLoops":[],"interpretation":["+0x96 raw 48 acts as outer repeat counter","root op14 on +0x96 yields one VM tick, reseeds +0x8e from +0x94, then emits another burst","static direct-spawn expansion currently exposes 4 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"screen-wide-effect","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"자기 준비/시전 프레임 뒤에 적 전체 helper/result 효과가 이어지는 계열이다.","canonicalKey":"player:ataho:0x38","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d7544","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-prep-all-target-screen-effect","casterRule":"self-prep-screen-all-target-effect","startAnchor":"home","motionKind":"self-prep/screen-effect","motionTarget":"all-targets/screen","positionConfidence":"high","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM selector 5 appears after self-prep for an all-enemy drink skill; treat as screen/all-target effect placement, not a clone actor."],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d7544","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d754c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d7554","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d755c","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d7564","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d756c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d7570","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d7578","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d7580","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d7584","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d758c","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d7594","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d7598","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d75a0","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d75a8","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d75b0","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-write","vaHex":"0x004d75b8","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-write","vaHex":"0x004d75c0","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"movement","vaHex":"0x004d75d0","opcode":"0xbc","summary":"direct placement selector=5: screen-size/display-size based fixed placement.","selector":5,"divisor":0,"movementMode":0},{"tick":32,"kind":"actor-frame","vaHex":"0x004d75d4","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":34,"kind":"actor-frame","vaHex":"0x004d75dc","opcode":"0x21","summary":"set sprite=0x11, frame=35, gate=2, mode=0","spriteHex":"0x11","frame":35,"gate":2},{"tick":36,"kind":"actor-frame","vaHex":"0x004d75e4","opcode":"0x21","summary":"set sprite=0x11, frame=36, gate=2, mode=0","spriteHex":"0x11","frame":36,"gate":2},{"tick":38,"kind":"actor-frame","vaHex":"0x004d75ec","opcode":"0x21","summary":"set sprite=0x11, frame=37, gate=4, mode=0","spriteHex":"0x11","frame":37,"gate":4},{"tick":42,"kind":"helper-call","vaHex":"0x004d7620","opcode":"0xbd","summary":"helper-call id=63; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":63},{"tick":42,"kind":"effect-sound","vaHex":"0x004d7624","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 21; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":21,"effectArgsHex":"01 00 15"},{"tick":42,"kind":"actor-frame","vaHex":"0x004d7628","opcode":"0x21","summary":"set sprite=0x11, frame=38, gate=16, mode=0","spriteHex":"0x11","frame":38,"gate":16},{"tick":58,"kind":"result-sound","vaHex":"0x004d7630","opcode":"0xc2","summary":"WLK id 07 (normal id 07, alt id 07, mode=1)","wlkNo":7,"normalWlkNo":7,"altWlkNo":7,"mode":1},{"tick":58,"kind":"wait","vaHex":"0x004d7634","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":58,"kind":"actor-flag","vaHex":"0x004d76f8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":58,"kind":"actor-flag","vaHex":"0x004d7700","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":58,"kind":"wait","vaHex":"0x004d7708","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":58,"kind":"actor-frame","vaHex":"0x004d770c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":60,"kind":"movement","vaHex":"0x004d7714","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":58,"soundVaHex":"0x004d7630","normalWlkNo":7,"altWlkNo":7,"mode":1,"flags":[{"vaHex":"0x004d76f8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d7700","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7634","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:effect+result","helper:randomized-child-spawn-stream","helper-root-counters"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x39","ownerKey":"ataho","ownerName":"아타호","skillName":"노익장 대폭발","familyName":"display-table fallback","skillIdHex":"0x39","levelOrFixed":null,"targetClass":"self-then-enemy-all","mpCost":16,"hitCount":2,"frameSequence":[40,41,42,43,42,43,42,43,41,40,40,40,52,52,52,52,52,52,52,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":40,"gate":12,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":46,"frame":52,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":54,"frame":52,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":62,"frame":52,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":70,"frame":52,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":78,"frame":52,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":86,"frame":52,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":90,"frame":52,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":92,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":94,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[23,23,23,6,7,7,7,7,7,29],"resultWlkNos":[0],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d756c"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d7580"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d7594"},{"tick":46,"opcode":"0x24","wlkNo":6,"effectArgsHex":"01 00 06","role":"effect/cast cue","vaHex":"0x004d765c"},{"tick":46,"opcode":"0x24","wlkNo":7,"effectArgsHex":"01 00 07","role":"effect/cast cue","vaHex":"0x004d767c"},{"tick":54,"opcode":"0x24","wlkNo":7,"effectArgsHex":"01 00 07","role":"effect/cast cue","vaHex":"0x004d7688"},{"tick":62,"opcode":"0x24","wlkNo":7,"effectArgsHex":"01 00 07","role":"effect/cast cue","vaHex":"0x004d7694"},{"tick":70,"opcode":"0x24","wlkNo":7,"effectArgsHex":"01 00 07","role":"effect/cast cue","vaHex":"0x004d76a0"},{"tick":78,"opcode":"0x24","wlkNo":7,"effectArgsHex":"01 00 07","role":"effect/cast cue","vaHex":"0x004d76ac"},{"tick":86,"opcode":"0x24","wlkNo":29,"effectArgsHex":"01 00 1d","role":"effect/cast cue","vaHex":"0x004d76b8"}],"helperIds":[11,40,41,123,57,38],"helperFacts":[{"helperId":11,"behaviorClass":"actor-flag-sync","frameScripts":[],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{"0x90":32768},"rootBranches":[{"vaHex":"0x004b3c20","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b3c34","condition":"conditional branch display.x +0x1c bit-test 0x00008000; target 0x004b3c34","targetSnippet":[{"vaHex":"0x004b3c34","opcode":"0x12","category":"write","summary":"or display/actor field +0x1c, imm=0xffff0000 (-1px)"},{"vaHex":"0x004b3c3c","opcode":"0x12","category":"write","summary":"set display/actor field +0x0c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b3c40","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b3c44","opcode":"0x11","category":"child-write","summary":"display/child field +0x94, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b3c4c","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004b3c10"},{"vaHex":"0x004b3c58","opcode":"0x12","category":"write","summary":"set display/actor field +0x0c, imm=0x00000000 (0px)"},{"vaHex":"0x004b3c60","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"},{"vaHex":"0x004b3c68","opcode":"0x00","category":"destroy/end","summary":"destroy/free display object candidate"}]},{"vaHex":"0x004b3c4c","fieldHex":"0x94","role":"unknown-root-branch","targetVaHex":"0x004b3c10","condition":"word conditional branch local-backward-loop if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004b3c10","targetSnippet":[{"vaHex":"0x004b3c10","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x90, mode=0xa1"},{"vaHex":"0x004b3c14","opcode":"0x2d","category":"motion-step","summary":"absolute base + trig motion step mode=0x09 axes=x"},{"vaHex":"0x004b3c18","opcode":"0x12","category":"write","summary":"div display/actor field +0x1c, imm=0x00010000 (1px)"},{"vaHex":"0x004b3c20","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.x +0x1c bit-test 0x00008000; target 0x004b3c34"},{"vaHex":"0x004b3c2c","opcode":"0x03","category":"jump","summary":"jump 0x004b3c3c"},{"vaHex":"0x004b3c34","opcode":"0x12","category":"write","summary":"or display/actor field +0x1c, imm=0xffff0000 (-1px)"},{"vaHex":"0x004b3c3c","opcode":"0x12","category":"write","summary":"set display/actor field +0x0c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b3c40","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"}]}],"childMotionLoops":[],"interpretation":[],"notes":["helper mainly synchronizes actor flags/waits"]},{"helperId":40,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b5e58","startTick":0,"durationGate":8,"stopReason":"destroy/end at 0x004b5e88","frames":["68@2","69@2","70@2","71@2"],"frameCount":4,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":41,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b5ecc","startTick":0,"durationGate":8,"stopReason":"destroy/end at 0x004b5f04","frames":["72@2","73@2","74@2","75@2"],"frameCount":4,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":123,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["176@0"],"emitFrames":[176],"rootCounterSets":{"0x92":48,"0x94":12,"0x96":0},"rootBranches":[],"childMotionLoops":[],"interpretation":["+0x94 raw 12 acts as burst/current-counter seed for +0x8e","+0x96 raw 0 acts as outer repeat counter","static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]},{"helperId":57,"behaviorClass":"nested-frameScript-spawn-effect","frameScripts":[],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{"0x92":64,"0x94":16},"rootBranches":[],"childMotionLoops":[],"interpretation":["+0x94 raw 16 acts as burst/current-counter seed for +0x8e"],"notes":["spawn tree child node contains init-frame/frameScript visual evidence"]},{"helperId":38,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["60@0"],"emitFrames":[60],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5644","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b5660","condition":"conditional branch display.x +0x1c >= 0x80000000; target 0x004b5660","targetSnippet":[{"vaHex":"0x004b5660","opcode":"0x12","category":"write","summary":"neg display/actor field +0x1c, source +0x1c, mode=0xaa"},{"vaHex":"0x004b5664","opcode":"0x12","category":"write","summary":"shr display/actor field +0x1c, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b566c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x1c, source +0x1c, mode=0xaa"},{"vaHex":"0x004b5670","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5674","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.y +0x20 >= 0x80000000; target 0x004b5690"},{"vaHex":"0x004b5680","opcode":"0x12","category":"write","summary":"shr display/actor field +0x20, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b5688","opcode":"0x03","category":"jump","summary":"jump 0x004b56a0"},{"vaHex":"0x004b5690","opcode":"0x12","category":"write","summary":"neg display/actor field +0x20, source +0x20, mode=0xaa"}]},{"vaHex":"0x004b5674","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b5690","condition":"conditional branch display.y +0x20 >= 0x80000000; target 0x004b5690","targetSnippet":[{"vaHex":"0x004b5690","opcode":"0x12","category":"write","summary":"neg display/actor field +0x20, source +0x20, mode=0xaa"},{"vaHex":"0x004b5694","opcode":"0x12","category":"write","summary":"shr display/actor field +0x20, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b569c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x20, source +0x20, mode=0xaa"},{"vaHex":"0x004b56a0","opcode":"0x12","category":"write","summary":"set display/actor field +0x78, source +0x20, mode=0xe0"},{"vaHex":"0x004b56a4","opcode":"0x12","category":"write","summary":"set display/actor field +0x6c, source +0x6c, mode=0xe0"},{"vaHex":"0x004b56a8","opcode":"0x11","category":"child-write","summary":"display/child field +0x14, imm=0x00000104 (0.00396729px), mode=0xc0"},{"vaHex":"0x004b56b0","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x90, mode=0xa1"},{"vaHex":"0x004b56b4","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x8c] > right:display.word[+0x8e] -> 0x004b5614"}]},{"vaHex":"0x004b56b4","fieldHex":"0x8c","role":"unknown-root-branch","targetVaHex":"0x004b5614","condition":"word conditional branch local-backward-loop if left:display.word[+0x8c] > right:display.word[+0x8e] -> 0x004b5614","targetSnippet":[{"vaHex":"0x004b5614","opcode":"0x11","category":"child-write","summary":"display/child field +0x8e, source +0x8c, mode=0xa0"},{"vaHex":"0x004b5618","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b53c0 into +0x58"},{"vaHex":"0x004b5620","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5624","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0x58, mode=0xa0"},{"vaHex":"0x004b5628","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x80, mode=0xe0"},{"vaHex":"0x004b562c","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x84, mode=0xe0"},{"vaHex":"0x004b5630","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, imm=0x00000000 (0px)"},{"vaHex":"0x004b5638","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, imm=0x00000000 (0px)"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"screen-wide-effect","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"자기 준비/시전 프레임 뒤에 적 전체 helper/result 효과가 이어지는 계열이다.","canonicalKey":"player:ataho:0x39","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d7544","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[123],"positionClass":"self-prep-all-target-screen-effect","casterRule":"self-prep-screen-all-target-effect","startAnchor":"home","motionKind":"self-prep/screen-effect","motionTarget":"all-targets/screen","positionConfidence":"high","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM selector 5 appears after self-prep for an all-enemy drink skill; treat as screen/all-target effect placement, not a clone actor."],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d7544","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d754c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d7554","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d755c","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d7564","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d756c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d7570","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d7578","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d7580","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d7584","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d758c","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d7594","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d7598","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d75a0","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d75a8","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d75b0","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-write","vaHex":"0x004d75b8","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-write","vaHex":"0x004d75c0","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"movement","vaHex":"0x004d7644","opcode":"0xbc","summary":"direct placement selector=5: screen-size/display-size based fixed placement.","selector":5,"divisor":0,"movementMode":0},{"tick":32,"kind":"actor-frame","vaHex":"0x004d7648","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":34,"kind":"helper-call","vaHex":"0x004d7650","opcode":"0xbd","summary":"helper-call id=11; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":11},{"tick":34,"kind":"actor-frame","vaHex":"0x004d7654","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=12, mode=0","spriteHex":"0x11","frame":40,"gate":12},{"tick":46,"kind":"effect-sound","vaHex":"0x004d765c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 06; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":6,"effectArgsHex":"01 00 06"},{"tick":46,"kind":"helper-call","vaHex":"0x004d7660","opcode":"0xbd","summary":"helper-call id=40; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":40},{"tick":46,"kind":"helper-call","vaHex":"0x004d7664","opcode":"0xbd","summary":"helper-call id=41; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":41},{"tick":46,"kind":"helper-call","vaHex":"0x004d7668","opcode":"0xbd","summary":"helper-call id=123; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":123},{"tick":46,"kind":"actor-write","vaHex":"0x004d766c","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00080000 (8px)","destHex":"0x1c","immHex":"0x00080000","immFixed":8.0},{"tick":46,"kind":"actor-write","vaHex":"0x004d7674","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00080000 (8px)","destHex":"0x20","immHex":"0x00080000","immFixed":8.0},{"tick":46,"kind":"effect-sound","vaHex":"0x004d767c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 07; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":7,"effectArgsHex":"01 00 07"},{"tick":46,"kind":"actor-frame","vaHex":"0x004d7680","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=8, mode=0","spriteHex":"0x11","frame":52,"gate":8},{"tick":54,"kind":"effect-sound","vaHex":"0x004d7688","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 07; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":7,"effectArgsHex":"01 00 07"},{"tick":54,"kind":"actor-frame","vaHex":"0x004d768c","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=8, mode=0","spriteHex":"0x11","frame":52,"gate":8},{"tick":62,"kind":"effect-sound","vaHex":"0x004d7694","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 07; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":7,"effectArgsHex":"01 00 07"},{"tick":62,"kind":"actor-frame","vaHex":"0x004d7698","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=8, mode=0","spriteHex":"0x11","frame":52,"gate":8},{"tick":70,"kind":"effect-sound","vaHex":"0x004d76a0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 07; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":7,"effectArgsHex":"01 00 07"},{"tick":70,"kind":"actor-frame","vaHex":"0x004d76a4","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=8, mode=0","spriteHex":"0x11","frame":52,"gate":8},{"tick":78,"kind":"effect-sound","vaHex":"0x004d76ac","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 07; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":7,"effectArgsHex":"01 00 07"},{"tick":78,"kind":"actor-frame","vaHex":"0x004d76b0","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=8, mode=0","spriteHex":"0x11","frame":52,"gate":8},{"tick":86,"kind":"effect-sound","vaHex":"0x004d76b8","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 29; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":29,"effectArgsHex":"01 00 1d"},{"tick":86,"kind":"actor-write","vaHex":"0x004d76bc","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00080000 (8px)","destHex":"0x1c","immHex":"0x00080000","immFixed":8.0},{"tick":86,"kind":"actor-write","vaHex":"0x004d76c4","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00080000 (8px)","destHex":"0x20","immHex":"0x00080000","immFixed":8.0},{"tick":86,"kind":"helper-call","vaHex":"0x004d76cc","opcode":"0xbd","summary":"helper-call id=57; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":57},{"tick":86,"kind":"actor-write","vaHex":"0x004d76d0","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00080000 (8px)","destHex":"0x1c","immHex":"0x00080000","immFixed":8.0},{"tick":86,"kind":"actor-write","vaHex":"0x004d76d8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0x00080000 (8px)","destHex":"0x20","immHex":"0x00080000","immFixed":8.0},{"tick":86,"kind":"actor-frame","vaHex":"0x004d76e0","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=4, mode=0","spriteHex":"0x11","frame":52,"gate":4},{"tick":90,"kind":"helper-call","vaHex":"0x004d76e8","opcode":"0xbd","summary":"helper-call id=38; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":38},{"tick":90,"kind":"actor-frame","vaHex":"0x004d76ec","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=2, mode=0","spriteHex":"0x11","frame":52,"gate":2},{"tick":92,"kind":"result-sound","vaHex":"0x004d76f4","opcode":"0xc2","summary":"WLK id 00 (normal id 00, alt id 00, mode=2)","wlkNo":0,"normalWlkNo":0,"altWlkNo":0,"mode":2},{"tick":92,"kind":"actor-flag","vaHex":"0x004d76f8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":92,"kind":"actor-flag","vaHex":"0x004d7700","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":92,"kind":"wait","vaHex":"0x004d7708","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":92,"kind":"actor-frame","vaHex":"0x004d770c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":94,"kind":"movement","vaHex":"0x004d7714","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":92,"soundVaHex":"0x004d76f4","normalWlkNo":0,"altWlkNo":0,"mode":2,"flags":[{"vaHex":"0x004d76f8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004d7700","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004d7708","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:effect-only","helper:actor-flag-sync","helper-root-counters","helper:multi-frameScript-effect","helper:direct-frame-spawn","helper:nested-frameScript-spawn-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"ataho:0x3a","ownerKey":"ataho","ownerName":"아타호","skillName":"도주","familyName":"display-table fallback","skillIdHex":"0x3a","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[0],"expandedFrameGateSequence":[{"tick":0,"frame":0,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":8,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[],"resultWlkNos":[],"soundModel":"no-action-wlk","soundCalls":{},"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x3a","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d7724","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"no-direct-wlk-support","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d7724","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=8, mode=0","spriteHex":"0x11","frame":0,"gate":8},{"tick":8,"kind":"actor-flag","vaHex":"0x004d772c","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","caster-position-rule","render:support-or-status","sound:no-action-wlk"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x3b","ownerKey":"ataho","ownerName":"아타호","skillName":"방어","familyName":"display-table fallback","skillIdHex":"0x3b","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[0,2],"expandedFrameGateSequence":[{"tick":0,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":2,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":10,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[11],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":2,"opcode":"0x24","wlkNo":11,"effectArgsHex":"01 00 0b","role":"effect/cast cue","vaHex":"0x004d7748"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x3b","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d7740","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d7740","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":2,"kind":"effect-sound","vaHex":"0x004d7748","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 11; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":11,"effectArgsHex":"01 00 0b"},{"tick":2,"kind":"actor-frame","vaHex":"0x004d774c","opcode":"0x21","summary":"set sprite=0x11, frame=2, gate=8, mode=0","spriteHex":"0x11","frame":2,"gate":8},{"tick":10,"kind":"actor-flag","vaHex":"0x004d7754","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","caster-position-rule","render:support-or-status","sound:effect-only"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x3c","ownerKey":"ataho","ownerName":"아타호","skillName":"기합일발","familyName":"display-table fallback","skillIdHex":"0x3c","levelOrFixed":null,"targetClass":"self","mpCost":5,"hitCount":1,"frameSequence":[0,52],"expandedFrameGateSequence":[{"tick":0,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":52,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":3,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[22],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":2,"opcode":"0x24","wlkNo":22,"effectArgsHex":"01 00 16","role":"effect/cast cue","vaHex":"0x004d7770"}],"helperIds":[32],"helperFacts":[{"helperId":32,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["98@0"],"emitFrames":[98],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5274","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"}]},{"vaHex":"0x004b528c","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b520c","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b520c","targetSnippet":[{"vaHex":"0x004b520c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x3c","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d7768","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d7768","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":2,"kind":"effect-sound","vaHex":"0x004d7770","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 22; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":22,"effectArgsHex":"01 00 16"},{"tick":2,"kind":"helper-call","vaHex":"0x004d7774","opcode":"0xbd","summary":"helper-call id=32; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":32},{"tick":2,"kind":"actor-frame","vaHex":"0x004d7778","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=1, mode=0","spriteHex":"0x11","frame":52,"gate":1},{"tick":3,"kind":"wait","vaHex":"0x004d7780","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":3,"kind":"actor-flag","vaHex":"0x004d7788","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000001","mode":0,"maskHex":"0x00000001"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:direct-frame-spawn"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x3d","ownerKey":"ataho","ownerName":"아타호","skillName":"천조족","familyName":"display-table fallback","skillIdHex":"0x3d","levelOrFixed":null,"targetClass":"self","mpCost":1,"hitCount":2,"frameSequence":[40,41,42,43,42,43,42,43,41,40,40,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":36,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[23,23,23],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77cc"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77e0"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77f4"}],"helperIds":[34],"helperFacts":[{"helperId":34,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["98@0"],"emitFrames":[98],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5274","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"}]},{"vaHex":"0x004b528c","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b520c","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b520c","targetSnippet":[{"vaHex":"0x004b520c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x3d","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d779c","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d779c","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d77a8","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d77b4","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d77bc","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d77c4","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d77cc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d77d0","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d77d8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d77e0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d77e4","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d77ec","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d77f4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d77f8","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d7800","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d7808","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d7810","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-frame","vaHex":"0x004d7818","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":34,"kind":"helper-call","vaHex":"0x004d7820","opcode":"0xbd","summary":"helper-call id=34; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":34},{"tick":34,"kind":"wait","vaHex":"0x004d7824","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":34,"kind":"actor-flag","vaHex":"0x004d782c","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000001","mode":0,"maskHex":"0x00000001"},{"tick":34,"kind":"actor-write","vaHex":"0x004d7834","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":34,"kind":"actor-write","vaHex":"0x004d7840","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":34,"kind":"actor-frame","vaHex":"0x004d784c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:direct-frame-spawn"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x3e","ownerKey":"ataho","ownerName":"아타호","skillName":"천조족","familyName":"display-table fallback","skillIdHex":"0x3e","levelOrFixed":null,"targetClass":"self","mpCost":1,"hitCount":2,"frameSequence":[40,41,42,43,42,43,42,43,41,40,40,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":36,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[23,23,23],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77cc"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77e0"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77f4"}],"helperIds":[34],"helperFacts":[{"helperId":34,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["98@0"],"emitFrames":[98],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5274","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"}]},{"vaHex":"0x004b528c","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b520c","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b520c","targetSnippet":[{"vaHex":"0x004b520c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x3e","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d779c","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d779c","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d77a8","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d77b4","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d77bc","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d77c4","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d77cc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d77d0","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d77d8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d77e0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d77e4","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d77ec","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d77f4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d77f8","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d7800","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d7808","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d7810","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-frame","vaHex":"0x004d7818","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":34,"kind":"helper-call","vaHex":"0x004d7820","opcode":"0xbd","summary":"helper-call id=34; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":34},{"tick":34,"kind":"wait","vaHex":"0x004d7824","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":34,"kind":"actor-flag","vaHex":"0x004d782c","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000001","mode":0,"maskHex":"0x00000001"},{"tick":34,"kind":"actor-write","vaHex":"0x004d7834","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":34,"kind":"actor-write","vaHex":"0x004d7840","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":34,"kind":"actor-frame","vaHex":"0x004d784c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:direct-frame-spawn"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x3f","ownerKey":"ataho","ownerName":"아타호","skillName":"주 백약지장","familyName":"display-table fallback","skillIdHex":"0x3f","levelOrFixed":null,"targetClass":"self","mpCost":5,"hitCount":2,"frameSequence":[40,41,42,43,42,43,42,43,41,40,40,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":36,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[23,23,23],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d7890"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d78a4"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d78b8"}],"helperIds":[34],"helperFacts":[{"helperId":34,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["98@0"],"emitFrames":[98],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5274","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"}]},{"vaHex":"0x004b528c","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b520c","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b520c","targetSnippet":[{"vaHex":"0x004b520c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x3f","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d7860","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d7860","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d786c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d7878","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d7880","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d7888","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d7890","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d7894","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d789c","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d78a4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d78a8","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d78b0","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d78b8","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d78bc","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d78c4","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d78cc","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d78d4","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-frame","vaHex":"0x004d78dc","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":34,"kind":"helper-call","vaHex":"0x004d78e4","opcode":"0xbd","summary":"helper-call id=34; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":34},{"tick":34,"kind":"wait","vaHex":"0x004d78e8","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":34,"kind":"actor-flag","vaHex":"0x004d78f0","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000001","mode":0,"maskHex":"0x00000001"},{"tick":34,"kind":"actor-write","vaHex":"0x004d78f8","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":34,"kind":"actor-write","vaHex":"0x004d7904","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":34,"kind":"actor-frame","vaHex":"0x004d7910","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:direct-frame-spawn"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x40","ownerKey":"ataho","ownerName":"아타호","skillName":"천조족","familyName":"display-table fallback","skillIdHex":"0x40","levelOrFixed":null,"targetClass":"self","mpCost":1,"hitCount":2,"frameSequence":[40,41,42,43,42,43,42,43,41,40,40,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":36,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[23,23,23],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77cc"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77e0"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77f4"}],"helperIds":[34],"helperFacts":[{"helperId":34,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["98@0"],"emitFrames":[98],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5274","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"}]},{"vaHex":"0x004b528c","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b520c","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b520c","targetSnippet":[{"vaHex":"0x004b520c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x40","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d779c","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d779c","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d77a8","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d77b4","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d77bc","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d77c4","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d77cc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d77d0","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d77d8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d77e0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d77e4","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d77ec","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d77f4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d77f8","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d7800","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d7808","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d7810","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-frame","vaHex":"0x004d7818","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":34,"kind":"helper-call","vaHex":"0x004d7820","opcode":"0xbd","summary":"helper-call id=34; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":34},{"tick":34,"kind":"wait","vaHex":"0x004d7824","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":34,"kind":"actor-flag","vaHex":"0x004d782c","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000001","mode":0,"maskHex":"0x00000001"},{"tick":34,"kind":"actor-write","vaHex":"0x004d7834","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":34,"kind":"actor-write","vaHex":"0x004d7840","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":34,"kind":"actor-frame","vaHex":"0x004d784c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:direct-frame-spawn"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x41","ownerKey":"ataho","ownerName":"아타호","skillName":"천조족","familyName":"display-table fallback","skillIdHex":"0x41","levelOrFixed":null,"targetClass":"self","mpCost":1,"hitCount":2,"frameSequence":[40,41,42,43,42,43,42,43,41,40,40,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":36,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[23,23,23],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77cc"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77e0"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77f4"}],"helperIds":[34],"helperFacts":[{"helperId":34,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["98@0"],"emitFrames":[98],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5274","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"}]},{"vaHex":"0x004b528c","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b520c","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b520c","targetSnippet":[{"vaHex":"0x004b520c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x41","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d779c","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d779c","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d77a8","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d77b4","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d77bc","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d77c4","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d77cc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d77d0","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d77d8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d77e0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d77e4","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d77ec","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d77f4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d77f8","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d7800","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d7808","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d7810","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-frame","vaHex":"0x004d7818","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":34,"kind":"helper-call","vaHex":"0x004d7820","opcode":"0xbd","summary":"helper-call id=34; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":34},{"tick":34,"kind":"wait","vaHex":"0x004d7824","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":34,"kind":"actor-flag","vaHex":"0x004d782c","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000001","mode":0,"maskHex":"0x00000001"},{"tick":34,"kind":"actor-write","vaHex":"0x004d7834","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":34,"kind":"actor-write","vaHex":"0x004d7840","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":34,"kind":"actor-frame","vaHex":"0x004d784c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:direct-frame-spawn"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"rinshan:0x01","ownerKey":"rinshan","ownerName":"린샹","skillName":"손톱공격","familyName":"display-table fallback","skillIdHex":"0x01","levelOrFixed":null,"targetClass":"enemy-single","mpCost":0,"hitCount":1,"frameSequence":[20,21,22,23,23,3],"expandedFrameGateSequence":[{"tick":0,"frame":20,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":21,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":16,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[3],"soundModel":"result-only","soundCalls":[{"tick":12,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db084"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-inferred","effectiveImplementationState":"actor-frame-inferred","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:rinshan:0x01","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004db064","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-front-basic-implicit","casterRule":"target-front-basic-implicit","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["display stream has hit/result evidence but no explicit movement; surrounding battle placement supplies the close target-front anchor for basic/local strikes"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 4, 4, 4, 13, 6, 6, 6, 8, 6, 6, 34, 6, 3, 8, 1, effect WLK count: 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 7, 1, 0, 1, 0"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004db064","opcode":"0x21","summary":"set sprite=0x14, frame=20, gate=2, mode=0","spriteHex":"0x14","frame":20,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db06c","opcode":"0x21","summary":"set sprite=0x14, frame=21, gate=6, mode=0","spriteHex":"0x14","frame":21,"gate":6},{"tick":8,"kind":"actor-frame","vaHex":"0x004db074","opcode":"0x21","summary":"set sprite=0x14, frame=22, gate=2, mode=0","spriteHex":"0x14","frame":22,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004db07c","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=2, mode=0","spriteHex":"0x14","frame":23,"gate":2},{"tick":12,"kind":"result-sound","vaHex":"0x004db084","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x004db088","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x004db090","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x004db098","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-frame","vaHex":"0x004db09c","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=2, mode=0","spriteHex":"0x14","frame":23,"gate":2},{"tick":14,"kind":"actor-frame","vaHex":"0x004db0a4","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":12,"soundVaHex":"0x004db084","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db088","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db090","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db098","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x02","ownerKey":"rinshan","ownerName":"린샹","skillName":"하이킥","familyName":"display-table fallback","skillIdHex":"0x02","levelOrFixed":null,"targetClass":"enemy-single","mpCost":0,"hitCount":1,"frameSequence":[10,11,11,3],"expandedFrameGateSequence":[{"tick":0,"frame":10,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":11,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":11,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":8,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[4],"soundModel":"result-only","soundCalls":[{"tick":4,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db0c8"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-inferred","effectiveImplementationState":"actor-frame-inferred","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:rinshan:0x02","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"display-start-corrected","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004db0b8","canonicalDisplayStartSource":"display-start-override","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-front-basic-implicit","casterRule":"target-front-basic-implicit","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["display stream has hit/result evidence but no explicit movement; surrounding battle placement supplies the close target-front anchor for basic/local strikes"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 4, 4, 4, 13, 6, 6, 6, 8, 6, 6, 34, 6, 3, 8, 1, effect WLK count: 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 7, 1, 0, 1, 0"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004db0b8","opcode":"0x21","summary":"set sprite=0x14, frame=10, gate=2, mode=0","spriteHex":"0x14","frame":10,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db0c0","opcode":"0x21","summary":"set sprite=0x14, frame=11, gate=2, mode=0","spriteHex":"0x14","frame":11,"gate":2},{"tick":4,"kind":"result-sound","vaHex":"0x004db0c8","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":4,"kind":"actor-flag","vaHex":"0x004db0cc","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":4,"kind":"actor-flag","vaHex":"0x004db0d4","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":4,"kind":"wait","vaHex":"0x004db0dc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":4,"kind":"actor-frame","vaHex":"0x004db0e0","opcode":"0x21","summary":"set sprite=0x14, frame=11, gate=2, mode=0","spriteHex":"0x14","frame":11,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x004db0e8","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":4,"soundVaHex":"0x004db0c8","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db0cc","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db0d4","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db0dc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x03","ownerKey":"rinshan","ownerName":"린샹","skillName":"미들킥","familyName":"display-table fallback","skillIdHex":"0x03","levelOrFixed":null,"targetClass":"enemy-single","mpCost":0,"hitCount":1,"frameSequence":[12,13,13,3],"expandedFrameGateSequence":[{"tick":0,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":8,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[4],"soundModel":"result-only","soundCalls":[{"tick":4,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db10c"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-inferred","effectiveImplementationState":"actor-frame-inferred","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:rinshan:0x03","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"display-start-corrected","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004db0fc","canonicalDisplayStartSource":"display-start-override","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-front-basic-implicit","casterRule":"target-front-basic-implicit","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["display stream has hit/result evidence but no explicit movement; surrounding battle placement supplies the close target-front anchor for basic/local strikes"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 4, 4, 4, 13, 6, 6, 6, 8, 6, 6, 34, 6, 3, 8, 1, effect WLK count: 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 7, 1, 0, 1, 0"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004db0fc","opcode":"0x21","summary":"set sprite=0x14, frame=12, gate=2, mode=0","spriteHex":"0x14","frame":12,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db104","opcode":"0x21","summary":"set sprite=0x14, frame=13, gate=2, mode=0","spriteHex":"0x14","frame":13,"gate":2},{"tick":4,"kind":"result-sound","vaHex":"0x004db10c","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":4,"kind":"actor-flag","vaHex":"0x004db110","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":4,"kind":"actor-flag","vaHex":"0x004db118","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":4,"kind":"wait","vaHex":"0x004db120","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":4,"kind":"actor-frame","vaHex":"0x004db124","opcode":"0x21","summary":"set sprite=0x14, frame=13, gate=2, mode=0","spriteHex":"0x14","frame":13,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x004db12c","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":4,"soundVaHex":"0x004db10c","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db110","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db118","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db120","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x04","ownerKey":"rinshan","ownerName":"린샹","skillName":"로 킥","familyName":"display-table fallback","skillIdHex":"0x04","levelOrFixed":null,"targetClass":"enemy-single","mpCost":0,"hitCount":1,"frameSequence":[14,15,15,3],"expandedFrameGateSequence":[{"tick":0,"frame":14,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":15,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":15,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":8,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[4],"soundModel":"result-only","soundCalls":[{"tick":0,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db148"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:rinshan:0x04","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"display-start-corrected","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004db140","canonicalDisplayStartSource":"display-start-override","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-front-local-combo-inferred","casterRule":"target-front-implicit-local-combo","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has actor/display local x/y writes but no movement selector; treat as implicit close target-front combo"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 4, 4, 4, 13, 6, 6, 6, 8, 6, 6, 34, 6, 3, 8, 1, effect WLK count: 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 7, 1, 0, 1, 0"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004db140","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":0,"kind":"result-sound","vaHex":"0x004db148","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":0,"kind":"actor-frame","vaHex":"0x004db14c","opcode":"0x21","summary":"set sprite=0x14, frame=14, gate=2, mode=0","spriteHex":"0x14","frame":14,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db154","opcode":"0x21","summary":"set sprite=0x14, frame=15, gate=2, mode=0","spriteHex":"0x14","frame":15,"gate":2},{"tick":4,"kind":"actor-flag","vaHex":"0x004db15c","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":4,"kind":"actor-flag","vaHex":"0x004db164","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":4,"kind":"wait","vaHex":"0x004db16c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":4,"kind":"actor-frame","vaHex":"0x004db170","opcode":"0x21","summary":"set sprite=0x14, frame=15, gate=2, mode=0","spriteHex":"0x14","frame":15,"gate":2},{"tick":6,"kind":"actor-write","vaHex":"0x004db178","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":6,"kind":"actor-frame","vaHex":"0x004db180","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":0,"soundVaHex":"0x004db148","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db15c","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db164","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db16c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x05","ownerKey":"rinshan","ownerName":"린샹","skillName":"도발","familyName":"display-table fallback","skillIdHex":"0x05","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[51,52,53,51,52,53,51,52,53,54,4,5,4],"expandedFrameGateSequence":[{"tick":0,"frame":51,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":52,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":53,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":51,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":52,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":53,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":51,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":52,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":53,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":54,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":4,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":44,"frame":5,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":48,"frame":4,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":56,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[],"resultWlkNos":[],"soundModel":"no-action-wlk","soundCalls":{},"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:rinshan:0x05","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"display-start-corrected","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004daf28","canonicalDisplayStartSource":"display-start-override","canonicalWlkEvidenceStatus":"no-direct-wlk-support","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 4, 4, 4, 13, 6, 6, 6, 8, 6, 6, 34, 6, 3, 8, 1, effect WLK count: 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 7, 1, 0, 1, 0"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004daf28","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-frame","vaHex":"0x004daf2c","opcode":"0x21","summary":"set sprite=0x14, frame=51, gate=4, mode=0","spriteHex":"0x14","frame":51,"gate":4},{"tick":4,"kind":"actor-frame","vaHex":"0x004daf34","opcode":"0x21","summary":"set sprite=0x14, frame=52, gate=2, mode=0","spriteHex":"0x14","frame":52,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x004daf3c","opcode":"0x21","summary":"set sprite=0x14, frame=53, gate=4, mode=0","spriteHex":"0x14","frame":53,"gate":4},{"tick":10,"kind":"actor-frame","vaHex":"0x004daf44","opcode":"0x21","summary":"set sprite=0x14, frame=51, gate=4, mode=0","spriteHex":"0x14","frame":51,"gate":4},{"tick":14,"kind":"actor-frame","vaHex":"0x004daf4c","opcode":"0x21","summary":"set sprite=0x14, frame=52, gate=2, mode=0","spriteHex":"0x14","frame":52,"gate":2},{"tick":16,"kind":"actor-frame","vaHex":"0x004daf54","opcode":"0x21","summary":"set sprite=0x14, frame=53, gate=4, mode=0","spriteHex":"0x14","frame":53,"gate":4},{"tick":20,"kind":"actor-frame","vaHex":"0x004daf5c","opcode":"0x21","summary":"set sprite=0x14, frame=51, gate=4, mode=0","spriteHex":"0x14","frame":51,"gate":4},{"tick":24,"kind":"actor-frame","vaHex":"0x004daf64","opcode":"0x21","summary":"set sprite=0x14, frame=52, gate=2, mode=0","spriteHex":"0x14","frame":52,"gate":2},{"tick":26,"kind":"actor-frame","vaHex":"0x004daf6c","opcode":"0x21","summary":"set sprite=0x14, frame=53, gate=4, mode=0","spriteHex":"0x14","frame":53,"gate":4},{"tick":30,"kind":"actor-frame","vaHex":"0x004daf74","opcode":"0x21","summary":"set sprite=0x14, frame=54, gate=8, mode=0","spriteHex":"0x14","frame":54,"gate":8},{"tick":38,"kind":"actor-frame","vaHex":"0x004daf7c","opcode":"0x21","summary":"set sprite=0x14, frame=4, gate=6, mode=0","spriteHex":"0x14","frame":4,"gate":6},{"tick":44,"kind":"actor-frame","vaHex":"0x004daf84","opcode":"0x21","summary":"set sprite=0x14, frame=5, gate=4, mode=0","spriteHex":"0x14","frame":5,"gate":4},{"tick":48,"kind":"actor-frame","vaHex":"0x004daf8c","opcode":"0x21","summary":"set sprite=0x14, frame=4, gate=8, mode=0","spriteHex":"0x14","frame":4,"gate":8},{"tick":56,"kind":"actor-flag","vaHex":"0x004daf94","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000010","mode":0,"maskHex":"0x00000010"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","caster-position-rule","render:support-or-status","sound:no-action-wlk"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"rinshan:0x06","ownerKey":"rinshan","ownerName":"린샹","skillName":"꼬챙이 꿰기","familyName":"display-table fallback","skillIdHex":"0x06","levelOrFixed":null,"targetClass":"enemy-single","mpCost":0,"hitCount":1,"frameSequence":[20,21,22,23,23,3],"expandedFrameGateSequence":[{"tick":0,"frame":20,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":21,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":22,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[4],"soundModel":"result-only","soundCalls":[{"tick":18,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db1f0"}],"helperIds":[110],"helperFacts":[{"helperId":110,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004bad54","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004bad88","frames":["173@2","174@2","175@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-id-only","renderTrack":"ranged-projectile-or-beam","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"개인기지만 target-front가 아니라 수평 거리에서 helper/effect를 쏘는 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:rinshan:0x06","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"display-start-corrected","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004db1cc","canonicalDisplayStartSource":"display-start-override","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-ranged-engine-effect","casterRule":"caster-ranged-effect","startAnchor":"enemy-ranged","motionKind":"cast/projectile","motionTarget":"target","positionConfidence":"medium","positionBucket":"enemy-ranged","positionBucketLabel":"떨어져서 쏨","battleMapPlacementSummary":"몬스터 바로 앞이 아니라 수평 거리를 둔 원거리 시전으로 처리한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has helper/effect cues without caster movement/write; treat as ranged cast/effect"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 4, 4, 4, 13, 6, 6, 6, 8, 6, 6, 34, 6, 3, 8, 1, effect WLK count: 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 7, 1, 0, 1, 0"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004db1cc","opcode":"0x21","summary":"set sprite=0x14, frame=20, gate=8, mode=0","spriteHex":"0x14","frame":20,"gate":8},{"tick":8,"kind":"actor-frame","vaHex":"0x004db1d4","opcode":"0x21","summary":"set sprite=0x14, frame=21, gate=6, mode=0","spriteHex":"0x14","frame":21,"gate":6},{"tick":14,"kind":"actor-frame","vaHex":"0x004db1dc","opcode":"0x21","summary":"set sprite=0x14, frame=22, gate=2, mode=0","spriteHex":"0x14","frame":22,"gate":2},{"tick":16,"kind":"actor-frame","vaHex":"0x004db1e4","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=2, mode=0","spriteHex":"0x14","frame":23,"gate":2},{"tick":18,"kind":"helper-call","vaHex":"0x004db1ec","opcode":"0xbd","summary":"helper-call id=110; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":110},{"tick":18,"kind":"result-sound","vaHex":"0x004db1f0","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":18,"kind":"actor-flag","vaHex":"0x004db1f4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":18,"kind":"actor-flag","vaHex":"0x004db1fc","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":18,"kind":"wait","vaHex":"0x004db204","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":18,"kind":"actor-frame","vaHex":"0x004db208","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=2, mode=0","spriteHex":"0x14","frame":23,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x004db210","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":18,"soundVaHex":"0x004db1f0","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db1f4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db1fc","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db204","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:ranged-projectile-or-beam","sound:result-only","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x07","ownerKey":"rinshan","ownerName":"린샹","skillName":"꼬챙이 꿰기","familyName":"display-table fallback","skillIdHex":"0x07","levelOrFixed":null,"targetClass":"enemy-single","mpCost":0,"hitCount":1,"frameSequence":[20,21,22,23,23,3],"expandedFrameGateSequence":[{"tick":0,"frame":20,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":21,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":22,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[4],"soundModel":"result-only","soundCalls":[{"tick":18,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db1f0"}],"helperIds":[110],"helperFacts":[{"helperId":110,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004bad54","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004bad88","frames":["173@2","174@2","175@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-id-only","renderTrack":"ranged-projectile-or-beam","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"개인기지만 target-front가 아니라 수평 거리에서 helper/effect를 쏘는 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:rinshan:0x07","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004db1cc","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-ranged-engine-effect","casterRule":"caster-ranged-effect","startAnchor":"enemy-ranged","motionKind":"cast/projectile","motionTarget":"target","positionConfidence":"medium","positionBucket":"enemy-ranged","positionBucketLabel":"떨어져서 쏨","battleMapPlacementSummary":"몬스터 바로 앞이 아니라 수평 거리를 둔 원거리 시전으로 처리한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has helper/effect cues without caster movement/write; treat as ranged cast/effect"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 4, 4, 4, 13, 6, 6, 6, 8, 6, 6, 34, 6, 3, 8, 1, effect WLK count: 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 7, 1, 0, 1, 0"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004db1cc","opcode":"0x21","summary":"set sprite=0x14, frame=20, gate=8, mode=0","spriteHex":"0x14","frame":20,"gate":8},{"tick":8,"kind":"actor-frame","vaHex":"0x004db1d4","opcode":"0x21","summary":"set sprite=0x14, frame=21, gate=6, mode=0","spriteHex":"0x14","frame":21,"gate":6},{"tick":14,"kind":"actor-frame","vaHex":"0x004db1dc","opcode":"0x21","summary":"set sprite=0x14, frame=22, gate=2, mode=0","spriteHex":"0x14","frame":22,"gate":2},{"tick":16,"kind":"actor-frame","vaHex":"0x004db1e4","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=2, mode=0","spriteHex":"0x14","frame":23,"gate":2},{"tick":18,"kind":"helper-call","vaHex":"0x004db1ec","opcode":"0xbd","summary":"helper-call id=110; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":110},{"tick":18,"kind":"result-sound","vaHex":"0x004db1f0","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":18,"kind":"actor-flag","vaHex":"0x004db1f4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":18,"kind":"actor-flag","vaHex":"0x004db1fc","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":18,"kind":"wait","vaHex":"0x004db204","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":18,"kind":"actor-frame","vaHex":"0x004db208","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=2, mode=0","spriteHex":"0x14","frame":23,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x004db210","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":18,"soundVaHex":"0x004db1f0","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db1f4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db1fc","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db204","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:ranged-projectile-or-beam","sound:result-only","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x08","ownerKey":"rinshan","ownerName":"린샹","skillName":"꼬챙이 꿰기","familyName":"display-table fallback","skillIdHex":"0x08","levelOrFixed":null,"targetClass":"enemy-single","mpCost":0,"hitCount":1,"frameSequence":[20,21,22,23,23,3],"expandedFrameGateSequence":[{"tick":0,"frame":20,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":21,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":22,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[4],"soundModel":"result-only","soundCalls":[{"tick":18,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db1f0"}],"helperIds":[110],"helperFacts":[{"helperId":110,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004bad54","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004bad88","frames":["173@2","174@2","175@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-id-only","renderTrack":"ranged-projectile-or-beam","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"개인기지만 target-front가 아니라 수평 거리에서 helper/effect를 쏘는 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:rinshan:0x08","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004db1cc","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-ranged-engine-effect","casterRule":"caster-ranged-effect","startAnchor":"enemy-ranged","motionKind":"cast/projectile","motionTarget":"target","positionConfidence":"medium","positionBucket":"enemy-ranged","positionBucketLabel":"떨어져서 쏨","battleMapPlacementSummary":"몬스터 바로 앞이 아니라 수평 거리를 둔 원거리 시전으로 처리한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has helper/effect cues without caster movement/write; treat as ranged cast/effect"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 4, 4, 4, 13, 6, 6, 6, 8, 6, 6, 34, 6, 3, 8, 1, effect WLK count: 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 7, 1, 0, 1, 0"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004db1cc","opcode":"0x21","summary":"set sprite=0x14, frame=20, gate=8, mode=0","spriteHex":"0x14","frame":20,"gate":8},{"tick":8,"kind":"actor-frame","vaHex":"0x004db1d4","opcode":"0x21","summary":"set sprite=0x14, frame=21, gate=6, mode=0","spriteHex":"0x14","frame":21,"gate":6},{"tick":14,"kind":"actor-frame","vaHex":"0x004db1dc","opcode":"0x21","summary":"set sprite=0x14, frame=22, gate=2, mode=0","spriteHex":"0x14","frame":22,"gate":2},{"tick":16,"kind":"actor-frame","vaHex":"0x004db1e4","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=2, mode=0","spriteHex":"0x14","frame":23,"gate":2},{"tick":18,"kind":"helper-call","vaHex":"0x004db1ec","opcode":"0xbd","summary":"helper-call id=110; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":110},{"tick":18,"kind":"result-sound","vaHex":"0x004db1f0","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":18,"kind":"actor-flag","vaHex":"0x004db1f4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":18,"kind":"actor-flag","vaHex":"0x004db1fc","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":18,"kind":"wait","vaHex":"0x004db204","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":18,"kind":"actor-frame","vaHex":"0x004db208","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=2, mode=0","spriteHex":"0x14","frame":23,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x004db210","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":18,"soundVaHex":"0x004db1f0","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db1f4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db1fc","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db204","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:ranged-projectile-or-beam","sound:result-only","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x09","ownerKey":"rinshan","ownerName":"린샹","skillName":"안면백조권","familyName":"안면백조권","skillIdHex":"0x09","levelOrFixed":1,"targetClass":"enemy-single","mpCost":10,"hitCount":3,"frameSequence":[6,7,8,9,9,16,17,18,19,19,6,7,8,9,9,3],"expandedFrameGateSequence":[{"tick":0,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":7,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":8,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":9,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":9,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":16,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":17,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":19,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":19,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":7,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":8,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":9,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":40,"frame":9,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":42,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":44,"repeatLoopCount":0,"hitEventCount":3,"hitClassCounts":{"confirmed-result-hit-window":3},"effectWlkNos":[],"resultWlkNos":[3,3,3],"soundModel":"result-only","soundCalls":[{"tick":12,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db260"},{"tick":26,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db2b0"},{"tick":40,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db318"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:rinshan:0x09","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"display-start-corrected","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004db224","canonicalDisplayStartSource":"display-start-override","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-front-direct-placement","casterRule":"target-front-direct","startAnchor":"target-front","motionKind":"teleport","motionTarget":"target-front","positionConfidence":"high","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 3 fixes the actor at target-front before frames"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 3, 3, 3, 4","0xc2 result sound count changes: 3, 3, 3, 4","frame count changes: 16, 16, 20, 27"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004db224","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-write","vaHex":"0x004db228","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":0,"kind":"actor-write","vaHex":"0x004db230","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004db238","opcode":"0x21","summary":"set sprite=0x14, frame=6, gate=2, mode=0","spriteHex":"0x14","frame":6,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db240","opcode":"0x21","summary":"set sprite=0x14, frame=7, gate=6, mode=0","spriteHex":"0x14","frame":7,"gate":6},{"tick":8,"kind":"actor-write","vaHex":"0x004db248","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004db250","opcode":"0x21","summary":"set sprite=0x14, frame=8, gate=2, mode=0","spriteHex":"0x14","frame":8,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004db258","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=2, mode=0","spriteHex":"0x14","frame":9,"gate":2},{"tick":12,"kind":"result-sound","vaHex":"0x004db260","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x004db264","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x004db26c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x004db274","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-frame","vaHex":"0x004db278","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=2, mode=0","spriteHex":"0x14","frame":9,"gate":2},{"tick":14,"kind":"actor-write","vaHex":"0x004db280","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":14,"kind":"actor-frame","vaHex":"0x004db288","opcode":"0x21","summary":"set sprite=0x14, frame=16, gate=2, mode=0","spriteHex":"0x14","frame":16,"gate":2},{"tick":16,"kind":"actor-frame","vaHex":"0x004db290","opcode":"0x21","summary":"set sprite=0x14, frame=17, gate=6, mode=0","spriteHex":"0x14","frame":17,"gate":6},{"tick":22,"kind":"actor-write","vaHex":"0x004db298","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":22,"kind":"actor-frame","vaHex":"0x004db2a0","opcode":"0x21","summary":"set sprite=0x14, frame=18, gate=2, mode=0","spriteHex":"0x14","frame":18,"gate":2},{"tick":24,"kind":"actor-frame","vaHex":"0x004db2a8","opcode":"0x21","summary":"set sprite=0x14, frame=19, gate=2, mode=0","spriteHex":"0x14","frame":19,"gate":2},{"tick":26,"kind":"result-sound","vaHex":"0x004db2b0","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":26,"kind":"actor-flag","vaHex":"0x004db2b4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":26,"kind":"actor-flag","vaHex":"0x004db2bc","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":26,"kind":"wait","vaHex":"0x004db2c4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":26,"kind":"actor-frame","vaHex":"0x004db2c8","opcode":"0x21","summary":"set sprite=0x14, frame=19, gate=2, mode=0","spriteHex":"0x14","frame":19,"gate":2},{"tick":28,"kind":"actor-write","vaHex":"0x004db2d0","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":28,"kind":"actor-frame","vaHex":"0x004db2f0","opcode":"0x21","summary":"set sprite=0x14, frame=6, gate=2, mode=0","spriteHex":"0x14","frame":6,"gate":2},{"tick":30,"kind":"actor-frame","vaHex":"0x004db2f8","opcode":"0x21","summary":"set sprite=0x14, frame=7, gate=6, mode=0","spriteHex":"0x14","frame":7,"gate":6},{"tick":36,"kind":"actor-write","vaHex":"0x004db300","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":36,"kind":"actor-frame","vaHex":"0x004db308","opcode":"0x21","summary":"set sprite=0x14, frame=8, gate=2, mode=0","spriteHex":"0x14","frame":8,"gate":2},{"tick":38,"kind":"actor-frame","vaHex":"0x004db310","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=2, mode=0","spriteHex":"0x14","frame":9,"gate":2},{"tick":40,"kind":"result-sound","vaHex":"0x004db318","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":40,"kind":"actor-flag","vaHex":"0x004db31c","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":40,"kind":"actor-flag","vaHex":"0x004db324","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":40,"kind":"wait","vaHex":"0x004db32c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":40,"kind":"actor-frame","vaHex":"0x004db330","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=2, mode=0","spriteHex":"0x14","frame":9,"gate":2},{"tick":42,"kind":"actor-write","vaHex":"0x004db538","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":42,"kind":"actor-frame","vaHex":"0x004db540","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":44,"kind":"movement","vaHex":"0x004db548","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":12,"soundVaHex":"0x004db260","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db264","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db26c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db274","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":26,"soundVaHex":"0x004db2b0","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db2b4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db2bc","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db2c4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":40,"soundVaHex":"0x004db318","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db31c","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db324","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db32c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x0a","ownerKey":"rinshan","ownerName":"린샹","skillName":"안면백조권","familyName":"안면백조권","skillIdHex":"0x0a","levelOrFixed":2,"targetClass":"enemy-single","mpCost":10,"hitCount":3,"frameSequence":[6,7,8,9,9,16,17,18,19,19,33,34,38,39,39,3],"expandedFrameGateSequence":[{"tick":0,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":7,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":8,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":9,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":9,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":16,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":17,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":19,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":19,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":33,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":34,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":38,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":39,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":40,"frame":39,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":42,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":44,"repeatLoopCount":0,"hitEventCount":3,"hitClassCounts":{"confirmed-result-hit-window":3},"effectWlkNos":[],"resultWlkNos":[3,3,4],"soundModel":"result-only","soundCalls":[{"tick":12,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db260"},{"tick":26,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db2b0"},{"tick":40,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db368"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:rinshan:0x0a","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004db224","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-front-direct-placement","casterRule":"target-front-direct","startAnchor":"target-front","motionKind":"teleport","motionTarget":"target-front","positionConfidence":"high","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 3 fixes the actor at target-front before frames"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 3, 3, 3, 4","0xc2 result sound count changes: 3, 3, 3, 4","frame count changes: 16, 16, 20, 27"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004db224","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-write","vaHex":"0x004db228","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":0,"kind":"actor-write","vaHex":"0x004db230","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004db238","opcode":"0x21","summary":"set sprite=0x14, frame=6, gate=2, mode=0","spriteHex":"0x14","frame":6,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db240","opcode":"0x21","summary":"set sprite=0x14, frame=7, gate=6, mode=0","spriteHex":"0x14","frame":7,"gate":6},{"tick":8,"kind":"actor-write","vaHex":"0x004db248","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004db250","opcode":"0x21","summary":"set sprite=0x14, frame=8, gate=2, mode=0","spriteHex":"0x14","frame":8,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004db258","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=2, mode=0","spriteHex":"0x14","frame":9,"gate":2},{"tick":12,"kind":"result-sound","vaHex":"0x004db260","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x004db264","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x004db26c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x004db274","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-frame","vaHex":"0x004db278","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=2, mode=0","spriteHex":"0x14","frame":9,"gate":2},{"tick":14,"kind":"actor-write","vaHex":"0x004db280","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":14,"kind":"actor-frame","vaHex":"0x004db288","opcode":"0x21","summary":"set sprite=0x14, frame=16, gate=2, mode=0","spriteHex":"0x14","frame":16,"gate":2},{"tick":16,"kind":"actor-frame","vaHex":"0x004db290","opcode":"0x21","summary":"set sprite=0x14, frame=17, gate=6, mode=0","spriteHex":"0x14","frame":17,"gate":6},{"tick":22,"kind":"actor-write","vaHex":"0x004db298","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":22,"kind":"actor-frame","vaHex":"0x004db2a0","opcode":"0x21","summary":"set sprite=0x14, frame=18, gate=2, mode=0","spriteHex":"0x14","frame":18,"gate":2},{"tick":24,"kind":"actor-frame","vaHex":"0x004db2a8","opcode":"0x21","summary":"set sprite=0x14, frame=19, gate=2, mode=0","spriteHex":"0x14","frame":19,"gate":2},{"tick":26,"kind":"result-sound","vaHex":"0x004db2b0","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":26,"kind":"actor-flag","vaHex":"0x004db2b4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":26,"kind":"actor-flag","vaHex":"0x004db2bc","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":26,"kind":"wait","vaHex":"0x004db2c4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":26,"kind":"actor-frame","vaHex":"0x004db2c8","opcode":"0x21","summary":"set sprite=0x14, frame=19, gate=2, mode=0","spriteHex":"0x14","frame":19,"gate":2},{"tick":28,"kind":"actor-write","vaHex":"0x004db2d0","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":28,"kind":"actor-frame","vaHex":"0x004db340","opcode":"0x21","summary":"set sprite=0x14, frame=33, gate=2, mode=0","spriteHex":"0x14","frame":33,"gate":2},{"tick":30,"kind":"actor-frame","vaHex":"0x004db348","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=6, mode=0","spriteHex":"0x14","frame":34,"gate":6},{"tick":36,"kind":"actor-write","vaHex":"0x004db350","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":36,"kind":"actor-frame","vaHex":"0x004db358","opcode":"0x21","summary":"set sprite=0x14, frame=38, gate=2, mode=0","spriteHex":"0x14","frame":38,"gate":2},{"tick":38,"kind":"actor-frame","vaHex":"0x004db360","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=2, mode=0","spriteHex":"0x14","frame":39,"gate":2},{"tick":40,"kind":"result-sound","vaHex":"0x004db368","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":40,"kind":"actor-flag","vaHex":"0x004db36c","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":40,"kind":"actor-flag","vaHex":"0x004db374","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":40,"kind":"wait","vaHex":"0x004db37c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":40,"kind":"actor-frame","vaHex":"0x004db380","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=2, mode=0","spriteHex":"0x14","frame":39,"gate":2},{"tick":42,"kind":"actor-frame","vaHex":"0x004db540","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":44,"kind":"movement","vaHex":"0x004db548","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":12,"soundVaHex":"0x004db260","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db264","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db26c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db274","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":26,"soundVaHex":"0x004db2b0","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db2b4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db2bc","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db2c4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":40,"soundVaHex":"0x004db368","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db36c","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db374","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db37c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x0b","ownerKey":"rinshan","ownerName":"린샹","skillName":"안면백조권","familyName":"안면백조권","skillIdHex":"0x0b","levelOrFixed":3,"targetClass":"enemy-single","mpCost":9,"hitCount":3,"frameSequence":[6,7,8,9,9,16,17,18,19,19,33,34,35,36,37,35,34,41,40,3],"expandedFrameGateSequence":[{"tick":0,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":7,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":8,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":9,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":9,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":16,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":17,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":19,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":19,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":33,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":34,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":40,"frame":37,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":42,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":44,"frame":34,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":46,"frame":41,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":48,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":50,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":52,"repeatLoopCount":0,"hitEventCount":3,"hitClassCounts":{"confirmed-result-hit-window":3},"effectWlkNos":[],"resultWlkNos":[3,3,4],"soundModel":"result-only","soundCalls":[{"tick":12,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db260"},{"tick":26,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db2b0"},{"tick":40,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db3c0"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:rinshan:0x0b","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004db224","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-front-direct-placement","casterRule":"target-front-direct","startAnchor":"target-front","motionKind":"teleport","motionTarget":"target-front","positionConfidence":"high","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 3 fixes the actor at target-front before frames"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 3, 3, 3, 4","0xc2 result sound count changes: 3, 3, 3, 4","frame count changes: 16, 16, 20, 27"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004db224","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-write","vaHex":"0x004db228","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":0,"kind":"actor-write","vaHex":"0x004db230","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004db238","opcode":"0x21","summary":"set sprite=0x14, frame=6, gate=2, mode=0","spriteHex":"0x14","frame":6,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db240","opcode":"0x21","summary":"set sprite=0x14, frame=7, gate=6, mode=0","spriteHex":"0x14","frame":7,"gate":6},{"tick":8,"kind":"actor-write","vaHex":"0x004db248","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004db250","opcode":"0x21","summary":"set sprite=0x14, frame=8, gate=2, mode=0","spriteHex":"0x14","frame":8,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004db258","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=2, mode=0","spriteHex":"0x14","frame":9,"gate":2},{"tick":12,"kind":"result-sound","vaHex":"0x004db260","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x004db264","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x004db26c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x004db274","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-frame","vaHex":"0x004db278","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=2, mode=0","spriteHex":"0x14","frame":9,"gate":2},{"tick":14,"kind":"actor-write","vaHex":"0x004db280","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":14,"kind":"actor-frame","vaHex":"0x004db288","opcode":"0x21","summary":"set sprite=0x14, frame=16, gate=2, mode=0","spriteHex":"0x14","frame":16,"gate":2},{"tick":16,"kind":"actor-frame","vaHex":"0x004db290","opcode":"0x21","summary":"set sprite=0x14, frame=17, gate=6, mode=0","spriteHex":"0x14","frame":17,"gate":6},{"tick":22,"kind":"actor-write","vaHex":"0x004db298","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":22,"kind":"actor-frame","vaHex":"0x004db2a0","opcode":"0x21","summary":"set sprite=0x14, frame=18, gate=2, mode=0","spriteHex":"0x14","frame":18,"gate":2},{"tick":24,"kind":"actor-frame","vaHex":"0x004db2a8","opcode":"0x21","summary":"set sprite=0x14, frame=19, gate=2, mode=0","spriteHex":"0x14","frame":19,"gate":2},{"tick":26,"kind":"result-sound","vaHex":"0x004db2b0","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":26,"kind":"actor-flag","vaHex":"0x004db2b4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":26,"kind":"actor-flag","vaHex":"0x004db2bc","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":26,"kind":"wait","vaHex":"0x004db2c4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":26,"kind":"actor-frame","vaHex":"0x004db2c8","opcode":"0x21","summary":"set sprite=0x14, frame=19, gate=2, mode=0","spriteHex":"0x14","frame":19,"gate":2},{"tick":28,"kind":"actor-write","vaHex":"0x004db2d0","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":28,"kind":"actor-frame","vaHex":"0x004db390","opcode":"0x21","summary":"set sprite=0x14, frame=33, gate=2, mode=0","spriteHex":"0x14","frame":33,"gate":2},{"tick":30,"kind":"actor-frame","vaHex":"0x004db398","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=6, mode=0","spriteHex":"0x14","frame":34,"gate":6},{"tick":36,"kind":"actor-write","vaHex":"0x004db3a0","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffe00000 (-32px)","destHex":"0x20","immHex":"0xffe00000","immFixed":-32.0},{"tick":36,"kind":"actor-frame","vaHex":"0x004db3a8","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":38,"kind":"actor-write","vaHex":"0x004db3b0","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":38,"kind":"actor-frame","vaHex":"0x004db3b8","opcode":"0x21","summary":"set sprite=0x14, frame=36, gate=2, mode=0","spriteHex":"0x14","frame":36,"gate":2},{"tick":40,"kind":"result-sound","vaHex":"0x004db3c0","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":40,"kind":"actor-flag","vaHex":"0x004db3c4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":40,"kind":"actor-flag","vaHex":"0x004db3cc","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":40,"kind":"wait","vaHex":"0x004db3d4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":40,"kind":"actor-write","vaHex":"0x004db3d8","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":40,"kind":"actor-frame","vaHex":"0x004db3e0","opcode":"0x21","summary":"set sprite=0x14, frame=37, gate=2, mode=0","spriteHex":"0x14","frame":37,"gate":2},{"tick":42,"kind":"actor-write","vaHex":"0x004db3e8","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffe00000 (-32px)","destHex":"0x20","immHex":"0xffe00000","immFixed":-32.0},{"tick":42,"kind":"actor-frame","vaHex":"0x004db3f0","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":44,"kind":"actor-write","vaHex":"0x004db3f8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xffe00000 (-32px)","destHex":"0x20","immHex":"0xffe00000","immFixed":-32.0},{"tick":44,"kind":"actor-frame","vaHex":"0x004db400","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=2, mode=0","spriteHex":"0x14","frame":34,"gate":2},{"tick":46,"kind":"actor-write","vaHex":"0x004db408","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":46,"kind":"actor-frame","vaHex":"0x004db410","opcode":"0x21","summary":"set sprite=0x14, frame=41, gate=2, mode=0","spriteHex":"0x14","frame":41,"gate":2},{"tick":48,"kind":"actor-frame","vaHex":"0x004db418","opcode":"0x21","summary":"set sprite=0x14, frame=40, gate=2, mode=0","spriteHex":"0x14","frame":40,"gate":2},{"tick":50,"kind":"actor-frame","vaHex":"0x004db540","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":52,"kind":"movement","vaHex":"0x004db548","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":12,"soundVaHex":"0x004db260","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db264","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db26c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db274","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":26,"soundVaHex":"0x004db2b0","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db2b4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db2bc","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db2c4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":40,"soundVaHex":"0x004db3c0","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db3c4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db3cc","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db3d4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x0c","ownerKey":"rinshan","ownerName":"린샹","skillName":"안면백조권","familyName":"안면백조권","skillIdHex":"0x0c","levelOrFixed":4,"targetClass":"enemy-single","mpCost":8,"hitCount":4,"frameSequence":[6,7,8,9,9,16,17,18,19,19,33,34,38,39,39,33,34,35,36,37,35,34,42,42,41,40,3],"expandedFrameGateSequence":[{"tick":0,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":7,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":8,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":9,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":9,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":16,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":17,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":19,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":19,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":33,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":34,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":38,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":39,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":40,"frame":39,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":42,"frame":33,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":44,"frame":34,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":50,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":52,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":54,"frame":37,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":56,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":58,"frame":34,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":60,"frame":42,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":62,"frame":42,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":64,"frame":41,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":66,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":68,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":70,"repeatLoopCount":0,"hitEventCount":4,"hitClassCounts":{"confirmed-result-hit-window":4},"effectWlkNos":[],"resultWlkNos":[3,3,4,5],"soundModel":"result-only","soundCalls":[{"tick":12,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db260"},{"tick":26,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db2b0"},{"tick":40,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db450"},{"tick":54,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db4a8"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:rinshan:0x0c","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004db224","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-front-direct-placement","casterRule":"target-front-direct","startAnchor":"target-front","motionKind":"teleport","motionTarget":"target-front","positionConfidence":"high","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 3 fixes the actor at target-front before frames"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 3, 3, 3, 4","0xc2 result sound count changes: 3, 3, 3, 4","frame count changes: 16, 16, 20, 27"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004db224","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-write","vaHex":"0x004db228","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":0,"kind":"actor-write","vaHex":"0x004db230","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004db238","opcode":"0x21","summary":"set sprite=0x14, frame=6, gate=2, mode=0","spriteHex":"0x14","frame":6,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db240","opcode":"0x21","summary":"set sprite=0x14, frame=7, gate=6, mode=0","spriteHex":"0x14","frame":7,"gate":6},{"tick":8,"kind":"actor-write","vaHex":"0x004db248","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004db250","opcode":"0x21","summary":"set sprite=0x14, frame=8, gate=2, mode=0","spriteHex":"0x14","frame":8,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004db258","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=2, mode=0","spriteHex":"0x14","frame":9,"gate":2},{"tick":12,"kind":"result-sound","vaHex":"0x004db260","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x004db264","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x004db26c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x004db274","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-frame","vaHex":"0x004db278","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=2, mode=0","spriteHex":"0x14","frame":9,"gate":2},{"tick":14,"kind":"actor-write","vaHex":"0x004db280","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":14,"kind":"actor-frame","vaHex":"0x004db288","opcode":"0x21","summary":"set sprite=0x14, frame=16, gate=2, mode=0","spriteHex":"0x14","frame":16,"gate":2},{"tick":16,"kind":"actor-frame","vaHex":"0x004db290","opcode":"0x21","summary":"set sprite=0x14, frame=17, gate=6, mode=0","spriteHex":"0x14","frame":17,"gate":6},{"tick":22,"kind":"actor-write","vaHex":"0x004db298","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":22,"kind":"actor-frame","vaHex":"0x004db2a0","opcode":"0x21","summary":"set sprite=0x14, frame=18, gate=2, mode=0","spriteHex":"0x14","frame":18,"gate":2},{"tick":24,"kind":"actor-frame","vaHex":"0x004db2a8","opcode":"0x21","summary":"set sprite=0x14, frame=19, gate=2, mode=0","spriteHex":"0x14","frame":19,"gate":2},{"tick":26,"kind":"result-sound","vaHex":"0x004db2b0","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":26,"kind":"actor-flag","vaHex":"0x004db2b4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":26,"kind":"actor-flag","vaHex":"0x004db2bc","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":26,"kind":"wait","vaHex":"0x004db2c4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":26,"kind":"actor-frame","vaHex":"0x004db2c8","opcode":"0x21","summary":"set sprite=0x14, frame=19, gate=2, mode=0","spriteHex":"0x14","frame":19,"gate":2},{"tick":28,"kind":"actor-write","vaHex":"0x004db2d0","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":28,"kind":"actor-frame","vaHex":"0x004db428","opcode":"0x21","summary":"set sprite=0x14, frame=33, gate=2, mode=0","spriteHex":"0x14","frame":33,"gate":2},{"tick":30,"kind":"actor-frame","vaHex":"0x004db430","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=6, mode=0","spriteHex":"0x14","frame":34,"gate":6},{"tick":36,"kind":"actor-write","vaHex":"0x004db438","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":36,"kind":"actor-frame","vaHex":"0x004db440","opcode":"0x21","summary":"set sprite=0x14, frame=38, gate=2, mode=0","spriteHex":"0x14","frame":38,"gate":2},{"tick":38,"kind":"actor-frame","vaHex":"0x004db448","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=2, mode=0","spriteHex":"0x14","frame":39,"gate":2},{"tick":40,"kind":"result-sound","vaHex":"0x004db450","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":40,"kind":"actor-flag","vaHex":"0x004db454","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":40,"kind":"actor-flag","vaHex":"0x004db45c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":40,"kind":"wait","vaHex":"0x004db464","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":40,"kind":"actor-frame","vaHex":"0x004db468","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=2, mode=0","spriteHex":"0x14","frame":39,"gate":2},{"tick":42,"kind":"actor-write","vaHex":"0x004db470","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":42,"kind":"actor-frame","vaHex":"0x004db478","opcode":"0x21","summary":"set sprite=0x14, frame=33, gate=2, mode=0","spriteHex":"0x14","frame":33,"gate":2},{"tick":44,"kind":"actor-frame","vaHex":"0x004db480","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=6, mode=0","spriteHex":"0x14","frame":34,"gate":6},{"tick":50,"kind":"actor-write","vaHex":"0x004db488","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffdc0000 (-36px)","destHex":"0x20","immHex":"0xffdc0000","immFixed":-36.0},{"tick":50,"kind":"actor-frame","vaHex":"0x004db490","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":52,"kind":"actor-write","vaHex":"0x004db498","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x000c0000 (12px)","destHex":"0x20","immHex":"0x000c0000","immFixed":12.0},{"tick":52,"kind":"actor-frame","vaHex":"0x004db4a0","opcode":"0x21","summary":"set sprite=0x14, frame=36, gate=2, mode=0","spriteHex":"0x14","frame":36,"gate":2},{"tick":54,"kind":"result-sound","vaHex":"0x004db4a8","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":54,"kind":"actor-flag","vaHex":"0x004db4ac","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":54,"kind":"actor-flag","vaHex":"0x004db4b4","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":54,"kind":"wait","vaHex":"0x004db4bc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":54,"kind":"actor-write","vaHex":"0x004db4c0","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x000c0000 (12px)","destHex":"0x20","immHex":"0x000c0000","immFixed":12.0},{"tick":54,"kind":"actor-frame","vaHex":"0x004db4c8","opcode":"0x21","summary":"set sprite=0x14, frame=37, gate=2, mode=0","spriteHex":"0x14","frame":37,"gate":2},{"tick":56,"kind":"actor-write","vaHex":"0x004db4d0","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffdc0000 (-36px)","destHex":"0x20","immHex":"0xffdc0000","immFixed":-36.0},{"tick":56,"kind":"actor-frame","vaHex":"0x004db4d8","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":58,"kind":"actor-write","vaHex":"0x004db4e0","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xffdc0000 (-36px)","destHex":"0x20","immHex":"0xffdc0000","immFixed":-36.0},{"tick":58,"kind":"actor-frame","vaHex":"0x004db4e8","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=2, mode=0","spriteHex":"0x14","frame":34,"gate":2},{"tick":60,"kind":"actor-write","vaHex":"0x004db4f0","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":60,"kind":"actor-write","vaHex":"0x004db4f8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffc0000 (-4px)","destHex":"0x20","immHex":"0xfffc0000","immFixed":-4.0},{"tick":60,"kind":"actor-frame","vaHex":"0x004db500","opcode":"0x21","summary":"set sprite=0x14, frame=42, gate=2, mode=0","spriteHex":"0x14","frame":42,"gate":2},{"tick":62,"kind":"actor-write","vaHex":"0x004db508","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffc0000 (-4px)","destHex":"0x20","immHex":"0xfffc0000","immFixed":-4.0},{"tick":62,"kind":"actor-frame","vaHex":"0x004db510","opcode":"0x21","summary":"set sprite=0x14, frame=42, gate=2, mode=0","spriteHex":"0x14","frame":42,"gate":2},{"tick":64,"kind":"actor-write","vaHex":"0x004db518","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffc0000 (-4px)","destHex":"0x20","immHex":"0xfffc0000","immFixed":-4.0},{"tick":64,"kind":"actor-frame","vaHex":"0x004db520","opcode":"0x21","summary":"set sprite=0x14, frame=41, gate=2, mode=0","spriteHex":"0x14","frame":41,"gate":2},{"tick":66,"kind":"actor-frame","vaHex":"0x004db528","opcode":"0x21","summary":"set sprite=0x14, frame=40, gate=2, mode=0","spriteHex":"0x14","frame":40,"gate":2},{"tick":68,"kind":"actor-frame","vaHex":"0x004db540","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":70,"kind":"movement","vaHex":"0x004db548","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":12,"soundVaHex":"0x004db260","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db264","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db26c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db274","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":26,"soundVaHex":"0x004db2b0","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db2b4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db2bc","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db2c4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":40,"soundVaHex":"0x004db450","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db454","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db45c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db464","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":54,"soundVaHex":"0x004db4a8","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db4ac","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db4b4","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db4bc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x0d","ownerKey":"rinshan","ownerName":"린샹","skillName":"선렬각","familyName":"선렬각","skillIdHex":"0x0d","levelOrFixed":1,"targetClass":"enemy-single","mpCost":15,"hitCount":3,"frameSequence":[12,13,10,11,14,15,15,3],"expandedFrameGateSequence":[{"tick":0,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":10,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":11,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":14,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":15,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":15,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":16,"repeatLoopCount":0,"hitEventCount":3,"hitClassCounts":{"confirmed-result-hit-window":3},"effectWlkNos":[],"resultWlkNos":[3,3,4],"soundModel":"result-only","soundCalls":[{"tick":4,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db574"},{"tick":8,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db59c"},{"tick":12,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db6a4"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:rinshan:0x0d","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004db564","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-front-local-combo-inferred","casterRule":"target-front-implicit-local-combo","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has actor/display local x/y writes but no movement selector; treat as implicit close target-front combo"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 3, 4, 5, 6","0xc2 result sound count changes: 3, 4, 5, 6","frame count changes: 8, 10, 12, 13"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004db564","opcode":"0x21","summary":"set sprite=0x14, frame=12, gate=2, mode=0","spriteHex":"0x14","frame":12,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db56c","opcode":"0x21","summary":"set sprite=0x14, frame=13, gate=2, mode=0","spriteHex":"0x14","frame":13,"gate":2},{"tick":4,"kind":"result-sound","vaHex":"0x004db574","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":4,"kind":"actor-flag","vaHex":"0x004db578","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":4,"kind":"actor-flag","vaHex":"0x004db580","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":4,"kind":"wait","vaHex":"0x004db588","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":4,"kind":"actor-frame","vaHex":"0x004db58c","opcode":"0x21","summary":"set sprite=0x14, frame=10, gate=2, mode=0","spriteHex":"0x14","frame":10,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x004db594","opcode":"0x21","summary":"set sprite=0x14, frame=11, gate=2, mode=0","spriteHex":"0x14","frame":11,"gate":2},{"tick":8,"kind":"result-sound","vaHex":"0x004db59c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":8,"kind":"actor-flag","vaHex":"0x004db5a0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":8,"kind":"actor-flag","vaHex":"0x004db5a8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":8,"kind":"wait","vaHex":"0x004db5b0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":8,"kind":"actor-write","vaHex":"0x004db68c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004db694","opcode":"0x21","summary":"set sprite=0x14, frame=14, gate=2, mode=0","spriteHex":"0x14","frame":14,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004db69c","opcode":"0x21","summary":"set sprite=0x14, frame=15, gate=2, mode=0","spriteHex":"0x14","frame":15,"gate":2},{"tick":12,"kind":"result-sound","vaHex":"0x004db6a4","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x004db6a8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x004db6b0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x004db6b8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-frame","vaHex":"0x004db6bc","opcode":"0x21","summary":"set sprite=0x14, frame=15, gate=2, mode=0","spriteHex":"0x14","frame":15,"gate":2},{"tick":14,"kind":"actor-write","vaHex":"0x004db6c4","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":14,"kind":"actor-frame","vaHex":"0x004db73c","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":16,"kind":"movement","vaHex":"0x004db744","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":4,"soundVaHex":"0x004db574","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db578","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db580","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db588","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":8,"soundVaHex":"0x004db59c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db5a0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db5a8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db5b0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":12,"soundVaHex":"0x004db6a4","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db6a8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db6b0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db6b8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x0e","ownerKey":"rinshan","ownerName":"린샹","skillName":"선렬각","familyName":"선렬각","skillIdHex":"0x0e","levelOrFixed":2,"targetClass":"enemy-single","mpCost":15,"hitCount":4,"frameSequence":[12,13,10,11,14,15,12,13,13,3],"expandedFrameGateSequence":[{"tick":0,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":10,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":11,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":14,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":15,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":20,"repeatLoopCount":0,"hitEventCount":4,"hitClassCounts":{"confirmed-result-hit-window":4},"effectWlkNos":[],"resultWlkNos":[3,3,3,4],"soundModel":"result-only","soundCalls":[{"tick":4,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db574"},{"tick":8,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db59c"},{"tick":12,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db5d4"},{"tick":16,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db6e4"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:rinshan:0x0e","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004db564","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-front-local-combo-inferred","casterRule":"target-front-implicit-local-combo","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has actor/display local x/y writes but no movement selector; treat as implicit close target-front combo"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 3, 4, 5, 6","0xc2 result sound count changes: 3, 4, 5, 6","frame count changes: 8, 10, 12, 13"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004db564","opcode":"0x21","summary":"set sprite=0x14, frame=12, gate=2, mode=0","spriteHex":"0x14","frame":12,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db56c","opcode":"0x21","summary":"set sprite=0x14, frame=13, gate=2, mode=0","spriteHex":"0x14","frame":13,"gate":2},{"tick":4,"kind":"result-sound","vaHex":"0x004db574","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":4,"kind":"actor-flag","vaHex":"0x004db578","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":4,"kind":"actor-flag","vaHex":"0x004db580","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":4,"kind":"wait","vaHex":"0x004db588","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":4,"kind":"actor-frame","vaHex":"0x004db58c","opcode":"0x21","summary":"set sprite=0x14, frame=10, gate=2, mode=0","spriteHex":"0x14","frame":10,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x004db594","opcode":"0x21","summary":"set sprite=0x14, frame=11, gate=2, mode=0","spriteHex":"0x14","frame":11,"gate":2},{"tick":8,"kind":"result-sound","vaHex":"0x004db59c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":8,"kind":"actor-flag","vaHex":"0x004db5a0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":8,"kind":"actor-flag","vaHex":"0x004db5a8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":8,"kind":"wait","vaHex":"0x004db5b0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":8,"kind":"actor-write","vaHex":"0x004db5bc","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004db5c4","opcode":"0x21","summary":"set sprite=0x14, frame=14, gate=2, mode=0","spriteHex":"0x14","frame":14,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004db5cc","opcode":"0x21","summary":"set sprite=0x14, frame=15, gate=2, mode=0","spriteHex":"0x14","frame":15,"gate":2},{"tick":12,"kind":"result-sound","vaHex":"0x004db5d4","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x004db5d8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x004db5e0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x004db5e8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-write","vaHex":"0x004db5ec","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":12,"kind":"actor-frame","vaHex":"0x004db6d4","opcode":"0x21","summary":"set sprite=0x14, frame=12, gate=2, mode=0","spriteHex":"0x14","frame":12,"gate":2},{"tick":14,"kind":"actor-frame","vaHex":"0x004db6dc","opcode":"0x21","summary":"set sprite=0x14, frame=13, gate=2, mode=0","spriteHex":"0x14","frame":13,"gate":2},{"tick":16,"kind":"result-sound","vaHex":"0x004db6e4","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":16,"kind":"actor-flag","vaHex":"0x004db6e8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":16,"kind":"actor-flag","vaHex":"0x004db6f0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":16,"kind":"wait","vaHex":"0x004db6f8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":16,"kind":"actor-frame","vaHex":"0x004db6fc","opcode":"0x21","summary":"set sprite=0x14, frame=13, gate=2, mode=0","spriteHex":"0x14","frame":13,"gate":2},{"tick":18,"kind":"actor-frame","vaHex":"0x004db73c","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":20,"kind":"movement","vaHex":"0x004db744","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":4,"soundVaHex":"0x004db574","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db578","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db580","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db588","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":8,"soundVaHex":"0x004db59c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db5a0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db5a8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db5b0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":12,"soundVaHex":"0x004db5d4","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db5d8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db5e0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db5e8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":16,"soundVaHex":"0x004db6e4","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db6e8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db6f0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db6f8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x0f","ownerKey":"rinshan","ownerName":"린샹","skillName":"선렬각","familyName":"선렬각","skillIdHex":"0x0f","levelOrFixed":3,"targetClass":"enemy-single","mpCost":14,"hitCount":5,"frameSequence":[12,13,10,11,14,15,12,13,10,11,11,3],"expandedFrameGateSequence":[{"tick":0,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":10,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":11,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":14,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":15,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":10,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":11,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":11,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":24,"repeatLoopCount":0,"hitEventCount":5,"hitClassCounts":{"confirmed-result-hit-window":5},"effectWlkNos":[],"resultWlkNos":[3,3,3,3,4],"soundModel":"result-only","soundCalls":[{"tick":4,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db574"},{"tick":8,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db59c"},{"tick":12,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db5d4"},{"tick":16,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db60c"},{"tick":20,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db71c"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:rinshan:0x0f","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004db564","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-front-local-combo-inferred","casterRule":"target-front-implicit-local-combo","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has actor/display local x/y writes but no movement selector; treat as implicit close target-front combo"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 3, 4, 5, 6","0xc2 result sound count changes: 3, 4, 5, 6","frame count changes: 8, 10, 12, 13"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004db564","opcode":"0x21","summary":"set sprite=0x14, frame=12, gate=2, mode=0","spriteHex":"0x14","frame":12,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db56c","opcode":"0x21","summary":"set sprite=0x14, frame=13, gate=2, mode=0","spriteHex":"0x14","frame":13,"gate":2},{"tick":4,"kind":"result-sound","vaHex":"0x004db574","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":4,"kind":"actor-flag","vaHex":"0x004db578","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":4,"kind":"actor-flag","vaHex":"0x004db580","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":4,"kind":"wait","vaHex":"0x004db588","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":4,"kind":"actor-frame","vaHex":"0x004db58c","opcode":"0x21","summary":"set sprite=0x14, frame=10, gate=2, mode=0","spriteHex":"0x14","frame":10,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x004db594","opcode":"0x21","summary":"set sprite=0x14, frame=11, gate=2, mode=0","spriteHex":"0x14","frame":11,"gate":2},{"tick":8,"kind":"result-sound","vaHex":"0x004db59c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":8,"kind":"actor-flag","vaHex":"0x004db5a0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":8,"kind":"actor-flag","vaHex":"0x004db5a8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":8,"kind":"wait","vaHex":"0x004db5b0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":8,"kind":"actor-write","vaHex":"0x004db5bc","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004db5c4","opcode":"0x21","summary":"set sprite=0x14, frame=14, gate=2, mode=0","spriteHex":"0x14","frame":14,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004db5cc","opcode":"0x21","summary":"set sprite=0x14, frame=15, gate=2, mode=0","spriteHex":"0x14","frame":15,"gate":2},{"tick":12,"kind":"result-sound","vaHex":"0x004db5d4","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x004db5d8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x004db5e0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x004db5e8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-write","vaHex":"0x004db5ec","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":12,"kind":"actor-frame","vaHex":"0x004db5fc","opcode":"0x21","summary":"set sprite=0x14, frame=12, gate=2, mode=0","spriteHex":"0x14","frame":12,"gate":2},{"tick":14,"kind":"actor-frame","vaHex":"0x004db604","opcode":"0x21","summary":"set sprite=0x14, frame=13, gate=2, mode=0","spriteHex":"0x14","frame":13,"gate":2},{"tick":16,"kind":"result-sound","vaHex":"0x004db60c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":16,"kind":"actor-flag","vaHex":"0x004db610","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":16,"kind":"actor-flag","vaHex":"0x004db618","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":16,"kind":"wait","vaHex":"0x004db620","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":16,"kind":"actor-frame","vaHex":"0x004db70c","opcode":"0x21","summary":"set sprite=0x14, frame=10, gate=2, mode=0","spriteHex":"0x14","frame":10,"gate":2},{"tick":18,"kind":"actor-frame","vaHex":"0x004db714","opcode":"0x21","summary":"set sprite=0x14, frame=11, gate=2, mode=0","spriteHex":"0x14","frame":11,"gate":2},{"tick":20,"kind":"result-sound","vaHex":"0x004db71c","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":20,"kind":"actor-flag","vaHex":"0x004db720","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":20,"kind":"actor-flag","vaHex":"0x004db728","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":20,"kind":"wait","vaHex":"0x004db730","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":20,"kind":"actor-frame","vaHex":"0x004db734","opcode":"0x21","summary":"set sprite=0x14, frame=11, gate=2, mode=0","spriteHex":"0x14","frame":11,"gate":2},{"tick":22,"kind":"actor-frame","vaHex":"0x004db73c","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":24,"kind":"movement","vaHex":"0x004db744","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":4,"soundVaHex":"0x004db574","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db578","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db580","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db588","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":8,"soundVaHex":"0x004db59c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db5a0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db5a8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db5b0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":12,"soundVaHex":"0x004db5d4","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db5d8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db5e0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db5e8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":16,"soundVaHex":"0x004db60c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db610","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db618","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db620","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":20,"soundVaHex":"0x004db71c","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db720","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db728","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db730","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x10","ownerKey":"rinshan","ownerName":"린샹","skillName":"선렬각","familyName":"선렬각","skillIdHex":"0x10","levelOrFixed":4,"targetClass":"enemy-single","mpCost":12,"hitCount":6,"frameSequence":[12,13,10,11,14,15,12,13,10,11,12,13,3],"expandedFrameGateSequence":[{"tick":0,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":10,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":11,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":14,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":15,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":10,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":11,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":26,"repeatLoopCount":0,"hitEventCount":6,"hitClassCounts":{"confirmed-result-hit-window":6},"effectWlkNos":[],"resultWlkNos":[3,3,3,3,3,5],"soundModel":"result-only","soundCalls":[{"tick":4,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db574"},{"tick":8,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db59c"},{"tick":12,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db5d4"},{"tick":16,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db60c"},{"tick":20,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db63c"},{"tick":24,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db66c"}],"helperIds":[110],"helperFacts":[{"helperId":110,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004bad54","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004bad88","frames":["173@2","174@2","175@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-id-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:rinshan:0x10","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004db564","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-pierce-motion","casterRule":"target-front-then-pierce","startAnchor":"target-front","motionKind":"pierce","motionTarget":"target-through","positionConfidence":"high","positionBucket":"pierce","positionBucketLabel":"관통","battleMapPlacementSummary":"대상 기준선을 지나 화면 반대쪽으로 관통한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["selector 2 occurs after a hit/target-front phase; actor pierces through from target-front"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 3, 4, 5, 6","0xc2 result sound count changes: 3, 4, 5, 6","frame count changes: 8, 10, 12, 13"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004db564","opcode":"0x21","summary":"set sprite=0x14, frame=12, gate=2, mode=0","spriteHex":"0x14","frame":12,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db56c","opcode":"0x21","summary":"set sprite=0x14, frame=13, gate=2, mode=0","spriteHex":"0x14","frame":13,"gate":2},{"tick":4,"kind":"result-sound","vaHex":"0x004db574","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":4,"kind":"actor-flag","vaHex":"0x004db578","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":4,"kind":"actor-flag","vaHex":"0x004db580","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":4,"kind":"wait","vaHex":"0x004db588","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":4,"kind":"actor-frame","vaHex":"0x004db58c","opcode":"0x21","summary":"set sprite=0x14, frame=10, gate=2, mode=0","spriteHex":"0x14","frame":10,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x004db594","opcode":"0x21","summary":"set sprite=0x14, frame=11, gate=2, mode=0","spriteHex":"0x14","frame":11,"gate":2},{"tick":8,"kind":"result-sound","vaHex":"0x004db59c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":8,"kind":"actor-flag","vaHex":"0x004db5a0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":8,"kind":"actor-flag","vaHex":"0x004db5a8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":8,"kind":"wait","vaHex":"0x004db5b0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":8,"kind":"actor-write","vaHex":"0x004db5bc","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004db5c4","opcode":"0x21","summary":"set sprite=0x14, frame=14, gate=2, mode=0","spriteHex":"0x14","frame":14,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004db5cc","opcode":"0x21","summary":"set sprite=0x14, frame=15, gate=2, mode=0","spriteHex":"0x14","frame":15,"gate":2},{"tick":12,"kind":"result-sound","vaHex":"0x004db5d4","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x004db5d8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x004db5e0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x004db5e8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-write","vaHex":"0x004db5ec","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":12,"kind":"actor-frame","vaHex":"0x004db5fc","opcode":"0x21","summary":"set sprite=0x14, frame=12, gate=2, mode=0","spriteHex":"0x14","frame":12,"gate":2},{"tick":14,"kind":"actor-frame","vaHex":"0x004db604","opcode":"0x21","summary":"set sprite=0x14, frame=13, gate=2, mode=0","spriteHex":"0x14","frame":13,"gate":2},{"tick":16,"kind":"result-sound","vaHex":"0x004db60c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":16,"kind":"actor-flag","vaHex":"0x004db610","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":16,"kind":"actor-flag","vaHex":"0x004db618","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":16,"kind":"wait","vaHex":"0x004db620","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":16,"kind":"actor-frame","vaHex":"0x004db62c","opcode":"0x21","summary":"set sprite=0x14, frame=10, gate=2, mode=0","spriteHex":"0x14","frame":10,"gate":2},{"tick":18,"kind":"actor-frame","vaHex":"0x004db634","opcode":"0x21","summary":"set sprite=0x14, frame=11, gate=2, mode=0","spriteHex":"0x14","frame":11,"gate":2},{"tick":20,"kind":"result-sound","vaHex":"0x004db63c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":20,"kind":"actor-flag","vaHex":"0x004db640","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":20,"kind":"actor-flag","vaHex":"0x004db648","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":20,"kind":"wait","vaHex":"0x004db650","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":20,"kind":"actor-frame","vaHex":"0x004db654","opcode":"0x21","summary":"set sprite=0x14, frame=12, gate=2, mode=0","spriteHex":"0x14","frame":12,"gate":2},{"tick":22,"kind":"movement","vaHex":"0x004db65c","opcode":"0xbc","summary":"interpolated child motion mode=4, selector=2, stepDivisor=4: one target-side edge placement; side depends on actor kind.","selector":2,"divisor":4,"movementMode":4},{"tick":22,"kind":"actor-frame","vaHex":"0x004db660","opcode":"0x21","summary":"set sprite=0x14, frame=13, gate=2, mode=0","spriteHex":"0x14","frame":13,"gate":2},{"tick":24,"kind":"helper-call","vaHex":"0x004db668","opcode":"0xbd","summary":"helper-call id=110; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":110},{"tick":24,"kind":"result-sound","vaHex":"0x004db66c","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":24,"kind":"actor-flag","vaHex":"0x004db670","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":24,"kind":"actor-flag","vaHex":"0x004db678","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":24,"kind":"wait","vaHex":"0x004db680","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":24,"kind":"actor-frame","vaHex":"0x004db73c","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":26,"kind":"movement","vaHex":"0x004db744","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":4,"soundVaHex":"0x004db574","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db578","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db580","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db588","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":8,"soundVaHex":"0x004db59c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db5a0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db5a8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db5b0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":12,"soundVaHex":"0x004db5d4","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db5d8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db5e0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db5e8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":16,"soundVaHex":"0x004db60c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db610","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db618","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db620","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":20,"soundVaHex":"0x004db63c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db640","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db648","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db650","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":24,"soundVaHex":"0x004db66c","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db670","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db678","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db680","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x11","ownerKey":"rinshan","ownerName":"린샹","skillName":"열화폭염권","familyName":"열화폭염권","skillIdHex":"0x11","levelOrFixed":1,"targetClass":"enemy-single","mpCost":12,"hitCount":1,"frameSequence":[22,23,23,3],"expandedFrameGateSequence":[{"tick":0,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":23,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":12,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[7],"resultWlkNos":[5],"soundModel":"effect+result","soundCalls":[{"tick":4,"opcode":"0x24","wlkNo":7,"effectArgsHex":"01 00 07","role":"effect/cast cue","vaHex":"0x004db7ec"},{"tick":4,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db7f4"}],"helperIds":[55],"helperFacts":[{"helperId":55,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":9,"directSpawnFrames":["119@0","119@4","119@8","119@12","119@16","119@20","119@24","119@28","119@32"],"emitFrames":[119],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 9 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"ranged-projectile-or-beam","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"개인기지만 target-front가 아니라 수평 거리에서 helper/effect를 쏘는 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:rinshan:0x11","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004db784","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-ranged-engine-effect","casterRule":"caster-ranged-effect","startAnchor":"enemy-ranged","motionKind":"cast/projectile","motionTarget":"target","positionConfidence":"medium","positionBucket":"enemy-ranged","positionBucketLabel":"떨어져서 쏨","battleMapPlacementSummary":"몬스터 바로 앞이 아니라 수평 거리를 둔 원거리 시전으로 처리한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has helper/effect cues without caster movement/write; treat as ranged cast/effect"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 4, 5, 6, 8, effect WLK count: 1, 2, 3, 5"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004db784","opcode":"0x21","summary":"set sprite=0x14, frame=22, gate=2, mode=0","spriteHex":"0x14","frame":22,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db78c","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=2, mode=0","spriteHex":"0x14","frame":23,"gate":2},{"tick":4,"kind":"effect-sound","vaHex":"0x004db7ec","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 07; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":7,"effectArgsHex":"01 00 07"},{"tick":4,"kind":"helper-call","vaHex":"0x004db7f0","opcode":"0xbd","summary":"helper-call id=55; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":55},{"tick":4,"kind":"result-sound","vaHex":"0x004db7f4","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":4,"kind":"actor-flag","vaHex":"0x004db7f8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":4,"kind":"actor-flag","vaHex":"0x004db800","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":4,"kind":"wait","vaHex":"0x004db808","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":4,"kind":"actor-frame","vaHex":"0x004db80c","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=6, mode=0","spriteHex":"0x14","frame":23,"gate":6},{"tick":10,"kind":"actor-frame","vaHex":"0x004db814","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":4,"soundVaHex":"0x004db7f4","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db7f8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db800","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db808","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:ranged-projectile-or-beam","sound:effect+result","helper:randomized-child-spawn-stream"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x12","ownerKey":"rinshan","ownerName":"린샹","skillName":"열화폭염권","familyName":"열화폭염권","skillIdHex":"0x12","levelOrFixed":2,"targetClass":"enemy-single","mpCost":12,"hitCount":1,"frameSequence":[22,23,23,23,3],"expandedFrameGateSequence":[{"tick":0,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":23,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":23,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":18,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[7,7],"resultWlkNos":[5],"soundModel":"effect+result","soundCalls":[{"tick":4,"opcode":"0x24","wlkNo":7,"effectArgsHex":"01 00 07","role":"effect/cast cue","vaHex":"0x004db79c"},{"tick":10,"opcode":"0x24","wlkNo":7,"effectArgsHex":"01 00 07","role":"effect/cast cue","vaHex":"0x004db7ec"},{"tick":10,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db7f4"}],"helperIds":[56,55],"helperFacts":[{"helperId":56,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":9,"directSpawnFrames":["119@0","119@4","119@8","119@12","119@16","119@20","119@24","119@28","119@32"],"emitFrames":[119],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 9 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]},{"helperId":55,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":9,"directSpawnFrames":["119@0","119@4","119@8","119@12","119@16","119@20","119@24","119@28","119@32"],"emitFrames":[119],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 9 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"ranged-projectile-or-beam","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"개인기지만 target-front가 아니라 수평 거리에서 helper/effect를 쏘는 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:rinshan:0x12","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004db784","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-ranged-engine-effect","casterRule":"caster-ranged-effect","startAnchor":"enemy-ranged","motionKind":"cast/projectile","motionTarget":"target","positionConfidence":"medium","positionBucket":"enemy-ranged","positionBucketLabel":"떨어져서 쏨","battleMapPlacementSummary":"몬스터 바로 앞이 아니라 수평 거리를 둔 원거리 시전으로 처리한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has helper/effect cues without caster movement/write; treat as ranged cast/effect"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 4, 5, 6, 8, effect WLK count: 1, 2, 3, 5"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004db784","opcode":"0x21","summary":"set sprite=0x14, frame=22, gate=2, mode=0","spriteHex":"0x14","frame":22,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db78c","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=2, mode=0","spriteHex":"0x14","frame":23,"gate":2},{"tick":4,"kind":"effect-sound","vaHex":"0x004db79c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 07; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":7,"effectArgsHex":"01 00 07"},{"tick":4,"kind":"helper-call","vaHex":"0x004db7a0","opcode":"0xbd","summary":"helper-call id=56; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":56},{"tick":4,"kind":"actor-frame","vaHex":"0x004db7a4","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=6, mode=0","spriteHex":"0x14","frame":23,"gate":6},{"tick":10,"kind":"effect-sound","vaHex":"0x004db7ec","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 07; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":7,"effectArgsHex":"01 00 07"},{"tick":10,"kind":"helper-call","vaHex":"0x004db7f0","opcode":"0xbd","summary":"helper-call id=55; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":55},{"tick":10,"kind":"result-sound","vaHex":"0x004db7f4","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":10,"kind":"actor-flag","vaHex":"0x004db7f8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x004db800","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x004db808","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-frame","vaHex":"0x004db80c","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=6, mode=0","spriteHex":"0x14","frame":23,"gate":6},{"tick":16,"kind":"actor-frame","vaHex":"0x004db814","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":10,"soundVaHex":"0x004db7f4","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db7f8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db800","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db808","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:ranged-projectile-or-beam","sound:effect+result","helper:randomized-child-spawn-stream"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x13","ownerKey":"rinshan","ownerName":"린샹","skillName":"열화폭염권","familyName":"열화폭염권","skillIdHex":"0x13","levelOrFixed":3,"targetClass":"enemy-single","mpCost":11,"hitCount":1,"frameSequence":[22,23,23,23,23,3],"expandedFrameGateSequence":[{"tick":0,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":23,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":23,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":23,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":24,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[7,7,7],"resultWlkNos":[5],"soundModel":"effect+result","soundCalls":[{"tick":4,"opcode":"0x24","wlkNo":7,"effectArgsHex":"01 00 07","role":"effect/cast cue","vaHex":"0x004db79c"},{"tick":10,"opcode":"0x24","wlkNo":7,"effectArgsHex":"01 00 07","role":"effect/cast cue","vaHex":"0x004db7b4"},{"tick":16,"opcode":"0x24","wlkNo":7,"effectArgsHex":"01 00 07","role":"effect/cast cue","vaHex":"0x004db7ec"},{"tick":16,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db7f4"}],"helperIds":[56,56,55],"helperFacts":[{"helperId":56,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":9,"directSpawnFrames":["119@0","119@4","119@8","119@12","119@16","119@20","119@24","119@28","119@32"],"emitFrames":[119],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 9 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]},{"helperId":56,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":9,"directSpawnFrames":["119@0","119@4","119@8","119@12","119@16","119@20","119@24","119@28","119@32"],"emitFrames":[119],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 9 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]},{"helperId":55,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":9,"directSpawnFrames":["119@0","119@4","119@8","119@12","119@16","119@20","119@24","119@28","119@32"],"emitFrames":[119],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 9 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"ranged-projectile-or-beam","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"개인기지만 target-front가 아니라 수평 거리에서 helper/effect를 쏘는 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:rinshan:0x13","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004db784","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-ranged-engine-effect","casterRule":"caster-ranged-effect","startAnchor":"enemy-ranged","motionKind":"cast/projectile","motionTarget":"target","positionConfidence":"medium","positionBucket":"enemy-ranged","positionBucketLabel":"떨어져서 쏨","battleMapPlacementSummary":"몬스터 바로 앞이 아니라 수평 거리를 둔 원거리 시전으로 처리한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has helper/effect cues without caster movement/write; treat as ranged cast/effect"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 4, 5, 6, 8, effect WLK count: 1, 2, 3, 5"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004db784","opcode":"0x21","summary":"set sprite=0x14, frame=22, gate=2, mode=0","spriteHex":"0x14","frame":22,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db78c","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=2, mode=0","spriteHex":"0x14","frame":23,"gate":2},{"tick":4,"kind":"effect-sound","vaHex":"0x004db79c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 07; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":7,"effectArgsHex":"01 00 07"},{"tick":4,"kind":"helper-call","vaHex":"0x004db7a0","opcode":"0xbd","summary":"helper-call id=56; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":56},{"tick":4,"kind":"actor-frame","vaHex":"0x004db7a4","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=6, mode=0","spriteHex":"0x14","frame":23,"gate":6},{"tick":10,"kind":"effect-sound","vaHex":"0x004db7b4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 07; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":7,"effectArgsHex":"01 00 07"},{"tick":10,"kind":"helper-call","vaHex":"0x004db7b8","opcode":"0xbd","summary":"helper-call id=56; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":56},{"tick":10,"kind":"actor-frame","vaHex":"0x004db7bc","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=6, mode=0","spriteHex":"0x14","frame":23,"gate":6},{"tick":16,"kind":"effect-sound","vaHex":"0x004db7ec","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 07; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":7,"effectArgsHex":"01 00 07"},{"tick":16,"kind":"helper-call","vaHex":"0x004db7f0","opcode":"0xbd","summary":"helper-call id=55; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":55},{"tick":16,"kind":"result-sound","vaHex":"0x004db7f4","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":16,"kind":"actor-flag","vaHex":"0x004db7f8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":16,"kind":"actor-flag","vaHex":"0x004db800","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":16,"kind":"wait","vaHex":"0x004db808","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":16,"kind":"actor-frame","vaHex":"0x004db80c","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=6, mode=0","spriteHex":"0x14","frame":23,"gate":6},{"tick":22,"kind":"actor-frame","vaHex":"0x004db814","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":16,"soundVaHex":"0x004db7f4","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db7f8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db800","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db808","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:ranged-projectile-or-beam","sound:effect+result","helper:randomized-child-spawn-stream"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x14","ownerKey":"rinshan","ownerName":"린샹","skillName":"열화폭염권","familyName":"열화폭염권","skillIdHex":"0x14","levelOrFixed":4,"targetClass":"enemy-single","mpCost":10,"hitCount":1,"frameSequence":[22,23,23,23,23,23,23,3],"expandedFrameGateSequence":[{"tick":0,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":23,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":23,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":23,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":23,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":32,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[7,7,7,7,7],"resultWlkNos":[5],"soundModel":"effect+result","soundCalls":[{"tick":4,"opcode":"0x24","wlkNo":7,"effectArgsHex":"01 00 07","role":"effect/cast cue","vaHex":"0x004db79c"},{"tick":10,"opcode":"0x24","wlkNo":7,"effectArgsHex":"01 00 07","role":"effect/cast cue","vaHex":"0x004db7b4"},{"tick":16,"opcode":"0x24","wlkNo":7,"effectArgsHex":"01 00 07","role":"effect/cast cue","vaHex":"0x004db7cc"},{"tick":22,"opcode":"0x24","wlkNo":7,"effectArgsHex":"01 00 07","role":"effect/cast cue","vaHex":"0x004db7dc"},{"tick":24,"opcode":"0x24","wlkNo":7,"effectArgsHex":"01 00 07","role":"effect/cast cue","vaHex":"0x004db7ec"},{"tick":24,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db7f4"}],"helperIds":[56,56,56,56,55],"helperFacts":[{"helperId":56,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":9,"directSpawnFrames":["119@0","119@4","119@8","119@12","119@16","119@20","119@24","119@28","119@32"],"emitFrames":[119],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 9 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]},{"helperId":56,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":9,"directSpawnFrames":["119@0","119@4","119@8","119@12","119@16","119@20","119@24","119@28","119@32"],"emitFrames":[119],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 9 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]},{"helperId":56,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":9,"directSpawnFrames":["119@0","119@4","119@8","119@12","119@16","119@20","119@24","119@28","119@32"],"emitFrames":[119],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 9 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]},{"helperId":56,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":9,"directSpawnFrames":["119@0","119@4","119@8","119@12","119@16","119@20","119@24","119@28","119@32"],"emitFrames":[119],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 9 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]},{"helperId":55,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":9,"directSpawnFrames":["119@0","119@4","119@8","119@12","119@16","119@20","119@24","119@28","119@32"],"emitFrames":[119],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 9 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"ranged-projectile-or-beam","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"개인기지만 target-front가 아니라 수평 거리에서 helper/effect를 쏘는 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:rinshan:0x14","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004db784","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-ranged-engine-effect","casterRule":"caster-ranged-effect","startAnchor":"enemy-ranged","motionKind":"cast/projectile","motionTarget":"target","positionConfidence":"medium","positionBucket":"enemy-ranged","positionBucketLabel":"떨어져서 쏨","battleMapPlacementSummary":"몬스터 바로 앞이 아니라 수평 거리를 둔 원거리 시전으로 처리한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has helper/effect cues without caster movement/write; treat as ranged cast/effect"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 4, 5, 6, 8, effect WLK count: 1, 2, 3, 5"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004db784","opcode":"0x21","summary":"set sprite=0x14, frame=22, gate=2, mode=0","spriteHex":"0x14","frame":22,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db78c","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=2, mode=0","spriteHex":"0x14","frame":23,"gate":2},{"tick":4,"kind":"effect-sound","vaHex":"0x004db79c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 07; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":7,"effectArgsHex":"01 00 07"},{"tick":4,"kind":"helper-call","vaHex":"0x004db7a0","opcode":"0xbd","summary":"helper-call id=56; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":56},{"tick":4,"kind":"actor-frame","vaHex":"0x004db7a4","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=6, mode=0","spriteHex":"0x14","frame":23,"gate":6},{"tick":10,"kind":"effect-sound","vaHex":"0x004db7b4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 07; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":7,"effectArgsHex":"01 00 07"},{"tick":10,"kind":"helper-call","vaHex":"0x004db7b8","opcode":"0xbd","summary":"helper-call id=56; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":56},{"tick":10,"kind":"actor-frame","vaHex":"0x004db7bc","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=6, mode=0","spriteHex":"0x14","frame":23,"gate":6},{"tick":16,"kind":"effect-sound","vaHex":"0x004db7cc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 07; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":7,"effectArgsHex":"01 00 07"},{"tick":16,"kind":"helper-call","vaHex":"0x004db7d0","opcode":"0xbd","summary":"helper-call id=56; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":56},{"tick":16,"kind":"actor-frame","vaHex":"0x004db7d4","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=6, mode=0","spriteHex":"0x14","frame":23,"gate":6},{"tick":22,"kind":"effect-sound","vaHex":"0x004db7dc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 07; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":7,"effectArgsHex":"01 00 07"},{"tick":22,"kind":"helper-call","vaHex":"0x004db7e0","opcode":"0xbd","summary":"helper-call id=56; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":56},{"tick":22,"kind":"actor-frame","vaHex":"0x004db7e4","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=2, mode=0","spriteHex":"0x14","frame":23,"gate":2},{"tick":24,"kind":"effect-sound","vaHex":"0x004db7ec","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 07; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":7,"effectArgsHex":"01 00 07"},{"tick":24,"kind":"helper-call","vaHex":"0x004db7f0","opcode":"0xbd","summary":"helper-call id=55; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":55},{"tick":24,"kind":"result-sound","vaHex":"0x004db7f4","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":24,"kind":"actor-flag","vaHex":"0x004db7f8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":24,"kind":"actor-flag","vaHex":"0x004db800","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":24,"kind":"wait","vaHex":"0x004db808","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":24,"kind":"actor-frame","vaHex":"0x004db80c","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=6, mode=0","spriteHex":"0x14","frame":23,"gate":6},{"tick":30,"kind":"actor-frame","vaHex":"0x004db814","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":24,"soundVaHex":"0x004db7f4","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db7f8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db800","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db808","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:ranged-projectile-or-beam","sound:effect+result","helper:randomized-child-spawn-stream"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x15","ownerKey":"rinshan","ownerName":"린샹","skillName":"암각·영상승룡파","familyName":"암각·영상승룡파","skillIdHex":"0x15","levelOrFixed":1,"targetClass":"enemy-single","mpCost":30,"hitCount":3,"frameSequence":[33,34,38,39,39,39,3],"expandedFrameGateSequence":[{"tick":0,"frame":33,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":34,"gate":16,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":38,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":39,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":39,"gate":1,"repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"frame":39,"gate":1,"repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":25,"repeatLoopCount":1,"hitEventCount":3,"hitClassCounts":{"confirmed-result-hit-window":3},"effectWlkNos":[21],"resultWlkNos":[3],"soundModel":"effect+result","soundCalls":[{"tick":18,"opcode":"0x24","wlkNo":21,"effectArgsHex":"01 00 15","role":"effect/cast cue","vaHex":"0x004db868"},{"tick":21,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db8ac"},{"tick":22,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db8ac"},{"tick":23,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db8ac"}],"helperIds":[95],"helperFacts":[{"helperId":95,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":17,"directSpawnFrames":["186@0","186@2","186@4","186@6","186@8","186@10","186@12","186@14","186@16","186@18","186@20","186@22","186@24","186@26","186@28","186@30","186@32"],"emitFrames":[186],"rootCounterSets":{"0x90":0},"rootBranches":[{"vaHex":"0x004b96c8","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b96c4","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b96c4","targetSnippet":[{"vaHex":"0x004b96c4","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b96c8","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b96c4"},{"vaHex":"0x004b96d4","opcode":"0x42","category":"parent-actor","summary":"set parent actor pointer from this display object's actor slot"},{"vaHex":"0x004b96d8","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"},{"vaHex":"0x004b96e0","opcode":"0x00","category":"destroy/end","summary":"destroy/free display object candidate"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 17 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:rinshan:0x15","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004db828","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-front-direct-placement","casterRule":"target-front-direct","startAnchor":"target-front","motionKind":"teleport","motionTarget":"target-front","positionConfidence":"high","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 3 fixes the actor at target-front before frames"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 3, 4, 5, 10","0xc2 result sound count changes: 1, 2, 3, 4","frame count changes: 5, 6, 7, 8","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004db828","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-write","vaHex":"0x004db82c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004db834","opcode":"0x21","summary":"set sprite=0x14, frame=33, gate=2, mode=0","spriteHex":"0x14","frame":33,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db83c","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=16, mode=0","spriteHex":"0x14","frame":34,"gate":16},{"tick":18,"kind":"actor-write","vaHex":"0x004db844","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":18,"kind":"helper-call","vaHex":"0x004db864","opcode":"0xbd","summary":"helper-call id=95; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":95},{"tick":18,"kind":"effect-sound","vaHex":"0x004db868","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 21; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":21,"effectArgsHex":"01 00 15"},{"tick":18,"kind":"actor-frame","vaHex":"0x004db89c","opcode":"0x21","summary":"set sprite=0x14, frame=38, gate=2, mode=0","spriteHex":"0x14","frame":38,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x004db8a4","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1},{"tick":21,"kind":"result-sound","vaHex":"0x004db8ac","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":21,"kind":"actor-flag","vaHex":"0x004db8b0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":21,"kind":"actor-flag","vaHex":"0x004db8b8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":21,"kind":"wait","vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":21,"kind":"repeat-loop","vaHex":"0x004db8c4","opcode":"0x06","summary":"repeat-loop count=3, target=0x004db8a4; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x004db8a4","repeatCount":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004db8a4","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1,"repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"result-sound","vaHex":"0x004db8ac","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"actor-flag","vaHex":"0x004db8b0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"actor-flag","vaHex":"0x004db8b8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"wait","vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"actor-frame","vaHex":"0x004db8a4","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1,"repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"result-sound","vaHex":"0x004db8ac","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"actor-flag","vaHex":"0x004db8b0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"actor-flag","vaHex":"0x004db8b8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"wait","vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"actor-write","vaHex":"0x004db94c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":23,"kind":"actor-frame","vaHex":"0x004db954","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":25,"kind":"movement","vaHex":"0x004db95c","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":21,"soundVaHex":"0x004db8ac","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db8b0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db8b8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":22,"soundVaHex":"0x004db8ac","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db8b0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db8b8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"soundVaHex":"0x004db8ac","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db8b0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db8b8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","repeat-loop-expanded","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:effect+result","helper:randomized-child-spawn-stream","helper-root-counters"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x16","ownerKey":"rinshan","ownerName":"린샹","skillName":"암각·영상승룡파","familyName":"암각·영상승룡파","skillIdHex":"0x16","levelOrFixed":2,"targetClass":"enemy-single","mpCost":30,"hitCount":4,"frameSequence":[33,34,38,39,39,39,39,3],"expandedFrameGateSequence":[{"tick":0,"frame":33,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":34,"gate":16,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":38,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":39,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":39,"gate":1,"repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"frame":39,"gate":1,"repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"frame":39,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":26,"repeatLoopCount":1,"hitEventCount":4,"hitClassCounts":{"confirmed-result-hit-window":4},"effectWlkNos":[21],"resultWlkNos":[3,3],"soundModel":"effect+result","soundCalls":[{"tick":18,"opcode":"0x24","wlkNo":21,"effectArgsHex":"01 00 15","role":"effect/cast cue","vaHex":"0x004db878"},{"tick":21,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db8ac"},{"tick":22,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db8ac"},{"tick":23,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db8ac"},{"tick":24,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db8dc"}],"helperIds":[96],"helperFacts":[{"helperId":96,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":7,"directSpawnFrames":["184@0","186@1","186@2","186@3","186@4","186@5","186@6"],"emitFrames":[184,186],"rootCounterSets":{"0x90":0,"0x92":0,"0x94":6,"0x96":5},"rootBranches":[{"vaHex":"0x004b98c0","fieldHex":"0x8e","role":"burst-spawn-while-current-counter-nonzero","targetVaHex":"0x004b9858","condition":"word conditional branch local-backward-loop if left:display.word[+0x8e] != right:imm.word=0x0000 -> 0x004b9858","targetSnippet":[{"vaHex":"0x004b9858","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b94ac into +0x58"},{"vaHex":"0x004b9860","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b9864","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b9868","opcode":"0x2b","category":"random-range","summary":"rng(range=6) -> +0x58"},{"vaHex":"0x004b986c","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00030000 (3px)"},{"vaHex":"0x004b9874","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00090000 (9px)"},{"vaHex":"0x004b987c","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b9880","opcode":"0x12","category":"write","summary":"add display/actor field +0x1c, source +0x58, mode=0xe1"}]},{"vaHex":"0x004b98d4","fieldHex":"0x96","role":"outer-repeat-step-while-repeat-counter-nonzero","targetVaHex":"0x004b9850","condition":"word conditional branch local-backward-loop if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004b9850","targetSnippet":[{"vaHex":"0x004b9850","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b9854","opcode":"0x11","category":"child-write","summary":"display/child field +0x8e, source +0x94, mode=0xa0"},{"vaHex":"0x004b9858","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b94ac into +0x58"},{"vaHex":"0x004b9860","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b9864","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b9868","opcode":"0x2b","category":"random-range","summary":"rng(range=6) -> +0x58"},{"vaHex":"0x004b986c","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00030000 (3px)"},{"vaHex":"0x004b9874","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00090000 (9px)"}]}],"childMotionLoops":[],"interpretation":["+0x94 raw 6 acts as burst/current-counter seed for +0x8e","+0x96 raw 5 acts as outer repeat counter","root op14 on +0x8e keeps spawning child pieces inside the current burst","root op14 on +0x96 yields one VM tick, reseeds +0x8e from +0x94, then emits another burst","static direct-spawn expansion currently exposes 7 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:rinshan:0x16","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004db828","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-front-direct-placement","casterRule":"target-front-direct","startAnchor":"target-front","motionKind":"teleport","motionTarget":"target-front","positionConfidence":"high","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 3 fixes the actor at target-front before frames"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 3, 4, 5, 10","0xc2 result sound count changes: 1, 2, 3, 4","frame count changes: 5, 6, 7, 8","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004db828","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-write","vaHex":"0x004db82c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004db834","opcode":"0x21","summary":"set sprite=0x14, frame=33, gate=2, mode=0","spriteHex":"0x14","frame":33,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db83c","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=16, mode=0","spriteHex":"0x14","frame":34,"gate":16},{"tick":18,"kind":"actor-write","vaHex":"0x004db844","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":18,"kind":"helper-call","vaHex":"0x004db874","opcode":"0xbd","summary":"helper-call id=96; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":96},{"tick":18,"kind":"effect-sound","vaHex":"0x004db878","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 21; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":21,"effectArgsHex":"01 00 15"},{"tick":18,"kind":"actor-frame","vaHex":"0x004db89c","opcode":"0x21","summary":"set sprite=0x14, frame=38, gate=2, mode=0","spriteHex":"0x14","frame":38,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x004db8a4","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1},{"tick":21,"kind":"result-sound","vaHex":"0x004db8ac","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":21,"kind":"actor-flag","vaHex":"0x004db8b0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":21,"kind":"actor-flag","vaHex":"0x004db8b8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":21,"kind":"wait","vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":21,"kind":"repeat-loop","vaHex":"0x004db8c4","opcode":"0x06","summary":"repeat-loop count=3, target=0x004db8a4; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x004db8a4","repeatCount":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004db8a4","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1,"repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"result-sound","vaHex":"0x004db8ac","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"actor-flag","vaHex":"0x004db8b0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"actor-flag","vaHex":"0x004db8b8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"wait","vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"actor-frame","vaHex":"0x004db8a4","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1,"repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"result-sound","vaHex":"0x004db8ac","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"actor-flag","vaHex":"0x004db8b0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"actor-flag","vaHex":"0x004db8b8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"wait","vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"actor-frame","vaHex":"0x004db8d4","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1},{"tick":24,"kind":"result-sound","vaHex":"0x004db8dc","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":24,"kind":"actor-flag","vaHex":"0x004db8e0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":24,"kind":"actor-flag","vaHex":"0x004db8e8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":24,"kind":"wait","vaHex":"0x004db8f0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":24,"kind":"actor-write","vaHex":"0x004db94c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":24,"kind":"actor-frame","vaHex":"0x004db954","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":26,"kind":"movement","vaHex":"0x004db95c","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":21,"soundVaHex":"0x004db8ac","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db8b0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db8b8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":22,"soundVaHex":"0x004db8ac","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db8b0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db8b8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"soundVaHex":"0x004db8ac","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db8b0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db8b8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":24,"soundVaHex":"0x004db8dc","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db8e0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db8e8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db8f0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","repeat-loop-expanded","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:effect+result","helper:randomized-child-spawn-stream","helper-root-counters"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x17","ownerKey":"rinshan","ownerName":"린샹","skillName":"암각·영상승룡파","familyName":"암각·영상승룡파","skillIdHex":"0x17","levelOrFixed":3,"targetClass":"enemy-single","mpCost":27,"hitCount":5,"frameSequence":[33,34,38,39,39,39,39,39,3],"expandedFrameGateSequence":[{"tick":0,"frame":33,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":34,"gate":16,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":38,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":39,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":39,"gate":1,"repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"frame":39,"gate":1,"repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"frame":39,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":39,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":25,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":27,"repeatLoopCount":1,"hitEventCount":5,"hitClassCounts":{"confirmed-result-hit-window":5},"effectWlkNos":[21],"resultWlkNos":[3,3,3],"soundModel":"effect+result","soundCalls":[{"tick":18,"opcode":"0x24","wlkNo":21,"effectArgsHex":"01 00 15","role":"effect/cast cue","vaHex":"0x004db888"},{"tick":21,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db8ac"},{"tick":22,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db8ac"},{"tick":23,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db8ac"},{"tick":24,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db8dc"},{"tick":25,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db904"}],"helperIds":[97],"helperFacts":[{"helperId":97,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":9,"directSpawnFrames":["184@0","187@1","187@2","187@3","187@4","187@5","187@6","187@7","187@8"],"emitFrames":[184,187],"rootCounterSets":{"0x90":0,"0x92":0,"0x94":8,"0x96":6},"rootBranches":[{"vaHex":"0x004b9b84","fieldHex":"0x8e","role":"burst-spawn-while-current-counter-nonzero","targetVaHex":"0x004b9b1c","condition":"word conditional branch local-backward-loop if left:display.word[+0x8e] != right:imm.word=0x0000 -> 0x004b9b1c","targetSnippet":[{"vaHex":"0x004b9b1c","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b94f0 into +0x58"},{"vaHex":"0x004b9b24","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b9b28","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b9b2c","opcode":"0x2b","category":"random-range","summary":"rng(range=8) -> +0x58"},{"vaHex":"0x004b9b30","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00030000 (3px)"},{"vaHex":"0x004b9b38","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x000c0000 (12px)"},{"vaHex":"0x004b9b40","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b9b44","opcode":"0x12","category":"write","summary":"add display/actor field +0x1c, source +0x58, mode=0xe1"}]},{"vaHex":"0x004b9b98","fieldHex":"0x96","role":"outer-repeat-step-while-repeat-counter-nonzero","targetVaHex":"0x004b9b14","condition":"word conditional branch local-backward-loop if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004b9b14","targetSnippet":[{"vaHex":"0x004b9b14","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b9b18","opcode":"0x11","category":"child-write","summary":"display/child field +0x8e, source +0x94, mode=0xa0"},{"vaHex":"0x004b9b1c","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b94f0 into +0x58"},{"vaHex":"0x004b9b24","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b9b28","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b9b2c","opcode":"0x2b","category":"random-range","summary":"rng(range=8) -> +0x58"},{"vaHex":"0x004b9b30","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00030000 (3px)"},{"vaHex":"0x004b9b38","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x000c0000 (12px)"}]}],"childMotionLoops":[{"scope":"spawn.1 0x004b93e0","role":"child-motion-loop-until-phase-counter-zero","targetVaHex":"0x004b9254","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b9254","motionSteps":[{"vaHex":"0x004b9260","opcode":"0x2d","category":"motion-step","summary":"absolute base + trig motion step mode=0x09 axes=x","modeHex":"0x09","axes":["x"],"modeGroupHex":"0x08","modeLowNibble":"0x9","operation":"not","operandClass":"source-field","modeSemantics":"not(source-field)","modeConfidence":"confirmed"}],"targetSnippet":[{"vaHex":"0x004b9254","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b9258","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b925c","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x8e, mode=0xa1"},{"vaHex":"0x004b9260","opcode":"0x2d","category":"motion-step","summary":"absolute base + trig motion step mode=0x09 axes=x"},{"vaHex":"0x004b9264","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.y +0x20 < 0x01e00000; target 0x004b927c"},{"vaHex":"0x004b9270","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.y +0x20 < 0xff800000; target 0x004b92a0"},{"vaHex":"0x004b927c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b9284","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b9254"},{"vaHex":"0x004b9290","opcode":"0x12","category":"write","summary":"add display/actor field +0x58, imm=0x00000001 (1.52588e-05px)"},{"vaHex":"0x004b9298","opcode":"0x03","category":"jump","summary":"jump 0x004b91d8"}]},{"scope":"spawn.2 0x004b94f0","role":"child-motion-loop-until-phase-counter-zero","targetVaHex":"0x004b9254","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b9254","motionSteps":[{"vaHex":"0x004b9260","opcode":"0x2d","category":"motion-step","summary":"absolute base + trig motion step mode=0x09 axes=x","modeHex":"0x09","axes":["x"],"modeGroupHex":"0x08","modeLowNibble":"0x9","operation":"not","operandClass":"source-field","modeSemantics":"not(source-field)","modeConfidence":"confirmed"}],"targetSnippet":[{"vaHex":"0x004b9254","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b9258","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b925c","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x8e, mode=0xa1"},{"vaHex":"0x004b9260","opcode":"0x2d","category":"motion-step","summary":"absolute base + trig motion step mode=0x09 axes=x"},{"vaHex":"0x004b9264","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.y +0x20 < 0x01e00000; target 0x004b927c"},{"vaHex":"0x004b9270","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.y +0x20 < 0xff800000; target 0x004b92a0"},{"vaHex":"0x004b927c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b9284","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b9254"},{"vaHex":"0x004b9290","opcode":"0x12","category":"write","summary":"add display/actor field +0x58, imm=0x00000001 (1.52588e-05px)"},{"vaHex":"0x004b9298","opcode":"0x03","category":"jump","summary":"jump 0x004b91d8"}]}],"interpretation":["+0x94 raw 8 acts as burst/current-counter seed for +0x8e","+0x96 raw 6 acts as outer repeat counter","root op14 on +0x8e keeps spawning child pieces inside the current burst","root op14 on +0x96 yields one VM tick, reseeds +0x8e from +0x94, then emits another burst","spawned child scripts have their own +0x90 phase loop around opcode 0x2d motion-step","static direct-spawn expansion currently exposes 9 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:rinshan:0x17","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004db828","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-front-direct-placement","casterRule":"target-front-direct","startAnchor":"target-front","motionKind":"teleport","motionTarget":"target-front","positionConfidence":"high","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 3 fixes the actor at target-front before frames"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 3, 4, 5, 10","0xc2 result sound count changes: 1, 2, 3, 4","frame count changes: 5, 6, 7, 8","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004db828","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-write","vaHex":"0x004db82c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004db834","opcode":"0x21","summary":"set sprite=0x14, frame=33, gate=2, mode=0","spriteHex":"0x14","frame":33,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db83c","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=16, mode=0","spriteHex":"0x14","frame":34,"gate":16},{"tick":18,"kind":"actor-write","vaHex":"0x004db844","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":18,"kind":"helper-call","vaHex":"0x004db884","opcode":"0xbd","summary":"helper-call id=97; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":97},{"tick":18,"kind":"effect-sound","vaHex":"0x004db888","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 21; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":21,"effectArgsHex":"01 00 15"},{"tick":18,"kind":"actor-frame","vaHex":"0x004db89c","opcode":"0x21","summary":"set sprite=0x14, frame=38, gate=2, mode=0","spriteHex":"0x14","frame":38,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x004db8a4","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1},{"tick":21,"kind":"result-sound","vaHex":"0x004db8ac","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":21,"kind":"actor-flag","vaHex":"0x004db8b0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":21,"kind":"actor-flag","vaHex":"0x004db8b8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":21,"kind":"wait","vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":21,"kind":"repeat-loop","vaHex":"0x004db8c4","opcode":"0x06","summary":"repeat-loop count=3, target=0x004db8a4; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x004db8a4","repeatCount":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004db8a4","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1,"repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"result-sound","vaHex":"0x004db8ac","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"actor-flag","vaHex":"0x004db8b0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"actor-flag","vaHex":"0x004db8b8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"wait","vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"actor-frame","vaHex":"0x004db8a4","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1,"repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"result-sound","vaHex":"0x004db8ac","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"actor-flag","vaHex":"0x004db8b0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"actor-flag","vaHex":"0x004db8b8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"wait","vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"actor-frame","vaHex":"0x004db8d4","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1},{"tick":24,"kind":"result-sound","vaHex":"0x004db8dc","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":24,"kind":"actor-flag","vaHex":"0x004db8e0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":24,"kind":"actor-flag","vaHex":"0x004db8e8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":24,"kind":"wait","vaHex":"0x004db8f0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":24,"kind":"actor-frame","vaHex":"0x004db8fc","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1},{"tick":25,"kind":"result-sound","vaHex":"0x004db904","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":25,"kind":"actor-flag","vaHex":"0x004db908","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":25,"kind":"actor-flag","vaHex":"0x004db910","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":25,"kind":"wait","vaHex":"0x004db918","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":25,"kind":"actor-write","vaHex":"0x004db94c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":25,"kind":"actor-frame","vaHex":"0x004db954","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":27,"kind":"movement","vaHex":"0x004db95c","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":21,"soundVaHex":"0x004db8ac","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db8b0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db8b8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":22,"soundVaHex":"0x004db8ac","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db8b0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db8b8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"soundVaHex":"0x004db8ac","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db8b0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db8b8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":24,"soundVaHex":"0x004db8dc","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db8e0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db8e8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db8f0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":25,"soundVaHex":"0x004db904","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db908","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db910","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db918","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","repeat-loop-expanded","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:effect+result","helper:randomized-child-spawn-stream","helper-child-motion-loop","helper-root-counters"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x18","ownerKey":"rinshan","ownerName":"린샹","skillName":"암각·영상승룡파","familyName":"암각·영상승룡파","skillIdHex":"0x18","levelOrFixed":4,"targetClass":"enemy-single","mpCost":24,"hitCount":10,"frameSequence":[33,34,38,39,39,39,39,39,39,39,39,39,39,3],"expandedFrameGateSequence":[{"tick":0,"frame":33,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":34,"gate":16,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":38,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":39,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":39,"gate":1,"repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"frame":39,"gate":1,"repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"frame":39,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":39,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":25,"frame":39,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":39,"gate":1,"repeatIteration":1,"repeatSourceVaHex":"0x004db944"},{"tick":27,"frame":39,"gate":1,"repeatIteration":2,"repeatSourceVaHex":"0x004db944"},{"tick":28,"frame":39,"gate":1,"repeatIteration":3,"repeatSourceVaHex":"0x004db944"},{"tick":29,"frame":39,"gate":1,"repeatIteration":4,"repeatSourceVaHex":"0x004db944"},{"tick":30,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":32,"repeatLoopCount":2,"hitEventCount":10,"hitClassCounts":{"confirmed-result-hit-window":10},"effectWlkNos":[21],"resultWlkNos":[3,3,3,3],"soundModel":"effect+result","soundCalls":[{"tick":18,"opcode":"0x24","wlkNo":21,"effectArgsHex":"01 00 15","role":"effect/cast cue","vaHex":"0x004db898"},{"tick":21,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db8ac"},{"tick":22,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db8ac"},{"tick":23,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db8ac"},{"tick":24,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db8dc"},{"tick":25,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db904"},{"tick":26,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db92c"},{"tick":27,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db92c"},{"tick":28,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db92c"},{"tick":29,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db92c"},{"tick":30,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db92c"}],"helperIds":[98],"helperFacts":[{"helperId":98,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":13,"directSpawnFrames":["185@0","188@1","188@2","188@3","188@4","188@5","188@6","188@7","188@8","188@9","188@10","188@11","188@12"],"emitFrames":[185,188],"rootCounterSets":{"0x90":0,"0x92":0,"0x94":8,"0x96":12},"rootBranches":[{"vaHex":"0x004b9e48","fieldHex":"0x8e","role":"burst-spawn-while-current-counter-nonzero","targetVaHex":"0x004b9de0","condition":"word conditional branch local-backward-loop if left:display.word[+0x8e] != right:imm.word=0x0000 -> 0x004b9de0","targetSnippet":[{"vaHex":"0x004b9de0","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b9534 into +0x58"},{"vaHex":"0x004b9de8","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b9dec","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b9df0","opcode":"0x2b","category":"random-range","summary":"rng(range=8) -> +0x58"},{"vaHex":"0x004b9df4","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00040000 (4px)"},{"vaHex":"0x004b9dfc","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00100000 (16px)"},{"vaHex":"0x004b9e04","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b9e08","opcode":"0x12","category":"write","summary":"add display/actor field +0x1c, source +0x58, mode=0xe1"}]},{"vaHex":"0x004b9e5c","fieldHex":"0x96","role":"outer-repeat-step-while-repeat-counter-nonzero","targetVaHex":"0x004b9dd8","condition":"word conditional branch local-backward-loop if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004b9dd8","targetSnippet":[{"vaHex":"0x004b9dd8","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b9ddc","opcode":"0x11","category":"child-write","summary":"display/child field +0x8e, source +0x94, mode=0xa0"},{"vaHex":"0x004b9de0","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b9534 into +0x58"},{"vaHex":"0x004b9de8","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b9dec","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b9df0","opcode":"0x2b","category":"random-range","summary":"rng(range=8) -> +0x58"},{"vaHex":"0x004b9df4","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00040000 (4px)"},{"vaHex":"0x004b9dfc","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00100000 (16px)"}]}],"childMotionLoops":[{"scope":"spawn.1 0x004b9424","role":"child-motion-loop-until-phase-counter-zero","targetVaHex":"0x004b9340","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b9340","motionSteps":[{"vaHex":"0x004b934c","opcode":"0x2d","category":"motion-step","summary":"absolute base + trig motion step mode=0x09 axes=x","modeHex":"0x09","axes":["x"],"modeGroupHex":"0x08","modeLowNibble":"0x9","operation":"not","operandClass":"source-field","modeSemantics":"not(source-field)","modeConfidence":"confirmed"}],"targetSnippet":[{"vaHex":"0x004b9340","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b9344","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b9348","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x8e, mode=0xa1"},{"vaHex":"0x004b934c","opcode":"0x2d","category":"motion-step","summary":"absolute base + trig motion step mode=0x09 axes=x"},{"vaHex":"0x004b9350","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.y +0x20 < 0x01e00000; target 0x004b9368"},{"vaHex":"0x004b935c","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.y +0x20 < 0xff800000; target 0x004b938c"},{"vaHex":"0x004b9368","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b9370","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b9340"},{"vaHex":"0x004b937c","opcode":"0x12","category":"write","summary":"add display/actor field +0x58, imm=0x00000001 (1.52588e-05px)"},{"vaHex":"0x004b9384","opcode":"0x03","category":"jump","summary":"jump 0x004b92c4"}]},{"scope":"spawn.2 0x004b9534","role":"child-motion-loop-until-phase-counter-zero","targetVaHex":"0x004b9340","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b9340","motionSteps":[{"vaHex":"0x004b934c","opcode":"0x2d","category":"motion-step","summary":"absolute base + trig motion step mode=0x09 axes=x","modeHex":"0x09","axes":["x"],"modeGroupHex":"0x08","modeLowNibble":"0x9","operation":"not","operandClass":"source-field","modeSemantics":"not(source-field)","modeConfidence":"confirmed"}],"targetSnippet":[{"vaHex":"0x004b9340","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b9344","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b9348","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x8e, mode=0xa1"},{"vaHex":"0x004b934c","opcode":"0x2d","category":"motion-step","summary":"absolute base + trig motion step mode=0x09 axes=x"},{"vaHex":"0x004b9350","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.y +0x20 < 0x01e00000; target 0x004b9368"},{"vaHex":"0x004b935c","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.y +0x20 < 0xff800000; target 0x004b938c"},{"vaHex":"0x004b9368","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b9370","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b9340"},{"vaHex":"0x004b937c","opcode":"0x12","category":"write","summary":"add display/actor field +0x58, imm=0x00000001 (1.52588e-05px)"},{"vaHex":"0x004b9384","opcode":"0x03","category":"jump","summary":"jump 0x004b92c4"}]}],"interpretation":["+0x94 raw 8 acts as burst/current-counter seed for +0x8e","+0x96 raw 12 acts as outer repeat counter","root op14 on +0x8e keeps spawning child pieces inside the current burst","root op14 on +0x96 yields one VM tick, reseeds +0x8e from +0x94, then emits another burst","spawned child scripts have their own +0x90 phase loop around opcode 0x2d motion-step","static direct-spawn expansion currently exposes 13 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:rinshan:0x18","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004db828","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-front-direct-placement","casterRule":"target-front-direct","startAnchor":"target-front","motionKind":"teleport","motionTarget":"target-front","positionConfidence":"high","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 3 fixes the actor at target-front before frames"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 3, 4, 5, 10","0xc2 result sound count changes: 1, 2, 3, 4","frame count changes: 5, 6, 7, 8","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004db828","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-write","vaHex":"0x004db82c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004db834","opcode":"0x21","summary":"set sprite=0x14, frame=33, gate=2, mode=0","spriteHex":"0x14","frame":33,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db83c","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=16, mode=0","spriteHex":"0x14","frame":34,"gate":16},{"tick":18,"kind":"actor-write","vaHex":"0x004db844","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":18,"kind":"helper-call","vaHex":"0x004db894","opcode":"0xbd","summary":"helper-call id=98; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":98},{"tick":18,"kind":"effect-sound","vaHex":"0x004db898","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 21; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":21,"effectArgsHex":"01 00 15"},{"tick":18,"kind":"actor-frame","vaHex":"0x004db89c","opcode":"0x21","summary":"set sprite=0x14, frame=38, gate=2, mode=0","spriteHex":"0x14","frame":38,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x004db8a4","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1},{"tick":21,"kind":"result-sound","vaHex":"0x004db8ac","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":21,"kind":"actor-flag","vaHex":"0x004db8b0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":21,"kind":"actor-flag","vaHex":"0x004db8b8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":21,"kind":"wait","vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":21,"kind":"repeat-loop","vaHex":"0x004db8c4","opcode":"0x06","summary":"repeat-loop count=3, target=0x004db8a4; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x004db8a4","repeatCount":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004db8a4","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1,"repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"result-sound","vaHex":"0x004db8ac","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"actor-flag","vaHex":"0x004db8b0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"actor-flag","vaHex":"0x004db8b8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"wait","vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"actor-frame","vaHex":"0x004db8a4","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1,"repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"result-sound","vaHex":"0x004db8ac","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"actor-flag","vaHex":"0x004db8b0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"actor-flag","vaHex":"0x004db8b8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"wait","vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"actor-frame","vaHex":"0x004db8d4","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1},{"tick":24,"kind":"result-sound","vaHex":"0x004db8dc","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":24,"kind":"actor-flag","vaHex":"0x004db8e0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":24,"kind":"actor-flag","vaHex":"0x004db8e8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":24,"kind":"wait","vaHex":"0x004db8f0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":24,"kind":"actor-frame","vaHex":"0x004db8fc","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1},{"tick":25,"kind":"result-sound","vaHex":"0x004db904","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":25,"kind":"actor-flag","vaHex":"0x004db908","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":25,"kind":"actor-flag","vaHex":"0x004db910","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":25,"kind":"wait","vaHex":"0x004db918","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":25,"kind":"actor-frame","vaHex":"0x004db924","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1},{"tick":26,"kind":"result-sound","vaHex":"0x004db92c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":26,"kind":"actor-flag","vaHex":"0x004db930","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":26,"kind":"actor-flag","vaHex":"0x004db938","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":26,"kind":"wait","vaHex":"0x004db940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":26,"kind":"repeat-loop","vaHex":"0x004db944","opcode":"0x06","summary":"repeat-loop count=5, target=0x004db924; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x004db924","repeatCount":5},{"tick":26,"kind":"actor-frame","vaHex":"0x004db924","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1,"repeatIteration":1,"repeatSourceVaHex":"0x004db944"},{"tick":27,"kind":"result-sound","vaHex":"0x004db92c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"repeatIteration":1,"repeatSourceVaHex":"0x004db944"},{"tick":27,"kind":"actor-flag","vaHex":"0x004db930","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":1,"repeatSourceVaHex":"0x004db944"},{"tick":27,"kind":"actor-flag","vaHex":"0x004db938","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":1,"repeatSourceVaHex":"0x004db944"},{"tick":27,"kind":"wait","vaHex":"0x004db940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":1,"repeatSourceVaHex":"0x004db944"},{"tick":27,"kind":"actor-frame","vaHex":"0x004db924","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1,"repeatIteration":2,"repeatSourceVaHex":"0x004db944"},{"tick":28,"kind":"result-sound","vaHex":"0x004db92c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"repeatIteration":2,"repeatSourceVaHex":"0x004db944"},{"tick":28,"kind":"actor-flag","vaHex":"0x004db930","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":2,"repeatSourceVaHex":"0x004db944"},{"tick":28,"kind":"actor-flag","vaHex":"0x004db938","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":2,"repeatSourceVaHex":"0x004db944"},{"tick":28,"kind":"wait","vaHex":"0x004db940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":2,"repeatSourceVaHex":"0x004db944"},{"tick":28,"kind":"actor-frame","vaHex":"0x004db924","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1,"repeatIteration":3,"repeatSourceVaHex":"0x004db944"},{"tick":29,"kind":"result-sound","vaHex":"0x004db92c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"repeatIteration":3,"repeatSourceVaHex":"0x004db944"},{"tick":29,"kind":"actor-flag","vaHex":"0x004db930","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":3,"repeatSourceVaHex":"0x004db944"},{"tick":29,"kind":"actor-flag","vaHex":"0x004db938","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":3,"repeatSourceVaHex":"0x004db944"},{"tick":29,"kind":"wait","vaHex":"0x004db940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":3,"repeatSourceVaHex":"0x004db944"},{"tick":29,"kind":"actor-frame","vaHex":"0x004db924","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1,"repeatIteration":4,"repeatSourceVaHex":"0x004db944"},{"tick":30,"kind":"result-sound","vaHex":"0x004db92c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"repeatIteration":4,"repeatSourceVaHex":"0x004db944"},{"tick":30,"kind":"actor-flag","vaHex":"0x004db930","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":4,"repeatSourceVaHex":"0x004db944"},{"tick":30,"kind":"actor-flag","vaHex":"0x004db938","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":4,"repeatSourceVaHex":"0x004db944"},{"tick":30,"kind":"wait","vaHex":"0x004db940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":4,"repeatSourceVaHex":"0x004db944"},{"tick":30,"kind":"actor-write","vaHex":"0x004db94c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":30,"kind":"actor-frame","vaHex":"0x004db954","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":32,"kind":"movement","vaHex":"0x004db95c","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":21,"soundVaHex":"0x004db8ac","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db8b0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db8b8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":22,"soundVaHex":"0x004db8ac","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db8b0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db8b8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"soundVaHex":"0x004db8ac","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db8b0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db8b8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":24,"soundVaHex":"0x004db8dc","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db8e0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db8e8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db8f0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":25,"soundVaHex":"0x004db904","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db908","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db910","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db918","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":26,"soundVaHex":"0x004db92c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db930","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db938","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":27,"soundVaHex":"0x004db92c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db930","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db938","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":1,"repeatSourceVaHex":"0x004db944"},{"tick":28,"soundVaHex":"0x004db92c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db930","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db938","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":2,"repeatSourceVaHex":"0x004db944"},{"tick":29,"soundVaHex":"0x004db92c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db930","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db938","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":3,"repeatSourceVaHex":"0x004db944"},{"tick":30,"soundVaHex":"0x004db92c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db930","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db938","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":4,"repeatSourceVaHex":"0x004db944"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","repeat-loop-expanded","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:effect+result","helper:randomized-child-spawn-stream","helper-child-motion-loop","helper-root-counters"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x19","ownerKey":"rinshan","ownerName":"린샹","skillName":"빙조권","familyName":"display-table fallback","skillIdHex":"0x19","levelOrFixed":null,"targetClass":"enemy-single","mpCost":12,"hitCount":1,"frameSequence":[33,34,38,39,39,39,39,39,39,39,39,39,39,3],"expandedFrameGateSequence":[{"tick":0,"frame":33,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":34,"gate":16,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":38,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":39,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":39,"gate":1,"repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"frame":39,"gate":1,"repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"frame":39,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":39,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":25,"frame":39,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":39,"gate":1,"repeatIteration":1,"repeatSourceVaHex":"0x004db944"},{"tick":27,"frame":39,"gate":1,"repeatIteration":2,"repeatSourceVaHex":"0x004db944"},{"tick":28,"frame":39,"gate":1,"repeatIteration":3,"repeatSourceVaHex":"0x004db944"},{"tick":29,"frame":39,"gate":1,"repeatIteration":4,"repeatSourceVaHex":"0x004db944"},{"tick":30,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":32,"repeatLoopCount":2,"hitEventCount":10,"hitClassCounts":{"confirmed-result-hit-window":10},"effectWlkNos":[21],"resultWlkNos":[3,3,3,3],"soundModel":"effect+result","soundCalls":[{"tick":18,"opcode":"0x24","wlkNo":21,"effectArgsHex":"01 00 15","role":"effect/cast cue","vaHex":"0x004db868"},{"tick":21,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db8ac"},{"tick":22,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db8ac"},{"tick":23,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db8ac"},{"tick":24,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db8dc"},{"tick":25,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db904"},{"tick":26,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db92c"},{"tick":27,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db92c"},{"tick":28,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db92c"},{"tick":29,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db92c"},{"tick":30,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004db92c"}],"helperIds":[95],"helperFacts":[{"helperId":95,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":17,"directSpawnFrames":["186@0","186@2","186@4","186@6","186@8","186@10","186@12","186@14","186@16","186@18","186@20","186@22","186@24","186@26","186@28","186@30","186@32"],"emitFrames":[186],"rootCounterSets":{"0x90":0},"rootBranches":[{"vaHex":"0x004b96c8","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b96c4","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b96c4","targetSnippet":[{"vaHex":"0x004b96c4","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b96c8","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b96c4"},{"vaHex":"0x004b96d4","opcode":"0x42","category":"parent-actor","summary":"set parent actor pointer from this display object's actor slot"},{"vaHex":"0x004b96d8","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"},{"vaHex":"0x004b96e0","opcode":"0x00","category":"destroy/end","summary":"destroy/free display object candidate"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 17 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:rinshan:0x19","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004db828","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-front-direct-placement","casterRule":"target-front-direct","startAnchor":"target-front","motionKind":"teleport","motionTarget":"target-front","positionConfidence":"high","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 3 fixes the actor at target-front before frames"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 4, 4, 4, 13, 6, 6, 6, 8, 6, 6, 34, 6, 3, 8, 1, effect WLK count: 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 7, 1, 0, 1, 0"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004db828","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-write","vaHex":"0x004db82c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004db834","opcode":"0x21","summary":"set sprite=0x14, frame=33, gate=2, mode=0","spriteHex":"0x14","frame":33,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db83c","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=16, mode=0","spriteHex":"0x14","frame":34,"gate":16},{"tick":18,"kind":"actor-write","vaHex":"0x004db844","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":18,"kind":"helper-call","vaHex":"0x004db864","opcode":"0xbd","summary":"helper-call id=95; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":95},{"tick":18,"kind":"effect-sound","vaHex":"0x004db868","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 21; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":21,"effectArgsHex":"01 00 15"},{"tick":18,"kind":"actor-frame","vaHex":"0x004db89c","opcode":"0x21","summary":"set sprite=0x14, frame=38, gate=2, mode=0","spriteHex":"0x14","frame":38,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x004db8a4","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1},{"tick":21,"kind":"result-sound","vaHex":"0x004db8ac","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":21,"kind":"actor-flag","vaHex":"0x004db8b0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":21,"kind":"actor-flag","vaHex":"0x004db8b8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":21,"kind":"wait","vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":21,"kind":"repeat-loop","vaHex":"0x004db8c4","opcode":"0x06","summary":"repeat-loop count=3, target=0x004db8a4; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x004db8a4","repeatCount":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004db8a4","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1,"repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"result-sound","vaHex":"0x004db8ac","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"actor-flag","vaHex":"0x004db8b0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"actor-flag","vaHex":"0x004db8b8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"wait","vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":22,"kind":"actor-frame","vaHex":"0x004db8a4","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1,"repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"result-sound","vaHex":"0x004db8ac","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"actor-flag","vaHex":"0x004db8b0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"actor-flag","vaHex":"0x004db8b8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"wait","vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"kind":"actor-frame","vaHex":"0x004db8d4","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1},{"tick":24,"kind":"result-sound","vaHex":"0x004db8dc","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":24,"kind":"actor-flag","vaHex":"0x004db8e0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":24,"kind":"actor-flag","vaHex":"0x004db8e8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":24,"kind":"wait","vaHex":"0x004db8f0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":24,"kind":"actor-frame","vaHex":"0x004db8fc","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1},{"tick":25,"kind":"result-sound","vaHex":"0x004db904","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":25,"kind":"actor-flag","vaHex":"0x004db908","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":25,"kind":"actor-flag","vaHex":"0x004db910","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":25,"kind":"wait","vaHex":"0x004db918","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":25,"kind":"actor-frame","vaHex":"0x004db924","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1},{"tick":26,"kind":"result-sound","vaHex":"0x004db92c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":26,"kind":"actor-flag","vaHex":"0x004db930","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":26,"kind":"actor-flag","vaHex":"0x004db938","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":26,"kind":"wait","vaHex":"0x004db940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":26,"kind":"repeat-loop","vaHex":"0x004db944","opcode":"0x06","summary":"repeat-loop count=5, target=0x004db924; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x004db924","repeatCount":5},{"tick":26,"kind":"actor-frame","vaHex":"0x004db924","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1,"repeatIteration":1,"repeatSourceVaHex":"0x004db944"},{"tick":27,"kind":"result-sound","vaHex":"0x004db92c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"repeatIteration":1,"repeatSourceVaHex":"0x004db944"},{"tick":27,"kind":"actor-flag","vaHex":"0x004db930","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":1,"repeatSourceVaHex":"0x004db944"},{"tick":27,"kind":"actor-flag","vaHex":"0x004db938","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":1,"repeatSourceVaHex":"0x004db944"},{"tick":27,"kind":"wait","vaHex":"0x004db940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":1,"repeatSourceVaHex":"0x004db944"},{"tick":27,"kind":"actor-frame","vaHex":"0x004db924","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1,"repeatIteration":2,"repeatSourceVaHex":"0x004db944"},{"tick":28,"kind":"result-sound","vaHex":"0x004db92c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"repeatIteration":2,"repeatSourceVaHex":"0x004db944"},{"tick":28,"kind":"actor-flag","vaHex":"0x004db930","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":2,"repeatSourceVaHex":"0x004db944"},{"tick":28,"kind":"actor-flag","vaHex":"0x004db938","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":2,"repeatSourceVaHex":"0x004db944"},{"tick":28,"kind":"wait","vaHex":"0x004db940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":2,"repeatSourceVaHex":"0x004db944"},{"tick":28,"kind":"actor-frame","vaHex":"0x004db924","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1,"repeatIteration":3,"repeatSourceVaHex":"0x004db944"},{"tick":29,"kind":"result-sound","vaHex":"0x004db92c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"repeatIteration":3,"repeatSourceVaHex":"0x004db944"},{"tick":29,"kind":"actor-flag","vaHex":"0x004db930","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":3,"repeatSourceVaHex":"0x004db944"},{"tick":29,"kind":"actor-flag","vaHex":"0x004db938","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":3,"repeatSourceVaHex":"0x004db944"},{"tick":29,"kind":"wait","vaHex":"0x004db940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":3,"repeatSourceVaHex":"0x004db944"},{"tick":29,"kind":"actor-frame","vaHex":"0x004db924","opcode":"0x21","summary":"set sprite=0x14, frame=39, gate=1, mode=0","spriteHex":"0x14","frame":39,"gate":1,"repeatIteration":4,"repeatSourceVaHex":"0x004db944"},{"tick":30,"kind":"result-sound","vaHex":"0x004db92c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"repeatIteration":4,"repeatSourceVaHex":"0x004db944"},{"tick":30,"kind":"actor-flag","vaHex":"0x004db930","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c","repeatIteration":4,"repeatSourceVaHex":"0x004db944"},{"tick":30,"kind":"actor-flag","vaHex":"0x004db938","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008","repeatIteration":4,"repeatSourceVaHex":"0x004db944"},{"tick":30,"kind":"wait","vaHex":"0x004db940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing","repeatIteration":4,"repeatSourceVaHex":"0x004db944"},{"tick":30,"kind":"actor-write","vaHex":"0x004db94c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":30,"kind":"actor-frame","vaHex":"0x004db954","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":32,"kind":"movement","vaHex":"0x004db95c","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":21,"soundVaHex":"0x004db8ac","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db8b0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db8b8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":22,"soundVaHex":"0x004db8ac","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db8b0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db8b8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":1,"repeatSourceVaHex":"0x004db8c4"},{"tick":23,"soundVaHex":"0x004db8ac","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db8b0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db8b8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db8c0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":2,"repeatSourceVaHex":"0x004db8c4"},{"tick":24,"soundVaHex":"0x004db8dc","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db8e0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db8e8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db8f0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":25,"soundVaHex":"0x004db904","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db908","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db910","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db918","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":26,"soundVaHex":"0x004db92c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db930","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db938","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":27,"soundVaHex":"0x004db92c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db930","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db938","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":1,"repeatSourceVaHex":"0x004db944"},{"tick":28,"soundVaHex":"0x004db92c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db930","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db938","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":2,"repeatSourceVaHex":"0x004db944"},{"tick":29,"soundVaHex":"0x004db92c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db930","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db938","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":3,"repeatSourceVaHex":"0x004db944"},{"tick":30,"soundVaHex":"0x004db92c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004db930","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db938","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db940","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window","repeatIteration":4,"repeatSourceVaHex":"0x004db944"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","repeat-loop-expanded","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:effect+result","helper:randomized-child-spawn-stream","helper-root-counters"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x1a","ownerKey":"rinshan","ownerName":"린샹","skillName":"흑영권","familyName":"display-table fallback","skillIdHex":"0x1a","levelOrFixed":null,"targetClass":"enemy-single","mpCost":8,"hitCount":1,"frameSequence":[6,7,8,9,9,3],"expandedFrameGateSequence":[{"tick":0,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":7,"gate":16,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":8,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":9,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":9,"gate":14,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":42,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":44,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[18],"resultWlkNos":[8],"soundModel":"effect+result","soundCalls":[{"tick":18,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004db984"},{"tick":28,"opcode":"0xc2","wlkNo":8,"normalWlkNo":8,"altWlkNo":8,"mode":1,"role":"skill-specific result cue","vaHex":"0x004db9b0"}],"helperIds":[70,77],"helperFacts":[{"helperId":70,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b77a4","startTick":0,"durationGate":43,"stopReason":"loop at 0x004b784c","frames":["124@2","125@2","126@2","127@2","128@2","129@2","124@2","125@2","126@2","127@2","128@2","129@2","124@2","125@2","126@2","127@2","128@2","129@2","124@2","125@2","126@2","127@1"],"frameCount":22,"loopEvents":[{"tick":43,"targetVaHex":"0x004b784c","repeatCount":null,"vaHex":"0x004b7854"}],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{"0x96":2},"rootBranches":[{"vaHex":"0x004b76dc","fieldHex":"0x96","role":"outer-repeat-step-while-repeat-counter-nonzero","targetVaHex":"0x004b76bc","condition":"word conditional branch local-backward-loop if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004b76bc","targetSnippet":[{"vaHex":"0x004b76bc","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b76c0","opcode":"0x12","category":"write","summary":"sub display/actor field +0x20, imm=0x00020000 (2px)"},{"vaHex":"0x004b76c8","opcode":"0x06","category":"repeat-loop","summary":"repeat-loop count=4, target=0x004b76bc; handler stores target in object +0x3c and counter in +0x60"},{"vaHex":"0x004b76d0","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:display.byte[+0xe7] add= source:imm.byte=0x01"},{"vaHex":"0x004b76d4","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b76dc","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004b76bc"},{"vaHex":"0x004b76e8","opcode":"0x02","category":"countdown-wait","summary":"countdown wait frames=16"},{"vaHex":"0x004b76ec","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x80, mode=0xa0"}]},{"vaHex":"0x004b76f4","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b7710","condition":"conditional branch motion.dx +0x74 >= 0x80000000; target 0x004b7710","targetSnippet":[{"vaHex":"0x004b7710","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b7714","opcode":"0x12","category":"write","summary":"div display/actor field +0x74, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b771c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b7720","opcode":"0x12","category":"write","summary":"set display/actor field +0x78, source +0x84, mode=0xa0"},{"vaHex":"0x004b7724","opcode":"0x12","category":"write","summary":"sub display/actor field +0x78, imm=0x00400000 (64px)"},{"vaHex":"0x004b772c","opcode":"0x12","category":"write","summary":"sub display/actor field +0x78, source +0x20, mode=0xa2"},{"vaHex":"0x004b7730","opcode":"0x15","category":"conditional-branch","summary":"conditional branch motion.dy +0x78 >= 0x80000000; target 0x004b774c"},{"vaHex":"0x004b773c","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000008 (0.00012207px)"}]},{"vaHex":"0x004b7730","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b774c","condition":"conditional branch motion.dy +0x78 >= 0x80000000; target 0x004b774c","targetSnippet":[{"vaHex":"0x004b774c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b7750","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b7758","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b775c","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000002 (3.05176e-05px), mode=0x80"},{"vaHex":"0x004b7764","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b7768","opcode":"0x12","category":"write","summary":"add display/actor field +0x20, imm=0x00080000 (8px)"},{"vaHex":"0x004b7770","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b7774","opcode":"0x06","category":"repeat-loop","summary":"repeat-loop count=4, target=0x004b7764; handler stores target in object +0x3c and counter in +0x60"}]},{"vaHex":"0x004b7788","fieldHex":"0x96","role":"outer-repeat-step-while-repeat-counter-nonzero","targetVaHex":"0x004b7764","condition":"word conditional branch local-backward-loop if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004b7764","targetSnippet":[{"vaHex":"0x004b7764","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b7768","opcode":"0x12","category":"write","summary":"add display/actor field +0x20, imm=0x00080000 (8px)"},{"vaHex":"0x004b7770","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b7774","opcode":"0x06","category":"repeat-loop","summary":"repeat-loop count=4, target=0x004b7764; handler stores target in object +0x3c and counter in +0x60"},{"vaHex":"0x004b777c","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:display.byte[+0xe7] sub= source:imm.byte=0x01"},{"vaHex":"0x004b7780","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b7788","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004b7764"},{"vaHex":"0x004b7794","opcode":"0x42","category":"parent-actor","summary":"set parent actor pointer from this display object's actor slot"}]}],"childMotionLoops":[],"interpretation":["+0x96 raw 2 acts as outer repeat counter","root op14 on +0x96 yields one VM tick, reseeds +0x8e from +0x94, then emits another burst"],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":77,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":3,"directSpawnFrames":["137@0","137@0","137@0"],"emitFrames":[137],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[{"scope":"spawn.1 0x004b7ef8","role":"child-motion-loop-until-phase-counter-zero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","motionSteps":[],"targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"},{"vaHex":"0x004b5238","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00040000 (4px)"},{"vaHex":"0x004b5240","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x58, mode=0xe0"}]},{"scope":"spawn.2 0x004b7ef8","role":"child-motion-loop-until-phase-counter-zero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","motionSteps":[],"targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"},{"vaHex":"0x004b5238","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00040000 (4px)"},{"vaHex":"0x004b5240","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x58, mode=0xe0"}]},{"scope":"spawn.3 0x004b7ef8","role":"child-motion-loop-until-phase-counter-zero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","motionSteps":[],"targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"},{"vaHex":"0x004b5238","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00040000 (4px)"},{"vaHex":"0x004b5240","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x58, mode=0xe0"}]}],"interpretation":["spawned child scripts have their own +0x90 phase loop around opcode 0x2d motion-step","static direct-spawn expansion currently exposes 3 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"ranged-projectile-or-beam","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"개인기지만 target-front가 아니라 수평 거리에서 helper/effect를 쏘는 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:rinshan:0x1a","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004db96c","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-ranged-caster-effect","casterRule":"target-front-implicit-local-combo","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has actor/display local x/y writes but no movement selector; treat as implicit close target-front combo","helper/effect cues are attached effects, not enough by themselves to classify the caster as ranged"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 4, 4, 4, 13, 6, 6, 6, 8, 6, 6, 34, 6, 3, 8, 1, effect WLK count: 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 7, 1, 0, 1, 0"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004db96c","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004db974","opcode":"0x21","summary":"set sprite=0x14, frame=6, gate=2, mode=0","spriteHex":"0x14","frame":6,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004db97c","opcode":"0x21","summary":"set sprite=0x14, frame=7, gate=16, mode=0","spriteHex":"0x14","frame":7,"gate":16},{"tick":18,"kind":"effect-sound","vaHex":"0x004db984","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":18,"kind":"actor-write","vaHex":"0x004db988","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":18,"kind":"actor-frame","vaHex":"0x004db990","opcode":"0x21","summary":"set sprite=0x14, frame=8, gate=2, mode=0","spriteHex":"0x14","frame":8,"gate":2},{"tick":20,"kind":"helper-call","vaHex":"0x004db998","opcode":"0xbd","summary":"helper-call id=70; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":70},{"tick":20,"kind":"actor-frame","vaHex":"0x004db99c","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=8, mode=0","spriteHex":"0x14","frame":9,"gate":8},{"tick":28,"kind":"wait","vaHex":"0x004db9a4","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":28,"kind":"helper-call","vaHex":"0x004db9ac","opcode":"0xbd","summary":"helper-call id=77; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":77},{"tick":28,"kind":"result-sound","vaHex":"0x004db9b0","opcode":"0xc2","summary":"WLK id 08 (normal id 08, alt id 08, mode=1)","wlkNo":8,"normalWlkNo":8,"altWlkNo":8,"mode":1},{"tick":28,"kind":"actor-frame","vaHex":"0x004db9b4","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=14, mode=0","spriteHex":"0x14","frame":9,"gate":14},{"tick":42,"kind":"actor-flag","vaHex":"0x004db9bc","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":42,"kind":"actor-flag","vaHex":"0x004db9c4","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":42,"kind":"wait","vaHex":"0x004db9cc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":42,"kind":"actor-write","vaHex":"0x004db9d0","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00100000 (16px)","destHex":"0x1c","immHex":"0x00100000","immFixed":16.0},{"tick":42,"kind":"actor-frame","vaHex":"0x004db9d8","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":28,"soundVaHex":"0x004db9b0","normalWlkNo":8,"altWlkNo":8,"mode":1,"flags":[{"vaHex":"0x004db9bc","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004db9c4","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004db9cc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:ranged-projectile-or-beam","sound:effect+result","helper:multi-frameScript-effect","helper-root-counters","helper:randomized-child-spawn-stream","helper-child-motion-loop"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x1b","ownerKey":"rinshan","ownerName":"린샹","skillName":"맹호열지조","familyName":"display-table fallback","skillIdHex":"0x1b","levelOrFixed":null,"targetClass":"enemy-single","mpCost":16,"hitCount":1,"frameSequence":[29,30,31,32,32,3],"expandedFrameGateSequence":[{"tick":0,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":30,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":31,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":32,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":32,"gate":40,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":54,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":56,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[17],"soundModel":"result-only","soundCalls":[{"tick":14,"opcode":"0xc2","wlkNo":17,"normalWlkNo":17,"altWlkNo":17,"mode":1,"role":"skill-specific result cue","vaHex":"0x004dba2c"}],"helperIds":[108],"helperFacts":[{"helperId":108,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":3,"directSpawnFrames":["165@0","176@0","165@2"],"emitFrames":[165,176],"rootCounterSets":{"0x92":48,"0x94":12,"0x96":0},"rootBranches":[{"vaHex":"0x004bac94","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004bac90","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004bac90","targetSnippet":[{"vaHex":"0x004bac90","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004bac94","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004bac90"},{"vaHex":"0x004baca0","opcode":"0x42","category":"parent-actor","summary":"set parent actor pointer from this display object's actor slot"},{"vaHex":"0x004baca4","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"},{"vaHex":"0x004bacac","opcode":"0x00","category":"destroy/end","summary":"destroy/free display object candidate"}]}],"childMotionLoops":[],"interpretation":["+0x94 raw 12 acts as burst/current-counter seed for +0x8e","+0x96 raw 0 acts as outer repeat counter","static direct-spawn expansion currently exposes 3 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-id-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:rinshan:0x1b","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004db9ec","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[108],"positionClass":"target-front-direct-placement","casterRule":"target-front-direct","startAnchor":"target-front","motionKind":"teleport","motionTarget":"target-front","positionConfidence":"high","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 3 fixes the actor at target-front before frames"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 4, 4, 4, 13, 6, 6, 6, 8, 6, 6, 34, 6, 3, 8, 1, effect WLK count: 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 7, 1, 0, 1, 0"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004db9ec","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-write","vaHex":"0x004db9f0","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":0,"kind":"actor-write","vaHex":"0x004db9f8","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004dba00","opcode":"0x21","summary":"set sprite=0x14, frame=29, gate=2, mode=0","spriteHex":"0x14","frame":29,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dba08","opcode":"0x21","summary":"set sprite=0x14, frame=30, gate=6, mode=0","spriteHex":"0x14","frame":30,"gate":6},{"tick":8,"kind":"actor-write","vaHex":"0x004dba10","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004dba18","opcode":"0x21","summary":"set sprite=0x14, frame=31, gate=2, mode=0","spriteHex":"0x14","frame":31,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004dba20","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=4, mode=0","spriteHex":"0x14","frame":32,"gate":4},{"tick":14,"kind":"helper-call","vaHex":"0x004dba28","opcode":"0xbd","summary":"helper-call id=108; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":108},{"tick":14,"kind":"result-sound","vaHex":"0x004dba2c","opcode":"0xc2","summary":"WLK id 17 (normal id 17, alt id 17, mode=1)","wlkNo":17,"normalWlkNo":17,"altWlkNo":17,"mode":1},{"tick":14,"kind":"actor-frame","vaHex":"0x004dba30","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=40, mode=0","spriteHex":"0x14","frame":32,"gate":40},{"tick":54,"kind":"actor-flag","vaHex":"0x004dba38","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":54,"kind":"actor-flag","vaHex":"0x004dba40","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":54,"kind":"wait","vaHex":"0x004dba48","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":54,"kind":"actor-frame","vaHex":"0x004dba4c","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":56,"kind":"movement","vaHex":"0x004dba54","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":14,"soundVaHex":"0x004dba2c","normalWlkNo":17,"altWlkNo":17,"mode":1,"flags":[{"vaHex":"0x004dba38","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dba40","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dba48","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only","helper:randomized-child-spawn-stream","helper-root-counters"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x1c","ownerKey":"rinshan","ownerName":"린샹","skillName":"고양이달래기","familyName":"고양이달래기","skillIdHex":"0x1c","levelOrFixed":1,"targetClass":"enemy-all","mpCost":5,"hitCount":1,"frameSequence":[24,25,3],"expandedFrameGateSequence":[{"tick":0,"frame":24,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":6,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[35],"soundModel":"result-only","soundCalls":[{"tick":4,"opcode":"0xc2","wlkNo":35,"normalWlkNo":35,"altWlkNo":35,"mode":1,"role":"skill-specific result cue","vaHex":"0x004dbae0"}],"helperIds":[],"helperFacts":[],"helperRole":"no-helper-or-engine-side-effect","renderTrack":"simple-screen-hit","implementationState":"actor-frame-simple-effect","effectiveImplementationState":"actor-frame-simple-effect","semanticNote":"helper id 없이 actor frame과 result sound만 있는 단순 전체 효과 계열이다.","canonicalKey":"player:rinshan:0x1c","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dbad0","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-no-promoted-position","casterRule":"all-target-no-promoted-position","startAnchor":"home","motionKind":"engine-bound","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has no promoted actor movement or helper placement"],"familyPatternClass":"constant-fixed-family","familyPatternNotes":["현재 승격된 actor VM 기준으로 숙련도별 frame/gate/hit 변화가 없다.","이는 미해석이 아니라 actor 동작은 고정이고, 숙련도 차이는 MP/헬퍼/효과 크기/결과음 등 다른 레이어에서 확인해야 하는 패밀리다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004dbad0","opcode":"0x21","summary":"set sprite=0x14, frame=24, gate=2, mode=0","spriteHex":"0x14","frame":24,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dbad8","opcode":"0x21","summary":"set sprite=0x14, frame=25, gate=2, mode=0","spriteHex":"0x14","frame":25,"gate":2},{"tick":4,"kind":"result-sound","vaHex":"0x004dbae0","opcode":"0xc2","summary":"WLK id 35 (normal id 35, alt id 35, mode=1)","wlkNo":35,"normalWlkNo":35,"altWlkNo":35,"mode":1},{"tick":4,"kind":"actor-flag","vaHex":"0x004dbb20","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":4,"kind":"actor-flag","vaHex":"0x004dbb28","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":4,"kind":"wait","vaHex":"0x004dbb30","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":4,"kind":"actor-frame","vaHex":"0x004dbb34","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":4,"soundVaHex":"0x004dbae0","normalWlkNo":35,"altWlkNo":35,"mode":1,"flags":[{"vaHex":"0x004dbb20","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dbb28","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dbb30","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:simple-screen-hit","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x1d","ownerKey":"rinshan","ownerName":"린샹","skillName":"고양이달래기","familyName":"고양이달래기","skillIdHex":"0x1d","levelOrFixed":2,"targetClass":"enemy-all","mpCost":5,"hitCount":1,"frameSequence":[24,25,3],"expandedFrameGateSequence":[{"tick":0,"frame":24,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":6,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[35],"soundModel":"result-only","soundCalls":[{"tick":4,"opcode":"0xc2","wlkNo":35,"normalWlkNo":35,"altWlkNo":35,"mode":1,"role":"skill-specific result cue","vaHex":"0x004dbae0"}],"helperIds":[102],"helperFacts":[{"helperId":102,"behaviorClass":"actor-flag-sync","frameScripts":[],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{"0x90":32768},"rootBranches":[{"vaHex":"0x004ba450","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004ba464","condition":"conditional branch display.x +0x1c bit-test 0x00008000; target 0x004ba464","targetSnippet":[{"vaHex":"0x004ba464","opcode":"0x12","category":"write","summary":"or display/actor field +0x1c, imm=0xffff0000 (-1px)"},{"vaHex":"0x004ba46c","opcode":"0x12","category":"write","summary":"set display/actor field +0x08, source +0x1c, mode=0xe0"},{"vaHex":"0x004ba470","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004ba474","opcode":"0x11","category":"child-write","summary":"display/child field +0x94, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004ba47c","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004ba440"},{"vaHex":"0x004ba488","opcode":"0x12","category":"write","summary":"set display/actor field +0x08, imm=0x00000000 (0px)"},{"vaHex":"0x004ba490","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"},{"vaHex":"0x004ba498","opcode":"0x00","category":"destroy/end","summary":"destroy/free display object candidate"}]},{"vaHex":"0x004ba47c","fieldHex":"0x94","role":"unknown-root-branch","targetVaHex":"0x004ba440","condition":"word conditional branch local-backward-loop if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004ba440","targetSnippet":[{"vaHex":"0x004ba440","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x90, mode=0xa1"},{"vaHex":"0x004ba444","opcode":"0x2d","category":"motion-step","summary":"absolute base + trig motion step mode=0x09 axes=x"},{"vaHex":"0x004ba448","opcode":"0x12","category":"write","summary":"div display/actor field +0x1c, imm=0x00010000 (1px)"},{"vaHex":"0x004ba450","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.x +0x1c bit-test 0x00008000; target 0x004ba464"},{"vaHex":"0x004ba45c","opcode":"0x03","category":"jump","summary":"jump 0x004ba46c"},{"vaHex":"0x004ba464","opcode":"0x12","category":"write","summary":"or display/actor field +0x1c, imm=0xffff0000 (-1px)"},{"vaHex":"0x004ba46c","opcode":"0x12","category":"write","summary":"set display/actor field +0x08, source +0x1c, mode=0xe0"},{"vaHex":"0x004ba470","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"}]}],"childMotionLoops":[],"interpretation":[],"notes":["helper mainly synchronizes actor flags/waits"]}],"helperRole":"visual-helper-id-only","renderTrack":"screen-wide-effect","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"전체기 중 actor 위치 변화 없이 화면/대상 전체 helper effect가 본체인 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:rinshan:0x1d","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dbad0","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"constant-fixed-family","familyPatternNotes":["현재 승격된 actor VM 기준으로 숙련도별 frame/gate/hit 변화가 없다.","이는 미해석이 아니라 actor 동작은 고정이고, 숙련도 차이는 MP/헬퍼/효과 크기/결과음 등 다른 레이어에서 확인해야 하는 패밀리다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004dbad0","opcode":"0x21","summary":"set sprite=0x14, frame=24, gate=2, mode=0","spriteHex":"0x14","frame":24,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dbad8","opcode":"0x21","summary":"set sprite=0x14, frame=25, gate=2, mode=0","spriteHex":"0x14","frame":25,"gate":2},{"tick":4,"kind":"result-sound","vaHex":"0x004dbae0","opcode":"0xc2","summary":"WLK id 35 (normal id 35, alt id 35, mode=1)","wlkNo":35,"normalWlkNo":35,"altWlkNo":35,"mode":1},{"tick":4,"kind":"helper-call","vaHex":"0x004dbafc","opcode":"0xbd","summary":"helper-call id=102; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":102},{"tick":4,"kind":"wait","vaHex":"0x004dbb18","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":4,"kind":"actor-flag","vaHex":"0x004dbb20","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":4,"kind":"actor-flag","vaHex":"0x004dbb28","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":4,"kind":"wait","vaHex":"0x004dbb30","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":4,"kind":"actor-frame","vaHex":"0x004dbb34","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":4,"soundVaHex":"0x004dbae0","normalWlkNo":35,"altWlkNo":35,"mode":1,"flags":[{"vaHex":"0x004dbb20","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dbb28","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dbb18","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:result-only","helper:actor-flag-sync","helper-root-counters"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x1e","ownerKey":"rinshan","ownerName":"린샹","skillName":"고양이달래기","familyName":"고양이달래기","skillIdHex":"0x1e","levelOrFixed":3,"targetClass":"enemy-all","mpCost":5,"hitCount":1,"frameSequence":[24,25,3],"expandedFrameGateSequence":[{"tick":0,"frame":24,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":6,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[35],"soundModel":"result-only","soundCalls":[{"tick":4,"opcode":"0xc2","wlkNo":35,"normalWlkNo":35,"altWlkNo":35,"mode":1,"role":"skill-specific result cue","vaHex":"0x004dbae0"}],"helperIds":[103],"helperFacts":[{"helperId":103,"behaviorClass":"actor-flag-sync","frameScripts":[],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{"0x90":32768},"rootBranches":[{"vaHex":"0x004ba450","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004ba464","condition":"conditional branch display.x +0x1c bit-test 0x00008000; target 0x004ba464","targetSnippet":[{"vaHex":"0x004ba464","opcode":"0x12","category":"write","summary":"or display/actor field +0x1c, imm=0xffff0000 (-1px)"},{"vaHex":"0x004ba46c","opcode":"0x12","category":"write","summary":"set display/actor field +0x08, source +0x1c, mode=0xe0"},{"vaHex":"0x004ba470","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004ba474","opcode":"0x11","category":"child-write","summary":"display/child field +0x94, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004ba47c","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004ba440"},{"vaHex":"0x004ba488","opcode":"0x12","category":"write","summary":"set display/actor field +0x08, imm=0x00000000 (0px)"},{"vaHex":"0x004ba490","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"},{"vaHex":"0x004ba498","opcode":"0x00","category":"destroy/end","summary":"destroy/free display object candidate"}]},{"vaHex":"0x004ba47c","fieldHex":"0x94","role":"unknown-root-branch","targetVaHex":"0x004ba440","condition":"word conditional branch local-backward-loop if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004ba440","targetSnippet":[{"vaHex":"0x004ba440","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x90, mode=0xa1"},{"vaHex":"0x004ba444","opcode":"0x2d","category":"motion-step","summary":"absolute base + trig motion step mode=0x09 axes=x"},{"vaHex":"0x004ba448","opcode":"0x12","category":"write","summary":"div display/actor field +0x1c, imm=0x00010000 (1px)"},{"vaHex":"0x004ba450","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.x +0x1c bit-test 0x00008000; target 0x004ba464"},{"vaHex":"0x004ba45c","opcode":"0x03","category":"jump","summary":"jump 0x004ba46c"},{"vaHex":"0x004ba464","opcode":"0x12","category":"write","summary":"or display/actor field +0x1c, imm=0xffff0000 (-1px)"},{"vaHex":"0x004ba46c","opcode":"0x12","category":"write","summary":"set display/actor field +0x08, source +0x1c, mode=0xe0"},{"vaHex":"0x004ba470","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"}]}],"childMotionLoops":[],"interpretation":[],"notes":["helper mainly synchronizes actor flags/waits"]}],"helperRole":"visual-helper-id-only","renderTrack":"screen-wide-effect","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"전체기 중 actor 위치 변화 없이 화면/대상 전체 helper effect가 본체인 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:rinshan:0x1e","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dbad0","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"constant-fixed-family","familyPatternNotes":["현재 승격된 actor VM 기준으로 숙련도별 frame/gate/hit 변화가 없다.","이는 미해석이 아니라 actor 동작은 고정이고, 숙련도 차이는 MP/헬퍼/효과 크기/결과음 등 다른 레이어에서 확인해야 하는 패밀리다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004dbad0","opcode":"0x21","summary":"set sprite=0x14, frame=24, gate=2, mode=0","spriteHex":"0x14","frame":24,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dbad8","opcode":"0x21","summary":"set sprite=0x14, frame=25, gate=2, mode=0","spriteHex":"0x14","frame":25,"gate":2},{"tick":4,"kind":"result-sound","vaHex":"0x004dbae0","opcode":"0xc2","summary":"WLK id 35 (normal id 35, alt id 35, mode=1)","wlkNo":35,"normalWlkNo":35,"altWlkNo":35,"mode":1},{"tick":4,"kind":"helper-call","vaHex":"0x004dbb08","opcode":"0xbd","summary":"helper-call id=103; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":103},{"tick":4,"kind":"wait","vaHex":"0x004dbb18","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":4,"kind":"actor-flag","vaHex":"0x004dbb20","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":4,"kind":"actor-flag","vaHex":"0x004dbb28","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":4,"kind":"wait","vaHex":"0x004dbb30","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":4,"kind":"actor-frame","vaHex":"0x004dbb34","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":4,"soundVaHex":"0x004dbae0","normalWlkNo":35,"altWlkNo":35,"mode":1,"flags":[{"vaHex":"0x004dbb20","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dbb28","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dbb18","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:result-only","helper:actor-flag-sync","helper-root-counters"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x1f","ownerKey":"rinshan","ownerName":"린샹","skillName":"고양이달래기","familyName":"고양이달래기","skillIdHex":"0x1f","levelOrFixed":4,"targetClass":"enemy-all","mpCost":4,"hitCount":1,"frameSequence":[24,25,3],"expandedFrameGateSequence":[{"tick":0,"frame":24,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":6,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[35],"soundModel":"result-only","soundCalls":[{"tick":4,"opcode":"0xc2","wlkNo":35,"normalWlkNo":35,"altWlkNo":35,"mode":1,"role":"skill-specific result cue","vaHex":"0x004dbae0"}],"helperIds":[104],"helperFacts":[{"helperId":104,"behaviorClass":"actor-flag-sync","frameScripts":[],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{"0x90":32768},"rootBranches":[{"vaHex":"0x004ba450","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004ba464","condition":"conditional branch display.x +0x1c bit-test 0x00008000; target 0x004ba464","targetSnippet":[{"vaHex":"0x004ba464","opcode":"0x12","category":"write","summary":"or display/actor field +0x1c, imm=0xffff0000 (-1px)"},{"vaHex":"0x004ba46c","opcode":"0x12","category":"write","summary":"set display/actor field +0x08, source +0x1c, mode=0xe0"},{"vaHex":"0x004ba470","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004ba474","opcode":"0x11","category":"child-write","summary":"display/child field +0x94, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004ba47c","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004ba440"},{"vaHex":"0x004ba488","opcode":"0x12","category":"write","summary":"set display/actor field +0x08, imm=0x00000000 (0px)"},{"vaHex":"0x004ba490","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"},{"vaHex":"0x004ba498","opcode":"0x00","category":"destroy/end","summary":"destroy/free display object candidate"}]},{"vaHex":"0x004ba47c","fieldHex":"0x94","role":"unknown-root-branch","targetVaHex":"0x004ba440","condition":"word conditional branch local-backward-loop if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004ba440","targetSnippet":[{"vaHex":"0x004ba440","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x90, mode=0xa1"},{"vaHex":"0x004ba444","opcode":"0x2d","category":"motion-step","summary":"absolute base + trig motion step mode=0x09 axes=x"},{"vaHex":"0x004ba448","opcode":"0x12","category":"write","summary":"div display/actor field +0x1c, imm=0x00010000 (1px)"},{"vaHex":"0x004ba450","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.x +0x1c bit-test 0x00008000; target 0x004ba464"},{"vaHex":"0x004ba45c","opcode":"0x03","category":"jump","summary":"jump 0x004ba46c"},{"vaHex":"0x004ba464","opcode":"0x12","category":"write","summary":"or display/actor field +0x1c, imm=0xffff0000 (-1px)"},{"vaHex":"0x004ba46c","opcode":"0x12","category":"write","summary":"set display/actor field +0x08, source +0x1c, mode=0xe0"},{"vaHex":"0x004ba470","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"}]}],"childMotionLoops":[],"interpretation":[],"notes":["helper mainly synchronizes actor flags/waits"]}],"helperRole":"visual-helper-id-only","renderTrack":"screen-wide-effect","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"전체기 중 actor 위치 변화 없이 화면/대상 전체 helper effect가 본체인 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:rinshan:0x1f","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dbad0","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"constant-fixed-family","familyPatternNotes":["현재 승격된 actor VM 기준으로 숙련도별 frame/gate/hit 변화가 없다.","이는 미해석이 아니라 actor 동작은 고정이고, 숙련도 차이는 MP/헬퍼/효과 크기/결과음 등 다른 레이어에서 확인해야 하는 패밀리다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004dbad0","opcode":"0x21","summary":"set sprite=0x14, frame=24, gate=2, mode=0","spriteHex":"0x14","frame":24,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dbad8","opcode":"0x21","summary":"set sprite=0x14, frame=25, gate=2, mode=0","spriteHex":"0x14","frame":25,"gate":2},{"tick":4,"kind":"result-sound","vaHex":"0x004dbae0","opcode":"0xc2","summary":"WLK id 35 (normal id 35, alt id 35, mode=1)","wlkNo":35,"normalWlkNo":35,"altWlkNo":35,"mode":1},{"tick":4,"kind":"helper-call","vaHex":"0x004dbb14","opcode":"0xbd","summary":"helper-call id=104; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":104},{"tick":4,"kind":"wait","vaHex":"0x004dbb18","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":4,"kind":"actor-flag","vaHex":"0x004dbb20","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":4,"kind":"actor-flag","vaHex":"0x004dbb28","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":4,"kind":"wait","vaHex":"0x004dbb30","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":4,"kind":"actor-frame","vaHex":"0x004dbb34","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":4,"soundVaHex":"0x004dbae0","normalWlkNo":35,"altWlkNo":35,"mode":1,"flags":[{"vaHex":"0x004dbb20","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dbb28","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dbb18","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:result-only","helper:actor-flag-sync","helper-root-counters"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x20","ownerKey":"rinshan","ownerName":"린샹","skillName":"유미쌍조","familyName":"유미쌍조","skillIdHex":"0x20","levelOrFixed":1,"targetClass":"enemy-all","mpCost":10,"hitCount":1,"frameSequence":[33,34,35,36,37,35,34,3],"expandedFrameGateSequence":[{"tick":0,"frame":33,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":34,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":37,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":34,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":20,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[3],"soundModel":"result-only","soundCalls":[{"tick":12,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004dbb94"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:rinshan:0x20","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dbb54","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 8, 12, 15, 18, effect WLK count: 0, 0, 0, 0"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004dbb54","opcode":"0x21","summary":"set sprite=0x14, frame=33, gate=2, mode=0","spriteHex":"0x14","frame":33,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dbb5c","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=6, mode=0","spriteHex":"0x14","frame":34,"gate":6},{"tick":8,"kind":"actor-write","vaHex":"0x004dbb74","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffe00000 (-32px)","destHex":"0x20","immHex":"0xffe00000","immFixed":-32.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004dbb7c","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":10,"kind":"actor-write","vaHex":"0x004dbb84","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":10,"kind":"actor-frame","vaHex":"0x004dbb8c","opcode":"0x21","summary":"set sprite=0x14, frame=36, gate=2, mode=0","spriteHex":"0x14","frame":36,"gate":2},{"tick":12,"kind":"result-sound","vaHex":"0x004dbb94","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x004dbb98","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x004dbba0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x004dbba8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-write","vaHex":"0x004dbbac","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":12,"kind":"actor-frame","vaHex":"0x004dbbb4","opcode":"0x21","summary":"set sprite=0x14, frame=37, gate=2, mode=0","spriteHex":"0x14","frame":37,"gate":2},{"tick":14,"kind":"actor-write","vaHex":"0x004dbbbc","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffe00000 (-32px)","destHex":"0x20","immHex":"0xffe00000","immFixed":-32.0},{"tick":14,"kind":"actor-frame","vaHex":"0x004dbbc4","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":16,"kind":"actor-write","vaHex":"0x004dbbcc","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xffe00000 (-32px)","destHex":"0x20","immHex":"0xffe00000","immFixed":-32.0},{"tick":16,"kind":"actor-frame","vaHex":"0x004dbbd4","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=2, mode=0","spriteHex":"0x14","frame":34,"gate":2},{"tick":18,"kind":"actor-write","vaHex":"0x004dbbdc","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":18,"kind":"actor-frame","vaHex":"0x004dbdac","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":20,"kind":"movement","vaHex":"0x004dbdb4","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":12,"soundVaHex":"0x004dbb94","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004dbb98","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dbba0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dbba8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x21","ownerKey":"rinshan","ownerName":"린샹","skillName":"유미쌍조","familyName":"유미쌍조","skillIdHex":"0x21","levelOrFixed":2,"targetClass":"enemy-all","mpCost":10,"hitCount":1,"frameSequence":[33,34,35,36,37,35,34,42,42,41,40,3],"expandedFrameGateSequence":[{"tick":0,"frame":33,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":34,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":37,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":34,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":42,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":42,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":41,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":28,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[3],"soundModel":"result-only","soundCalls":[{"tick":12,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004dbc0c"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:rinshan:0x21","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dbb54","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 8, 12, 15, 18, effect WLK count: 0, 0, 0, 0"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004dbb54","opcode":"0x21","summary":"set sprite=0x14, frame=33, gate=2, mode=0","spriteHex":"0x14","frame":33,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dbb5c","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=6, mode=0","spriteHex":"0x14","frame":34,"gate":6},{"tick":8,"kind":"actor-write","vaHex":"0x004dbbec","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffdc0000 (-36px)","destHex":"0x20","immHex":"0xffdc0000","immFixed":-36.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004dbbf4","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":10,"kind":"actor-write","vaHex":"0x004dbbfc","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x000c0000 (12px)","destHex":"0x20","immHex":"0x000c0000","immFixed":12.0},{"tick":10,"kind":"actor-frame","vaHex":"0x004dbc04","opcode":"0x21","summary":"set sprite=0x14, frame=36, gate=2, mode=0","spriteHex":"0x14","frame":36,"gate":2},{"tick":12,"kind":"result-sound","vaHex":"0x004dbc0c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x004dbc10","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x004dbc18","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x004dbc20","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-write","vaHex":"0x004dbc24","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x000c0000 (12px)","destHex":"0x20","immHex":"0x000c0000","immFixed":12.0},{"tick":12,"kind":"actor-frame","vaHex":"0x004dbc2c","opcode":"0x21","summary":"set sprite=0x14, frame=37, gate=2, mode=0","spriteHex":"0x14","frame":37,"gate":2},{"tick":14,"kind":"actor-write","vaHex":"0x004dbc34","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffdc0000 (-36px)","destHex":"0x20","immHex":"0xffdc0000","immFixed":-36.0},{"tick":14,"kind":"actor-frame","vaHex":"0x004dbc3c","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":16,"kind":"actor-write","vaHex":"0x004dbc44","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xffdc0000 (-36px)","destHex":"0x20","immHex":"0xffdc0000","immFixed":-36.0},{"tick":16,"kind":"actor-frame","vaHex":"0x004dbc4c","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=2, mode=0","spriteHex":"0x14","frame":34,"gate":2},{"tick":18,"kind":"actor-write","vaHex":"0x004dbc54","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":18,"kind":"actor-write","vaHex":"0x004dbc5c","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffc0000 (-4px)","destHex":"0x20","immHex":"0xfffc0000","immFixed":-4.0},{"tick":18,"kind":"actor-frame","vaHex":"0x004dbc64","opcode":"0x21","summary":"set sprite=0x14, frame=42, gate=2, mode=0","spriteHex":"0x14","frame":42,"gate":2},{"tick":20,"kind":"actor-write","vaHex":"0x004dbc6c","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffc0000 (-4px)","destHex":"0x20","immHex":"0xfffc0000","immFixed":-4.0},{"tick":20,"kind":"actor-frame","vaHex":"0x004dbc74","opcode":"0x21","summary":"set sprite=0x14, frame=42, gate=2, mode=0","spriteHex":"0x14","frame":42,"gate":2},{"tick":22,"kind":"actor-write","vaHex":"0x004dbc7c","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffc0000 (-4px)","destHex":"0x20","immHex":"0xfffc0000","immFixed":-4.0},{"tick":22,"kind":"actor-frame","vaHex":"0x004dbc84","opcode":"0x21","summary":"set sprite=0x14, frame=41, gate=2, mode=0","spriteHex":"0x14","frame":41,"gate":2},{"tick":24,"kind":"actor-frame","vaHex":"0x004dbc8c","opcode":"0x21","summary":"set sprite=0x14, frame=40, gate=2, mode=0","spriteHex":"0x14","frame":40,"gate":2},{"tick":26,"kind":"actor-frame","vaHex":"0x004dbdac","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":28,"kind":"movement","vaHex":"0x004dbdb4","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":12,"soundVaHex":"0x004dbc0c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004dbc10","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dbc18","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dbc20","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x22","ownerKey":"rinshan","ownerName":"린샹","skillName":"유미쌍조","familyName":"유미쌍조","skillIdHex":"0x22","levelOrFixed":3,"targetClass":"enemy-all","mpCost":9,"hitCount":1,"frameSequence":[33,34,35,36,37,35,36,37,35,34,42,42,41,40,3],"expandedFrameGateSequence":[{"tick":0,"frame":33,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":34,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":37,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":37,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":34,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":42,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":42,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":41,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":34,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[3],"soundModel":"result-only","soundCalls":[{"tick":18,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004dbc0c"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:rinshan:0x22","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dbb54","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 8, 12, 15, 18, effect WLK count: 0, 0, 0, 0"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004dbb54","opcode":"0x21","summary":"set sprite=0x14, frame=33, gate=2, mode=0","spriteHex":"0x14","frame":33,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dbb5c","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=6, mode=0","spriteHex":"0x14","frame":34,"gate":6},{"tick":8,"kind":"actor-write","vaHex":"0x004dbc9c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffe80000 (-24px)","destHex":"0x20","immHex":"0xffe80000","immFixed":-24.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004dbca4","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":10,"kind":"actor-write","vaHex":"0x004dbcac","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00080000 (8px)","destHex":"0x20","immHex":"0x00080000","immFixed":8.0},{"tick":10,"kind":"actor-frame","vaHex":"0x004dbcb4","opcode":"0x21","summary":"set sprite=0x14, frame=36, gate=2, mode=0","spriteHex":"0x14","frame":36,"gate":2},{"tick":12,"kind":"actor-write","vaHex":"0x004dbcbc","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":12,"kind":"actor-frame","vaHex":"0x004dbcc4","opcode":"0x21","summary":"set sprite=0x14, frame=37, gate=2, mode=0","spriteHex":"0x14","frame":37,"gate":2},{"tick":14,"kind":"actor-write","vaHex":"0x004dbbec","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffdc0000 (-36px)","destHex":"0x20","immHex":"0xffdc0000","immFixed":-36.0},{"tick":14,"kind":"actor-frame","vaHex":"0x004dbbf4","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":16,"kind":"actor-write","vaHex":"0x004dbbfc","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x000c0000 (12px)","destHex":"0x20","immHex":"0x000c0000","immFixed":12.0},{"tick":16,"kind":"actor-frame","vaHex":"0x004dbc04","opcode":"0x21","summary":"set sprite=0x14, frame=36, gate=2, mode=0","spriteHex":"0x14","frame":36,"gate":2},{"tick":18,"kind":"result-sound","vaHex":"0x004dbc0c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":18,"kind":"actor-flag","vaHex":"0x004dbc10","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":18,"kind":"actor-flag","vaHex":"0x004dbc18","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":18,"kind":"wait","vaHex":"0x004dbc20","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":18,"kind":"actor-write","vaHex":"0x004dbc24","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x000c0000 (12px)","destHex":"0x20","immHex":"0x000c0000","immFixed":12.0},{"tick":18,"kind":"actor-frame","vaHex":"0x004dbc2c","opcode":"0x21","summary":"set sprite=0x14, frame=37, gate=2, mode=0","spriteHex":"0x14","frame":37,"gate":2},{"tick":20,"kind":"actor-write","vaHex":"0x004dbc34","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffdc0000 (-36px)","destHex":"0x20","immHex":"0xffdc0000","immFixed":-36.0},{"tick":20,"kind":"actor-frame","vaHex":"0x004dbc3c","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":22,"kind":"actor-write","vaHex":"0x004dbc44","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xffdc0000 (-36px)","destHex":"0x20","immHex":"0xffdc0000","immFixed":-36.0},{"tick":22,"kind":"actor-frame","vaHex":"0x004dbc4c","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=2, mode=0","spriteHex":"0x14","frame":34,"gate":2},{"tick":24,"kind":"actor-write","vaHex":"0x004dbc54","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":24,"kind":"actor-write","vaHex":"0x004dbc5c","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffc0000 (-4px)","destHex":"0x20","immHex":"0xfffc0000","immFixed":-4.0},{"tick":24,"kind":"actor-frame","vaHex":"0x004dbc64","opcode":"0x21","summary":"set sprite=0x14, frame=42, gate=2, mode=0","spriteHex":"0x14","frame":42,"gate":2},{"tick":26,"kind":"actor-write","vaHex":"0x004dbc6c","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffc0000 (-4px)","destHex":"0x20","immHex":"0xfffc0000","immFixed":-4.0},{"tick":26,"kind":"actor-frame","vaHex":"0x004dbc74","opcode":"0x21","summary":"set sprite=0x14, frame=42, gate=2, mode=0","spriteHex":"0x14","frame":42,"gate":2},{"tick":28,"kind":"actor-write","vaHex":"0x004dbc7c","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffc0000 (-4px)","destHex":"0x20","immHex":"0xfffc0000","immFixed":-4.0},{"tick":28,"kind":"actor-frame","vaHex":"0x004dbc84","opcode":"0x21","summary":"set sprite=0x14, frame=41, gate=2, mode=0","spriteHex":"0x14","frame":41,"gate":2},{"tick":30,"kind":"actor-frame","vaHex":"0x004dbc8c","opcode":"0x21","summary":"set sprite=0x14, frame=40, gate=2, mode=0","spriteHex":"0x14","frame":40,"gate":2},{"tick":32,"kind":"actor-frame","vaHex":"0x004dbdac","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":34,"kind":"movement","vaHex":"0x004dbdb4","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":18,"soundVaHex":"0x004dbc0c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004dbc10","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dbc18","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dbc20","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x23","ownerKey":"rinshan","ownerName":"린샹","skillName":"유미쌍조","familyName":"유미쌍조","skillIdHex":"0x23","levelOrFixed":4,"targetClass":"enemy-all","mpCost":8,"hitCount":1,"frameSequence":[33,34,35,36,37,35,36,37,35,36,37,35,34,42,42,41,40,3],"expandedFrameGateSequence":[{"tick":0,"frame":33,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":34,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":37,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":37,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":37,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":34,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":42,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":42,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":41,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":40,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[3],"soundModel":"result-only","soundCalls":[{"tick":24,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004dbd24"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:rinshan:0x23","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dbb54","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 8, 12, 15, 18, effect WLK count: 0, 0, 0, 0"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004dbb54","opcode":"0x21","summary":"set sprite=0x14, frame=33, gate=2, mode=0","spriteHex":"0x14","frame":33,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dbb5c","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=6, mode=0","spriteHex":"0x14","frame":34,"gate":6},{"tick":8,"kind":"actor-write","vaHex":"0x004dbc9c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffe80000 (-24px)","destHex":"0x20","immHex":"0xffe80000","immFixed":-24.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004dbca4","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":10,"kind":"actor-write","vaHex":"0x004dbcac","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00080000 (8px)","destHex":"0x20","immHex":"0x00080000","immFixed":8.0},{"tick":10,"kind":"actor-frame","vaHex":"0x004dbcb4","opcode":"0x21","summary":"set sprite=0x14, frame=36, gate=2, mode=0","spriteHex":"0x14","frame":36,"gate":2},{"tick":12,"kind":"actor-write","vaHex":"0x004dbcbc","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":12,"kind":"actor-frame","vaHex":"0x004dbcc4","opcode":"0x21","summary":"set sprite=0x14, frame=37, gate=2, mode=0","spriteHex":"0x14","frame":37,"gate":2},{"tick":14,"kind":"actor-write","vaHex":"0x004dbcd4","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffe80000 (-24px)","destHex":"0x20","immHex":"0xffe80000","immFixed":-24.0},{"tick":14,"kind":"actor-frame","vaHex":"0x004dbcdc","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":16,"kind":"actor-write","vaHex":"0x004dbce4","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00080000 (8px)","destHex":"0x20","immHex":"0x00080000","immFixed":8.0},{"tick":16,"kind":"actor-frame","vaHex":"0x004dbcec","opcode":"0x21","summary":"set sprite=0x14, frame=36, gate=2, mode=0","spriteHex":"0x14","frame":36,"gate":2},{"tick":18,"kind":"actor-write","vaHex":"0x004dbcf4","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":18,"kind":"actor-frame","vaHex":"0x004dbcfc","opcode":"0x21","summary":"set sprite=0x14, frame=37, gate=2, mode=0","spriteHex":"0x14","frame":37,"gate":2},{"tick":20,"kind":"actor-write","vaHex":"0x004dbd04","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffd80000 (-40px)","destHex":"0x20","immHex":"0xffd80000","immFixed":-40.0},{"tick":20,"kind":"actor-frame","vaHex":"0x004dbd0c","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":22,"kind":"actor-write","vaHex":"0x004dbd14","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00080000 (8px)","destHex":"0x20","immHex":"0x00080000","immFixed":8.0},{"tick":22,"kind":"actor-frame","vaHex":"0x004dbd1c","opcode":"0x21","summary":"set sprite=0x14, frame=36, gate=2, mode=0","spriteHex":"0x14","frame":36,"gate":2},{"tick":24,"kind":"result-sound","vaHex":"0x004dbd24","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":24,"kind":"actor-flag","vaHex":"0x004dbd28","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":24,"kind":"actor-flag","vaHex":"0x004dbd30","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":24,"kind":"wait","vaHex":"0x004dbd38","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":24,"kind":"actor-write","vaHex":"0x004dbd3c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00080000 (8px)","destHex":"0x20","immHex":"0x00080000","immFixed":8.0},{"tick":24,"kind":"actor-frame","vaHex":"0x004dbd44","opcode":"0x21","summary":"set sprite=0x14, frame=37, gate=2, mode=0","spriteHex":"0x14","frame":37,"gate":2},{"tick":26,"kind":"actor-write","vaHex":"0x004dbd4c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffd80000 (-40px)","destHex":"0x20","immHex":"0xffd80000","immFixed":-40.0},{"tick":26,"kind":"actor-frame","vaHex":"0x004dbd54","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":28,"kind":"actor-write","vaHex":"0x004dbd5c","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xffd80000 (-40px)","destHex":"0x20","immHex":"0xffd80000","immFixed":-40.0},{"tick":28,"kind":"actor-frame","vaHex":"0x004dbd64","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=2, mode=0","spriteHex":"0x14","frame":34,"gate":2},{"tick":30,"kind":"actor-write","vaHex":"0x004dbd6c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":30,"kind":"actor-write","vaHex":"0x004dbd74","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff80000 (-8px)","destHex":"0x20","immHex":"0xfff80000","immFixed":-8.0},{"tick":30,"kind":"actor-frame","vaHex":"0x004dbd7c","opcode":"0x21","summary":"set sprite=0x14, frame=42, gate=2, mode=0","spriteHex":"0x14","frame":42,"gate":2},{"tick":32,"kind":"actor-write","vaHex":"0x004dbd84","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff80000 (-8px)","destHex":"0x20","immHex":"0xfff80000","immFixed":-8.0},{"tick":32,"kind":"actor-frame","vaHex":"0x004dbd8c","opcode":"0x21","summary":"set sprite=0x14, frame=42, gate=2, mode=0","spriteHex":"0x14","frame":42,"gate":2},{"tick":34,"kind":"actor-write","vaHex":"0x004dbd94","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff80000 (-8px)","destHex":"0x20","immHex":"0xfff80000","immFixed":-8.0},{"tick":34,"kind":"actor-frame","vaHex":"0x004dbd9c","opcode":"0x21","summary":"set sprite=0x14, frame=41, gate=2, mode=0","spriteHex":"0x14","frame":41,"gate":2},{"tick":36,"kind":"actor-frame","vaHex":"0x004dbda4","opcode":"0x21","summary":"set sprite=0x14, frame=40, gate=2, mode=0","spriteHex":"0x14","frame":40,"gate":2},{"tick":38,"kind":"actor-frame","vaHex":"0x004dbdac","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":40,"kind":"movement","vaHex":"0x004dbdb4","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":24,"soundVaHex":"0x004dbd24","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004dbd28","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dbd30","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dbd38","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x24","ownerKey":"rinshan","ownerName":"린샹","skillName":"대폭진","familyName":"대폭진","skillIdHex":"0x24","levelOrFixed":1,"targetClass":"enemy-all","mpCost":15,"hitCount":1,"frameSequence":[31,31,32,32,32,3],"expandedFrameGateSequence":[{"tick":0,"frame":31,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":1,"frame":31,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":32,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":32,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":32,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":20,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[29],"soundModel":"result-only","soundCalls":[{"tick":10,"opcode":"0xc2","wlkNo":29,"normalWlkNo":29,"altWlkNo":29,"mode":1,"role":"skill-specific result cue","vaHex":"0x004dbe70"}],"helperIds":[58],"helperFacts":[{"helperId":58,"behaviorClass":"actor-flag-sync","frameScripts":[],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{"0x90":32768},"rootBranches":[{"vaHex":"0x004b3c20","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b3c34","condition":"conditional branch display.x +0x1c bit-test 0x00008000; target 0x004b3c34","targetSnippet":[{"vaHex":"0x004b3c34","opcode":"0x12","category":"write","summary":"or display/actor field +0x1c, imm=0xffff0000 (-1px)"},{"vaHex":"0x004b3c3c","opcode":"0x12","category":"write","summary":"set display/actor field +0x0c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b3c40","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b3c44","opcode":"0x11","category":"child-write","summary":"display/child field +0x94, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b3c4c","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004b3c10"},{"vaHex":"0x004b3c58","opcode":"0x12","category":"write","summary":"set display/actor field +0x0c, imm=0x00000000 (0px)"},{"vaHex":"0x004b3c60","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"},{"vaHex":"0x004b3c68","opcode":"0x00","category":"destroy/end","summary":"destroy/free display object candidate"}]},{"vaHex":"0x004b3c4c","fieldHex":"0x94","role":"unknown-root-branch","targetVaHex":"0x004b3c10","condition":"word conditional branch local-backward-loop if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004b3c10","targetSnippet":[{"vaHex":"0x004b3c10","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x90, mode=0xa1"},{"vaHex":"0x004b3c14","opcode":"0x2d","category":"motion-step","summary":"absolute base + trig motion step mode=0x09 axes=x"},{"vaHex":"0x004b3c18","opcode":"0x12","category":"write","summary":"div display/actor field +0x1c, imm=0x00010000 (1px)"},{"vaHex":"0x004b3c20","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.x +0x1c bit-test 0x00008000; target 0x004b3c34"},{"vaHex":"0x004b3c2c","opcode":"0x03","category":"jump","summary":"jump 0x004b3c3c"},{"vaHex":"0x004b3c34","opcode":"0x12","category":"write","summary":"or display/actor field +0x1c, imm=0xffff0000 (-1px)"},{"vaHex":"0x004b3c3c","opcode":"0x12","category":"write","summary":"set display/actor field +0x0c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b3c40","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"}]}],"childMotionLoops":[],"interpretation":[],"notes":["helper mainly synchronizes actor flags/waits"]}],"helperRole":"visual-helper-id-only","renderTrack":"screen-wide-effect","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"전체기 중 actor 위치 변화 없이 화면/대상 전체 helper effect가 본체인 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:rinshan:0x24","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dbde4","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 6, 6, 7, effect WLK count: 0, 0, 0, 1"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004dbde4","opcode":"0x21","summary":"set sprite=0x14, frame=31, gate=1, mode=0","spriteHex":"0x14","frame":31,"gate":1},{"tick":1,"kind":"actor-frame","vaHex":"0x004dbe30","opcode":"0x21","summary":"set sprite=0x14, frame=31, gate=1, mode=0","spriteHex":"0x14","frame":31,"gate":1},{"tick":2,"kind":"actor-frame","vaHex":"0x004dbe38","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=4, mode=0","spriteHex":"0x14","frame":32,"gate":4},{"tick":6,"kind":"helper-call","vaHex":"0x004dbe64","opcode":"0xbd","summary":"helper-call id=58; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":58},{"tick":6,"kind":"actor-frame","vaHex":"0x004dbe68","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=4, mode=0","spriteHex":"0x14","frame":32,"gate":4},{"tick":10,"kind":"result-sound","vaHex":"0x004dbe70","opcode":"0xc2","summary":"WLK id 29 (normal id 29, alt id 29, mode=1)","wlkNo":29,"normalWlkNo":29,"altWlkNo":29,"mode":1},{"tick":10,"kind":"actor-flag","vaHex":"0x004dbe74","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x004dbe7c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x004dbe84","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-frame","vaHex":"0x004dbe88","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=8, mode=0","spriteHex":"0x14","frame":32,"gate":8},{"tick":18,"kind":"actor-frame","vaHex":"0x004dbf2c","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":10,"soundVaHex":"0x004dbe70","normalWlkNo":29,"altWlkNo":29,"mode":1,"flags":[{"vaHex":"0x004dbe74","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dbe7c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dbe84","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:result-only","helper:actor-flag-sync","helper-root-counters"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x25","ownerKey":"rinshan","ownerName":"린샹","skillName":"대폭진","familyName":"대폭진","skillIdHex":"0x25","levelOrFixed":2,"targetClass":"enemy-all","mpCost":15,"hitCount":1,"frameSequence":[31,31,32,32,32,3],"expandedFrameGateSequence":[{"tick":0,"frame":31,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":1,"frame":31,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":32,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":32,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":32,"gate":16,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":28,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[29],"soundModel":"result-only","soundCalls":[{"tick":10,"opcode":"0xc2","wlkNo":29,"normalWlkNo":29,"altWlkNo":29,"mode":1,"role":"skill-specific result cue","vaHex":"0x004dbea4"}],"helperIds":[40,41,59],"helperFacts":[{"helperId":40,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b5e58","startTick":0,"durationGate":8,"stopReason":"destroy/end at 0x004b5e88","frames":["68@2","69@2","70@2","71@2"],"frameCount":4,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":41,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b5ecc","startTick":0,"durationGate":8,"stopReason":"destroy/end at 0x004b5f04","frames":["72@2","73@2","74@2","75@2"],"frameCount":4,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":59,"behaviorClass":"actor-flag-sync","frameScripts":[],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{"0x90":32768},"rootBranches":[{"vaHex":"0x004b3c20","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b3c34","condition":"conditional branch display.x +0x1c bit-test 0x00008000; target 0x004b3c34","targetSnippet":[{"vaHex":"0x004b3c34","opcode":"0x12","category":"write","summary":"or display/actor field +0x1c, imm=0xffff0000 (-1px)"},{"vaHex":"0x004b3c3c","opcode":"0x12","category":"write","summary":"set display/actor field +0x0c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b3c40","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b3c44","opcode":"0x11","category":"child-write","summary":"display/child field +0x94, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b3c4c","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004b3c10"},{"vaHex":"0x004b3c58","opcode":"0x12","category":"write","summary":"set display/actor field +0x0c, imm=0x00000000 (0px)"},{"vaHex":"0x004b3c60","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"},{"vaHex":"0x004b3c68","opcode":"0x00","category":"destroy/end","summary":"destroy/free display object candidate"}]},{"vaHex":"0x004b3c4c","fieldHex":"0x94","role":"unknown-root-branch","targetVaHex":"0x004b3c10","condition":"word conditional branch local-backward-loop if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004b3c10","targetSnippet":[{"vaHex":"0x004b3c10","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x90, mode=0xa1"},{"vaHex":"0x004b3c14","opcode":"0x2d","category":"motion-step","summary":"absolute base + trig motion step mode=0x09 axes=x"},{"vaHex":"0x004b3c18","opcode":"0x12","category":"write","summary":"div display/actor field +0x1c, imm=0x00010000 (1px)"},{"vaHex":"0x004b3c20","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.x +0x1c bit-test 0x00008000; target 0x004b3c34"},{"vaHex":"0x004b3c2c","opcode":"0x03","category":"jump","summary":"jump 0x004b3c3c"},{"vaHex":"0x004b3c34","opcode":"0x12","category":"write","summary":"or display/actor field +0x1c, imm=0xffff0000 (-1px)"},{"vaHex":"0x004b3c3c","opcode":"0x12","category":"write","summary":"set display/actor field +0x0c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b3c40","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"}]}],"childMotionLoops":[],"interpretation":[],"notes":["helper mainly synchronizes actor flags/waits"]}],"helperRole":"visual-helper-id-only","renderTrack":"screen-wide-effect","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"전체기 중 actor 위치 변화 없이 화면/대상 전체 helper effect가 본체인 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:rinshan:0x25","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dbde4","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 6, 6, 7, effect WLK count: 0, 0, 0, 1"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004dbde4","opcode":"0x21","summary":"set sprite=0x14, frame=31, gate=1, mode=0","spriteHex":"0x14","frame":31,"gate":1},{"tick":1,"kind":"helper-call","vaHex":"0x004dbdfc","opcode":"0xbd","summary":"helper-call id=40; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":40},{"tick":1,"kind":"helper-call","vaHex":"0x004dbe00","opcode":"0xbd","summary":"helper-call id=41; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":41},{"tick":1,"kind":"actor-frame","vaHex":"0x004dbe30","opcode":"0x21","summary":"set sprite=0x14, frame=31, gate=1, mode=0","spriteHex":"0x14","frame":31,"gate":1},{"tick":2,"kind":"actor-frame","vaHex":"0x004dbe38","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=4, mode=0","spriteHex":"0x14","frame":32,"gate":4},{"tick":6,"kind":"helper-call","vaHex":"0x004dbe98","opcode":"0xbd","summary":"helper-call id=59; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":59},{"tick":6,"kind":"actor-frame","vaHex":"0x004dbe9c","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=4, mode=0","spriteHex":"0x14","frame":32,"gate":4},{"tick":10,"kind":"result-sound","vaHex":"0x004dbea4","opcode":"0xc2","summary":"WLK id 29 (normal id 29, alt id 29, mode=1)","wlkNo":29,"normalWlkNo":29,"altWlkNo":29,"mode":1},{"tick":10,"kind":"actor-flag","vaHex":"0x004dbea8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x004dbeb0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x004dbeb8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-frame","vaHex":"0x004dbebc","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=16, mode=0","spriteHex":"0x14","frame":32,"gate":16},{"tick":26,"kind":"actor-frame","vaHex":"0x004dbf2c","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":10,"soundVaHex":"0x004dbea4","normalWlkNo":29,"altWlkNo":29,"mode":1,"flags":[{"vaHex":"0x004dbea8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dbeb0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dbeb8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:result-only","helper:multi-frameScript-effect","helper:actor-flag-sync","helper-root-counters"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x26","ownerKey":"rinshan","ownerName":"린샹","skillName":"대폭진","familyName":"대폭진","skillIdHex":"0x26","levelOrFixed":3,"targetClass":"enemy-all","mpCost":14,"hitCount":1,"frameSequence":[31,31,32,32,32,3],"expandedFrameGateSequence":[{"tick":0,"frame":31,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":1,"frame":31,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":32,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":32,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":32,"gate":24,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":36,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[29],"soundModel":"result-only","soundCalls":[{"tick":10,"opcode":"0xc2","wlkNo":29,"normalWlkNo":29,"altWlkNo":29,"mode":1,"role":"skill-specific result cue","vaHex":"0x004dbed8"}],"helperIds":[40,41,37,60],"helperFacts":[{"helperId":40,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b5e58","startTick":0,"durationGate":8,"stopReason":"destroy/end at 0x004b5e88","frames":["68@2","69@2","70@2","71@2"],"frameCount":4,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":41,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b5ecc","startTick":0,"durationGate":8,"stopReason":"destroy/end at 0x004b5f04","frames":["72@2","73@2","74@2","75@2"],"frameCount":4,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":37,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["60@0"],"emitFrames":[60],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5644","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b5660","condition":"conditional branch display.x +0x1c >= 0x80000000; target 0x004b5660","targetSnippet":[{"vaHex":"0x004b5660","opcode":"0x12","category":"write","summary":"neg display/actor field +0x1c, source +0x1c, mode=0xaa"},{"vaHex":"0x004b5664","opcode":"0x12","category":"write","summary":"shr display/actor field +0x1c, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b566c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x1c, source +0x1c, mode=0xaa"},{"vaHex":"0x004b5670","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5674","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.y +0x20 >= 0x80000000; target 0x004b5690"},{"vaHex":"0x004b5680","opcode":"0x12","category":"write","summary":"shr display/actor field +0x20, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b5688","opcode":"0x03","category":"jump","summary":"jump 0x004b56a0"},{"vaHex":"0x004b5690","opcode":"0x12","category":"write","summary":"neg display/actor field +0x20, source +0x20, mode=0xaa"}]},{"vaHex":"0x004b5674","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b5690","condition":"conditional branch display.y +0x20 >= 0x80000000; target 0x004b5690","targetSnippet":[{"vaHex":"0x004b5690","opcode":"0x12","category":"write","summary":"neg display/actor field +0x20, source +0x20, mode=0xaa"},{"vaHex":"0x004b5694","opcode":"0x12","category":"write","summary":"shr display/actor field +0x20, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b569c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x20, source +0x20, mode=0xaa"},{"vaHex":"0x004b56a0","opcode":"0x12","category":"write","summary":"set display/actor field +0x78, source +0x20, mode=0xe0"},{"vaHex":"0x004b56a4","opcode":"0x12","category":"write","summary":"set display/actor field +0x6c, source +0x6c, mode=0xe0"},{"vaHex":"0x004b56a8","opcode":"0x11","category":"child-write","summary":"display/child field +0x14, imm=0x00000104 (0.00396729px), mode=0xc0"},{"vaHex":"0x004b56b0","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x90, mode=0xa1"},{"vaHex":"0x004b56b4","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x8c] > right:display.word[+0x8e] -> 0x004b5614"}]},{"vaHex":"0x004b56b4","fieldHex":"0x8c","role":"unknown-root-branch","targetVaHex":"0x004b5614","condition":"word conditional branch local-backward-loop if left:display.word[+0x8c] > right:display.word[+0x8e] -> 0x004b5614","targetSnippet":[{"vaHex":"0x004b5614","opcode":"0x11","category":"child-write","summary":"display/child field +0x8e, source +0x8c, mode=0xa0"},{"vaHex":"0x004b5618","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b53c0 into +0x58"},{"vaHex":"0x004b5620","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5624","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0x58, mode=0xa0"},{"vaHex":"0x004b5628","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x80, mode=0xe0"},{"vaHex":"0x004b562c","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x84, mode=0xe0"},{"vaHex":"0x004b5630","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, imm=0x00000000 (0px)"},{"vaHex":"0x004b5638","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, imm=0x00000000 (0px)"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]},{"helperId":60,"behaviorClass":"actor-flag-sync","frameScripts":[],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{"0x90":32768},"rootBranches":[{"vaHex":"0x004b3c20","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b3c34","condition":"conditional branch display.x +0x1c bit-test 0x00008000; target 0x004b3c34","targetSnippet":[{"vaHex":"0x004b3c34","opcode":"0x12","category":"write","summary":"or display/actor field +0x1c, imm=0xffff0000 (-1px)"},{"vaHex":"0x004b3c3c","opcode":"0x12","category":"write","summary":"set display/actor field +0x0c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b3c40","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b3c44","opcode":"0x11","category":"child-write","summary":"display/child field +0x94, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b3c4c","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004b3c10"},{"vaHex":"0x004b3c58","opcode":"0x12","category":"write","summary":"set display/actor field +0x0c, imm=0x00000000 (0px)"},{"vaHex":"0x004b3c60","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"},{"vaHex":"0x004b3c68","opcode":"0x00","category":"destroy/end","summary":"destroy/free display object candidate"}]},{"vaHex":"0x004b3c4c","fieldHex":"0x94","role":"unknown-root-branch","targetVaHex":"0x004b3c10","condition":"word conditional branch local-backward-loop if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004b3c10","targetSnippet":[{"vaHex":"0x004b3c10","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x90, mode=0xa1"},{"vaHex":"0x004b3c14","opcode":"0x2d","category":"motion-step","summary":"absolute base + trig motion step mode=0x09 axes=x"},{"vaHex":"0x004b3c18","opcode":"0x12","category":"write","summary":"div display/actor field +0x1c, imm=0x00010000 (1px)"},{"vaHex":"0x004b3c20","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.x +0x1c bit-test 0x00008000; target 0x004b3c34"},{"vaHex":"0x004b3c2c","opcode":"0x03","category":"jump","summary":"jump 0x004b3c3c"},{"vaHex":"0x004b3c34","opcode":"0x12","category":"write","summary":"or display/actor field +0x1c, imm=0xffff0000 (-1px)"},{"vaHex":"0x004b3c3c","opcode":"0x12","category":"write","summary":"set display/actor field +0x0c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b3c40","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"}]}],"childMotionLoops":[],"interpretation":[],"notes":["helper mainly synchronizes actor flags/waits"]}],"helperRole":"visual-helper-id-only","renderTrack":"screen-wide-effect","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"전체기 중 actor 위치 변화 없이 화면/대상 전체 helper effect가 본체인 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:rinshan:0x26","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dbde4","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 6, 6, 7, effect WLK count: 0, 0, 0, 1"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004dbde4","opcode":"0x21","summary":"set sprite=0x14, frame=31, gate=1, mode=0","spriteHex":"0x14","frame":31,"gate":1},{"tick":1,"kind":"helper-call","vaHex":"0x004dbdfc","opcode":"0xbd","summary":"helper-call id=40; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":40},{"tick":1,"kind":"helper-call","vaHex":"0x004dbe00","opcode":"0xbd","summary":"helper-call id=41; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":41},{"tick":1,"kind":"helper-call","vaHex":"0x004dbe14","opcode":"0xbd","summary":"helper-call id=37; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":37},{"tick":1,"kind":"actor-frame","vaHex":"0x004dbe30","opcode":"0x21","summary":"set sprite=0x14, frame=31, gate=1, mode=0","spriteHex":"0x14","frame":31,"gate":1},{"tick":2,"kind":"actor-frame","vaHex":"0x004dbe38","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=4, mode=0","spriteHex":"0x14","frame":32,"gate":4},{"tick":6,"kind":"helper-call","vaHex":"0x004dbecc","opcode":"0xbd","summary":"helper-call id=60; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":60},{"tick":6,"kind":"actor-frame","vaHex":"0x004dbed0","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=4, mode=0","spriteHex":"0x14","frame":32,"gate":4},{"tick":10,"kind":"result-sound","vaHex":"0x004dbed8","opcode":"0xc2","summary":"WLK id 29 (normal id 29, alt id 29, mode=1)","wlkNo":29,"normalWlkNo":29,"altWlkNo":29,"mode":1},{"tick":10,"kind":"actor-flag","vaHex":"0x004dbedc","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x004dbee4","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x004dbeec","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-frame","vaHex":"0x004dbef0","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=24, mode=0","spriteHex":"0x14","frame":32,"gate":24},{"tick":34,"kind":"actor-frame","vaHex":"0x004dbf2c","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":10,"soundVaHex":"0x004dbed8","normalWlkNo":29,"altWlkNo":29,"mode":1,"flags":[{"vaHex":"0x004dbedc","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dbee4","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dbeec","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:result-only","helper:multi-frameScript-effect","helper:direct-frame-spawn","helper:actor-flag-sync","helper-root-counters"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x27","ownerKey":"rinshan","ownerName":"린샹","skillName":"대폭진","familyName":"대폭진","skillIdHex":"0x27","levelOrFixed":4,"targetClass":"enemy-all","mpCost":12,"hitCount":1,"frameSequence":[31,31,31,32,32,32,3],"expandedFrameGateSequence":[{"tick":0,"frame":31,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":1,"frame":31,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":5,"frame":31,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":32,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":32,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":32,"gate":32,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":46,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":48,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[29],"resultWlkNos":[29],"soundModel":"effect+result","soundCalls":[{"tick":10,"opcode":"0x24","wlkNo":29,"effectArgsHex":"01 00 1d","role":"effect/cast cue","vaHex":"0x004dbe48"},{"tick":14,"opcode":"0xc2","wlkNo":29,"normalWlkNo":29,"altWlkNo":29,"mode":1,"role":"skill-specific result cue","vaHex":"0x004dbf0c"}],"helperIds":[57,38,11],"helperFacts":[{"helperId":57,"behaviorClass":"nested-frameScript-spawn-effect","frameScripts":[],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{"0x92":64,"0x94":16},"rootBranches":[],"childMotionLoops":[],"interpretation":["+0x94 raw 16 acts as burst/current-counter seed for +0x8e"],"notes":["spawn tree child node contains init-frame/frameScript visual evidence"]},{"helperId":38,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["60@0"],"emitFrames":[60],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5644","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b5660","condition":"conditional branch display.x +0x1c >= 0x80000000; target 0x004b5660","targetSnippet":[{"vaHex":"0x004b5660","opcode":"0x12","category":"write","summary":"neg display/actor field +0x1c, source +0x1c, mode=0xaa"},{"vaHex":"0x004b5664","opcode":"0x12","category":"write","summary":"shr display/actor field +0x1c, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b566c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x1c, source +0x1c, mode=0xaa"},{"vaHex":"0x004b5670","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5674","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.y +0x20 >= 0x80000000; target 0x004b5690"},{"vaHex":"0x004b5680","opcode":"0x12","category":"write","summary":"shr display/actor field +0x20, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b5688","opcode":"0x03","category":"jump","summary":"jump 0x004b56a0"},{"vaHex":"0x004b5690","opcode":"0x12","category":"write","summary":"neg display/actor field +0x20, source +0x20, mode=0xaa"}]},{"vaHex":"0x004b5674","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b5690","condition":"conditional branch display.y +0x20 >= 0x80000000; target 0x004b5690","targetSnippet":[{"vaHex":"0x004b5690","opcode":"0x12","category":"write","summary":"neg display/actor field +0x20, source +0x20, mode=0xaa"},{"vaHex":"0x004b5694","opcode":"0x12","category":"write","summary":"shr display/actor field +0x20, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b569c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x20, source +0x20, mode=0xaa"},{"vaHex":"0x004b56a0","opcode":"0x12","category":"write","summary":"set display/actor field +0x78, source +0x20, mode=0xe0"},{"vaHex":"0x004b56a4","opcode":"0x12","category":"write","summary":"set display/actor field +0x6c, source +0x6c, mode=0xe0"},{"vaHex":"0x004b56a8","opcode":"0x11","category":"child-write","summary":"display/child field +0x14, imm=0x00000104 (0.00396729px), mode=0xc0"},{"vaHex":"0x004b56b0","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x90, mode=0xa1"},{"vaHex":"0x004b56b4","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x8c] > right:display.word[+0x8e] -> 0x004b5614"}]},{"vaHex":"0x004b56b4","fieldHex":"0x8c","role":"unknown-root-branch","targetVaHex":"0x004b5614","condition":"word conditional branch local-backward-loop if left:display.word[+0x8c] > right:display.word[+0x8e] -> 0x004b5614","targetSnippet":[{"vaHex":"0x004b5614","opcode":"0x11","category":"child-write","summary":"display/child field +0x8e, source +0x8c, mode=0xa0"},{"vaHex":"0x004b5618","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b53c0 into +0x58"},{"vaHex":"0x004b5620","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5624","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0x58, mode=0xa0"},{"vaHex":"0x004b5628","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x80, mode=0xe0"},{"vaHex":"0x004b562c","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x84, mode=0xe0"},{"vaHex":"0x004b5630","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, imm=0x00000000 (0px)"},{"vaHex":"0x004b5638","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, imm=0x00000000 (0px)"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]},{"helperId":11,"behaviorClass":"actor-flag-sync","frameScripts":[],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{"0x90":32768},"rootBranches":[{"vaHex":"0x004b3c20","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b3c34","condition":"conditional branch display.x +0x1c bit-test 0x00008000; target 0x004b3c34","targetSnippet":[{"vaHex":"0x004b3c34","opcode":"0x12","category":"write","summary":"or display/actor field +0x1c, imm=0xffff0000 (-1px)"},{"vaHex":"0x004b3c3c","opcode":"0x12","category":"write","summary":"set display/actor field +0x0c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b3c40","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b3c44","opcode":"0x11","category":"child-write","summary":"display/child field +0x94, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b3c4c","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004b3c10"},{"vaHex":"0x004b3c58","opcode":"0x12","category":"write","summary":"set display/actor field +0x0c, imm=0x00000000 (0px)"},{"vaHex":"0x004b3c60","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"},{"vaHex":"0x004b3c68","opcode":"0x00","category":"destroy/end","summary":"destroy/free display object candidate"}]},{"vaHex":"0x004b3c4c","fieldHex":"0x94","role":"unknown-root-branch","targetVaHex":"0x004b3c10","condition":"word conditional branch local-backward-loop if left:display.word[+0x94] != right:imm.word=0x0000 -> 0x004b3c10","targetSnippet":[{"vaHex":"0x004b3c10","opcode":"0x11","category":"child-write","summary":"display/child field +0x8c, source +0x90, mode=0xa1"},{"vaHex":"0x004b3c14","opcode":"0x2d","category":"motion-step","summary":"absolute base + trig motion step mode=0x09 axes=x"},{"vaHex":"0x004b3c18","opcode":"0x12","category":"write","summary":"div display/actor field +0x1c, imm=0x00010000 (1px)"},{"vaHex":"0x004b3c20","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.x +0x1c bit-test 0x00008000; target 0x004b3c34"},{"vaHex":"0x004b3c2c","opcode":"0x03","category":"jump","summary":"jump 0x004b3c3c"},{"vaHex":"0x004b3c34","opcode":"0x12","category":"write","summary":"or display/actor field +0x1c, imm=0xffff0000 (-1px)"},{"vaHex":"0x004b3c3c","opcode":"0x12","category":"write","summary":"set display/actor field +0x0c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b3c40","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"}]}],"childMotionLoops":[],"interpretation":[],"notes":["helper mainly synchronizes actor flags/waits"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"screen-wide-effect","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"전체기 중 actor 위치 변화 없이 화면/대상 전체 helper effect가 본체인 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:rinshan:0x27","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dbde4","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 6, 6, 7, effect WLK count: 0, 0, 0, 1"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004dbde4","opcode":"0x21","summary":"set sprite=0x14, frame=31, gate=1, mode=0","spriteHex":"0x14","frame":31,"gate":1},{"tick":1,"kind":"helper-call","vaHex":"0x004dbe20","opcode":"0xbd","summary":"helper-call id=57; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":57},{"tick":1,"kind":"actor-frame","vaHex":"0x004dbe24","opcode":"0x21","summary":"set sprite=0x14, frame=31, gate=4, mode=0","spriteHex":"0x14","frame":31,"gate":4},{"tick":5,"kind":"helper-call","vaHex":"0x004dbe2c","opcode":"0xbd","summary":"helper-call id=38; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":38},{"tick":5,"kind":"actor-frame","vaHex":"0x004dbe30","opcode":"0x21","summary":"set sprite=0x14, frame=31, gate=1, mode=0","spriteHex":"0x14","frame":31,"gate":1},{"tick":6,"kind":"actor-frame","vaHex":"0x004dbe38","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=4, mode=0","spriteHex":"0x14","frame":32,"gate":4},{"tick":10,"kind":"effect-sound","vaHex":"0x004dbe48","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 29; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":29,"effectArgsHex":"01 00 1d"},{"tick":10,"kind":"helper-call","vaHex":"0x004dbf00","opcode":"0xbd","summary":"helper-call id=11; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":11},{"tick":10,"kind":"actor-frame","vaHex":"0x004dbf04","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=4, mode=0","spriteHex":"0x14","frame":32,"gate":4},{"tick":14,"kind":"result-sound","vaHex":"0x004dbf0c","opcode":"0xc2","summary":"WLK id 29 (normal id 29, alt id 29, mode=1)","wlkNo":29,"normalWlkNo":29,"altWlkNo":29,"mode":1},{"tick":14,"kind":"actor-flag","vaHex":"0x004dbf10","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":14,"kind":"actor-flag","vaHex":"0x004dbf18","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":14,"kind":"wait","vaHex":"0x004dbf20","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":14,"kind":"actor-frame","vaHex":"0x004dbf24","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=32, mode=0","spriteHex":"0x14","frame":32,"gate":32},{"tick":46,"kind":"actor-frame","vaHex":"0x004dbf2c","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":14,"soundVaHex":"0x004dbf0c","normalWlkNo":29,"altWlkNo":29,"mode":1,"flags":[{"vaHex":"0x004dbf10","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dbf18","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dbf20","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:effect+result","helper:nested-frameScript-spawn-effect","helper-root-counters","helper:direct-frame-spawn","helper:actor-flag-sync"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x28","ownerKey":"rinshan","ownerName":"린샹","skillName":"암각·영상뢰화","familyName":"암각·영상뢰화","skillIdHex":"0x28","levelOrFixed":1,"targetClass":"enemy-all","mpCost":30,"hitCount":1,"frameSequence":[8,9,16,17,18,19,33,34,35,36,37,35,34,3],"expandedFrameGateSequence":[{"tick":0,"frame":8,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":9,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":16,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":17,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":19,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":33,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":34,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":40,"frame":37,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":42,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":44,"frame":34,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":46,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":48,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[18,18],"resultWlkNos":[9],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dbf64"},{"tick":18,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dbf98"},{"tick":40,"opcode":"0xc2","wlkNo":9,"normalWlkNo":9,"altWlkNo":9,"mode":1,"role":"skill-specific result cue","vaHex":"0x004dc180"}],"helperIds":[73],"helperFacts":[{"helperId":73,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":4,"directSpawnFrames":["134@0","134@4","134@8","134@12"],"emitFrames":[134],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b7a8c","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b7b08","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] == right:imm.byte=0x02 -> 0x004b7b08","targetSnippet":[{"vaHex":"0x004b7b08","opcode":"0x08","category":"init-block","summary":"variable init block writes=2 stop=terminator"},{"vaHex":"0x004b7b14","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b7918 into +0x58"},{"vaHex":"0x004b7b1c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b7b20","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b7b24","opcode":"0x2b","category":"random-range","summary":"rng(range=128) -> +0x58"},{"vaHex":"0x004b7b28","opcode":"0x12","category":"write","summary":"add display/actor field +0x58, imm=0x00000020 (0.000488281px)"},{"vaHex":"0x004b7b30","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00010000 (1px)"},{"vaHex":"0x004b7b38","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x58, mode=0xe0"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 4 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:rinshan:0x28","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dbf64","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 14, 26, 30, 32, effect WLK count: 2, 4, 6, 7"],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004dbf64","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":0,"kind":"actor-frame","vaHex":"0x004dbf68","opcode":"0x21","summary":"set sprite=0x14, frame=8, gate=2, mode=0","spriteHex":"0x14","frame":8,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dbf70","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=8, mode=0","spriteHex":"0x14","frame":9,"gate":8},{"tick":10,"kind":"actor-write","vaHex":"0x004dbf78","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":10,"kind":"actor-frame","vaHex":"0x004dbf80","opcode":"0x21","summary":"set sprite=0x14, frame=16, gate=2, mode=0","spriteHex":"0x14","frame":16,"gate":2},{"tick":12,"kind":"actor-frame","vaHex":"0x004dbf88","opcode":"0x21","summary":"set sprite=0x14, frame=17, gate=6, mode=0","spriteHex":"0x14","frame":17,"gate":6},{"tick":18,"kind":"actor-write","vaHex":"0x004dbf90","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":18,"kind":"effect-sound","vaHex":"0x004dbf98","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":18,"kind":"actor-frame","vaHex":"0x004dbf9c","opcode":"0x21","summary":"set sprite=0x14, frame=18, gate=2, mode=0","spriteHex":"0x14","frame":18,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x004dbfa4","opcode":"0x21","summary":"set sprite=0x14, frame=19, gate=8, mode=0","spriteHex":"0x14","frame":19,"gate":8},{"tick":28,"kind":"actor-write","vaHex":"0x004dc144","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":28,"kind":"actor-frame","vaHex":"0x004dc14c","opcode":"0x21","summary":"set sprite=0x14, frame=33, gate=2, mode=0","spriteHex":"0x14","frame":33,"gate":2},{"tick":30,"kind":"actor-frame","vaHex":"0x004dc154","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=6, mode=0","spriteHex":"0x14","frame":34,"gate":6},{"tick":36,"kind":"actor-write","vaHex":"0x004dc15c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffe00000 (-32px)","destHex":"0x20","immHex":"0xffe00000","immFixed":-32.0},{"tick":36,"kind":"actor-frame","vaHex":"0x004dc164","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":38,"kind":"actor-write","vaHex":"0x004dc16c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":38,"kind":"actor-frame","vaHex":"0x004dc174","opcode":"0x21","summary":"set sprite=0x14, frame=36, gate=2, mode=0","spriteHex":"0x14","frame":36,"gate":2},{"tick":40,"kind":"helper-call","vaHex":"0x004dc17c","opcode":"0xbd","summary":"helper-call id=73; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":73},{"tick":40,"kind":"result-sound","vaHex":"0x004dc180","opcode":"0xc2","summary":"WLK id 09 (normal id 09, alt id 09, mode=1)","wlkNo":9,"normalWlkNo":9,"altWlkNo":9,"mode":1},{"tick":40,"kind":"actor-flag","vaHex":"0x004dc184","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":40,"kind":"actor-flag","vaHex":"0x004dc18c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":40,"kind":"wait","vaHex":"0x004dc194","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":40,"kind":"actor-write","vaHex":"0x004dc198","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":40,"kind":"actor-frame","vaHex":"0x004dc1a0","opcode":"0x21","summary":"set sprite=0x14, frame=37, gate=2, mode=0","spriteHex":"0x14","frame":37,"gate":2},{"tick":42,"kind":"actor-write","vaHex":"0x004dc1a8","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffe00000 (-32px)","destHex":"0x20","immHex":"0xffe00000","immFixed":-32.0},{"tick":42,"kind":"actor-frame","vaHex":"0x004dc1b0","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":44,"kind":"actor-write","vaHex":"0x004dc1b8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xffe00000 (-32px)","destHex":"0x20","immHex":"0xffe00000","immFixed":-32.0},{"tick":44,"kind":"actor-frame","vaHex":"0x004dc1c0","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=2, mode=0","spriteHex":"0x14","frame":34,"gate":2},{"tick":46,"kind":"actor-frame","vaHex":"0x004dc28c","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":48,"kind":"movement","vaHex":"0x004dc294","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":40,"soundVaHex":"0x004dc180","normalWlkNo":9,"altWlkNo":9,"mode":1,"flags":[{"vaHex":"0x004dc184","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dc18c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dc194","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:effect+result","helper:randomized-child-spawn-stream"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x29","ownerKey":"rinshan","ownerName":"린샹","skillName":"암각·영상뢰화","familyName":"암각·영상뢰화","skillIdHex":"0x29","levelOrFixed":2,"targetClass":"enemy-all","mpCost":30,"hitCount":1,"frameSequence":[8,9,16,17,18,19,6,7,8,9,16,17,18,19,33,34,35,36,37,35,34,42,42,41,40,3],"expandedFrameGateSequence":[{"tick":0,"frame":8,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":9,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":16,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":17,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":19,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":7,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":8,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":9,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":46,"frame":16,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":48,"frame":17,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":54,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":56,"frame":19,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":64,"frame":33,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":66,"frame":34,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":72,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":74,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":76,"frame":37,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":78,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":80,"frame":34,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":82,"frame":42,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":84,"frame":42,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":86,"frame":41,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":88,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":90,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":92,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[18,18,18,18],"resultWlkNos":[9],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dbf64"},{"tick":18,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dbf98"},{"tick":36,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dbfd4"},{"tick":54,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dc008"},{"tick":76,"opcode":"0xc2","wlkNo":9,"normalWlkNo":9,"altWlkNo":9,"mode":1,"role":"skill-specific result cue","vaHex":"0x004dc20c"}],"helperIds":[74],"helperFacts":[{"helperId":74,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":6,"directSpawnFrames":["134@0","134@3","134@6","134@9","134@12","134@15"],"emitFrames":[134],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b7b80","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b7bfc","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] == right:imm.byte=0x02 -> 0x004b7bfc","targetSnippet":[{"vaHex":"0x004b7bfc","opcode":"0x08","category":"init-block","summary":"variable init block writes=2 stop=terminator"},{"vaHex":"0x004b7c08","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b7918 into +0x58"},{"vaHex":"0x004b7c10","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b7c14","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b7c18","opcode":"0x2b","category":"random-range","summary":"rng(range=128) -> +0x58"},{"vaHex":"0x004b7c1c","opcode":"0x12","category":"write","summary":"add display/actor field +0x58, imm=0x00000020 (0.000488281px)"},{"vaHex":"0x004b7c24","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00010000 (1px)"},{"vaHex":"0x004b7c2c","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x58, mode=0xe0"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 6 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:rinshan:0x29","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dbf64","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 14, 26, 30, 32, effect WLK count: 2, 4, 6, 7"],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004dbf64","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":0,"kind":"actor-frame","vaHex":"0x004dbf68","opcode":"0x21","summary":"set sprite=0x14, frame=8, gate=2, mode=0","spriteHex":"0x14","frame":8,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dbf70","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=8, mode=0","spriteHex":"0x14","frame":9,"gate":8},{"tick":10,"kind":"actor-write","vaHex":"0x004dbf78","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":10,"kind":"actor-frame","vaHex":"0x004dbf80","opcode":"0x21","summary":"set sprite=0x14, frame=16, gate=2, mode=0","spriteHex":"0x14","frame":16,"gate":2},{"tick":12,"kind":"actor-frame","vaHex":"0x004dbf88","opcode":"0x21","summary":"set sprite=0x14, frame=17, gate=6, mode=0","spriteHex":"0x14","frame":17,"gate":6},{"tick":18,"kind":"actor-write","vaHex":"0x004dbf90","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":18,"kind":"effect-sound","vaHex":"0x004dbf98","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":18,"kind":"actor-frame","vaHex":"0x004dbf9c","opcode":"0x21","summary":"set sprite=0x14, frame=18, gate=2, mode=0","spriteHex":"0x14","frame":18,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x004dbfa4","opcode":"0x21","summary":"set sprite=0x14, frame=19, gate=8, mode=0","spriteHex":"0x14","frame":19,"gate":8},{"tick":28,"kind":"actor-write","vaHex":"0x004dbfb4","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":28,"kind":"actor-frame","vaHex":"0x004dbfbc","opcode":"0x21","summary":"set sprite=0x14, frame=6, gate=2, mode=0","spriteHex":"0x14","frame":6,"gate":2},{"tick":30,"kind":"actor-frame","vaHex":"0x004dbfc4","opcode":"0x21","summary":"set sprite=0x14, frame=7, gate=6, mode=0","spriteHex":"0x14","frame":7,"gate":6},{"tick":36,"kind":"actor-write","vaHex":"0x004dbfcc","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":36,"kind":"effect-sound","vaHex":"0x004dbfd4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":36,"kind":"actor-frame","vaHex":"0x004dbfd8","opcode":"0x21","summary":"set sprite=0x14, frame=8, gate=2, mode=0","spriteHex":"0x14","frame":8,"gate":2},{"tick":38,"kind":"actor-frame","vaHex":"0x004dbfe0","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=8, mode=0","spriteHex":"0x14","frame":9,"gate":8},{"tick":46,"kind":"actor-write","vaHex":"0x004dbfe8","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":46,"kind":"actor-frame","vaHex":"0x004dbff0","opcode":"0x21","summary":"set sprite=0x14, frame=16, gate=2, mode=0","spriteHex":"0x14","frame":16,"gate":2},{"tick":48,"kind":"actor-frame","vaHex":"0x004dbff8","opcode":"0x21","summary":"set sprite=0x14, frame=17, gate=6, mode=0","spriteHex":"0x14","frame":17,"gate":6},{"tick":54,"kind":"actor-write","vaHex":"0x004dc000","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":54,"kind":"effect-sound","vaHex":"0x004dc008","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":54,"kind":"actor-frame","vaHex":"0x004dc00c","opcode":"0x21","summary":"set sprite=0x14, frame=18, gate=2, mode=0","spriteHex":"0x14","frame":18,"gate":2},{"tick":56,"kind":"actor-frame","vaHex":"0x004dc014","opcode":"0x21","summary":"set sprite=0x14, frame=19, gate=8, mode=0","spriteHex":"0x14","frame":19,"gate":8},{"tick":64,"kind":"actor-write","vaHex":"0x004dc1d0","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":64,"kind":"actor-frame","vaHex":"0x004dc1d8","opcode":"0x21","summary":"set sprite=0x14, frame=33, gate=2, mode=0","spriteHex":"0x14","frame":33,"gate":2},{"tick":66,"kind":"actor-frame","vaHex":"0x004dc1e0","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=6, mode=0","spriteHex":"0x14","frame":34,"gate":6},{"tick":72,"kind":"actor-write","vaHex":"0x004dc1e8","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffdc0000 (-36px)","destHex":"0x20","immHex":"0xffdc0000","immFixed":-36.0},{"tick":72,"kind":"actor-frame","vaHex":"0x004dc1f0","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":74,"kind":"actor-write","vaHex":"0x004dc1f8","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x000c0000 (12px)","destHex":"0x20","immHex":"0x000c0000","immFixed":12.0},{"tick":74,"kind":"actor-frame","vaHex":"0x004dc200","opcode":"0x21","summary":"set sprite=0x14, frame=36, gate=2, mode=0","spriteHex":"0x14","frame":36,"gate":2},{"tick":76,"kind":"helper-call","vaHex":"0x004dc208","opcode":"0xbd","summary":"helper-call id=74; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":74},{"tick":76,"kind":"result-sound","vaHex":"0x004dc20c","opcode":"0xc2","summary":"WLK id 09 (normal id 09, alt id 09, mode=1)","wlkNo":9,"normalWlkNo":9,"altWlkNo":9,"mode":1},{"tick":76,"kind":"actor-flag","vaHex":"0x004dc210","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":76,"kind":"actor-flag","vaHex":"0x004dc218","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":76,"kind":"wait","vaHex":"0x004dc220","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":76,"kind":"actor-write","vaHex":"0x004dc224","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x000c0000 (12px)","destHex":"0x20","immHex":"0x000c0000","immFixed":12.0},{"tick":76,"kind":"actor-frame","vaHex":"0x004dc22c","opcode":"0x21","summary":"set sprite=0x14, frame=37, gate=2, mode=0","spriteHex":"0x14","frame":37,"gate":2},{"tick":78,"kind":"actor-write","vaHex":"0x004dc234","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffdc0000 (-36px)","destHex":"0x20","immHex":"0xffdc0000","immFixed":-36.0},{"tick":78,"kind":"actor-frame","vaHex":"0x004dc23c","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":80,"kind":"actor-write","vaHex":"0x004dc244","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xffdc0000 (-36px)","destHex":"0x20","immHex":"0xffdc0000","immFixed":-36.0},{"tick":80,"kind":"actor-frame","vaHex":"0x004dc24c","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=2, mode=0","spriteHex":"0x14","frame":34,"gate":2},{"tick":82,"kind":"actor-write","vaHex":"0x004dc254","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffc0000 (-4px)","destHex":"0x20","immHex":"0xfffc0000","immFixed":-4.0},{"tick":82,"kind":"actor-frame","vaHex":"0x004dc25c","opcode":"0x21","summary":"set sprite=0x14, frame=42, gate=2, mode=0","spriteHex":"0x14","frame":42,"gate":2},{"tick":84,"kind":"actor-write","vaHex":"0x004dc264","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffc0000 (-4px)","destHex":"0x20","immHex":"0xfffc0000","immFixed":-4.0},{"tick":84,"kind":"actor-frame","vaHex":"0x004dc26c","opcode":"0x21","summary":"set sprite=0x14, frame=42, gate=2, mode=0","spriteHex":"0x14","frame":42,"gate":2},{"tick":86,"kind":"actor-write","vaHex":"0x004dc274","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffc0000 (-4px)","destHex":"0x20","immHex":"0xfffc0000","immFixed":-4.0},{"tick":86,"kind":"actor-frame","vaHex":"0x004dc27c","opcode":"0x21","summary":"set sprite=0x14, frame=41, gate=2, mode=0","spriteHex":"0x14","frame":41,"gate":2},{"tick":88,"kind":"actor-frame","vaHex":"0x004dc284","opcode":"0x21","summary":"set sprite=0x14, frame=40, gate=2, mode=0","spriteHex":"0x14","frame":40,"gate":2},{"tick":90,"kind":"actor-frame","vaHex":"0x004dc28c","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":92,"kind":"movement","vaHex":"0x004dc294","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":76,"soundVaHex":"0x004dc20c","normalWlkNo":9,"altWlkNo":9,"mode":1,"flags":[{"vaHex":"0x004dc210","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dc218","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dc220","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:effect+result","helper:randomized-child-spawn-stream"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x2a","ownerKey":"rinshan","ownerName":"린샹","skillName":"암각·영상뢰화","familyName":"암각·영상뢰화","skillIdHex":"0x2a","levelOrFixed":3,"targetClass":"enemy-all","mpCost":27,"hitCount":1,"frameSequence":[8,9,16,17,18,19,6,7,8,9,16,17,18,19,10,11,14,15,33,34,35,36,37,35,34,42,42,41,40,3],"expandedFrameGateSequence":[{"tick":0,"frame":8,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":9,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":16,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":17,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":19,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":7,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":8,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":9,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":46,"frame":16,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":48,"frame":17,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":54,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":56,"frame":19,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":64,"frame":10,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":66,"frame":11,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":74,"frame":14,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":76,"frame":15,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":84,"frame":33,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":86,"frame":34,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":92,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":94,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":96,"frame":37,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":98,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":100,"frame":34,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":102,"frame":42,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":104,"frame":42,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":106,"frame":41,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":108,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":110,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":112,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[18,18,18,18,18,18],"resultWlkNos":[9],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dbf64"},{"tick":18,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dbf98"},{"tick":36,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dbfd4"},{"tick":54,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dc008"},{"tick":66,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dc02c"},{"tick":76,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dc064"},{"tick":96,"opcode":"0xc2","wlkNo":9,"normalWlkNo":9,"altWlkNo":9,"mode":1,"role":"skill-specific result cue","vaHex":"0x004dc20c"}],"helperIds":[74],"helperFacts":[{"helperId":74,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":6,"directSpawnFrames":["134@0","134@3","134@6","134@9","134@12","134@15"],"emitFrames":[134],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b7b80","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b7bfc","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] == right:imm.byte=0x02 -> 0x004b7bfc","targetSnippet":[{"vaHex":"0x004b7bfc","opcode":"0x08","category":"init-block","summary":"variable init block writes=2 stop=terminator"},{"vaHex":"0x004b7c08","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b7918 into +0x58"},{"vaHex":"0x004b7c10","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b7c14","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b7c18","opcode":"0x2b","category":"random-range","summary":"rng(range=128) -> +0x58"},{"vaHex":"0x004b7c1c","opcode":"0x12","category":"write","summary":"add display/actor field +0x58, imm=0x00000020 (0.000488281px)"},{"vaHex":"0x004b7c24","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00010000 (1px)"},{"vaHex":"0x004b7c2c","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x58, mode=0xe0"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 6 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:rinshan:0x2a","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dbf64","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 14, 26, 30, 32, effect WLK count: 2, 4, 6, 7"],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004dbf64","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":0,"kind":"actor-frame","vaHex":"0x004dbf68","opcode":"0x21","summary":"set sprite=0x14, frame=8, gate=2, mode=0","spriteHex":"0x14","frame":8,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dbf70","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=8, mode=0","spriteHex":"0x14","frame":9,"gate":8},{"tick":10,"kind":"actor-write","vaHex":"0x004dbf78","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":10,"kind":"actor-frame","vaHex":"0x004dbf80","opcode":"0x21","summary":"set sprite=0x14, frame=16, gate=2, mode=0","spriteHex":"0x14","frame":16,"gate":2},{"tick":12,"kind":"actor-frame","vaHex":"0x004dbf88","opcode":"0x21","summary":"set sprite=0x14, frame=17, gate=6, mode=0","spriteHex":"0x14","frame":17,"gate":6},{"tick":18,"kind":"actor-write","vaHex":"0x004dbf90","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":18,"kind":"effect-sound","vaHex":"0x004dbf98","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":18,"kind":"actor-frame","vaHex":"0x004dbf9c","opcode":"0x21","summary":"set sprite=0x14, frame=18, gate=2, mode=0","spriteHex":"0x14","frame":18,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x004dbfa4","opcode":"0x21","summary":"set sprite=0x14, frame=19, gate=8, mode=0","spriteHex":"0x14","frame":19,"gate":8},{"tick":28,"kind":"actor-write","vaHex":"0x004dbfb4","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":28,"kind":"actor-frame","vaHex":"0x004dbfbc","opcode":"0x21","summary":"set sprite=0x14, frame=6, gate=2, mode=0","spriteHex":"0x14","frame":6,"gate":2},{"tick":30,"kind":"actor-frame","vaHex":"0x004dbfc4","opcode":"0x21","summary":"set sprite=0x14, frame=7, gate=6, mode=0","spriteHex":"0x14","frame":7,"gate":6},{"tick":36,"kind":"actor-write","vaHex":"0x004dbfcc","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":36,"kind":"effect-sound","vaHex":"0x004dbfd4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":36,"kind":"actor-frame","vaHex":"0x004dbfd8","opcode":"0x21","summary":"set sprite=0x14, frame=8, gate=2, mode=0","spriteHex":"0x14","frame":8,"gate":2},{"tick":38,"kind":"actor-frame","vaHex":"0x004dbfe0","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=8, mode=0","spriteHex":"0x14","frame":9,"gate":8},{"tick":46,"kind":"actor-write","vaHex":"0x004dbfe8","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":46,"kind":"actor-frame","vaHex":"0x004dbff0","opcode":"0x21","summary":"set sprite=0x14, frame=16, gate=2, mode=0","spriteHex":"0x14","frame":16,"gate":2},{"tick":48,"kind":"actor-frame","vaHex":"0x004dbff8","opcode":"0x21","summary":"set sprite=0x14, frame=17, gate=6, mode=0","spriteHex":"0x14","frame":17,"gate":6},{"tick":54,"kind":"actor-write","vaHex":"0x004dc000","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":54,"kind":"effect-sound","vaHex":"0x004dc008","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":54,"kind":"actor-frame","vaHex":"0x004dc00c","opcode":"0x21","summary":"set sprite=0x14, frame=18, gate=2, mode=0","spriteHex":"0x14","frame":18,"gate":2},{"tick":56,"kind":"actor-frame","vaHex":"0x004dc014","opcode":"0x21","summary":"set sprite=0x14, frame=19, gate=8, mode=0","spriteHex":"0x14","frame":19,"gate":8},{"tick":64,"kind":"actor-frame","vaHex":"0x004dc024","opcode":"0x21","summary":"set sprite=0x14, frame=10, gate=2, mode=0","spriteHex":"0x14","frame":10,"gate":2},{"tick":66,"kind":"effect-sound","vaHex":"0x004dc02c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":66,"kind":"actor-frame","vaHex":"0x004dc030","opcode":"0x21","summary":"set sprite=0x14, frame=11, gate=8, mode=0","spriteHex":"0x14","frame":11,"gate":8},{"tick":74,"kind":"actor-write","vaHex":"0x004dc054","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":74,"kind":"actor-frame","vaHex":"0x004dc05c","opcode":"0x21","summary":"set sprite=0x14, frame=14, gate=2, mode=0","spriteHex":"0x14","frame":14,"gate":2},{"tick":76,"kind":"effect-sound","vaHex":"0x004dc064","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":76,"kind":"actor-frame","vaHex":"0x004dc068","opcode":"0x21","summary":"set sprite=0x14, frame=15, gate=8, mode=0","spriteHex":"0x14","frame":15,"gate":8},{"tick":84,"kind":"actor-write","vaHex":"0x004dc070","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":84,"kind":"actor-write","vaHex":"0x004dc1d0","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":84,"kind":"actor-frame","vaHex":"0x004dc1d8","opcode":"0x21","summary":"set sprite=0x14, frame=33, gate=2, mode=0","spriteHex":"0x14","frame":33,"gate":2},{"tick":86,"kind":"actor-frame","vaHex":"0x004dc1e0","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=6, mode=0","spriteHex":"0x14","frame":34,"gate":6},{"tick":92,"kind":"actor-write","vaHex":"0x004dc1e8","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffdc0000 (-36px)","destHex":"0x20","immHex":"0xffdc0000","immFixed":-36.0},{"tick":92,"kind":"actor-frame","vaHex":"0x004dc1f0","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":94,"kind":"actor-write","vaHex":"0x004dc1f8","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x000c0000 (12px)","destHex":"0x20","immHex":"0x000c0000","immFixed":12.0},{"tick":94,"kind":"actor-frame","vaHex":"0x004dc200","opcode":"0x21","summary":"set sprite=0x14, frame=36, gate=2, mode=0","spriteHex":"0x14","frame":36,"gate":2},{"tick":96,"kind":"helper-call","vaHex":"0x004dc208","opcode":"0xbd","summary":"helper-call id=74; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":74},{"tick":96,"kind":"result-sound","vaHex":"0x004dc20c","opcode":"0xc2","summary":"WLK id 09 (normal id 09, alt id 09, mode=1)","wlkNo":9,"normalWlkNo":9,"altWlkNo":9,"mode":1},{"tick":96,"kind":"actor-flag","vaHex":"0x004dc210","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":96,"kind":"actor-flag","vaHex":"0x004dc218","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":96,"kind":"wait","vaHex":"0x004dc220","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":96,"kind":"actor-write","vaHex":"0x004dc224","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x000c0000 (12px)","destHex":"0x20","immHex":"0x000c0000","immFixed":12.0},{"tick":96,"kind":"actor-frame","vaHex":"0x004dc22c","opcode":"0x21","summary":"set sprite=0x14, frame=37, gate=2, mode=0","spriteHex":"0x14","frame":37,"gate":2},{"tick":98,"kind":"actor-write","vaHex":"0x004dc234","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffdc0000 (-36px)","destHex":"0x20","immHex":"0xffdc0000","immFixed":-36.0},{"tick":98,"kind":"actor-frame","vaHex":"0x004dc23c","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":100,"kind":"actor-write","vaHex":"0x004dc244","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xffdc0000 (-36px)","destHex":"0x20","immHex":"0xffdc0000","immFixed":-36.0},{"tick":100,"kind":"actor-frame","vaHex":"0x004dc24c","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=2, mode=0","spriteHex":"0x14","frame":34,"gate":2},{"tick":102,"kind":"actor-write","vaHex":"0x004dc254","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffc0000 (-4px)","destHex":"0x20","immHex":"0xfffc0000","immFixed":-4.0},{"tick":102,"kind":"actor-frame","vaHex":"0x004dc25c","opcode":"0x21","summary":"set sprite=0x14, frame=42, gate=2, mode=0","spriteHex":"0x14","frame":42,"gate":2},{"tick":104,"kind":"actor-write","vaHex":"0x004dc264","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffc0000 (-4px)","destHex":"0x20","immHex":"0xfffc0000","immFixed":-4.0},{"tick":104,"kind":"actor-frame","vaHex":"0x004dc26c","opcode":"0x21","summary":"set sprite=0x14, frame=42, gate=2, mode=0","spriteHex":"0x14","frame":42,"gate":2},{"tick":106,"kind":"actor-write","vaHex":"0x004dc274","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfffc0000 (-4px)","destHex":"0x20","immHex":"0xfffc0000","immFixed":-4.0},{"tick":106,"kind":"actor-frame","vaHex":"0x004dc27c","opcode":"0x21","summary":"set sprite=0x14, frame=41, gate=2, mode=0","spriteHex":"0x14","frame":41,"gate":2},{"tick":108,"kind":"actor-frame","vaHex":"0x004dc284","opcode":"0x21","summary":"set sprite=0x14, frame=40, gate=2, mode=0","spriteHex":"0x14","frame":40,"gate":2},{"tick":110,"kind":"actor-frame","vaHex":"0x004dc28c","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":112,"kind":"movement","vaHex":"0x004dc294","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":96,"soundVaHex":"0x004dc20c","normalWlkNo":9,"altWlkNo":9,"mode":1,"flags":[{"vaHex":"0x004dc210","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dc218","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dc220","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:effect+result","helper:randomized-child-spawn-stream"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x2b","ownerKey":"rinshan","ownerName":"린샹","skillName":"암각·영상뢰화","familyName":"암각·영상뢰화","skillIdHex":"0x2b","levelOrFixed":4,"targetClass":"enemy-all","mpCost":24,"hitCount":1,"frameSequence":[8,9,16,17,18,19,6,7,8,9,16,17,18,19,10,11,12,13,14,15,33,34,35,36,37,35,34,42,42,41,40,3],"expandedFrameGateSequence":[{"tick":0,"frame":8,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":9,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":16,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":17,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":19,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":7,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":8,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":9,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":46,"frame":16,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":48,"frame":17,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":54,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":56,"frame":19,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":64,"frame":10,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":66,"frame":11,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":74,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":76,"frame":13,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":84,"frame":14,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":86,"frame":15,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":94,"frame":33,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":96,"frame":34,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":102,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":104,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":106,"frame":37,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":108,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":110,"frame":34,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":112,"frame":42,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":114,"frame":42,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":116,"frame":41,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":118,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":120,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":122,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[18,18,18,18,18,18,18],"resultWlkNos":[9],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dbf64"},{"tick":18,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dbf98"},{"tick":36,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dbfd4"},{"tick":54,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dc008"},{"tick":66,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dc02c"},{"tick":76,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dc048"},{"tick":86,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dc064"},{"tick":106,"opcode":"0xc2","wlkNo":9,"normalWlkNo":9,"altWlkNo":9,"mode":1,"role":"skill-specific result cue","vaHex":"0x004dc0bc"}],"helperIds":[75],"helperFacts":[{"helperId":75,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":9,"directSpawnFrames":["134@0","134@2","134@4","134@6","134@8","134@10","134@12","134@14","134@16"],"emitFrames":[134],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b7c74","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b7cf0","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] == right:imm.byte=0x02 -> 0x004b7cf0","targetSnippet":[{"vaHex":"0x004b7cf0","opcode":"0x08","category":"init-block","summary":"variable init block writes=2 stop=terminator"},{"vaHex":"0x004b7cfc","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b7918 into +0x58"},{"vaHex":"0x004b7d04","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b7d08","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b7d0c","opcode":"0x2b","category":"random-range","summary":"rng(range=128) -> +0x58"},{"vaHex":"0x004b7d10","opcode":"0x12","category":"write","summary":"add display/actor field +0x58, imm=0x00000020 (0.000488281px)"},{"vaHex":"0x004b7d18","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00010000 (1px)"},{"vaHex":"0x004b7d20","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x58, mode=0xe0"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 9 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:rinshan:0x2b","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dbf64","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 14, 26, 30, 32, effect WLK count: 2, 4, 6, 7"],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x004dbf64","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":0,"kind":"actor-frame","vaHex":"0x004dbf68","opcode":"0x21","summary":"set sprite=0x14, frame=8, gate=2, mode=0","spriteHex":"0x14","frame":8,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dbf70","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=8, mode=0","spriteHex":"0x14","frame":9,"gate":8},{"tick":10,"kind":"actor-write","vaHex":"0x004dbf78","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":10,"kind":"actor-frame","vaHex":"0x004dbf80","opcode":"0x21","summary":"set sprite=0x14, frame=16, gate=2, mode=0","spriteHex":"0x14","frame":16,"gate":2},{"tick":12,"kind":"actor-frame","vaHex":"0x004dbf88","opcode":"0x21","summary":"set sprite=0x14, frame=17, gate=6, mode=0","spriteHex":"0x14","frame":17,"gate":6},{"tick":18,"kind":"actor-write","vaHex":"0x004dbf90","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":18,"kind":"effect-sound","vaHex":"0x004dbf98","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":18,"kind":"actor-frame","vaHex":"0x004dbf9c","opcode":"0x21","summary":"set sprite=0x14, frame=18, gate=2, mode=0","spriteHex":"0x14","frame":18,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x004dbfa4","opcode":"0x21","summary":"set sprite=0x14, frame=19, gate=8, mode=0","spriteHex":"0x14","frame":19,"gate":8},{"tick":28,"kind":"actor-write","vaHex":"0x004dbfb4","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":28,"kind":"actor-frame","vaHex":"0x004dbfbc","opcode":"0x21","summary":"set sprite=0x14, frame=6, gate=2, mode=0","spriteHex":"0x14","frame":6,"gate":2},{"tick":30,"kind":"actor-frame","vaHex":"0x004dbfc4","opcode":"0x21","summary":"set sprite=0x14, frame=7, gate=6, mode=0","spriteHex":"0x14","frame":7,"gate":6},{"tick":36,"kind":"actor-write","vaHex":"0x004dbfcc","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":36,"kind":"effect-sound","vaHex":"0x004dbfd4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":36,"kind":"actor-frame","vaHex":"0x004dbfd8","opcode":"0x21","summary":"set sprite=0x14, frame=8, gate=2, mode=0","spriteHex":"0x14","frame":8,"gate":2},{"tick":38,"kind":"actor-frame","vaHex":"0x004dbfe0","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=8, mode=0","spriteHex":"0x14","frame":9,"gate":8},{"tick":46,"kind":"actor-write","vaHex":"0x004dbfe8","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":46,"kind":"actor-frame","vaHex":"0x004dbff0","opcode":"0x21","summary":"set sprite=0x14, frame=16, gate=2, mode=0","spriteHex":"0x14","frame":16,"gate":2},{"tick":48,"kind":"actor-frame","vaHex":"0x004dbff8","opcode":"0x21","summary":"set sprite=0x14, frame=17, gate=6, mode=0","spriteHex":"0x14","frame":17,"gate":6},{"tick":54,"kind":"actor-write","vaHex":"0x004dc000","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":54,"kind":"effect-sound","vaHex":"0x004dc008","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":54,"kind":"actor-frame","vaHex":"0x004dc00c","opcode":"0x21","summary":"set sprite=0x14, frame=18, gate=2, mode=0","spriteHex":"0x14","frame":18,"gate":2},{"tick":56,"kind":"actor-frame","vaHex":"0x004dc014","opcode":"0x21","summary":"set sprite=0x14, frame=19, gate=8, mode=0","spriteHex":"0x14","frame":19,"gate":8},{"tick":64,"kind":"actor-frame","vaHex":"0x004dc024","opcode":"0x21","summary":"set sprite=0x14, frame=10, gate=2, mode=0","spriteHex":"0x14","frame":10,"gate":2},{"tick":66,"kind":"effect-sound","vaHex":"0x004dc02c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":66,"kind":"actor-frame","vaHex":"0x004dc030","opcode":"0x21","summary":"set sprite=0x14, frame=11, gate=8, mode=0","spriteHex":"0x14","frame":11,"gate":8},{"tick":74,"kind":"actor-frame","vaHex":"0x004dc040","opcode":"0x21","summary":"set sprite=0x14, frame=12, gate=2, mode=0","spriteHex":"0x14","frame":12,"gate":2},{"tick":76,"kind":"effect-sound","vaHex":"0x004dc048","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":76,"kind":"actor-frame","vaHex":"0x004dc04c","opcode":"0x21","summary":"set sprite=0x14, frame=13, gate=8, mode=0","spriteHex":"0x14","frame":13,"gate":8},{"tick":84,"kind":"actor-write","vaHex":"0x004dc054","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":84,"kind":"actor-frame","vaHex":"0x004dc05c","opcode":"0x21","summary":"set sprite=0x14, frame=14, gate=2, mode=0","spriteHex":"0x14","frame":14,"gate":2},{"tick":86,"kind":"effect-sound","vaHex":"0x004dc064","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":86,"kind":"actor-frame","vaHex":"0x004dc068","opcode":"0x21","summary":"set sprite=0x14, frame=15, gate=8, mode=0","spriteHex":"0x14","frame":15,"gate":8},{"tick":94,"kind":"actor-write","vaHex":"0x004dc070","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":94,"kind":"actor-write","vaHex":"0x004dc080","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":94,"kind":"actor-frame","vaHex":"0x004dc088","opcode":"0x21","summary":"set sprite=0x14, frame=33, gate=2, mode=0","spriteHex":"0x14","frame":33,"gate":2},{"tick":96,"kind":"actor-frame","vaHex":"0x004dc090","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=6, mode=0","spriteHex":"0x14","frame":34,"gate":6},{"tick":102,"kind":"actor-write","vaHex":"0x004dc098","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffd80000 (-40px)","destHex":"0x20","immHex":"0xffd80000","immFixed":-40.0},{"tick":102,"kind":"actor-frame","vaHex":"0x004dc0a0","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":104,"kind":"actor-write","vaHex":"0x004dc0a8","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00080000 (8px)","destHex":"0x20","immHex":"0x00080000","immFixed":8.0},{"tick":104,"kind":"actor-frame","vaHex":"0x004dc0b0","opcode":"0x21","summary":"set sprite=0x14, frame=36, gate=2, mode=0","spriteHex":"0x14","frame":36,"gate":2},{"tick":106,"kind":"helper-call","vaHex":"0x004dc0b8","opcode":"0xbd","summary":"helper-call id=75; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":75},{"tick":106,"kind":"result-sound","vaHex":"0x004dc0bc","opcode":"0xc2","summary":"WLK id 09 (normal id 09, alt id 09, mode=1)","wlkNo":9,"normalWlkNo":9,"altWlkNo":9,"mode":1},{"tick":106,"kind":"actor-flag","vaHex":"0x004dc0c0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":106,"kind":"actor-flag","vaHex":"0x004dc0c8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":106,"kind":"wait","vaHex":"0x004dc0d0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":106,"kind":"actor-write","vaHex":"0x004dc0d4","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00080000 (8px)","destHex":"0x20","immHex":"0x00080000","immFixed":8.0},{"tick":106,"kind":"actor-frame","vaHex":"0x004dc0dc","opcode":"0x21","summary":"set sprite=0x14, frame=37, gate=2, mode=0","spriteHex":"0x14","frame":37,"gate":2},{"tick":108,"kind":"actor-write","vaHex":"0x004dc0e4","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffd80000 (-40px)","destHex":"0x20","immHex":"0xffd80000","immFixed":-40.0},{"tick":108,"kind":"actor-frame","vaHex":"0x004dc0ec","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":110,"kind":"actor-write","vaHex":"0x004dc0f4","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xffd80000 (-40px)","destHex":"0x20","immHex":"0xffd80000","immFixed":-40.0},{"tick":110,"kind":"actor-frame","vaHex":"0x004dc0fc","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=2, mode=0","spriteHex":"0x14","frame":34,"gate":2},{"tick":112,"kind":"actor-write","vaHex":"0x004dc104","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff80000 (-8px)","destHex":"0x20","immHex":"0xfff80000","immFixed":-8.0},{"tick":112,"kind":"actor-frame","vaHex":"0x004dc10c","opcode":"0x21","summary":"set sprite=0x14, frame=42, gate=2, mode=0","spriteHex":"0x14","frame":42,"gate":2},{"tick":114,"kind":"actor-write","vaHex":"0x004dc114","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff80000 (-8px)","destHex":"0x20","immHex":"0xfff80000","immFixed":-8.0},{"tick":114,"kind":"actor-frame","vaHex":"0x004dc11c","opcode":"0x21","summary":"set sprite=0x14, frame=42, gate=2, mode=0","spriteHex":"0x14","frame":42,"gate":2},{"tick":116,"kind":"actor-write","vaHex":"0x004dc124","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff80000 (-8px)","destHex":"0x20","immHex":"0xfff80000","immFixed":-8.0},{"tick":116,"kind":"actor-frame","vaHex":"0x004dc12c","opcode":"0x21","summary":"set sprite=0x14, frame=41, gate=2, mode=0","spriteHex":"0x14","frame":41,"gate":2},{"tick":118,"kind":"actor-frame","vaHex":"0x004dc134","opcode":"0x21","summary":"set sprite=0x14, frame=40, gate=2, mode=0","spriteHex":"0x14","frame":40,"gate":2},{"tick":120,"kind":"actor-frame","vaHex":"0x004dc28c","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":122,"kind":"movement","vaHex":"0x004dc294","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":106,"soundVaHex":"0x004dc0bc","normalWlkNo":9,"altWlkNo":9,"mode":1,"flags":[{"vaHex":"0x004dc0c0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dc0c8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dc0d0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:effect+result","helper:randomized-child-spawn-stream"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x2c","ownerKey":"rinshan","ownerName":"린샹","skillName":"창룡파","familyName":"display-table fallback","skillIdHex":"0x2c","levelOrFixed":null,"targetClass":"enemy-all","mpCost":18,"hitCount":1,"frameSequence":[6,7,8,9,16,17,18,19,6,7,8,9,16,17,18,19,10,11,12,13,14,15,33,34,35,36,37,35,34,42,42,41,40,3],"expandedFrameGateSequence":[{"tick":0,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":7,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":8,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":9,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":16,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":17,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":19,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":6,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":7,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":44,"frame":8,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":46,"frame":9,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":54,"frame":16,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":56,"frame":17,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":62,"frame":18,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":64,"frame":19,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":72,"frame":10,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":74,"frame":11,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":82,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":84,"frame":13,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":92,"frame":14,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":94,"frame":15,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":102,"frame":33,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":104,"frame":34,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":110,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":112,"frame":36,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":114,"frame":37,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":116,"frame":35,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":118,"frame":34,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":120,"frame":42,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":122,"frame":42,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":124,"frame":41,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":126,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":128,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":130,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[18,18,18,18,18,18,18],"resultWlkNos":[9],"soundModel":"effect+result","soundCalls":[{"tick":8,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dbf64"},{"tick":26,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dbf98"},{"tick":44,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dbfd4"},{"tick":62,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dc008"},{"tick":74,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dc02c"},{"tick":84,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dc048"},{"tick":94,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dc064"},{"tick":114,"opcode":"0xc2","wlkNo":9,"normalWlkNo":9,"altWlkNo":9,"mode":1,"role":"skill-specific result cue","vaHex":"0x004dc0bc"}],"helperIds":[75],"helperFacts":[{"helperId":75,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":9,"directSpawnFrames":["134@0","134@2","134@4","134@6","134@8","134@10","134@12","134@14","134@16"],"emitFrames":[134],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b7c74","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b7cf0","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] == right:imm.byte=0x02 -> 0x004b7cf0","targetSnippet":[{"vaHex":"0x004b7cf0","opcode":"0x08","category":"init-block","summary":"variable init block writes=2 stop=terminator"},{"vaHex":"0x004b7cfc","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b7918 into +0x58"},{"vaHex":"0x004b7d04","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b7d08","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b7d0c","opcode":"0x2b","category":"random-range","summary":"rng(range=128) -> +0x58"},{"vaHex":"0x004b7d10","opcode":"0x12","category":"write","summary":"add display/actor field +0x58, imm=0x00000020 (0.000488281px)"},{"vaHex":"0x004b7d18","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00010000 (1px)"},{"vaHex":"0x004b7d20","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x58, mode=0xe0"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 9 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"screen-wide-effect","implementationState":"actor-frame-clone-or-spread-placement","effectiveImplementationState":"actor-frame-clone-or-spread-placement","semanticNote":"selector 5 기반의 화면/분신/확산 배치가 본체인 전체기 계열이다.","canonicalKey":"player:rinshan:0x2c","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004dbf40","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-clone-placement","casterRule":"clone-spread-direct","startAnchor":"home","motionKind":"clone-spread","motionTarget":"screen/targets","positionConfidence":"high","positionBucket":"clone-spread","positionBucketLabel":"사방팔방/분신","battleMapPlacementSummary":"시전자 본체보다 분신/분산 배치가 중심이다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 5 is clone/spread setup"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 4, 4, 4, 13, 6, 6, 6, 8, 6, 6, 34, 6, 3, 8, 1, effect WLK count: 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 7, 1, 0, 1, 0"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004dbf40","opcode":"0xbc","summary":"direct placement selector=5: screen-size/display-size based fixed placement.","selector":5,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-write","vaHex":"0x004dbf44","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004dbf4c","opcode":"0x21","summary":"set sprite=0x14, frame=6, gate=2, mode=0","spriteHex":"0x14","frame":6,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dbf54","opcode":"0x21","summary":"set sprite=0x14, frame=7, gate=6, mode=0","spriteHex":"0x14","frame":7,"gate":6},{"tick":8,"kind":"actor-write","vaHex":"0x004dbf5c","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":8,"kind":"effect-sound","vaHex":"0x004dbf64","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":8,"kind":"actor-frame","vaHex":"0x004dbf68","opcode":"0x21","summary":"set sprite=0x14, frame=8, gate=2, mode=0","spriteHex":"0x14","frame":8,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004dbf70","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=8, mode=0","spriteHex":"0x14","frame":9,"gate":8},{"tick":18,"kind":"actor-write","vaHex":"0x004dbf78","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":18,"kind":"actor-frame","vaHex":"0x004dbf80","opcode":"0x21","summary":"set sprite=0x14, frame=16, gate=2, mode=0","spriteHex":"0x14","frame":16,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x004dbf88","opcode":"0x21","summary":"set sprite=0x14, frame=17, gate=6, mode=0","spriteHex":"0x14","frame":17,"gate":6},{"tick":26,"kind":"actor-write","vaHex":"0x004dbf90","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":26,"kind":"effect-sound","vaHex":"0x004dbf98","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":26,"kind":"actor-frame","vaHex":"0x004dbf9c","opcode":"0x21","summary":"set sprite=0x14, frame=18, gate=2, mode=0","spriteHex":"0x14","frame":18,"gate":2},{"tick":28,"kind":"actor-frame","vaHex":"0x004dbfa4","opcode":"0x21","summary":"set sprite=0x14, frame=19, gate=8, mode=0","spriteHex":"0x14","frame":19,"gate":8},{"tick":36,"kind":"actor-write","vaHex":"0x004dbfb4","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":36,"kind":"actor-frame","vaHex":"0x004dbfbc","opcode":"0x21","summary":"set sprite=0x14, frame=6, gate=2, mode=0","spriteHex":"0x14","frame":6,"gate":2},{"tick":38,"kind":"actor-frame","vaHex":"0x004dbfc4","opcode":"0x21","summary":"set sprite=0x14, frame=7, gate=6, mode=0","spriteHex":"0x14","frame":7,"gate":6},{"tick":44,"kind":"actor-write","vaHex":"0x004dbfcc","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":44,"kind":"effect-sound","vaHex":"0x004dbfd4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":44,"kind":"actor-frame","vaHex":"0x004dbfd8","opcode":"0x21","summary":"set sprite=0x14, frame=8, gate=2, mode=0","spriteHex":"0x14","frame":8,"gate":2},{"tick":46,"kind":"actor-frame","vaHex":"0x004dbfe0","opcode":"0x21","summary":"set sprite=0x14, frame=9, gate=8, mode=0","spriteHex":"0x14","frame":9,"gate":8},{"tick":54,"kind":"actor-write","vaHex":"0x004dbfe8","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xffe00000 (-32px)","destHex":"0x1c","immHex":"0xffe00000","immFixed":-32.0},{"tick":54,"kind":"actor-frame","vaHex":"0x004dbff0","opcode":"0x21","summary":"set sprite=0x14, frame=16, gate=2, mode=0","spriteHex":"0x14","frame":16,"gate":2},{"tick":56,"kind":"actor-frame","vaHex":"0x004dbff8","opcode":"0x21","summary":"set sprite=0x14, frame=17, gate=6, mode=0","spriteHex":"0x14","frame":17,"gate":6},{"tick":62,"kind":"actor-write","vaHex":"0x004dc000","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)","destHex":"0x1c","immHex":"0x00200000","immFixed":32.0},{"tick":62,"kind":"effect-sound","vaHex":"0x004dc008","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":62,"kind":"actor-frame","vaHex":"0x004dc00c","opcode":"0x21","summary":"set sprite=0x14, frame=18, gate=2, mode=0","spriteHex":"0x14","frame":18,"gate":2},{"tick":64,"kind":"actor-frame","vaHex":"0x004dc014","opcode":"0x21","summary":"set sprite=0x14, frame=19, gate=8, mode=0","spriteHex":"0x14","frame":19,"gate":8},{"tick":72,"kind":"actor-frame","vaHex":"0x004dc024","opcode":"0x21","summary":"set sprite=0x14, frame=10, gate=2, mode=0","spriteHex":"0x14","frame":10,"gate":2},{"tick":74,"kind":"effect-sound","vaHex":"0x004dc02c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":74,"kind":"actor-frame","vaHex":"0x004dc030","opcode":"0x21","summary":"set sprite=0x14, frame=11, gate=8, mode=0","spriteHex":"0x14","frame":11,"gate":8},{"tick":82,"kind":"actor-frame","vaHex":"0x004dc040","opcode":"0x21","summary":"set sprite=0x14, frame=12, gate=2, mode=0","spriteHex":"0x14","frame":12,"gate":2},{"tick":84,"kind":"effect-sound","vaHex":"0x004dc048","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":84,"kind":"actor-frame","vaHex":"0x004dc04c","opcode":"0x21","summary":"set sprite=0x14, frame=13, gate=8, mode=0","spriteHex":"0x14","frame":13,"gate":8},{"tick":92,"kind":"actor-write","vaHex":"0x004dc054","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":92,"kind":"actor-frame","vaHex":"0x004dc05c","opcode":"0x21","summary":"set sprite=0x14, frame=14, gate=2, mode=0","spriteHex":"0x14","frame":14,"gate":2},{"tick":94,"kind":"effect-sound","vaHex":"0x004dc064","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":94,"kind":"actor-frame","vaHex":"0x004dc068","opcode":"0x21","summary":"set sprite=0x14, frame=15, gate=8, mode=0","spriteHex":"0x14","frame":15,"gate":8},{"tick":102,"kind":"actor-write","vaHex":"0x004dc070","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0x00100000 (16px)","destHex":"0x20","immHex":"0x00100000","immFixed":16.0},{"tick":102,"kind":"actor-write","vaHex":"0x004dc080","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":102,"kind":"actor-frame","vaHex":"0x004dc088","opcode":"0x21","summary":"set sprite=0x14, frame=33, gate=2, mode=0","spriteHex":"0x14","frame":33,"gate":2},{"tick":104,"kind":"actor-frame","vaHex":"0x004dc090","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=6, mode=0","spriteHex":"0x14","frame":34,"gate":6},{"tick":110,"kind":"actor-write","vaHex":"0x004dc098","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffd80000 (-40px)","destHex":"0x20","immHex":"0xffd80000","immFixed":-40.0},{"tick":110,"kind":"actor-frame","vaHex":"0x004dc0a0","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":112,"kind":"actor-write","vaHex":"0x004dc0a8","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00080000 (8px)","destHex":"0x20","immHex":"0x00080000","immFixed":8.0},{"tick":112,"kind":"actor-frame","vaHex":"0x004dc0b0","opcode":"0x21","summary":"set sprite=0x14, frame=36, gate=2, mode=0","spriteHex":"0x14","frame":36,"gate":2},{"tick":114,"kind":"helper-call","vaHex":"0x004dc0b8","opcode":"0xbd","summary":"helper-call id=75; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":75},{"tick":114,"kind":"result-sound","vaHex":"0x004dc0bc","opcode":"0xc2","summary":"WLK id 09 (normal id 09, alt id 09, mode=1)","wlkNo":9,"normalWlkNo":9,"altWlkNo":9,"mode":1},{"tick":114,"kind":"actor-flag","vaHex":"0x004dc0c0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":114,"kind":"actor-flag","vaHex":"0x004dc0c8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":114,"kind":"wait","vaHex":"0x004dc0d0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":114,"kind":"actor-write","vaHex":"0x004dc0d4","opcode":"0x12","summary":"add display/actor field +0x20, imm=0x00080000 (8px)","destHex":"0x20","immHex":"0x00080000","immFixed":8.0},{"tick":114,"kind":"actor-frame","vaHex":"0x004dc0dc","opcode":"0x21","summary":"set sprite=0x14, frame=37, gate=2, mode=0","spriteHex":"0x14","frame":37,"gate":2},{"tick":116,"kind":"actor-write","vaHex":"0x004dc0e4","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xffd80000 (-40px)","destHex":"0x20","immHex":"0xffd80000","immFixed":-40.0},{"tick":116,"kind":"actor-frame","vaHex":"0x004dc0ec","opcode":"0x21","summary":"set sprite=0x14, frame=35, gate=2, mode=0","spriteHex":"0x14","frame":35,"gate":2},{"tick":118,"kind":"actor-write","vaHex":"0x004dc0f4","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xffd80000 (-40px)","destHex":"0x20","immHex":"0xffd80000","immFixed":-40.0},{"tick":118,"kind":"actor-frame","vaHex":"0x004dc0fc","opcode":"0x21","summary":"set sprite=0x14, frame=34, gate=2, mode=0","spriteHex":"0x14","frame":34,"gate":2},{"tick":120,"kind":"actor-write","vaHex":"0x004dc104","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff80000 (-8px)","destHex":"0x20","immHex":"0xfff80000","immFixed":-8.0},{"tick":120,"kind":"actor-frame","vaHex":"0x004dc10c","opcode":"0x21","summary":"set sprite=0x14, frame=42, gate=2, mode=0","spriteHex":"0x14","frame":42,"gate":2},{"tick":122,"kind":"actor-write","vaHex":"0x004dc114","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff80000 (-8px)","destHex":"0x20","immHex":"0xfff80000","immFixed":-8.0},{"tick":122,"kind":"actor-frame","vaHex":"0x004dc11c","opcode":"0x21","summary":"set sprite=0x14, frame=42, gate=2, mode=0","spriteHex":"0x14","frame":42,"gate":2},{"tick":124,"kind":"actor-write","vaHex":"0x004dc124","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff80000 (-8px)","destHex":"0x20","immHex":"0xfff80000","immFixed":-8.0},{"tick":124,"kind":"actor-frame","vaHex":"0x004dc12c","opcode":"0x21","summary":"set sprite=0x14, frame=41, gate=2, mode=0","spriteHex":"0x14","frame":41,"gate":2},{"tick":126,"kind":"actor-frame","vaHex":"0x004dc134","opcode":"0x21","summary":"set sprite=0x14, frame=40, gate=2, mode=0","spriteHex":"0x14","frame":40,"gate":2},{"tick":128,"kind":"actor-frame","vaHex":"0x004dc28c","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2},{"tick":130,"kind":"movement","vaHex":"0x004dc294","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":114,"soundVaHex":"0x004dc0bc","normalWlkNo":9,"altWlkNo":9,"mode":1,"flags":[{"vaHex":"0x004dc0c0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dc0c8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dc0d0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:effect+result","helper:randomized-child-spawn-stream"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x2d","ownerKey":"rinshan","ownerName":"린샹","skillName":"환영각","familyName":"display-table fallback","skillIdHex":"0x2d","levelOrFixed":null,"targetClass":"enemy-all","mpCost":20,"hitCount":1,"frameSequence":[20,21,22,23,23,3],"expandedFrameGateSequence":[{"tick":0,"frame":20,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":21,"gate":16,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":23,"gate":16,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":23,"gate":14,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":50,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":52,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[18],"resultWlkNos":[8],"soundModel":"effect+result","soundCalls":[{"tick":18,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x004dc2b4"},{"tick":36,"opcode":"0xc2","wlkNo":8,"normalWlkNo":8,"altWlkNo":8,"mode":1,"role":"skill-specific result cue","vaHex":"0x004dc2d8"}],"helperIds":[70,77],"helperFacts":[{"helperId":70,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b77a4","startTick":0,"durationGate":43,"stopReason":"loop at 0x004b784c","frames":["124@2","125@2","126@2","127@2","128@2","129@2","124@2","125@2","126@2","127@2","128@2","129@2","124@2","125@2","126@2","127@2","128@2","129@2","124@2","125@2","126@2","127@1"],"frameCount":22,"loopEvents":[{"tick":43,"targetVaHex":"0x004b784c","repeatCount":null,"vaHex":"0x004b7854"}],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{"0x96":2},"rootBranches":[{"vaHex":"0x004b76dc","fieldHex":"0x96","role":"outer-repeat-step-while-repeat-counter-nonzero","targetVaHex":"0x004b76bc","condition":"word conditional branch local-backward-loop if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004b76bc","targetSnippet":[{"vaHex":"0x004b76bc","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b76c0","opcode":"0x12","category":"write","summary":"sub display/actor field +0x20, imm=0x00020000 (2px)"},{"vaHex":"0x004b76c8","opcode":"0x06","category":"repeat-loop","summary":"repeat-loop count=4, target=0x004b76bc; handler stores target in object +0x3c and counter in +0x60"},{"vaHex":"0x004b76d0","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:display.byte[+0xe7] add= source:imm.byte=0x01"},{"vaHex":"0x004b76d4","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b76dc","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004b76bc"},{"vaHex":"0x004b76e8","opcode":"0x02","category":"countdown-wait","summary":"countdown wait frames=16"},{"vaHex":"0x004b76ec","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x80, mode=0xa0"}]},{"vaHex":"0x004b76f4","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b7710","condition":"conditional branch motion.dx +0x74 >= 0x80000000; target 0x004b7710","targetSnippet":[{"vaHex":"0x004b7710","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b7714","opcode":"0x12","category":"write","summary":"div display/actor field +0x74, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b771c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b7720","opcode":"0x12","category":"write","summary":"set display/actor field +0x78, source +0x84, mode=0xa0"},{"vaHex":"0x004b7724","opcode":"0x12","category":"write","summary":"sub display/actor field +0x78, imm=0x00400000 (64px)"},{"vaHex":"0x004b772c","opcode":"0x12","category":"write","summary":"sub display/actor field +0x78, source +0x20, mode=0xa2"},{"vaHex":"0x004b7730","opcode":"0x15","category":"conditional-branch","summary":"conditional branch motion.dy +0x78 >= 0x80000000; target 0x004b774c"},{"vaHex":"0x004b773c","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000008 (0.00012207px)"}]},{"vaHex":"0x004b7730","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b774c","condition":"conditional branch motion.dy +0x78 >= 0x80000000; target 0x004b774c","targetSnippet":[{"vaHex":"0x004b774c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b7750","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b7758","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b775c","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000002 (3.05176e-05px), mode=0x80"},{"vaHex":"0x004b7764","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b7768","opcode":"0x12","category":"write","summary":"add display/actor field +0x20, imm=0x00080000 (8px)"},{"vaHex":"0x004b7770","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b7774","opcode":"0x06","category":"repeat-loop","summary":"repeat-loop count=4, target=0x004b7764; handler stores target in object +0x3c and counter in +0x60"}]},{"vaHex":"0x004b7788","fieldHex":"0x96","role":"outer-repeat-step-while-repeat-counter-nonzero","targetVaHex":"0x004b7764","condition":"word conditional branch local-backward-loop if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004b7764","targetSnippet":[{"vaHex":"0x004b7764","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b7768","opcode":"0x12","category":"write","summary":"add display/actor field +0x20, imm=0x00080000 (8px)"},{"vaHex":"0x004b7770","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b7774","opcode":"0x06","category":"repeat-loop","summary":"repeat-loop count=4, target=0x004b7764; handler stores target in object +0x3c and counter in +0x60"},{"vaHex":"0x004b777c","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:display.byte[+0xe7] sub= source:imm.byte=0x01"},{"vaHex":"0x004b7780","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b7788","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004b7764"},{"vaHex":"0x004b7794","opcode":"0x42","category":"parent-actor","summary":"set parent actor pointer from this display object's actor slot"}]}],"childMotionLoops":[],"interpretation":["+0x96 raw 2 acts as outer repeat counter","root op14 on +0x96 yields one VM tick, reseeds +0x8e from +0x94, then emits another burst"],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":77,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":3,"directSpawnFrames":["137@0","137@0","137@0"],"emitFrames":[137],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[{"scope":"spawn.1 0x004b7ef8","role":"child-motion-loop-until-phase-counter-zero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","motionSteps":[],"targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"},{"vaHex":"0x004b5238","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00040000 (4px)"},{"vaHex":"0x004b5240","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x58, mode=0xe0"}]},{"scope":"spawn.2 0x004b7ef8","role":"child-motion-loop-until-phase-counter-zero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","motionSteps":[],"targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"},{"vaHex":"0x004b5238","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00040000 (4px)"},{"vaHex":"0x004b5240","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x58, mode=0xe0"}]},{"scope":"spawn.3 0x004b7ef8","role":"child-motion-loop-until-phase-counter-zero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","motionSteps":[],"targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"},{"vaHex":"0x004b5238","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00040000 (4px)"},{"vaHex":"0x004b5240","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x58, mode=0xe0"}]}],"interpretation":["spawned child scripts have their own +0x90 phase loop around opcode 0x2d motion-step","static direct-spawn expansion currently exposes 3 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"screen-wide-effect","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"전체기 중 actor 위치 변화 없이 화면/대상 전체 helper effect가 본체인 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:rinshan:0x2d","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004dc2a4","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 4, 4, 4, 13, 6, 6, 6, 8, 6, 6, 34, 6, 3, 8, 1, effect WLK count: 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 7, 1, 0, 1, 0"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004dc2a4","opcode":"0x21","summary":"set sprite=0x14, frame=20, gate=2, mode=0","spriteHex":"0x14","frame":20,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dc2ac","opcode":"0x21","summary":"set sprite=0x14, frame=21, gate=16, mode=0","spriteHex":"0x14","frame":21,"gate":16},{"tick":18,"kind":"effect-sound","vaHex":"0x004dc2b4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":18,"kind":"actor-frame","vaHex":"0x004dc2b8","opcode":"0x21","summary":"set sprite=0x14, frame=22, gate=2, mode=0","spriteHex":"0x14","frame":22,"gate":2},{"tick":20,"kind":"helper-call","vaHex":"0x004dc2c0","opcode":"0xbd","summary":"helper-call id=70; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":70},{"tick":20,"kind":"actor-frame","vaHex":"0x004dc2c4","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=16, mode=0","spriteHex":"0x14","frame":23,"gate":16},{"tick":36,"kind":"wait","vaHex":"0x004dc2cc","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":36,"kind":"helper-call","vaHex":"0x004dc2d4","opcode":"0xbd","summary":"helper-call id=77; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":77},{"tick":36,"kind":"result-sound","vaHex":"0x004dc2d8","opcode":"0xc2","summary":"WLK id 08 (normal id 08, alt id 08, mode=1)","wlkNo":8,"normalWlkNo":8,"altWlkNo":8,"mode":1},{"tick":36,"kind":"actor-frame","vaHex":"0x004dc2dc","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=14, mode=0","spriteHex":"0x14","frame":23,"gate":14},{"tick":50,"kind":"actor-flag","vaHex":"0x004dc2e4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":50,"kind":"actor-flag","vaHex":"0x004dc2ec","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":50,"kind":"wait","vaHex":"0x004dc2f4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":50,"kind":"actor-frame","vaHex":"0x004dc2f8","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":36,"soundVaHex":"0x004dc2d8","normalWlkNo":8,"altWlkNo":8,"mode":1,"flags":[{"vaHex":"0x004dc2e4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dc2ec","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dc2f4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:effect+result","helper:multi-frameScript-effect","helper-root-counters","helper:randomized-child-spawn-stream","helper-child-motion-loop"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x2e","ownerKey":"rinshan","ownerName":"린샹","skillName":"맹호단공아","familyName":"display-table fallback","skillIdHex":"0x2e","levelOrFixed":null,"targetClass":"enemy-all","mpCost":25,"hitCount":1,"frameSequence":[12,13,3],"expandedFrameGateSequence":[{"tick":0,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":13,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":12,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[5],"soundModel":"result-only","soundCalls":[{"tick":10,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004dc320"}],"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-special-placement","effectiveImplementationState":"actor-frame-special-placement","semanticNote":"전체기지만 특수 이동/배치 opcode가 시전자 동작을 직접 제어하는 계열이다.","canonicalKey":"player:rinshan:0x2e","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004dc30c","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-special-placement","casterRule":"target-opposite-side-motion","startAnchor":"home","motionKind":"special-target-side-motion","motionTarget":"target-opposite-side","positionConfidence":"high","positionBucket":"target-side","positionBucketLabel":"몬스터 측면","battleMapPlacementSummary":"몬스터 측면/반대측 기준점에 배치되거나 그쪽으로 이동한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["nonzero movement selector 3 uses the opposite target-side edge formula; used by special all-target motion rows."],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 4, 4, 4, 13, 6, 6, 6, 8, 6, 6, 34, 6, 3, 8, 1, effect WLK count: 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 7, 1, 0, 1, 0"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004dc30c","opcode":"0x21","summary":"set sprite=0x14, frame=12, gate=2, mode=0","spriteHex":"0x14","frame":12,"gate":2},{"tick":2,"kind":"movement","vaHex":"0x004dc314","opcode":"0xbc","summary":"interpolated child motion mode=5, selector=3, stepDivisor=8: opposite target-side edge placement.","selector":3,"divisor":8,"movementMode":5},{"tick":2,"kind":"actor-frame","vaHex":"0x004dc318","opcode":"0x21","summary":"set sprite=0x14, frame=13, gate=8, mode=0","spriteHex":"0x14","frame":13,"gate":8},{"tick":10,"kind":"result-sound","vaHex":"0x004dc320","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":10,"kind":"actor-flag","vaHex":"0x004dc324","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x004dc32c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x004dc334","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"movement","vaHex":"0x004dc340","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0},{"tick":10,"kind":"actor-frame","vaHex":"0x004dc344","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":10,"soundVaHex":"0x004dc320","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004dc324","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dc32c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dc334","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"rinshan:0x2f","ownerKey":"rinshan","ownerName":"린샹","skillName":"도주","familyName":"display-table fallback","skillIdHex":"0x2f","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[43,44,45,46,22,23,23,3],"expandedFrameGateSequence":[{"tick":0,"frame":43,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":44,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":45,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":46,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":18,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[31],"resultWlkNos":[5],"soundModel":"effect+result","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":31,"effectArgsHex":"01 00 1f","role":"effect/cast cue","vaHex":"0x004dc390"},{"tick":16,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004dc3b4"}],"helperIds":[65,17],"helperFacts":[{"helperId":65,"behaviorClass":"actor-flag-sync","frameScripts":[],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b7154","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b716c","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] != right:imm.byte=0x01 -> 0x004b716c","targetSnippet":[{"vaHex":"0x004b716c","opcode":"0x12","category":"frame","summary":"direct sprite/frame selector write sprite=0x1a, frame=16, field +0x28, mode=0x80"},{"vaHex":"0x004b7174","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x80, mode=0xa0"},{"vaHex":"0x004b7178","opcode":"0x12","category":"write","summary":"sub display/actor field +0x74, source +0x1c, mode=0xa2"},{"vaHex":"0x004b717c","opcode":"0x15","category":"conditional-branch","summary":"conditional branch motion.dx +0x74 >= 0x80000000; target 0x004b7198"},{"vaHex":"0x004b7188","opcode":"0x12","category":"write","summary":"div display/actor field +0x74, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b7190","opcode":"0x03","category":"jump","summary":"jump 0x004b71a8"},{"vaHex":"0x004b7198","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b719c","opcode":"0x12","category":"write","summary":"div display/actor field +0x74, imm=0x00000008 (0.00012207px)"}]},{"vaHex":"0x004b717c","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b7198","condition":"conditional branch motion.dx +0x74 >= 0x80000000; target 0x004b7198","targetSnippet":[{"vaHex":"0x004b7198","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b719c","opcode":"0x12","category":"write","summary":"div display/actor field +0x74, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b71a4","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b71a8","opcode":"0x12","category":"write","summary":"set display/actor field +0x78, source +0x84, mode=0xa0"},{"vaHex":"0x004b71ac","opcode":"0x12","category":"write","summary":"sub display/actor field +0x78, source +0x20, mode=0xa2"},{"vaHex":"0x004b71b0","opcode":"0x15","category":"conditional-branch","summary":"conditional branch motion.dy +0x78 >= 0x80000000; target 0x004b71cc"},{"vaHex":"0x004b71bc","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b71c4","opcode":"0x03","category":"jump","summary":"jump 0x004b71dc"}]},{"vaHex":"0x004b71b0","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b71cc","condition":"conditional branch motion.dy +0x78 >= 0x80000000; target 0x004b71cc","targetSnippet":[{"vaHex":"0x004b71cc","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b71d0","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b71d8","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b71dc","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b71e0","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b71e4","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b71e8","opcode":"0x06","category":"repeat-loop","summary":"repeat-loop count=8, target=0x004b71e0; handler stores target in object +0x3c and counter in +0x60"},{"vaHex":"0x004b71f0","opcode":"0x42","category":"parent-actor","summary":"set parent actor pointer from this display object's actor slot"}]},{"vaHex":"0x004b7204","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b71fc","condition":"conditional branch display.x +0x1c < 0x02800000; target 0x004b71fc","targetSnippet":[{"vaHex":"0x004b71fc","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b7200","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b7204","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.x +0x1c < 0x02800000; target 0x004b71fc"},{"vaHex":"0x004b7210","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.x +0x1c >= 0xffc00000; target 0x004b71fc"},{"vaHex":"0x004b721c","opcode":"0x00","category":"destroy/end","summary":"destroy/free display object candidate"}]},{"vaHex":"0x004b7210","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b71fc","condition":"conditional branch display.x +0x1c >= 0xffc00000; target 0x004b71fc","targetSnippet":[{"vaHex":"0x004b71fc","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b7200","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b7204","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.x +0x1c < 0x02800000; target 0x004b71fc"},{"vaHex":"0x004b7210","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.x +0x1c >= 0xffc00000; target 0x004b71fc"},{"vaHex":"0x004b721c","opcode":"0x00","category":"destroy/end","summary":"destroy/free display object candidate"}]}],"childMotionLoops":[],"interpretation":[],"notes":["helper mainly synchronizes actor flags/waits"]},{"helperId":17,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3f94","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3fc0","frames":["12@2","13@2","14@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:rinshan:0x2f","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004dc358","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 4, 4, 4, 13, 6, 6, 6, 8, 6, 6, 34, 6, 3, 8, 1, effect WLK count: 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 7, 1, 0, 1, 0"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004dc358","opcode":"0x21","summary":"set sprite=0x14, frame=43, gate=4, mode=0","spriteHex":"0x14","frame":43,"gate":4},{"tick":4,"kind":"actor-frame","vaHex":"0x004dc360","opcode":"0x21","summary":"set sprite=0x14, frame=44, gate=2, mode=0","spriteHex":"0x14","frame":44,"gate":2},{"tick":6,"kind":"actor-write","vaHex":"0x004dc368","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff80000 (-8px)","destHex":"0x1c","immHex":"0xfff80000","immFixed":-8.0},{"tick":6,"kind":"actor-frame","vaHex":"0x004dc370","opcode":"0x21","summary":"set sprite=0x14, frame=45, gate=2, mode=0","spriteHex":"0x14","frame":45,"gate":2},{"tick":8,"kind":"actor-frame","vaHex":"0x004dc378","opcode":"0x21","summary":"set sprite=0x14, frame=46, gate=2, mode=0","spriteHex":"0x14","frame":46,"gate":2},{"tick":10,"kind":"actor-write","vaHex":"0x004dc380","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff80000 (-8px)","destHex":"0x1c","immHex":"0xfff80000","immFixed":-8.0},{"tick":10,"kind":"actor-frame","vaHex":"0x004dc388","opcode":"0x21","summary":"set sprite=0x14, frame=22, gate=2, mode=0","spriteHex":"0x14","frame":22,"gate":2},{"tick":12,"kind":"effect-sound","vaHex":"0x004dc390","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 31; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":31,"effectArgsHex":"01 00 1f"},{"tick":12,"kind":"helper-call","vaHex":"0x004dc394","opcode":"0xbd","summary":"helper-call id=65; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":65},{"tick":12,"kind":"actor-frame","vaHex":"0x004dc398","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=2, mode=0","spriteHex":"0x14","frame":23,"gate":2},{"tick":14,"kind":"wait","vaHex":"0x004dc3a0","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":14,"kind":"helper-call","vaHex":"0x004dc3a8","opcode":"0xbd","summary":"helper-call id=17; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":17},{"tick":14,"kind":"actor-frame","vaHex":"0x004dc3ac","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=2, mode=0","spriteHex":"0x14","frame":23,"gate":2},{"tick":16,"kind":"result-sound","vaHex":"0x004dc3b4","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":16,"kind":"actor-flag","vaHex":"0x004dc3b8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":16,"kind":"actor-flag","vaHex":"0x004dc3c0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":16,"kind":"wait","vaHex":"0x004dc3c8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":16,"kind":"actor-frame","vaHex":"0x004dc3cc","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":16,"soundVaHex":"0x004dc3b4","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004dc3b8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dc3c0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dc3c8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:support-or-status","sound:effect+result","helper:actor-flag-sync","helper:multi-frameScript-effect"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"rinshan:0x30","ownerKey":"rinshan","ownerName":"린샹","skillName":"방어","familyName":"display-table fallback","skillIdHex":"0x30","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[3],"expandedFrameGateSequence":[{"tick":0,"frame":3,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":8,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[],"resultWlkNos":[],"soundModel":"no-action-wlk","soundCalls":{},"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:rinshan:0x30","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004dc3e0","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"no-direct-wlk-support","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 4, 4, 4, 13, 6, 6, 6, 8, 6, 6, 34, 6, 3, 8, 1, effect WLK count: 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 7, 1, 0, 1, 0"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004dc3e0","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=8, mode=0","spriteHex":"0x14","frame":3,"gate":8},{"tick":8,"kind":"actor-flag","vaHex":"0x004dc3e8","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","caster-position-rule","render:support-or-status","sound:no-action-wlk"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"rinshan:0x31","ownerKey":"rinshan","ownerName":"린샹","skillName":"기공회복","familyName":"회복/방어 특수기","skillIdHex":"0x31","levelOrFixed":null,"targetClass":"ally-single","mpCost":5,"hitCount":1,"frameSequence":[29,30,31,32,3],"expandedFrameGateSequence":[{"tick":0,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":30,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":31,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":32,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":3,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":19,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[10],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":18,"opcode":"0x24","wlkNo":10,"effectArgsHex":"01 00 0a","role":"effect/cast cue","vaHex":"0x004dc478"}],"helperIds":[32],"helperFacts":[{"helperId":32,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["98@0"],"emitFrames":[98],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5274","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"}]},{"vaHex":"0x004b528c","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b520c","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b520c","targetSnippet":[{"vaHex":"0x004b520c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:rinshan:0x31","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dc41c","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"ally-single-support","casterRule":"ally-single-support","startAnchor":"home","motionKind":"support","motionTarget":"ally-single","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"mixed-fixed-family","familyPatternNotes":["한 패밀리에 서로 다른 고정/장비 기술명이 섞여 있어 4단계 숙련도 비교로 보면 안 된다.","skill names: 기공회복, 기공독치료, 기공대회복, 수경"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004dc41c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004dc424","opcode":"0x21","summary":"set sprite=0x14, frame=29, gate=2, mode=0","spriteHex":"0x14","frame":29,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dc42c","opcode":"0x21","summary":"set sprite=0x14, frame=30, gate=6, mode=0","spriteHex":"0x14","frame":30,"gate":6},{"tick":8,"kind":"actor-write","vaHex":"0x004dc434","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004dc43c","opcode":"0x21","summary":"set sprite=0x14, frame=31, gate=2, mode=0","spriteHex":"0x14","frame":31,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004dc444","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=8, mode=0","spriteHex":"0x14","frame":32,"gate":8},{"tick":18,"kind":"helper-call","vaHex":"0x004dc45c","opcode":"0xbd","summary":"helper-call id=32; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":32},{"tick":18,"kind":"effect-sound","vaHex":"0x004dc478","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 10; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":10,"effectArgsHex":"01 00 0a"},{"tick":18,"kind":"actor-flag","vaHex":"0x004dc47c","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":18,"kind":"actor-frame","vaHex":"0x004dc484","opcode":"0x12","summary":"direct sprite/frame selector write sprite=0x14, frame=3, field +0x28, mode=0x80","spriteHex":"0x14","frame":3,"gate":1},{"tick":19,"kind":"wait","vaHex":"0x004dc48c","opcode":"0xc1","summary":"actor flag barrier mode=1, mask=0x00000002"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:direct-frame-spawn"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"rinshan:0x32","ownerKey":"rinshan","ownerName":"린샹","skillName":"기공독치료","familyName":"회복/방어 특수기","skillIdHex":"0x32","levelOrFixed":null,"targetClass":"ally-single","mpCost":3,"hitCount":1,"frameSequence":[29,30,31,32,3],"expandedFrameGateSequence":[{"tick":0,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":30,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":31,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":32,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":3,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":19,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[10],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":18,"opcode":"0x24","wlkNo":10,"effectArgsHex":"01 00 0a","role":"effect/cast cue","vaHex":"0x004dc478"}],"helperIds":[33],"helperFacts":[{"helperId":33,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["98@0"],"emitFrames":[98],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5274","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"}]},{"vaHex":"0x004b528c","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b520c","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b520c","targetSnippet":[{"vaHex":"0x004b520c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:rinshan:0x32","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dc41c","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"ally-single-support","casterRule":"ally-single-support","startAnchor":"home","motionKind":"support","motionTarget":"ally-single","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"mixed-fixed-family","familyPatternNotes":["한 패밀리에 서로 다른 고정/장비 기술명이 섞여 있어 4단계 숙련도 비교로 보면 안 된다.","skill names: 기공회복, 기공독치료, 기공대회복, 수경"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004dc41c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004dc424","opcode":"0x21","summary":"set sprite=0x14, frame=29, gate=2, mode=0","spriteHex":"0x14","frame":29,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dc42c","opcode":"0x21","summary":"set sprite=0x14, frame=30, gate=6, mode=0","spriteHex":"0x14","frame":30,"gate":6},{"tick":8,"kind":"actor-write","vaHex":"0x004dc434","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004dc43c","opcode":"0x21","summary":"set sprite=0x14, frame=31, gate=2, mode=0","spriteHex":"0x14","frame":31,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004dc444","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=8, mode=0","spriteHex":"0x14","frame":32,"gate":8},{"tick":18,"kind":"helper-call","vaHex":"0x004dc468","opcode":"0xbd","summary":"helper-call id=33; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":33},{"tick":18,"kind":"effect-sound","vaHex":"0x004dc478","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 10; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":10,"effectArgsHex":"01 00 0a"},{"tick":18,"kind":"actor-flag","vaHex":"0x004dc47c","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":18,"kind":"actor-frame","vaHex":"0x004dc484","opcode":"0x12","summary":"direct sprite/frame selector write sprite=0x14, frame=3, field +0x28, mode=0x80","spriteHex":"0x14","frame":3,"gate":1},{"tick":19,"kind":"wait","vaHex":"0x004dc48c","opcode":"0xc1","summary":"actor flag barrier mode=1, mask=0x00000002"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:direct-frame-spawn"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"rinshan:0x33","ownerKey":"rinshan","ownerName":"린샹","skillName":"기공대회복","familyName":"회복/방어 특수기","skillIdHex":"0x33","levelOrFixed":null,"targetClass":"ally-all","mpCost":10,"hitCount":1,"frameSequence":[29,30,31,32,3],"expandedFrameGateSequence":[{"tick":0,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":30,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":31,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":32,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":3,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":19,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[10],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":18,"opcode":"0x24","wlkNo":10,"effectArgsHex":"01 00 0a","role":"effect/cast cue","vaHex":"0x004dc478"}],"helperIds":[34],"helperFacts":[{"helperId":34,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["98@0"],"emitFrames":[98],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5274","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"}]},{"vaHex":"0x004b528c","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b520c","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b520c","targetSnippet":[{"vaHex":"0x004b520c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:rinshan:0x33","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dc41c","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"ally-all-support","casterRule":"ally-all-support","startAnchor":"home","motionKind":"support","motionTarget":"ally-all","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"mixed-fixed-family","familyPatternNotes":["한 패밀리에 서로 다른 고정/장비 기술명이 섞여 있어 4단계 숙련도 비교로 보면 안 된다.","skill names: 기공회복, 기공독치료, 기공대회복, 수경"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004dc41c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004dc424","opcode":"0x21","summary":"set sprite=0x14, frame=29, gate=2, mode=0","spriteHex":"0x14","frame":29,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dc42c","opcode":"0x21","summary":"set sprite=0x14, frame=30, gate=6, mode=0","spriteHex":"0x14","frame":30,"gate":6},{"tick":8,"kind":"actor-write","vaHex":"0x004dc434","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004dc43c","opcode":"0x21","summary":"set sprite=0x14, frame=31, gate=2, mode=0","spriteHex":"0x14","frame":31,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004dc444","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=8, mode=0","spriteHex":"0x14","frame":32,"gate":8},{"tick":18,"kind":"helper-call","vaHex":"0x004dc474","opcode":"0xbd","summary":"helper-call id=34; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":34},{"tick":18,"kind":"effect-sound","vaHex":"0x004dc478","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 10; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":10,"effectArgsHex":"01 00 0a"},{"tick":18,"kind":"actor-flag","vaHex":"0x004dc47c","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":18,"kind":"actor-frame","vaHex":"0x004dc484","opcode":"0x12","summary":"direct sprite/frame selector write sprite=0x14, frame=3, field +0x28, mode=0x80","spriteHex":"0x14","frame":3,"gate":1},{"tick":19,"kind":"wait","vaHex":"0x004dc48c","opcode":"0xc1","summary":"actor flag barrier mode=1, mask=0x00000002"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:direct-frame-spawn"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"rinshan:0x34","ownerKey":"rinshan","ownerName":"린샹","skillName":"수경","familyName":"회복/방어 특수기","skillIdHex":"0x34","levelOrFixed":null,"targetClass":"self","mpCost":15,"hitCount":1,"frameSequence":[29,30,31,32,3],"expandedFrameGateSequence":[{"tick":0,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":30,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":31,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":32,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":3,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":19,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[10],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":18,"opcode":"0x24","wlkNo":10,"effectArgsHex":"01 00 0a","role":"effect/cast cue","vaHex":"0x004dc478"}],"helperIds":[32],"helperFacts":[{"helperId":32,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["98@0"],"emitFrames":[98],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5274","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"}]},{"vaHex":"0x004b528c","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b520c","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b520c","targetSnippet":[{"vaHex":"0x004b520c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:rinshan:0x34","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dc41c","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"mixed-fixed-family","familyPatternNotes":["한 패밀리에 서로 다른 고정/장비 기술명이 섞여 있어 4단계 숙련도 비교로 보면 안 된다.","skill names: 기공회복, 기공독치료, 기공대회복, 수경"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004dc41c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004dc424","opcode":"0x21","summary":"set sprite=0x14, frame=29, gate=2, mode=0","spriteHex":"0x14","frame":29,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dc42c","opcode":"0x21","summary":"set sprite=0x14, frame=30, gate=6, mode=0","spriteHex":"0x14","frame":30,"gate":6},{"tick":8,"kind":"actor-write","vaHex":"0x004dc434","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004dc43c","opcode":"0x21","summary":"set sprite=0x14, frame=31, gate=2, mode=0","spriteHex":"0x14","frame":31,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004dc444","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=8, mode=0","spriteHex":"0x14","frame":32,"gate":8},{"tick":18,"kind":"helper-call","vaHex":"0x004dc45c","opcode":"0xbd","summary":"helper-call id=32; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":32},{"tick":18,"kind":"effect-sound","vaHex":"0x004dc478","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 10; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":10,"effectArgsHex":"01 00 0a"},{"tick":18,"kind":"actor-flag","vaHex":"0x004dc47c","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":18,"kind":"actor-frame","vaHex":"0x004dc484","opcode":"0x12","summary":"direct sprite/frame selector write sprite=0x14, frame=3, field +0x28, mode=0x80","spriteHex":"0x14","frame":3,"gate":1},{"tick":19,"kind":"wait","vaHex":"0x004dc48c","opcode":"0xc1","summary":"actor flag barrier mode=1, mask=0x00000002"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:direct-frame-spawn"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"smashu:0x01","ownerKey":"smashu","ownerName":"스마슈","skillName":"베기","familyName":"display-table fallback","skillIdHex":"0x01","levelOrFixed":null,"targetClass":"enemy-single","mpCost":0,"hitCount":1,"frameSequence":[20,21,22,2],"expandedFrameGateSequence":[{"tick":0,"frame":20,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":8,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[3],"soundModel":"result-only","soundCalls":[{"tick":6,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x005247c0"}],"helperIds":[13,43],"helperFacts":[{"helperId":13,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3da8","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3ddc","frames":["0@2","1@2","2@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":43,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["92@0"],"emitFrames":[92],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-id-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:smashu:0x01","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x00524790","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[43],"positionClass":"single-target-front-local-combo-inferred","casterRule":"target-front-implicit-local-combo","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has actor/display local x/y writes but no movement selector; treat as implicit close target-front combo","helper/effect cues are attached effects, not enough by themselves to classify the caster as ranged"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 4, 10, 1, 1, 3, 1, 1, 1, 1, 1","0xc2 result sound count changes: 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 0, 0, 0, 0","frame count changes: 4, 4, 6, 6, 18, 5, 11, 16, 5, 8, 19, 1, 1, 1, 4","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x00524790","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x00524798","opcode":"0x21","summary":"set sprite=0x17, frame=20, gate=2, mode=0","spriteHex":"0x17","frame":20,"gate":2},{"tick":2,"kind":"actor-write","vaHex":"0x005247a0","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":2,"kind":"actor-frame","vaHex":"0x005247a8","opcode":"0x21","summary":"set sprite=0x17, frame=21, gate=2, mode=0","spriteHex":"0x17","frame":21,"gate":2},{"tick":4,"kind":"helper-call","vaHex":"0x005247b0","opcode":"0xbd","summary":"helper-call id=13; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":13},{"tick":4,"kind":"actor-frame","vaHex":"0x005247b4","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=2, mode=0","spriteHex":"0x17","frame":22,"gate":2},{"tick":6,"kind":"helper-call","vaHex":"0x005247bc","opcode":"0xbd","summary":"helper-call id=43; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":43},{"tick":6,"kind":"result-sound","vaHex":"0x005247c0","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":6,"kind":"actor-flag","vaHex":"0x005247c4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":6,"kind":"actor-flag","vaHex":"0x005247cc","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":6,"kind":"wait","vaHex":"0x005247d4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":6,"kind":"actor-frame","vaHex":"0x005247d8","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":6,"soundVaHex":"0x005247c0","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x005247c4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x005247cc","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x005247d4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only","helper:multi-frameScript-effect","helper:direct-frame-spawn"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x02","ownerKey":"smashu","ownerName":"스마슈","skillName":"마구베기","familyName":"display-table fallback","skillIdHex":"0x02","levelOrFixed":null,"targetClass":"enemy-single","mpCost":0,"hitCount":1,"frameSequence":[20,21,22,2],"expandedFrameGateSequence":[{"tick":0,"frame":20,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":8,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[3],"soundModel":"result-only","soundCalls":[{"tick":6,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x005247c0"}],"helperIds":[13,43],"helperFacts":[{"helperId":13,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3da8","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3ddc","frames":["0@2","1@2","2@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":43,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["92@0"],"emitFrames":[92],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-id-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:smashu:0x02","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x00524790","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[43],"positionClass":"single-target-front-local-combo-inferred","casterRule":"target-front-implicit-local-combo","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has actor/display local x/y writes but no movement selector; treat as implicit close target-front combo","helper/effect cues are attached effects, not enough by themselves to classify the caster as ranged"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 4, 10, 1, 1, 3, 1, 1, 1, 1, 1","0xc2 result sound count changes: 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 0, 0, 0, 0","frame count changes: 4, 4, 6, 6, 18, 5, 11, 16, 5, 8, 19, 1, 1, 1, 4","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x00524790","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x00524798","opcode":"0x21","summary":"set sprite=0x17, frame=20, gate=2, mode=0","spriteHex":"0x17","frame":20,"gate":2},{"tick":2,"kind":"actor-write","vaHex":"0x005247a0","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":2,"kind":"actor-frame","vaHex":"0x005247a8","opcode":"0x21","summary":"set sprite=0x17, frame=21, gate=2, mode=0","spriteHex":"0x17","frame":21,"gate":2},{"tick":4,"kind":"helper-call","vaHex":"0x005247b0","opcode":"0xbd","summary":"helper-call id=13; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":13},{"tick":4,"kind":"actor-frame","vaHex":"0x005247b4","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=2, mode=0","spriteHex":"0x17","frame":22,"gate":2},{"tick":6,"kind":"helper-call","vaHex":"0x005247bc","opcode":"0xbd","summary":"helper-call id=43; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":43},{"tick":6,"kind":"result-sound","vaHex":"0x005247c0","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":6,"kind":"actor-flag","vaHex":"0x005247c4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":6,"kind":"actor-flag","vaHex":"0x005247cc","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":6,"kind":"wait","vaHex":"0x005247d4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":6,"kind":"actor-frame","vaHex":"0x005247d8","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":6,"soundVaHex":"0x005247c0","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x005247c4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x005247cc","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x005247d4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only","helper:multi-frameScript-effect","helper:direct-frame-spawn"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x03","ownerKey":"smashu","ownerName":"스마슈","skillName":"마구베기","familyName":"display-table fallback","skillIdHex":"0x03","levelOrFixed":null,"targetClass":"enemy-single","mpCost":0,"hitCount":1,"frameSequence":[23,24,25,22,22,2],"expandedFrameGateSequence":[{"tick":0,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":24,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":22,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":18,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[4],"soundModel":"result-only","soundCalls":[{"tick":12,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00524824"}],"helperIds":[13,45],"helperFacts":[{"helperId":13,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3da8","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3ddc","frames":["0@2","1@2","2@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":45,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":3,"directSpawnFrames":["92@0","92@0","92@0"],"emitFrames":[92],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 3 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-id-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:smashu:0x03","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x005247ec","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[45],"positionClass":"single-target-front-local-combo-inferred","casterRule":"target-front-implicit-local-combo","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has actor/display local x/y writes but no movement selector; treat as implicit close target-front combo","helper/effect cues are attached effects, not enough by themselves to classify the caster as ranged"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 4, 10, 1, 1, 3, 1, 1, 1, 1, 1","0xc2 result sound count changes: 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 0, 0, 0, 0","frame count changes: 4, 4, 6, 6, 18, 5, 11, 16, 5, 8, 19, 1, 1, 1, 4","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x005247ec","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x005247f4","opcode":"0x21","summary":"set sprite=0x17, frame=23, gate=2, mode=0","spriteHex":"0x17","frame":23,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x005247fc","opcode":"0x21","summary":"set sprite=0x17, frame=24, gate=6, mode=0","spriteHex":"0x17","frame":24,"gate":6},{"tick":8,"kind":"actor-write","vaHex":"0x00524804","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x0052480c","opcode":"0x21","summary":"set sprite=0x17, frame=25, gate=2, mode=0","spriteHex":"0x17","frame":25,"gate":2},{"tick":10,"kind":"helper-call","vaHex":"0x00524814","opcode":"0xbd","summary":"helper-call id=13; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":13},{"tick":10,"kind":"actor-frame","vaHex":"0x00524818","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=2, mode=0","spriteHex":"0x17","frame":22,"gate":2},{"tick":12,"kind":"helper-call","vaHex":"0x00524820","opcode":"0xbd","summary":"helper-call id=45; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":45},{"tick":12,"kind":"result-sound","vaHex":"0x00524824","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x00524828","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x00524830","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x00524838","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-frame","vaHex":"0x0052483c","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=4, mode=0","spriteHex":"0x17","frame":22,"gate":4},{"tick":16,"kind":"actor-frame","vaHex":"0x00524844","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":12,"soundVaHex":"0x00524824","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00524828","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00524830","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00524838","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only","helper:multi-frameScript-effect","helper:direct-frame-spawn"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x04","ownerKey":"smashu","ownerName":"스마슈","skillName":"마구베기","familyName":"display-table fallback","skillIdHex":"0x04","levelOrFixed":null,"targetClass":"enemy-single","mpCost":0,"hitCount":1,"frameSequence":[23,24,25,22,22,2],"expandedFrameGateSequence":[{"tick":0,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":24,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":22,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":18,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[4],"soundModel":"result-only","soundCalls":[{"tick":12,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00524824"}],"helperIds":[13,45],"helperFacts":[{"helperId":13,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3da8","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3ddc","frames":["0@2","1@2","2@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":45,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":3,"directSpawnFrames":["92@0","92@0","92@0"],"emitFrames":[92],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 3 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-id-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:smashu:0x04","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x005247ec","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[45],"positionClass":"single-target-front-local-combo-inferred","casterRule":"target-front-implicit-local-combo","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has actor/display local x/y writes but no movement selector; treat as implicit close target-front combo","helper/effect cues are attached effects, not enough by themselves to classify the caster as ranged"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 4, 10, 1, 1, 3, 1, 1, 1, 1, 1","0xc2 result sound count changes: 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 0, 0, 0, 0","frame count changes: 4, 4, 6, 6, 18, 5, 11, 16, 5, 8, 19, 1, 1, 1, 4","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x005247ec","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x005247f4","opcode":"0x21","summary":"set sprite=0x17, frame=23, gate=2, mode=0","spriteHex":"0x17","frame":23,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x005247fc","opcode":"0x21","summary":"set sprite=0x17, frame=24, gate=6, mode=0","spriteHex":"0x17","frame":24,"gate":6},{"tick":8,"kind":"actor-write","vaHex":"0x00524804","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x0052480c","opcode":"0x21","summary":"set sprite=0x17, frame=25, gate=2, mode=0","spriteHex":"0x17","frame":25,"gate":2},{"tick":10,"kind":"helper-call","vaHex":"0x00524814","opcode":"0xbd","summary":"helper-call id=13; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":13},{"tick":10,"kind":"actor-frame","vaHex":"0x00524818","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=2, mode=0","spriteHex":"0x17","frame":22,"gate":2},{"tick":12,"kind":"helper-call","vaHex":"0x00524820","opcode":"0xbd","summary":"helper-call id=45; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":45},{"tick":12,"kind":"result-sound","vaHex":"0x00524824","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":12,"kind":"actor-flag","vaHex":"0x00524828","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":12,"kind":"actor-flag","vaHex":"0x00524830","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":12,"kind":"wait","vaHex":"0x00524838","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":12,"kind":"actor-frame","vaHex":"0x0052483c","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=4, mode=0","spriteHex":"0x17","frame":22,"gate":4},{"tick":16,"kind":"actor-frame","vaHex":"0x00524844","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":12,"soundVaHex":"0x00524824","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00524828","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00524830","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00524838","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only","helper:multi-frameScript-effect","helper:direct-frame-spawn"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x05","ownerKey":"smashu","ownerName":"스마슈","skillName":"대타격","familyName":"대타격","skillIdHex":"0x05","levelOrFixed":1,"targetClass":"enemy-single","mpCost":10,"hitCount":1,"frameSequence":[19,20,21,22,22,2],"expandedFrameGateSequence":[{"tick":0,"frame":19,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":20,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":22,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":18,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[20],"soundModel":"result-only","soundCalls":[{"tick":10,"opcode":"0xc2","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00524994"}],"helperIds":[15],"helperFacts":[{"helperId":15,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3e94","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3ec0","frames":["6@2","7@2","8@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b3e68","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b3e80","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] == right:imm.byte=0x02 -> 0x004b3e80","targetSnippet":[{"vaHex":"0x004b3e80","opcode":"0x20","category":"frame-script-pointer","summary":"set display.frameScript(+0x64) = 0x004b3ec4"},{"vaHex":"0x004b3e88","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b3e8c","opcode":"0x03","category":"jump","summary":"jump 0x004b3e88"},{"vaHex":"0x004b3e94","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=6, gate=2, mode=0"},{"vaHex":"0x004b3e9c","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=7, gate=2, mode=0"},{"vaHex":"0x004b3ea4","opcode":"0x12","category":"write","summary":"add display/actor field +0x20, imm=0x00200000 (32px)"},{"vaHex":"0x004b3eac","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:display.byte[+0xe7] sub= source:imm.byte=0x04"},{"vaHex":"0x004b3eb0","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=8, gate=2, mode=0"}]}],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-id-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:smashu:0x05","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x00524874","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-front-local-combo-inferred","casterRule":"target-front-implicit-local-combo","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has actor/display local x/y writes but no movement selector; treat as implicit close target-front combo","helper/effect cues are attached effects, not enough by themselves to classify the caster as ranged"],"familyPatternClass":"constant-fixed-family","familyPatternNotes":["현재 승격된 actor VM 기준으로 숙련도별 frame/gate/hit 변화가 없다.","이는 미해석이 아니라 actor 동작은 고정이고, 숙련도 차이는 MP/헬퍼/효과 크기/결과음 등 다른 레이어에서 확인해야 하는 패밀리다."],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x00524874","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x0052487c","opcode":"0x21","summary":"set sprite=0x17, frame=19, gate=2, mode=0","spriteHex":"0x17","frame":19,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00524884","opcode":"0x21","summary":"set sprite=0x17, frame=20, gate=4, mode=0","spriteHex":"0x17","frame":20,"gate":4},{"tick":6,"kind":"actor-write","vaHex":"0x0052488c","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":6,"kind":"actor-frame","vaHex":"0x00524894","opcode":"0x21","summary":"set sprite=0x17, frame=21, gate=2, mode=0","spriteHex":"0x17","frame":21,"gate":2},{"tick":8,"kind":"actor-frame","vaHex":"0x00524988","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=2, mode=0","spriteHex":"0x17","frame":22,"gate":2},{"tick":10,"kind":"helper-call","vaHex":"0x00524990","opcode":"0xbd","summary":"helper-call id=15; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":15},{"tick":10,"kind":"result-sound","vaHex":"0x00524994","opcode":"0xc2","summary":"WLK id 20 (normal id 20, alt id 14, mode=0)","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0},{"tick":10,"kind":"actor-flag","vaHex":"0x00524998","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x005249a0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x005249a8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-frame","vaHex":"0x005249ac","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=6, mode=0","spriteHex":"0x17","frame":22,"gate":6},{"tick":16,"kind":"actor-frame","vaHex":"0x005249b4","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2},{"tick":18,"kind":"movement","vaHex":"0x005249bc","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":10,"soundVaHex":"0x00524994","normalWlkNo":20,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00524998","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x005249a0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x005249a8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x06","ownerKey":"smashu","ownerName":"스마슈","skillName":"대타격","familyName":"대타격","skillIdHex":"0x06","levelOrFixed":2,"targetClass":"enemy-single","mpCost":10,"hitCount":1,"frameSequence":[19,20,21,22,22,2],"expandedFrameGateSequence":[{"tick":0,"frame":19,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":20,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":22,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":18,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[20],"soundModel":"result-only","soundCalls":[{"tick":10,"opcode":"0xc2","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00524994"}],"helperIds":[15],"helperFacts":[{"helperId":15,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3e94","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3ec0","frames":["6@2","7@2","8@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b3e68","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b3e80","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] == right:imm.byte=0x02 -> 0x004b3e80","targetSnippet":[{"vaHex":"0x004b3e80","opcode":"0x20","category":"frame-script-pointer","summary":"set display.frameScript(+0x64) = 0x004b3ec4"},{"vaHex":"0x004b3e88","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b3e8c","opcode":"0x03","category":"jump","summary":"jump 0x004b3e88"},{"vaHex":"0x004b3e94","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=6, gate=2, mode=0"},{"vaHex":"0x004b3e9c","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=7, gate=2, mode=0"},{"vaHex":"0x004b3ea4","opcode":"0x12","category":"write","summary":"add display/actor field +0x20, imm=0x00200000 (32px)"},{"vaHex":"0x004b3eac","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:display.byte[+0xe7] sub= source:imm.byte=0x04"},{"vaHex":"0x004b3eb0","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=8, gate=2, mode=0"}]}],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-id-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:smashu:0x06","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x00524874","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-front-local-combo-inferred","casterRule":"target-front-implicit-local-combo","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has actor/display local x/y writes but no movement selector; treat as implicit close target-front combo","helper/effect cues are attached effects, not enough by themselves to classify the caster as ranged"],"familyPatternClass":"constant-fixed-family","familyPatternNotes":["현재 승격된 actor VM 기준으로 숙련도별 frame/gate/hit 변화가 없다.","이는 미해석이 아니라 actor 동작은 고정이고, 숙련도 차이는 MP/헬퍼/효과 크기/결과음 등 다른 레이어에서 확인해야 하는 패밀리다."],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x00524874","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x0052487c","opcode":"0x21","summary":"set sprite=0x17, frame=19, gate=2, mode=0","spriteHex":"0x17","frame":19,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00524884","opcode":"0x21","summary":"set sprite=0x17, frame=20, gate=4, mode=0","spriteHex":"0x17","frame":20,"gate":4},{"tick":6,"kind":"actor-write","vaHex":"0x0052488c","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":6,"kind":"actor-frame","vaHex":"0x00524894","opcode":"0x21","summary":"set sprite=0x17, frame=21, gate=2, mode=0","spriteHex":"0x17","frame":21,"gate":2},{"tick":8,"kind":"actor-frame","vaHex":"0x00524988","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=2, mode=0","spriteHex":"0x17","frame":22,"gate":2},{"tick":10,"kind":"helper-call","vaHex":"0x00524990","opcode":"0xbd","summary":"helper-call id=15; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":15},{"tick":10,"kind":"result-sound","vaHex":"0x00524994","opcode":"0xc2","summary":"WLK id 20 (normal id 20, alt id 14, mode=0)","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0},{"tick":10,"kind":"actor-flag","vaHex":"0x00524998","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x005249a0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x005249a8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-frame","vaHex":"0x005249ac","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=6, mode=0","spriteHex":"0x17","frame":22,"gate":6},{"tick":16,"kind":"actor-frame","vaHex":"0x005249b4","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2},{"tick":18,"kind":"movement","vaHex":"0x005249bc","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":10,"soundVaHex":"0x00524994","normalWlkNo":20,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00524998","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x005249a0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x005249a8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x07","ownerKey":"smashu","ownerName":"스마슈","skillName":"대타격","familyName":"대타격","skillIdHex":"0x07","levelOrFixed":3,"targetClass":"enemy-single","mpCost":9,"hitCount":1,"frameSequence":[19,20,21,22,22,2],"expandedFrameGateSequence":[{"tick":0,"frame":19,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":20,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":22,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":18,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[20],"soundModel":"result-only","soundCalls":[{"tick":10,"opcode":"0xc2","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00524994"}],"helperIds":[15],"helperFacts":[{"helperId":15,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3e94","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3ec0","frames":["6@2","7@2","8@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b3e68","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b3e80","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] == right:imm.byte=0x02 -> 0x004b3e80","targetSnippet":[{"vaHex":"0x004b3e80","opcode":"0x20","category":"frame-script-pointer","summary":"set display.frameScript(+0x64) = 0x004b3ec4"},{"vaHex":"0x004b3e88","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b3e8c","opcode":"0x03","category":"jump","summary":"jump 0x004b3e88"},{"vaHex":"0x004b3e94","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=6, gate=2, mode=0"},{"vaHex":"0x004b3e9c","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=7, gate=2, mode=0"},{"vaHex":"0x004b3ea4","opcode":"0x12","category":"write","summary":"add display/actor field +0x20, imm=0x00200000 (32px)"},{"vaHex":"0x004b3eac","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:display.byte[+0xe7] sub= source:imm.byte=0x04"},{"vaHex":"0x004b3eb0","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=8, gate=2, mode=0"}]}],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-id-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:smashu:0x07","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x00524874","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-front-local-combo-inferred","casterRule":"target-front-implicit-local-combo","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has actor/display local x/y writes but no movement selector; treat as implicit close target-front combo","helper/effect cues are attached effects, not enough by themselves to classify the caster as ranged"],"familyPatternClass":"constant-fixed-family","familyPatternNotes":["현재 승격된 actor VM 기준으로 숙련도별 frame/gate/hit 변화가 없다.","이는 미해석이 아니라 actor 동작은 고정이고, 숙련도 차이는 MP/헬퍼/효과 크기/결과음 등 다른 레이어에서 확인해야 하는 패밀리다."],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x00524874","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x0052487c","opcode":"0x21","summary":"set sprite=0x17, frame=19, gate=2, mode=0","spriteHex":"0x17","frame":19,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00524884","opcode":"0x21","summary":"set sprite=0x17, frame=20, gate=4, mode=0","spriteHex":"0x17","frame":20,"gate":4},{"tick":6,"kind":"actor-write","vaHex":"0x0052488c","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":6,"kind":"actor-frame","vaHex":"0x00524894","opcode":"0x21","summary":"set sprite=0x17, frame=21, gate=2, mode=0","spriteHex":"0x17","frame":21,"gate":2},{"tick":8,"kind":"actor-frame","vaHex":"0x00524988","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=2, mode=0","spriteHex":"0x17","frame":22,"gate":2},{"tick":10,"kind":"helper-call","vaHex":"0x00524990","opcode":"0xbd","summary":"helper-call id=15; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":15},{"tick":10,"kind":"result-sound","vaHex":"0x00524994","opcode":"0xc2","summary":"WLK id 20 (normal id 20, alt id 14, mode=0)","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0},{"tick":10,"kind":"actor-flag","vaHex":"0x00524998","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x005249a0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x005249a8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-frame","vaHex":"0x005249ac","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=6, mode=0","spriteHex":"0x17","frame":22,"gate":6},{"tick":16,"kind":"actor-frame","vaHex":"0x005249b4","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2},{"tick":18,"kind":"movement","vaHex":"0x005249bc","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":10,"soundVaHex":"0x00524994","normalWlkNo":20,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00524998","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x005249a0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x005249a8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x08","ownerKey":"smashu","ownerName":"스마슈","skillName":"대타격","familyName":"대타격","skillIdHex":"0x08","levelOrFixed":4,"targetClass":"enemy-single","mpCost":8,"hitCount":1,"frameSequence":[19,20,21,22,22,2],"expandedFrameGateSequence":[{"tick":0,"frame":19,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":20,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":22,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":18,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[20],"soundModel":"result-only","soundCalls":[{"tick":10,"opcode":"0xc2","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00524994"}],"helperIds":[15],"helperFacts":[{"helperId":15,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3e94","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3ec0","frames":["6@2","7@2","8@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b3e68","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b3e80","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] == right:imm.byte=0x02 -> 0x004b3e80","targetSnippet":[{"vaHex":"0x004b3e80","opcode":"0x20","category":"frame-script-pointer","summary":"set display.frameScript(+0x64) = 0x004b3ec4"},{"vaHex":"0x004b3e88","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b3e8c","opcode":"0x03","category":"jump","summary":"jump 0x004b3e88"},{"vaHex":"0x004b3e94","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=6, gate=2, mode=0"},{"vaHex":"0x004b3e9c","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=7, gate=2, mode=0"},{"vaHex":"0x004b3ea4","opcode":"0x12","category":"write","summary":"add display/actor field +0x20, imm=0x00200000 (32px)"},{"vaHex":"0x004b3eac","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:display.byte[+0xe7] sub= source:imm.byte=0x04"},{"vaHex":"0x004b3eb0","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=8, gate=2, mode=0"}]}],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-id-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:smashu:0x08","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x00524874","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"single-target-front-local-combo-inferred","casterRule":"target-front-implicit-local-combo","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has actor/display local x/y writes but no movement selector; treat as implicit close target-front combo","helper/effect cues are attached effects, not enough by themselves to classify the caster as ranged"],"familyPatternClass":"constant-fixed-family","familyPatternNotes":["현재 승격된 actor VM 기준으로 숙련도별 frame/gate/hit 변화가 없다.","이는 미해석이 아니라 actor 동작은 고정이고, 숙련도 차이는 MP/헬퍼/효과 크기/결과음 등 다른 레이어에서 확인해야 하는 패밀리다."],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x00524874","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x0052487c","opcode":"0x21","summary":"set sprite=0x17, frame=19, gate=2, mode=0","spriteHex":"0x17","frame":19,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00524884","opcode":"0x21","summary":"set sprite=0x17, frame=20, gate=4, mode=0","spriteHex":"0x17","frame":20,"gate":4},{"tick":6,"kind":"actor-write","vaHex":"0x0052488c","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":6,"kind":"actor-frame","vaHex":"0x00524894","opcode":"0x21","summary":"set sprite=0x17, frame=21, gate=2, mode=0","spriteHex":"0x17","frame":21,"gate":2},{"tick":8,"kind":"actor-frame","vaHex":"0x00524988","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=2, mode=0","spriteHex":"0x17","frame":22,"gate":2},{"tick":10,"kind":"helper-call","vaHex":"0x00524990","opcode":"0xbd","summary":"helper-call id=15; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":15},{"tick":10,"kind":"result-sound","vaHex":"0x00524994","opcode":"0xc2","summary":"WLK id 20 (normal id 20, alt id 14, mode=0)","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0},{"tick":10,"kind":"actor-flag","vaHex":"0x00524998","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x005249a0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x005249a8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-frame","vaHex":"0x005249ac","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=6, mode=0","spriteHex":"0x17","frame":22,"gate":6},{"tick":16,"kind":"actor-frame","vaHex":"0x005249b4","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2},{"tick":18,"kind":"movement","vaHex":"0x005249bc","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":10,"soundVaHex":"0x00524994","normalWlkNo":20,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00524998","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x005249a0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x005249a8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x09","ownerKey":"smashu","ownerName":"스마슈","skillName":"쾌진격","familyName":"쾌진격","skillIdHex":"0x09","levelOrFixed":1,"targetClass":"enemy-single","mpCost":15,"hitCount":1,"frameSequence":[7,8,9,2],"expandedFrameGateSequence":[{"tick":0,"frame":7,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":8,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":9,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":11,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":13,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[24],"soundModel":"result-only","soundCalls":[{"tick":10,"opcode":"0xc2","wlkNo":24,"normalWlkNo":24,"altWlkNo":14,"mode":1,"role":"result normal with alternate operand","vaHex":"0x005249dc"}],"helperIds":[12],"helperFacts":[{"helperId":12,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3d18","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3d40","frames":["65@2","66@2","67@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b3cec","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b3d04","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] != right:imm.byte=0x01 -> 0x004b3d04","targetSnippet":[{"vaHex":"0x004b3d04","opcode":"0x20","category":"frame-script-pointer","summary":"set display.frameScript(+0x64) = 0x004b3d44"},{"vaHex":"0x004b3d0c","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b3d10","opcode":"0x03","category":"jump","summary":"jump 0x004b3d0c"},{"vaHex":"0x004b3d18","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=65, gate=2, mode=0"},{"vaHex":"0x004b3d20","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=66, gate=2, mode=0"},{"vaHex":"0x004b3d28","opcode":"0x12","category":"write","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)"},{"vaHex":"0x004b3d30","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=67, gate=2, mode=0"},{"vaHex":"0x004b3d38","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"}]}],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-id-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:smashu:0x09","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x005249cc","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-approach-motion","casterRule":"home-approach-target","startAnchor":"home","motionKind":"dash","motionTarget":"target-front","positionConfidence":"high","positionBucket":"approach","positionBucketLabel":"돌진/접근","battleMapPlacementSummary":"기본 위치에서 출발해 몬스터 앞까지 돌진한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["nonzero movement selector 1 moves the actor from home toward target-front"],"familyPatternClass":"speed-scaling","familyPatternNotes":["movement divisor descends: 20, 16, 12, 8","타수 증가가 아니라 같은 동작의 속도/관통 시간 변화로 처리해야 한다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x005249cc","opcode":"0x21","summary":"set sprite=0x17, frame=7, gate=4, mode=0","spriteHex":"0x17","frame":7,"gate":4},{"tick":4,"kind":"actor-frame","vaHex":"0x005249d4","opcode":"0x21","summary":"set sprite=0x17, frame=8, gate=6, mode=0","spriteHex":"0x17","frame":8,"gate":6},{"tick":10,"kind":"result-sound","vaHex":"0x005249dc","opcode":"0xc2","summary":"WLK id 24 (normal id 24, alt id 14, mode=1)","wlkNo":24,"normalWlkNo":24,"altWlkNo":14,"mode":1},{"tick":10,"kind":"movement","vaHex":"0x005249f8","opcode":"0xbc","summary":"interpolated child motion mode=1, selector=1, stepDivisor=20: target-relative center/size-adjusted placement.","selector":1,"divisor":20,"movementMode":1},{"tick":10,"kind":"actor-frame","vaHex":"0x00524a2c","opcode":"0x12","summary":"direct sprite/frame selector write sprite=0x17, frame=9, field +0x28, mode=0x80","spriteHex":"0x17","frame":9,"gate":1},{"tick":11,"kind":"wait","vaHex":"0x00524a34","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000200"},{"tick":11,"kind":"helper-call","vaHex":"0x00524a3c","opcode":"0xbd","summary":"helper-call id=12; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":12},{"tick":11,"kind":"actor-flag","vaHex":"0x00524a40","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":11,"kind":"actor-flag","vaHex":"0x00524a48","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":11,"kind":"wait","vaHex":"0x00524a50","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":11,"kind":"actor-frame","vaHex":"0x00524a54","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2},{"tick":13,"kind":"movement","vaHex":"0x00524a5c","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":10,"soundVaHex":"0x005249dc","normalWlkNo":24,"altWlkNo":14,"mode":1,"flags":[{"vaHex":"0x00524a40","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00524a48","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00524a34","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000200"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x0a","ownerKey":"smashu","ownerName":"스마슈","skillName":"쾌진격","familyName":"쾌진격","skillIdHex":"0x0a","levelOrFixed":2,"targetClass":"enemy-single","mpCost":15,"hitCount":1,"frameSequence":[7,8,9,2],"expandedFrameGateSequence":[{"tick":0,"frame":7,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":8,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":9,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":11,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":13,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[24],"soundModel":"result-only","soundCalls":[{"tick":10,"opcode":"0xc2","wlkNo":24,"normalWlkNo":24,"altWlkNo":14,"mode":1,"role":"result normal with alternate operand","vaHex":"0x005249dc"}],"helperIds":[29,12],"helperFacts":[{"helperId":29,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["30@0"],"emitFrames":[30],"rootCounterSets":{"0x92":3,"0x94":3},"rootBranches":[{"vaHex":"0x004b4fd0","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b4fec","condition":"conditional branch motion.dx +0x74 bit-test 0x80000000; target 0x004b4fec","targetSnippet":[{"vaHex":"0x004b4fec","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b4ff0","opcode":"0x12","category":"write","summary":"div display/actor field +0x74, imm=0x00000010 (0.000244141px)"},{"vaHex":"0x004b4ff8","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b4ffc","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xba"},{"vaHex":"0x004b5000","opcode":"0x15","category":"conditional-branch","summary":"conditional branch motion.dy +0x78 bit-test 0x80000000; target 0x004b501c"},{"vaHex":"0x004b500c","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000010 (0.000244141px)"},{"vaHex":"0x004b5014","opcode":"0x03","category":"jump","summary":"jump 0x004b502c"},{"vaHex":"0x004b501c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"}]},{"vaHex":"0x004b5000","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b501c","condition":"conditional branch motion.dy +0x78 bit-test 0x80000000; target 0x004b501c","targetSnippet":[{"vaHex":"0x004b501c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b5020","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000010 (0.000244141px)"},{"vaHex":"0x004b5028","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b502c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5030","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5034","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x1c, mode=0xb0"},{"vaHex":"0x004b5038","opcode":"0x12","category":"write","summary":"add display/actor field +0x80, source +0x68, mode=0xb1"},{"vaHex":"0x004b503c","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x20, mode=0xb0"}]},{"vaHex":"0x004b50f8","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5030","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5030","targetSnippet":[{"vaHex":"0x004b5030","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5034","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x1c, mode=0xb0"},{"vaHex":"0x004b5038","opcode":"0x12","category":"write","summary":"add display/actor field +0x80, source +0x68, mode=0xb1"},{"vaHex":"0x004b503c","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x20, mode=0xb0"},{"vaHex":"0x004b5040","opcode":"0x12","category":"write","summary":"add display/actor field +0x84, source +0x6c, mode=0xb1"},{"vaHex":"0x004b5044","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b5138 into +0x58"},{"vaHex":"0x004b504c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5050","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"}]},{"vaHex":"0x004b510c","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b502c","condition":"conditional branch field +0x5c bit-test 0x00000200; target 0x004b502c","targetSnippet":[{"vaHex":"0x004b502c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5030","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5034","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x1c, mode=0xb0"},{"vaHex":"0x004b5038","opcode":"0x12","category":"write","summary":"add display/actor field +0x80, source +0x68, mode=0xb1"},{"vaHex":"0x004b503c","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x20, mode=0xb0"},{"vaHex":"0x004b5040","opcode":"0x12","category":"write","summary":"add display/actor field +0x84, source +0x6c, mode=0xb1"},{"vaHex":"0x004b5044","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b5138 into +0x58"},{"vaHex":"0x004b504c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"}]}],"childMotionLoops":[],"interpretation":["+0x94 raw 3 acts as burst/current-counter seed for +0x8e","static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]},{"helperId":12,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3d18","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3d40","frames":["65@2","66@2","67@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b3cec","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b3d04","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] != right:imm.byte=0x01 -> 0x004b3d04","targetSnippet":[{"vaHex":"0x004b3d04","opcode":"0x20","category":"frame-script-pointer","summary":"set display.frameScript(+0x64) = 0x004b3d44"},{"vaHex":"0x004b3d0c","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b3d10","opcode":"0x03","category":"jump","summary":"jump 0x004b3d0c"},{"vaHex":"0x004b3d18","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=65, gate=2, mode=0"},{"vaHex":"0x004b3d20","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=66, gate=2, mode=0"},{"vaHex":"0x004b3d28","opcode":"0x12","category":"write","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)"},{"vaHex":"0x004b3d30","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=67, gate=2, mode=0"},{"vaHex":"0x004b3d38","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"}]}],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-id-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:smashu:0x0a","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x005249cc","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-approach-motion","casterRule":"home-approach-target","startAnchor":"home","motionKind":"dash","motionTarget":"target-front","positionConfidence":"high","positionBucket":"approach","positionBucketLabel":"돌진/접근","battleMapPlacementSummary":"기본 위치에서 출발해 몬스터 앞까지 돌진한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["nonzero movement selector 1 moves the actor from home toward target-front"],"familyPatternClass":"speed-scaling","familyPatternNotes":["movement divisor descends: 20, 16, 12, 8","타수 증가가 아니라 같은 동작의 속도/관통 시간 변화로 처리해야 한다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x005249cc","opcode":"0x21","summary":"set sprite=0x17, frame=7, gate=4, mode=0","spriteHex":"0x17","frame":7,"gate":4},{"tick":4,"kind":"actor-frame","vaHex":"0x005249d4","opcode":"0x21","summary":"set sprite=0x17, frame=8, gate=6, mode=0","spriteHex":"0x17","frame":8,"gate":6},{"tick":10,"kind":"result-sound","vaHex":"0x005249dc","opcode":"0xc2","summary":"WLK id 24 (normal id 24, alt id 14, mode=1)","wlkNo":24,"normalWlkNo":24,"altWlkNo":14,"mode":1},{"tick":10,"kind":"movement","vaHex":"0x00524a04","opcode":"0xbc","summary":"interpolated child motion mode=1, selector=1, stepDivisor=16: target-relative center/size-adjusted placement.","selector":1,"divisor":16,"movementMode":1},{"tick":10,"kind":"helper-call","vaHex":"0x00524a08","opcode":"0xbd","summary":"helper-call id=29; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":29},{"tick":10,"kind":"actor-frame","vaHex":"0x00524a2c","opcode":"0x12","summary":"direct sprite/frame selector write sprite=0x17, frame=9, field +0x28, mode=0x80","spriteHex":"0x17","frame":9,"gate":1},{"tick":11,"kind":"wait","vaHex":"0x00524a34","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000200"},{"tick":11,"kind":"helper-call","vaHex":"0x00524a3c","opcode":"0xbd","summary":"helper-call id=12; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":12},{"tick":11,"kind":"actor-flag","vaHex":"0x00524a40","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":11,"kind":"actor-flag","vaHex":"0x00524a48","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":11,"kind":"wait","vaHex":"0x00524a50","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":11,"kind":"actor-frame","vaHex":"0x00524a54","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2},{"tick":13,"kind":"movement","vaHex":"0x00524a5c","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":10,"soundVaHex":"0x005249dc","normalWlkNo":24,"altWlkNo":14,"mode":1,"flags":[{"vaHex":"0x00524a40","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00524a48","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00524a34","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000200"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only","helper:direct-frame-spawn","helper-root-counters","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x0b","ownerKey":"smashu","ownerName":"스마슈","skillName":"쾌진격","familyName":"쾌진격","skillIdHex":"0x0b","levelOrFixed":3,"targetClass":"enemy-single","mpCost":14,"hitCount":1,"frameSequence":[7,8,9,2],"expandedFrameGateSequence":[{"tick":0,"frame":7,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":8,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":9,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":11,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":13,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[24],"soundModel":"result-only","soundCalls":[{"tick":10,"opcode":"0xc2","wlkNo":24,"normalWlkNo":24,"altWlkNo":14,"mode":1,"role":"result normal with alternate operand","vaHex":"0x005249dc"}],"helperIds":[30,12],"helperFacts":[{"helperId":30,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["30@0"],"emitFrames":[30],"rootCounterSets":{"0x92":3,"0x94":3},"rootBranches":[{"vaHex":"0x004b4fd0","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b4fec","condition":"conditional branch motion.dx +0x74 bit-test 0x80000000; target 0x004b4fec","targetSnippet":[{"vaHex":"0x004b4fec","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b4ff0","opcode":"0x12","category":"write","summary":"div display/actor field +0x74, imm=0x00000010 (0.000244141px)"},{"vaHex":"0x004b4ff8","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b4ffc","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xba"},{"vaHex":"0x004b5000","opcode":"0x15","category":"conditional-branch","summary":"conditional branch motion.dy +0x78 bit-test 0x80000000; target 0x004b501c"},{"vaHex":"0x004b500c","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000010 (0.000244141px)"},{"vaHex":"0x004b5014","opcode":"0x03","category":"jump","summary":"jump 0x004b502c"},{"vaHex":"0x004b501c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"}]},{"vaHex":"0x004b5000","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b501c","condition":"conditional branch motion.dy +0x78 bit-test 0x80000000; target 0x004b501c","targetSnippet":[{"vaHex":"0x004b501c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b5020","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000010 (0.000244141px)"},{"vaHex":"0x004b5028","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b502c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5030","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5034","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x1c, mode=0xb0"},{"vaHex":"0x004b5038","opcode":"0x12","category":"write","summary":"add display/actor field +0x80, source +0x68, mode=0xb1"},{"vaHex":"0x004b503c","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x20, mode=0xb0"}]},{"vaHex":"0x004b50f8","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5030","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5030","targetSnippet":[{"vaHex":"0x004b5030","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5034","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x1c, mode=0xb0"},{"vaHex":"0x004b5038","opcode":"0x12","category":"write","summary":"add display/actor field +0x80, source +0x68, mode=0xb1"},{"vaHex":"0x004b503c","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x20, mode=0xb0"},{"vaHex":"0x004b5040","opcode":"0x12","category":"write","summary":"add display/actor field +0x84, source +0x6c, mode=0xb1"},{"vaHex":"0x004b5044","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b5138 into +0x58"},{"vaHex":"0x004b504c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5050","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"}]},{"vaHex":"0x004b510c","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b502c","condition":"conditional branch field +0x5c bit-test 0x00000200; target 0x004b502c","targetSnippet":[{"vaHex":"0x004b502c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5030","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5034","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x1c, mode=0xb0"},{"vaHex":"0x004b5038","opcode":"0x12","category":"write","summary":"add display/actor field +0x80, source +0x68, mode=0xb1"},{"vaHex":"0x004b503c","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x20, mode=0xb0"},{"vaHex":"0x004b5040","opcode":"0x12","category":"write","summary":"add display/actor field +0x84, source +0x6c, mode=0xb1"},{"vaHex":"0x004b5044","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b5138 into +0x58"},{"vaHex":"0x004b504c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"}]}],"childMotionLoops":[],"interpretation":["+0x94 raw 3 acts as burst/current-counter seed for +0x8e","static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]},{"helperId":12,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3d18","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3d40","frames":["65@2","66@2","67@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b3cec","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b3d04","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] != right:imm.byte=0x01 -> 0x004b3d04","targetSnippet":[{"vaHex":"0x004b3d04","opcode":"0x20","category":"frame-script-pointer","summary":"set display.frameScript(+0x64) = 0x004b3d44"},{"vaHex":"0x004b3d0c","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b3d10","opcode":"0x03","category":"jump","summary":"jump 0x004b3d0c"},{"vaHex":"0x004b3d18","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=65, gate=2, mode=0"},{"vaHex":"0x004b3d20","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=66, gate=2, mode=0"},{"vaHex":"0x004b3d28","opcode":"0x12","category":"write","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)"},{"vaHex":"0x004b3d30","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=67, gate=2, mode=0"},{"vaHex":"0x004b3d38","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"}]}],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-id-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:smashu:0x0b","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x005249cc","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-approach-motion","casterRule":"home-approach-target","startAnchor":"home","motionKind":"dash","motionTarget":"target-front","positionConfidence":"high","positionBucket":"approach","positionBucketLabel":"돌진/접근","battleMapPlacementSummary":"기본 위치에서 출발해 몬스터 앞까지 돌진한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["nonzero movement selector 1 moves the actor from home toward target-front"],"familyPatternClass":"speed-scaling","familyPatternNotes":["movement divisor descends: 20, 16, 12, 8","타수 증가가 아니라 같은 동작의 속도/관통 시간 변화로 처리해야 한다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x005249cc","opcode":"0x21","summary":"set sprite=0x17, frame=7, gate=4, mode=0","spriteHex":"0x17","frame":7,"gate":4},{"tick":4,"kind":"actor-frame","vaHex":"0x005249d4","opcode":"0x21","summary":"set sprite=0x17, frame=8, gate=6, mode=0","spriteHex":"0x17","frame":8,"gate":6},{"tick":10,"kind":"result-sound","vaHex":"0x005249dc","opcode":"0xc2","summary":"WLK id 24 (normal id 24, alt id 14, mode=1)","wlkNo":24,"normalWlkNo":24,"altWlkNo":14,"mode":1},{"tick":10,"kind":"movement","vaHex":"0x00524a14","opcode":"0xbc","summary":"interpolated child motion mode=1, selector=1, stepDivisor=12: target-relative center/size-adjusted placement.","selector":1,"divisor":12,"movementMode":1},{"tick":10,"kind":"helper-call","vaHex":"0x00524a18","opcode":"0xbd","summary":"helper-call id=30; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":30},{"tick":10,"kind":"actor-frame","vaHex":"0x00524a2c","opcode":"0x12","summary":"direct sprite/frame selector write sprite=0x17, frame=9, field +0x28, mode=0x80","spriteHex":"0x17","frame":9,"gate":1},{"tick":11,"kind":"wait","vaHex":"0x00524a34","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000200"},{"tick":11,"kind":"helper-call","vaHex":"0x00524a3c","opcode":"0xbd","summary":"helper-call id=12; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":12},{"tick":11,"kind":"actor-flag","vaHex":"0x00524a40","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":11,"kind":"actor-flag","vaHex":"0x00524a48","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":11,"kind":"wait","vaHex":"0x00524a50","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":11,"kind":"actor-frame","vaHex":"0x00524a54","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2},{"tick":13,"kind":"movement","vaHex":"0x00524a5c","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":10,"soundVaHex":"0x005249dc","normalWlkNo":24,"altWlkNo":14,"mode":1,"flags":[{"vaHex":"0x00524a40","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00524a48","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00524a34","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000200"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only","helper:direct-frame-spawn","helper-root-counters","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x0c","ownerKey":"smashu","ownerName":"스마슈","skillName":"쾌진격","familyName":"쾌진격","skillIdHex":"0x0c","levelOrFixed":4,"targetClass":"enemy-single","mpCost":12,"hitCount":1,"frameSequence":[7,8,9,2],"expandedFrameGateSequence":[{"tick":0,"frame":7,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":8,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":9,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":11,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":13,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[24],"soundModel":"result-only","soundCalls":[{"tick":10,"opcode":"0xc2","wlkNo":24,"normalWlkNo":24,"altWlkNo":14,"mode":1,"role":"result normal with alternate operand","vaHex":"0x005249dc"}],"helperIds":[31,12],"helperFacts":[{"helperId":31,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["30@0"],"emitFrames":[30],"rootCounterSets":{"0x92":3,"0x94":3},"rootBranches":[{"vaHex":"0x004b4fd0","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b4fec","condition":"conditional branch motion.dx +0x74 bit-test 0x80000000; target 0x004b4fec","targetSnippet":[{"vaHex":"0x004b4fec","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b4ff0","opcode":"0x12","category":"write","summary":"div display/actor field +0x74, imm=0x00000010 (0.000244141px)"},{"vaHex":"0x004b4ff8","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b4ffc","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xba"},{"vaHex":"0x004b5000","opcode":"0x15","category":"conditional-branch","summary":"conditional branch motion.dy +0x78 bit-test 0x80000000; target 0x004b501c"},{"vaHex":"0x004b500c","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000010 (0.000244141px)"},{"vaHex":"0x004b5014","opcode":"0x03","category":"jump","summary":"jump 0x004b502c"},{"vaHex":"0x004b501c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"}]},{"vaHex":"0x004b5000","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b501c","condition":"conditional branch motion.dy +0x78 bit-test 0x80000000; target 0x004b501c","targetSnippet":[{"vaHex":"0x004b501c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b5020","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000010 (0.000244141px)"},{"vaHex":"0x004b5028","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b502c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5030","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5034","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x1c, mode=0xb0"},{"vaHex":"0x004b5038","opcode":"0x12","category":"write","summary":"add display/actor field +0x80, source +0x68, mode=0xb1"},{"vaHex":"0x004b503c","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x20, mode=0xb0"}]},{"vaHex":"0x004b50f8","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5030","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5030","targetSnippet":[{"vaHex":"0x004b5030","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5034","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x1c, mode=0xb0"},{"vaHex":"0x004b5038","opcode":"0x12","category":"write","summary":"add display/actor field +0x80, source +0x68, mode=0xb1"},{"vaHex":"0x004b503c","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x20, mode=0xb0"},{"vaHex":"0x004b5040","opcode":"0x12","category":"write","summary":"add display/actor field +0x84, source +0x6c, mode=0xb1"},{"vaHex":"0x004b5044","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b5138 into +0x58"},{"vaHex":"0x004b504c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5050","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"}]},{"vaHex":"0x004b510c","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b502c","condition":"conditional branch field +0x5c bit-test 0x00000200; target 0x004b502c","targetSnippet":[{"vaHex":"0x004b502c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5030","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5034","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x1c, mode=0xb0"},{"vaHex":"0x004b5038","opcode":"0x12","category":"write","summary":"add display/actor field +0x80, source +0x68, mode=0xb1"},{"vaHex":"0x004b503c","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x20, mode=0xb0"},{"vaHex":"0x004b5040","opcode":"0x12","category":"write","summary":"add display/actor field +0x84, source +0x6c, mode=0xb1"},{"vaHex":"0x004b5044","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b5138 into +0x58"},{"vaHex":"0x004b504c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"}]}],"childMotionLoops":[],"interpretation":["+0x94 raw 3 acts as burst/current-counter seed for +0x8e","static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]},{"helperId":12,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3d18","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3d40","frames":["65@2","66@2","67@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b3cec","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b3d04","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] != right:imm.byte=0x01 -> 0x004b3d04","targetSnippet":[{"vaHex":"0x004b3d04","opcode":"0x20","category":"frame-script-pointer","summary":"set display.frameScript(+0x64) = 0x004b3d44"},{"vaHex":"0x004b3d0c","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b3d10","opcode":"0x03","category":"jump","summary":"jump 0x004b3d0c"},{"vaHex":"0x004b3d18","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=65, gate=2, mode=0"},{"vaHex":"0x004b3d20","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=66, gate=2, mode=0"},{"vaHex":"0x004b3d28","opcode":"0x12","category":"write","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)"},{"vaHex":"0x004b3d30","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=67, gate=2, mode=0"},{"vaHex":"0x004b3d38","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"}]}],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-id-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:smashu:0x0c","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x005249cc","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-pierce-motion","casterRule":"home-pierce-through","startAnchor":"home","motionKind":"pierce","motionTarget":"target-through","positionConfidence":"high","positionBucket":"pierce","positionBucketLabel":"관통","battleMapPlacementSummary":"대상 기준선을 지나 화면 반대쪽으로 관통한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["nonzero movement selector 2 moves actor from current/home anchor through target"],"familyPatternClass":"speed-scaling","familyPatternNotes":["movement divisor descends: 20, 16, 12, 8","타수 증가가 아니라 같은 동작의 속도/관통 시간 변화로 처리해야 한다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x005249cc","opcode":"0x21","summary":"set sprite=0x17, frame=7, gate=4, mode=0","spriteHex":"0x17","frame":7,"gate":4},{"tick":4,"kind":"actor-frame","vaHex":"0x005249d4","opcode":"0x21","summary":"set sprite=0x17, frame=8, gate=6, mode=0","spriteHex":"0x17","frame":8,"gate":6},{"tick":10,"kind":"result-sound","vaHex":"0x005249dc","opcode":"0xc2","summary":"WLK id 24 (normal id 24, alt id 14, mode=1)","wlkNo":24,"normalWlkNo":24,"altWlkNo":14,"mode":1},{"tick":10,"kind":"movement","vaHex":"0x00524a24","opcode":"0xbc","summary":"interpolated child motion mode=1, selector=2, stepDivisor=8: one target-side edge placement; side depends on actor kind.","selector":2,"divisor":8,"movementMode":1},{"tick":10,"kind":"helper-call","vaHex":"0x00524a28","opcode":"0xbd","summary":"helper-call id=31; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":31},{"tick":10,"kind":"actor-frame","vaHex":"0x00524a2c","opcode":"0x12","summary":"direct sprite/frame selector write sprite=0x17, frame=9, field +0x28, mode=0x80","spriteHex":"0x17","frame":9,"gate":1},{"tick":11,"kind":"wait","vaHex":"0x00524a34","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000200"},{"tick":11,"kind":"helper-call","vaHex":"0x00524a3c","opcode":"0xbd","summary":"helper-call id=12; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":12},{"tick":11,"kind":"actor-flag","vaHex":"0x00524a40","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":11,"kind":"actor-flag","vaHex":"0x00524a48","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":11,"kind":"wait","vaHex":"0x00524a50","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":11,"kind":"actor-frame","vaHex":"0x00524a54","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2},{"tick":13,"kind":"movement","vaHex":"0x00524a5c","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":10,"soundVaHex":"0x005249dc","normalWlkNo":24,"altWlkNo":14,"mode":1,"flags":[{"vaHex":"0x00524a40","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00524a48","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00524a34","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000200"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only","helper:direct-frame-spawn","helper-root-counters","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x0d","ownerKey":"smashu","ownerName":"스마슈","skillName":"비검·목단미인","familyName":"비검·목단미인","skillIdHex":"0x0d","levelOrFixed":1,"targetClass":"enemy-single","mpCost":20,"hitCount":1,"frameSequence":[26,27,28,29,26,27,28,29,2,2],"expandedFrameGateSequence":[{"tick":0,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":10,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":12,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":14,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":16,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":2,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":24,"repeatLoopCount":1,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[18],"resultWlkNos":[4],"soundModel":"effect+result","soundCalls":[{"tick":8,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524ac0"},{"tick":16,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524ac0"},{"tick":18,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00524bc0"}],"helperIds":[17],"helperFacts":[{"helperId":17,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3f94","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3fc0","frames":["12@2","13@2","14@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:smashu:0x0d","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x00524a6c","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-front-direct-placement","casterRule":"target-side-direct","startAnchor":"target-side","motionKind":"teleport","motionTarget":"target-side","positionConfidence":"high","positionBucket":"target-side","positionBucketLabel":"몬스터 측면","battleMapPlacementSummary":"몬스터 측면/반대측 기준점에 배치되거나 그쪽으로 이동한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 2 fixes the actor at target-side/orbit position"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 10, 14, 18, effect WLK count: 1, 2, 3, 4"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x00524a6c","opcode":"0xbc","summary":"direct placement selector=2: one target-side edge placement; side depends on actor kind.","selector":2,"divisor":0,"movementMode":0},{"tick":0,"kind":"movement","vaHex":"0x00524a80","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-write","vaHex":"0x00524a84","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x00524aa0","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00524aa8","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":4,"kind":"actor-frame","vaHex":"0x00524ab0","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x00524ab8","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":8,"kind":"effect-sound","vaHex":"0x00524ac0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":8,"kind":"repeat-loop","vaHex":"0x00524ac4","opcode":"0x06","summary":"repeat-loop count=2, target=0x00524aa0; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x00524aa0","repeatCount":2},{"tick":8,"kind":"actor-frame","vaHex":"0x00524aa0","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":10,"kind":"actor-frame","vaHex":"0x00524aa8","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":12,"kind":"actor-frame","vaHex":"0x00524ab0","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":14,"kind":"actor-frame","vaHex":"0x00524ab8","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":16,"kind":"effect-sound","vaHex":"0x00524ac0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":16,"kind":"actor-write","vaHex":"0x00524bac","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":16,"kind":"actor-frame","vaHex":"0x00524bb4","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2},{"tick":18,"kind":"helper-call","vaHex":"0x00524bbc","opcode":"0xbd","summary":"helper-call id=17; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":17},{"tick":18,"kind":"result-sound","vaHex":"0x00524bc0","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":18,"kind":"actor-flag","vaHex":"0x00524bc4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":18,"kind":"actor-flag","vaHex":"0x00524bcc","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":18,"kind":"wait","vaHex":"0x00524bd4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":18,"kind":"actor-frame","vaHex":"0x00524bd8","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=6, mode=0","spriteHex":"0x17","frame":2,"gate":6},{"tick":24,"kind":"movement","vaHex":"0x00524be0","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":18,"soundVaHex":"0x00524bc0","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00524bc4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00524bcc","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00524bd4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","repeat-loop-expanded","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:effect+result","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x0e","ownerKey":"smashu","ownerName":"스마슈","skillName":"비검·목단미인","familyName":"비검·목단미인","skillIdHex":"0x0e","levelOrFixed":2,"targetClass":"enemy-single","mpCost":20,"hitCount":1,"frameSequence":[26,27,28,29,26,27,28,29,26,27,28,29,26,27,28,29,2,2],"expandedFrameGateSequence":[{"tick":0,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":10,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":12,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":14,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":16,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":26,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":28,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":30,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":32,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":2,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":40,"repeatLoopCount":2,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[18,18],"resultWlkNos":[4],"soundModel":"effect+result","soundCalls":[{"tick":8,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524ac0"},{"tick":16,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524ac0"},{"tick":24,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524af4"},{"tick":32,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524af4"},{"tick":34,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00524bc0"}],"helperIds":[17],"helperFacts":[{"helperId":17,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3f94","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3fc0","frames":["12@2","13@2","14@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:smashu:0x0e","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x00524a6c","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-front-direct-placement","casterRule":"target-side-direct","startAnchor":"target-side","motionKind":"teleport","motionTarget":"target-side","positionConfidence":"high","positionBucket":"target-side","positionBucketLabel":"몬스터 측면","battleMapPlacementSummary":"몬스터 측면/반대측 기준점에 배치되거나 그쪽으로 이동한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 2 fixes the actor at target-side/orbit position"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 10, 14, 18, effect WLK count: 1, 2, 3, 4"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x00524a6c","opcode":"0xbc","summary":"direct placement selector=2: one target-side edge placement; side depends on actor kind.","selector":2,"divisor":0,"movementMode":0},{"tick":0,"kind":"movement","vaHex":"0x00524a80","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-write","vaHex":"0x00524a84","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x00524aa0","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00524aa8","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":4,"kind":"actor-frame","vaHex":"0x00524ab0","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x00524ab8","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":8,"kind":"effect-sound","vaHex":"0x00524ac0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":8,"kind":"repeat-loop","vaHex":"0x00524ac4","opcode":"0x06","summary":"repeat-loop count=2, target=0x00524aa0; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x00524aa0","repeatCount":2},{"tick":8,"kind":"actor-frame","vaHex":"0x00524aa0","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":10,"kind":"actor-frame","vaHex":"0x00524aa8","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":12,"kind":"actor-frame","vaHex":"0x00524ab0","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":14,"kind":"actor-frame","vaHex":"0x00524ab8","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":16,"kind":"effect-sound","vaHex":"0x00524ac0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":16,"kind":"actor-frame","vaHex":"0x00524ad4","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":18,"kind":"actor-frame","vaHex":"0x00524adc","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x00524ae4","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":22,"kind":"actor-frame","vaHex":"0x00524aec","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":24,"kind":"effect-sound","vaHex":"0x00524af4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":24,"kind":"repeat-loop","vaHex":"0x00524af8","opcode":"0x06","summary":"repeat-loop count=2, target=0x00524ad4; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x00524ad4","repeatCount":2},{"tick":24,"kind":"actor-frame","vaHex":"0x00524ad4","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":26,"kind":"actor-frame","vaHex":"0x00524adc","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":28,"kind":"actor-frame","vaHex":"0x00524ae4","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":30,"kind":"actor-frame","vaHex":"0x00524aec","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":32,"kind":"effect-sound","vaHex":"0x00524af4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":32,"kind":"actor-write","vaHex":"0x00524bac","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-frame","vaHex":"0x00524bb4","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2},{"tick":34,"kind":"helper-call","vaHex":"0x00524bbc","opcode":"0xbd","summary":"helper-call id=17; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":17},{"tick":34,"kind":"result-sound","vaHex":"0x00524bc0","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":34,"kind":"actor-flag","vaHex":"0x00524bc4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":34,"kind":"actor-flag","vaHex":"0x00524bcc","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":34,"kind":"wait","vaHex":"0x00524bd4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":34,"kind":"actor-frame","vaHex":"0x00524bd8","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=6, mode=0","spriteHex":"0x17","frame":2,"gate":6},{"tick":40,"kind":"movement","vaHex":"0x00524be0","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":34,"soundVaHex":"0x00524bc0","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00524bc4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00524bcc","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00524bd4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","repeat-loop-expanded","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:effect+result","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x0f","ownerKey":"smashu","ownerName":"스마슈","skillName":"비검·목단미인","familyName":"비검·목단미인","skillIdHex":"0x0f","levelOrFixed":3,"targetClass":"enemy-single","mpCost":18,"hitCount":1,"frameSequence":[26,27,28,29,26,27,28,29,26,27,28,29,26,27,28,29,26,27,28,29,26,27,28,29,2,2],"expandedFrameGateSequence":[{"tick":0,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":10,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":12,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":14,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":16,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":26,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":28,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":30,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":32,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":40,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":42,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":44,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":46,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":48,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":50,"frame":2,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":56,"repeatLoopCount":3,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[18,18,18],"resultWlkNos":[4],"soundModel":"effect+result","soundCalls":[{"tick":8,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524ac0"},{"tick":16,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524ac0"},{"tick":24,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524af4"},{"tick":32,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524af4"},{"tick":40,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524b28"},{"tick":48,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524b28"},{"tick":50,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00524bc0"}],"helperIds":[17],"helperFacts":[{"helperId":17,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3f94","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3fc0","frames":["12@2","13@2","14@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:smashu:0x0f","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x00524a6c","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-front-direct-placement","casterRule":"target-side-direct","startAnchor":"target-side","motionKind":"teleport","motionTarget":"target-side","positionConfidence":"high","positionBucket":"target-side","positionBucketLabel":"몬스터 측면","battleMapPlacementSummary":"몬스터 측면/반대측 기준점에 배치되거나 그쪽으로 이동한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 2 fixes the actor at target-side/orbit position"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 10, 14, 18, effect WLK count: 1, 2, 3, 4"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x00524a6c","opcode":"0xbc","summary":"direct placement selector=2: one target-side edge placement; side depends on actor kind.","selector":2,"divisor":0,"movementMode":0},{"tick":0,"kind":"movement","vaHex":"0x00524a80","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-write","vaHex":"0x00524a84","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x00524aa0","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00524aa8","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":4,"kind":"actor-frame","vaHex":"0x00524ab0","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x00524ab8","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":8,"kind":"effect-sound","vaHex":"0x00524ac0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":8,"kind":"repeat-loop","vaHex":"0x00524ac4","opcode":"0x06","summary":"repeat-loop count=2, target=0x00524aa0; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x00524aa0","repeatCount":2},{"tick":8,"kind":"actor-frame","vaHex":"0x00524aa0","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":10,"kind":"actor-frame","vaHex":"0x00524aa8","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":12,"kind":"actor-frame","vaHex":"0x00524ab0","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":14,"kind":"actor-frame","vaHex":"0x00524ab8","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":16,"kind":"effect-sound","vaHex":"0x00524ac0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":16,"kind":"actor-frame","vaHex":"0x00524ad4","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":18,"kind":"actor-frame","vaHex":"0x00524adc","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x00524ae4","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":22,"kind":"actor-frame","vaHex":"0x00524aec","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":24,"kind":"effect-sound","vaHex":"0x00524af4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":24,"kind":"repeat-loop","vaHex":"0x00524af8","opcode":"0x06","summary":"repeat-loop count=2, target=0x00524ad4; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x00524ad4","repeatCount":2},{"tick":24,"kind":"actor-frame","vaHex":"0x00524ad4","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":26,"kind":"actor-frame","vaHex":"0x00524adc","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":28,"kind":"actor-frame","vaHex":"0x00524ae4","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":30,"kind":"actor-frame","vaHex":"0x00524aec","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":32,"kind":"effect-sound","vaHex":"0x00524af4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":32,"kind":"actor-frame","vaHex":"0x00524b08","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":34,"kind":"actor-frame","vaHex":"0x00524b10","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":36,"kind":"actor-frame","vaHex":"0x00524b18","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":38,"kind":"actor-frame","vaHex":"0x00524b20","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":40,"kind":"effect-sound","vaHex":"0x00524b28","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":40,"kind":"repeat-loop","vaHex":"0x00524b2c","opcode":"0x06","summary":"repeat-loop count=2, target=0x00524b08; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x00524b08","repeatCount":2},{"tick":40,"kind":"actor-frame","vaHex":"0x00524b08","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":42,"kind":"actor-frame","vaHex":"0x00524b10","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":44,"kind":"actor-frame","vaHex":"0x00524b18","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":46,"kind":"actor-frame","vaHex":"0x00524b20","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":48,"kind":"effect-sound","vaHex":"0x00524b28","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":48,"kind":"actor-write","vaHex":"0x00524bac","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":48,"kind":"actor-frame","vaHex":"0x00524bb4","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2},{"tick":50,"kind":"helper-call","vaHex":"0x00524bbc","opcode":"0xbd","summary":"helper-call id=17; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":17},{"tick":50,"kind":"result-sound","vaHex":"0x00524bc0","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":50,"kind":"actor-flag","vaHex":"0x00524bc4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":50,"kind":"actor-flag","vaHex":"0x00524bcc","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":50,"kind":"wait","vaHex":"0x00524bd4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":50,"kind":"actor-frame","vaHex":"0x00524bd8","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=6, mode=0","spriteHex":"0x17","frame":2,"gate":6},{"tick":56,"kind":"movement","vaHex":"0x00524be0","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":50,"soundVaHex":"0x00524bc0","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00524bc4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00524bcc","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00524bd4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","repeat-loop-expanded","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:effect+result","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x10","ownerKey":"smashu","ownerName":"스마슈","skillName":"비검·목단미인","familyName":"비검·목단미인","skillIdHex":"0x10","levelOrFixed":4,"targetClass":"enemy-single","mpCost":16,"hitCount":1,"frameSequence":[26,27,28,29,26,27,28,29,26,27,28,29,26,27,28,29,26,27,28,29,26,27,28,29,26,27,28,29,26,27,28,29,26,27,28,29,26,27,28,29,2,2],"expandedFrameGateSequence":[{"tick":0,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":10,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":12,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":14,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":16,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":26,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":28,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":30,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":32,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":40,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":42,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":44,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":46,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":48,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":50,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":52,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":54,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":56,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b60"},{"tick":58,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b60"},{"tick":60,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b60"},{"tick":62,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b60"},{"tick":64,"frame":26,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x00524b60"},{"tick":66,"frame":27,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x00524b60"},{"tick":68,"frame":28,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x00524b60"},{"tick":70,"frame":29,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x00524b60"},{"tick":72,"frame":26,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x00524b60"},{"tick":74,"frame":27,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x00524b60"},{"tick":76,"frame":28,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x00524b60"},{"tick":78,"frame":29,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x00524b60"},{"tick":80,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":82,"frame":2,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":88,"repeatLoopCount":4,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[18,18,18,18],"resultWlkNos":[4],"soundModel":"effect+result","soundCalls":[{"tick":8,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524ac0"},{"tick":16,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524ac0"},{"tick":24,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524af4"},{"tick":32,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524af4"},{"tick":40,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524b28"},{"tick":48,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524b28"},{"tick":56,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524b5c"},{"tick":64,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524b5c"},{"tick":72,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524b5c"},{"tick":80,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524b5c"},{"tick":82,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00524b80"}],"helperIds":[17],"helperFacts":[{"helperId":17,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3f94","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3fc0","frames":["12@2","13@2","14@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"spawned-child-display-flow","renderTrack":"spawned-child-display-flow","implementationState":"needs-helper-target-promotion","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"0x07 child display VM spawn target이 있어 actor frame만으로는 부족하다.","canonicalKey":"player:smashu:0x10","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x00524a6c","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-front-direct-placement","casterRule":"target-side-direct","startAnchor":"target-side","motionKind":"teleport","motionTarget":"target-side","positionConfidence":"high","positionBucket":"target-side","positionBucketLabel":"몬스터 측면","battleMapPlacementSummary":"몬스터 측면/반대측 기준점에 배치되거나 그쪽으로 이동한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 2 fixes the actor at target-side/orbit position"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 10, 14, 18, effect WLK count: 1, 2, 3, 4"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x00524a6c","opcode":"0xbc","summary":"direct placement selector=2: one target-side edge placement; side depends on actor kind.","selector":2,"divisor":0,"movementMode":0},{"tick":0,"kind":"movement","vaHex":"0x00524a80","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-write","vaHex":"0x00524a84","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x00524aa0","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00524aa8","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":4,"kind":"actor-frame","vaHex":"0x00524ab0","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x00524ab8","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":8,"kind":"effect-sound","vaHex":"0x00524ac0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":8,"kind":"repeat-loop","vaHex":"0x00524ac4","opcode":"0x06","summary":"repeat-loop count=2, target=0x00524aa0; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x00524aa0","repeatCount":2},{"tick":8,"kind":"actor-frame","vaHex":"0x00524aa0","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":10,"kind":"actor-frame","vaHex":"0x00524aa8","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":12,"kind":"actor-frame","vaHex":"0x00524ab0","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":14,"kind":"actor-frame","vaHex":"0x00524ab8","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":16,"kind":"effect-sound","vaHex":"0x00524ac0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":16,"kind":"actor-frame","vaHex":"0x00524ad4","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":18,"kind":"actor-frame","vaHex":"0x00524adc","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x00524ae4","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":22,"kind":"actor-frame","vaHex":"0x00524aec","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":24,"kind":"effect-sound","vaHex":"0x00524af4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":24,"kind":"repeat-loop","vaHex":"0x00524af8","opcode":"0x06","summary":"repeat-loop count=2, target=0x00524ad4; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x00524ad4","repeatCount":2},{"tick":24,"kind":"actor-frame","vaHex":"0x00524ad4","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":26,"kind":"actor-frame","vaHex":"0x00524adc","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":28,"kind":"actor-frame","vaHex":"0x00524ae4","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":30,"kind":"actor-frame","vaHex":"0x00524aec","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":32,"kind":"effect-sound","vaHex":"0x00524af4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":32,"kind":"actor-frame","vaHex":"0x00524b08","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":34,"kind":"actor-frame","vaHex":"0x00524b10","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":36,"kind":"actor-frame","vaHex":"0x00524b18","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":38,"kind":"actor-frame","vaHex":"0x00524b20","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":40,"kind":"effect-sound","vaHex":"0x00524b28","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":40,"kind":"repeat-loop","vaHex":"0x00524b2c","opcode":"0x06","summary":"repeat-loop count=2, target=0x00524b08; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x00524b08","repeatCount":2},{"tick":40,"kind":"actor-frame","vaHex":"0x00524b08","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":42,"kind":"actor-frame","vaHex":"0x00524b10","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":44,"kind":"actor-frame","vaHex":"0x00524b18","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":46,"kind":"actor-frame","vaHex":"0x00524b20","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":48,"kind":"effect-sound","vaHex":"0x00524b28","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":48,"kind":"actor-frame","vaHex":"0x00524b3c","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":50,"kind":"actor-frame","vaHex":"0x00524b44","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":52,"kind":"actor-frame","vaHex":"0x00524b4c","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":54,"kind":"actor-frame","vaHex":"0x00524b54","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":56,"kind":"effect-sound","vaHex":"0x00524b5c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":56,"kind":"repeat-loop","vaHex":"0x00524b60","opcode":"0x06","summary":"repeat-loop count=4, target=0x00524b3c; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x00524b3c","repeatCount":4},{"tick":56,"kind":"actor-frame","vaHex":"0x00524b3c","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b60"},{"tick":58,"kind":"actor-frame","vaHex":"0x00524b44","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b60"},{"tick":60,"kind":"actor-frame","vaHex":"0x00524b4c","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b60"},{"tick":62,"kind":"actor-frame","vaHex":"0x00524b54","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b60"},{"tick":64,"kind":"effect-sound","vaHex":"0x00524b5c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":1,"repeatSourceVaHex":"0x00524b60"},{"tick":64,"kind":"actor-frame","vaHex":"0x00524b3c","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x00524b60"},{"tick":66,"kind":"actor-frame","vaHex":"0x00524b44","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x00524b60"},{"tick":68,"kind":"actor-frame","vaHex":"0x00524b4c","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x00524b60"},{"tick":70,"kind":"actor-frame","vaHex":"0x00524b54","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x00524b60"},{"tick":72,"kind":"effect-sound","vaHex":"0x00524b5c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":2,"repeatSourceVaHex":"0x00524b60"},{"tick":72,"kind":"actor-frame","vaHex":"0x00524b3c","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x00524b60"},{"tick":74,"kind":"actor-frame","vaHex":"0x00524b44","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x00524b60"},{"tick":76,"kind":"actor-frame","vaHex":"0x00524b4c","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x00524b60"},{"tick":78,"kind":"actor-frame","vaHex":"0x00524b54","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x00524b60"},{"tick":80,"kind":"effect-sound","vaHex":"0x00524b5c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":3,"repeatSourceVaHex":"0x00524b60"},{"tick":80,"kind":"actor-write","vaHex":"0x00524b6c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":80,"kind":"actor-frame","vaHex":"0x00524b74","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2},{"tick":82,"kind":"helper-call","vaHex":"0x00524b7c","opcode":"0xbd","summary":"helper-call id=17; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":17},{"tick":82,"kind":"result-sound","vaHex":"0x00524b80","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":82,"kind":"actor-flag","vaHex":"0x00524b84","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":82,"kind":"actor-flag","vaHex":"0x00524b8c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":82,"kind":"wait","vaHex":"0x00524b94","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":82,"kind":"actor-frame","vaHex":"0x00524b98","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=6, mode=0","spriteHex":"0x17","frame":2,"gate":6},{"tick":88,"kind":"movement","vaHex":"0x00524ba0","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":82,"soundVaHex":"0x00524b80","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00524b84","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00524b8c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00524b94","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","repeat-loop-expanded","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:spawned-child-display-flow","sound:effect+result","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x11","ownerKey":"smashu","ownerName":"스마슈","skillName":"정열의 붉은마검","familyName":"display-table fallback","skillIdHex":"0x11","levelOrFixed":null,"targetClass":"enemy-single","mpCost":10,"hitCount":1,"frameSequence":[26,27,28,29,26,27,28,29,26,27,28,29,26,27,28,29,26,27,28,29,26,27,28,29,26,27,28,29,26,27,28,29,26,27,28,29,26,27,28,29,2,2],"expandedFrameGateSequence":[{"tick":0,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":10,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":12,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":14,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":16,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":26,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":28,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":30,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":32,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":40,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":42,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":44,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":46,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":48,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":50,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":52,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":54,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":56,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b60"},{"tick":58,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b60"},{"tick":60,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b60"},{"tick":62,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b60"},{"tick":64,"frame":26,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x00524b60"},{"tick":66,"frame":27,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x00524b60"},{"tick":68,"frame":28,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x00524b60"},{"tick":70,"frame":29,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x00524b60"},{"tick":72,"frame":26,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x00524b60"},{"tick":74,"frame":27,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x00524b60"},{"tick":76,"frame":28,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x00524b60"},{"tick":78,"frame":29,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x00524b60"},{"tick":80,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":82,"frame":2,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":88,"repeatLoopCount":4,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[18,18,18,18],"resultWlkNos":[4],"soundModel":"effect+result","soundCalls":[{"tick":8,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524ac0"},{"tick":16,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524ac0"},{"tick":24,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524af4"},{"tick":32,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524af4"},{"tick":40,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524b28"},{"tick":48,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524b28"},{"tick":56,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524b5c"},{"tick":64,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524b5c"},{"tick":72,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524b5c"},{"tick":80,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00524b5c"},{"tick":82,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00524b80"}],"helperIds":[17],"helperFacts":[{"helperId":17,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3f94","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3fc0","frames":["12@2","13@2","14@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"display-list-cleanup-flow","renderTrack":"display-list-cleanup-flow","implementationState":"helper-cleanup-evidence-only","effectiveImplementationState":"helper-cleanup-evidence-only","semanticNote":"0x4b display-list cleanup/free가 포함되어 있으나 이것만으로 시각 리소스가 생기지는 않는다.","canonicalKey":"player:smashu:0x11","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x00524a6c","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"target-front-direct-placement","casterRule":"target-side-direct","startAnchor":"target-side","motionKind":"teleport","motionTarget":"target-side","positionConfidence":"high","positionBucket":"target-side","positionBucketLabel":"몬스터 측면","battleMapPlacementSummary":"몬스터 측면/반대측 기준점에 배치되거나 그쪽으로 이동한다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 2 fixes the actor at target-side/orbit position"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 4, 10, 1, 1, 3, 1, 1, 1, 1, 1","0xc2 result sound count changes: 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 0, 0, 0, 0","frame count changes: 4, 4, 6, 6, 18, 5, 11, 16, 5, 8, 19, 1, 1, 1, 4","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x00524a6c","opcode":"0xbc","summary":"direct placement selector=2: one target-side edge placement; side depends on actor kind.","selector":2,"divisor":0,"movementMode":0},{"tick":0,"kind":"movement","vaHex":"0x00524a80","opcode":"0xbc","summary":"direct placement selector=3: opposite target-side edge placement.","selector":3,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-write","vaHex":"0x00524a84","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x00524aa0","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00524aa8","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":4,"kind":"actor-frame","vaHex":"0x00524ab0","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x00524ab8","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":8,"kind":"effect-sound","vaHex":"0x00524ac0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":8,"kind":"repeat-loop","vaHex":"0x00524ac4","opcode":"0x06","summary":"repeat-loop count=2, target=0x00524aa0; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x00524aa0","repeatCount":2},{"tick":8,"kind":"actor-frame","vaHex":"0x00524aa0","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":10,"kind":"actor-frame","vaHex":"0x00524aa8","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":12,"kind":"actor-frame","vaHex":"0x00524ab0","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":14,"kind":"actor-frame","vaHex":"0x00524ab8","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":16,"kind":"effect-sound","vaHex":"0x00524ac0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":1,"repeatSourceVaHex":"0x00524ac4"},{"tick":16,"kind":"actor-frame","vaHex":"0x00524ad4","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":18,"kind":"actor-frame","vaHex":"0x00524adc","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x00524ae4","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":22,"kind":"actor-frame","vaHex":"0x00524aec","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":24,"kind":"effect-sound","vaHex":"0x00524af4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":24,"kind":"repeat-loop","vaHex":"0x00524af8","opcode":"0x06","summary":"repeat-loop count=2, target=0x00524ad4; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x00524ad4","repeatCount":2},{"tick":24,"kind":"actor-frame","vaHex":"0x00524ad4","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":26,"kind":"actor-frame","vaHex":"0x00524adc","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":28,"kind":"actor-frame","vaHex":"0x00524ae4","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":30,"kind":"actor-frame","vaHex":"0x00524aec","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":32,"kind":"effect-sound","vaHex":"0x00524af4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":1,"repeatSourceVaHex":"0x00524af8"},{"tick":32,"kind":"actor-frame","vaHex":"0x00524b08","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":34,"kind":"actor-frame","vaHex":"0x00524b10","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":36,"kind":"actor-frame","vaHex":"0x00524b18","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":38,"kind":"actor-frame","vaHex":"0x00524b20","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":40,"kind":"effect-sound","vaHex":"0x00524b28","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":40,"kind":"repeat-loop","vaHex":"0x00524b2c","opcode":"0x06","summary":"repeat-loop count=2, target=0x00524b08; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x00524b08","repeatCount":2},{"tick":40,"kind":"actor-frame","vaHex":"0x00524b08","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":42,"kind":"actor-frame","vaHex":"0x00524b10","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":44,"kind":"actor-frame","vaHex":"0x00524b18","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":46,"kind":"actor-frame","vaHex":"0x00524b20","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":48,"kind":"effect-sound","vaHex":"0x00524b28","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":1,"repeatSourceVaHex":"0x00524b2c"},{"tick":48,"kind":"actor-frame","vaHex":"0x00524b3c","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":50,"kind":"actor-frame","vaHex":"0x00524b44","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":52,"kind":"actor-frame","vaHex":"0x00524b4c","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":54,"kind":"actor-frame","vaHex":"0x00524b54","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":56,"kind":"effect-sound","vaHex":"0x00524b5c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":56,"kind":"repeat-loop","vaHex":"0x00524b60","opcode":"0x06","summary":"repeat-loop count=4, target=0x00524b3c; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x00524b3c","repeatCount":4},{"tick":56,"kind":"actor-frame","vaHex":"0x00524b3c","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b60"},{"tick":58,"kind":"actor-frame","vaHex":"0x00524b44","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b60"},{"tick":60,"kind":"actor-frame","vaHex":"0x00524b4c","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b60"},{"tick":62,"kind":"actor-frame","vaHex":"0x00524b54","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x00524b60"},{"tick":64,"kind":"effect-sound","vaHex":"0x00524b5c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":1,"repeatSourceVaHex":"0x00524b60"},{"tick":64,"kind":"actor-frame","vaHex":"0x00524b3c","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x00524b60"},{"tick":66,"kind":"actor-frame","vaHex":"0x00524b44","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x00524b60"},{"tick":68,"kind":"actor-frame","vaHex":"0x00524b4c","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x00524b60"},{"tick":70,"kind":"actor-frame","vaHex":"0x00524b54","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x00524b60"},{"tick":72,"kind":"effect-sound","vaHex":"0x00524b5c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":2,"repeatSourceVaHex":"0x00524b60"},{"tick":72,"kind":"actor-frame","vaHex":"0x00524b3c","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x00524b60"},{"tick":74,"kind":"actor-frame","vaHex":"0x00524b44","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x00524b60"},{"tick":76,"kind":"actor-frame","vaHex":"0x00524b4c","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x00524b60"},{"tick":78,"kind":"actor-frame","vaHex":"0x00524b54","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":3,"repeatSourceVaHex":"0x00524b60"},{"tick":80,"kind":"effect-sound","vaHex":"0x00524b5c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":3,"repeatSourceVaHex":"0x00524b60"},{"tick":80,"kind":"actor-write","vaHex":"0x00524b6c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":80,"kind":"actor-frame","vaHex":"0x00524b74","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2},{"tick":82,"kind":"helper-call","vaHex":"0x00524b7c","opcode":"0xbd","summary":"helper-call id=17; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":17},{"tick":82,"kind":"result-sound","vaHex":"0x00524b80","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":82,"kind":"actor-flag","vaHex":"0x00524b84","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":82,"kind":"actor-flag","vaHex":"0x00524b8c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":82,"kind":"wait","vaHex":"0x00524b94","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":82,"kind":"actor-frame","vaHex":"0x00524b98","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=6, mode=0","spriteHex":"0x17","frame":2,"gate":6},{"tick":88,"kind":"movement","vaHex":"0x00524ba0","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":82,"soundVaHex":"0x00524b80","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00524b84","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00524b8c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00524b94","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","repeat-loop-expanded","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:display-list-cleanup-flow","sound:effect+result","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x12","ownerKey":"smashu","ownerName":"스마슈","skillName":"절사어면","familyName":"display-table fallback","skillIdHex":"0x12","levelOrFixed":null,"targetClass":"enemy-single","mpCost":20,"hitCount":4,"frameSequence":[23,24,25,22,2],"expandedFrameGateSequence":[{"tick":0,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":24,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":22,"gate":7,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":17,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":19,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[7],"soundModel":"result-only","soundCalls":[{"tick":8,"opcode":"0xc2","wlkNo":7,"normalWlkNo":7,"altWlkNo":7,"mode":1,"role":"skill-specific result cue","vaHex":"0x00524c94"}],"helperIds":[78],"helperFacts":[{"helperId":78,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[{"targetVaHex":"0x004b80d4","startTick":0,"durationGate":6,"stopReason":"loop at 0x004b80d4","frames":["140@2","141@2","142@2"],"frameCount":3,"loopEvents":[{"tick":6,"targetVaHex":"0x004b80d4","repeatCount":null,"vaHex":"0x004b80ec"}],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":8,"directSpawnFrames":["119@2","119@3","119@4","119@5","119@6","119@7","119@8","119@9"],"emitFrames":[119],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b7fa4","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b7fbc","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] == right:imm.byte=0x02 -> 0x004b7fbc","targetSnippet":[{"vaHex":"0x004b7fbc","opcode":"0x20","category":"frame-script-pointer","summary":"set display.frameScript(+0x64) = 0x004b80f4"},{"vaHex":"0x004b7fc4","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x80, mode=0xa0"},{"vaHex":"0x004b7fc8","opcode":"0x12","category":"write","summary":"sub display/actor field +0x74, source +0x1c, mode=0xa2"},{"vaHex":"0x004b7fcc","opcode":"0x15","category":"conditional-branch","summary":"conditional branch motion.dx +0x74 >= 0x80000000; target 0x004b7fe8"},{"vaHex":"0x004b7fd8","opcode":"0x12","category":"write","summary":"div display/actor field +0x74, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b7fe0","opcode":"0x03","category":"jump","summary":"jump 0x004b7ff8"},{"vaHex":"0x004b7fe8","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b7fec","opcode":"0x12","category":"write","summary":"div display/actor field +0x74, imm=0x00000008 (0.00012207px)"}]},{"vaHex":"0x004b7fcc","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b7fe8","condition":"conditional branch motion.dx +0x74 >= 0x80000000; target 0x004b7fe8","targetSnippet":[{"vaHex":"0x004b7fe8","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b7fec","opcode":"0x12","category":"write","summary":"div display/actor field +0x74, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b7ff4","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b7ff8","opcode":"0x12","category":"write","summary":"set display/actor field +0x78, source +0x84, mode=0xa0"},{"vaHex":"0x004b7ffc","opcode":"0x12","category":"write","summary":"sub display/actor field +0x78, source +0x20, mode=0xa2"},{"vaHex":"0x004b8000","opcode":"0x15","category":"conditional-branch","summary":"conditional branch motion.dy +0x78 >= 0x80000000; target 0x004b801c"},{"vaHex":"0x004b800c","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b8014","opcode":"0x03","category":"jump","summary":"jump 0x004b802c"}]},{"vaHex":"0x004b8000","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b801c","condition":"conditional branch motion.dy +0x78 >= 0x80000000; target 0x004b801c","targetSnippet":[{"vaHex":"0x004b801c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b8020","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b8028","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b802c","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b8030","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b8034","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b8038","opcode":"0x06","category":"repeat-loop","summary":"repeat-loop count=8, target=0x004b8030; handler stores target in object +0x3c and counter in +0x60"},{"vaHex":"0x004b8040","opcode":"0x12","category":"write","summary":"set display/actor field +0x00, imm=0x00000000 (0px)"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 8 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-id-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:smashu:0x12","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x00524c70","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[78],"positionClass":"single-target-front-local-combo-inferred","casterRule":"target-front-implicit-local-combo","startAnchor":"target-front","motionKind":"local-pose","motionTarget":"target-front","positionConfidence":"medium","positionBucket":"target-front","positionBucketLabel":"몬스터 앞","battleMapPlacementSummary":"몬스터 앞 기준점에서 로컬 프레임/타격을 재생한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["single-target row has actor/display local x/y writes but no movement selector; treat as implicit close target-front combo","helper/effect cues are attached effects, not enough by themselves to classify the caster as ranged"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 4, 10, 1, 1, 3, 1, 1, 1, 1, 1","0xc2 result sound count changes: 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 0, 0, 0, 0","frame count changes: 4, 4, 6, 6, 18, 5, 11, 16, 5, 8, 19, 1, 1, 1, 4","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x00524c70","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff80000 (-8px)","destHex":"0x1c","immHex":"0xfff80000","immFixed":-8.0},{"tick":0,"kind":"actor-write","vaHex":"0x00524c78","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x00524c80","opcode":"0x21","summary":"set sprite=0x17, frame=23, gate=2, mode=0","spriteHex":"0x17","frame":23,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00524c88","opcode":"0x21","summary":"set sprite=0x17, frame=24, gate=6, mode=0","spriteHex":"0x17","frame":24,"gate":6},{"tick":8,"kind":"helper-call","vaHex":"0x00524c90","opcode":"0xbd","summary":"helper-call id=78; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":78},{"tick":8,"kind":"result-sound","vaHex":"0x00524c94","opcode":"0xc2","summary":"WLK id 07 (normal id 07, alt id 07, mode=1)","wlkNo":7,"normalWlkNo":7,"altWlkNo":7,"mode":1},{"tick":8,"kind":"actor-write","vaHex":"0x00524c98","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff80000 (-8px)","destHex":"0x1c","immHex":"0xfff80000","immFixed":-8.0},{"tick":8,"kind":"actor-write","vaHex":"0x00524ca0","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x00524ca8","opcode":"0x21","summary":"set sprite=0x17, frame=25, gate=2, mode=0","spriteHex":"0x17","frame":25,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x00524cb0","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=7, mode=0","spriteHex":"0x17","frame":22,"gate":7},{"tick":17,"kind":"actor-flag","vaHex":"0x00524cb8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":17,"kind":"actor-flag","vaHex":"0x00524cc0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":17,"kind":"wait","vaHex":"0x00524cc8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":17,"kind":"actor-frame","vaHex":"0x00524ccc","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2},{"tick":19,"kind":"movement","vaHex":"0x00524cd4","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":8,"soundVaHex":"0x00524c94","normalWlkNo":7,"altWlkNo":7,"mode":1,"flags":[{"vaHex":"0x00524cb8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00524cc0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00524cc8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only","helper:randomized-child-spawn-stream"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x13","ownerKey":"smashu","ownerName":"스마슈","skillName":"난도질","familyName":"display-table fallback","skillIdHex":"0x13","levelOrFixed":null,"targetClass":"enemy-single","mpCost":30,"hitCount":10,"frameSequence":[7,8,9,9,9,12,13,13,18,18,2],"expandedFrameGateSequence":[{"tick":0,"frame":7,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":8,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":9,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":9,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":9,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":22,"frame":13,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":23,"frame":13,"gate":15,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":18,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":42,"frame":18,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":48,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":50,"repeatLoopCount":0,"hitEventCount":4,"hitClassCounts":{"confirmed-result-hit-window":4},"effectWlkNos":[],"resultWlkNos":[20,20,20,3],"soundModel":"result-only","soundCalls":[{"tick":16,"opcode":"0xc2","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00524d08"},{"tick":18,"opcode":"0xc2","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00524d2c"},{"tick":23,"opcode":"0xc2","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00524d6c"},{"tick":42,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00524d9c"}],"helperIds":[12,12,13,43],"helperFacts":[{"helperId":12,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3d18","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3d40","frames":["65@2","66@2","67@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b3cec","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b3d04","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] != right:imm.byte=0x01 -> 0x004b3d04","targetSnippet":[{"vaHex":"0x004b3d04","opcode":"0x20","category":"frame-script-pointer","summary":"set display.frameScript(+0x64) = 0x004b3d44"},{"vaHex":"0x004b3d0c","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b3d10","opcode":"0x03","category":"jump","summary":"jump 0x004b3d0c"},{"vaHex":"0x004b3d18","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=65, gate=2, mode=0"},{"vaHex":"0x004b3d20","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=66, gate=2, mode=0"},{"vaHex":"0x004b3d28","opcode":"0x12","category":"write","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)"},{"vaHex":"0x004b3d30","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=67, gate=2, mode=0"},{"vaHex":"0x004b3d38","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"}]}],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":12,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3d18","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3d40","frames":["65@2","66@2","67@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b3cec","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b3d04","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] != right:imm.byte=0x01 -> 0x004b3d04","targetSnippet":[{"vaHex":"0x004b3d04","opcode":"0x20","category":"frame-script-pointer","summary":"set display.frameScript(+0x64) = 0x004b3d44"},{"vaHex":"0x004b3d0c","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b3d10","opcode":"0x03","category":"jump","summary":"jump 0x004b3d0c"},{"vaHex":"0x004b3d18","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=65, gate=2, mode=0"},{"vaHex":"0x004b3d20","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=66, gate=2, mode=0"},{"vaHex":"0x004b3d28","opcode":"0x12","category":"write","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)"},{"vaHex":"0x004b3d30","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=67, gate=2, mode=0"},{"vaHex":"0x004b3d38","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"}]}],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":13,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3da8","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3ddc","frames":["0@2","1@2","2@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":43,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["92@0"],"emitFrames":[92],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-id-only","renderTrack":"actor-melee-or-dash","implementationState":"actor-frame-mostly-promoted","effectiveImplementationState":"actor-frame-mostly-promoted","semanticNote":"시전자 프레임과 위치/이동 VM으로 주 동작은 재생 가능하다. 타격 이펙트는 별도 보정 대상이다.","canonicalKey":"player:smashu:0x13","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x00524ce4","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[43],"positionClass":"target-pierce-motion","casterRule":"target-fixed-side-direct","startAnchor":"target-fixed-side","motionKind":"teleport","motionTarget":"target-fixed-side","positionConfidence":"high","positionBucket":"target-fixed-side","positionBucketLabel":"고정 측면","battleMapPlacementSummary":"화면 고정 X와 대상 Y를 결합한 측면 기준점에 배치된다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 4 uses fixed screen X with target-relative Y; this is a target-side staging anchor."],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 4, 10, 1, 1, 3, 1, 1, 1, 1, 1","0xc2 result sound count changes: 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 0, 0, 0, 0","frame count changes: 4, 4, 6, 6, 18, 5, 11, 16, 5, 8, 19, 1, 1, 1, 4","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x00524ce4","opcode":"0xbc","summary":"direct placement selector=4: side-fixed screen X with target-relative Y.","selector":4,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-frame","vaHex":"0x00524ce8","opcode":"0x21","summary":"set sprite=0x17, frame=7, gate=4, mode=0","spriteHex":"0x17","frame":7,"gate":4},{"tick":4,"kind":"actor-frame","vaHex":"0x00524cf0","opcode":"0x21","summary":"set sprite=0x17, frame=8, gate=6, mode=0","spriteHex":"0x17","frame":8,"gate":6},{"tick":10,"kind":"movement","vaHex":"0x00524cf8","opcode":"0xbc","summary":"interpolated child motion mode=3, selector=2, stepDivisor=12: one target-side edge placement; side depends on actor kind.","selector":2,"divisor":12,"movementMode":3},{"tick":10,"kind":"actor-frame","vaHex":"0x00524cfc","opcode":"0x21","summary":"set sprite=0x17, frame=9, gate=6, mode=0","spriteHex":"0x17","frame":9,"gate":6},{"tick":16,"kind":"helper-call","vaHex":"0x00524d04","opcode":"0xbd","summary":"helper-call id=12; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":12},{"tick":16,"kind":"result-sound","vaHex":"0x00524d08","opcode":"0xc2","summary":"WLK id 20 (normal id 20, alt id 14, mode=0)","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0},{"tick":16,"kind":"actor-flag","vaHex":"0x00524d0c","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":16,"kind":"actor-flag","vaHex":"0x00524d14","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":16,"kind":"wait","vaHex":"0x00524d1c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":16,"kind":"actor-frame","vaHex":"0x00524d20","opcode":"0x21","summary":"set sprite=0x17, frame=9, gate=2, mode=0","spriteHex":"0x17","frame":9,"gate":2},{"tick":18,"kind":"helper-call","vaHex":"0x00524d28","opcode":"0xbd","summary":"helper-call id=12; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":12},{"tick":18,"kind":"result-sound","vaHex":"0x00524d2c","opcode":"0xc2","summary":"WLK id 20 (normal id 20, alt id 14, mode=0)","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0},{"tick":18,"kind":"actor-flag","vaHex":"0x00524d30","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":18,"kind":"actor-flag","vaHex":"0x00524d38","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":18,"kind":"wait","vaHex":"0x00524d40","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":18,"kind":"actor-frame","vaHex":"0x00524d44","opcode":"0x21","summary":"set sprite=0x17, frame=9, gate=2, mode=0","spriteHex":"0x17","frame":9,"gate":2},{"tick":20,"kind":"actor-write","vaHex":"0x00524d4c","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":20,"kind":"actor-frame","vaHex":"0x00524d54","opcode":"0x21","summary":"set sprite=0x17, frame=12, gate=2, mode=0","spriteHex":"0x17","frame":12,"gate":2},{"tick":22,"kind":"helper-call","vaHex":"0x00524d5c","opcode":"0xbd","summary":"helper-call id=13; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":13},{"tick":22,"kind":"actor-frame","vaHex":"0x00524d60","opcode":"0x21","summary":"set sprite=0x17, frame=13, gate=1, mode=0","spriteHex":"0x17","frame":13,"gate":1},{"tick":23,"kind":"helper-call","vaHex":"0x00524d68","opcode":"0xbd","summary":"helper-call id=43; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":43},{"tick":23,"kind":"result-sound","vaHex":"0x00524d6c","opcode":"0xc2","summary":"WLK id 20 (normal id 20, alt id 14, mode=0)","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0},{"tick":23,"kind":"actor-flag","vaHex":"0x00524d70","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":23,"kind":"actor-flag","vaHex":"0x00524d78","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":23,"kind":"wait","vaHex":"0x00524d80","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":23,"kind":"actor-frame","vaHex":"0x00524d84","opcode":"0x21","summary":"set sprite=0x17, frame=13, gate=15, mode=0","spriteHex":"0x17","frame":13,"gate":15},{"tick":38,"kind":"actor-write","vaHex":"0x00524d8c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":38,"kind":"actor-frame","vaHex":"0x00524d94","opcode":"0x21","summary":"set sprite=0x17, frame=18, gate=4, mode=0","spriteHex":"0x17","frame":18,"gate":4},{"tick":42,"kind":"result-sound","vaHex":"0x00524d9c","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":42,"kind":"actor-flag","vaHex":"0x00524da0","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":42,"kind":"actor-flag","vaHex":"0x00524da8","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":42,"kind":"wait","vaHex":"0x00524db0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":42,"kind":"actor-frame","vaHex":"0x00524db4","opcode":"0x21","summary":"set sprite=0x17, frame=18, gate=6, mode=0","spriteHex":"0x17","frame":18,"gate":6},{"tick":48,"kind":"movement","vaHex":"0x00524dbc","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0},{"tick":48,"kind":"actor-frame","vaHex":"0x00524dc0","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":16,"soundVaHex":"0x00524d08","normalWlkNo":20,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00524d0c","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00524d14","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00524d1c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":18,"soundVaHex":"0x00524d2c","normalWlkNo":20,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00524d30","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00524d38","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00524d40","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":23,"soundVaHex":"0x00524d6c","normalWlkNo":20,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00524d70","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00524d78","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00524d80","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":42,"soundVaHex":"0x00524d9c","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00524da0","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00524da8","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00524db0","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:actor-melee-or-dash","sound:result-only","helper:multi-frameScript-effect","helper:direct-frame-spawn"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x14","ownerKey":"smashu","ownerName":"스마슈","skillName":"백인일섬","familyName":"백인일섬","skillIdHex":"0x14","levelOrFixed":1,"targetClass":"enemy-all","mpCost":10,"hitCount":1,"frameSequence":[10,11,12,13,2],"expandedFrameGateSequence":[{"tick":0,"frame":10,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":11,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":12,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[20],"soundModel":"result-only","soundCalls":[{"tick":10,"opcode":"0xc2","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x0052505c"}],"helperIds":[12],"helperFacts":[{"helperId":12,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3d18","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3d40","frames":["65@2","66@2","67@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b3cec","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b3d04","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] != right:imm.byte=0x01 -> 0x004b3d04","targetSnippet":[{"vaHex":"0x004b3d04","opcode":"0x20","category":"frame-script-pointer","summary":"set display.frameScript(+0x64) = 0x004b3d44"},{"vaHex":"0x004b3d0c","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b3d10","opcode":"0x03","category":"jump","summary":"jump 0x004b3d0c"},{"vaHex":"0x004b3d18","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=65, gate=2, mode=0"},{"vaHex":"0x004b3d20","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=66, gate=2, mode=0"},{"vaHex":"0x004b3d28","opcode":"0x12","category":"write","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)"},{"vaHex":"0x004b3d30","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=67, gate=2, mode=0"},{"vaHex":"0x004b3d38","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"}]}],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-id-only","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:smashu:0x14","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x0052501c","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"constant-fixed-family","familyPatternNotes":["현재 승격된 actor VM 기준으로 숙련도별 frame/gate/hit 변화가 없다.","이는 미해석이 아니라 actor 동작은 고정이고, 숙련도 차이는 MP/헬퍼/효과 크기/결과음 등 다른 레이어에서 확인해야 하는 패밀리다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x0052501c","opcode":"0x21","summary":"set sprite=0x17, frame=10, gate=2, mode=0","spriteHex":"0x17","frame":10,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00525024","opcode":"0x21","summary":"set sprite=0x17, frame=11, gate=4, mode=0","spriteHex":"0x17","frame":11,"gate":4},{"tick":6,"kind":"actor-write","vaHex":"0x0052502c","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":6,"kind":"actor-frame","vaHex":"0x00525034","opcode":"0x21","summary":"set sprite=0x17, frame=12, gate=2, mode=0","spriteHex":"0x17","frame":12,"gate":2},{"tick":8,"kind":"actor-frame","vaHex":"0x0052503c","opcode":"0x21","summary":"set sprite=0x17, frame=13, gate=2, mode=0","spriteHex":"0x17","frame":13,"gate":2},{"tick":10,"kind":"result-sound","vaHex":"0x0052505c","opcode":"0xc2","summary":"WLK id 20 (normal id 20, alt id 14, mode=0)","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0},{"tick":10,"kind":"helper-call","vaHex":"0x00525060","opcode":"0xbd","summary":"helper-call id=12; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":12},{"tick":10,"kind":"actor-flag","vaHex":"0x005250b8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x005250c0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x005250c8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-write","vaHex":"0x005250cc","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":10,"kind":"actor-frame","vaHex":"0x005250d4","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":10,"soundVaHex":"0x0052505c","normalWlkNo":20,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x005250b8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x005250c0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x005250c8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:result-only","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x15","ownerKey":"smashu","ownerName":"스마슈","skillName":"백인일섬","familyName":"백인일섬","skillIdHex":"0x15","levelOrFixed":2,"targetClass":"enemy-all","mpCost":10,"hitCount":1,"frameSequence":[10,11,12,13,2],"expandedFrameGateSequence":[{"tick":0,"frame":10,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":11,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":12,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[20],"soundModel":"result-only","soundCalls":[{"tick":10,"opcode":"0xc2","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525078"}],"helperIds":[105,12],"helperFacts":[{"helperId":105,"behaviorClass":"repeated-direct-frame-spawn","frameScripts":[],"directSpawnCount":4,"directSpawnFrames":["88@0","88@1","88@2","88@3"],"emitFrames":[88],"rootCounterSets":{"0x96":8},"rootBranches":[{"vaHex":"0x004ba6bc","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004ba6dc","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] != right:imm.byte=0x01 -> 0x004ba6dc","targetSnippet":[{"vaHex":"0x004ba6dc","opcode":"0x12","category":"write","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)"},{"vaHex":"0x004ba6e4","opcode":"0x12","category":"write","summary":"sub display/actor field +0x80, imm=0x00200000 (32px)"},{"vaHex":"0x004ba6ec","opcode":"0x03","category":"jump","summary":"jump 0x004ba590"},{"vaHex":"0x004ba6f4","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000008 (0.00012207px), mode=0x80"},{"vaHex":"0x004ba6fc","opcode":"0x42","category":"parent-actor","summary":"set parent actor pointer from this display object's actor slot"},{"vaHex":"0x004ba700","opcode":"0x13","category":"branch","summary":"byte conditional branch unresolved if left:parentActor.byte[+0x04] != right:imm.byte=0x01 -> 0x004ba720"},{"vaHex":"0x004ba708","opcode":"0x12","category":"write","summary":"sub display/actor field +0x1c, imm=0x00500000 (80px)"},{"vaHex":"0x004ba710","opcode":"0x12","category":"write","summary":"add display/actor field +0x80, imm=0x00500000 (80px)"}]},{"vaHex":"0x004ba564","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004ba530","condition":"conditional branch display.x +0x1c < motion.targetX +0x80; target 0x004ba530","targetSnippet":[{"vaHex":"0x004ba530","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004ba4e4 into +0x58"},{"vaHex":"0x004ba538","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004ba53c","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004ba540","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004ba544","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004ba548","opcode":"0x11","category":"child-write","summary":"display/child field +0xe7, source +0xe7, mode=0xe0"},{"vaHex":"0x004ba54c","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, source +0x96, mode=0xe0"},{"vaHex":"0x004ba550","opcode":"0x12","category":"write","summary":"add display/actor field +0x1c, imm=0x00100000 (16px)"}]},{"vaHex":"0x004ba578","fieldHex":"0x96","role":"outer-repeat-step-while-repeat-counter-nonzero","targetVaHex":"0x004ba56c","condition":"word conditional branch local-backward-loop if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004ba56c","targetSnippet":[{"vaHex":"0x004ba56c","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004ba570","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004ba578","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004ba56c"},{"vaHex":"0x004ba584","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"},{"vaHex":"0x004ba58c","opcode":"0x00","category":"destroy/end","summary":"destroy/free display object candidate"}]}],"childMotionLoops":[],"interpretation":["+0x96 raw 8 acts as outer repeat counter","root op14 on +0x96 yields one VM tick, reseeds +0x8e from +0x94, then emits another burst","static direct-spawn expansion currently exposes 4 child frame events"],"notes":["helper expands one call into multiple direct btl_efc child frame spawns"]},{"helperId":12,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3d18","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3d40","frames":["65@2","66@2","67@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b3cec","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b3d04","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] != right:imm.byte=0x01 -> 0x004b3d04","targetSnippet":[{"vaHex":"0x004b3d04","opcode":"0x20","category":"frame-script-pointer","summary":"set display.frameScript(+0x64) = 0x004b3d44"},{"vaHex":"0x004b3d0c","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b3d10","opcode":"0x03","category":"jump","summary":"jump 0x004b3d0c"},{"vaHex":"0x004b3d18","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=65, gate=2, mode=0"},{"vaHex":"0x004b3d20","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=66, gate=2, mode=0"},{"vaHex":"0x004b3d28","opcode":"0x12","category":"write","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)"},{"vaHex":"0x004b3d30","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=67, gate=2, mode=0"},{"vaHex":"0x004b3d38","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"}]}],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-id-only","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:smashu:0x15","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x0052501c","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"constant-fixed-family","familyPatternNotes":["현재 승격된 actor VM 기준으로 숙련도별 frame/gate/hit 변화가 없다.","이는 미해석이 아니라 actor 동작은 고정이고, 숙련도 차이는 MP/헬퍼/효과 크기/결과음 등 다른 레이어에서 확인해야 하는 패밀리다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x0052501c","opcode":"0x21","summary":"set sprite=0x17, frame=10, gate=2, mode=0","spriteHex":"0x17","frame":10,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00525024","opcode":"0x21","summary":"set sprite=0x17, frame=11, gate=4, mode=0","spriteHex":"0x17","frame":11,"gate":4},{"tick":6,"kind":"actor-write","vaHex":"0x0052502c","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":6,"kind":"actor-frame","vaHex":"0x00525034","opcode":"0x21","summary":"set sprite=0x17, frame=12, gate=2, mode=0","spriteHex":"0x17","frame":12,"gate":2},{"tick":8,"kind":"actor-frame","vaHex":"0x0052503c","opcode":"0x21","summary":"set sprite=0x17, frame=13, gate=2, mode=0","spriteHex":"0x17","frame":13,"gate":2},{"tick":10,"kind":"helper-call","vaHex":"0x0052506c","opcode":"0xbd","summary":"helper-call id=105; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":105},{"tick":10,"kind":"wait","vaHex":"0x00525070","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":10,"kind":"result-sound","vaHex":"0x00525078","opcode":"0xc2","summary":"WLK id 20 (normal id 20, alt id 14, mode=0)","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0},{"tick":10,"kind":"helper-call","vaHex":"0x0052507c","opcode":"0xbd","summary":"helper-call id=12; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":12},{"tick":10,"kind":"actor-flag","vaHex":"0x005250b8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x005250c0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x005250c8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-write","vaHex":"0x005250cc","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":10,"kind":"actor-frame","vaHex":"0x005250d4","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":10,"soundVaHex":"0x00525078","normalWlkNo":20,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x005250b8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x005250c0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x005250c8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:result-only","helper:repeated-direct-frame-spawn","helper-root-counters","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x16","ownerKey":"smashu","ownerName":"스마슈","skillName":"백인일섬","familyName":"백인일섬","skillIdHex":"0x16","levelOrFixed":3,"targetClass":"enemy-all","mpCost":9,"hitCount":1,"frameSequence":[10,11,12,13,2],"expandedFrameGateSequence":[{"tick":0,"frame":10,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":11,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":12,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[20],"soundModel":"result-only","soundCalls":[{"tick":10,"opcode":"0xc2","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525094"}],"helperIds":[106,12],"helperFacts":[{"helperId":106,"behaviorClass":"repeated-direct-frame-spawn","frameScripts":[],"directSpawnCount":4,"directSpawnFrames":["88@0","88@1","88@2","88@3"],"emitFrames":[88],"rootCounterSets":{"0x96":8},"rootBranches":[{"vaHex":"0x004ba700","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004ba720","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] != right:imm.byte=0x01 -> 0x004ba720","targetSnippet":[{"vaHex":"0x004ba720","opcode":"0x12","category":"write","summary":"add display/actor field +0x1c, imm=0x00500000 (80px)"},{"vaHex":"0x004ba728","opcode":"0x12","category":"write","summary":"sub display/actor field +0x80, imm=0x00500000 (80px)"},{"vaHex":"0x004ba730","opcode":"0x03","category":"jump","summary":"jump 0x004ba590"},{"vaHex":"0x004ba738","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000008 (0.00012207px), mode=0x80"},{"vaHex":"0x004ba740","opcode":"0x42","category":"parent-actor","summary":"set parent actor pointer from this display object's actor slot"},{"vaHex":"0x004ba744","opcode":"0x13","category":"branch","summary":"byte conditional branch unresolved if left:parentActor.byte[+0x04] != right:imm.byte=0x01 -> 0x004ba764"},{"vaHex":"0x004ba74c","opcode":"0x12","category":"write","summary":"sub display/actor field +0x1c, imm=0x00b00000 (176px)"},{"vaHex":"0x004ba754","opcode":"0x12","category":"write","summary":"add display/actor field +0x80, imm=0x00b00000 (176px)"}]},{"vaHex":"0x004ba564","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004ba530","condition":"conditional branch display.x +0x1c < motion.targetX +0x80; target 0x004ba530","targetSnippet":[{"vaHex":"0x004ba530","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004ba4e4 into +0x58"},{"vaHex":"0x004ba538","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004ba53c","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004ba540","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004ba544","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004ba548","opcode":"0x11","category":"child-write","summary":"display/child field +0xe7, source +0xe7, mode=0xe0"},{"vaHex":"0x004ba54c","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, source +0x96, mode=0xe0"},{"vaHex":"0x004ba550","opcode":"0x12","category":"write","summary":"add display/actor field +0x1c, imm=0x00100000 (16px)"}]},{"vaHex":"0x004ba578","fieldHex":"0x96","role":"outer-repeat-step-while-repeat-counter-nonzero","targetVaHex":"0x004ba56c","condition":"word conditional branch local-backward-loop if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004ba56c","targetSnippet":[{"vaHex":"0x004ba56c","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004ba570","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004ba578","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004ba56c"},{"vaHex":"0x004ba584","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"},{"vaHex":"0x004ba58c","opcode":"0x00","category":"destroy/end","summary":"destroy/free display object candidate"}]}],"childMotionLoops":[],"interpretation":["+0x96 raw 8 acts as outer repeat counter","root op14 on +0x96 yields one VM tick, reseeds +0x8e from +0x94, then emits another burst","static direct-spawn expansion currently exposes 4 child frame events"],"notes":["helper expands one call into multiple direct btl_efc child frame spawns"]},{"helperId":12,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3d18","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3d40","frames":["65@2","66@2","67@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b3cec","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b3d04","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] != right:imm.byte=0x01 -> 0x004b3d04","targetSnippet":[{"vaHex":"0x004b3d04","opcode":"0x20","category":"frame-script-pointer","summary":"set display.frameScript(+0x64) = 0x004b3d44"},{"vaHex":"0x004b3d0c","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b3d10","opcode":"0x03","category":"jump","summary":"jump 0x004b3d0c"},{"vaHex":"0x004b3d18","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=65, gate=2, mode=0"},{"vaHex":"0x004b3d20","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=66, gate=2, mode=0"},{"vaHex":"0x004b3d28","opcode":"0x12","category":"write","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)"},{"vaHex":"0x004b3d30","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=67, gate=2, mode=0"},{"vaHex":"0x004b3d38","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"}]}],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-id-only","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:smashu:0x16","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x0052501c","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"constant-fixed-family","familyPatternNotes":["현재 승격된 actor VM 기준으로 숙련도별 frame/gate/hit 변화가 없다.","이는 미해석이 아니라 actor 동작은 고정이고, 숙련도 차이는 MP/헬퍼/효과 크기/결과음 등 다른 레이어에서 확인해야 하는 패밀리다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x0052501c","opcode":"0x21","summary":"set sprite=0x17, frame=10, gate=2, mode=0","spriteHex":"0x17","frame":10,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00525024","opcode":"0x21","summary":"set sprite=0x17, frame=11, gate=4, mode=0","spriteHex":"0x17","frame":11,"gate":4},{"tick":6,"kind":"actor-write","vaHex":"0x0052502c","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":6,"kind":"actor-frame","vaHex":"0x00525034","opcode":"0x21","summary":"set sprite=0x17, frame=12, gate=2, mode=0","spriteHex":"0x17","frame":12,"gate":2},{"tick":8,"kind":"actor-frame","vaHex":"0x0052503c","opcode":"0x21","summary":"set sprite=0x17, frame=13, gate=2, mode=0","spriteHex":"0x17","frame":13,"gate":2},{"tick":10,"kind":"helper-call","vaHex":"0x00525088","opcode":"0xbd","summary":"helper-call id=106; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":106},{"tick":10,"kind":"wait","vaHex":"0x0052508c","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":10,"kind":"result-sound","vaHex":"0x00525094","opcode":"0xc2","summary":"WLK id 20 (normal id 20, alt id 14, mode=0)","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0},{"tick":10,"kind":"helper-call","vaHex":"0x00525098","opcode":"0xbd","summary":"helper-call id=12; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":12},{"tick":10,"kind":"actor-flag","vaHex":"0x005250b8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x005250c0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x005250c8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-write","vaHex":"0x005250cc","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":10,"kind":"actor-frame","vaHex":"0x005250d4","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":10,"soundVaHex":"0x00525094","normalWlkNo":20,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x005250b8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x005250c0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x005250c8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:result-only","helper:repeated-direct-frame-spawn","helper-root-counters","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x17","ownerKey":"smashu","ownerName":"스마슈","skillName":"백인일섬","familyName":"백인일섬","skillIdHex":"0x17","levelOrFixed":4,"targetClass":"enemy-all","mpCost":8,"hitCount":1,"frameSequence":[10,11,12,13,2],"expandedFrameGateSequence":[{"tick":0,"frame":10,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":11,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":12,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[],"resultWlkNos":[20],"soundModel":"result-only","soundCalls":[{"tick":10,"opcode":"0xc2","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x005250b0"}],"helperIds":[107,12],"helperFacts":[{"helperId":107,"behaviorClass":"repeated-direct-frame-spawn","frameScripts":[],"directSpawnCount":4,"directSpawnFrames":["88@0","88@1","88@2","88@3"],"emitFrames":[88],"rootCounterSets":{"0x96":8},"rootBranches":[{"vaHex":"0x004ba744","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004ba764","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] != right:imm.byte=0x01 -> 0x004ba764","targetSnippet":[{"vaHex":"0x004ba764","opcode":"0x12","category":"write","summary":"add display/actor field +0x1c, imm=0x00b00000 (176px)"},{"vaHex":"0x004ba76c","opcode":"0x12","category":"write","summary":"sub display/actor field +0x80, imm=0x00b00000 (176px)"},{"vaHex":"0x004ba774","opcode":"0x03","category":"jump","summary":"jump 0x004ba590"},{"vaHex":"0x004ba77c","opcode":"0x08","category":"init-block","summary":"variable init block writes=4 stop=terminator"},{"vaHex":"0x004ba798","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004ba79c","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x20, mode=0xa0"},{"vaHex":"0x004ba7a0","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:display.byte[+0xe6] = source:display.byte[+0xe7]"},{"vaHex":"0x004ba7a4","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"}]},{"vaHex":"0x004ba564","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004ba530","condition":"conditional branch display.x +0x1c < motion.targetX +0x80; target 0x004ba530","targetSnippet":[{"vaHex":"0x004ba530","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004ba4e4 into +0x58"},{"vaHex":"0x004ba538","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004ba53c","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004ba540","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004ba544","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004ba548","opcode":"0x11","category":"child-write","summary":"display/child field +0xe7, source +0xe7, mode=0xe0"},{"vaHex":"0x004ba54c","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, source +0x96, mode=0xe0"},{"vaHex":"0x004ba550","opcode":"0x12","category":"write","summary":"add display/actor field +0x1c, imm=0x00100000 (16px)"}]},{"vaHex":"0x004ba578","fieldHex":"0x96","role":"outer-repeat-step-while-repeat-counter-nonzero","targetVaHex":"0x004ba56c","condition":"word conditional branch local-backward-loop if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004ba56c","targetSnippet":[{"vaHex":"0x004ba56c","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004ba570","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004ba578","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004ba56c"},{"vaHex":"0x004ba584","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"},{"vaHex":"0x004ba58c","opcode":"0x00","category":"destroy/end","summary":"destroy/free display object candidate"}]}],"childMotionLoops":[],"interpretation":["+0x96 raw 8 acts as outer repeat counter","root op14 on +0x96 yields one VM tick, reseeds +0x8e from +0x94, then emits another burst","static direct-spawn expansion currently exposes 4 child frame events"],"notes":["helper expands one call into multiple direct btl_efc child frame spawns"]},{"helperId":12,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3d18","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3d40","frames":["65@2","66@2","67@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b3cec","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b3d04","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] != right:imm.byte=0x01 -> 0x004b3d04","targetSnippet":[{"vaHex":"0x004b3d04","opcode":"0x20","category":"frame-script-pointer","summary":"set display.frameScript(+0x64) = 0x004b3d44"},{"vaHex":"0x004b3d0c","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b3d10","opcode":"0x03","category":"jump","summary":"jump 0x004b3d0c"},{"vaHex":"0x004b3d18","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=65, gate=2, mode=0"},{"vaHex":"0x004b3d20","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=66, gate=2, mode=0"},{"vaHex":"0x004b3d28","opcode":"0x12","category":"write","summary":"add display/actor field +0x1c, imm=0x00200000 (32px)"},{"vaHex":"0x004b3d30","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=67, gate=2, mode=0"},{"vaHex":"0x004b3d38","opcode":"0xad","category":"actor-flags","summary":"actor flag mode=0, mask=0x00000002"}]}],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-id-only","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:smashu:0x17","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x0052501c","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"constant-fixed-family","familyPatternNotes":["현재 승격된 actor VM 기준으로 숙련도별 frame/gate/hit 변화가 없다.","이는 미해석이 아니라 actor 동작은 고정이고, 숙련도 차이는 MP/헬퍼/효과 크기/결과음 등 다른 레이어에서 확인해야 하는 패밀리다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x0052501c","opcode":"0x21","summary":"set sprite=0x17, frame=10, gate=2, mode=0","spriteHex":"0x17","frame":10,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00525024","opcode":"0x21","summary":"set sprite=0x17, frame=11, gate=4, mode=0","spriteHex":"0x17","frame":11,"gate":4},{"tick":6,"kind":"actor-write","vaHex":"0x0052502c","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":6,"kind":"actor-frame","vaHex":"0x00525034","opcode":"0x21","summary":"set sprite=0x17, frame=12, gate=2, mode=0","spriteHex":"0x17","frame":12,"gate":2},{"tick":8,"kind":"actor-frame","vaHex":"0x0052503c","opcode":"0x21","summary":"set sprite=0x17, frame=13, gate=2, mode=0","spriteHex":"0x17","frame":13,"gate":2},{"tick":10,"kind":"helper-call","vaHex":"0x005250a4","opcode":"0xbd","summary":"helper-call id=107; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":107},{"tick":10,"kind":"wait","vaHex":"0x005250a8","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":10,"kind":"result-sound","vaHex":"0x005250b0","opcode":"0xc2","summary":"WLK id 20 (normal id 20, alt id 14, mode=0)","wlkNo":20,"normalWlkNo":20,"altWlkNo":14,"mode":0},{"tick":10,"kind":"helper-call","vaHex":"0x005250b4","opcode":"0xbd","summary":"helper-call id=12; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":12},{"tick":10,"kind":"actor-flag","vaHex":"0x005250b8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x005250c0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x005250c8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-write","vaHex":"0x005250cc","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":10,"kind":"actor-frame","vaHex":"0x005250d4","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":10,"soundVaHex":"0x005250b0","normalWlkNo":20,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x005250b8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x005250c0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x005250c8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:result-only","helper:repeated-direct-frame-spawn","helper-root-counters","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x18","ownerKey":"smashu","ownerName":"스마슈","skillName":"인법·분신술","familyName":"인법·분신술","skillIdHex":"0x18","levelOrFixed":1,"targetClass":"enemy-all","mpCost":15,"hitCount":2,"frameSequence":[6,4,40,41,41,41,41,41,40,4,6,2],"expandedFrameGateSequence":[{"tick":0,"frame":6,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":4,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":40,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":41,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":41,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":17,"frame":41,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":25,"frame":41,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":33,"frame":41,"gate":16,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":49,"frame":40,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":53,"frame":4,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":57,"frame":6,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":61,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":63,"repeatLoopCount":0,"hitEventCount":2,"hitClassCounts":{"confirmed-result-hit-window":2},"effectWlkNos":[15,16],"resultWlkNos":[3,3],"soundModel":"effect+result","soundCalls":[{"tick":16,"opcode":"0x24","wlkNo":15,"effectArgsHex":"01 00 0f","role":"effect/cast cue","vaHex":"0x00525114"},{"tick":17,"opcode":"0x24","wlkNo":16,"effectArgsHex":"01 00 10","role":"effect/cast cue","vaHex":"0x00525224"},{"tick":17,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525228"},{"tick":25,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525248"}],"helperIds":[],"helperFacts":[],"helperRole":"spawned-child-display-flow","renderTrack":"spawned-child-display-flow","implementationState":"needs-helper-target-promotion","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"0x07 child display VM spawn target이 있어 actor frame만으로는 부족하다.","canonicalKey":"player:smashu:0x18","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x005250e8","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-clone-placement","casterRule":"clone-spread-direct","startAnchor":"home","motionKind":"clone-spread","motionTarget":"screen/targets","positionConfidence":"high","positionBucket":"clone-spread","positionBucketLabel":"사방팔방/분신","battleMapPlacementSummary":"시전자 본체보다 분신/분산 배치가 중심이다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 5 is clone/spread setup"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 2, 3, 4, 5","0xc2 result sound count changes: 2, 3, 4, 5","frame count changes: 12, 13, 14, 15"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x005250e8","opcode":"0xbc","summary":"direct placement selector=5: screen-size/display-size based fixed placement.","selector":5,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-frame","vaHex":"0x005250ec","opcode":"0x21","summary":"set sprite=0x17, frame=6, gate=4, mode=0","spriteHex":"0x17","frame":6,"gate":4},{"tick":4,"kind":"actor-frame","vaHex":"0x005250f4","opcode":"0x21","summary":"set sprite=0x17, frame=4, gate=4, mode=0","spriteHex":"0x17","frame":4,"gate":4},{"tick":8,"kind":"actor-frame","vaHex":"0x005250fc","opcode":"0x21","summary":"set sprite=0x17, frame=40, gate=4, mode=0","spriteHex":"0x17","frame":40,"gate":4},{"tick":12,"kind":"actor-frame","vaHex":"0x00525104","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=4, mode=0","spriteHex":"0x17","frame":41,"gate":4},{"tick":16,"kind":"effect-sound","vaHex":"0x00525114","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 15; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":15,"effectArgsHex":"01 00 0f"},{"tick":16,"kind":"actor-frame","vaHex":"0x00525208","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=1, mode=0","spriteHex":"0x17","frame":41,"gate":1},{"tick":17,"kind":"effect-sound","vaHex":"0x00525224","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 16; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":16,"effectArgsHex":"01 00 10"},{"tick":17,"kind":"result-sound","vaHex":"0x00525228","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":17,"kind":"actor-frame","vaHex":"0x0052522c","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=8, mode=0","spriteHex":"0x17","frame":41,"gate":8},{"tick":25,"kind":"actor-flag","vaHex":"0x00525234","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":25,"kind":"actor-flag","vaHex":"0x0052523c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":25,"kind":"wait","vaHex":"0x00525244","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":25,"kind":"result-sound","vaHex":"0x00525248","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":25,"kind":"actor-frame","vaHex":"0x0052524c","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=8, mode=0","spriteHex":"0x17","frame":41,"gate":8},{"tick":33,"kind":"actor-flag","vaHex":"0x00525254","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":33,"kind":"actor-flag","vaHex":"0x0052525c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":33,"kind":"wait","vaHex":"0x00525264","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":33,"kind":"movement","vaHex":"0x005252ec","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0},{"tick":33,"kind":"actor-frame","vaHex":"0x005252f0","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=16, mode=0","spriteHex":"0x17","frame":41,"gate":16},{"tick":49,"kind":"actor-frame","vaHex":"0x005252f8","opcode":"0x21","summary":"set sprite=0x17, frame=40, gate=4, mode=0","spriteHex":"0x17","frame":40,"gate":4},{"tick":53,"kind":"actor-frame","vaHex":"0x00525300","opcode":"0x21","summary":"set sprite=0x17, frame=4, gate=4, mode=0","spriteHex":"0x17","frame":4,"gate":4},{"tick":57,"kind":"actor-frame","vaHex":"0x00525308","opcode":"0x21","summary":"set sprite=0x17, frame=6, gate=4, mode=0","spriteHex":"0x17","frame":6,"gate":4},{"tick":61,"kind":"actor-frame","vaHex":"0x00525310","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":17,"soundVaHex":"0x00525228","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00525234","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x0052523c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00525244","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":25,"soundVaHex":"0x00525248","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00525254","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x0052525c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00525264","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:spawned-child-display-flow","sound:effect+result"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x19","ownerKey":"smashu","ownerName":"스마슈","skillName":"인법·분신술","familyName":"인법·분신술","skillIdHex":"0x19","levelOrFixed":2,"targetClass":"enemy-all","mpCost":15,"hitCount":3,"frameSequence":[6,4,40,41,41,41,41,41,41,40,4,6,2],"expandedFrameGateSequence":[{"tick":0,"frame":6,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":4,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":40,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":41,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":41,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":17,"frame":41,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":25,"frame":41,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":33,"frame":41,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":41,"frame":41,"gate":16,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":57,"frame":40,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":61,"frame":4,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":65,"frame":6,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":69,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":71,"repeatLoopCount":0,"hitEventCount":3,"hitClassCounts":{"confirmed-result-hit-window":3},"effectWlkNos":[15,16],"resultWlkNos":[3,3,3],"soundModel":"effect+result","soundCalls":[{"tick":16,"opcode":"0x24","wlkNo":15,"effectArgsHex":"01 00 0f","role":"effect/cast cue","vaHex":"0x00525114"},{"tick":17,"opcode":"0x24","wlkNo":16,"effectArgsHex":"01 00 10","role":"effect/cast cue","vaHex":"0x00525224"},{"tick":17,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525228"},{"tick":25,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525248"},{"tick":33,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525270"}],"helperIds":[],"helperFacts":[],"helperRole":"spawned-child-display-flow","renderTrack":"spawned-child-display-flow","implementationState":"needs-helper-target-promotion","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"0x07 child display VM spawn target이 있어 actor frame만으로는 부족하다.","canonicalKey":"player:smashu:0x19","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x005250e8","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-clone-placement","casterRule":"clone-spread-direct","startAnchor":"home","motionKind":"clone-spread","motionTarget":"screen/targets","positionConfidence":"high","positionBucket":"clone-spread","positionBucketLabel":"사방팔방/분신","battleMapPlacementSummary":"시전자 본체보다 분신/분산 배치가 중심이다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 5 is clone/spread setup"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 2, 3, 4, 5","0xc2 result sound count changes: 2, 3, 4, 5","frame count changes: 12, 13, 14, 15"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x005250e8","opcode":"0xbc","summary":"direct placement selector=5: screen-size/display-size based fixed placement.","selector":5,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-frame","vaHex":"0x005250ec","opcode":"0x21","summary":"set sprite=0x17, frame=6, gate=4, mode=0","spriteHex":"0x17","frame":6,"gate":4},{"tick":4,"kind":"actor-frame","vaHex":"0x005250f4","opcode":"0x21","summary":"set sprite=0x17, frame=4, gate=4, mode=0","spriteHex":"0x17","frame":4,"gate":4},{"tick":8,"kind":"actor-frame","vaHex":"0x005250fc","opcode":"0x21","summary":"set sprite=0x17, frame=40, gate=4, mode=0","spriteHex":"0x17","frame":40,"gate":4},{"tick":12,"kind":"actor-frame","vaHex":"0x00525104","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=4, mode=0","spriteHex":"0x17","frame":41,"gate":4},{"tick":16,"kind":"effect-sound","vaHex":"0x00525114","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 15; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":15,"effectArgsHex":"01 00 0f"},{"tick":16,"kind":"actor-frame","vaHex":"0x00525208","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=1, mode=0","spriteHex":"0x17","frame":41,"gate":1},{"tick":17,"kind":"effect-sound","vaHex":"0x00525224","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 16; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":16,"effectArgsHex":"01 00 10"},{"tick":17,"kind":"result-sound","vaHex":"0x00525228","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":17,"kind":"actor-frame","vaHex":"0x0052522c","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=8, mode=0","spriteHex":"0x17","frame":41,"gate":8},{"tick":25,"kind":"actor-flag","vaHex":"0x00525234","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":25,"kind":"actor-flag","vaHex":"0x0052523c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":25,"kind":"wait","vaHex":"0x00525244","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":25,"kind":"result-sound","vaHex":"0x00525248","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":25,"kind":"actor-frame","vaHex":"0x0052524c","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=8, mode=0","spriteHex":"0x17","frame":41,"gate":8},{"tick":33,"kind":"actor-flag","vaHex":"0x00525254","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":33,"kind":"actor-flag","vaHex":"0x0052525c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":33,"kind":"wait","vaHex":"0x00525264","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":33,"kind":"result-sound","vaHex":"0x00525270","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":33,"kind":"actor-frame","vaHex":"0x00525274","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=8, mode=0","spriteHex":"0x17","frame":41,"gate":8},{"tick":41,"kind":"actor-flag","vaHex":"0x0052527c","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":41,"kind":"actor-flag","vaHex":"0x00525284","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":41,"kind":"wait","vaHex":"0x0052528c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":41,"kind":"movement","vaHex":"0x005252ec","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0},{"tick":41,"kind":"actor-frame","vaHex":"0x005252f0","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=16, mode=0","spriteHex":"0x17","frame":41,"gate":16},{"tick":57,"kind":"actor-frame","vaHex":"0x005252f8","opcode":"0x21","summary":"set sprite=0x17, frame=40, gate=4, mode=0","spriteHex":"0x17","frame":40,"gate":4},{"tick":61,"kind":"actor-frame","vaHex":"0x00525300","opcode":"0x21","summary":"set sprite=0x17, frame=4, gate=4, mode=0","spriteHex":"0x17","frame":4,"gate":4},{"tick":65,"kind":"actor-frame","vaHex":"0x00525308","opcode":"0x21","summary":"set sprite=0x17, frame=6, gate=4, mode=0","spriteHex":"0x17","frame":6,"gate":4},{"tick":69,"kind":"actor-frame","vaHex":"0x00525310","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":17,"soundVaHex":"0x00525228","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00525234","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x0052523c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00525244","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":25,"soundVaHex":"0x00525248","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00525254","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x0052525c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00525264","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":33,"soundVaHex":"0x00525270","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x0052527c","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00525284","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x0052528c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:spawned-child-display-flow","sound:effect+result"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x1a","ownerKey":"smashu","ownerName":"스마슈","skillName":"인법·분신술","familyName":"인법·분신술","skillIdHex":"0x1a","levelOrFixed":3,"targetClass":"enemy-all","mpCost":14,"hitCount":4,"frameSequence":[6,4,40,41,41,41,41,41,41,41,40,4,6,2],"expandedFrameGateSequence":[{"tick":0,"frame":6,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":4,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":40,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":41,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":41,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":17,"frame":41,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":25,"frame":41,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":33,"frame":41,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":41,"frame":41,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":49,"frame":41,"gate":16,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":65,"frame":40,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":69,"frame":4,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":73,"frame":6,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":77,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":79,"repeatLoopCount":0,"hitEventCount":4,"hitClassCounts":{"confirmed-result-hit-window":4},"effectWlkNos":[15,16],"resultWlkNos":[3,3,3,3],"soundModel":"effect+result","soundCalls":[{"tick":16,"opcode":"0x24","wlkNo":15,"effectArgsHex":"01 00 0f","role":"effect/cast cue","vaHex":"0x00525114"},{"tick":17,"opcode":"0x24","wlkNo":16,"effectArgsHex":"01 00 10","role":"effect/cast cue","vaHex":"0x00525224"},{"tick":17,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525228"},{"tick":25,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525248"},{"tick":33,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525270"},{"tick":41,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525298"}],"helperIds":[],"helperFacts":[],"helperRole":"spawned-child-display-flow","renderTrack":"spawned-child-display-flow","implementationState":"needs-helper-target-promotion","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"0x07 child display VM spawn target이 있어 actor frame만으로는 부족하다.","canonicalKey":"player:smashu:0x1a","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x005250e8","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-clone-placement","casterRule":"clone-spread-direct","startAnchor":"home","motionKind":"clone-spread","motionTarget":"screen/targets","positionConfidence":"high","positionBucket":"clone-spread","positionBucketLabel":"사방팔방/분신","battleMapPlacementSummary":"시전자 본체보다 분신/분산 배치가 중심이다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 5 is clone/spread setup"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 2, 3, 4, 5","0xc2 result sound count changes: 2, 3, 4, 5","frame count changes: 12, 13, 14, 15"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x005250e8","opcode":"0xbc","summary":"direct placement selector=5: screen-size/display-size based fixed placement.","selector":5,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-frame","vaHex":"0x005250ec","opcode":"0x21","summary":"set sprite=0x17, frame=6, gate=4, mode=0","spriteHex":"0x17","frame":6,"gate":4},{"tick":4,"kind":"actor-frame","vaHex":"0x005250f4","opcode":"0x21","summary":"set sprite=0x17, frame=4, gate=4, mode=0","spriteHex":"0x17","frame":4,"gate":4},{"tick":8,"kind":"actor-frame","vaHex":"0x005250fc","opcode":"0x21","summary":"set sprite=0x17, frame=40, gate=4, mode=0","spriteHex":"0x17","frame":40,"gate":4},{"tick":12,"kind":"actor-frame","vaHex":"0x00525104","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=4, mode=0","spriteHex":"0x17","frame":41,"gate":4},{"tick":16,"kind":"effect-sound","vaHex":"0x00525114","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 15; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":15,"effectArgsHex":"01 00 0f"},{"tick":16,"kind":"actor-frame","vaHex":"0x00525208","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=1, mode=0","spriteHex":"0x17","frame":41,"gate":1},{"tick":17,"kind":"effect-sound","vaHex":"0x00525224","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 16; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":16,"effectArgsHex":"01 00 10"},{"tick":17,"kind":"result-sound","vaHex":"0x00525228","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":17,"kind":"actor-frame","vaHex":"0x0052522c","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=8, mode=0","spriteHex":"0x17","frame":41,"gate":8},{"tick":25,"kind":"actor-flag","vaHex":"0x00525234","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":25,"kind":"actor-flag","vaHex":"0x0052523c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":25,"kind":"wait","vaHex":"0x00525244","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":25,"kind":"result-sound","vaHex":"0x00525248","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":25,"kind":"actor-frame","vaHex":"0x0052524c","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=8, mode=0","spriteHex":"0x17","frame":41,"gate":8},{"tick":33,"kind":"actor-flag","vaHex":"0x00525254","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":33,"kind":"actor-flag","vaHex":"0x0052525c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":33,"kind":"wait","vaHex":"0x00525264","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":33,"kind":"result-sound","vaHex":"0x00525270","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":33,"kind":"actor-frame","vaHex":"0x00525274","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=8, mode=0","spriteHex":"0x17","frame":41,"gate":8},{"tick":41,"kind":"actor-flag","vaHex":"0x0052527c","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":41,"kind":"actor-flag","vaHex":"0x00525284","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":41,"kind":"wait","vaHex":"0x0052528c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":41,"kind":"result-sound","vaHex":"0x00525298","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":41,"kind":"actor-frame","vaHex":"0x0052529c","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=8, mode=0","spriteHex":"0x17","frame":41,"gate":8},{"tick":49,"kind":"actor-flag","vaHex":"0x005252a4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":49,"kind":"actor-flag","vaHex":"0x005252ac","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":49,"kind":"wait","vaHex":"0x005252b4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":49,"kind":"movement","vaHex":"0x005252ec","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0},{"tick":49,"kind":"actor-frame","vaHex":"0x005252f0","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=16, mode=0","spriteHex":"0x17","frame":41,"gate":16},{"tick":65,"kind":"actor-frame","vaHex":"0x005252f8","opcode":"0x21","summary":"set sprite=0x17, frame=40, gate=4, mode=0","spriteHex":"0x17","frame":40,"gate":4},{"tick":69,"kind":"actor-frame","vaHex":"0x00525300","opcode":"0x21","summary":"set sprite=0x17, frame=4, gate=4, mode=0","spriteHex":"0x17","frame":4,"gate":4},{"tick":73,"kind":"actor-frame","vaHex":"0x00525308","opcode":"0x21","summary":"set sprite=0x17, frame=6, gate=4, mode=0","spriteHex":"0x17","frame":6,"gate":4},{"tick":77,"kind":"actor-frame","vaHex":"0x00525310","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":17,"soundVaHex":"0x00525228","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00525234","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x0052523c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00525244","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":25,"soundVaHex":"0x00525248","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00525254","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x0052525c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00525264","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":33,"soundVaHex":"0x00525270","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x0052527c","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00525284","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x0052528c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":41,"soundVaHex":"0x00525298","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x005252a4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x005252ac","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x005252b4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:spawned-child-display-flow","sound:effect+result"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x1b","ownerKey":"smashu","ownerName":"스마슈","skillName":"인법·분신술","familyName":"인법·분신술","skillIdHex":"0x1b","levelOrFixed":4,"targetClass":"enemy-all","mpCost":12,"hitCount":5,"frameSequence":[6,4,40,41,41,41,41,41,41,41,41,40,4,6,2],"expandedFrameGateSequence":[{"tick":0,"frame":6,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":4,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":40,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":41,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":41,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":17,"frame":41,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":25,"frame":41,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":33,"frame":41,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":41,"frame":41,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":49,"frame":41,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":57,"frame":41,"gate":16,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":73,"frame":40,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":77,"frame":4,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":81,"frame":6,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":85,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":87,"repeatLoopCount":0,"hitEventCount":5,"hitClassCounts":{"confirmed-result-hit-window":5},"effectWlkNos":[15,16],"resultWlkNos":[3,3,3,3,3],"soundModel":"effect+result","soundCalls":[{"tick":16,"opcode":"0x24","wlkNo":15,"effectArgsHex":"01 00 0f","role":"effect/cast cue","vaHex":"0x00525114"},{"tick":17,"opcode":"0x24","wlkNo":16,"effectArgsHex":"01 00 10","role":"effect/cast cue","vaHex":"0x00525224"},{"tick":17,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525228"},{"tick":25,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525248"},{"tick":33,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525270"},{"tick":41,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525298"},{"tick":49,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x005252c0"}],"helperIds":[],"helperFacts":[],"helperRole":"spawned-child-display-flow","renderTrack":"spawned-child-display-flow","implementationState":"needs-helper-target-promotion","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"0x07 child display VM spawn target이 있어 actor frame만으로는 부족하다.","canonicalKey":"player:smashu:0x1b","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x005250e8","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-clone-placement","casterRule":"clone-spread-direct","startAnchor":"home","motionKind":"clone-spread","motionTarget":"screen/targets","positionConfidence":"high","positionBucket":"clone-spread","positionBucketLabel":"사방팔방/분신","battleMapPlacementSummary":"시전자 본체보다 분신/분산 배치가 중심이다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 5 is clone/spread setup"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 2, 3, 4, 5","0xc2 result sound count changes: 2, 3, 4, 5","frame count changes: 12, 13, 14, 15"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x005250e8","opcode":"0xbc","summary":"direct placement selector=5: screen-size/display-size based fixed placement.","selector":5,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-frame","vaHex":"0x005250ec","opcode":"0x21","summary":"set sprite=0x17, frame=6, gate=4, mode=0","spriteHex":"0x17","frame":6,"gate":4},{"tick":4,"kind":"actor-frame","vaHex":"0x005250f4","opcode":"0x21","summary":"set sprite=0x17, frame=4, gate=4, mode=0","spriteHex":"0x17","frame":4,"gate":4},{"tick":8,"kind":"actor-frame","vaHex":"0x005250fc","opcode":"0x21","summary":"set sprite=0x17, frame=40, gate=4, mode=0","spriteHex":"0x17","frame":40,"gate":4},{"tick":12,"kind":"actor-frame","vaHex":"0x00525104","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=4, mode=0","spriteHex":"0x17","frame":41,"gate":4},{"tick":16,"kind":"effect-sound","vaHex":"0x00525114","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 15; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":15,"effectArgsHex":"01 00 0f"},{"tick":16,"kind":"actor-frame","vaHex":"0x00525208","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=1, mode=0","spriteHex":"0x17","frame":41,"gate":1},{"tick":17,"kind":"effect-sound","vaHex":"0x00525224","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 16; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":16,"effectArgsHex":"01 00 10"},{"tick":17,"kind":"result-sound","vaHex":"0x00525228","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":17,"kind":"actor-frame","vaHex":"0x0052522c","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=8, mode=0","spriteHex":"0x17","frame":41,"gate":8},{"tick":25,"kind":"actor-flag","vaHex":"0x00525234","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":25,"kind":"actor-flag","vaHex":"0x0052523c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":25,"kind":"wait","vaHex":"0x00525244","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":25,"kind":"result-sound","vaHex":"0x00525248","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":25,"kind":"actor-frame","vaHex":"0x0052524c","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=8, mode=0","spriteHex":"0x17","frame":41,"gate":8},{"tick":33,"kind":"actor-flag","vaHex":"0x00525254","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":33,"kind":"actor-flag","vaHex":"0x0052525c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":33,"kind":"wait","vaHex":"0x00525264","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":33,"kind":"result-sound","vaHex":"0x00525270","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":33,"kind":"actor-frame","vaHex":"0x00525274","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=8, mode=0","spriteHex":"0x17","frame":41,"gate":8},{"tick":41,"kind":"actor-flag","vaHex":"0x0052527c","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":41,"kind":"actor-flag","vaHex":"0x00525284","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":41,"kind":"wait","vaHex":"0x0052528c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":41,"kind":"result-sound","vaHex":"0x00525298","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":41,"kind":"actor-frame","vaHex":"0x0052529c","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=8, mode=0","spriteHex":"0x17","frame":41,"gate":8},{"tick":49,"kind":"actor-flag","vaHex":"0x005252a4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":49,"kind":"actor-flag","vaHex":"0x005252ac","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":49,"kind":"wait","vaHex":"0x005252b4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":49,"kind":"result-sound","vaHex":"0x005252c0","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":49,"kind":"actor-frame","vaHex":"0x005252c4","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=8, mode=0","spriteHex":"0x17","frame":41,"gate":8},{"tick":57,"kind":"actor-flag","vaHex":"0x005252cc","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":57,"kind":"actor-flag","vaHex":"0x005252d4","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":57,"kind":"wait","vaHex":"0x005252dc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":57,"kind":"movement","vaHex":"0x005252ec","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0},{"tick":57,"kind":"actor-frame","vaHex":"0x005252f0","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=16, mode=0","spriteHex":"0x17","frame":41,"gate":16},{"tick":73,"kind":"actor-frame","vaHex":"0x005252f8","opcode":"0x21","summary":"set sprite=0x17, frame=40, gate=4, mode=0","spriteHex":"0x17","frame":40,"gate":4},{"tick":77,"kind":"actor-frame","vaHex":"0x00525300","opcode":"0x21","summary":"set sprite=0x17, frame=4, gate=4, mode=0","spriteHex":"0x17","frame":4,"gate":4},{"tick":81,"kind":"actor-frame","vaHex":"0x00525308","opcode":"0x21","summary":"set sprite=0x17, frame=6, gate=4, mode=0","spriteHex":"0x17","frame":6,"gate":4},{"tick":85,"kind":"actor-frame","vaHex":"0x00525310","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":17,"soundVaHex":"0x00525228","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00525234","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x0052523c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00525244","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":25,"soundVaHex":"0x00525248","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00525254","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x0052525c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00525264","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":33,"soundVaHex":"0x00525270","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x0052527c","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00525284","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x0052528c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":41,"soundVaHex":"0x00525298","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x005252a4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x005252ac","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x005252b4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":49,"soundVaHex":"0x005252c0","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x005252cc","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x005252d4","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x005252dc","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","confirmed-hit-window","caster-position-rule","render:spawned-child-display-flow","sound:effect+result"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x1c","ownerKey":"smashu","ownerName":"스마슈","skillName":"비검·시공단","familyName":"비검·시공단","skillIdHex":"0x1c","levelOrFixed":1,"targetClass":"enemy-all","mpCost":20,"hitCount":1,"frameSequence":[2,21,22,2],"expandedFrameGateSequence":[{"tick":0,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":8,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[17],"resultWlkNos":[3],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":17,"effectArgsHex":"01 00 11","role":"effect/cast cue","vaHex":"0x00525544"},{"tick":6,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525640"}],"helperIds":[13],"helperFacts":[{"helperId":13,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3da8","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3ddc","frames":["0@2","1@2","2@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"screen-wide-effect","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"전체기 중 actor 위치 변화 없이 화면/대상 전체 helper effect가 본체인 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:smashu:0x1c","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x00525544","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 4, 6, 11, 16, effect WLK count: 1, 1, 1, 1"],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x00525544","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 17; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":17,"effectArgsHex":"01 00 11"},{"tick":0,"kind":"actor-frame","vaHex":"0x0052561c","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2},{"tick":2,"kind":"wait","vaHex":"0x00525624","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":2,"kind":"actor-frame","vaHex":"0x0052562c","opcode":"0x21","summary":"set sprite=0x17, frame=21, gate=2, mode=0","spriteHex":"0x17","frame":21,"gate":2},{"tick":4,"kind":"actor-frame","vaHex":"0x00525634","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=2, mode=0","spriteHex":"0x17","frame":22,"gate":2},{"tick":6,"kind":"helper-call","vaHex":"0x0052563c","opcode":"0xbd","summary":"helper-call id=13; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":13},{"tick":6,"kind":"result-sound","vaHex":"0x00525640","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":6,"kind":"actor-flag","vaHex":"0x00525644","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":6,"kind":"actor-flag","vaHex":"0x0052564c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":6,"kind":"wait","vaHex":"0x00525654","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":6,"kind":"actor-frame","vaHex":"0x00525714","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":6,"soundVaHex":"0x00525640","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00525644","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x0052564c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00525654","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:effect+result","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x1d","ownerKey":"smashu","ownerName":"스마슈","skillName":"비검·시공단","familyName":"비검·시공단","skillIdHex":"0x1d","levelOrFixed":2,"targetClass":"enemy-all","mpCost":20,"hitCount":1,"frameSequence":[21,22,16,17,17,2],"expandedFrameGateSequence":[{"tick":0,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":22,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":16,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":17,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":17,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":16,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[17],"resultWlkNos":[3],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":17,"effectArgsHex":"01 00 11","role":"effect/cast cue","vaHex":"0x00525544"},{"tick":10,"opcode":"0xc2","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525680"}],"helperIds":[14,46],"helperFacts":[{"helperId":14,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3e10","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3e44","frames":["5@2","4@2","3@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":46,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["95@0"],"emitFrames":[95],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"screen-wide-effect","implementationState":"needs-child-helper-script-runner","effectiveImplementationState":"canonical-confirmed; runner consumes canonical timeline","semanticNote":"전체기 중 actor 위치 변화 없이 화면/대상 전체 helper effect가 본체인 계열이다. 0xbd body는 별도 child display script를 붙인다.","canonicalKey":"player:smashu:0x1d","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x00525544","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-screen-or-ranged-effect","casterRule":"screen-or-ranged-all-target-effect","startAnchor":"home","motionKind":"screen-effect","motionTarget":"all-targets/screen","positionConfidence":"medium","positionBucket":"screen","positionBucketLabel":"맵/화면 전체","battleMapPlacementSummary":"시전자는 아군측에 머물고 화면/전체 대상 이펙트가 해결한다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row is driven by helper/effect cues rather than actor placement"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 4, 6, 11, 16, effect WLK count: 1, 1, 1, 1"],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x00525544","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 17; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":17,"effectArgsHex":"01 00 11"},{"tick":0,"kind":"actor-frame","vaHex":"0x00525550","opcode":"0x21","summary":"set sprite=0x17, frame=21, gate=2, mode=0","spriteHex":"0x17","frame":21,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00525558","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=4, mode=0","spriteHex":"0x17","frame":22,"gate":4},{"tick":6,"kind":"wait","vaHex":"0x00525660","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":6,"kind":"actor-frame","vaHex":"0x00525668","opcode":"0x21","summary":"set sprite=0x17, frame=16, gate=2, mode=0","spriteHex":"0x17","frame":16,"gate":2},{"tick":8,"kind":"helper-call","vaHex":"0x00525670","opcode":"0xbd","summary":"helper-call id=14; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":14},{"tick":8,"kind":"actor-frame","vaHex":"0x00525674","opcode":"0x21","summary":"set sprite=0x17, frame=17, gate=2, mode=0","spriteHex":"0x17","frame":17,"gate":2},{"tick":10,"kind":"helper-call","vaHex":"0x0052567c","opcode":"0xbd","summary":"helper-call id=46; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":46},{"tick":10,"kind":"result-sound","vaHex":"0x00525680","opcode":"0xc2","summary":"WLK id 03 (normal id 03, alt id 14, mode=0)","wlkNo":3,"normalWlkNo":3,"altWlkNo":14,"mode":0},{"tick":10,"kind":"actor-flag","vaHex":"0x00525684","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":10,"kind":"actor-flag","vaHex":"0x0052568c","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":10,"kind":"wait","vaHex":"0x00525694","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":10,"kind":"actor-frame","vaHex":"0x00525698","opcode":"0x21","summary":"set sprite=0x17, frame=17, gate=4, mode=0","spriteHex":"0x17","frame":17,"gate":4},{"tick":14,"kind":"actor-frame","vaHex":"0x00525714","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":10,"soundVaHex":"0x00525680","normalWlkNo":3,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00525684","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x0052568c","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00525694","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:effect+result","helper:multi-frameScript-effect","helper:direct-frame-spawn"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x1e","ownerKey":"smashu","ownerName":"스마슈","skillName":"비검·시공단","familyName":"비검·시공단","skillIdHex":"0x1e","levelOrFixed":3,"targetClass":"enemy-all","mpCost":18,"hitCount":1,"frameSequence":[21,22,16,17,21,23,24,25,22,22,2],"expandedFrameGateSequence":[{"tick":0,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":22,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":16,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":17,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":21,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":13,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":24,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":25,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":23,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":25,"frame":22,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":31,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":33,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[17],"resultWlkNos":[4],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":17,"effectArgsHex":"01 00 11","role":"effect/cast cue","vaHex":"0x00525544"},{"tick":25,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x005256f4"}],"helperIds":[15],"helperFacts":[{"helperId":15,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3e94","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3ec0","frames":["6@2","7@2","8@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b3e68","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b3e80","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] == right:imm.byte=0x02 -> 0x004b3e80","targetSnippet":[{"vaHex":"0x004b3e80","opcode":"0x20","category":"frame-script-pointer","summary":"set display.frameScript(+0x64) = 0x004b3ec4"},{"vaHex":"0x004b3e88","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b3e8c","opcode":"0x03","category":"jump","summary":"jump 0x004b3e88"},{"vaHex":"0x004b3e94","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=6, gate=2, mode=0"},{"vaHex":"0x004b3e9c","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=7, gate=2, mode=0"},{"vaHex":"0x004b3ea4","opcode":"0x12","category":"write","summary":"add display/actor field +0x20, imm=0x00200000 (32px)"},{"vaHex":"0x004b3eac","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:display.byte[+0xe7] sub= source:imm.byte=0x04"},{"vaHex":"0x004b3eb0","opcode":"0x21","category":"frame","summary":"set sprite=0x1a, frame=8, gate=2, mode=0"}]}],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:smashu:0x1e","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x00525544","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 4, 6, 11, 16, effect WLK count: 1, 1, 1, 1"],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x00525544","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 17; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":17,"effectArgsHex":"01 00 11"},{"tick":0,"kind":"actor-frame","vaHex":"0x00525550","opcode":"0x21","summary":"set sprite=0x17, frame=21, gate=2, mode=0","spriteHex":"0x17","frame":21,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00525558","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=4, mode=0","spriteHex":"0x17","frame":22,"gate":4},{"tick":6,"kind":"actor-frame","vaHex":"0x00525568","opcode":"0x21","summary":"set sprite=0x17, frame=16, gate=2, mode=0","spriteHex":"0x17","frame":16,"gate":2},{"tick":8,"kind":"actor-frame","vaHex":"0x00525570","opcode":"0x21","summary":"set sprite=0x17, frame=17, gate=4, mode=0","spriteHex":"0x17","frame":17,"gate":4},{"tick":12,"kind":"actor-frame","vaHex":"0x00525578","opcode":"0x21","summary":"set sprite=0x17, frame=21, gate=1, mode=0","spriteHex":"0x17","frame":21,"gate":1},{"tick":13,"kind":"wait","vaHex":"0x005256a8","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":13,"kind":"actor-write","vaHex":"0x005256b0","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff80000 (-8px)","destHex":"0x1c","immHex":"0xfff80000","immFixed":-8.0},{"tick":13,"kind":"actor-write","vaHex":"0x005256b8","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":13,"kind":"actor-frame","vaHex":"0x005256c0","opcode":"0x21","summary":"set sprite=0x17, frame=23, gate=2, mode=0","spriteHex":"0x17","frame":23,"gate":2},{"tick":15,"kind":"actor-frame","vaHex":"0x005256c8","opcode":"0x21","summary":"set sprite=0x17, frame=24, gate=6, mode=0","spriteHex":"0x17","frame":24,"gate":6},{"tick":21,"kind":"actor-write","vaHex":"0x005256d0","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff80000 (-8px)","destHex":"0x1c","immHex":"0xfff80000","immFixed":-8.0},{"tick":21,"kind":"actor-write","vaHex":"0x005256d8","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":21,"kind":"actor-frame","vaHex":"0x005256e0","opcode":"0x21","summary":"set sprite=0x17, frame=25, gate=2, mode=0","spriteHex":"0x17","frame":25,"gate":2},{"tick":23,"kind":"helper-call","vaHex":"0x005256e8","opcode":"0xbd","summary":"helper-call id=15; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":15},{"tick":23,"kind":"actor-frame","vaHex":"0x005256ec","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=2, mode=0","spriteHex":"0x17","frame":22,"gate":2},{"tick":25,"kind":"result-sound","vaHex":"0x005256f4","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":25,"kind":"actor-flag","vaHex":"0x005256f8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":25,"kind":"actor-flag","vaHex":"0x00525700","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":25,"kind":"wait","vaHex":"0x00525708","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":25,"kind":"actor-frame","vaHex":"0x0052570c","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=6, mode=0","spriteHex":"0x17","frame":22,"gate":6},{"tick":31,"kind":"actor-frame","vaHex":"0x00525714","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":25,"soundVaHex":"0x005256f4","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x005256f8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00525700","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00525708","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:effect+result","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x1f","ownerKey":"smashu","ownerName":"스마슈","skillName":"비검·시공단","familyName":"비검·시공단","skillIdHex":"0x1f","levelOrFixed":4,"targetClass":"enemy-all","mpCost":16,"hitCount":1,"frameSequence":[21,22,16,17,21,21,22,16,17,17,26,27,28,29,26,27,28,29,2,2],"expandedFrameGateSequence":[{"tick":0,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":22,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":16,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":17,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":21,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":13,"frame":21,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":22,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":16,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":17,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":17,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005255e0"},{"tick":36,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005255e0"},{"tick":38,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005255e0"},{"tick":40,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005255e0"},{"tick":42,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":44,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":46,"repeatLoopCount":1,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[17],"resultWlkNos":[4],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":17,"effectArgsHex":"01 00 11","role":"effect/cast cue","vaHex":"0x00525544"},{"tick":44,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x005255fc"}],"helperIds":[17],"helperFacts":[{"helperId":17,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3f94","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3fc0","frames":["12@2","13@2","14@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:smashu:0x1f","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x00525544","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 4, 6, 11, 16, effect WLK count: 1, 1, 1, 1"],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x00525544","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 17; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":17,"effectArgsHex":"01 00 11"},{"tick":0,"kind":"actor-frame","vaHex":"0x00525550","opcode":"0x21","summary":"set sprite=0x17, frame=21, gate=2, mode=0","spriteHex":"0x17","frame":21,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00525558","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=4, mode=0","spriteHex":"0x17","frame":22,"gate":4},{"tick":6,"kind":"actor-frame","vaHex":"0x00525568","opcode":"0x21","summary":"set sprite=0x17, frame=16, gate=2, mode=0","spriteHex":"0x17","frame":16,"gate":2},{"tick":8,"kind":"actor-frame","vaHex":"0x00525570","opcode":"0x21","summary":"set sprite=0x17, frame=17, gate=4, mode=0","spriteHex":"0x17","frame":17,"gate":4},{"tick":12,"kind":"actor-frame","vaHex":"0x00525578","opcode":"0x21","summary":"set sprite=0x17, frame=21, gate=1, mode=0","spriteHex":"0x17","frame":21,"gate":1},{"tick":13,"kind":"actor-frame","vaHex":"0x00525588","opcode":"0x21","summary":"set sprite=0x17, frame=21, gate=1, mode=0","spriteHex":"0x17","frame":21,"gate":1},{"tick":14,"kind":"actor-frame","vaHex":"0x00525590","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=4, mode=0","spriteHex":"0x17","frame":22,"gate":4},{"tick":18,"kind":"actor-frame","vaHex":"0x00525598","opcode":"0x21","summary":"set sprite=0x17, frame=16, gate=2, mode=0","spriteHex":"0x17","frame":16,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x005255a0","opcode":"0x21","summary":"set sprite=0x17, frame=17, gate=4, mode=0","spriteHex":"0x17","frame":17,"gate":4},{"tick":24,"kind":"actor-frame","vaHex":"0x005255a8","opcode":"0x21","summary":"set sprite=0x17, frame=17, gate=2, mode=0","spriteHex":"0x17","frame":17,"gate":2},{"tick":26,"kind":"wait","vaHex":"0x005255b0","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":26,"kind":"actor-write","vaHex":"0x005255b8","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":26,"kind":"actor-frame","vaHex":"0x005255c0","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":28,"kind":"actor-frame","vaHex":"0x005255c8","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":30,"kind":"actor-frame","vaHex":"0x005255d0","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":32,"kind":"actor-frame","vaHex":"0x005255d8","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":34,"kind":"repeat-loop","vaHex":"0x005255e0","opcode":"0x06","summary":"repeat-loop count=2, target=0x005255c0; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x005255c0","repeatCount":2},{"tick":34,"kind":"actor-frame","vaHex":"0x005255c0","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005255e0"},{"tick":36,"kind":"actor-frame","vaHex":"0x005255c8","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005255e0"},{"tick":38,"kind":"actor-frame","vaHex":"0x005255d0","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005255e0"},{"tick":40,"kind":"actor-frame","vaHex":"0x005255d8","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005255e0"},{"tick":42,"kind":"actor-write","vaHex":"0x005255e8","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":42,"kind":"actor-frame","vaHex":"0x005255f0","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2},{"tick":44,"kind":"helper-call","vaHex":"0x005255f8","opcode":"0xbd","summary":"helper-call id=17; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":17},{"tick":44,"kind":"result-sound","vaHex":"0x005255fc","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":44,"kind":"actor-flag","vaHex":"0x00525600","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":44,"kind":"actor-flag","vaHex":"0x00525608","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":44,"kind":"wait","vaHex":"0x00525610","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":44,"kind":"actor-frame","vaHex":"0x00525714","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":44,"soundVaHex":"0x005255fc","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00525600","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00525608","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00525610","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","repeat-loop-expanded","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:effect+result","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x20","ownerKey":"smashu","ownerName":"스마슈","skillName":"열시섬","familyName":"display-table fallback","skillIdHex":"0x20","levelOrFixed":null,"targetClass":"enemy-all","mpCost":18,"hitCount":1,"frameSequence":[21,22,16,17,21,21,22,16,17,17,26,27,28,29,26,27,28,29,2,2],"expandedFrameGateSequence":[{"tick":0,"frame":21,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":22,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":16,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":17,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":21,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":13,"frame":21,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":22,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":16,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":17,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":17,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":28,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005255e0"},{"tick":36,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005255e0"},{"tick":38,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005255e0"},{"tick":40,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005255e0"},{"tick":42,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":44,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":46,"repeatLoopCount":1,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[17],"resultWlkNos":[4],"soundModel":"effect+result","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":17,"effectArgsHex":"01 00 11","role":"effect/cast cue","vaHex":"0x00525544"},{"tick":44,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x005255fc"}],"helperIds":[83,17],"helperFacts":[{"helperId":83,"behaviorClass":"actor-flag-sync","frameScripts":[],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["helper mainly synchronizes actor flags/waits"]},{"helperId":17,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3f94","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3fc0","frames":["12@2","13@2","14@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:smashu:0x20","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x00525540","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[83],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 4, 10, 1, 1, 3, 1, 1, 1, 1, 1","0xc2 result sound count changes: 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 0, 0, 0, 0","frame count changes: 4, 4, 6, 6, 18, 5, 11, 16, 5, 8, 19, 1, 1, 1, 4","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"helper-call","vaHex":"0x00525540","opcode":"0xbd","summary":"helper-call id=83; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":83},{"tick":0,"kind":"effect-sound","vaHex":"0x00525544","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 17; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":17,"effectArgsHex":"01 00 11"},{"tick":0,"kind":"actor-frame","vaHex":"0x00525550","opcode":"0x21","summary":"set sprite=0x17, frame=21, gate=2, mode=0","spriteHex":"0x17","frame":21,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00525558","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=4, mode=0","spriteHex":"0x17","frame":22,"gate":4},{"tick":6,"kind":"actor-frame","vaHex":"0x00525568","opcode":"0x21","summary":"set sprite=0x17, frame=16, gate=2, mode=0","spriteHex":"0x17","frame":16,"gate":2},{"tick":8,"kind":"actor-frame","vaHex":"0x00525570","opcode":"0x21","summary":"set sprite=0x17, frame=17, gate=4, mode=0","spriteHex":"0x17","frame":17,"gate":4},{"tick":12,"kind":"actor-frame","vaHex":"0x00525578","opcode":"0x21","summary":"set sprite=0x17, frame=21, gate=1, mode=0","spriteHex":"0x17","frame":21,"gate":1},{"tick":13,"kind":"actor-frame","vaHex":"0x00525588","opcode":"0x21","summary":"set sprite=0x17, frame=21, gate=1, mode=0","spriteHex":"0x17","frame":21,"gate":1},{"tick":14,"kind":"actor-frame","vaHex":"0x00525590","opcode":"0x21","summary":"set sprite=0x17, frame=22, gate=4, mode=0","spriteHex":"0x17","frame":22,"gate":4},{"tick":18,"kind":"actor-frame","vaHex":"0x00525598","opcode":"0x21","summary":"set sprite=0x17, frame=16, gate=2, mode=0","spriteHex":"0x17","frame":16,"gate":2},{"tick":20,"kind":"actor-frame","vaHex":"0x005255a0","opcode":"0x21","summary":"set sprite=0x17, frame=17, gate=4, mode=0","spriteHex":"0x17","frame":17,"gate":4},{"tick":24,"kind":"actor-frame","vaHex":"0x005255a8","opcode":"0x21","summary":"set sprite=0x17, frame=17, gate=2, mode=0","spriteHex":"0x17","frame":17,"gate":2},{"tick":26,"kind":"wait","vaHex":"0x005255b0","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":26,"kind":"actor-write","vaHex":"0x005255b8","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":26,"kind":"actor-frame","vaHex":"0x005255c0","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":28,"kind":"actor-frame","vaHex":"0x005255c8","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":30,"kind":"actor-frame","vaHex":"0x005255d0","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":32,"kind":"actor-frame","vaHex":"0x005255d8","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":34,"kind":"repeat-loop","vaHex":"0x005255e0","opcode":"0x06","summary":"repeat-loop count=2, target=0x005255c0; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x005255c0","repeatCount":2},{"tick":34,"kind":"actor-frame","vaHex":"0x005255c0","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005255e0"},{"tick":36,"kind":"actor-frame","vaHex":"0x005255c8","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005255e0"},{"tick":38,"kind":"actor-frame","vaHex":"0x005255d0","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005255e0"},{"tick":40,"kind":"actor-frame","vaHex":"0x005255d8","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005255e0"},{"tick":42,"kind":"actor-write","vaHex":"0x005255e8","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":42,"kind":"actor-frame","vaHex":"0x005255f0","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2},{"tick":44,"kind":"helper-call","vaHex":"0x005255f8","opcode":"0xbd","summary":"helper-call id=17; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":17},{"tick":44,"kind":"result-sound","vaHex":"0x005255fc","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":44,"kind":"actor-flag","vaHex":"0x00525600","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":44,"kind":"actor-flag","vaHex":"0x00525608","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":44,"kind":"wait","vaHex":"0x00525610","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":44,"kind":"actor-frame","vaHex":"0x00525714","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":44,"soundVaHex":"0x005255fc","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00525600","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00525608","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00525610","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","repeat-loop-expanded","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:effect+result","helper:actor-flag-sync","helper:multi-frameScript-effect"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x21","ownerKey":"smashu","ownerName":"스마슈","skillName":"냉도투무","familyName":"display-table fallback","skillIdHex":"0x21","levelOrFixed":null,"targetClass":"enemy-all","mpCost":20,"hitCount":1,"frameSequence":[10,11,12,13,2],"expandedFrameGateSequence":[{"tick":0,"frame":10,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":11,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":13,"gate":7,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":17,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[18],"resultWlkNos":[4],"soundModel":"effect+result","soundCalls":[{"tick":8,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00525750"},{"tick":15,"opcode":"0xc2","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x0052575c"}],"helperIds":[78],"helperFacts":[{"helperId":78,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[{"targetVaHex":"0x004b80d4","startTick":0,"durationGate":6,"stopReason":"loop at 0x004b80d4","frames":["140@2","141@2","142@2"],"frameCount":3,"loopEvents":[{"tick":6,"targetVaHex":"0x004b80d4","repeatCount":null,"vaHex":"0x004b80ec"}],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":8,"directSpawnFrames":["119@2","119@3","119@4","119@5","119@6","119@7","119@8","119@9"],"emitFrames":[119],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b7fa4","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b7fbc","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] == right:imm.byte=0x02 -> 0x004b7fbc","targetSnippet":[{"vaHex":"0x004b7fbc","opcode":"0x20","category":"frame-script-pointer","summary":"set display.frameScript(+0x64) = 0x004b80f4"},{"vaHex":"0x004b7fc4","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x80, mode=0xa0"},{"vaHex":"0x004b7fc8","opcode":"0x12","category":"write","summary":"sub display/actor field +0x74, source +0x1c, mode=0xa2"},{"vaHex":"0x004b7fcc","opcode":"0x15","category":"conditional-branch","summary":"conditional branch motion.dx +0x74 >= 0x80000000; target 0x004b7fe8"},{"vaHex":"0x004b7fd8","opcode":"0x12","category":"write","summary":"div display/actor field +0x74, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b7fe0","opcode":"0x03","category":"jump","summary":"jump 0x004b7ff8"},{"vaHex":"0x004b7fe8","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b7fec","opcode":"0x12","category":"write","summary":"div display/actor field +0x74, imm=0x00000008 (0.00012207px)"}]},{"vaHex":"0x004b7fcc","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b7fe8","condition":"conditional branch motion.dx +0x74 >= 0x80000000; target 0x004b7fe8","targetSnippet":[{"vaHex":"0x004b7fe8","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b7fec","opcode":"0x12","category":"write","summary":"div display/actor field +0x74, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b7ff4","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b7ff8","opcode":"0x12","category":"write","summary":"set display/actor field +0x78, source +0x84, mode=0xa0"},{"vaHex":"0x004b7ffc","opcode":"0x12","category":"write","summary":"sub display/actor field +0x78, source +0x20, mode=0xa2"},{"vaHex":"0x004b8000","opcode":"0x15","category":"conditional-branch","summary":"conditional branch motion.dy +0x78 >= 0x80000000; target 0x004b801c"},{"vaHex":"0x004b800c","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b8014","opcode":"0x03","category":"jump","summary":"jump 0x004b802c"}]},{"vaHex":"0x004b8000","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b801c","condition":"conditional branch motion.dy +0x78 >= 0x80000000; target 0x004b801c","targetSnippet":[{"vaHex":"0x004b801c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b8020","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b8028","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b802c","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b8030","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b8034","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b8038","opcode":"0x06","category":"repeat-loop","summary":"repeat-loop count=8, target=0x004b8030; handler stores target in object +0x3c and counter in +0x60"},{"vaHex":"0x004b8040","opcode":"0x12","category":"write","summary":"set display/actor field +0x00, imm=0x00000000 (0px)"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 8 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"screen-wide-effect","implementationState":"actor-frame-clone-or-spread-placement","effectiveImplementationState":"actor-frame-clone-or-spread-placement","semanticNote":"selector 5 기반의 화면/분신/확산 배치가 본체인 전체기 계열이다.","canonicalKey":"player:smashu:0x21","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x00525728","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[78],"positionClass":"all-target-clone-placement","casterRule":"clone-spread-direct","startAnchor":"home","motionKind":"clone-spread","motionTarget":"screen/targets","positionConfidence":"high","positionBucket":"clone-spread","positionBucketLabel":"사방팔방/분신","battleMapPlacementSummary":"시전자 본체보다 분신/분산 배치가 중심이다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 5 is clone/spread setup"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 4, 10, 1, 1, 3, 1, 1, 1, 1, 1","0xc2 result sound count changes: 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 0, 0, 0, 0","frame count changes: 4, 4, 6, 6, 18, 5, 11, 16, 5, 8, 19, 1, 1, 1, 4","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x00525728","opcode":"0xbc","summary":"direct placement selector=5: screen-size/display-size based fixed placement.","selector":5,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-frame","vaHex":"0x0052572c","opcode":"0x21","summary":"set sprite=0x17, frame=10, gate=2, mode=0","spriteHex":"0x17","frame":10,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00525734","opcode":"0x21","summary":"set sprite=0x17, frame=11, gate=4, mode=0","spriteHex":"0x17","frame":11,"gate":4},{"tick":6,"kind":"helper-call","vaHex":"0x0052573c","opcode":"0xbd","summary":"helper-call id=78; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":78},{"tick":6,"kind":"actor-write","vaHex":"0x00525740","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":6,"kind":"actor-frame","vaHex":"0x00525748","opcode":"0x21","summary":"set sprite=0x17, frame=12, gate=2, mode=0","spriteHex":"0x17","frame":12,"gate":2},{"tick":8,"kind":"effect-sound","vaHex":"0x00525750","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":8,"kind":"actor-frame","vaHex":"0x00525754","opcode":"0x21","summary":"set sprite=0x17, frame=13, gate=7, mode=0","spriteHex":"0x17","frame":13,"gate":7},{"tick":15,"kind":"result-sound","vaHex":"0x0052575c","opcode":"0xc2","summary":"WLK id 04 (normal id 04, alt id 14, mode=0)","wlkNo":4,"normalWlkNo":4,"altWlkNo":14,"mode":0},{"tick":15,"kind":"actor-flag","vaHex":"0x00525760","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":15,"kind":"actor-flag","vaHex":"0x00525768","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":15,"kind":"wait","vaHex":"0x00525770","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":15,"kind":"actor-write","vaHex":"0x00525774","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":15,"kind":"actor-frame","vaHex":"0x0052577c","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2},{"tick":17,"kind":"movement","vaHex":"0x00525784","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0}],"hitEvents":[{"tick":15,"soundVaHex":"0x0052575c","normalWlkNo":4,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x00525760","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00525768","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x00525770","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:screen-wide-effect","sound:effect+result","helper:randomized-child-spawn-stream"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x22","ownerKey":"smashu","ownerName":"스마슈","skillName":"투신의 춤","familyName":"display-table fallback","skillIdHex":"0x22","levelOrFixed":null,"targetClass":"enemy-all","mpCost":30,"hitCount":3,"frameSequence":[12,13,16,17,12,13,13,2],"expandedFrameGateSequence":[{"tick":0,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":13,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":16,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":17,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":12,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":13,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":13,"gate":14,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":32,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[18],"resultWlkNos":[8],"soundModel":"effect+result","soundCalls":[{"tick":10,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x005257d8"},{"tick":16,"opcode":"0xc2","wlkNo":8,"normalWlkNo":8,"altWlkNo":8,"mode":1,"role":"skill-specific result cue","vaHex":"0x005257f0"}],"helperIds":[70,77],"helperFacts":[{"helperId":70,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b77a4","startTick":0,"durationGate":43,"stopReason":"loop at 0x004b784c","frames":["124@2","125@2","126@2","127@2","128@2","129@2","124@2","125@2","126@2","127@2","128@2","129@2","124@2","125@2","126@2","127@2","128@2","129@2","124@2","125@2","126@2","127@1"],"frameCount":22,"loopEvents":[{"tick":43,"targetVaHex":"0x004b784c","repeatCount":null,"vaHex":"0x004b7854"}],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{"0x96":2},"rootBranches":[{"vaHex":"0x004b76dc","fieldHex":"0x96","role":"outer-repeat-step-while-repeat-counter-nonzero","targetVaHex":"0x004b76bc","condition":"word conditional branch local-backward-loop if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004b76bc","targetSnippet":[{"vaHex":"0x004b76bc","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b76c0","opcode":"0x12","category":"write","summary":"sub display/actor field +0x20, imm=0x00020000 (2px)"},{"vaHex":"0x004b76c8","opcode":"0x06","category":"repeat-loop","summary":"repeat-loop count=4, target=0x004b76bc; handler stores target in object +0x3c and counter in +0x60"},{"vaHex":"0x004b76d0","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:display.byte[+0xe7] add= source:imm.byte=0x01"},{"vaHex":"0x004b76d4","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b76dc","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004b76bc"},{"vaHex":"0x004b76e8","opcode":"0x02","category":"countdown-wait","summary":"countdown wait frames=16"},{"vaHex":"0x004b76ec","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x80, mode=0xa0"}]},{"vaHex":"0x004b76f4","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b7710","condition":"conditional branch motion.dx +0x74 >= 0x80000000; target 0x004b7710","targetSnippet":[{"vaHex":"0x004b7710","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b7714","opcode":"0x12","category":"write","summary":"div display/actor field +0x74, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b771c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b7720","opcode":"0x12","category":"write","summary":"set display/actor field +0x78, source +0x84, mode=0xa0"},{"vaHex":"0x004b7724","opcode":"0x12","category":"write","summary":"sub display/actor field +0x78, imm=0x00400000 (64px)"},{"vaHex":"0x004b772c","opcode":"0x12","category":"write","summary":"sub display/actor field +0x78, source +0x20, mode=0xa2"},{"vaHex":"0x004b7730","opcode":"0x15","category":"conditional-branch","summary":"conditional branch motion.dy +0x78 >= 0x80000000; target 0x004b774c"},{"vaHex":"0x004b773c","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000008 (0.00012207px)"}]},{"vaHex":"0x004b7730","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b774c","condition":"conditional branch motion.dy +0x78 >= 0x80000000; target 0x004b774c","targetSnippet":[{"vaHex":"0x004b774c","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b7750","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b7758","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b775c","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000002 (3.05176e-05px), mode=0x80"},{"vaHex":"0x004b7764","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b7768","opcode":"0x12","category":"write","summary":"add display/actor field +0x20, imm=0x00080000 (8px)"},{"vaHex":"0x004b7770","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b7774","opcode":"0x06","category":"repeat-loop","summary":"repeat-loop count=4, target=0x004b7764; handler stores target in object +0x3c and counter in +0x60"}]},{"vaHex":"0x004b7788","fieldHex":"0x96","role":"outer-repeat-step-while-repeat-counter-nonzero","targetVaHex":"0x004b7764","condition":"word conditional branch local-backward-loop if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004b7764","targetSnippet":[{"vaHex":"0x004b7764","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b7768","opcode":"0x12","category":"write","summary":"add display/actor field +0x20, imm=0x00080000 (8px)"},{"vaHex":"0x004b7770","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b7774","opcode":"0x06","category":"repeat-loop","summary":"repeat-loop count=4, target=0x004b7764; handler stores target in object +0x3c and counter in +0x60"},{"vaHex":"0x004b777c","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:display.byte[+0xe7] sub= source:imm.byte=0x01"},{"vaHex":"0x004b7780","opcode":"0x11","category":"child-write","summary":"display/child field +0x96, imm=0x00000001 (1.52588e-05px), mode=0x82"},{"vaHex":"0x004b7788","opcode":"0x14","category":"branch","summary":"word conditional branch unresolved if left:display.word[+0x96] != right:imm.word=0x0000 -> 0x004b7764"},{"vaHex":"0x004b7794","opcode":"0x42","category":"parent-actor","summary":"set parent actor pointer from this display object's actor slot"}]}],"childMotionLoops":[],"interpretation":["+0x96 raw 2 acts as outer repeat counter","root op14 on +0x96 yields one VM tick, reseeds +0x8e from +0x94, then emits another burst"],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":77,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":3,"directSpawnFrames":["137@0","137@0","137@0"],"emitFrames":[137],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[{"scope":"spawn.1 0x004b7ef8","role":"child-motion-loop-until-phase-counter-zero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","motionSteps":[],"targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"},{"vaHex":"0x004b5238","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00040000 (4px)"},{"vaHex":"0x004b5240","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x58, mode=0xe0"}]},{"scope":"spawn.2 0x004b7ef8","role":"child-motion-loop-until-phase-counter-zero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","motionSteps":[],"targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"},{"vaHex":"0x004b5238","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00040000 (4px)"},{"vaHex":"0x004b5240","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x58, mode=0xe0"}]},{"scope":"spawn.3 0x004b7ef8","role":"child-motion-loop-until-phase-counter-zero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","motionSteps":[],"targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"},{"vaHex":"0x004b5238","opcode":"0x12","category":"write","summary":"sub display/actor field +0x58, imm=0x00040000 (4px)"},{"vaHex":"0x004b5240","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x58, mode=0xe0"}]}],"interpretation":["spawned child scripts have their own +0x90 phase loop around opcode 0x2d motion-step","static direct-spawn expansion currently exposes 3 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"caster-action-screen-hit","implementationState":"actor-frame-plus-helper","effectiveImplementationState":"actor-frame-plus-helper","semanticNote":"시전자 프레임/로컬 offset은 있지만 피격/화면 효과는 helper/result sound 쪽에 남아 있다.","canonicalKey":"player:smashu:0x22","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x00525794","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"all-target-caster-action-effect","casterRule":"caster-local-all-target-action","startAnchor":"home","motionKind":"local-pose/screen-hits","motionTarget":"all-targets","positionConfidence":"medium","positionBucket":"home","positionBucketLabel":"제자리/아군측","battleMapPlacementSummary":"시전자 위치는 제자리이며 전체 대상 판정만 화면에 적용된다.","evidenceTier":"implicit-actor-vm-position","evidenceTierLabel":"actor VM 암시 확정","hasExplicitMovementOpcode":false,"positionNotes":["all-target row has actor/display local writes; actor remains on caster side while hits/effects resolve across targets"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 4, 10, 1, 1, 3, 1, 1, 1, 1, 1","0xc2 result sound count changes: 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 0, 0, 0, 0","frame count changes: 4, 4, 6, 6, 18, 5, 11, 16, 5, 8, 19, 1, 1, 1, 4","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x00525794","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x0052579c","opcode":"0x21","summary":"set sprite=0x17, frame=12, gate=2, mode=0","spriteHex":"0x17","frame":12,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x005257a4","opcode":"0x21","summary":"set sprite=0x17, frame=13, gate=2, mode=0","spriteHex":"0x17","frame":13,"gate":2},{"tick":4,"kind":"actor-write","vaHex":"0x005257ac","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":4,"kind":"actor-frame","vaHex":"0x005257b4","opcode":"0x21","summary":"set sprite=0x17, frame=16, gate=2, mode=0","spriteHex":"0x17","frame":16,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x005257bc","opcode":"0x21","summary":"set sprite=0x17, frame=17, gate=2, mode=0","spriteHex":"0x17","frame":17,"gate":2},{"tick":8,"kind":"actor-write","vaHex":"0x005257c4","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x005257cc","opcode":"0x21","summary":"set sprite=0x17, frame=12, gate=2, mode=0","spriteHex":"0x17","frame":12,"gate":2},{"tick":10,"kind":"helper-call","vaHex":"0x005257d4","opcode":"0xbd","summary":"helper-call id=70; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":70},{"tick":10,"kind":"effect-sound","vaHex":"0x005257d8","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":10,"kind":"actor-frame","vaHex":"0x005257dc","opcode":"0x21","summary":"set sprite=0x17, frame=13, gate=6, mode=0","spriteHex":"0x17","frame":13,"gate":6},{"tick":16,"kind":"wait","vaHex":"0x005257e4","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":16,"kind":"helper-call","vaHex":"0x005257ec","opcode":"0xbd","summary":"helper-call id=77; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":77},{"tick":16,"kind":"result-sound","vaHex":"0x005257f0","opcode":"0xc2","summary":"WLK id 08 (normal id 08, alt id 08, mode=1)","wlkNo":8,"normalWlkNo":8,"altWlkNo":8,"mode":1},{"tick":16,"kind":"actor-frame","vaHex":"0x005257f4","opcode":"0x21","summary":"set sprite=0x17, frame=13, gate=14, mode=0","spriteHex":"0x17","frame":13,"gate":14},{"tick":30,"kind":"actor-flag","vaHex":"0x005257fc","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":30,"kind":"actor-flag","vaHex":"0x00525804","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":30,"kind":"wait","vaHex":"0x0052580c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":30,"kind":"actor-write","vaHex":"0x00525810","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":30,"kind":"actor-frame","vaHex":"0x00525818","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":16,"soundVaHex":"0x005257f0","normalWlkNo":8,"altWlkNo":8,"mode":1,"flags":[{"vaHex":"0x005257fc","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00525804","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x0052580c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:caster-action-screen-hit","sound:effect+result","helper:multi-frameScript-effect","helper-root-counters","helper:randomized-child-spawn-stream","helper-child-motion-loop"],"policyFlags":[],"unresolvedFlags":[]},{"recordKey":"smashu:0x23","ownerKey":"smashu","ownerName":"스마슈","skillName":"도주","familyName":"display-table fallback","skillIdHex":"0x23","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[26,27,28,29,26,27,28,29,26,27,28,29,32,32,26,27,28,29,26,27,28,29,26,27,28,29,3,3,26,27,28,29,26,27,28,29,26,27,28,29,30,30,2],"expandedFrameGateSequence":[{"tick":0,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052585c"},{"tick":10,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052585c"},{"tick":12,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052585c"},{"tick":14,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052585c"},{"tick":16,"frame":26,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052585c"},{"tick":18,"frame":27,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052585c"},{"tick":20,"frame":28,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052585c"},{"tick":22,"frame":29,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052585c"},{"tick":24,"frame":32,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":32,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":40,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005258c4"},{"tick":42,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005258c4"},{"tick":44,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005258c4"},{"tick":46,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005258c4"},{"tick":48,"frame":26,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x005258c4"},{"tick":50,"frame":27,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x005258c4"},{"tick":52,"frame":28,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x005258c4"},{"tick":54,"frame":29,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x005258c4"},{"tick":56,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":58,"frame":3,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":64,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":66,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":68,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":70,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":72,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052592c"},{"tick":74,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052592c"},{"tick":76,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052592c"},{"tick":78,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052592c"},{"tick":80,"frame":26,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052592c"},{"tick":82,"frame":27,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052592c"},{"tick":84,"frame":28,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052592c"},{"tick":86,"frame":29,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052592c"},{"tick":88,"frame":30,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":90,"frame":30,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":96,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":98,"repeatLoopCount":3,"hitEventCount":3,"hitClassCounts":{"confirmed-result-hit-window":3},"effectWlkNos":[18,18,18],"resultWlkNos":[5,5,5],"soundModel":"effect+result","soundCalls":[{"tick":8,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00525858"},{"tick":16,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00525858"},{"tick":24,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00525858"},{"tick":26,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525878"},{"tick":40,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x005258c0"},{"tick":48,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x005258c0"},{"tick":56,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x005258c0"},{"tick":58,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x005258e0"},{"tick":72,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00525928"},{"tick":80,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00525928"},{"tick":88,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00525928"},{"tick":90,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525948"}],"helperIds":[17,17,17],"helperFacts":[{"helperId":17,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3f94","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3fc0","frames":["12@2","13@2","14@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":17,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3f94","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3fc0","frames":["12@2","13@2","14@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":17,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3f94","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3fc0","frames":["12@2","13@2","14@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:smashu:0x23","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x0052582c","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"clone-spread-direct","startAnchor":"home","motionKind":"clone-spread","motionTarget":"screen/targets","positionConfidence":"high","positionBucket":"clone-spread","positionBucketLabel":"사방팔방/분신","battleMapPlacementSummary":"시전자 본체보다 분신/분산 배치가 중심이다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 5 is clone/spread setup"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 4, 10, 1, 1, 3, 1, 1, 1, 1, 1","0xc2 result sound count changes: 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 0, 0, 0, 0","frame count changes: 4, 4, 6, 6, 18, 5, 11, 16, 5, 8, 19, 1, 1, 1, 4","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x0052582c","opcode":"0xbc","summary":"direct placement selector=5: screen-size/display-size based fixed placement.","selector":5,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-write","vaHex":"0x00525830","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x00525838","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00525840","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":4,"kind":"actor-frame","vaHex":"0x00525848","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x00525850","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":8,"kind":"effect-sound","vaHex":"0x00525858","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":8,"kind":"repeat-loop","vaHex":"0x0052585c","opcode":"0x06","summary":"repeat-loop count=3, target=0x00525838; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x00525838","repeatCount":3},{"tick":8,"kind":"actor-frame","vaHex":"0x00525838","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052585c"},{"tick":10,"kind":"actor-frame","vaHex":"0x00525840","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052585c"},{"tick":12,"kind":"actor-frame","vaHex":"0x00525848","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052585c"},{"tick":14,"kind":"actor-frame","vaHex":"0x00525850","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052585c"},{"tick":16,"kind":"effect-sound","vaHex":"0x00525858","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":1,"repeatSourceVaHex":"0x0052585c"},{"tick":16,"kind":"actor-frame","vaHex":"0x00525838","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052585c"},{"tick":18,"kind":"actor-frame","vaHex":"0x00525840","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052585c"},{"tick":20,"kind":"actor-frame","vaHex":"0x00525848","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052585c"},{"tick":22,"kind":"actor-frame","vaHex":"0x00525850","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052585c"},{"tick":24,"kind":"effect-sound","vaHex":"0x00525858","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":2,"repeatSourceVaHex":"0x0052585c"},{"tick":24,"kind":"actor-write","vaHex":"0x00525864","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":24,"kind":"actor-frame","vaHex":"0x0052586c","opcode":"0x21","summary":"set sprite=0x17, frame=32, gate=2, mode=0","spriteHex":"0x17","frame":32,"gate":2},{"tick":26,"kind":"helper-call","vaHex":"0x00525874","opcode":"0xbd","summary":"helper-call id=17; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":17},{"tick":26,"kind":"result-sound","vaHex":"0x00525878","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":26,"kind":"actor-flag","vaHex":"0x0052587c","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":26,"kind":"actor-flag","vaHex":"0x00525884","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":26,"kind":"wait","vaHex":"0x0052588c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":26,"kind":"actor-frame","vaHex":"0x00525890","opcode":"0x21","summary":"set sprite=0x17, frame=32, gate=6, mode=0","spriteHex":"0x17","frame":32,"gate":6},{"tick":32,"kind":"actor-write","vaHex":"0x00525898","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-frame","vaHex":"0x005258a0","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":34,"kind":"actor-frame","vaHex":"0x005258a8","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":36,"kind":"actor-frame","vaHex":"0x005258b0","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":38,"kind":"actor-frame","vaHex":"0x005258b8","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":40,"kind":"effect-sound","vaHex":"0x005258c0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":40,"kind":"repeat-loop","vaHex":"0x005258c4","opcode":"0x06","summary":"repeat-loop count=3, target=0x005258a0; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x005258a0","repeatCount":3},{"tick":40,"kind":"actor-frame","vaHex":"0x005258a0","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005258c4"},{"tick":42,"kind":"actor-frame","vaHex":"0x005258a8","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005258c4"},{"tick":44,"kind":"actor-frame","vaHex":"0x005258b0","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005258c4"},{"tick":46,"kind":"actor-frame","vaHex":"0x005258b8","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005258c4"},{"tick":48,"kind":"effect-sound","vaHex":"0x005258c0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":1,"repeatSourceVaHex":"0x005258c4"},{"tick":48,"kind":"actor-frame","vaHex":"0x005258a0","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x005258c4"},{"tick":50,"kind":"actor-frame","vaHex":"0x005258a8","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x005258c4"},{"tick":52,"kind":"actor-frame","vaHex":"0x005258b0","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x005258c4"},{"tick":54,"kind":"actor-frame","vaHex":"0x005258b8","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x005258c4"},{"tick":56,"kind":"effect-sound","vaHex":"0x005258c0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":2,"repeatSourceVaHex":"0x005258c4"},{"tick":56,"kind":"actor-write","vaHex":"0x005258cc","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":56,"kind":"actor-frame","vaHex":"0x005258d4","opcode":"0x21","summary":"set sprite=0x17, frame=3, gate=2, mode=0","spriteHex":"0x17","frame":3,"gate":2},{"tick":58,"kind":"helper-call","vaHex":"0x005258dc","opcode":"0xbd","summary":"helper-call id=17; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":17},{"tick":58,"kind":"result-sound","vaHex":"0x005258e0","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":58,"kind":"actor-flag","vaHex":"0x005258e4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":58,"kind":"actor-flag","vaHex":"0x005258ec","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":58,"kind":"wait","vaHex":"0x005258f4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":58,"kind":"actor-frame","vaHex":"0x005258f8","opcode":"0x21","summary":"set sprite=0x17, frame=3, gate=6, mode=0","spriteHex":"0x17","frame":3,"gate":6},{"tick":64,"kind":"actor-write","vaHex":"0x00525900","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":64,"kind":"actor-frame","vaHex":"0x00525908","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":66,"kind":"actor-frame","vaHex":"0x00525910","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":68,"kind":"actor-frame","vaHex":"0x00525918","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":70,"kind":"actor-frame","vaHex":"0x00525920","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":72,"kind":"effect-sound","vaHex":"0x00525928","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":72,"kind":"repeat-loop","vaHex":"0x0052592c","opcode":"0x06","summary":"repeat-loop count=3, target=0x00525908; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x00525908","repeatCount":3},{"tick":72,"kind":"actor-frame","vaHex":"0x00525908","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052592c"},{"tick":74,"kind":"actor-frame","vaHex":"0x00525910","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052592c"},{"tick":76,"kind":"actor-frame","vaHex":"0x00525918","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052592c"},{"tick":78,"kind":"actor-frame","vaHex":"0x00525920","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052592c"},{"tick":80,"kind":"effect-sound","vaHex":"0x00525928","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":1,"repeatSourceVaHex":"0x0052592c"},{"tick":80,"kind":"actor-frame","vaHex":"0x00525908","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052592c"},{"tick":82,"kind":"actor-frame","vaHex":"0x00525910","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052592c"},{"tick":84,"kind":"actor-frame","vaHex":"0x00525918","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052592c"},{"tick":86,"kind":"actor-frame","vaHex":"0x00525920","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052592c"},{"tick":88,"kind":"effect-sound","vaHex":"0x00525928","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":2,"repeatSourceVaHex":"0x0052592c"},{"tick":88,"kind":"actor-write","vaHex":"0x00525934","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":88,"kind":"actor-frame","vaHex":"0x0052593c","opcode":"0x21","summary":"set sprite=0x17, frame=30, gate=2, mode=0","spriteHex":"0x17","frame":30,"gate":2},{"tick":90,"kind":"helper-call","vaHex":"0x00525944","opcode":"0xbd","summary":"helper-call id=17; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":17},{"tick":90,"kind":"result-sound","vaHex":"0x00525948","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":90,"kind":"actor-flag","vaHex":"0x0052594c","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":90,"kind":"actor-flag","vaHex":"0x00525954","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":90,"kind":"wait","vaHex":"0x0052595c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":90,"kind":"actor-frame","vaHex":"0x00525960","opcode":"0x21","summary":"set sprite=0x17, frame=30, gate=6, mode=0","spriteHex":"0x17","frame":30,"gate":6},{"tick":96,"kind":"movement","vaHex":"0x00525968","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0},{"tick":96,"kind":"actor-frame","vaHex":"0x0052596c","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":26,"soundVaHex":"0x00525878","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x0052587c","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00525884","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x0052588c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":58,"soundVaHex":"0x005258e0","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x005258e4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x005258ec","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x005258f4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":90,"soundVaHex":"0x00525948","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x0052594c","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00525954","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x0052595c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","repeat-loop-expanded","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:support-or-status","sound:effect+result","helper:multi-frameScript-effect"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"smashu:0x24","ownerKey":"smashu","ownerName":"스마슈","skillName":"방어","familyName":"display-table fallback","skillIdHex":"0x24","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[0],"expandedFrameGateSequence":[{"tick":0,"frame":0,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":8,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[],"resultWlkNos":[],"soundModel":"no-action-wlk","soundCalls":{},"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:smashu:0x24","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x00525980","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"no-direct-wlk-support","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 4, 10, 1, 1, 3, 1, 1, 1, 1, 1","0xc2 result sound count changes: 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 0, 0, 0, 0","frame count changes: 4, 4, 6, 6, 18, 5, 11, 16, 5, 8, 19, 1, 1, 1, 4","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x00525980","opcode":"0x21","summary":"set sprite=0x17, frame=0, gate=8, mode=0","spriteHex":"0x17","frame":0,"gate":8},{"tick":8,"kind":"actor-flag","vaHex":"0x00525988","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","caster-position-rule","render:support-or-status","sound:no-action-wlk"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"smashu:0x25","ownerKey":"smashu","ownerName":"스마슈","skillName":"눈요기","familyName":"display-table fallback","skillIdHex":"0x25","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[2],"expandedFrameGateSequence":[{"tick":0,"frame":2,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":8,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[11],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":11,"effectArgsHex":"01 00 0b","role":"effect/cast cue","vaHex":"0x0052599c"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:smashu:0x25","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x0052599c","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 4, 10, 1, 1, 3, 1, 1, 1, 1, 1","0xc2 result sound count changes: 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 0, 0, 0, 0","frame count changes: 4, 4, 6, 6, 18, 5, 11, 16, 5, 8, 19, 1, 1, 1, 4","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x0052599c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 11; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":11,"effectArgsHex":"01 00 0b"},{"tick":0,"kind":"actor-frame","vaHex":"0x005259a0","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=8, mode=0","spriteHex":"0x17","frame":2,"gate":8},{"tick":8,"kind":"actor-flag","vaHex":"0x005259a8","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","caster-position-rule","render:support-or-status","sound:effect-only"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"smashu:0x26","ownerKey":"smashu","ownerName":"스마슈","skillName":"인법·몸감추기","familyName":"display-table fallback","skillIdHex":"0x26","levelOrFixed":null,"targetClass":"self","mpCost":1,"hitCount":1,"frameSequence":[3],"expandedFrameGateSequence":[{"tick":0,"frame":3,"gate":16,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":16,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[22],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":22,"effectArgsHex":"01 00 16","role":"effect/cast cue","vaHex":"0x005259bc"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:smashu:0x26","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x005259bc","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 4, 10, 1, 1, 3, 1, 1, 1, 1, 1","0xc2 result sound count changes: 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 0, 0, 0, 0","frame count changes: 4, 4, 6, 6, 18, 5, 11, 16, 5, 8, 19, 1, 1, 1, 4","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x005259bc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 22; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":22,"effectArgsHex":"01 00 16"},{"tick":0,"kind":"actor-frame","vaHex":"0x005259c0","opcode":"0x21","summary":"set sprite=0x17, frame=3, gate=16, mode=0","spriteHex":"0x17","frame":3,"gate":16},{"tick":16,"kind":"actor-flag","vaHex":"0x005259c8","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","caster-position-rule","render:support-or-status","sound:effect-only"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"smashu:0x27","ownerKey":"smashu","ownerName":"스마슈","skillName":"신격방어","familyName":"display-table fallback","skillIdHex":"0x27","levelOrFixed":null,"targetClass":"self","mpCost":10,"hitCount":1,"frameSequence":[6,4,40,41],"expandedFrameGateSequence":[{"tick":0,"frame":6,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":4,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":40,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":41,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":16,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[32],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":8,"opcode":"0x24","wlkNo":32,"effectArgsHex":"01 00 20","role":"effect/cast cue","vaHex":"0x005259f0"}],"helperIds":[42],"helperFacts":[{"helperId":42,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":3,"directSpawnFrames":["90@0","90@1","90@2"],"emitFrames":[90],"rootCounterSets":{"0x90":20},"rootBranches":[{"vaHex":"0x004b6040","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5fa8","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5fa8","targetSnippet":[{"vaHex":"0x004b5fa8","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b5f08 into +0x58"},{"vaHex":"0x004b5fb0","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5fb4","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5fb8","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5fbc","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x20, mode=0xe0"},{"vaHex":"0x004b5fc0","opcode":"0x12","category":"write","summary":"add display/actor field +0x84, imm=0x00180000 (24px)"},{"vaHex":"0x004b5fc8","opcode":"0x2b","category":"random-range","summary":"rng(range=8) -> +0x58"},{"vaHex":"0x004b5fcc","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:parentActor.byte[+0xe7] = source:display.byte[+0x58]"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 3 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:smashu:0x27","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x005259dc","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 4, 10, 1, 1, 3, 1, 1, 1, 1, 1","0xc2 result sound count changes: 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 0, 0, 0, 0","frame count changes: 4, 4, 6, 6, 18, 5, 11, 16, 5, 8, 19, 1, 1, 1, 4","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x005259dc","opcode":"0x21","summary":"set sprite=0x17, frame=6, gate=4, mode=0","spriteHex":"0x17","frame":6,"gate":4},{"tick":4,"kind":"actor-frame","vaHex":"0x005259e4","opcode":"0x21","summary":"set sprite=0x17, frame=4, gate=4, mode=0","spriteHex":"0x17","frame":4,"gate":4},{"tick":8,"kind":"helper-call","vaHex":"0x005259ec","opcode":"0xbd","summary":"helper-call id=42; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":42},{"tick":8,"kind":"effect-sound","vaHex":"0x005259f0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 32; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":32,"effectArgsHex":"01 00 20"},{"tick":8,"kind":"actor-frame","vaHex":"0x005259f4","opcode":"0x21","summary":"set sprite=0x17, frame=40, gate=4, mode=0","spriteHex":"0x17","frame":40,"gate":4},{"tick":12,"kind":"actor-frame","vaHex":"0x005259fc","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=4, mode=0","spriteHex":"0x17","frame":41,"gate":4},{"tick":16,"kind":"wait","vaHex":"0x00525a04","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":16,"kind":"actor-flag","vaHex":"0x00525a0c","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000001","mode":0,"maskHex":"0x00000001"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:randomized-child-spawn-stream","helper-root-counters"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]}],"supportPolicyRows":[{"recordKey":"ataho:0x05","ownerKey":"ataho","ownerName":"아타호","skillName":"마시기","familyName":"display-table fallback","skillIdHex":"0x05","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[40,41,42,43,42,43,42,43,41,40,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":34,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[23,23,23],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64d0"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64e4"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64f8"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x05","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d64a8","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d64a8","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d64b0","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d64b8","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d64c0","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d64c8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d64d0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d64d4","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d64dc","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d64e4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d64e8","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d64f0","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d64f8","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d64fc","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d6504","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d650c","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d6514","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-write","vaHex":"0x004d651c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-write","vaHex":"0x004d6524","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-frame","vaHex":"0x004d652c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","caster-position-rule","render:support-or-status","sound:effect-only"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x06","ownerKey":"ataho","ownerName":"아타호","skillName":"마시기","familyName":"display-table fallback","skillIdHex":"0x06","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[40,41,42,43,42,43,42,43,41,40,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":34,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[23,23,23],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64d0"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64e4"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64f8"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x06","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d64a8","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d64a8","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d64b0","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d64b8","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d64c0","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d64c8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d64d0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d64d4","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d64dc","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d64e4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d64e8","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d64f0","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d64f8","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d64fc","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d6504","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d650c","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d6514","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-write","vaHex":"0x004d651c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-write","vaHex":"0x004d6524","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-frame","vaHex":"0x004d652c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","caster-position-rule","render:support-or-status","sound:effect-only"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x07","ownerKey":"ataho","ownerName":"아타호","skillName":"마시기","familyName":"display-table fallback","skillIdHex":"0x07","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[40,41,42,43,42,43,42,43,41,40,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":34,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[23,23,23],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64d0"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64e4"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64f8"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x07","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d64a8","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d64a8","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d64b0","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d64b8","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d64c0","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d64c8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d64d0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d64d4","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d64dc","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d64e4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d64e8","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d64f0","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d64f8","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d64fc","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d6504","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d650c","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d6514","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-write","vaHex":"0x004d651c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-write","vaHex":"0x004d6524","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-frame","vaHex":"0x004d652c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","caster-position-rule","render:support-or-status","sound:effect-only"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x08","ownerKey":"ataho","ownerName":"아타호","skillName":"마시기","familyName":"display-table fallback","skillIdHex":"0x08","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[40,41,42,43,42,43,42,43,41,40,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":34,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[23,23,23],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64d0"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64e4"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64f8"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x08","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d64a8","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d64a8","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d64b0","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d64b8","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d64c0","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d64c8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d64d0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d64d4","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d64dc","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d64e4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d64e8","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d64f0","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d64f8","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d64fc","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d6504","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d650c","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d6514","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-write","vaHex":"0x004d651c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-write","vaHex":"0x004d6524","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-frame","vaHex":"0x004d652c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","caster-position-rule","render:support-or-status","sound:effect-only"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x09","ownerKey":"ataho","ownerName":"아타호","skillName":"마시기","familyName":"display-table fallback","skillIdHex":"0x09","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[40,41,42,43,42,43,42,43,41,40,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":34,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[23,23,23],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64d0"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64e4"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d64f8"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x09","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d64a8","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d64a8","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d64b0","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d64b8","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d64c0","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d64c8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d64d0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d64d4","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d64dc","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d64e4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d64e8","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d64f0","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d64f8","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d64fc","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d6504","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d650c","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d6514","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-write","vaHex":"0x004d651c","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-write","vaHex":"0x004d6524","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-frame","vaHex":"0x004d652c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","caster-position-rule","render:support-or-status","sound:effect-only"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x3a","ownerKey":"ataho","ownerName":"아타호","skillName":"도주","familyName":"display-table fallback","skillIdHex":"0x3a","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[0],"expandedFrameGateSequence":[{"tick":0,"frame":0,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":8,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[],"resultWlkNos":[],"soundModel":"no-action-wlk","soundCalls":{},"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x3a","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d7724","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"no-direct-wlk-support","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d7724","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=8, mode=0","spriteHex":"0x11","frame":0,"gate":8},{"tick":8,"kind":"actor-flag","vaHex":"0x004d772c","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","caster-position-rule","render:support-or-status","sound:no-action-wlk"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x3b","ownerKey":"ataho","ownerName":"아타호","skillName":"방어","familyName":"display-table fallback","skillIdHex":"0x3b","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[0,2],"expandedFrameGateSequence":[{"tick":0,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":2,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":10,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[11],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":2,"opcode":"0x24","wlkNo":11,"effectArgsHex":"01 00 0b","role":"effect/cast cue","vaHex":"0x004d7748"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x3b","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d7740","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d7740","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":2,"kind":"effect-sound","vaHex":"0x004d7748","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 11; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":11,"effectArgsHex":"01 00 0b"},{"tick":2,"kind":"actor-frame","vaHex":"0x004d774c","opcode":"0x21","summary":"set sprite=0x11, frame=2, gate=8, mode=0","spriteHex":"0x11","frame":2,"gate":8},{"tick":10,"kind":"actor-flag","vaHex":"0x004d7754","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","caster-position-rule","render:support-or-status","sound:effect-only"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x3c","ownerKey":"ataho","ownerName":"아타호","skillName":"기합일발","familyName":"display-table fallback","skillIdHex":"0x3c","levelOrFixed":null,"targetClass":"self","mpCost":5,"hitCount":1,"frameSequence":[0,52],"expandedFrameGateSequence":[{"tick":0,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":52,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":3,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[22],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":2,"opcode":"0x24","wlkNo":22,"effectArgsHex":"01 00 16","role":"effect/cast cue","vaHex":"0x004d7770"}],"helperIds":[32],"helperFacts":[{"helperId":32,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["98@0"],"emitFrames":[98],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5274","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"}]},{"vaHex":"0x004b528c","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b520c","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b520c","targetSnippet":[{"vaHex":"0x004b520c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x3c","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d7768","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004d7768","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2},{"tick":2,"kind":"effect-sound","vaHex":"0x004d7770","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 22; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":22,"effectArgsHex":"01 00 16"},{"tick":2,"kind":"helper-call","vaHex":"0x004d7774","opcode":"0xbd","summary":"helper-call id=32; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":32},{"tick":2,"kind":"actor-frame","vaHex":"0x004d7778","opcode":"0x21","summary":"set sprite=0x11, frame=52, gate=1, mode=0","spriteHex":"0x11","frame":52,"gate":1},{"tick":3,"kind":"wait","vaHex":"0x004d7780","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":3,"kind":"actor-flag","vaHex":"0x004d7788","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000001","mode":0,"maskHex":"0x00000001"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:direct-frame-spawn"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x3d","ownerKey":"ataho","ownerName":"아타호","skillName":"천조족","familyName":"display-table fallback","skillIdHex":"0x3d","levelOrFixed":null,"targetClass":"self","mpCost":1,"hitCount":2,"frameSequence":[40,41,42,43,42,43,42,43,41,40,40,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":36,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[23,23,23],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77cc"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77e0"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77f4"}],"helperIds":[34],"helperFacts":[{"helperId":34,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["98@0"],"emitFrames":[98],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5274","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"}]},{"vaHex":"0x004b528c","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b520c","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b520c","targetSnippet":[{"vaHex":"0x004b520c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x3d","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d779c","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d779c","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d77a8","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d77b4","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d77bc","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d77c4","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d77cc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d77d0","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d77d8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d77e0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d77e4","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d77ec","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d77f4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d77f8","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d7800","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d7808","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d7810","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-frame","vaHex":"0x004d7818","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":34,"kind":"helper-call","vaHex":"0x004d7820","opcode":"0xbd","summary":"helper-call id=34; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":34},{"tick":34,"kind":"wait","vaHex":"0x004d7824","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":34,"kind":"actor-flag","vaHex":"0x004d782c","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000001","mode":0,"maskHex":"0x00000001"},{"tick":34,"kind":"actor-write","vaHex":"0x004d7834","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":34,"kind":"actor-write","vaHex":"0x004d7840","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":34,"kind":"actor-frame","vaHex":"0x004d784c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:direct-frame-spawn"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x3e","ownerKey":"ataho","ownerName":"아타호","skillName":"천조족","familyName":"display-table fallback","skillIdHex":"0x3e","levelOrFixed":null,"targetClass":"self","mpCost":1,"hitCount":2,"frameSequence":[40,41,42,43,42,43,42,43,41,40,40,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":36,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[23,23,23],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77cc"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77e0"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77f4"}],"helperIds":[34],"helperFacts":[{"helperId":34,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["98@0"],"emitFrames":[98],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5274","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"}]},{"vaHex":"0x004b528c","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b520c","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b520c","targetSnippet":[{"vaHex":"0x004b520c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x3e","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d779c","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d779c","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d77a8","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d77b4","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d77bc","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d77c4","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d77cc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d77d0","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d77d8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d77e0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d77e4","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d77ec","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d77f4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d77f8","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d7800","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d7808","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d7810","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-frame","vaHex":"0x004d7818","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":34,"kind":"helper-call","vaHex":"0x004d7820","opcode":"0xbd","summary":"helper-call id=34; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":34},{"tick":34,"kind":"wait","vaHex":"0x004d7824","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":34,"kind":"actor-flag","vaHex":"0x004d782c","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000001","mode":0,"maskHex":"0x00000001"},{"tick":34,"kind":"actor-write","vaHex":"0x004d7834","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":34,"kind":"actor-write","vaHex":"0x004d7840","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":34,"kind":"actor-frame","vaHex":"0x004d784c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:direct-frame-spawn"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x3f","ownerKey":"ataho","ownerName":"아타호","skillName":"주 백약지장","familyName":"display-table fallback","skillIdHex":"0x3f","levelOrFixed":null,"targetClass":"self","mpCost":5,"hitCount":2,"frameSequence":[40,41,42,43,42,43,42,43,41,40,40,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":36,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[23,23,23],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d7890"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d78a4"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d78b8"}],"helperIds":[34],"helperFacts":[{"helperId":34,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["98@0"],"emitFrames":[98],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5274","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"}]},{"vaHex":"0x004b528c","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b520c","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b520c","targetSnippet":[{"vaHex":"0x004b520c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x3f","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d7860","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d7860","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d786c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d7878","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d7880","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d7888","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d7890","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d7894","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d789c","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d78a4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d78a8","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d78b0","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d78b8","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d78bc","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d78c4","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d78cc","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d78d4","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-frame","vaHex":"0x004d78dc","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":34,"kind":"helper-call","vaHex":"0x004d78e4","opcode":"0xbd","summary":"helper-call id=34; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":34},{"tick":34,"kind":"wait","vaHex":"0x004d78e8","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":34,"kind":"actor-flag","vaHex":"0x004d78f0","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000001","mode":0,"maskHex":"0x00000001"},{"tick":34,"kind":"actor-write","vaHex":"0x004d78f8","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":34,"kind":"actor-write","vaHex":"0x004d7904","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":34,"kind":"actor-frame","vaHex":"0x004d7910","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:direct-frame-spawn"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x40","ownerKey":"ataho","ownerName":"아타호","skillName":"천조족","familyName":"display-table fallback","skillIdHex":"0x40","levelOrFixed":null,"targetClass":"self","mpCost":1,"hitCount":2,"frameSequence":[40,41,42,43,42,43,42,43,41,40,40,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":36,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[23,23,23],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77cc"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77e0"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77f4"}],"helperIds":[34],"helperFacts":[{"helperId":34,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["98@0"],"emitFrames":[98],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5274","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"}]},{"vaHex":"0x004b528c","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b520c","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b520c","targetSnippet":[{"vaHex":"0x004b520c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x40","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d779c","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d779c","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d77a8","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d77b4","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d77bc","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d77c4","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d77cc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d77d0","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d77d8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d77e0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d77e4","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d77ec","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d77f4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d77f8","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d7800","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d7808","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d7810","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-frame","vaHex":"0x004d7818","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":34,"kind":"helper-call","vaHex":"0x004d7820","opcode":"0xbd","summary":"helper-call id=34; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":34},{"tick":34,"kind":"wait","vaHex":"0x004d7824","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":34,"kind":"actor-flag","vaHex":"0x004d782c","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000001","mode":0,"maskHex":"0x00000001"},{"tick":34,"kind":"actor-write","vaHex":"0x004d7834","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":34,"kind":"actor-write","vaHex":"0x004d7840","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":34,"kind":"actor-frame","vaHex":"0x004d784c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:direct-frame-spawn"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"ataho:0x41","ownerKey":"ataho","ownerName":"아타호","skillName":"천조족","familyName":"display-table fallback","skillIdHex":"0x41","levelOrFixed":null,"targetClass":"self","mpCost":1,"hitCount":2,"frameSequence":[40,41,42,43,42,43,42,43,41,40,40,0],"expandedFrameGateSequence":[{"tick":0,"frame":40,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":9,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":15,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":21,"frame":42,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":43,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":27,"frame":41,"gate":3,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":40,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":0,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":36,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[23,23,23],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77cc"},{"tick":18,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77e0"},{"tick":24,"opcode":"0x24","wlkNo":23,"effectArgsHex":"01 00 17","role":"effect/cast cue","vaHex":"0x004d77f4"}],"helperIds":[34],"helperFacts":[{"helperId":34,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["98@0"],"emitFrames":[98],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5274","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"}]},{"vaHex":"0x004b528c","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b520c","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b520c","targetSnippet":[{"vaHex":"0x004b520c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:ataho:0x41","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004d779c","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2","0xc2 result sound count changes: 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0","frame count changes: 3, 5, 3, 3, 11, 11, 11, 11, 11, 2, 2, 2, 2, 16, 16, 20, 1, 2, 2, 12, 12, 12, 12, 12"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004d779c","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-write","vaHex":"0x004d77a8","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004d77b4","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=6, mode=0","spriteHex":"0x11","frame":40,"gate":6},{"tick":6,"kind":"actor-frame","vaHex":"0x004d77bc","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":9,"kind":"actor-frame","vaHex":"0x004d77c4","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":12,"kind":"effect-sound","vaHex":"0x004d77cc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":12,"kind":"actor-frame","vaHex":"0x004d77d0","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":15,"kind":"actor-frame","vaHex":"0x004d77d8","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":18,"kind":"effect-sound","vaHex":"0x004d77e0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":18,"kind":"actor-frame","vaHex":"0x004d77e4","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":21,"kind":"actor-frame","vaHex":"0x004d77ec","opcode":"0x21","summary":"set sprite=0x11, frame=42, gate=3, mode=0","spriteHex":"0x11","frame":42,"gate":3},{"tick":24,"kind":"effect-sound","vaHex":"0x004d77f4","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 23; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":23,"effectArgsHex":"01 00 17"},{"tick":24,"kind":"actor-frame","vaHex":"0x004d77f8","opcode":"0x21","summary":"set sprite=0x11, frame=43, gate=3, mode=0","spriteHex":"0x11","frame":43,"gate":3},{"tick":27,"kind":"actor-frame","vaHex":"0x004d7800","opcode":"0x21","summary":"set sprite=0x11, frame=41, gate=3, mode=0","spriteHex":"0x11","frame":41,"gate":3},{"tick":30,"kind":"actor-frame","vaHex":"0x004d7808","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":32,"kind":"actor-flag","vaHex":"0x004d7810","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":32,"kind":"actor-frame","vaHex":"0x004d7818","opcode":"0x21","summary":"set sprite=0x11, frame=40, gate=2, mode=0","spriteHex":"0x11","frame":40,"gate":2},{"tick":34,"kind":"helper-call","vaHex":"0x004d7820","opcode":"0xbd","summary":"helper-call id=34; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":34},{"tick":34,"kind":"wait","vaHex":"0x004d7824","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":34,"kind":"actor-flag","vaHex":"0x004d782c","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000001","mode":0,"maskHex":"0x00000001"},{"tick":34,"kind":"actor-write","vaHex":"0x004d7834","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":34,"kind":"actor-write","vaHex":"0x004d7840","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":34,"kind":"actor-frame","vaHex":"0x004d784c","opcode":"0x21","summary":"set sprite=0x11, frame=0, gate=2, mode=0","spriteHex":"0x11","frame":0,"gate":2}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:direct-frame-spawn"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"rinshan:0x05","ownerKey":"rinshan","ownerName":"린샹","skillName":"도발","familyName":"display-table fallback","skillIdHex":"0x05","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[51,52,53,51,52,53,51,52,53,54,4,5,4],"expandedFrameGateSequence":[{"tick":0,"frame":51,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":52,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":53,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":51,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":52,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":53,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":20,"frame":51,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":24,"frame":52,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":53,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":30,"frame":54,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":4,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":44,"frame":5,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":48,"frame":4,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":56,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[],"resultWlkNos":[],"soundModel":"no-action-wlk","soundCalls":{},"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:rinshan:0x05","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"display-start-corrected","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004daf28","canonicalDisplayStartSource":"display-start-override","canonicalWlkEvidenceStatus":"no-direct-wlk-support","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 4, 4, 4, 13, 6, 6, 6, 8, 6, 6, 34, 6, 3, 8, 1, effect WLK count: 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 7, 1, 0, 1, 0"],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x004daf28","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-frame","vaHex":"0x004daf2c","opcode":"0x21","summary":"set sprite=0x14, frame=51, gate=4, mode=0","spriteHex":"0x14","frame":51,"gate":4},{"tick":4,"kind":"actor-frame","vaHex":"0x004daf34","opcode":"0x21","summary":"set sprite=0x14, frame=52, gate=2, mode=0","spriteHex":"0x14","frame":52,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x004daf3c","opcode":"0x21","summary":"set sprite=0x14, frame=53, gate=4, mode=0","spriteHex":"0x14","frame":53,"gate":4},{"tick":10,"kind":"actor-frame","vaHex":"0x004daf44","opcode":"0x21","summary":"set sprite=0x14, frame=51, gate=4, mode=0","spriteHex":"0x14","frame":51,"gate":4},{"tick":14,"kind":"actor-frame","vaHex":"0x004daf4c","opcode":"0x21","summary":"set sprite=0x14, frame=52, gate=2, mode=0","spriteHex":"0x14","frame":52,"gate":2},{"tick":16,"kind":"actor-frame","vaHex":"0x004daf54","opcode":"0x21","summary":"set sprite=0x14, frame=53, gate=4, mode=0","spriteHex":"0x14","frame":53,"gate":4},{"tick":20,"kind":"actor-frame","vaHex":"0x004daf5c","opcode":"0x21","summary":"set sprite=0x14, frame=51, gate=4, mode=0","spriteHex":"0x14","frame":51,"gate":4},{"tick":24,"kind":"actor-frame","vaHex":"0x004daf64","opcode":"0x21","summary":"set sprite=0x14, frame=52, gate=2, mode=0","spriteHex":"0x14","frame":52,"gate":2},{"tick":26,"kind":"actor-frame","vaHex":"0x004daf6c","opcode":"0x21","summary":"set sprite=0x14, frame=53, gate=4, mode=0","spriteHex":"0x14","frame":53,"gate":4},{"tick":30,"kind":"actor-frame","vaHex":"0x004daf74","opcode":"0x21","summary":"set sprite=0x14, frame=54, gate=8, mode=0","spriteHex":"0x14","frame":54,"gate":8},{"tick":38,"kind":"actor-frame","vaHex":"0x004daf7c","opcode":"0x21","summary":"set sprite=0x14, frame=4, gate=6, mode=0","spriteHex":"0x14","frame":4,"gate":6},{"tick":44,"kind":"actor-frame","vaHex":"0x004daf84","opcode":"0x21","summary":"set sprite=0x14, frame=5, gate=4, mode=0","spriteHex":"0x14","frame":5,"gate":4},{"tick":48,"kind":"actor-frame","vaHex":"0x004daf8c","opcode":"0x21","summary":"set sprite=0x14, frame=4, gate=8, mode=0","spriteHex":"0x14","frame":4,"gate":8},{"tick":56,"kind":"actor-flag","vaHex":"0x004daf94","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000010","mode":0,"maskHex":"0x00000010"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","caster-position-rule","render:support-or-status","sound:no-action-wlk"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"rinshan:0x2f","ownerKey":"rinshan","ownerName":"린샹","skillName":"도주","familyName":"display-table fallback","skillIdHex":"0x2f","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[43,44,45,46,22,23,23,3],"expandedFrameGateSequence":[{"tick":0,"frame":43,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":44,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":45,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":46,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":22,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":14,"frame":23,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":16,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":18,"repeatLoopCount":0,"hitEventCount":1,"hitClassCounts":{"confirmed-result-hit-window":1},"effectWlkNos":[31],"resultWlkNos":[5],"soundModel":"effect+result","soundCalls":[{"tick":12,"opcode":"0x24","wlkNo":31,"effectArgsHex":"01 00 1f","role":"effect/cast cue","vaHex":"0x004dc390"},{"tick":16,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x004dc3b4"}],"helperIds":[65,17],"helperFacts":[{"helperId":65,"behaviorClass":"actor-flag-sync","frameScripts":[],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b7154","fieldHex":"0x04","role":"unknown-root-branch","targetVaHex":"0x004b716c","condition":"byte conditional branch external-static-target if left:parentActor.byte[+0x04] != right:imm.byte=0x01 -> 0x004b716c","targetSnippet":[{"vaHex":"0x004b716c","opcode":"0x12","category":"frame","summary":"direct sprite/frame selector write sprite=0x1a, frame=16, field +0x28, mode=0x80"},{"vaHex":"0x004b7174","opcode":"0x12","category":"write","summary":"set display/actor field +0x74, source +0x80, mode=0xa0"},{"vaHex":"0x004b7178","opcode":"0x12","category":"write","summary":"sub display/actor field +0x74, source +0x1c, mode=0xa2"},{"vaHex":"0x004b717c","opcode":"0x15","category":"conditional-branch","summary":"conditional branch motion.dx +0x74 >= 0x80000000; target 0x004b7198"},{"vaHex":"0x004b7188","opcode":"0x12","category":"write","summary":"div display/actor field +0x74, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b7190","opcode":"0x03","category":"jump","summary":"jump 0x004b71a8"},{"vaHex":"0x004b7198","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b719c","opcode":"0x12","category":"write","summary":"div display/actor field +0x74, imm=0x00000008 (0.00012207px)"}]},{"vaHex":"0x004b717c","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b7198","condition":"conditional branch motion.dx +0x74 >= 0x80000000; target 0x004b7198","targetSnippet":[{"vaHex":"0x004b7198","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b719c","opcode":"0x12","category":"write","summary":"div display/actor field +0x74, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b71a4","opcode":"0x12","category":"write","summary":"neg display/actor field +0x74, source +0x74, mode=0xaa"},{"vaHex":"0x004b71a8","opcode":"0x12","category":"write","summary":"set display/actor field +0x78, source +0x84, mode=0xa0"},{"vaHex":"0x004b71ac","opcode":"0x12","category":"write","summary":"sub display/actor field +0x78, source +0x20, mode=0xa2"},{"vaHex":"0x004b71b0","opcode":"0x15","category":"conditional-branch","summary":"conditional branch motion.dy +0x78 >= 0x80000000; target 0x004b71cc"},{"vaHex":"0x004b71bc","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b71c4","opcode":"0x03","category":"jump","summary":"jump 0x004b71dc"}]},{"vaHex":"0x004b71b0","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b71cc","condition":"conditional branch motion.dy +0x78 >= 0x80000000; target 0x004b71cc","targetSnippet":[{"vaHex":"0x004b71cc","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b71d0","opcode":"0x12","category":"write","summary":"div display/actor field +0x78, imm=0x00000008 (0.00012207px)"},{"vaHex":"0x004b71d8","opcode":"0x12","category":"write","summary":"neg display/actor field +0x78, source +0x78, mode=0xaa"},{"vaHex":"0x004b71dc","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b71e0","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b71e4","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b71e8","opcode":"0x06","category":"repeat-loop","summary":"repeat-loop count=8, target=0x004b71e0; handler stores target in object +0x3c and counter in +0x60"},{"vaHex":"0x004b71f0","opcode":"0x42","category":"parent-actor","summary":"set parent actor pointer from this display object's actor slot"}]},{"vaHex":"0x004b7204","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b71fc","condition":"conditional branch display.x +0x1c < 0x02800000; target 0x004b71fc","targetSnippet":[{"vaHex":"0x004b71fc","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b7200","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b7204","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.x +0x1c < 0x02800000; target 0x004b71fc"},{"vaHex":"0x004b7210","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.x +0x1c >= 0xffc00000; target 0x004b71fc"},{"vaHex":"0x004b721c","opcode":"0x00","category":"destroy/end","summary":"destroy/free display object candidate"}]},{"vaHex":"0x004b7210","fieldHex":null,"role":"unknown-root-branch","targetVaHex":"0x004b71fc","condition":"conditional branch display.x +0x1c >= 0xffc00000; target 0x004b71fc","targetSnippet":[{"vaHex":"0x004b71fc","opcode":"0x1e","category":"child-control-noop","summary":"4-byte child control/no-op barrier; observed as 1e 00 00 00 before normal continuation"},{"vaHex":"0x004b7200","opcode":"0x01","category":"yield","summary":"yield one VM tick and advance"},{"vaHex":"0x004b7204","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.x +0x1c < 0x02800000; target 0x004b71fc"},{"vaHex":"0x004b7210","opcode":"0x15","category":"conditional-branch","summary":"conditional branch display.x +0x1c >= 0xffc00000; target 0x004b71fc"},{"vaHex":"0x004b721c","opcode":"0x00","category":"destroy/end","summary":"destroy/free display object candidate"}]}],"childMotionLoops":[],"interpretation":[],"notes":["helper mainly synchronizes actor flags/waits"]},{"helperId":17,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3f94","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3fc0","frames":["12@2","13@2","14@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:rinshan:0x2f","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004dc358","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 4, 4, 4, 13, 6, 6, 6, 8, 6, 6, 34, 6, 3, 8, 1, effect WLK count: 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 7, 1, 0, 1, 0"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004dc358","opcode":"0x21","summary":"set sprite=0x14, frame=43, gate=4, mode=0","spriteHex":"0x14","frame":43,"gate":4},{"tick":4,"kind":"actor-frame","vaHex":"0x004dc360","opcode":"0x21","summary":"set sprite=0x14, frame=44, gate=2, mode=0","spriteHex":"0x14","frame":44,"gate":2},{"tick":6,"kind":"actor-write","vaHex":"0x004dc368","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff80000 (-8px)","destHex":"0x1c","immHex":"0xfff80000","immFixed":-8.0},{"tick":6,"kind":"actor-frame","vaHex":"0x004dc370","opcode":"0x21","summary":"set sprite=0x14, frame=45, gate=2, mode=0","spriteHex":"0x14","frame":45,"gate":2},{"tick":8,"kind":"actor-frame","vaHex":"0x004dc378","opcode":"0x21","summary":"set sprite=0x14, frame=46, gate=2, mode=0","spriteHex":"0x14","frame":46,"gate":2},{"tick":10,"kind":"actor-write","vaHex":"0x004dc380","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff80000 (-8px)","destHex":"0x1c","immHex":"0xfff80000","immFixed":-8.0},{"tick":10,"kind":"actor-frame","vaHex":"0x004dc388","opcode":"0x21","summary":"set sprite=0x14, frame=22, gate=2, mode=0","spriteHex":"0x14","frame":22,"gate":2},{"tick":12,"kind":"effect-sound","vaHex":"0x004dc390","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 31; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":31,"effectArgsHex":"01 00 1f"},{"tick":12,"kind":"helper-call","vaHex":"0x004dc394","opcode":"0xbd","summary":"helper-call id=65; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":65},{"tick":12,"kind":"actor-frame","vaHex":"0x004dc398","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=2, mode=0","spriteHex":"0x14","frame":23,"gate":2},{"tick":14,"kind":"wait","vaHex":"0x004dc3a0","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":14,"kind":"helper-call","vaHex":"0x004dc3a8","opcode":"0xbd","summary":"helper-call id=17; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":17},{"tick":14,"kind":"actor-frame","vaHex":"0x004dc3ac","opcode":"0x21","summary":"set sprite=0x14, frame=23, gate=2, mode=0","spriteHex":"0x14","frame":23,"gate":2},{"tick":16,"kind":"result-sound","vaHex":"0x004dc3b4","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":16,"kind":"actor-flag","vaHex":"0x004dc3b8","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":16,"kind":"actor-flag","vaHex":"0x004dc3c0","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":16,"kind":"wait","vaHex":"0x004dc3c8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":16,"kind":"actor-frame","vaHex":"0x004dc3cc","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=2, mode=0","spriteHex":"0x14","frame":3,"gate":2}],"hitEvents":[{"tick":16,"soundVaHex":"0x004dc3b4","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x004dc3b8","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x004dc3c0","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x004dc3c8","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:support-or-status","sound:effect+result","helper:actor-flag-sync","helper:multi-frameScript-effect"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"rinshan:0x30","ownerKey":"rinshan","ownerName":"린샹","skillName":"방어","familyName":"display-table fallback","skillIdHex":"0x30","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[3],"expandedFrameGateSequence":[{"tick":0,"frame":3,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":8,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[],"resultWlkNos":[],"soundModel":"no-action-wlk","soundCalls":{},"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:rinshan:0x30","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x004dc3e0","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"no-direct-wlk-support","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"visual-scaling","familyPatternNotes":["payload 타수는 같지만 frame/effect sound가 숙련도에 따라 달라진다.","frame count: 6, 4, 4, 4, 13, 6, 6, 6, 8, 6, 6, 34, 6, 3, 8, 1, effect WLK count: 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 7, 1, 0, 1, 0"],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x004dc3e0","opcode":"0x21","summary":"set sprite=0x14, frame=3, gate=8, mode=0","spriteHex":"0x14","frame":3,"gate":8},{"tick":8,"kind":"actor-flag","vaHex":"0x004dc3e8","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","caster-position-rule","render:support-or-status","sound:no-action-wlk"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"rinshan:0x31","ownerKey":"rinshan","ownerName":"린샹","skillName":"기공회복","familyName":"회복/방어 특수기","skillIdHex":"0x31","levelOrFixed":null,"targetClass":"ally-single","mpCost":5,"hitCount":1,"frameSequence":[29,30,31,32,3],"expandedFrameGateSequence":[{"tick":0,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":30,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":31,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":32,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":3,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":19,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[10],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":18,"opcode":"0x24","wlkNo":10,"effectArgsHex":"01 00 0a","role":"effect/cast cue","vaHex":"0x004dc478"}],"helperIds":[32],"helperFacts":[{"helperId":32,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["98@0"],"emitFrames":[98],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5274","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"}]},{"vaHex":"0x004b528c","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b520c","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b520c","targetSnippet":[{"vaHex":"0x004b520c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:rinshan:0x31","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dc41c","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"ally-single-support","casterRule":"ally-single-support","startAnchor":"home","motionKind":"support","motionTarget":"ally-single","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"mixed-fixed-family","familyPatternNotes":["한 패밀리에 서로 다른 고정/장비 기술명이 섞여 있어 4단계 숙련도 비교로 보면 안 된다.","skill names: 기공회복, 기공독치료, 기공대회복, 수경"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004dc41c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004dc424","opcode":"0x21","summary":"set sprite=0x14, frame=29, gate=2, mode=0","spriteHex":"0x14","frame":29,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dc42c","opcode":"0x21","summary":"set sprite=0x14, frame=30, gate=6, mode=0","spriteHex":"0x14","frame":30,"gate":6},{"tick":8,"kind":"actor-write","vaHex":"0x004dc434","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004dc43c","opcode":"0x21","summary":"set sprite=0x14, frame=31, gate=2, mode=0","spriteHex":"0x14","frame":31,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004dc444","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=8, mode=0","spriteHex":"0x14","frame":32,"gate":8},{"tick":18,"kind":"helper-call","vaHex":"0x004dc45c","opcode":"0xbd","summary":"helper-call id=32; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":32},{"tick":18,"kind":"effect-sound","vaHex":"0x004dc478","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 10; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":10,"effectArgsHex":"01 00 0a"},{"tick":18,"kind":"actor-flag","vaHex":"0x004dc47c","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":18,"kind":"actor-frame","vaHex":"0x004dc484","opcode":"0x12","summary":"direct sprite/frame selector write sprite=0x14, frame=3, field +0x28, mode=0x80","spriteHex":"0x14","frame":3,"gate":1},{"tick":19,"kind":"wait","vaHex":"0x004dc48c","opcode":"0xc1","summary":"actor flag barrier mode=1, mask=0x00000002"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:direct-frame-spawn"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"rinshan:0x32","ownerKey":"rinshan","ownerName":"린샹","skillName":"기공독치료","familyName":"회복/방어 특수기","skillIdHex":"0x32","levelOrFixed":null,"targetClass":"ally-single","mpCost":3,"hitCount":1,"frameSequence":[29,30,31,32,3],"expandedFrameGateSequence":[{"tick":0,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":30,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":31,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":32,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":3,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":19,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[10],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":18,"opcode":"0x24","wlkNo":10,"effectArgsHex":"01 00 0a","role":"effect/cast cue","vaHex":"0x004dc478"}],"helperIds":[33],"helperFacts":[{"helperId":33,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["98@0"],"emitFrames":[98],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5274","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"}]},{"vaHex":"0x004b528c","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b520c","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b520c","targetSnippet":[{"vaHex":"0x004b520c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:rinshan:0x32","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dc41c","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"ally-single-support","casterRule":"ally-single-support","startAnchor":"home","motionKind":"support","motionTarget":"ally-single","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"mixed-fixed-family","familyPatternNotes":["한 패밀리에 서로 다른 고정/장비 기술명이 섞여 있어 4단계 숙련도 비교로 보면 안 된다.","skill names: 기공회복, 기공독치료, 기공대회복, 수경"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004dc41c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004dc424","opcode":"0x21","summary":"set sprite=0x14, frame=29, gate=2, mode=0","spriteHex":"0x14","frame":29,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dc42c","opcode":"0x21","summary":"set sprite=0x14, frame=30, gate=6, mode=0","spriteHex":"0x14","frame":30,"gate":6},{"tick":8,"kind":"actor-write","vaHex":"0x004dc434","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004dc43c","opcode":"0x21","summary":"set sprite=0x14, frame=31, gate=2, mode=0","spriteHex":"0x14","frame":31,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004dc444","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=8, mode=0","spriteHex":"0x14","frame":32,"gate":8},{"tick":18,"kind":"helper-call","vaHex":"0x004dc468","opcode":"0xbd","summary":"helper-call id=33; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":33},{"tick":18,"kind":"effect-sound","vaHex":"0x004dc478","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 10; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":10,"effectArgsHex":"01 00 0a"},{"tick":18,"kind":"actor-flag","vaHex":"0x004dc47c","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":18,"kind":"actor-frame","vaHex":"0x004dc484","opcode":"0x12","summary":"direct sprite/frame selector write sprite=0x14, frame=3, field +0x28, mode=0x80","spriteHex":"0x14","frame":3,"gate":1},{"tick":19,"kind":"wait","vaHex":"0x004dc48c","opcode":"0xc1","summary":"actor flag barrier mode=1, mask=0x00000002"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:direct-frame-spawn"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"rinshan:0x33","ownerKey":"rinshan","ownerName":"린샹","skillName":"기공대회복","familyName":"회복/방어 특수기","skillIdHex":"0x33","levelOrFixed":null,"targetClass":"ally-all","mpCost":10,"hitCount":1,"frameSequence":[29,30,31,32,3],"expandedFrameGateSequence":[{"tick":0,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":30,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":31,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":32,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":3,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":19,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[10],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":18,"opcode":"0x24","wlkNo":10,"effectArgsHex":"01 00 0a","role":"effect/cast cue","vaHex":"0x004dc478"}],"helperIds":[34],"helperFacts":[{"helperId":34,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["98@0"],"emitFrames":[98],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5274","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"}]},{"vaHex":"0x004b528c","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b520c","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b520c","targetSnippet":[{"vaHex":"0x004b520c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:rinshan:0x33","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dc41c","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"ally-all-support","casterRule":"ally-all-support","startAnchor":"home","motionKind":"support","motionTarget":"ally-all","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"mixed-fixed-family","familyPatternNotes":["한 패밀리에 서로 다른 고정/장비 기술명이 섞여 있어 4단계 숙련도 비교로 보면 안 된다.","skill names: 기공회복, 기공독치료, 기공대회복, 수경"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004dc41c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004dc424","opcode":"0x21","summary":"set sprite=0x14, frame=29, gate=2, mode=0","spriteHex":"0x14","frame":29,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dc42c","opcode":"0x21","summary":"set sprite=0x14, frame=30, gate=6, mode=0","spriteHex":"0x14","frame":30,"gate":6},{"tick":8,"kind":"actor-write","vaHex":"0x004dc434","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004dc43c","opcode":"0x21","summary":"set sprite=0x14, frame=31, gate=2, mode=0","spriteHex":"0x14","frame":31,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004dc444","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=8, mode=0","spriteHex":"0x14","frame":32,"gate":8},{"tick":18,"kind":"helper-call","vaHex":"0x004dc474","opcode":"0xbd","summary":"helper-call id=34; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":34},{"tick":18,"kind":"effect-sound","vaHex":"0x004dc478","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 10; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":10,"effectArgsHex":"01 00 0a"},{"tick":18,"kind":"actor-flag","vaHex":"0x004dc47c","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":18,"kind":"actor-frame","vaHex":"0x004dc484","opcode":"0x12","summary":"direct sprite/frame selector write sprite=0x14, frame=3, field +0x28, mode=0x80","spriteHex":"0x14","frame":3,"gate":1},{"tick":19,"kind":"wait","vaHex":"0x004dc48c","opcode":"0xc1","summary":"actor flag barrier mode=1, mask=0x00000002"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:direct-frame-spawn"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"rinshan:0x34","ownerKey":"rinshan","ownerName":"린샹","skillName":"수경","familyName":"회복/방어 특수기","skillIdHex":"0x34","levelOrFixed":null,"targetClass":"self","mpCost":15,"hitCount":1,"frameSequence":[29,30,31,32,3],"expandedFrameGateSequence":[{"tick":0,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":30,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":31,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":10,"frame":32,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":18,"frame":3,"gate":1,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":19,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[10],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":18,"opcode":"0x24","wlkNo":10,"effectArgsHex":"01 00 0a","role":"effect/cast cue","vaHex":"0x004dc478"}],"helperIds":[32],"helperFacts":[{"helperId":32,"behaviorClass":"direct-frame-spawn","frameScripts":[],"directSpawnCount":1,"directSpawnFrames":["98@0"],"emitFrames":[98],"rootCounterSets":{},"rootBranches":[{"vaHex":"0x004b5274","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5210","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5210","targetSnippet":[{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"},{"vaHex":"0x004b5230","opcode":"0x12","category":"write","summary":"mul display/actor field +0x58, imm=0x00002000 (0.125px)"}]},{"vaHex":"0x004b528c","fieldHex":"0x92","role":"unknown-root-branch","targetVaHex":"0x004b520c","condition":"word conditional branch local-backward-loop if left:display.word[+0x92] != right:imm.word=0x0000 -> 0x004b520c","targetSnippet":[{"vaHex":"0x004b520c","opcode":"0x11","category":"child-write","summary":"display/child field +0x90, source +0x96, mode=0xa0"},{"vaHex":"0x004b5210","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa0, mode=0xa0"},{"vaHex":"0x004b5214","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b52ac into +0x58"},{"vaHex":"0x004b521c","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5220","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5224","opcode":"0x12","category":"write","summary":"set display/actor field +0x1c, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5228","opcode":"0x12","category":"write","summary":"set display/actor field +0x20, source +0x20, mode=0xe0"},{"vaHex":"0x004b522c","opcode":"0x2b","category":"random-range","summary":"rng(range=64) -> +0x58"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 1 child frame events"],"notes":["direct child frame spawn without decoded 0x20 frameScript"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:rinshan:0x34","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"family-start-confirmed","canonicalAlignmentClass":"visual-confirmed","canonicalAlignmentLabel":"시각 정렬 확정","canonicalDisplayVmStartVaHex":"0x004dc41c","canonicalDisplayStartSource":"entry-spec-family-start","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"mixed-fixed-family","familyPatternNotes":["한 패밀리에 서로 다른 고정/장비 기술명이 섞여 있어 4단계 숙련도 비교로 보면 안 된다.","skill names: 기공회복, 기공독치료, 기공대회복, 수경"],"timelineEvents":[{"tick":0,"kind":"actor-write","vaHex":"0x004dc41c","opcode":"0x12","summary":"add display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x004dc424","opcode":"0x21","summary":"set sprite=0x14, frame=29, gate=2, mode=0","spriteHex":"0x14","frame":29,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x004dc42c","opcode":"0x21","summary":"set sprite=0x14, frame=30, gate=6, mode=0","spriteHex":"0x14","frame":30,"gate":6},{"tick":8,"kind":"actor-write","vaHex":"0x004dc434","opcode":"0x12","summary":"sub display/actor field +0x20, imm=0xfff00000 (-16px)","destHex":"0x20","immHex":"0xfff00000","immFixed":-16.0},{"tick":8,"kind":"actor-frame","vaHex":"0x004dc43c","opcode":"0x21","summary":"set sprite=0x14, frame=31, gate=2, mode=0","spriteHex":"0x14","frame":31,"gate":2},{"tick":10,"kind":"actor-frame","vaHex":"0x004dc444","opcode":"0x21","summary":"set sprite=0x14, frame=32, gate=8, mode=0","spriteHex":"0x14","frame":32,"gate":8},{"tick":18,"kind":"helper-call","vaHex":"0x004dc45c","opcode":"0xbd","summary":"helper-call id=32; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":32},{"tick":18,"kind":"effect-sound","vaHex":"0x004dc478","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 10; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":10,"effectArgsHex":"01 00 0a"},{"tick":18,"kind":"actor-flag","vaHex":"0x004dc47c","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"},{"tick":18,"kind":"actor-frame","vaHex":"0x004dc484","opcode":"0x12","summary":"direct sprite/frame selector write sprite=0x14, frame=3, field +0x28, mode=0x80","spriteHex":"0x14","frame":3,"gate":1},{"tick":19,"kind":"wait","vaHex":"0x004dc48c","opcode":"0xc1","summary":"actor flag barrier mode=1, mask=0x00000002"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:visual-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:direct-frame-spawn"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"smashu:0x23","ownerKey":"smashu","ownerName":"스마슈","skillName":"도주","familyName":"display-table fallback","skillIdHex":"0x23","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[26,27,28,29,26,27,28,29,26,27,28,29,32,32,26,27,28,29,26,27,28,29,26,27,28,29,3,3,26,27,28,29,26,27,28,29,26,27,28,29,30,30,2],"expandedFrameGateSequence":[{"tick":0,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":2,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":6,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052585c"},{"tick":10,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052585c"},{"tick":12,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052585c"},{"tick":14,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052585c"},{"tick":16,"frame":26,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052585c"},{"tick":18,"frame":27,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052585c"},{"tick":20,"frame":28,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052585c"},{"tick":22,"frame":29,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052585c"},{"tick":24,"frame":32,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":26,"frame":32,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":32,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":34,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":36,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":38,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":40,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005258c4"},{"tick":42,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005258c4"},{"tick":44,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005258c4"},{"tick":46,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005258c4"},{"tick":48,"frame":26,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x005258c4"},{"tick":50,"frame":27,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x005258c4"},{"tick":52,"frame":28,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x005258c4"},{"tick":54,"frame":29,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x005258c4"},{"tick":56,"frame":3,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":58,"frame":3,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":64,"frame":26,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":66,"frame":27,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":68,"frame":28,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":70,"frame":29,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":72,"frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052592c"},{"tick":74,"frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052592c"},{"tick":76,"frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052592c"},{"tick":78,"frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052592c"},{"tick":80,"frame":26,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052592c"},{"tick":82,"frame":27,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052592c"},{"tick":84,"frame":28,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052592c"},{"tick":86,"frame":29,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052592c"},{"tick":88,"frame":30,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":90,"frame":30,"gate":6,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":96,"frame":2,"gate":2,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":98,"repeatLoopCount":3,"hitEventCount":3,"hitClassCounts":{"confirmed-result-hit-window":3},"effectWlkNos":[18,18,18],"resultWlkNos":[5,5,5],"soundModel":"effect+result","soundCalls":[{"tick":8,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00525858"},{"tick":16,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00525858"},{"tick":24,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00525858"},{"tick":26,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525878"},{"tick":40,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x005258c0"},{"tick":48,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x005258c0"},{"tick":56,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x005258c0"},{"tick":58,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x005258e0"},{"tick":72,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00525928"},{"tick":80,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00525928"},{"tick":88,"opcode":"0x24","wlkNo":18,"effectArgsHex":"01 00 12","role":"effect/cast cue","vaHex":"0x00525928"},{"tick":90,"opcode":"0xc2","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0,"role":"result normal with alternate operand","vaHex":"0x00525948"}],"helperIds":[17,17,17],"helperFacts":[{"helperId":17,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3f94","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3fc0","frames":["12@2","13@2","14@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":17,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3f94","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3fc0","frames":["12@2","13@2","14@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]},{"helperId":17,"behaviorClass":"multi-frameScript-effect","frameScripts":[{"targetVaHex":"0x004b3f94","startTick":0,"durationGate":6,"stopReason":"destroy/end at 0x004b3fc0","frames":["12@2","13@2","14@2"],"frameCount":3,"loopEvents":[],"displayFlagBlink":false,"blinkFlagFieldHex":null,"blinkFlagMaskHex":null,"blinkSegments":[]}],"directSpawnCount":0,"directSpawnFrames":[],"emitFrames":[],"rootCounterSets":{},"rootBranches":[],"childMotionLoops":[],"interpretation":[],"notes":["multi-frame 0x20 frameScript without display flag blink"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:smashu:0x23","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x0052582c","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"clone-spread-direct","startAnchor":"home","motionKind":"clone-spread","motionTarget":"screen/targets","positionConfidence":"high","positionBucket":"clone-spread","positionBucketLabel":"사방팔방/분신","battleMapPlacementSummary":"시전자 본체보다 분신/분산 배치가 중심이다.","evidenceTier":"explicit-0xbc-position","evidenceTierLabel":"0xbc 위치 opcode 확정","hasExplicitMovementOpcode":true,"positionNotes":["display VM direct placement selector 5 is clone/spread setup"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 4, 10, 1, 1, 3, 1, 1, 1, 1, 1","0xc2 result sound count changes: 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 0, 0, 0, 0","frame count changes: 4, 4, 6, 6, 18, 5, 11, 16, 5, 8, 19, 1, 1, 1, 4","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"movement","vaHex":"0x0052582c","opcode":"0xbc","summary":"direct placement selector=5: screen-size/display-size based fixed placement.","selector":5,"divisor":0,"movementMode":0},{"tick":0,"kind":"actor-write","vaHex":"0x00525830","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":0,"kind":"actor-frame","vaHex":"0x00525838","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":2,"kind":"actor-frame","vaHex":"0x00525840","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":4,"kind":"actor-frame","vaHex":"0x00525848","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":6,"kind":"actor-frame","vaHex":"0x00525850","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":8,"kind":"effect-sound","vaHex":"0x00525858","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":8,"kind":"repeat-loop","vaHex":"0x0052585c","opcode":"0x06","summary":"repeat-loop count=3, target=0x00525838; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x00525838","repeatCount":3},{"tick":8,"kind":"actor-frame","vaHex":"0x00525838","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052585c"},{"tick":10,"kind":"actor-frame","vaHex":"0x00525840","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052585c"},{"tick":12,"kind":"actor-frame","vaHex":"0x00525848","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052585c"},{"tick":14,"kind":"actor-frame","vaHex":"0x00525850","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052585c"},{"tick":16,"kind":"effect-sound","vaHex":"0x00525858","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":1,"repeatSourceVaHex":"0x0052585c"},{"tick":16,"kind":"actor-frame","vaHex":"0x00525838","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052585c"},{"tick":18,"kind":"actor-frame","vaHex":"0x00525840","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052585c"},{"tick":20,"kind":"actor-frame","vaHex":"0x00525848","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052585c"},{"tick":22,"kind":"actor-frame","vaHex":"0x00525850","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052585c"},{"tick":24,"kind":"effect-sound","vaHex":"0x00525858","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":2,"repeatSourceVaHex":"0x0052585c"},{"tick":24,"kind":"actor-write","vaHex":"0x00525864","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":24,"kind":"actor-frame","vaHex":"0x0052586c","opcode":"0x21","summary":"set sprite=0x17, frame=32, gate=2, mode=0","spriteHex":"0x17","frame":32,"gate":2},{"tick":26,"kind":"helper-call","vaHex":"0x00525874","opcode":"0xbd","summary":"helper-call id=17; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":17},{"tick":26,"kind":"result-sound","vaHex":"0x00525878","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":26,"kind":"actor-flag","vaHex":"0x0052587c","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":26,"kind":"actor-flag","vaHex":"0x00525884","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":26,"kind":"wait","vaHex":"0x0052588c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":26,"kind":"actor-frame","vaHex":"0x00525890","opcode":"0x21","summary":"set sprite=0x17, frame=32, gate=6, mode=0","spriteHex":"0x17","frame":32,"gate":6},{"tick":32,"kind":"actor-write","vaHex":"0x00525898","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":32,"kind":"actor-frame","vaHex":"0x005258a0","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":34,"kind":"actor-frame","vaHex":"0x005258a8","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":36,"kind":"actor-frame","vaHex":"0x005258b0","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":38,"kind":"actor-frame","vaHex":"0x005258b8","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":40,"kind":"effect-sound","vaHex":"0x005258c0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":40,"kind":"repeat-loop","vaHex":"0x005258c4","opcode":"0x06","summary":"repeat-loop count=3, target=0x005258a0; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x005258a0","repeatCount":3},{"tick":40,"kind":"actor-frame","vaHex":"0x005258a0","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005258c4"},{"tick":42,"kind":"actor-frame","vaHex":"0x005258a8","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005258c4"},{"tick":44,"kind":"actor-frame","vaHex":"0x005258b0","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005258c4"},{"tick":46,"kind":"actor-frame","vaHex":"0x005258b8","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x005258c4"},{"tick":48,"kind":"effect-sound","vaHex":"0x005258c0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":1,"repeatSourceVaHex":"0x005258c4"},{"tick":48,"kind":"actor-frame","vaHex":"0x005258a0","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x005258c4"},{"tick":50,"kind":"actor-frame","vaHex":"0x005258a8","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x005258c4"},{"tick":52,"kind":"actor-frame","vaHex":"0x005258b0","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x005258c4"},{"tick":54,"kind":"actor-frame","vaHex":"0x005258b8","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x005258c4"},{"tick":56,"kind":"effect-sound","vaHex":"0x005258c0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":2,"repeatSourceVaHex":"0x005258c4"},{"tick":56,"kind":"actor-write","vaHex":"0x005258cc","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":56,"kind":"actor-frame","vaHex":"0x005258d4","opcode":"0x21","summary":"set sprite=0x17, frame=3, gate=2, mode=0","spriteHex":"0x17","frame":3,"gate":2},{"tick":58,"kind":"helper-call","vaHex":"0x005258dc","opcode":"0xbd","summary":"helper-call id=17; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":17},{"tick":58,"kind":"result-sound","vaHex":"0x005258e0","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":58,"kind":"actor-flag","vaHex":"0x005258e4","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":58,"kind":"actor-flag","vaHex":"0x005258ec","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":58,"kind":"wait","vaHex":"0x005258f4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":58,"kind":"actor-frame","vaHex":"0x005258f8","opcode":"0x21","summary":"set sprite=0x17, frame=3, gate=6, mode=0","spriteHex":"0x17","frame":3,"gate":6},{"tick":64,"kind":"actor-write","vaHex":"0x00525900","opcode":"0x12","summary":"add display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":64,"kind":"actor-frame","vaHex":"0x00525908","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2},{"tick":66,"kind":"actor-frame","vaHex":"0x00525910","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2},{"tick":68,"kind":"actor-frame","vaHex":"0x00525918","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2},{"tick":70,"kind":"actor-frame","vaHex":"0x00525920","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2},{"tick":72,"kind":"effect-sound","vaHex":"0x00525928","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12"},{"tick":72,"kind":"repeat-loop","vaHex":"0x0052592c","opcode":"0x06","summary":"repeat-loop count=3, target=0x00525908; handler stores target in object +0x3c and counter in +0x60","targetVaHex":"0x00525908","repeatCount":3},{"tick":72,"kind":"actor-frame","vaHex":"0x00525908","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052592c"},{"tick":74,"kind":"actor-frame","vaHex":"0x00525910","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052592c"},{"tick":76,"kind":"actor-frame","vaHex":"0x00525918","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052592c"},{"tick":78,"kind":"actor-frame","vaHex":"0x00525920","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":1,"repeatSourceVaHex":"0x0052592c"},{"tick":80,"kind":"effect-sound","vaHex":"0x00525928","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":1,"repeatSourceVaHex":"0x0052592c"},{"tick":80,"kind":"actor-frame","vaHex":"0x00525908","opcode":"0x21","summary":"set sprite=0x17, frame=26, gate=2, mode=0","spriteHex":"0x17","frame":26,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052592c"},{"tick":82,"kind":"actor-frame","vaHex":"0x00525910","opcode":"0x21","summary":"set sprite=0x17, frame=27, gate=2, mode=0","spriteHex":"0x17","frame":27,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052592c"},{"tick":84,"kind":"actor-frame","vaHex":"0x00525918","opcode":"0x21","summary":"set sprite=0x17, frame=28, gate=2, mode=0","spriteHex":"0x17","frame":28,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052592c"},{"tick":86,"kind":"actor-frame","vaHex":"0x00525920","opcode":"0x21","summary":"set sprite=0x17, frame=29, gate=2, mode=0","spriteHex":"0x17","frame":29,"gate":2,"repeatIteration":2,"repeatSourceVaHex":"0x0052592c"},{"tick":88,"kind":"effect-sound","vaHex":"0x00525928","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 18; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":18,"effectArgsHex":"01 00 12","repeatIteration":2,"repeatSourceVaHex":"0x0052592c"},{"tick":88,"kind":"actor-write","vaHex":"0x00525934","opcode":"0x12","summary":"sub display/actor field +0x1c, imm=0xfff00000 (-16px)","destHex":"0x1c","immHex":"0xfff00000","immFixed":-16.0},{"tick":88,"kind":"actor-frame","vaHex":"0x0052593c","opcode":"0x21","summary":"set sprite=0x17, frame=30, gate=2, mode=0","spriteHex":"0x17","frame":30,"gate":2},{"tick":90,"kind":"helper-call","vaHex":"0x00525944","opcode":"0xbd","summary":"helper-call id=17; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":17},{"tick":90,"kind":"result-sound","vaHex":"0x00525948","opcode":"0xc2","summary":"WLK id 05 (normal id 05, alt id 14, mode=0)","wlkNo":5,"normalWlkNo":5,"altWlkNo":14,"mode":0},{"tick":90,"kind":"actor-flag","vaHex":"0x0052594c","opcode":"0xad","summary":"actor flag mode=2, mask=0x0000000c","mode":2,"maskHex":"0x0000000c"},{"tick":90,"kind":"actor-flag","vaHex":"0x00525954","opcode":"0xad","summary":"actor flag mode=1, mask=0x00000008","mode":1,"maskHex":"0x00000008"},{"tick":90,"kind":"wait","vaHex":"0x0052595c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},{"tick":90,"kind":"actor-frame","vaHex":"0x00525960","opcode":"0x21","summary":"set sprite=0x17, frame=30, gate=6, mode=0","spriteHex":"0x17","frame":30,"gate":6},{"tick":96,"kind":"movement","vaHex":"0x00525968","opcode":"0xbc","summary":"direct placement selector=0: current battle actor base position; used as return/reset placement.","selector":0,"divisor":0,"movementMode":0},{"tick":96,"kind":"actor-frame","vaHex":"0x0052596c","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=2, mode=0","spriteHex":"0x17","frame":2,"gate":2}],"hitEvents":[{"tick":26,"soundVaHex":"0x00525878","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x0052587c","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00525884","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x0052588c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":58,"soundVaHex":"0x005258e0","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x005258e4","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x005258ec","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x005258f4","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"},{"tick":90,"soundVaHex":"0x00525948","normalWlkNo":5,"altWlkNo":14,"mode":0,"flags":[{"vaHex":"0x0052594c","mode":2,"maskHex":"0x0000000c","summary":"actor flag mode=2, mask=0x0000000c"},{"vaHex":"0x00525954","mode":1,"maskHex":"0x00000008","summary":"actor flag mode=1, mask=0x00000008"}],"waitAfter":{"vaHex":"0x0052595c","opcode":"0xbf","summary":"display/actor busy barrier; waits for active actor/display flags to clear before advancing"},"classification":"confirmed-result-hit-window"}],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","repeat-loop-expanded","0x24-effect/cast-wlk","0xc2-result-wlk","0xbd-helper-call","confirmed-hit-window","caster-position-rule","render:support-or-status","sound:effect+result","helper:multi-frameScript-effect"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"smashu:0x24","ownerKey":"smashu","ownerName":"스마슈","skillName":"방어","familyName":"display-table fallback","skillIdHex":"0x24","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[0],"expandedFrameGateSequence":[{"tick":0,"frame":0,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":8,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[],"resultWlkNos":[],"soundModel":"no-action-wlk","soundCalls":{},"helperIds":[],"helperFacts":[],"helperRole":"unclassified-helper-pattern","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:smashu:0x24","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x00525980","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"no-direct-wlk-support","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 4, 10, 1, 1, 3, 1, 1, 1, 1, 1","0xc2 result sound count changes: 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 0, 0, 0, 0","frame count changes: 4, 4, 6, 6, 18, 5, 11, 16, 5, 8, 19, 1, 1, 1, 4","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x00525980","opcode":"0x21","summary":"set sprite=0x17, frame=0, gate=8, mode=0","spriteHex":"0x17","frame":0,"gate":8},{"tick":8,"kind":"actor-flag","vaHex":"0x00525988","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","caster-position-rule","render:support-or-status","sound:no-action-wlk"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"smashu:0x25","ownerKey":"smashu","ownerName":"스마슈","skillName":"눈요기","familyName":"display-table fallback","skillIdHex":"0x25","levelOrFixed":null,"targetClass":"self","mpCost":0,"hitCount":1,"frameSequence":[2],"expandedFrameGateSequence":[{"tick":0,"frame":2,"gate":8,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":8,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[11],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":11,"effectArgsHex":"01 00 0b","role":"effect/cast cue","vaHex":"0x0052599c"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:smashu:0x25","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x0052599c","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 4, 10, 1, 1, 3, 1, 1, 1, 1, 1","0xc2 result sound count changes: 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 0, 0, 0, 0","frame count changes: 4, 4, 6, 6, 18, 5, 11, 16, 5, 8, 19, 1, 1, 1, 4","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x0052599c","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 11; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":11,"effectArgsHex":"01 00 0b"},{"tick":0,"kind":"actor-frame","vaHex":"0x005259a0","opcode":"0x21","summary":"set sprite=0x17, frame=2, gate=8, mode=0","spriteHex":"0x17","frame":2,"gate":8},{"tick":8,"kind":"actor-flag","vaHex":"0x005259a8","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","caster-position-rule","render:support-or-status","sound:effect-only"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"smashu:0x26","ownerKey":"smashu","ownerName":"스마슈","skillName":"인법·몸감추기","familyName":"display-table fallback","skillIdHex":"0x26","levelOrFixed":null,"targetClass":"self","mpCost":1,"hitCount":1,"frameSequence":[3],"expandedFrameGateSequence":[{"tick":0,"frame":3,"gate":16,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":16,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[22],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":0,"opcode":"0x24","wlkNo":22,"effectArgsHex":"01 00 16","role":"effect/cast cue","vaHex":"0x005259bc"}],"helperIds":[],"helperFacts":[],"helperRole":"cast/effect-wlk-only","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:smashu:0x26","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x005259bc","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 4, 10, 1, 1, 3, 1, 1, 1, 1, 1","0xc2 result sound count changes: 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 0, 0, 0, 0","frame count changes: 4, 4, 6, 6, 18, 5, 11, 16, 5, 8, 19, 1, 1, 1, 4","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"effect-sound","vaHex":"0x005259bc","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 22; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":22,"effectArgsHex":"01 00 16"},{"tick":0,"kind":"actor-frame","vaHex":"0x005259c0","opcode":"0x21","summary":"set sprite=0x17, frame=3, gate=16, mode=0","spriteHex":"0x17","frame":3,"gate":16},{"tick":16,"kind":"actor-flag","vaHex":"0x005259c8","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000003","mode":0,"maskHex":"0x00000003"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","caster-position-rule","render:support-or-status","sound:effect-only"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]},{"recordKey":"smashu:0x27","ownerKey":"smashu","ownerName":"스마슈","skillName":"신격방어","familyName":"display-table fallback","skillIdHex":"0x27","levelOrFixed":null,"targetClass":"self","mpCost":10,"hitCount":1,"frameSequence":[6,4,40,41],"expandedFrameGateSequence":[{"tick":0,"frame":6,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":4,"frame":4,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":8,"frame":40,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null},{"tick":12,"frame":41,"gate":4,"repeatIteration":null,"repeatSourceVaHex":null}],"durationGate":16,"repeatLoopCount":0,"hitEventCount":0,"hitClassCounts":{},"effectWlkNos":[32],"resultWlkNos":[],"soundModel":"effect-only","soundCalls":[{"tick":8,"opcode":"0x24","wlkNo":32,"effectArgsHex":"01 00 20","role":"effect/cast cue","vaHex":"0x005259f0"}],"helperIds":[42],"helperFacts":[{"helperId":42,"behaviorClass":"randomized-child-spawn-stream","frameScripts":[],"directSpawnCount":3,"directSpawnFrames":["90@0","90@1","90@2"],"emitFrames":[90],"rootCounterSets":{"0x90":20},"rootBranches":[{"vaHex":"0x004b6040","fieldHex":"0x90","role":"yield-loop-while-frame-or-phase-counter-nonzero","targetVaHex":"0x004b5fa8","condition":"word conditional branch local-backward-loop if left:display.word[+0x90] != right:imm.word=0x0000 -> 0x004b5fa8","targetSnippet":[{"vaHex":"0x004b5fa8","opcode":"0x07","category":"spawn-child-vm","summary":"spawn child display VM type=2 runner=0x00402321 target=0x004b5f08 into +0x58"},{"vaHex":"0x004b5fb0","opcode":"0x1f","category":"link-child-parent","summary":"link current display object with object in +0x58 (+0xa4/+0xa0)"},{"vaHex":"0x004b5fb4","opcode":"0x12","category":"write","summary":"set display/actor field +0xa8, source +0xa4, mode=0xa0"},{"vaHex":"0x004b5fb8","opcode":"0x12","category":"write","summary":"set display/actor field +0x80, source +0x1c, mode=0xe0"},{"vaHex":"0x004b5fbc","opcode":"0x12","category":"write","summary":"set display/actor field +0x84, source +0x20, mode=0xe0"},{"vaHex":"0x004b5fc0","opcode":"0x12","category":"write","summary":"add display/actor field +0x84, imm=0x00180000 (24px)"},{"vaHex":"0x004b5fc8","opcode":"0x2b","category":"random-range","summary":"rng(range=8) -> +0x58"},{"vaHex":"0x004b5fcc","opcode":"0x10","category":"placement-expr","summary":"byte field op dest:parentActor.byte[+0xe7] = source:display.byte[+0x58]"}]}],"childMotionLoops":[],"interpretation":["static direct-spawn expansion currently exposes 3 child frame events"],"notes":["root loop uses RNG ranges and repeated child display spawns"]}],"helperRole":"visual-helper-with-cast-wlk","renderTrack":"support-or-status","implementationState":"needs-ui/status-effect-policy","effectiveImplementationState":"canonical-confirmed; UI/status policy","semanticNote":"피격 대상이 적이 아니므로 회복/버프/상태 아이콘과 UI 효과 쪽을 분리해야 한다.","canonicalKey":"player:smashu:0x27","canonicalTimelineStatus":"confirmed","canonicalVisualAlignmentStatus":"phase-table-start-confirmed","canonicalAlignmentClass":"start-confirmed","canonicalAlignmentLabel":"시작점 확정","canonicalDisplayVmStartVaHex":"0x005259dc","canonicalDisplayStartSource":"display-table-phase-pointer","canonicalWlkEvidenceStatus":"direct-display-wlk","canonicalHelperBodyOnlyIds":[],"positionClass":"self-support","casterRule":"self-support","startAnchor":"home","motionKind":"support","motionTarget":"self","positionConfidence":"medium","positionBucket":"support","positionBucketLabel":"자기/아군 지원","battleMapPlacementSummary":"적 기준점이 아니라 자기/아군측 지원 위치에서 처리한다.","evidenceTier":"scope-support-position","evidenceTierLabel":"지원 범위 확정","hasExplicitMovementOpcode":false,"positionNotes":["support/self scope keeps caster on allied side"],"familyPatternClass":"hit-count-scaling","familyPatternNotes":["payload effectCount changes: 1, 1, 1, 1, 1, 4, 10, 1, 1, 3, 1, 1, 1, 1, 1","0xc2 result sound count changes: 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 0, 0, 0, 0","frame count changes: 4, 4, 6, 6, 18, 5, 11, 16, 5, 8, 19, 1, 1, 1, 4","repeat-loop가 있어 단순 frameSequence 길이만으로 타수를 판단하면 안 된다."],"timelineEvents":[{"tick":0,"kind":"actor-frame","vaHex":"0x005259dc","opcode":"0x21","summary":"set sprite=0x17, frame=6, gate=4, mode=0","spriteHex":"0x17","frame":6,"gate":4},{"tick":4,"kind":"actor-frame","vaHex":"0x005259e4","opcode":"0x21","summary":"set sprite=0x17, frame=4, gate=4, mode=0","spriteHex":"0x17","frame":4,"gate":4},{"tick":8,"kind":"helper-call","vaHex":"0x005259ec","opcode":"0xbd","summary":"helper-call id=42; handler calls 0x00411730, which dispatches by script[1] through table 0x00454c10","helperId":42},{"tick":8,"kind":"effect-sound","vaHex":"0x005259f0","opcode":"0x24","summary":"effect/cast cue mode=0x01 WLK id 32; handler resolves through 0x0042af73 and stores handle in object +0x58/global 0x0059dd6c","wlkNo":32,"effectArgsHex":"01 00 20"},{"tick":8,"kind":"actor-frame","vaHex":"0x005259f4","opcode":"0x21","summary":"set sprite=0x17, frame=40, gate=4, mode=0","spriteHex":"0x17","frame":40,"gate":4},{"tick":12,"kind":"actor-frame","vaHex":"0x005259fc","opcode":"0x21","summary":"set sprite=0x17, frame=41, gate=4, mode=0","spriteHex":"0x17","frame":41,"gate":4},{"tick":16,"kind":"wait","vaHex":"0x00525a04","opcode":"0xc1","summary":"actor flag barrier mode=0, mask=0x00000002"},{"tick":16,"kind":"actor-flag","vaHex":"0x00525a0c","opcode":"0xad","summary":"actor flag mode=0, mask=0x00000001","mode":0,"maskHex":"0x00000001"}],"hitEvents":[],"patternFacts":["canonical:confirmed","alignment:start-confirmed","actor-frame-sequence","actor-frame-gates","0x24-effect/cast-wlk","0xbd-helper-call","caster-position-rule","render:support-or-status","sound:effect-only","helper:randomized-child-spawn-stream","helper-root-counters"],"policyFlags":["support/status UI policy"],"unresolvedFlags":[]}],"unresolvedRows":[]}
