actor GyroBootsWep_NormalBar : NormalBar{args 138,117}
// actor GyroBootsWep_ScriptBar : ScriptBar{}

actor GyroBootsWep : BaseMM8BDMWep
{
Weapon.AmmoUse 2
Weapon.AmmoGive 28
Weapon.SlotNumber 7
Inventory.Pickupmessage "$PU_GYROBOOTS"
Obituary "$OB_GYROBOOTS"
Tag "$TAG_GYROBOOTS"
weapon.ammotype "GyroBootsAmmo"
inventory.icon "GYRBICON"
States
{
SpawnLoop:
GYRB A -1
loop
Ready:
GYOB B 0 ACS_NamedExecuteWithResult("core_weaponcolor",CLR_GYROBOOTS)
GYOB B 1 A_WeaponReady
Goto Ready+1
Deselect:
GYOB B 0 
goto DeselectSwap
Select:
GYOB B 0 
goto SelectSwap
Fire:
GYOB B 0 A_JumpIfNoAmmo("NoAmmo")
GYOB B 1 A_GiveInventory("WeaponCharge", 1 + CallACS("core_checkrune", RUNE_RAGE))
// GYOB B 0 A_PlaySoundEx("misc/darkleap","Weapon")
GYOB B 0 A_TakeInventory("GyroBootsAmmo",4,TIF_NOTAKEINFINITE)
GYOB CD 3
TNT1 A 0 A_PlaySoundEx("weapons/gyrobootsactivate","Weapon")
GYOB B 0 A_SpawnItemEx("GyroBoots1",0,0,0,0)
GYOB B 0 A_GiveInventory("GyroBootsCharge",120)
JRBM B 0 A_JumpIf(CallACS("core_CheckFooting_ThruPlayer"),"SpinStart")
GYOB H 0 A_GiveInventory("GyroBootsThrust", 1)

SpinStart:
GYOB HIJ 1
Spin:
GYOB E 1
TNT1 A 0 A_GiveInventory("GyroBootsPowerup",1)
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_SpawnItemEX("GyroBootsSideCheck",0,0,28,0,0,0,0)
TNT1 A 0 A_SpawnItemEX("GyroBootsVerticalCheck",0,0,-32,0,0,0,0)
TNT1 A 0 A_JumpIfInventory("CutterFlag", 40, "Stage2")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
GYOB E 1 
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_JumpIfInventory("CutterFlag", 40, "Stage2")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
GYOB E 1 
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_JumpIfInventory("CutterFlag", 40, "Stage2")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
TNT1 A 0 A_GiveInventory("CutterFlag", 1)

GYOB F 1
TNT1 A 0 A_GiveInventory("GyroBootsPowerup",1)
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_SpawnItemEX("GyroBootsSideCheck",0,0,28,0,0,0,0)
TNT1 A 0 A_SpawnItemEX("GyroBootsVerticalCheck",0,0,-32,0,0,0,0)
TNT1 A 0 A_JumpIfInventory("CutterFlag", 40, "Stage2")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
GYOB F 1 
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_JumpIfInventory("CutterFlag", 40, "Stage2")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
GYOB F 1 
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_JumpIfInventory("CutterFlag", 40, "Stage2")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)

GYOB G 1
TNT1 A 0 A_GiveInventory("GyroBootsPowerup",1)
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_SpawnItemEX("GyroBootsSideCheck",0,0,28,0,0,0,0)
TNT1 A 0 A_SpawnItemEX("GyroBootsVerticalCheck",0,0,-32,0,0,0,0)
TNT1 A 0 A_JumpIfInventory("CutterFlag", 40, "Stage2")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
GYOB G 1 
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_JumpIfInventory("CutterFlag", 40, "Stage2")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
GYOB G 1 
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_JumpIfInventory("CutterFlag", 40, "Stage2")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
loop

Stage2:
TBLH A 0 A_SpawnItemEx("GyroBoots2",0,0,0,0)
Spin2:
GYOB K 1
TNT1 A 0 A_GiveInventory("GyroBootsPowerup",1)
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_SpawnItemEX("GyroBootsSideCheck",0,0,28,0,0,0,0)
TNT1 A 0 A_SpawnItemEX("GyroBootsVerticalCheck",0,0,-32,0,0,0,0)
TNT1 A 0 A_JumpIfInventory("CutterFlag", 80, "Stage3")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
GYOB K  1 
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_JumpIfInventory("CutterFlag", 80, "Stage3")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
GYOB K  1 
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_JumpIfInventory("CutterFlag", 80, "Stage3")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)

GYOB L 1
TNT1 A 0 A_GiveInventory("GyroBootsPowerup",1)
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_SpawnItemEX("GyroBootsSideCheck",0,0,28,0,0,0,0)
TNT1 A 0 A_SpawnItemEX("GyroBootsVerticalCheck",0,0,-32,0,0,0,0)
TNT1 A 0 A_JumpIfInventory("CutterFlag", 80, "Stage3")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
GYOB L  1 
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_JumpIfInventory("CutterFlag", 80, "Stage3")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
GYOB L  1 
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_JumpIfInventory("CutterFlag", 80, "Stage3")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)

