LXP2.1 - Ganon-Mage - Subaction - AttackAirB

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 |

Stats

IASA: None
Auto Cancel Window: 1-13, 25-66
Auto Cancel Lag: 5
Landing Lag: 25
Landing Lag (L-Cancel): 12
Hitboxes active: 13-24
Hitbox set 0 hits: 13
Subaction Index: 0x1e

Hitboxes

Move staling reduces damage up to 45%. Move staling also reduces final knockback, shieldstun and hitlag because damage is used in their formulas.

Frame:13

Set ID Dmg BKB KBG Angle Effect Sound Clang Hitlag Mult Shield Dmg Shieldstun Hitlag Targets
0 0 13 40 104 361 Darkness Burn false 1.5 8 7 10

Frames:14-24

Set ID Dmg BKB KBG Angle Effect Sound Clang Shield Dmg Shieldstun Hitlag Targets
0 0 9 45 53 398 Darkness Burn false 8 6 5

Scripts

Main

  1. RemoveFlashEffect
  2. AsyncWait(2.0)
  3. FrameSpeedModifier { multiplier: 0.65, unk: 0 }
  4. AsyncWait(6.0)
  5. FrameSpeedModifier { multiplier: 1.0, unk: 0 }
  6. AsyncWait(9.0)
  7. CreateHitBox(HitBoxArguments { bone_index: 66, hitbox_id: 0, set_id: 0, damage: Constant(13.0), trajectory: 361, wdsk: 0, kbg: 104, shield_damage: 8, bkb: 40, size: 5.0, x_offset: 0.0, y_offset: 0.0, z_offset: 0.0, tripping_rate: 0.0, hitlag_mult: 1.5, sdi_mult: 1.0, effect: Darkness, unk1: false, sound_level: 2, unk2: false, sound: Burn, unk3: 0, ground: true, aerial: true, unk4: 0, sse_type: Hand, clang: false, unk5: true, direct: true, unk6: 0 })
  8. AsyncWait(10.0)
  9. FrameSpeedModifier { multiplier: 0.68, unk: 0 }
  10. BoolVariableSetTrue { variable: RandomAccessBool(EnableLandingLag) }
  11. AsyncWait(10.4)
  12. CreateHitBox(HitBoxArguments { bone_index: 66, hitbox_id: 0, set_id: 0, damage: Constant(9.0), trajectory: 398, wdsk: 0, kbg: 53, shield_damage: 8, bkb: 45, size: 4.0, x_offset: 0.0, y_offset: 0.0, z_offset: 0.0, tripping_rate: 0.0, hitlag_mult: 1.0, sdi_mult: 1.0, effect: Darkness, unk1: false, sound_level: 2, unk2: false, sound: Burn, unk3: 0, ground: true, aerial: true, unk4: 0, sse_type: Hand, clang: false, unk5: true, direct: true, unk6: 0 })
  13. AsyncWait(18.0)
  14. DeleteAllHitBoxes
  15. if (HasAFloorBelowThePlayer scalar(20000))
    1. IfStatementAnd (not(HasAFloorBelowThePlayer scalar(40)))
    2. IntVariableSubtract { variable: LongtermAccessInt (0x5c), value: 9 }
  16. else
    1. if (HasAFloorBelowThePlayer scalar(40.1))
      1. IfStatementAnd (not(HasAFloorBelowThePlayer scalar(0)))
      2. IntVariableSubtract { variable: LongtermAccessInt (0x5c), value: 1 }
    2. else
      1. IntVariableSubtract { variable: LongtermAccessInt (0x5c), value: 9 }
  17. if ((LongtermAccessInt (0x5c) LessThanOrEqual value(0)))
    1. BoolVariableSetTrue { variable: LongtermAccessFloat (0x51) }
  18. BoolVariableSetFalse { variable: RandomAccessBool(EnableLandingLag) }
  19. AsyncWait(28.0)
  20. loop 17 times:
    1. if (ButtonPress value(0))
      1. IfStatementAnd (not(Unknown(54) value(24)))
      2. IntVariableSet { variable: LongtermAccessInt(JumpsUsed), value: 2 }
      3. if ((InternalConstantInt(ControlStickXAxisAbsolute) LessThan InternalConstantInt (0xc5c)))
        1. IfStatementAnd ((InternalConstantInt(ControlStickYAxisAbsolute) LessThan InternalConstantInt (0xc5d)))
        2. ChangeSubactionRestartFrame(CliffCatchPortal)
        3. UnknownEvent { namespace: 0xc, code: 0x1c, unk1: 0x0, arguments: [Value(2), Value(14)] }
      4. else
        1. if (StickDirectionPressed)
          1. if ((InternalConstantInt(ControlStickXAxisRelative) GreaterThanOrEqual scalar(0)))
            1. ChangeSubactionRestartFrame(LandingFallSpecial)
            2. UnknownEvent { namespace: 0xc, code: 0x1c, unk1: 0x0, arguments: [Value(2), Value(15)] }
          2. else
            1. ChangeSubactionRestartFrame(AttackAirB)
            2. UnknownEvent { namespace: 0xc, code: 0x1c, unk1: 0x0, arguments: [Value(2), Value(16)] }
        2. else
          1. if ((InternalConstantInt(ControlStickYAxis) GreaterThanOrEqual scalar(0)))
            1. ChangeSubactionRestartFrame(AttackAirHi)
            2. UnknownEvent { namespace: 0xc, code: 0x1c, unk1: 0x0, arguments: [Value(2), Value(17)] }
          2. else
            1. ChangeSubactionRestartFrame(AttackAirLw)
            2. UnknownEvent { namespace: 0xc, code: 0x1c, unk1: 0x0, arguments: [Value(2), Value(18)] }
      5. DisableInterruptGroup(AirSpecial)
      6. DisableInterrupt(10146)
      7. DisableInterrupt(10148)
      8. DisableInterrupt(10149)
      9. EnableInterrupt(10028)
      10. UnknownEvent { namespace: 0x4, code: 0x1, unk1: 0x0, arguments: [Value(22), Requirement { flip: false, ty: AnimationEnd }] }
    2. SyncWait(1.0)
  21. CreateInterrupt { interrupt_id: None, action: 0x120, requirement: (not(BoolIsTrue LongtermAccessFloat (0x51))) }

GFX

  1. Goto(AttackAirB_1 GFX 0x53770)

SFX

  1. Goto(AttackAirB_1 SFX 0x51e20)

Other

  1. BoolVariableSetFalse { variable: LongtermAccessFloat (0x51) }
  2. loop Infinite times:
    1. if (ButtonPress value(2))
      1. IfStatementOr (ButtonRelease value(2))
      2. BoolVariableSetTrue { variable: LongtermAccessFloat (0x51) }
      3. IntVariableSet { variable: LongtermAccessInt (0x63), value: 0 }
    2. SyncWait(0.1)
    3. CreateInterrupt { interrupt_id: None, action: 0x120, requirement: (AnimationEnd) }
    4. PreviousInterruptAddRequirement(not(BoolIsTrue LongtermAccessFloat (0x51)))