actor GyroAttackBoss : BaseMM8BDMWep_CBM 
{
tag "$TAGC_5D"
dropitem "GyroAttackWepCDropped"
Weapon.AmmoUse 0
Weapon.AmmoGive 56
Obituary "$OB_GYROATTACK"
weapon.ammotype "GiveItAWhirlAmmo"
States
{
Spawn:
C_05 D 1
loop
Ready:
GYAR A 0 ACS_ExecuteAlways(998,0,DYE_GYROMAN)
GYAR A 0 A_GunFlash
goto Ready2
Ready2:
GYAR A 0 A_JumpIfInventory("GyroTrigger2", 1, "Ready3")
//GYAR A 0 //A_JumpIfInventory("GiveItAWhirlAmmo",1,"Ready2HasAmmo")
GYAR A 5 A_WeaponReady//(8)
GYAR A 0 A_GiveInventory("GiveItAWhirlAmmo",1)
loop
Ready2HasAmmo:
GYAR A 5 A_WeaponReady
GYAR A 0 A_GiveInventory("GiveItAWhirlAmmo",1)
Goto Ready2
Ready3:
GYAR A 1 A_WeaponReady
Goto Ready2

Deselect:
GYAR A 0 //SetPlayerProperty(0,0,3)
GYAR A 0 A_TakeInventory("GyroTrigger",999)
GYAR A 0 A_TakeInventory("GyroTrigger2",999)
GYAR AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
GYAR A 1 A_Lower
goto Deselect+3
Select:
GYAR AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
GYAR A 1 A_Raise
Loop

Fire:
//GYAR A 0 A_JumpIfInventory("GyroTrigger2", 1, "Fire2")
GYAR B 2 Offset(1,32)A_GiveInventory("GyromanMain_CI",1)
GYAR B 2 Offset(-70,42)
GYAR B 2 Offset(-121,114)
GYAR C 2 Offset(1,32)
GYAR C 0 A_JumpIfInventory("GyroTrigger2",1,2)
GYAR C 0 A_GiveInventory("GiveItAWhirlAmmo",1)
GYAR C 2 Offset(-21,56)
GYAR C 2 Offset(-33,84)
TNT1 A 4
TNT1 A 0 A_JumpIfInventory("GyroTrigger2",1,2)
TNT1 A 0 A_GiveInventory("GiveItAWhirlAmmo",1)
TNT1 A 2
GYAR A 2 Offset(-9,92)
GYAR A 2 Offset(-5,68)
GYAR A 2 Offset(-2,48)
GYAR A 0 A_JumpIfInventory("GyroTrigger2",1,2)
GYAR A 0 A_GiveInventory("GiveItAWhirlAmmo",1)
GYAR A 0 A_Refire
Goto Ready2

Altfire:
GYAR D 0 A_JumpIfInventory("GyroTrigger2",1,"FallCheck")
GYAR D 0 A_JumpIfInventory("FlightDisableFlag",1,2)
GYAR D 1 A_JumpIfInventory("GiveItAWhirlAmmo",1,"Fly")
GYAR D 0
goto Fall
Fly:
GYAR D 0 A_GiveInventory("GyroTrigger",1)
GYAR D 0 A_GiveInventory("GyroTrigger2",1)
//GYAR D 1
GYAR D 0 A_ReFire("FlyHold")
Goto Ready3
FlyAgain:
GYAR D 0 A_GiveInventory("GyroTrigger",1)
GYAR D 0 A_ReFire("FlyHold")
Goto Ready3
FlyHold:
GYAR D 1 A_GiveInventory("GyroTriggerX",1)
GYAR D 0 A_ReFire(2)
GYAR D 0 A_TakeInventory("GyroTriggerX",99)
goto Ready3
GYAR D 0 A_JumpIfInventory("GyroTrigger", 1,"FlyHold")
GYAR D 0 A_TakeInventory("GyroTriggerX",99)
goto Ready3
FallCheck:
GYAR D 0 A_JumpIfInventory("GyroTrigger",1,"Fall")
GYAR D 0 A_JumpIfInventory("FlightDisableFlag",1,"Fall")
GYAR D 0 A_JumpIfInventory("GiveItAWhirlAmmo",1,"FlyAgain")
goto Fall
Fall:
GYAR D 0 SetPlayerProperty(0,0,3)
GYAR D 0 A_TakeInventory("GyroTrigger",999)
GYAR D 0 A_ReFire("FallHold")
goto Ready2
FallHold:
GYAR D 1 A_RailWait
GYAR D 0 A_ReFire("FallHold")
goto Ready2

Flash:
TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
TNT1 A 1 A_GiveInventory("GyroM_FlashState_P")
loop
}
}

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


actor GyroTrigger : OnceC{}//Flying Toggle
actor GyroTrigger2 : OnceC{}//Still midair Toggle
actor GyroTriggerX : Inventory
{
inventory.amount 1
inventory.maxamount 8
}

actor GyroM_AmmoDelay : Inventory
{
inventory.amount 1
inventory.maxamount 50
}

actor GyroM_FlySndDelay : Powerup
{
Powerup.Duration 5
}