GYOB M 1
TNT1 A 0 A_GiveInventory("GyroBootsPowerup",1)
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_SpawnItemEX("GyroBootsSideCheck",0,0,28,0,0,0,0)
TNT1 A 0 A_SpawnItemEX("GyroBootsVerticalCheck",0,0,-32,0,0,0,0)
TNT1 A 0 A_JumpIfInventory("CutterFlag", 80, "Stage3")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
GYOB M 1 
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_JumpIfInventory("CutterFlag", 80, "Stage3")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
GYOB M 1 
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_JumpIfInventory("CutterFlag", 80, "Stage3")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
loop

Stage3:
TBLH A 0 A_SpawnItemEx("GyroBoots3",0,0,0,0)
Spin3:
GYOB N 1
TNT1 A 0 A_GiveInventory("GyroBootsPowerup",1)
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_SpawnItemEX("GyroBootsSideCheck",0,0,28,0,0,0,0)
TNT1 A 0 A_SpawnItemEX("GyroBootsVerticalCheck",0,0,-32,0,0,0,0)
TNT1 A 0 A_JumpIfInventory("CutterFlag", 120, "End")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
GYOB N 1 
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_JumpIfInventory("CutterFlag", 120, "End")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
GYOB N 1 
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_JumpIfInventory("CutterFlag", 120, "End")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)

GYOB O 1
TNT1 A 0 A_GiveInventory("GyroBootsPowerup",1)
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_SpawnItemEX("GyroBootsSideCheck",0,0,28,0,0,0,0)
TNT1 A 0 A_SpawnItemEX("GyroBootsVerticalCheck",0,0,-32,0,0,0,0)
TNT1 A 0 A_JumpIfInventory("CutterFlag", 120, "End")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
GYOB O 1 
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_JumpIfInventory("CutterFlag", 120, "End")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
GYOB O 1 
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_JumpIfInventory("CutterFlag", 120, "End")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)

GYOB P 1
TNT1 A 0 A_GiveInventory("GyroBootsPowerup",1)
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_SpawnItemEX("GyroBootsSideCheck",0,0,28,0,0,0,0)
TNT1 A 0 A_SpawnItemEX("GyroBootsVerticalCheck",0,0,-32,0,0,0,0)
TNT1 A 0 A_JumpIfInventory("CutterFlag", 120, "End")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
GYOB P 1 
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_JumpIfInventory("CutterFlag", 120, "End")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
GYOB P 1 
TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
TNT1 A 0 A_JumpIfInventory("CutterFlag", 120, "End")
TNT1 A 0 A_GiveInventory("CutterFlag", 1)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 1)
loop

End:
JRBM B 0
JRBM B 0 A_JumpIf(CallACS("core_CheckFooting_ThruPlayer"),"End2")
GYOB H 0 A_GiveInventory("GyroBootsThrust", 1)

End2:
TNT1 A 0 A_TakeInventory("CutterFlag", 999)
TNT1 A 0 A_TakeInventory("GyroBootsCharge", 999)
GYOB QRSTU 1
TNT1 A 6
GYOB DCB 3
TBLH A 0 A_Refire
Goto Ready+1

Goto Ready+1

NoAmmo:
TBLH A 1 ACS_NamedExecuteAlways("core_noammo",0)
TBLH A 0 A_Refire
Goto Ready+1
}
}

actor GyroBootsAmmo : Ammo
{
inventory.amount 1
inventory.maxamount 28
+INVENTORY.IGNORESKILL
}

actor GyroBootsCharge : Inventory
{
inventory.amount 1
inventory.maxamount 120
+INVENTORY.IGNORESKILL
}

actor GyroBoots1 : ProjSpawnFuncActor
{
+DONTREFLECT
Radius 12
Height 12
scale 2.5
speed 0
damage (0)
States
{
Spawn:
TBLO B 1
Spawnloop:
GYBT AAA 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag", 40, "Death")
GYBT BBB 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag", 40, "Death")
GYBT CCC 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag", 40, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag", 0, "Death")
// [Trill] Possession fix + extra online desync failsafe
TNT1 A 35 A_JumpIfInTargetInventory("GyroBootsCharge", 1, "Spawnloop")
stop
Death:
TNT1 A 1
stop
}
}

actor GyroBoots2 : ProjSpawnFuncActor
{
+DONTREFLECT
Translation "117:117=180:180", "108:108=220:220", "138:138=228:228"
Radius 12
Height 12
scale 2.5
speed 0
damage (0)
States
{
Spawn:
TBLO B 1
// TBLO B 0 A_PlaySoundEx("weapons/mm9/tornadoblowfire","Weapon")
Spawnloop:
GYBT AAA 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag", 80, "Death")
GYBT BBB 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag", 80, "Death")
GYBT CCC 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag", 80, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag", 0, "Death")
// [Trill] Possession fix + extra online desync failsafe
TNT1 A 35 A_JumpIfInTargetInventory("GyroBootsCharge", 1, "Spawnloop")
stop
Death:
TNT1 A 1
stop
}
}

