P+ - Sonic - Action - 0x11e

Entry Script

  1. UnknownEvent { namespace: 0x12, code: 0x0, unk1: 0x0, arguments: [Variable(Variable { memory_type: LongtermAccess, data_type: Int, address: 5 }), Variable(Variable { memory_type: LongtermAccess, data_type: Int, address: 98 })] }
  2. IntVariableSet { variable: LongtermAccessInt(FootstoolCount), value: 16 }
  3. IntVariableSet { variable: LongtermAccessInt (0x63), value: 0 }
  4. CallEveryFrame { thread_id: 9, script: 0x2bf44 }
  5. UnknownEvent { namespace: 0x8, code: 0x2, unk1: 0x0, arguments: [Value(2)] }
  6. CreateInterrupt { interrupt_id: None, action: 0x121, requirement: (OnGround) }
  7. PreviousInterruptAddRequirement(TouchingAFloorWallOrCeiling value(4))
  8. PreviousInterruptAddRequirement((InternalConstantInt(CharacterDirection) GreaterThan scalar(0)))
  9. CreateInterrupt { interrupt_id: None, action: 0x121, requirement: (OnGround) }
  10. PreviousInterruptAddRequirement(TouchingAFloorWallOrCeiling value(2))
  11. PreviousInterruptAddRequirement((InternalConstantInt(CharacterDirection) LessThan scalar(0)))
  12. CreateInterrupt { interrupt_id: None, action: 0x11b, requirement: ((InternalConstantInt(HorizontalCharacterVelocity) LessThan scalar(0.25))) }
  13. PreviousInterruptAddRequirement((InternalConstantInt(VerticalCharacterVelocity) LessThan scalar(-0.5)))
  14. if (BoolIsTrue RandomAccessBool(SpecialsMovement))
    1. CreateInterrupt { interrupt_id: None, action: 0x11f, requirement: (OnGround) }
    2. CreateInterrupt { interrupt_id: None, action: 0x11b, requirement: ((RandomAccessInt(ThrowDataParam2) LessThan scalar(50))) }
    3. PreviousInterruptAddRequirement(InAir)
    4. SetEdgeSlide(Airbourne)
    5. UnknownEvent { namespace: 0x9, code: 0x0, unk1: 0x0, arguments: [Value(2)] }
    6. SetAirGround(108)
    7. ChangeSubactionRestartFrame(SpecialSDashLw_1)
  15. else
    1. IntVariableSet { variable: LongtermAccessInt (0x60), value: 0 }
    2. UnknownEvent { namespace: 0x12, code: 0x2, unk1: 0x0, arguments: [Variable(Variable { memory_type: LongtermAccess, data_type: Int, address: 95 }), Variable(Variable { memory_type: RandomAccess, data_type: Int, address: 3 })] }
    3. CreateInterrupt { interrupt_id: None, action: 0x11a, requirement: (ButtonHeld value(3)) }
    4. PreviousInterruptAddRequirement(OnGround)
    5. CreateInterrupt { interrupt_id: None, action: 0x11a, requirement: ((RandomAccessInt(ThrowDataParam2) LessThanOrEqual scalar(0))) }
    6. PreviousInterruptAddRequirement(OnGround)
    7. CreateInterrupt { interrupt_id: None, action: 0x120, requirement: ((InternalConstantInt(ControlStickXAxisRelative) LessThanOrEqual InternalConstantInt (0xc31))) }
    8. PreviousInterruptAddRequirement(OnGround)
    9. Subroutine(0x1c038)
    10. loop Infinite times:
      1. if (OnGround)
        1. BoolVariableSetFalse { variable: LongtermAccessBool (0x70) }
        2. BoolVariableSetFalse { variable: LongtermAccessBool (0x71) }
        3. BoolVariableSetFalse { variable: LongtermAccessBool (0x7a) }
        4. BoolVariableSetFalse { variable: LongtermAccessBool (0x7b) }
        5. IntVariableSet { variable: LongtermAccessInt(JumpsUsed), value: 0 }
        6. ChangeHurtBoxStateAll { state: Normal }
        7. SetEdgeSlide(StayOn)
        8. SetAirGround(107)
        9. UnknownEvent { namespace: 0x4, code: 0x2, unk1: 0x0, arguments: [Requirement { flip: false, ty: InAir }] }
      2. else
        1. SetEdgeSlide(Airbourne)
        2. SetAirGround(108)
        3. ChangeSubactionRestartFrame(SpecialSDashLw)
        4. UnknownEvent { namespace: 0x4, code: 0x2, unk1: 0x0, arguments: [Requirement { flip: false, ty: OnGround }] }
      3. LoopRest

Exit Script

  1. if ((InternalConstantInt(CurrentAction) Equal scalar(12)))
    1. if (not(ThreadIsNull value(7)))
      1. RemoveIndependentSubroutine { thread_id: 7 }
    2. SetIndependentSubroutineThreadType { thread_id: 7, thread_type: 16 }
    3. IndependentSubroutine { thread_id: 7, script: 0x2b694 }
  2. else
    1. UnknownEvent { namespace: 0x12, code: 0x0, unk1: 0x0, arguments: [Variable(Variable { memory_type: LongtermAccess, data_type: Int, address: 98 }), Variable(Variable { memory_type: LongtermAccess, data_type: Int, address: 5 })] }