actor Turboman : VCBaseClass //This class uses an experimental ammo management system developed by Binary.
{
Player.ScoreIcon "TURBMUGS"
player.startitem "BaseFlagPack", 1
player.startitem "IsFromMM7"
player.soundclass "turbomanc"
Player.ViewHeight 57
player.displayname "Turboman"
player.startitem "ScorchWheelBoss"
player.startitem "Base28Ammo", 28
player.startitem "BaseAltfireAmmo", 112
player.startitem "UltimateAttackItem3", 1
player.startitem "UltSoundWatcherSpawn3"
player.startitem "NoHealthBar"
player.forwardmove 0.9, 0.9
player.sidemove 0.88, 0.88
player.jumpz 12
States
{
Spawn:
TURB A 0
TURB S 1 A_JumpIf(z-floorz>0, "Jumping")
TURB A 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn+2

See:
TURB SSSTTTUUUVVV 1 A_JumpIf(z-floorz>0, "Jumping")
Goto Spawn

Jumping:
TURB L 1 A_JumpIf(z-floorz<=0, "Spawn")
wait

Missile:
TURB F 0 A_JumpIfInventory("BaseCustomFlag1",1,"A1Loop")
TURB F 0 A_JumpIfInventory("DrillFlag",1,"Missile2")
TURB FFFI 1 A_JumpIf(z-floorz>0, "JumpingMissile")

Missile2:
TURB G 0 A_JumpIfInventory("TurboThrowAnim",1,"Missile3")
TURB G 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
TURB G 0 A_JumpIfInventory("TurboThrowAnim",1,"Missile3")
TURB G 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
TURB G 0 A_JumpIfInventory("TurboThrowAnim",1,"Missile3")
TURB G 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
TURB G 0 A_JumpIfInventory("TurboThrowAnim",1,"Missile3")
TURB G 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
TURB G 0 A_JumpIfInventory("TurboThrowAnim",1,"Missile3")
TURB G 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
TURB G 0 A_JumpIfInventory("TurboThrowAnim",1,"Missile3")
TURB G 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
TURB G 0 A_JumpIfInventory("TurboThrowAnim",1,"Missile3")
TURB G 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
TURB G 0 A_JumpIfInventory("TurboThrowAnim",1,"Missile3")
TURB G 1 A_JumpIf(z-floorz>0, "JumpingMissile2")
Goto Spawn+1

Missile3:
TURB JJKKKKK 1 A_JumpIf(z-floorz>0, "JumpingMissile3")
goto Spawn+1

JumpingMissile:
TURB M 0 A_JumpIfInventory("DrillFlag",1,"JumpingMissile2")
TURB MMMN 1 A_JumpIf(z-floorz<=0, "Missile")

JumpingMissile2:
TURB O 0 A_JumpIfInventory("TurboThrowAnim",1,"JumpingMissile3")
TURB O 1 A_JumpIf(z-floorz<=0, "Missile2")
TURB O 0 A_JumpIfInventory("TurboThrowAnim",1,"JumpingMissile3")
TURB O 1 A_JumpIf(z-floorz<=0, "Missile2")
TURB O 0 A_JumpIfInventory("TurboThrowAnim",1,"JumpingMissile3")
TURB O 1 A_JumpIf(z-floorz<=0, "Missile2")
TURB O 0 A_JumpIfInventory("TurboThrowAnim",1,"JumpingMissile3")
TURB O 1 A_JumpIf(z-floorz<=0, "Missile2")
TURB O 0 A_JumpIfInventory("TurboThrowAnim",1,"JumpingMissile3")
TURB O 1 A_JumpIf(z-floorz<=0, "Missile2")
TURB O 0 A_JumpIfInventory("TurboThrowAnim",1,"JumpingMissile3")
TURB O 1 A_JumpIf(z-floorz<=0, "Missile2")
TURB O 0 A_JumpIfInventory("TurboThrowAnim",1,"JumpingMissile3")
TURB O 1 A_JumpIf(z-floorz<=0, "Missile2")
TURB O 0 A_JumpIfInventory("TurboThrowAnim",1,"JumpingMissile3")
TURB O 1 A_JumpIf(z-floorz<=0, "Missile2")
Goto Spawn+1

JumpingMissile3:
TURB PPQQQQQ 1 A_JumpIf(z-floorz<=0, "Missile3")
goto Spawn+1

Animation1:
TURB R 4

A1Loop:
TURB BCDE 2
TURB BCDE 2 A_JumpIfInventory("BaseCustomFlag1",1,"A1Loop")
goto Spawn+2

ClassTimeStop:
PLAY A 0 SetPlayerProperty(0,1,4)
PLAY A 0 ACS_Execute(528,0)
TURB AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_Stop
PLAY A 0 SetPlayerProperty(0,0,4)
Goto pain+1
ClassPain:
TURB H 0 A_JumpIfInventory("BaseCustomFlag1",1,"ClassPain.Driving")
TURB HHHHHHHHHH 2 A_SpawnItem("PainFX",0,3)
Goto Spawn+1
ClassPain.Driving:
TURB B 1 A_SpawnItem("PainFX",0,3)
Goto A1Loop

Death.NoiseCrush1:
Death.NoiseCrush2:
Death.ShadeMan:
Death.ShadeMan2:
TNT1 A 0 A_SpawnItemEx("DeadDeafenedTurboMan",0,0,0,0,0,0,0,SXF_TRANSFERTRANSLATION)
NOFX A 20 ACS_ExecuteAlways(999,0,0)
NOFX A 1 A_CheckPlayerDone
wait
ClassDeath:
TNT1 A 0 A_SpawnItemEx("DeadTurboMan",0,0,0,0,0,0,0,1)
NOFX A 20 ACS_ExecuteAlways(999,0,0)
NOFX A 1 A_CheckPlayerDone
wait
ClassIceDeath:
TURB A 35
NOFX A 0 A_SpawnItemEx("FrozenDeathFX",0,0,16)
NOFX A 1 A_CheckPlayerDone
wait
WeaponGetM:
CUTM H 0 A_JumpIfInTargetInventory("ScorchWheelWepM",1,2)
CUTM H 0 A_GiveToTarget("WeaponGetter")
CUTM H 0 A_GiveToTarget("ScorchWheelWepM")
goto ClassDeath
}
}

