actor Gyroman : SemiWeakArmorClass
{
	Player.ScoreIcon "GYROMUGS"
	player.startitem "BaseFlagPack", 1
	player.startitem "SemiWeakArmor"
	player.soundclass "gyromanc"
	player.displayname "Gyroman"
	player.jumpz 14
	Player.ViewHeight 44
	player.forwardmove 0.85, 0.85
	player.sidemove 0.83, 0.83
	player.startitem "GyroAttackBoss"
	player.startitem "Base28Ammo", 28
	player.startitem "BaseAltfireAmmo", 112
	player.startitem "CanThirdFire"
	player.startitem "UltimateAttackItem2", 1
	player.startitem "UltSoundWatcherSpawn2"
	player.startitem "IsFromMM5"
	Player.ViewHeight 53
	States
	{
		Spawn:
		GYRM A 0
		GYRM B 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		GYRM B 1 A_JumpIf(z-floorz>0, "Jumping")
		GYRM A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		GYRM A 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn+3
		
		See:
		GYRM B 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		GYRM B 1 A_JumpIf(z-floorz>0, "Jumping")
		GYRM B 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		GYRM B 1 A_JumpIf(z-floorz>0, "Jumping")
		GYRM B 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		GYRM B 1 A_JumpIf(z-floorz>0, "Jumping")
		GYRM B 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		GYRM B 1 A_JumpIf(z-floorz>0, "Jumping")
		
		GYRM C 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		GYRM C 1 A_JumpIf(z-floorz>0, "Jumping")
		GYRM C 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		GYRM C 1 A_JumpIf(z-floorz>0, "Jumping")
		GYRM C 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		GYRM C 1 A_JumpIf(z-floorz>0, "Jumping")
		GYRM C 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		GYRM C 1 A_JumpIf(z-floorz>0, "Jumping")
		
		GYRM D 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		GYRM D 1 A_JumpIf(z-floorz>0, "Jumping")
		GYRM D 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		GYRM D 1 A_JumpIf(z-floorz>0, "Jumping")
		GYRM D 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		GYRM D 1 A_JumpIf(z-floorz>0, "Jumping")
		GYRM D 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		GYRM D 1 A_JumpIf(z-floorz>0, "Jumping")
		
		GYRM E 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		GYRM E 1 A_JumpIf(z-floorz>0, "Jumping")
		GYRM E 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		GYRM E 1 A_JumpIf(z-floorz>0, "Jumping")
		GYRM E 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		GYRM E 1 A_JumpIf(z-floorz>0, "Jumping")
		GYRM E 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		GYRM E 1 A_JumpIf(z-floorz>0, "Jumping")
		Goto Spawn+1
		
		Jumping:
		GYRM O 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		GYRM O 1 A_JumpIf(z-floorz<=0, "Spawn")
		loop

		Flying:
		GYRM I 0 A_TakeInventory("JumpCancler",1)
		GYRM IJIJ 2
		GYRM A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		goto Spawn+1
		
		Missile:
		GYRM F 0 A_JumpIfInventory("BaseCustomFlag1",1,"Missile2")
		GYRM FFFFFF 1 A_JumpIf(z-floorz>0, "JumpingMissile")
		
		Missile4:
		GYRM GGGGGGGGG 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
		Goto Spawn+1
		
		Missile2:
		GYRM KKKKKKLLLLLLLLL 1
		GYRM A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Flying")
		Goto Spawn+1
		
		Animation1:
		GYRM MNMNMNMNMNMNMNMNMNMNMN 2
		goto Spawn+1
		
		JumpingMissile:
		GYRM P 0 A_JumpIfInventory("BaseCustomFlag1",1,"Missile2")
		GYRM PPPPPP 1 A_JumpIf(z-floorz<=0, "Missile")
		
		JumpingMissile2:
		GYRM QQQQQQQQQ 1 A_JumpIf(z-floorz<=0, "Missile4")
		Goto Jumping
		
		ClassTimeStop:
		PLAY A 0 SetPlayerProperty(0,1,4)
		PLAY A 0 ACS_Execute(528,0)
		GYRM AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
		PLAY A 0 SetPlayerProperty(0,0,4)
		Goto pain+1
		ClassPain:
		GYRM HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
		Goto Spawn+1
		ClassDeath:
		GYRM ] 20 ACS_ExecuteAlways(999,0,0)
		GYRM ] 0 A_PlayerScream
		NOFX A 0 A_SpawnItemEx("FakeDeathFX",0,0,32)
		NOFX A 1 A_CheckPlayerDone
		wait
		ClassIceDeath:
		GYRM A 35
		NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
		NOFX A 1 A_CheckPlayerDone
		wait
		WeaponGetM:
		CUTM H 0 A_JumpIfInTargetInventory("GyroAttackWepM",1,2)
		CUTM H 0 A_GiveToTarget("WeaponGetter")
		CUTM H 0 A_GiveToTarget("GyroAttackWepM")
		goto ClassDeath
	}
}