actor GyroM_FlashState_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("GyroTrigger",1,"PickupFly")
TNT1 A 0 A_JumpIfInventory("GyroTrigger2",1,"LookingForGround")
stop
PickupFly:
TNT1 A 0 A_JumpIfInventory("FlightDisableFlag",1,3)
TNT1 A 0 SetPlayerProperty(0,1,3)
TNT1 A 0 A_GiveInventory("GyroM_AmmoDrain_P")
TNT1 A 0
TNT1 A 0 A_JumpIfInventory("GiveItAWhirlAmmo",1,"No")
TNT1 A 0 SetPlayerProperty(0,0,3)
TNT1 A 0 A_TakeInventory("GyroTrigger",1)
goto LookingForGround
LookingForGround:
TNT1 A 0 A_JumpIfInventory("GyroTrigger",1,"No")
TNT1 A 0 A_JumpIf(z-floorz==0,"FoundGround")
TNT1 A 0 A_JumpIfInventory("PowerMomZVerify",1,"CheckMomZ")
TNT1 A 0 A_JumpIf(momz==0,"MomZVerify")
stop
CheckMomZ:
TNT1 A 0 A_JumpIf(momz==0,"FoundGround")
stop
MomZVerify:
TNT1 A 0 A_GiveInventory("PowerMomZVerify")
stop
FoundGround:
TNT1 A 0 A_TakeInventory("GyroTrigger")
TNT1 A 0 A_TakeInventory("GyroTrigger2")
stop
No:
TNT1 A 0
stop
}
}

actor GyroM_AmmoDrain_P : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_JumpIfInventory("GyroM_FlySndDelay",1,3)
TNT1 A 0 A_GiveInventory("GyroM_FlySndDelay")
TNT1 A 0 A_PlaySoundEx("Classes/Hind","Body")
TNT1 A 0
TNT1 A 0 A_JumpIfInventory("GyroM_AmmoDelay",8,"AmmoTake")
TNT1 A 0 A_JumpIfInventory("GyroTriggerX",1,2)
TNT1 A 0 A_GiveInventory("GyroM_AmmoDelay",2)
stop
TNT1 A 0 A_GiveInventory("GyroM_AmmoDelay",1)
stop
AmmoTake:
TNT1 A 0 A_TakeInventory("GiveItAWhirlAmmo",1,1)
TNT1 A 0 A_TakeInventory("GyroM_AmmoDelay")
stop
}
}

actor GyroAttackClass
{
Translation "198:198=104:104"
SeeSound "weapon/GyroM_Attack"
//DeathSound ""
PROJECTILE
Obituary "$OB_GYROATTACK"
damagetype "GyroM_Shot"
damage (150)
Radius 16
Height 8
speed 40
scale 2.5
States
{
Spawn:
GYAR G 0 A_PlaySoundEx("weapon/GyroM_Attack","Voice")
//GYAR GH 2
GYAR GHGHGHGHGHG 2
GYAR H 0 A_PlaySoundEx("weapon/GyroM_Attack","Voice")
GYAR HGHGHGHGHGH 2
loop
Death:
GYAR G 0 A_JumpIf(z-floorz==0,"Floor")
GYAR G 0 A_JumpIf(z-ceilingz==0-8, "Ceiling")
GYAR G 0 //A_SpawnItemEx("GyroAttackClass3",0,0,0,0,0,0,180,1)
stop
Floor:
GYAR G 0 A_SpawnItemEx("GyroAttackClass2",0,0,1,40,0,0,0,1)
stop
Ceiling:
GYAR G 0 A_SpawnItemEx("GyroAttackClass2",0,0,-1,40,0,0,0,1)
stop
XDeath:
GYAR G 0
stop
}
}

actor GyroAttackClassB : GyroAttackClass{translation "198:198=74:74"}
actor GyroAttackClassR : GyroAttackClass{translation "198:198=41:41"}
actor GyroAttackClassO : GyroAttackClass{translation "198:198=128:128"}
actor GyroAttackClassP : GyroAttackClass{translation "198:198=232:232"}

actor GyroAttackClass2 : GyroAttackClass
{
SeeSound ""
States
{
Spawn:
GYAR G 0
goto Super::Spawn
Death:
goto XDeath
}
}

actor GyroAttackClass3 : GyroAttackClass
{
+SEEKERMISSILE
States
{
Spawn:
GYAR G 0
GYAR G 0 A_JumpIf(ACS_ExecuteWithResult(C_CHECK_TARGET_OOC)==0,2)
GYAR G 0 A_RearrangePointers(0,0,2)
GYAR G 0 A_FaceTarget(0,0)
GYAR G 0 A_ChangeVelocity(Cos(pitch)*40,0,sin(pitch)*40,3)
GYAR GG 0 A_SeekerMissile(90,90,SMF_PRECISE)
goto Super::Spawn
Death:
goto XDeath
}
}


actor GyromanMain_CI : TeamColor_CI
{
states
{
FireX:
TNT1 A 0 A_FireCustomMissile("GyroAttackClass",0,0,8,0)
goto Done
FireB:
TNT1 A 0 A_FireCustomMissile("GyroAttackClassB",0,0,8,0)
goto Done
FireR:
TNT1 A 0 A_FireCustomMissile("GyroAttackClassR",0,0,8,0)
goto Done
FireO:
TNT1 A 0 A_FireCustomMissile("GyroAttackClassO",0,0,8,0)
goto Done
FireP:
TNT1 A 0 A_FireCustomMissile("GyroAttackClassP",0,0,8,0)
goto Done
}
}