actor DeadTurboMan : DeadFreezeMan
{
meleerange 7847
States
{
Spawn:
TURB H 0
"####" "#" 0
goto loopit
}
}

actor DeadDeafenedTurboMan
{
PROJECTILE
+MISSILE
species "DeadBody"
+THRUSPECIES
+THRUACTORS
+NOGRAVITY
-NOEXPLODEFLOOR
+NOINTERACTION
scale 2.5
reactiontime 45
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 0 A_PlaySoundEx("weapon/noisecrush2", "Auto")
Spawn2:
TURB WWX 1 A_Countdown
loop

Death:
TNT1 A 0 A_PlaySoundEx("mm7/dead","Auto")
TNT1 A 0 A_SpawnItemEX("CriticalDeathSpawner",0,0,0,0,0,0,0,SXF_TRANSFERTRANSLATION)
Stop
}
}

Actor TurbomanOPPleaseNerf : PowerProtection
{
	Powerup.Duration 0x7FFFFFFF
	DamageFactor "ThunderBolt", 0.0
}

actor ScorchWheelBoss : VCBaseWeapon
{
	Weapon.AmmoType "Base28Ammo"
	Weapon.AmmoType2 "BaseAltfireAmmo"
	Weapon.ammouse 7
	Obituary "$OB_TURBOMAN4"
	States
	{
		Ready:
		TNT1 A 0
		TUHU A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,7)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,56)) TUHU A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		TUHU A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,7)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,56)) TUHU A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		TUHU A 1 A_WeaponReady(WRF_NOPRIMARY*CallACS("VC_AmmoCheck",0,7)|WRF_NOSECONDARY*CallACS("VC_AmmoCheck",3,56)) TUHU A 0 A_JumpIfInventory("UltAttackFlag",1,"UltimateAttack")
		TUHU A 0 A_GiveInventory("Base28Ammo",1)
		TUHU A 0 A_GiveInventory("BaseAltfireAmmo",3)
		goto Ready
		
		Deselect:
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Lower
		TUHU A 1 A_Lower
		Loop
		
		Select:
		TNT1 A 0 A_GiveInventory("TurbomanOPPleaseNerf",1)
		TNT1 A 0 ACS_ExecuteAlways(991,0,7847)
		TNT1 AAAAAAAAAAAAAAAAAAAAAA 0 A_Raise
		TUHU A 1 A_Raise
		Loop
		
		Fire:
		TUHU A 0 A_PlaySoundEx("weapon/turbowheel","Weapon")
		TUHU BCDE 1
		TUHU A 0 A_GiveInventory("DrillFlag") //For wheel holding skin frame
		TUHU A 0 A_GunFlash
		TUHU A 0 A_GiveInventory("TurboWheelCount",80)
		TNT1 A 0 A_GiveInventory("ScorchWheelPowerup", 1)
		TNT1 A 3
		
		Fire.Hold:
		TNT1 A 0 A_JumpIfInventory("TurboWheelCount",1,1)
		goto Fire.End
		TNT1 A 1 A_TakeInventory("TurboWheelCount",1)
		TNT1 A 0 A_Refire("Fire.Hold")
		
		Fire.End:
		TNT1 A 0 A_GiveInventory("TurboMainfireHandler")
		TNT1 A 0 A_GiveInventory("TurboThrowAnim")
		TNT1 A 0 A_GunFlash("NoFlash")
		TNT1 A 0 A_PlaySoundEx("weapon/solarshoot","Weapon")
		TNT1 A 0 A_TakeInventory("ScorchWheelPowerup", 999)
		TNT1 A 0 A_TakeInventory("TurboWheelCount")
		TNT1 A 0 A_TakeInventory("DrillFlag")
		TUHU JI 2 A_ClearRefire
		TUHU A 10
		goto Ready
		
		Altfire:
		RATU A 0 A_JumpIfInventory("NoAltfire",1,"NoAmmo")
		TUHU A 0 A_GiveInventory("BaseCustomFlag1")
		TUHU A 0 A_GiveInventory("HalfDamageProtection")
		FANB B 0 ACS_Execute(191,0,APROP_JumpZ,0,1)
		TNT1 A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		TNT1 A 0 SetPlayerProperty(0,1,0)
		TNT1 A 0 A_GunFlash("Flash.Altfire")
		TUHU KLMN 1 A_Stop
		TUHU F 0 A_TakeInventory("BaseAltfireAmmo",56)
		
		AltHold:
		TNT1 A 0 A_JumpIfInventory("TurboAltCharge",100,"Altfire.DriveStart")
		TNT1 A 0 A_PlaySoundEx("weapon/turboskid","Weapon")
		TNT1 AAAAAA 0 A_FireCustomMissile("WindVacuumFXSpawner",random(-16,16),0,random(-10,10),random(30,40),0,random(-10,10))
		GRGH D 0 A_SpawnItemEx("TurboSmoke",-24,-12,0,-6,0,6,0)
		GRGH D 0 A_SpawnItemEx("TurboSmoke",-24,12,0,-6,0,6,0)
		TNT1 A 0 A_SpawnItemEx("TurboSuckBox")
		TUHU M 1 A_GiveInventory("TurboAltCharge",1)
		TNT1 AAAAAA 0 A_FireCustomMissile("WindVacuumFXSpawner",random(-16,16),0,random(-10,10),random(30,40),0,random(-10,10))
		TNT1 A 0 A_SpawnItemEx("TurboSuckBox")
		TUHU N 1 A_GiveInventory("TurboAltCharge",1)
		TNT1 AAAAAA 0 A_FireCustomMissile("WindVacuumFXSpawner",random(-16,16),0,random(-10,10),random(30,40),0,random(-10,10))
		TNT1 A 0 A_SpawnItemEx("TurboSuckBox")
		TUHU M 1 A_GiveInventory("TurboAltCharge",1)
		TNT1 AAAAAA 0 A_FireCustomMissile("WindVacuumFXSpawner",random(-16,16),0,random(-10,10),random(30,40),0,random(-10,10))
		TNT1 A 0 A_SpawnItemEx("TurboSuckBox")
		TUHU N 1 A_GiveInventory("TurboAltCharge",1)
		TNT1 A 0 A_Refire
		
		Altfire.DriveStart:
		TNT1 A 0 A_PlaySoundEx("weapon/turbodrive","Weapon")
		FANB B 0 ACS_Execute(191,0,APROP_JumpZ,12,1)
		TNT1 A 0 SetPlayerProperty(0,1,0)
		
		Altfire.Drive:
		TNT1 A 0 A_JumpIfInventory("TurboAltCharge",1,1)
		goto Altfire.End
		TNT1 A 0 A_SpawnItemEx("TurboDriveHitbox",0 ,0 ,0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
		TNT1 A 0 A_TakeInventory("TurboAltCharge",4)
		GRGH D 0 A_SpawnItemEx("TurboSmoke",-24,-12,0,-6,0,6,0)
		GRGH D 0 A_SpawnItemEx("TurboSmoke",-24,12,0,-6,0,6,0)
		TUHU M 1 A_GiveInventory("TurboAltfireMovement",1)//A_ChangeVelocity(40,0,momz,CVF_RELATIVE|CVF_REPLACE)
		TNT1 A 0 A_SpawnItemEx("TurboDriveHitbox",0 ,0 ,0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
		TUHU N 1 A_GiveInventory("TurboAltfireMovement",1)//A_ChangeVelocity(40,0,momz,CVF_RELATIVE|CVF_REPLACE)
		loop
		
		Altfire.End:
		TNT1 A 0 SetPlayerProperty(0,0,0)
		TNT1 A 0 A_ClearRefire
		TNT1 A 0 A_TakeInventory("BaseCustomFlag1")
		TUHU A 0 A_GunFlash("Flash.Altfire2")
		TUHU LKAA 2 A_TakeInventory("HalfDamageProtection")
		goto Ready
		
		UltimateAttack:
		TNT1 A 0 ACS_NamedExecuteAlways("VC_UltimateText",0,64)
		CUTA A 0 A_GiveInventory("TurboUltCooldown")
		CUTA A 0 A_SpawnItemEx("MM7PinpointThunder")
		CUTA A 0 A_GiveInventory("HalfHalfDamageProtection")
		CUTA A 0 A_GiveInventory("BaseCustomFlag1")
		CUTA A 0 ACS_NamedExecuteWithResult("VC_SetState",1)
		CUTA A 0 A_PlaySoundEx("classes/ultimateactivation","Auto")
		CUTA A 0 A_PlaySoundEx("weapon/lightningbolt","Body")
		CUTA A 0 A_SpawnItemEx("TurboUltWatcher")
		FANB B 0 ACS_Execute(191,0,APROP_JumpZ,0,1)
		TNT1 A 0 SetPlayerProperty(0,1,0)
		TNT1 A 0 A_GunFlash("Flash.Altfire")
		TUHU KLMN 1 A_Stop
		TUHU M 0 A_PlaySoundEx("weapon/turboskid","Weapon")
		TUHU MNMN 1 A_Stop
		TUHU M 0 A_PlaySoundEx("weapon/turboskid","Weapon")
		TUHU MNMN 1 A_Stop
		TUHU M 0 A_PlaySoundEx("weapon/turboskid","Weapon")
		TUHU MNMN 1
		TUHU M 0 A_PlaySoundEx("weapon/turbodrive","Weapon")
		TUHU M 0 A_GiveInventory("TurboUltSpeed",1)
		FANB B 0 ACS_Execute(191,0,APROP_JumpZ,12,1)
		TNT1 A 0 SetPlayerProperty(0,0,0)
		
		Ult.Drive:
		TNT1 A 0 A_JumpIfInventory("MediumUltimateAmmo",1,1)
		goto Ult.End
		CUTA A 0 A_GiveInventory("TurboUltCooldown")
		GRGH D 0 A_SpawnItemEx("TurboSmoke",-24,-12,0,-6,0,6,0)
		GRGH D 0 A_SpawnItemEx("TurboSmoke",-24,12,0,-6,0,6,0)
		GRGH A 0 A_TakeInventory("MediumUltimateAmmo",2)
		GRGH D 0 A_PlaySoundEx("weapon/turbodrive2","SoundSlot5")
		CUTA A 0 A_Quake(1,3,0,64)
		TNT1 A 0 A_GiveInventory("TurboSkidFlameHandler") //Only spawn tire fire if on the ground
		TNT1 AAAAA 0 A_SpawnItemEx("PinpointThunderFX",random(-64,64),random(-64,64),random(0,48),random(0,2),0,random(-3,3),random(0,359))
		TUHU M 1 A_SpawnItemEx("TurboDriveHitbox2",0 ,0 ,0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
		TNT1 AAAAA 0 A_SpawnItemEx("PinpointThunderFX",random(-10,10),random(-20,20),random(0,32),random(0,2),0,random(-3,3),random(0,359))
		TUHU N 1 A_SpawnItemEx("TurboDriveHitbox2",0 ,0 ,0, momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM|SXF_NOCHECKPOSITION)
		loop
		
		Ult.End:
		TUHU M 0 A_StopSound(CHAN_5)
		TUHU M 0 A_TakeInventory("TurboUltSpeed",1)
		TNT1 A 0 A_TakeInventory("UltAttackFlag")
		TNT1 A 0 SetPlayerProperty(0,0,0)
		TNT1 A 0 A_TakeInventory("BaseCustomFlag1")
		TUHU A 0 A_GunFlash("Flash.Altfire2")
		CUTA A 0 A_TakeInventory("HalfHalfDamageProtection")
		TUHU LKAA 2
		goto Ready
		
		Flash:
		TNT1 A 0 A_JumpIfInventory("Base28Ammo",28,"Flash2")
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 2 A_SpawnItemEx("TurboWheelFX1",0,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 2 A_SpawnItemEx("TurboWheelFX2",0,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 2 A_SpawnItemEx("TurboWheelFX3",0,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 2 A_SpawnItemEx("TurboWheelFX4",0,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 2 A_SpawnItemEx("TurboWheelFX5",0,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 2 A_SpawnItemEx("TurboWheelFX6",0,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
		loop
		
		Flash2:
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 0 A_GiveInventory("BaseAltfireAmmo",1)
		TNT1 A 2 A_SpawnItemEx("TurboWheelFX7",0,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 2 A_SpawnItemEx("TurboWheelFX8",0,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 2 A_SpawnItemEx("TurboWheelFX9",0,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 2 A_SpawnItemEx("TurboWheelFX10",0,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 2 A_SpawnItemEx("TurboWheelFX11",0,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 2 A_SpawnItemEx("TurboWheelFX12",0,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
		TNT1 A 0 A_JumpIfInventory("IsDead",1,"NoFlash")
		TNT1 A 2 A_SpawnItemEx("TurboWheelFX13",0,0,0,momx, momy, momz, 0, SXF_ABSOLUTEMOMENTUM, 0)
		loop
		
		Flash.Altfire: //Arms retracting
		TUHU FFGG 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		stop
		
		Flash.Altfire2: //Arms returning
		TUHU GGFFA 1 A_JumpIfInventory("IsDead",1,"NoFlash")
		stop
		
		NoAmmo: //Should never be getting here anyways, but will be useful for [REDACTED]. -Fr3ak
		TUHU A 1
		goto Ready
	}
}

actor TurboThrowAnim : Powerup
{
Powerup.Duration 5
}

actor TurboWheelCount : Inventory
{
inventory.amount 1
inventory.maxamount 80
}

actor TurboAltCharge : Inventory
{
inventory.amount 1
inventory.maxamount 100
}

actor TurboWheel : ScorchWheel
{
+STEPMISSILE
Obituary "$OB_TURBOMAN1"
scale 2.5
speed 30
gravity 0.6
damagetype "TurbomanWheel2"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SCTU A 0 A_PlaySoundEx("weapon/turbowheelloop", "Body", 1)
loopit:
SCTU AABBCCDDEEFF 1 A_Explode(10,36,0,0,36)
loop
Death:
TNT1 A 0 A_StopSound
TNT1 A 0 A_CustomMissile("TurboWheel2",0,0,0,2,0)
TNT1 A 1 A_SpawnItemEx("OilPitIgnite",0,0,8)
TNT1 A 0 A_StopSound
stop
}
}

actor TurboWheel2 : ScorchWheel
{
+STEPMISSILE
Obituary "$OB_TURBOMAN1"
damagetype "TurbomanWheel2"
speed 30
reactiontime 250
scale 2.5
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SCTU A 0 A_PlaySoundEx("weapon/turbowheelloop", "Body", 1)
loopit:
SCTU AABB 1 A_Explode(10,36,0,0,36)
SWHE A 0 A_GiveInventory("Clip",1)
SCTU CCDDEEFF 1 A_Explode(10,36,0,0,36)
SCTU A 0 A_Countdown
loop
Death:
TNT1 A 0 A_JumpIfInventory("Clip",1,"Continue")
TNT1 A 0 A_StopSound
TNT1 A 0 A_PlaySoundEx("weapon/turbowheelstop", "Body")
TNT1 AAAAAAAA 0 A_SpawnItemEx("TurbomanWheelBit",0,0,0,random(-10,10),random(-10,10),random(10,15),random(0,360),1)
TNT1 AAAAAAAA 0 A_SpawnItemEx("TurbomanScorchBit",0,0,0,random(-10,10),random(-10,10),random(10,15),random(0,360),1)
TNT1 A 0 A_SpawnItemEx("TurboGroundFire",16,0,16,8,0,7,180,1)
TNT1 A 0 A_SpawnItemEx("TurboGroundFire",16,0,16,16,0,8,180,1)
TNT1 A 0 A_SpawnItemEx("TurboGroundFire",16,0,16,24,0,9,180,1)
TNT1 A 0 A_SpawnItemEx("TurboGroundFire",16,0,16,32,0,10,180,1)
stop
Continue:
TNT1 A 0 A_StopSound
TNT1 A 0 A_CustomMissile("TurboWheel2",0,0,0,2,0)
TNT1 A 1 A_SpawnItemEx("OilPitIgnite",0,0,8)
TNT1 A 0 A_StopSound
stop
}
}

actor TurboWheelBurn : TurboWheel
{
Obituary "$OB_TURBOMAN4"
scale 1.75
damagetype "TurbomanBurn2"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SCTU M 0 A_PlaySoundEx("weapon/turbowheelloop", "Body", 1)
loopit:
SCTU MMLLKKJJIIHHGG 1 A_Explode(10,36,0,0,36)
loop
Death:
TNT1 A 0 A_StopSound
TNT1 A 0 A_CustomMissile("TurboWheelBurn2",0,0,0,2,0)
TNT1 A 1 A_SpawnItemEx("OilPitIgnite",0,0,8)
TNT1 A 0 A_StopSound
stop
}
}

actor TurboWheelBurn2 : TurboWheel2
{
Obituary "$OB_TURBOMAN4"
scale 1.75
damagetype "TurbomanBurn2"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
SCTU G 0 A_PlaySoundEx("weapon/turbowheelloop", "Body", 1)
loopit:
SCTU MMLL 1 A_Explode(10,36,0,0,36)
SWHE A 0 A_GiveInventory("Clip",1)
SCTU KKJJIIHHGG 1 A_Explode(10,36,0,0,36)
SCTU A 0 A_Countdown
loop
Death:
TNT1 A 0 A_JumpIfInventory("Clip",1,"Continue")
TNT1 A 0 A_StopSound
TNT1 A 0 A_PlaySoundEx("weapon/turbowheelstop", "Body")
TNT1 AAAAAAAA 0 A_SpawnItemEx("TurbomanWheelBit",0,0,0,random(-10,10),random(-10,10),random(10,15),random(0,360),1)
TNT1 AAAAAAAA 0 A_SpawnItemEx("TurbomanScorchBit",0,0,0,random(-10,10),random(-10,10),random(10,15),random(0,360),1)
TNT1 A 0 A_SpawnItemEx("TurboGroundFireBurn",16,0,16,8,0,7,180,1)
TNT1 A 0 A_SpawnItemEx("TurboGroundFireBurn",16,0,16,16,0,8,180,1)
TNT1 A 0 A_SpawnItemEx("TurboGroundFireBurn",16,0,16,24,0,9,180,1)
TNT1 A 0 A_SpawnItemEx("TurboGroundFireBurn",16,0,16,32,0,10,180,1)
stop
Continue:
TNT1 A 0 A_StopSound
TNT1 A 0 A_CustomMissile("TurboWheelBurn2",0,0,0,2,0)
TNT1 A 1 A_SpawnItemEx("OilPitIgnite",0,0,8)
TNT1 A 0 A_StopSound
stop
}
}

actor TurboGroundFire
{
PROJECTILE
Obituary "$OB_TURBOMAN1"
radius 16
height 20
damage(1)
damagetype "TurbomanGroundFlame"//&Ze
scale 2.5
+RIPPER
+NOEXPLODEFLOOR
-NOGRAVITY
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
FLAF CCDD 1 A_CheckFloor("Burn")
loop
Burn:
FLAF C 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
FLAF CDCDCDCDCDCDCDCDCDCD 2 A_Stop
FLAF EF 2
stop
}
}

actor TurboGroundFireBurn : TurboGroundFire
{
Obituary "$OB_TURBOMAN4"
damagetype "TurbomanGroundFlame"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
FLAF GHIJ 1 A_CheckFloor("Burn")
loop
Burn:
FLAF G 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
FLAF GHIJGHIJGHIJGHIJGHIJGHIJGHIJGHIJGHIJGHIJGHIJ 2 A_Stop
stop
}
}

actor TurboGroundFlameProtect : PowerProtection
{
	powerup.duration 3
	DamageFactor "TurbomanGroundFlame", 0.0
}

actor TurbomanScorchBit : ScorchBit
{
translation "229:229=218:218", "227:227=221:221"
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
FLAF A 1
TNT1 A 1
FLAF B 1
TNT1 A 1
FLAF A 1
TNT1 A 1
FLAF B 1
TNT1 A 1
FLAF A 1
TNT1 A 1
FLAF B 1
FLAF A 1
TNT1 A 1
FLAF B 1
TNT1 A 1
FLAF A 1
TNT1 A 1
FLAF B 1
TNT1 A 1
FLAF A 1
TNT1 A 1
FLAF B 1
stop
}
}

actor TurbomanWheelBit : ScorchBit
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
SCTU NONONONONONONONONONO 1
stop
}
}

actor TurboWheelFX1
{
scale 2.5
-SOLID
+NOGRAVITY
+CLIENTSIDEONLY
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
SCTU A 2
stop
}
}

actor TurboWheelFX2 : TurboWheelFX1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
SCTU B 2
stop
}
}

actor TurboWheelFX3 : TurboWheelFX1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
SCTU C 2
stop
}
}