actor GyroAttackBoss : VCBaseWeapon
{
	Obituary "$OB_GYROMAN1"
	weapon.ammotype "Base28Ammo"
	weapon.ammotype2 "BaseAltfireAmmo"
	+WEAPON.NOAUTOAIM
	States
	{
		Ready:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("BaseCustomFlag2",1,2) 
		GYAR A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Ready.CanThirdFire") 
		GYAR A 0 A_JumpIfInventory("BaseAltfireAmmo",56,"Ready.CanThirdfire")
		GYAR A 1 A_WeaponReady GYAR A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") //GYAR A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		GYAR A 1 A_WeaponReady GYAR A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") //GYAR A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		GYAR A 1 A_WeaponReady GYAR A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") //GYAR A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		GYAR A 1 A_WeaponReady GYAR A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") //GYAR A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		GYAR A 0 A_GiveInventory("Base28Ammo",1)
		TNT1 A 0 A_JumpIfInventory("BaseCustomFlag2",1,1) 
		GYAR A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Ready") 
		GYAR A 0 A_GiveInventory("BaseAltfireAmmo",2)
		Goto Ready
		
		Ready.CanThirdfire:
		GYAR A 1 A_WeaponReady GYAR A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") GYAR A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		GYAR A 1 A_WeaponReady GYAR A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") GYAR A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		GYAR A 1 A_WeaponReady GYAR A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") GYAR A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		GYAR A 1 A_WeaponReady GYAR A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack") GYAR A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1")
		GYAR A 0 A_GiveInventory("Base28Ammo",1)
		GYAR A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Ready.CanThirdFire") 
		GYAR A 0 A_GiveInventory("BaseAltfireAmmo",2)
		Goto Ready
		
		Ready.Ult:
		GYAR A 4 A_WeaponReady
		GYAR A 0 A_GiveInventory("Base28Ammo",1)
		GYAR A 0 A_GiveInventory("BaseAltfireAmmo",2)
		TNT1 A 0 A_JumpIfInventory("BaseCustomFlag2",1,"Ready.Ult")
		Goto Ready
		
		Deselect:
		TNT1 A 0 A_GunFlash("NoFlash")
		DeselectX:
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		GYAR A 1 A_Lower
		Loop
		
		Select:
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(991,0,803)
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		GYAR A 1 A_Raise
		Loop
		
		User1:
		GYAR A 0 A_JumpIfInventory("BaseCustomFlag1",1,"User1.Two")
		GYAR A 0 A_PlaySoundEx("weapon/gyrofly","SoundSlot5")
		GYAR J 0 A_GiveInventory("BaseCustomFlag1")
		GYAR GIJ 1 ThrustThingZ(0,30,0,0)
		GYAR A 0 A_GiveInventory("GyroAirSpeed")
		
		User1.Loop:
		GYAR J 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
		goto User1.Cancel
		GYAR A 0 A_PlaySoundEx("weapon/gyrofly","SoundSlot5")
		GYAR J 0 ThrustThingZ(0,30,0,0)
		GYAR J 1 A_TakeInventory("BaseAltfireAmmo",1)
		GYAR J 0 ThrustThingZ(0,30,0,0)
		GYAR J 1 A_TakeInventory("BaseAltfireAmmo",1)
		GYAR J 0 ThrustThingZ(0,30,0,0)
		GYAR J 1 A_TakeInventory("BaseAltfireAmmo",1)
		GYAR JJ 1 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1.Loop")
		
		User1.End:
		GYAR JIG 1 ThrustThingZ(0,10,0,0)
		GYAR A 0 A_GunFlash
		goto Ready
		
		User1.Cancel:
		GYAR A 0 A_GunFlash("NoFlash")
		GYAR JIG 1 ThrustThingZ(0,10,1,0)
		goto Ready
		
		User1.Two: //You can't use actual numbers here, apparently. -Fr3ak
		GYAR A 0 A_GiveInventory("DrillFlag")
		GYAR GIJ 1 ThrustThingZ(0,30,0,0)
		
		User1.Loop2:
		GYAR J 0 A_JumpIfInventory("BaseAltfireAmmo",1,1)
		goto User1.Cancel
		GYAR A 0 A_PlaySoundEx("weapon/gyrofly","SoundSlot5")
		GYAR JJ 1 ThrustThingZ(0,30,0,0)
		GYAR J 1 ThrustThingZ(0,30,0,0)
		GYAR JJ 1 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",3)==3,"User1.Loop2")
		
		User1.End2:
		GYAR A 0 A_TakeInventory("DrillFlag")
		GYAR JIG 1 ThrustThingZ(0,10,0,0)
		goto Ready
		
		Fire:
		GYAR A 0 A_JumpIfInventory("BaseCustomFlag2",1,"Fire2") //Ult mainfire
		GYAR A 0 A_JumpIfInventory("GyroActiveFlag",1,"Ready")
		GYAR HHHBCD 1
		GYAR A 0 A_GiveInventory("Base28Ammo",2)
		TNT1 A 0 A_JumpIfInventory("BaseCustomFlag1",1,2)
		GYAR A 0 A_GiveInventory("BaseAltfireAmmo",2)
		GYAR A 0 A_FireCustomMissile("GyroManAttack",0,0,0,8)
		GYAR A 0 A_PlaySoundEx("weapon/gyroattack","Weapon")
		GYAR EFFFFF 1
		GYAR F 4 Offset(0,64)
		GYAR A 0 A_GiveInventory("Base28Ammo",1)
		GYAR A 0 A_GiveInventory("BaseAltfireAmmo",2)
		
		GYAR F 4 Offset(0,96)
		
		GYAR A 0 A_GiveInventory("Base28Ammo",1)
		GYAR A 0 A_GiveInventory("BaseAltfireAmmo",2)
		
		GYAR F 3 Offset(0,128)
		TNT1 A 1 A_WeaponReady(14)
		
		GYAR A 0 A_GiveInventory("Base28Ammo",1)
		GYAR A 0 A_GiveInventory("BaseAltfireAmmo",2)
		
		GYAR JIG 1
		Goto Ready
		
		Fire2:
		GYAR HHHBCD 1
		GYAR A 0 A_GiveInventory("Base28Ammo",2)
		GYAR A 0 A_GiveInventory("BaseAltfireAmmo",2)
		GYAR A 0 A_FireCustomMissile("GyroManAttack2",-30,0,0,8)
		GYAR A 0 A_FireCustomMissile("GyroManAttack2",30,0,0,8)
		GYAR A 0 A_FireCustomMissile("GyroManAttack2",0,0,0,8)
		GYAR A 0 A_FireCustomMissile("GyroManAttack2",0,0,0,8,0,10)
		GYAR A 0 A_PlaySoundEx("weapon/chainblastone","Weapon")
		GYAR EFF 2
		GYAR F 2 Offset(0,64)
		GYAR F 2 Offset(0,96)
		GYAR F 2 Offset(0,128)
		TNT1 A 2 A_WeaponReady(14)
		GYAR JIG 2
		GYAR A 16
		Goto Ready.Ult
		
		Altfire:
		RATU A 0 A_JumpIfInventory("NoAltfire",1,"NoAmmo")
		GYAR A 0 A_JumpIfInventory("Base28Ammo",14,"Altfire.Real")
		goto NoAmmo
		
		Altfire.Real:
		GYAR A 0 A_JumpIfInventory("BaseCustomFlag2",1,"Altfire2") //Ult altfire
		GYAR GIJ 1
		HAZH D 0 A_TakeInventory("UnSolid",1)
		HAZH D 0 A_ChangeFlag("SOLID",0)
		TOPX A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		GYAR A 0 A_GiveInventory("DrillFlag")
		GYAR A 0 A_TakeInventory("Base28Ammo",14,1)
		GYAR G 0 A_SpawnItemEx("GyroAltWatcher")
		GYAR A 0 A_PlaySoundEx("weapon/gyroalt","Weapon")
		GYAR JJJJJJJJJJJJJJJJJJJJJJJJJJJJ 1 A_GiveInventory("GyromanMobility1")//A_ChangeVelocity(cos(pitch)*26,0,-sin(pitch)*26,CVF_RELATIVE|CVF_REPLACE)
		DRIA A 0 A_SpawnItemEx("ReSolidifier")
		GYAR A 0 A_TakeInventory("DrillFlag")
		GYAR IIGGAA 1 A_ScaleVelocity(0.75)
		GYAR A 12
		goto Ready
		
		Altfire2:
		GYAR GIJ 1
		HAZH D 0 A_TakeInventory("UnSolid",1)
		HAZH D 0 A_ChangeFlag("SOLID",0)
		TOPX A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		GYAR A 0 A_TakeInventory("Base28Ammo",14,1)
		GYAR G 0 A_SpawnItemEx("GyroAltWatcher2")
		GYAR A 0 A_PlaySoundEx("weapon/gyroult","Weapon")
		GYAR JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ 1 A_GiveInventory("GyromanMobility2")//A_ChangeVelocity(cos(pitch)*52,0,-sin(pitch)*52,CVF_RELATIVE|CVF_REPLACE)
		DRIA A 0 A_SpawnItemEx("ReSolidifier")
		GYAR IIGGAA 1 A_ScaleVelocity(0.75)
		GYAR A 12
		goto Ready.Ult
		
		UltimateAttack:
		TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,38)
		TNT1 A 0 A_TakeInventory("MediumShortUltimateAmmo",1)
		TNT1 A 0 A_GiveInventory("GyroUltCooldown",1)
		CUTA A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
		CUTA A 0 A_GunFlash("Flash.Ultimate")
		TNT1 A 0 A_TakeInventory("GyroAirSpeed")
		CUTA A 0 A_GiveInventory("BaseCustomFlag1")
		CUTA A 0 A_GiveInventory("BaseCustomFlag2")
		CUTA A 0 A_TakeInventory("UltAttackFlag")
		GYAR A 1 SetPlayerProperty(0,1,3)
		goto Ready.Ult
	
		Flash:
		TNT1 A 0 A_PlaySoundEx("weapon/gyrofly","SoundSlot5")
		TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",2)
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 0 A_CheckFloor("NoFlash")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",2)>0,"NoFlash")
		TNT1 A 1 A_GiveInventory("GyroThruster")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",2)>0,"NoFlash")
		TNT1 A 1 A_GiveInventory("GyroThruster")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",2)>0,"NoFlash")
		TNT1 A 1 A_GiveInventory("GyroThruster")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",2)>0,"NoFlash")
		TNT1 A 1 A_GiveInventory("GyroThruster")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",2)>0,"NoFlash")
		TNT1 A 1 A_GiveInventory("GyroThruster")
		TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("VC_CheckBtn",2)>0,"NoFlash")
		TNT1 A 1 A_GiveInventory("GyroThruster")
		TNT1 A 0 A_JumpIfInventory("BaseAltfireAmmo",1,"Flash")
		goto NoFlash
		
		NoFlash:
		TNT1 A 0 A_StopSound(CHAN_5)
		TNT1 A 0 A_GiveInventory("GyroCancelHandler",1)
		stop
		
		Flash.Ultimate:
		TNT1 A 0 A_PlaySoundEx("weapon/gyrofly","SoundSlot5")
		TNT1 A 0 A_TakeInventory("MediumShortUltimateAmmo",2)
		TNT1 A 0 A_GiveInventory("GyroUltCooldown")
		TNT1 A 0 ACS_ExecuteAlways(971,0,1803)
		TNT1 AA 1 A_JumpIfInventory("IsDead",1,"NoFlash.Ult")
		TNT1 A 0 ACS_ExecuteAlways(971,0,2803)
		TNT1 AA 1 A_JumpIfInventory("IsDead",1,"NoFlash.Ult")
		TNT1 A 0 A_JumpIfInventory("MediumShortUltimateAmmo",1,"Flash.Ultimate")
		goto NoFlash.Ult
		
		NoFlash.Ult:
		TNT1 A 0 A_StopSound(CHAN_5)
		TNT1 A 0 A_TakeInventory("MediumShortUltimateAmmo",56)
		TNT1 A 0 A_TakeInventory("BaseCustomFlag1")
		TNT1 A 0 A_TakeInventory("BaseCustomFlag2")
		TNT1 A 0 SetPlayerProperty(0,0,3)
		TNT1 AAAAA 1 ACS_ExecuteAlways(991,0,803)
		stop
		
		NoAmmo:
		GYAR A 0 A_JumpIfInventory("BaseCustomFlag2",1,"NoAmmo.Ult")
		GYAR A 4 A_GiveInventory("Base28Ammo",1)
		GYAR A 0 A_JumpIfInventory("BaseCustomFlag1",1,"Ready")
		GYAR A 0 A_GiveInventory("BaseAltfireAmmo",2)
		goto Ready
		
		NoAmmo.Ult:
		GYAR A 4 A_GiveInventory("Base28Ammo",1)
		GYAR A 0 A_GiveInventory("BaseAltfireAmmo",2)
		goto Ready.Ult
	}
}

