P+ - Knuckles - Action - 0x113 SpecialS

Entry Script

  1. IntVariableSet { variable: RandomAccessInt(ThrowDataParam1), value: 0 }
  2. IntVariableSet { variable: RandomAccessInt(ThrowDataParam2), value: 50 }
  3. IntVariableSet { variable: RandomAccessInt(ThrowDataParam3), value: 0 }
  4. IntVariableSet { variable: RandomAccessInt (0x5), value: 0 }
  5. if (OnGround)
    1. CreateInterrupt { interrupt_id: None, action: 0x118, requirement: (CharacterExists) }
  6. else
    1. if ((LongtermAccessInt (0x59) Equal scalar(0)))
      1. else
        1. CreateInterrupt { interrupt_id: None, action: 0x118, requirement: (CharacterExists) }
    2. CreateInterrupt { interrupt_id: None, action: 0x118, requirement: (ButtonPress value(3)) }
    3. PreviousInterruptAddRequirement(ButtonHeld value(0))
    4. PreviousInterruptAddRequirement((RandomAccessInt(ThrowDataParam1) GreaterThanOrEqual scalar(0)))
    5. PreviousInterruptAddRequirement((RandomAccessInt(ThrowDataParam1) LessThanOrEqual scalar(2)))
    6. CallEveryFrame { thread_id: 9, script: 0x26a20 }
    7. loop Infinite times:
      1. UnknownEvent { namespace: 0x0, code: 0x10, unk1: 0x0, arguments: [Value(10000), Variable(Variable { memory_type: RandomAccess, data_type: Int, address: 2 })] }
      2. Case(0)
      3. SetAirGround(0)
      4. SetEdgeSlide(Airbourne)
      5. ChangeSubactionRestartFrame(SpecialSGlideStartAir)
      6. UnknownEvent { namespace: 0x4, code: 0x2, unk1: 0x0, arguments: [Requirement { flip: false, ty: AnimationEnd }] }
      7. UnknownEvent { namespace: 0x4, code: 0x2, unk1: 0x0, arguments: [Requirement { flip: false, ty: OnGround }] }
      8. UnknownEvent { namespace: 0x4, code: 0x2, unk1: 0x0, arguments: [Requirement { flip: false, ty: ButtonHeld }, Value(0)] }
      9. UnknownEvent { namespace: 0x4, code: 0x3, unk1: 0x0, arguments: [Requirement { flip: false, ty: ButtonHeld }, Value(4)] }
      10. Case(1)
      11. CreateInterrupt { interrupt_id: None, action: 0x117, requirement: ((InternalConstantInt(ControlStickXAxisRelativeReverse) LessThanOrEqual InternalConstantInt (0xc3d))) }
      12. PreviousInterruptAddRequirement(TouchingAFloorWallOrCeiling value(6))
      13. PreviousInterruptAddRequirement(not(BoolIsTrue LongtermAccessBool (0x46)))
      14. SetAirGround(10)
      15. ChangeSubactionRestartFrame(SpecialSGlideLoop)
      16. UnknownEvent { namespace: 0x4, code: 0x2, unk1: 0x0, arguments: [Requirement { flip: false, ty: ButtonPress }, Value(1)] }
      17. UnknownEvent { namespace: 0x4, code: 0x2, unk1: 0x0, arguments: [Requirement { flip: false, ty: Comparison }, Variable(Variable { memory_type: RandomAccess, data_type: Int, address: 3 }), Value(1), Scalar(0.0)] }
      18. UnknownEvent { namespace: 0x4, code: 0x2, unk1: 0x0, arguments: [Requirement { flip: false, ty: Comparison }, Variable(Variable { memory_type: InternalConstant, data_type: Int, address: 1011 }), Value(1), Variable(Variable { memory_type: InternalConstant, data_type: Int, address: 3121 })] }
      19. UnknownEvent { namespace: 0x4, code: 0x3, unk1: 0x0, arguments: [Requirement { flip: false, ty: Comparison }, Variable(Variable { memory_type: RandomAccess, data_type: Int, address: 4 }), Value(0), Scalar(2.0)] }
      20. UnknownEvent { namespace: 0x4, code: 0x2, unk1: 0x0, arguments: [Requirement { flip: false, ty: OnGround }] }
      21. Case(2)
      22. SetAirGround(10)
      23. ChangeSubactionRestartFrame(SpecialSGlideTurn)
      24. UnknownEvent { namespace: 0x4, code: 0x2, unk1: 0x0, arguments: [Requirement { flip: false, ty: OnGround }] }
      25. UnknownEvent { namespace: 0x4, code: 0x2, unk1: 0x0, arguments: [Requirement { flip: false, ty: AnimationEnd }] }
      26. Case(3)
      27. CreateInterrupt { interrupt_id: None, action: LandingLight, requirement: (OnGround) }
      28. CreateInterrupt { interrupt_id: None, action: FallAerial, requirement: (AnimationEnd) }
      29. ChangeSubactionRestartFrame(SpecialSGlideEnd)
      30. Case(4)
      31. Subroutine(0xd698)
      32. SetAirGround(6)
      33. SetEdgeSlide(Unknown(2))
      34. ChangeSubactionRestartFrame(SpecialSGlideLanding_1)
      35. EndSwitch
      36. LoopRest
      37. UnknownEvent { namespace: 0x0, code: 0x10, unk1: 0x0, arguments: [Value(10000), Variable(Variable { memory_type: RandomAccess, data_type: Int, address: 2 })] }
      38. Case(0)
      39. if (AnimationEnd)
        1. IntVariableSet { variable: RandomAccessInt(ThrowDataParam1), value: 1 }
      40. if (OnGround)
        1. IntVariableSet { variable: RandomAccessInt(ThrowDataParam1), value: 4 }
      41. if (ButtonHeld value(0))
        1. IfStatementAnd (ButtonHeld value(4))
        2. CreateInterrupt { interrupt_id: None, action: 0x118, requirement: (CharacterExists) }
      42. Case(1)
      43. if (ButtonPress value(1))
        1. IfStatementOr ((RandomAccessInt(ThrowDataParam2) LessThanOrEqual scalar(0)))
        2. IntVariableSet { variable: RandomAccessInt(ThrowDataParam1), value: 3 }
      44. if (OnGround)
        1. IntVariableSet { variable: RandomAccessInt(ThrowDataParam1), value: 4 }
      45. if ((InternalConstantInt(ControlStickXAxisRelative) LessThanOrEqual InternalConstantInt (0xc31)))
        1. IfStatementAnd ((RandomAccessInt(ThrowDataParam3) LessThan scalar(2)))
        2. IntVariableSet { variable: RandomAccessInt(ThrowDataParam1), value: 2 }
      46. Case(2)
      47. if (AnimationEnd)
        1. IntVariableSet { variable: RandomAccessInt(ThrowDataParam1), value: 1 }
      48. if (OnGround)
        1. IntVariableSet { variable: RandomAccessInt(ThrowDataParam1), value: 4 }
      49. EndSwitch

    Exit Script

    1. UnknownEvent { namespace: 0x0, code: 0x10, unk1: 0x0, arguments: [Value(10000), Variable(Variable { memory_type: InternalConstant, data_type: Int, address: 20001 })] }
    2. Case(279)
    3. UnknownEvent { namespace: 0x0, code: 0x18, unk1: 0x0, arguments: [] }
    4. UnknownEvent { namespace: 0x0, code: 0x12, unk1: 0x0, arguments: [] }
    5. ModelChanger { reference: 0, switch_index: 1, bone_group_index: 0 }
    6. EndSwitch