actor TurboWheelFX4 : TurboWheelFX1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
SCTU D 2
stop
}
}

actor TurboWheelFX5 : TurboWheelFX1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
SCTU E 2
stop
}
}

actor TurboWheelFX6 : TurboWheelFX1
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
SCTU F 2
stop
}
}

actor TurboWheelFX7 : TurboWheelFX1
{
scale 1.75
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
SCTU G 2
stop
}
}

actor TurboWheelFX8 : TurboWheelFX7
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
SCTU H 2
stop
}
}

actor TurboWheelFX9 : TurboWheelFX7
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
SCTU I 2
stop
}
}

actor TurboWheelFX10 : TurboWheelFX7
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
SCTU J 2
stop
}
}

actor TurboWheelFX11 : TurboWheelFX7
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
SCTU K 2
stop
}
}

actor TurboWheelFX12 : TurboWheelFX7
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
SCTU L 2
stop
}
}

actor TurboWheelFX13 : TurboWheelFX7
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileFXCode")
SCTU M 2
stop
}
}

actor TurboMainfireHandler : CustomInventory
{
States
{
Pickup:
BUST B 0 A_JumpIfInventory("Base28Ammo",28,"Pickup2")
goto Pickup1

Pickup1:
BUST B 0 A_FireCustomMissile("TurboWheel",0,1,0,8)
stop

Pickup2:
BUST B 0 A_FireCustomMissile("TurboWheelBurn",0,1,0,8)
stop
}
}