actor GyroAirSpeed : PowerSpeed
{
	+POWERSPEED.NOTRAIL
	Powerup.Duration 999
	Speed  1.6
}

actor GyroFlyingAnim : Powerup
{
Powerup.Duration 4
}

actor GyroManAttack : BasicProjectile
{
Obituary "$OB_GYROMAN1"
//PROJECTILE
Radius 16
Height 16
//scale 2.5
damagetype "Gyroman"
damage (17)
speed 50
+SEEKERMISSILE
+LOOKALLAROUND
+HEXENBOUNCE
-BOUNCEONFLOORS
States
{
Spawn:
TNT1 AA 0 A_GiveToTarget("GyroActiveFlag")
TNT1 AA 0 A_GiveInventory("ProjectileCode")
GYCS A 0 A_PlaySoundEx("weapon/gyroattack","Body")
TNT1 A 0 A_GiveToTarget("GyroActiveFlag")
GYCS ABAB 1
GYCS A 0 A_PlaySoundEx("weapon/gyroattack","Body")
GYCS ABAB 1
GYCS A 0 A_PlaySoundEx("weapon/gyroattack","Body")
GYCS ABABABAB 2 A_Stop
GYCS A 0 A_ChangeVelocity(50,0,0,CVF_RELATIVE)
GYCS A 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_PRECISE, 256, 10)
GYCS A 0 A_ChangeFlag("HEXENBOUNCE",0)
loopit:
GYCS A 0 A_PlaySoundEx("weapon/gyroattack","Body")
GYCS AB 1
loop
Death:
MMFX B 0 A_CheckFloor("HomePre")
MMFX BCDE 2
stop
XDeath:
MMFX B 0 A_TakeFromTarget("GyroActiveFlag")
MMFX BCDE 2
stop
HomePre:
GYCS A 0 A_GiveToTarget("GyroActiveFlag")
Home:
GYCS A 0 A_ChangeFlag("HEXENBOUNCE",0)
GYCS A 0 A_SpawnItemEx("GyroHomingAttack",0,0,0,0,0,0,0,1)
stop
}
}