actor GyroBoots3 : ProjSpawnFuncActor
{
+DONTREFLECT
Translation "117:117=5:5", "108:108=95:95", "138:138=4:4"
Radius 12
Height 12
scale 2.5
speed 0
damage (0)
States
{
Spawn:
TBLO B 1
// TBLO B 0 A_PlaySoundEx("weapons/mm9/tornadoblowfire","Weapon")
Spawnloop:
GYBT AAA 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag", 119, "Death")
GYBT BBB 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag", 119, "Death")
GYBT CCC 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_INTERPOLATE|WARPF_NOCHECKPOSITION)
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag", 119, "Death")
TNT1 A 0 A_JumpIfInTargetInventory("CutterFlag", 0, "Death")
// [Trill] Possession fix + extra online desync failsafe
TNT1 A 35 A_JumpIfInTargetInventory("GyroBootsCharge", 1, "Spawnloop")
stop
Death:
TNT1 A 1
stop
}
}

actor GyroBootsSideCheck : BasicProjectile
{
    PROJECTILE
    Obituary "$OB_GYROBOOTS"
    Damagetype "GyroBoots"
    height 16
    radius 44
    speed 32
    Damage (CallACS("burst_cbm_damage",35))
	var int user_PierceRipper;

    States
    {
    Spawn:
        TNT1 A 0
        TNT1 A 1
        stop
	XDeath:
		TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
        TNT1 A 0 A_GiveToTarget("GyroBootsHitSelf", 1)
    Death:
        TNT1 A 0 A_GiveToTarget("GyroBootsThrust", 1)
        stop
    }
}

actor GyroBootsVerticalCheck : BasicProjectile
{
    PROJECTILE
    Obituary "$OB_GYROBOOTS2"
    Damagetype "GyroBoots"
    height 16
    radius 16
    speed 32
    Damage (CallACS("burst_cbm_damage",45))
	var int user_PierceRipper;

    States
    {
    Spawn:
        TNT1 A 0
        TNT1 A 1
        stop
	XDeath:
		TNT1 A 0 A_SpawnItemEx("PropBlowerEffect")
        TNT1 A 0 A_GiveToTarget("GyroBootsThrust", 1)
		TNT1 A 0 A_PlaySoundEx("weapons/gyrobootsstomp","SoundSlot7")
    Death:
        TNT1 A 0 
        stop
    }
}

actor GyroBootsPowerup : PowerSpeed
{
Powerup.duration 5
Speed 1.3
Inventory.amount 1
Inventory.maxamount 1
}

actor GyroBootsThrust : CustomInventory
{
States
{
Pickup:
TNT1 A 0
TNT1 A 1 ThrustThingZ(0,45,0,0)
TNT1 A 0 A_TakeInventory("JumpCancler",1)
stop
}
}

actor GyroBootsHit : CustomInventory
{
    States
    {
    Pickup:
        TNT1 A 0 A_SpawnItemEx("GyroBootsHitGiver")
        stop
    }
}

actor GyroBootsHitGiver : BasicWatcher
{
    States
    {
    Spawn:
        TNT1 AA 0 A_GiveToTarget("GyroBootsEffect", 1)
        stop
    }
}

actor GyroBootsEffect : CustomInventory
{
    States
    {
    Pickup:
        TNT1 A 0 ACS_NamedExecuteWithResult("core_knockback", 10, 0, false, AAPTR_TARGET)
        stop
    }
}

actor GyroBootsHitSelf : CustomInventory
{
    States
    {
    Pickup:
        TNT1 A 0 A_SpawnItemEx("GyroBootsHitSelfGiver")
        stop
    }
}

actor GyroBootsHitSelfGiver : BasicWatcher
{
    States
    {
    Spawn:
        TNT1 AA 0 A_GiveToTarget("GyroBootsSelfEffect", 1)
        stop
    }
}

actor GyroBootsSelfEffect : CustomInventory
{
    States
    {
    Pickup:
        TNT1 A 0 ACS_NamedExecuteWithResult("core_knockback", 15, 0, false, AAPTR_TARGET)
        stop
    }
}

actor GyroBootsProtect : PowerProtection
{
Powerup.Duration 10
DamageFactor "GyroBoots", 0.0
}

actor GyroBootsHitDeath : CustomInventory
{
    States
    {
    Pickup:
        TNT1 A 0 A_SpawnItemEx("GyroBootsHitGiverDeath")
        stop
    }
}

actor GyroBootsHitGiverDeath : BasicWatcher
{
    States
    {
    Spawn:
        TNT1 AA 0 A_GiveToTarget("GyroBootsEffectDeath", 1)
        stop
    }
}

actor GyroBootsEffectDeath : CustomInventory
{
    States
    {
    Pickup:
        TNT1 A 0 ACS_NamedExecuteWithResult("core_knockback", 60, 50, false, AAPTR_TARGET)
        stop
    }
}