actor TurboAfterBurnPickup : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_GiveInventory("TurboNoNewAfterBurn",1)
TNT1 A 0 A_GiveInventory("TurboNewAfterBurn",1)
TNT1 A 0 A_GiveInventory("TurboAfterBurnDuration",1)
stop
}
}

actor TurboAfterBurnDuration : PowerUp
{
Powerup.Duration 100
}

actor TurboNoNewAfterBurn : PowerUp
{
Powerup.Duration 6
}

actor TurboNewAfterBurn : PowerUp
{
Powerup.Duration 3
}

actor TurboAfterBurnDamageTimer : PowerUp
{
Powerup.Duration 20
}

actor TurboAfterburnFunc : CustomInventory
{
states
{
Pickup:
TNT1 A 0 A_JumpIfInventory("TurboAfterBurnDuration",1,"Pickup2",AAPTR_TRACER)
PickupRemove:
TNT1 A 0 Thing_Remove(0)
stop
Pickup2:
TNT1 A 0 A_JumpIfInventory("TurboNewAfterBurn",1,"PickupRemove",AAPTR_TRACER)
TNT1 A 0 A_JumpIfInventory("TurboAfterBurnDamageTimer",1,"PickupWait")
TNT1 A 0 A_GiveInventory("TurboAfterBurnDamageTimer",1)
TNT1 A 0 A_Warp(AAPTR_TRACER,0,0,ACS_NamedExecuteWithResult("TracerHeightGet")/2,0,0)
TNT1 A 0 A_RadiusGive("AfterBurnImmune",IMMUNE_RADIUS,RGF_PLAYERS|RGF_MONSTERS|RGF_OBJECTS)
TNT1 A 0 A_TakeInventory("AfterBurnImmune",1,0,AAPTR_TRACER)
TNT1 A 0 A_Explode(1,1,0,0,1)
stop
PickupWait:
TNT1 A 0
stop
}
}