actor GyroHomingAttack : GyroManAttack
{
-HEXENBOUNCE
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
GYCS A 0 A_PlaySoundEx("weapon/gyroattack","Body")
GYCS ABABABAB 2 A_Stop
GYCS A 0 A_ChangeVelocity(50,0,0,CVF_RELATIVE)
GYCS AAAAAA 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_PRECISE, 256, 10)
loopit:
GYCS A 0 A_PlaySoundEx("weapon/gyroattack","Body")
GYCS AB 1
loop
XDeath:
MMFX B 0 A_TakeFromTarget("GyroActiveFlag")
Death:
MMFX BCDE 2
stop
}
}

actor GyroManAttack2 : GyroManAttack
{
speed 30
Obituary "$OB_GYROMAN3"
+HEXENBOUNCE
wallbouncefactor 1.0
bouncefactor 1.0
reactiontime 6
damage (6)
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
GYCS A 0 A_PlaySoundEx("weapon/gyrospin","Body")
GYCS CDEF 1 A_GiveToTarget("GyroUltCooldown")
GYCS A 0 A_PlaySoundEx("weapon/gyrospin","Body")
GYCS CDEF 1 A_GiveToTarget("GyroUltCooldown")
GYCS A 0 A_PlaySoundEx("weapon/gyrospin","Body")
GYCS CDEFCDEFCDEF 1 A_Stop
GYCS A 0 A_Countdown
GYCS A 0 A_ChangeVelocity(50,0,0,CVF_RELATIVE)
GYCS AAAAAA 0 A_SeekerMissile (90, 90, SMF_LOOK|SMF_PRECISE, 256, 10)
loop
Death:
MMFX BCDE 2 
stop
}
}