actor TurboSuckBox
{
PROJECTILE
radius 1
height 1
speed 0
damage (0)
+NOINTERACTION
States
{
Spawn:
TNT1 A 0
TNT1 A 2 ACS_ExecuteAlways(C_JAX_SUCKRECODE,0,500,10,6)
stop
}
}

actor TurboDriveHitbox
{
species "DustManType"
+THRUSPECIES
Obituary "$OB_TURBOMAN2"
PROJECTILE
+NOEXPLODEFLOOR
+DONTREFLECT
Radius 32
Height 32
scale 2.5
speed 0
damage (35)
Damagetype "TurbomanDrive"
States
{
Spawn:
TNT1 A 2
stop
}
}

Actor TurboAltfireMovement : BaseMovement
{
states
{
itTimeGo:
TNT1 A 0 A_ChangeVelocity(CallACS("VC_XYMob", 40.0),0,momz,CVF_RELATIVE|CVF_REPLACE)//
stop
}
}


actor TurboDriveHitbox2 : TurboDriveHitbox
{
Obituary "$OB_TURBOMAN3"
damage (70)
damagetype "TurbomanUlt"
}

actor TurboDriveProtect : PowerProtection
{
	powerup.duration 35
	DamageFactor "TurbomanDrive", 0.0
}

actor TurboUltProtect : PowerProtection
{
	powerup.duration 35
	DamageFactor "TurbomanUlt", 0.0
}

actor TurboSmoke: BasicClientSide
{
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
TNT1 A 1
SCTU PQRST 2
stop
}
}

actor MM7PinpointThunder
{	
	translation "215:215=229:229", "0:0=230:230"
	PROJECTILE
	scale 2.5
	+PIERCEARMOR
	-DONTBLAST
	+RIPPER
	+FLOORHUGGER
	+NOEXPLODEFLOOR 
	damagetype "MM7Lightning"
	Obituary "$OB_MM7LIGHTNING"
	Speed 0
	Radius 1
	Height 64//100
	Damage (0)
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
		ELEB A 0 A_SpawnItemEx("MM7PinpointThunderFXSpawner",0,0,8,0,0,0,0,1)
		LIBO L 0 A_SpawnItemEx("MM7PinpointThunderExtend", 0, 0, 64, 0, 0, 0, 0, 1)
		ELEB ABCDEFG 1 A_Explode(1000,64,0,0,64)
		stop
	}
}

Actor MM7PinpointThunderExtend : MM7PinpointThunder
{
	-FLOORHUGGER
	+CLIENTSIDEONLY
	+NOINTERACTION
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
		LIBO L 0 A_JumpIf(ceilingz-z <= 32, "Death")
		TNT1 AAAAAAA 0 A_SpawnItemEx("PinpointThunderFX",0,0,0,random(-10,10),random(-10,10),random(5,15),random(0,360))
		LIBO L 0 A_SpawnItemEx("MM7PinpointThunderExtend", 0, 0, 64)
		ELEB ABCDEFG 1
		stop
		Death:
		TNT1 A 0 
		stop
	}
}