actor GyroActiveFlag : Powerup
{
Powerup.Duration 30
}

actor GyroAfterimage
{
translation "192:192=205:205", "198:198=74:74", "0:2=76:76"
PROJECTILE
+NOCLIP
+NOINTERACTION
+THRUGHOST
renderstyle translucent
alpha 0.6
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
GYRM NMNM 2
loopit:
GYRM NMNM 2 A_FadeOut(0.15)
loop
}
}

actor GyroWindTunnel : BasicClientSide
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
GYWI ABABABABAB 1
loopit:
GYWI ABAB 1 A_FadeOut(0.2)
loop
}
}

actor GyroAltWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
reactiontime 14
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_GiveToTarget("GyroHitboxGiver")
TNT1 A 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_GiveToTarget("GyroHitboxGiver")
TNT1 A 0 A_GiveToTarget("GyroAfterImageSpawn")
TNT1 A 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_Countdown
loop
Death:
TNT1 A 0
stop
}
}

actor GyroHitboxGiver : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
+INVENTORY.AUTOACTIVATE
+COUNTITEM
+INVBAR
states
{
Pickup:
TNT1 A 0 A_SpawnItemEx("GyroFlyHitbox", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor GyroAltWatcher2
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
reactiontime 22
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_GiveToTarget("GyroWindTunnelSpawn")
TNT1 A 0 A_GiveToTarget("GyroHitboxGiver2")
TNT1 A 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_GiveToTarget("GyroWindTunnelSpawn")
TNT1 A 0 A_GiveToTarget("GyroHitboxGiver2")
TNT1 A 0 A_GiveToTarget("GyroAfterImageSpawn")
TNT1 A 1 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 0 A_Countdown
loop
Death:
TNT1 A 0
stop
}
}