actor MM7PinpointThunderFXSpawner : MM7PinpointThunderExtend
{
	States
	{
		Spawn:
		TNT1 AA 0 A_GiveInventory("ProjectileFXCode",1)
		TNT1 AAAAAAA 1 A_SpawnItemEx("PinpointThunderFX",0,0,0,random(-10,10),random(-10,10),random(5,15),random(0,360))
		stop
	}
}

actor TurboUltCooldown : UltBuildCooldownGiver
{
	Powerup.Duration 45
}

actor TurboUltSpeed : PowerSpeed
{
Speed 3.5
}

actor TurboSkidFlameHandler : CustomInventory
{
States
{
Pickup:
BUST B 0 A_CheckFloor("Pickup2")
stop

Pickup2:
BUST B 0 A_SpawnItemEx("TurboTireFlame",-20,-12)
BUST B 0 A_SpawnItemEx("TurboTireFlame",-20,12)
stop
}
}

actor TurboTireFlame
{
PROJECTILE
Obituary "$OB_TURBOMAN5"
radius 16
height 20
damage(1)
damagetype "TurbomanWheel"
scale 1.5
+RIPPER
+NOEXPLODEFLOOR
+FLOORHUGGER
-NOGRAVITY
States
{
Spawn:
TNT1 AA 0 A_GiveInventory("ProjectileCode")
FLAF C 0 A_SpawnItemEx("OilPitIgnite",0,0,8)
FLAF CDCDCDCDCDCDCDCDCDCD 2 A_Stop
FLAF EF 2
stop
}
}

actor TurboManColor : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
+INVENTORY.AUTOACTIVATE
+COUNTITEM
+INVBAR
states
{
Pickup:
TNT1 A 1 ACS_ExecuteAlways(991,0,7847)
stop
}
}

actor TurboGreenColor : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
+INVENTORY.AUTOACTIVATE
+COUNTITEM
+INVBAR
states
{
Pickup:
TNT1 A 1 ACS_ExecuteAlways(971,0,1847)
stop
}
}

actor TurboRedColor : CustomInventory
{
inventory.amount 1
inventory.maxamount 1
+INVENTORY.AUTOACTIVATE
+COUNTITEM
+INVBAR
states
{
Pickup:
TNT1 A 1 ACS_ExecuteAlways(971,0,2847)
stop
}
}

actor TurboUltWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_GiveToTarget("TurboGreenColor")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_GiveToTarget("TurboManColor")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_GiveToTarget("TurboRedColor")
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death")
TNT1 A 1 A_GiveToTarget("TurboManColor")
TNT1 A 0 A_JumpIfInTargetInventory("MediumUltimateAmmo",1,"Spawn")
goto Death

Death:
TNT1 AAA 1 A_GiveToTarget("TurboManColor")
stop
}
}

Actor TurboChargeThing : CustomInventory
{
	States
	{
		Pickup:
		TNT1 A 0 A_JumpIfInventory("TurboAltCharge",1,"Nope")
		TNT1 A 0 A_JumpIf(CheckClass("Turboman"),"Success")
		Goto Nope
		Success:
		TNT1 A 0 A_PlaySoundEx("weapon/thunderbolt","SoundSlot5")
		TNT1 A 0 A_GiveInventory("TurboAltCharge",100)
		TNT1 A 0 A_SpawnItemEx("TurboChargedWatcher")
		Nope: TNT1 A 0
		Stop
	}
}

actor TurboChargedWatcher
{
Height 0
Radius 0
+NOINTERACTION
-SOLID
+NOGRAVITY
+MISSILE
Renderstyle none
reactiontime 35
States
{
Spawn:
TNT1 A 0
TNT1 A 1 A_Warp(AAPTR_TARGET, 0.0,0.0,0.0,0.0,WARPF_NOCHECKPOSITION) 
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_SpawnItemEx("PinpointThunderFX",random(-24,24),random(-24,24),random(0,40),random(0,1),0,random(-1,1),random(0,359))
TNT1 A 0 A_GiveToTarget("TurboGreenColor")
TNT1 A 1 A_Warp(AAPTR_TARGET, 0.0,0.0,0.0,0.0,WARPF_NOCHECKPOSITION) 
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("core_targetexists",0) == 0, "Death") TNT1 A 0 A_SpawnItemEx("PinpointThunderFX",random(-24,24),random(-24,24),random(0,40),random(0,1),0,random(-1,1),random(0,359))
TNT1 A 0 A_GiveToTarget("TurboRedColor")
TNT1 A 0 A_JumpIfInTargetInventory("TurboAltCharge",100,"Spawn")
goto Death
Death:
TNT1 AAA 1 A_GiveToTarget("TurboManColor")
stop
}
}

actor TurboWheel2Protect : PowerProtection
{
	powerup.duration 11
	DamageFactor "TurbomanWheel2", 0.25
}

actor TurboBurn2Protect : PowerProtection
{
	powerup.duration 11
	DamageFactor "TurbomanBurn2", 0.25
}