actor GyroHitboxGiver2 : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
+INVENTORY.AUTOACTIVATE
+COUNTITEM
+INVBAR
states
{
Pickup:
TNT1 A 0 A_SpawnItemEx("GyroFlyHitbox2", 0, 0, 0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
stop
}
}

actor GyroAfterImageSpawn : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
+INVENTORY.AUTOACTIVATE
+COUNTITEM
+INVBAR
states
{
Pickup:
TNT1 A 0 A_SpawnItemEx("GyroAfterimage",-48,0,0,0,0,0,0)
stop
}
}

actor GyroWindTunnelSpawn : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
+INVENTORY.AUTOACTIVATE
+COUNTITEM
+INVBAR
states
{
Pickup:
TNT1 A 0 A_SpawnItemEx("GyroWindTunnel",-48,0,0,0,0,0,0)
stop
}
}

actor GyroFlyHitbox
{
species "DustManType"
+THRUSPECIES
Obituary "$OB_GYROMAN2"
PROJECTILE
+NOEXPLODEFLOOR
Radius 32
Height 32
scale 2.5
speed 0
damage (22)//(28)
Damagetype "GyromanAttack"
States
{
Spawn:
TNT1 A 2
stop
}
}

actor GyroFlyHitbox2 : GyroFlyHitbox
{
Damagetype "GyromanAttackUlt"
damage (60)//(70)
States
{
Spawn:
TNT1 A 2
stop
}
}

actor GyromanAttackProtect : PowerProtection
{
	powerup.duration 35
	DamageFactor "GyromanAttack", 0.0
	DamageFactor "GyromanAttackUlt", 0.0
}

actor GyroThruster : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
+INVENTORY.AUTOACTIVATE
+COUNTITEM
+INVBAR
states
{
Pickup:
TNT1 A 0 A_JumpIfInventory("DrillFlag",1,"Nope")
TNT1 A 0 ThrustThingZ(0,2,1,0)
stop
Nope:
TNT1 A 0
stop
}
}

actor GyroUltCooldown : UltBuildCooldownGiver
{
Powerup.Duration 35
}

actor GyroCancelHandler : CustomInventory
{
States
{
Pickup:
TNT1 A 0 A_TakeInventory("BaseAltfireAmmo",56)
TNT1 A 0 A_TakeInventory("GyroAirSpeed")
TNT1 A 0 A_TakeInventory("BaseCustomFlag1")
TNT1 A 0 A_TakeInventory("DrillFlag")
stop
}
}

actor GyromanMobility1 : BaseMovement
{
states
{
itTimeGo:
TNT1 A 0 A_ChangeVelocity(CallACS("VC_XYMob",cos(pitch)*21),0,-sin(pitch)*21,CVF_RELATIVE|CVF_REPLACE)
stop
}
}

actor GyromanMobility2 : BaseMovement
{
states
{
itTimeGo:
TNT1 A 0 A_ChangeVelocity(CallACS("VC_XYMob",cos(pitch)*52),0,-sin(pitch)*52,CVF_RELATIVE|CVF_REPLACE)
stop
}
}