//Sergeant Mark IV's vehicles.
//If you want to modify and reuse this on your wad, please ask me first.

Actor HeliBase1
{
Scale 1.0
+FORCEXYBILLBOARD
+NOGRAVITY
+NOINTERACTION
+NOTIMEFREEZE
States
{
Spawn:
TNT1 A 0
HEL1 A 1
Stop
}}

Actor HeliBase2: HeliBase1
{
States
{
Spawn:
TNT1 A 0
HEL1 B 1
Stop
}}

Actor HeliBase3: HeliBase1
{
States
{
Spawn:
TNT1 A 0
HEL1 C 1
Stop
}}

Actor HeliBase4: HeliBase1
{
States
{
Spawn:
TNT1 A 0
HEL1 D 1
Stop
}}


Actor HeliBase8
{
States
{
Spawn:
TNT1 A 0
HEL1 A 8
Stop
}}



ACTOR attackhelicopter: Tank 7262
{
    Scale 1.0
	Radius 36
	Height 96
	+SOLID
	+USESPECIAL
	MONSTER
	-COUNTKILL
	+SHOOTABLE
	+LOOKALLAROUND
	+THRUACTORS
	+NOINFIGHTING
	+NORADIUSDMG
	-COUNTKILL
	MaxTargetRange 120
	PainChance "Repair", 255
	BloodType "TankBlood", "TankBlood", "TankBlood"
	Activation THINGSPEC_Activate | THINGSPEC_ThingTargets | THINGSPEC_NoDeathSpecial
	Mass 9999
	Speed 0
	Health 400
	
    States
    {
    Spawn:
	    HELA A 0
		TNT1 A 1
		TNT1 A 0 Thing_ChangeTID(0, 261)
		TNT1 A 0 ACS_NamedExecuteAlways("BDSetNewTankDirection", 0, 0, 0, 0)//Check vehicle initial angle.
		TNT1 A 1 A_ChangeFlag("FRIENDLY", 0)
		TNT1 A 0 A_SpawnItem("HeliBase8")
		TNT1 A 5 
		TNT1 A 0 Thing_ChangeTID(0, 0)
		TNK1 C 0 A_ChangeFlag("THRUACTORS", 0)
		TNT1 A 0 A_ChangeFlag("FRIENDLY", 1)
		Goto StandingHere
		
	  StandingHere:
		TNT1 A 7
		TNT1 A 0 A_SpawnItem("HeliBase8")
		TNT1 A 0 A_SpawnItem("StationedVehicleCheckRepairs")
		Loop
		
	Active:
		TNT1 A 0 
		TNT1 A 0 A_TakeFromTarget("PowerInvulnerable", 1)
		TNT1 A 0 A_GiveToTarget("CeaseMorph", 1)
		//TNT1 A 0 A_Look
		TNT1 A 0 Thing_ChangeTID(0, 261)
		TNT1 A 0 ACS_namedExecuteAlways("GetVehiclePreviousHealth", 0, 0, 0, 0)//Check Vehicle Health	
		//TNT1 A 0 A_Chase("","",CHF_DONTMOVE )
		TNT1 A 0 A_GiveToTarget("CheckingMorphingPlayerHealth", 1)
		HELA A 3
		TNT1 A 0 A_GiveToTarget("attackhelicopterMorpher", 1)
		TNT1 A 0 A_GiveToTarget("HeavyMachinegunAmmo", 999)
		TNT1 A 0 A_GiveToTarget("HelicopterRocketAmmo", 2000)
		TNT1 A 0 A_GiveToTarget("HelicopterMissileAmmo", 8)
		TNT1 A 0 Thing_ChangeTID(0, 261)
		TNT1 A 0 A_NoBlocking
		TNT1 A 1
		TNT1 A 0 A_ChangeFlag("USESPECIAL", 0)
		TNT1 A 10
		TNT1 A 0 Thing_ChangeTID(0, 0)
		TNT1 A 1
		Stop
	Death:	
	TNT1 A 1
	TNT1 A 0 A_SpawnItem("BigExplosion1112")
	TNT1 A 0 A_PlaySound("weapons/explode")
	TNT1 A 0 A_PlaySound("EXPLOSIO", 3)
	TNT1 A 0 A_Scream
	NULL AAAAAA 0 A_CustomMissile ("MetalShard1", 96, 0, random (0, 360), 2, random (0, 180))
	NULL AAAAAA 0 A_CustomMissile ("MetalShard2", 96, 0, random (0, 360), 2, random (0, 180))
	NULL AAAAAAAAA 0 A_CustomMissile ("GlassShard", 96, 0, random (0, 360), 2, random (0, 360))
	TNT1 A 0 A_SpawnItem("DestroyedArmouredVehicle")
	ELEC A 0 A_Explode(100, 250)
	TNT1 A 15
	TNT1 A 0
	Stop	
	
		Pain.Repair:
		 TNT1 A 0
		 TNT1 A 0 A_ChangeFLag("NOPAIN", 1)
		 TNT1 A 0 HealThing(5)
		 HELA A 1
		 TNT1 A 0 HealThing(5)
		 TNT1 A 0 A_ChangeFLag("NOPAIN", 0)
		 Goto StandingHere
	}
}

ACTOR AttackHelicopterRealism: AttackHelicopter
{
Health 4000
}

ACTOR attackhelicopterUsed: attackhelicopter
{
    States
    {
	Spawn:
		TNT1 A 0
	    TNT1 A 1
		TNT1 A 0 ACS_namedExecuteAlways("BDSetBaseAngle", 0, 0, 0, 0)//SpawnVehicleBase
		TNT1 A 0 Thing_ChangeTID(0, 261)
		TNT1 A 1 A_ChangeFlag("FRIENDLY", 0)
		TNT1 A 5 
		TNT1 A 0 Thing_ChangeTID(0, 0)
		TNK1 C 0 A_ChangeFlag("THRUACTORS", 0)
		TNT1 A 0 A_ChangeFlag("FRIENDLY", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("BDCHeckOnline")
		Goto StandingHere
	
	IsOnline:
		TNT1 A 0
		TNT1 A 1
		//TNT1 A 0 A_TAkeInventory("attackhelicopterBaseDirection", 500)
		Goto StandingHere
		
	
	
	Active:
		TNT1 A 0 
		TNT1 A 0 A_TakeFromTarget("PowerInvulnerable", 1)
		TNT1 A 0 A_GiveToTarget("CeaseMorph", 1)
		TTR1 A 0 A_ChangeFlag("FRIENDLY", 0)
		TNT1 A 0 Thing_ChangeTID(0, 261)
		TNT1 A 0 ACS_namedExecuteAlways("GetVehiclePreviousHealth", 0, 0, 0, 0)//Check Vehicle Health
		//TNT1 A 0 A_Chase("","",CHF_DONTMOVE )
		TNT1 A 0 A_GiveToTarget("CheckingMorphingPlayerHealth", 1)
		TNT1 A 3
		TNT1 A 0 A_GiveToTarget("attackhelicopterMorpher", 1)
		TNT1 A 0 Thing_ChangeTID(0, 261)
		TNT1 A 0 A_NoBlocking
		TNT1 A 1
		TNT1 A 0 A_ChangeFlag("USESPECIAL", 0)
		TNT1 A 10
		TNT1 A 0 Thing_ChangeTID(0, 0)
		Stop
	}
}

	


ACTOR PowerattackhelicopterSwitch : PowerMorph {PowerMorph.PlayerClass "Playerattackhelicopter"}



ACTOR attackhelicopterMorpher : CustomInventory 
{
  States
  {
  PickUp:
  TNT1 A 1
  TNT1 A 0 ACS_namedExecuteAlways("BDEnterTank", 0, 0, 0, 0)//Get into attackhelicopter
  TNT1 A 0 A_GiveInventory("attackhelicopterMorphActivation")
  TNT1 A 0 A_SpawnItem("CancelTeleportFog")
  TNT1 A 1
  Stop
  }
 }
 


ACTOR attackhelicopterMorphActivation : PowerupGiver
{
  Powerup.Type "PowerattackhelicopterSwitch"
  Powerup.Duration 252000
  +INVENTORY.AUTOACTIVATE
  +INVENTORY.ALWAYSPICKUP
  Inventory.MaxAmount 1
  Health 100
  GibHealth 1
  Mass 9999
  Height 96
  Radius 32
  States
  {
  Spawn:
  TNT1 A 100
  Stop
  
  PickUp:
  TNT1 A 1
  TNT1 A 1
  Stop
  }
 }
 
 


ACTOR Playerattackhelicopter : PlayerTank
{
	Speed 0.1
	Player.SideMove 0.01
	+FLOAT
	+FLOATBOB
	Scale 1.0
	Radius 36
	Height 96
	Mass 9999
	PainChance 0
	PainChance "HitGround", 255
	Health 400
	player.viewheight	90
    player.attackzoffset 40
	MaxStepHeight 64
	Player.MorphWeapon "attackhelicopterGun"
	damagefactor "HitGround", 3.0
	States
	{
	
	ExitVehicle:
		TNT1 A 0
		TNT1 A 0 SetPlayerProperty(0,1,4)
		TNT1 A 0 A_StopSound(6)
		TNT1 A 0 A_PlaySound("HELSTOP", 4)
		TNT1 A 0 ThrustThingZ(0,-20,0,1)
		HEL1 ABABAB 1 A_SetPitch(0)
		TNT1 A 0 ThrustThingZ(0,-20,0,1)
	    HEL1 ABC 1 A_CheckFloor("IsExiting")
		TNT1 A 0 ThrustThingZ(0,-30,0,1)
	    HEL1 ABC 1 A_CheckFloor("IsExiting")
		TNT1 A 0 ThrustThingZ(0,-40,0,1)
		
		HEL1 ABC 1 A_CheckFloor("IsExiting")
		TNT1 A 0 ThrustThingZ(0,-40,0,1)
		HEL1 ABC 1 A_CheckFloor("IsExiting")
		TNT1 A 0 ThrustThingZ(0,-40,0,1)
		HEL1 ABC 1 A_CheckFloor("IsExiting")
		TNT1 A 0 ThrustThingZ(0,-40,0,1)
		HEL1 ABC 1 A_CheckFloor("IsExiting")
		TNT1 A 0 ThrustThingZ(0,-40,0,1)
		HEL1 ABC 1 A_CheckFloor("IsExiting")
		TNT1 A 0 ThrustThingZ(0,-40,0,1)
		HEL1 ABC 1 A_CheckFloor("IsExiting")
		TNT1 A 0 ThrustThingZ(0,-40,0,1)
		
	   IsExiting:
		HEL1 ABC 2
		TNT1 A 0 ThrustThingZ(0,-50,0,1)
		HEL1 ABC 3
		TNT1 A 0 ThrustThingZ(0,-60,0,1)
		HEL1 ABC 4
		TNT1 A 0 ThrustThingZ(0,-60,0,1)
		HEL1 ABC 5
		TNT1 A 0 ThrustThingZ(0,-20,0,1)
		TNT1 A 0 SetPlayerProperty(0,0,4)
		TNT1 A 0 A_TakeInventory("PowerFlight", 1)
	
		TNT1 A 0 A_TakeInventory("PressedUse", 1)
	
		TNT1 A 0 A_SpawnItemEx ("TransferPlayerOutOfVehicle", 100, 150, 5)
		
		HEL1 A 3
	
		TNT1 A 0 A_JumpIfInventory("CanLeaveVehicle", 1, "CanExit")
		TNT1 A 0 A_Print("Can't leave from this direction", 1)
		TNT1 A 0 A_GiveInventory("HeliRestart",1)
		Goto Stay
	
	CanExit:
		TNT1 A 0
		TNT1 A 2
		TNT1 A 0 A_TakeInventory("PressedUse", 1)
		TNT1 A 0 A_TakeInventory("HelicopterIsFlying", 1)
		TNT1 A 0 A_TakeInventory("CanLeaveVehicle", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("BDLeaveTank")
		TNT1 A 0 A_SpawnItemEx ("attackhelicopterUsed", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
		Goto FinishExit

	FinishExit:
		TNT1 A 0 A_TakeInventory("PressedUse", 1)
		TNT1 AAA 10 A_TakeInventory("PressedUse", 1)
		TNT1 A 0 A_TakeInventory("PressedUse", 1)
		Goto Stay
		
	
	Spawn2: //Taking Off
		HELA A 1
		TNT1 A 0 A_Print ("A", 4, "TUTO3")
	    TNT1 A 0 A_TakeInventory("PressedUse", 1)
		TNT1 A 0 A_TakeInventory("PressedJump", 1)
		TNT1 A 0 A_TakeInventory("TurnRight", 1)
		TNT1 A 0 A_TakeInventory("TurnLeft", 1)
		TNT1 A 0 A_TakeInventory("Accelerate", 1)
		TNT1 A 0 A_TakeInventory("BackPedal", 1)
		HEL1 A 1
		TNT1 A 0 A_TakeInventory("PressedUse", 1)
		TNT1 A 0 A_TakeInventory("FiredTankMainGun", 1)
		TNT1 A 0 SetPlayerProperty(0,1,4)
		TNT1 A 0 A_PlaySound("HELSTAR", 1)
		TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
		HEL1 ABC 6
		HEL1 ABC 5
		HEL1 ABC 4
		HEL1 ABC 3
		TNT1 A 0 A_GiveInventory("PowerFlight", 1)
		TNT1 A 0 ThrustThingZ(0,25,0,1)
		HEL1 ABC 2
		TNT1 A 0 ThrustThingZ(0,25,0,1)
		HEL1 ABCABC 1
		TNT1 A 0 ThrustThingZ(0,25,0,1)
		HEL1 AB 1
		TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
		TNT1 A 0 A_GiveInventory("HelicopterIsFlying", 1)
		TNT1 A 0 A_TakeInventory("PressedUse", 1)
		TNT1 A 0 SetPlayerProperty(0,0,4)
	Goto Stay
	
	
	See:
		TNT1 A 0
		TNT1 A 0 A_SpawnItem("HeliBase1")
		Goto Stay
	
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("HelicopterIsFlying", 1, "Stay")
		Goto Spawn2
		
	Stay:
		HEL1 ABC 1
		TNT1 A 0 A_CustomMissile ("HelicopterHitDetection", 70, 0, 0, 2, 0)
		TNT1 A 0 A_CustomMissile ("HelicopterHitDetection", 70, 0, 90, 2, 0)
		TNT1 A 0 A_CustomMissile ("HelicopterHitDetection", 70, 0, 45, 2, 0)
		TNT1 A 0 A_CustomMissile ("HelicopterHitDetection", 70, 0, 135, 2, 0)
		TNT1 A 0 A_CustomMissile ("HelicopterHitDetection", 70, 0, 180, 2, 0)
		TNT1 A 0 A_CustomMissile ("HelicopterHitDetection", 70, 0, 225, 2, 0)
		TNT1 A 0 A_CustomMissile ("HelicopterHitDetection", 70, 0, 270, 2, 0)
		TNT1 A 0 A_CustomMissile ("HelicopterHitDetection", 70, 0, 315, 2, 0)
		TNT1 A 0 A_CustomMissile ("HelicopterHitDetectionGround", 0, 0, 0, 2, -45)
		TNT1 A 0 A_PlaySound("HELILOP", 6, 1, 1)
		TNT1 A 0 A_PlaySound("HELILOP2", 7, 1, 1)
		TNT1 A 0 A_GiveInventory("PowerFlight", 1)
		//Check buttons pressed
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("Accelerate", 1, 3)//CheckAccel#16
		TNT1 A 0 A_JumpIfInventory("Backpedal", 1, 3)//CheckDecel#17
		Goto Stay+18	//None
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, 7)//None+CheckLeft#18
		Goto Stay+21	//None+NotLeft
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, 9)//Accel+CheckLeft#19
		Goto Stay+22	//Accel+NotLeft
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, 11)//Decel+CheckLeft#20
		Goto Stay+23	//Decel+NotLeft
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, 5)//None+CheckRight#21
		Goto Stay+24 	//None+None
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, 7)//Accel+CheckRight#22
		Goto Stay+27	//Accel+None
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, 9)//Decel+CheckRight#23
		Goto Stay+30	//Decel+None
		
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 9)//None+None+CheckForward#24
		Goto Stay+42	//None+None+NotForward
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 9)//None+Left+CheckForward#25
		Goto Stay+43	//None+Left+NotForward
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 9)//None+Right+CheckForward#26
		Goto Stay+44	//None+Right+NotForward
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 9)//Accel+None+CheckForward#27
		Goto Stay+45	//Accel+None+NotForward
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 9)//Accel+Left+CheckForward#28
		Goto Stay+46	//Accel+Left+NotForward
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 9)//Accel+Right+CheckForward#29
		Goto Stay+47	//Accel+Right+NotForward
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 9)//Decel+None+CheckForward#30
		Goto Stay+48	//Decel+None+NotForward
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 9)//Decel+Left+CheckForward#31
		Goto Stay+49	//Decel+Left+NotForward
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 9)//Decel+Right+CheckForward#32
		Goto Stay+50	//Decel+Right+NotForward
		
		NULL A 0 A_JumpIf (pitch > 270, "Backward")//None+None+ZandronumCheckForward#33
		Goto Forward
		NULL A 0 A_JumpIf (pitch > 270, "BackwardLeft")//None+Left+ZandronumCheckForward#34
		Goto ForwardLeft
		NULL A 0 A_JumpIf (pitch > 270, "BackwardRight")//None+Right+ZandronumCheckForward#35
		Goto ForwardRight
		NULL A 0 A_JumpIf (pitch > 270, "GoUpBack")//Accel+None+ZandronumCheckForward#36
		Goto GoUpAccel
		NULL A 0 A_JumpIf (pitch > 270, "GoUpBackwardLeft")//Accel+Left+ZandronumCheckForward#37
		Goto GoUpForwardLeft
		NULL A 0 A_JumpIf (pitch > 270, "GoUpBackwardRight")//Accel+Right+ZandronumCheckForward#38
		Goto GoUpForwardRight
		NULL A 0 A_JumpIf (pitch > 270, "GoDownBack")//Decel+None+ZandronumCheckForward#39
		Goto GoDownAccel
		NULL A 0 A_JumpIf (pitch > 270, "GoDownBackwardLeft")//Decel+Left+ZandronumCheckForward#40
		Goto GoDownForwardLeft
		NULL A 0 A_JumpIf (pitch > 270, "GoDownBackwardRight")//Decel+Right+ZandronumCheckForward#41
		Goto GoDownForwardRight
		
		NULL A 0 A_JumpIf (pitch < -6, "Backward")//None+None+CheckBackward#42
		Loop
		NULL A 0 A_JumpIf (pitch < -6, "BackwardLeft")//None+Left+CheckBackward#43
		Goto TurnLeft
		NULL A 0 A_JumpIf (pitch < -6, "BackwardRight")//None+Right+CheckBackward#44
		Goto TurnRight
		NULL A 0 A_JumpIf (pitch < -6, "GoUpBack")//Accel+None+CheckBackward#45
		Goto GoUp
		NULL A 0 A_JumpIf (pitch < -6, "GoUpBackwardLeft")//Accel+Left+CheckBackward#46
		Goto GoUpLeft
		NULL A 0 A_JumpIf (pitch < -6, "GoUpBackwardRight")//Accel+Right+CheckBackward#47
		Goto GoUpRight
		NULL A 0 A_JumpIf (pitch < -6, "GoDownBack")//Decel+None+CheckBackward#48
		Goto GoDown
		NULL A 0 A_JumpIf (pitch < -6, "GoDownBackwardLeft")//Decel+Left+CheckBackward#49
		Goto GoDownLeft
		NULL A 0 A_JumpIf (pitch < -6, "GoDownBackwardRight")//Decel+Right+CheckBackward#50
		Goto GoDownRight
		
	TurnLeft:
		TNT1 A 0 ACS_NamedExecuteAlways("HeliRollLeft", 0, 0, 0, 0)
		TNT1 A 0 A_GiveInventory("HeliIsLeft", 1)
		HELH A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
	KeepLeft:
		HEL1 ABC 1
		TNT1 A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("Accelerate", 1, 6)
		TNT1 A 0 A_JumpIfInventory("Backpedal", 1, 5)
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, 4)
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 3)
		NULL A 0 A_JumpIf (pitch < -6, 2)
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, "KeepLeft")
		TNT1 A 0 A_TakeInventory("HeliIsLeft", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("HeliStopLeft", 0, 0, 0, 0)
		HELH A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
		Goto Stay
	
	//When pressing A while looking down
	ForwardLeft:
		TNT1 A 0 ACS_NamedExecuteAlways("HeliRollLeft", 0, 0, 0, 0)
		TNT1 A 0 A_GiveInventory("HeliIsLeft", 1)
		HELH A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
	KeepForwardLeft:
		TNT1 A 0 A_Recoil(-pitch/6)
		HEL1 ABC 1 A_Recoil(-1)
		TNT1 A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("Accelerate", 1, 7)
		TNT1 A 0 A_JumpIfInventory("Backpedal", 1, 6)
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, 5)
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 2)
		NULL A 0 A_JumpIf (pitch < -6, 3)
		Goto Stay
		NULL A 0 A_JumpIf (pitch > 270, 2)
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, "KeepForwardLeft")//#12
		TNT1 A 0 A_TakeInventory("HeliIsLeft", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("HeliStopLeft", 0, 0, 0, 0)
		HELH A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
		Goto Stay
	
	//When pressing A while looking up
	BackwardLeft:
		TNT1 A 0 ACS_NamedExecuteAlways("HeliRollLeft", 0, 0, 0, 0)
		TNT1 A 0 A_GiveInventory("HeliIsLeft", 1)
		HELH A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
	KeepBackwardLeft:
		TNT1 A 0 A_JumpIf(Pitch > 270,5)
		TNT1 A 0 A_Recoil(-pitch/6)			//GZDoom
		HEL1 ABC 1 A_Recoil(1)
		Goto KeepBackwardLeft+9
		TNT1 A 0 A_Recoil((360-pitch)/6)	//Zandronum
		HEL1 ABC 1 A_Recoil(1)
		TNT1 A 0 ThrustThing(angle*256/360+64, 3, 1, 0)//#9
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("Accelerate", 1, 6)
		TNT1 A 0 A_JumpIfInventory("Backpedal", 1, 5)
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, 4)
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 1)
		Goto KeepBackwardLeft+16
		NULL A 0 A_JumpIf (pitch > 270, 1)
		Goto KeepBackwardLeft+17
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, "KeepBackwardLeft")//#16
		TNT1 A 0 A_TakeInventory("HeliIsLeft", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("HeliStopLeft", 0, 0, 0, 0)
		HELH A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
		Goto Stay
	
	//When pressing A + W
	GoUpLeft:
		TNT1 A 0 ACS_NamedExecuteAlways("HeliRollLeft", 0, 0, 0, 0)
		TNT1 A 0 A_GiveInventory("HeliIsLeft", 1)
		HELH A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
	KeepGoUpLeft:
		TNT1 A 0 ThrustTHingZ(0, 10, 0, 1)
		HEL1 ABC 1
		TNT1 A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("Accelerate", 1, 1)
		Goto KeepGoUpLeft+12
		TNT1 A 0 A_JumpIfInventory("Backpedal", 1, 5)
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, 4)
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 3)
		NULL A 0 A_JumpIf (pitch < -6, 2)
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, "KeepGoUpLeft")//#11
		TNT1 A 0 A_TakeInventory("HeliIsLeft", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("HeliStopLeft", 0, 0, 0, 0)
		HELH A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
		Goto Stay
	
	//When pressing A + W while looking down
	GoUpForwardLeft:
		TNT1 A 0 ACS_NamedExecuteAlways("HeliRollLeft", 0, 0, 0, 0)
		TNT1 A 0 A_GiveInventory("HeliIsLeft", 1)
		HELH A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
	KeepGoUpForwardLeft:
		TNT1 A 0 ThrustTHingZ(0, 10, 0, 1)
		TNT1 A 0 A_Recoil(-pitch/6)
		HEL1 ABC 1 A_Recoil(-1)
		TNT1 A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("Accelerate", 1, 1)
		Goto KeepGoUpForwardLeft+14
		TNT1 A 0 A_JumpIfInventory("Backpedal", 1, 6)
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, 5)
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 2)
		NULL A 0 A_JumpIf (pitch < -6, 3)
		Goto Stay
		NULL A 0 A_JumpIf (pitch > 270, 2)
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, "KeepGoUpForwardLeft")//#13
		TNT1 A 0 A_TakeInventory("HeliIsLeft", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("HeliStopLeft", 0, 0, 0, 0)
		HELH A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
		Goto Stay
	
	//When pressing A + W while looking up
	GoUpBackwardLeft:
		TNT1 A 0 ACS_NamedExecuteAlways("HeliRollLeft", 0, 0, 0, 0)
		TNT1 A 0 A_GiveInventory("HeliIsLeft", 1)
		HELH A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
	KeepGoUpBackwardLeft:
		TNT1 A 0 ThrustTHingZ(0, 10, 0, 1)
		TNT1 A 0 A_JumpIf(pitch > 270, 5)
		TNT1 A 0 A_Recoil(-pitch/6)			//GZDoom
		HEL1 ABC 1 A_Recoil(1)
		Goto KeepGoUpBackwardLeft+10
		TNT1 A 0 A_Recoil((360-pitch)/6)	//Zandronum
		HEL1 ABC 1 A_Recoil(1)
		TNT1 A 0 ThrustThing(angle*256/360+64, 3, 1, 0)//#10
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("Accelerate", 1, 1)
		Goto KeepGoUpBackwardLeft+19
		TNT1 A 0 A_JumpIfInventory("Backpedal", 1, 5)
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, 4)
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 1)
		Goto KeepGoUpBackwardLeft+18
		NULL A 0 A_JumpIf (pitch > 270, 1)
		Goto KeepGoUpBackwardLeft+19
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, "KeepGoUpBackwardLeft")//#18
		TNT1 A 0 A_TakeInventory("HeliIsLeft", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("HeliStopLeft", 0, 0, 0, 0)
		HELH A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
		Goto Stay
	
	//When pressing A + S
	GoDownLeft:
		TNT1 A 0 ACS_NamedExecuteAlways("HeliRollLeft", 0, 0, 0, 0)
		TNT1 A 0 A_GiveInventory("HeliIsLeft", 1)
		HELH A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
	KeepGoDownLeft:
		TNT1 A 0 ThrustTHingZ(0, -15, 0, 1)
		HEL1 ABC 1
		TNT1 A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("Accelerate", 1, 6)
		TNT1 A 0 A_JumpIfInventory("Backpedal", 1, 1)
		Goto KeepGoDownLeft+12
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, 4)
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 3)
		NULL A 0 A_JumpIf (pitch < -6, 2)
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, "KeepGoDownLeft")//#11
		TNT1 A 0 A_TakeInventory("HeliIsLeft", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("HeliStopLeft", 0, 0, 0, 0)
		HELH A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
		Goto Stay
	
	//When pressing A + S while looking down
	GoDownForwardLeft:
		NULL A 0 A_JumpIf (pitch > 270, "GoDownBackwardLeft")
		TNT1 A 0 ACS_NamedExecuteAlways("HeliRollLeft", 0, 0, 0, 0)
		TNT1 A 0 A_GiveInventory("HeliIsLeft", 1)
		HELH A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
	KeepGoDownForwardLeft:
		TNT1 A 0 ThrustTHingZ(0, -15, 0, 1)
		TNT1 A 0 A_Recoil(-pitch/6)
		HEL1 ABC 1 A_Recoil(-1)
		TNT1 A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("Accelerate", 1, 7)
		TNT1 A 0 A_JumpIfInventory("Backpedal", 1, 1)
		Goto KeepGoDownForwardLeft+14
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, 5)
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 2)
		NULL A 0 A_JumpIf (pitch < -6, 3)
		Goto Stay
		NULL A 0 A_JumpIf (pitch > 270, 2)
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, "KeepGoDownForwardLeft")//#13
		TNT1 A 0 A_TakeInventory("HeliIsLeft", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("HeliStopLeft", 0, 0, 0, 0)
		HELH A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
		Goto Stay
	
	//When pressing A + S while looking up
	GoDownBackwardLeft:
		TNT1 A 0 ACS_NamedExecuteAlways("HeliRollLeft", 0, 0, 0, 0)
		TNT1 A 0 A_GiveInventory("HeliIsLeft", 1)
		HELH A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
	KeepGoDownBackwardLeft:
		TNT1 A 0 ThrustTHingZ(0, -15, 0, 1)
		TNT1 A 0 A_JumpIf(pitch > 270, 5)
		TNT1 A 0 A_Recoil(-pitch/6)			//GZDoom
		HEL1 ABC 1 A_Recoil(1)
		Goto KeepGoDownBackwardLeft+10
		TNT1 A 0 A_Recoil((360-pitch)/6)	//Zandronum
		HEL1 ABC 1 A_Recoil(1)
		TNT1 A 0 ThrustThing(angle*256/360+64, 3, 1, 0)//#10
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("Accelerate", 1, 6)
		TNT1 A 0 A_JumpIfInventory("Backpedal", 1, 1)
		Goto KeepGoDownBackwardLeft+19
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, 4)
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 1)
		Goto KeepGoDownBackwardLeft+18
		NULL A 0 A_JumpIf (pitch > 270, 1)
		Goto KeepGoDownBackwardLeft+19
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, "KeepGoDownBackwardLeft")//#18
		TNT1 A 0 A_TakeInventory("HeliIsLeft", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("HeliStopLeft", 0, 0, 0, 0)
		HELH A 0 ThrustThing(angle*256/360+64, 3, 1, 0)
		Goto Stay
		
	TurnRight:
		TNT1 A 0 ACS_NamedExecuteAlways("HeliRollRight", 0, 0, 0, 0)
		TNT1 A 0 A_GiveInventory("HeliIsRight", 1)
		HELH A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
	KeepRight:
		HEL1 ABC 1
		TNT1 A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("Accelerate", 1, 6)
		TNT1 A 0 A_JumpIfInventory("Backpedal", 1, 5)
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, 4)
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 3)
		NULL A 0 A_JumpIf (pitch < -6, 2)
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, "KeepRight")
		TNT1 A 0 A_TakeInventory("HeliIsRight", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("HeliStopRight", 0, 0, 0, 0)
		HELH A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
		Goto Stay
	
	//When pressing D while looking down
	ForwardRight:
		TNT1 A 0 ACS_NamedExecuteAlways("HeliRollRight", 0, 0, 0, 0)
		TNT1 A 0 A_GiveInventory("HeliIsRight", 1)
		HELH A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
	KeepForwardRight:
		TNT1 A 0 A_Recoil(-pitch/6)
		HEL1 ABC 1 A_Recoil(-1)
		TNT1 A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("Accelerate", 1, 7)
		TNT1 A 0 A_JumpIfInventory("Backpedal", 1, 6)
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, 5)
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 2)
		NULL A 0 A_JumpIf (pitch < -6, 3)
		Goto Stay
		NULL A 0 A_JumpIf (pitch > 270, 2)
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, "KeepForwardRight")//#12
		TNT1 A 0 A_TakeInventory("HeliIsRight", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("HeliStopRight", 0, 0, 0, 0)
		HELH A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
		Goto Stay
	
	//When pressing D while looking up
	BackwardRight:
		TNT1 A 0 ACS_NamedExecuteAlways("HeliRollRight", 0, 0, 0, 0)
		TNT1 A 0 A_GiveInventory("HeliIsRight", 1)
		HELH A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
	KeepBackwardRight:
		TNT1 A 0 A_JumpIf(Pitch > 270,5)
		TNT1 A 0 A_Recoil(-pitch/6)			//GZDoom
		HEL1 ABC 1 A_Recoil(1)
		Goto KeepBackwardRight+9
		TNT1 A 0 A_Recoil((360-pitch)/6)	//Zandronum
		HEL1 ABC 1 A_Recoil(1)
		TNT1 A 0 ThrustThing(angle*256/360+192, 3, 1, 0)//#9
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("Accelerate", 1, 6)
		TNT1 A 0 A_JumpIfInventory("Backpedal", 1, 5)
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, 4)
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 1)
		Goto KeepBackwardRight+16
		NULL A 0 A_JumpIf (pitch > 270, 1)
		Goto KeepBackwardRight+17
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, "KeepBackwardRight")//#16
		TNT1 A 0 A_TakeInventory("HeliIsRight", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("HeliStopRight", 0, 0, 0, 0)
		HELH A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
		Goto Stay
	
	//When pressing D + W
	GoUpRight:
		TNT1 A 0 ACS_NamedExecuteAlways("HeliRollRight", 0, 0, 0, 0)
		TNT1 A 0 A_GiveInventory("HeliIsRight", 1)
		HELH A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
	KeepGoUpRight:
		TNT1 A 0 ThrustTHingZ(0, 10, 0, 1)
		HEL1 ABC 1
		TNT1 A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("Accelerate", 1, 1)
		Goto KeepGoUpRight+12
		TNT1 A 0 A_JumpIfInventory("Backpedal", 1, 5)
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, 4)
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 3)
		NULL A 0 A_JumpIf (pitch < -6, 2)
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, "KeepGoUpRight")//#11
		TNT1 A 0 A_TakeInventory("HeliIsRight", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("HeliStopRight", 0, 0, 0, 0)
		HELH A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
		Goto Stay
	
	//When pressing D + W while looking down
	GoUpForwardRight:
		TNT1 A 0 ACS_NamedExecuteAlways("HeliRollRight", 0, 0, 0, 0)
		TNT1 A 0 A_GiveInventory("HeliIsRight", 1)
		HELH A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
	KeepGoUpForwardRight:
		TNT1 A 0 ThrustTHingZ(0, 10, 0, 1)
		TNT1 A 0 A_Recoil(-pitch/6)
		HEL1 ABC 1 A_Recoil(-1)
		TNT1 A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("Accelerate", 1, 1)
		Goto KeepGoUpForwardRight+14
		TNT1 A 0 A_JumpIfInventory("Backpedal", 1, 6)
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, 5)
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 2)
		NULL A 0 A_JumpIf (pitch < -6, 3)
		Goto Stay
		NULL A 0 A_JumpIf (pitch > 270, 2)
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, "KeepGoUpForwardRight")//#13
		TNT1 A 0 A_TakeInventory("HeliIsRight", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("HeliStopRight", 0, 0, 0, 0)
		HELH A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
		Goto Stay
	
	//When pressing D + W while looking up
	GoUpBackwardRight:
		TNT1 A 0 ACS_NamedExecuteAlways("HeliRollRight", 0, 0, 0, 0)
		TNT1 A 0 A_GiveInventory("HeliIsRight", 1)
		HELH A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
	KeepGoUpBackwardRight:
		TNT1 A 0 ThrustTHingZ(0, 10, 0, 1)
		TNT1 A 0 A_JumpIf(pitch > 270, 5)
		TNT1 A 0 A_Recoil(-pitch/6)			//GZDoom
		HEL1 ABC 1 A_Recoil(1)
		Goto KeepGoUpBackwardRight+10
		TNT1 A 0 A_Recoil((360-pitch)/6)	//Zandronum
		HEL1 ABC 1 A_Recoil(1)
		TNT1 A 0 ThrustThing(angle*256/360+192, 3, 1, 0)//#10
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("Accelerate", 1, 1)
		Goto KeepGoUpBackwardRight+19
		TNT1 A 0 A_JumpIfInventory("Backpedal", 1, 5)
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, 4)
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 1)
		Goto KeepGoUpBackwardRight+18
		NULL A 0 A_JumpIf (pitch > 270, 1)
		Goto KeepGoUpBackwardRight+19
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, "KeepGoUpBackwardRight")//#18
		TNT1 A 0 A_TakeInventory("HeliIsRight", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("HeliStopRight", 0, 0, 0, 0)
		HELH A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
		Goto Stay
	
	//When pressing D + S
	GoDownRight:
		TNT1 A 0 ACS_NamedExecuteAlways("HeliRollRight", 0, 0, 0, 0)
		TNT1 A 0 A_GiveInventory("HeliIsRight", 1)
		HELH A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
	KeepGoDownRight:
		TNT1 A 0 ThrustTHingZ(0, -15, 0, 1)
		HEL1 ABC 1
		TNT1 A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("Accelerate", 1, 6)
		TNT1 A 0 A_JumpIfInventory("Backpedal", 1, 1)
		Goto KeepGoDownRight+12
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, 4)
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 3)
		NULL A 0 A_JumpIf (pitch < -6, 2)
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, "KeepGoDownRight")//#11
		TNT1 A 0 A_TakeInventory("HeliIsRight", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("HeliStopRight", 0, 0, 0, 0)
		HELH A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
		Goto Stay
	
	//When pressing D + S while looking down
	GoDownForwardRight:
		NULL A 0 A_JumpIf (pitch > 270, "GoDownBackwardRight")
		TNT1 A 0 ACS_NamedExecuteAlways("HeliRollRight", 0, 0, 0, 0)
		TNT1 A 0 A_GiveInventory("HeliIsRight", 1)
		HELH A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
	KeepGoDownForwardRight:
		TNT1 A 0 ThrustTHingZ(0, -15, 0, 1)
		TNT1 A 0 A_Recoil(-pitch/6)
		HEL1 ABC 1 A_Recoil(-1)
		TNT1 A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("Accelerate", 1, 7)
		TNT1 A 0 A_JumpIfInventory("Backpedal", 1, 1)
		Goto KeepGoDownForwardRight+14
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, 5)
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 2)
		NULL A 0 A_JumpIf (pitch < -6, 3)
		Goto Stay
		NULL A 0 A_JumpIf (pitch > 270, 2)
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, "KeepGoDownForwardRight")//#13
		TNT1 A 0 A_TakeInventory("HeliIsRight", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("HeliStopRight", 0, 0, 0, 0)
		HELH A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
		Goto Stay
	
	//When pressing D + S while looking up
	GoDownBackwardRight:
		TNT1 A 0 ACS_NamedExecuteAlways("HeliRollRight", 0, 0, 0, 0)
		TNT1 A 0 A_GiveInventory("HeliIsRight", 1)
		HELH A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
	KeepGoDownBackwardRight:
		TNT1 A 0 ThrustTHingZ(0, -15, 0, 1)
		TNT1 A 0 A_JumpIf(pitch > 270, 5)
		TNT1 A 0 A_Recoil(-pitch/6)			//GZDoom
		HEL1 ABC 1 A_Recoil(1)
		Goto KeepGoDownBackwardRight+10
		TNT1 A 0 A_Recoil((360-pitch)/6)	//Zandronum
		HEL1 ABC 1 A_Recoil(1)
		TNT1 A 0 ThrustThing(angle*256/360+192, 3, 1, 0)//#10
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
		TNT1 A 0 A_JumpIfInventory("Accelerate", 1, 6)
		TNT1 A 0 A_JumpIfInventory("Backpedal", 1, 1)
		Goto KeepGoDownBackwardRight+19
		TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, 4)
		NULL A 0 A_JumpIf (pitch > 4 && pitch < 354, 1)
		Goto KeepGoDownBackwardRight+18
		NULL A 0 A_JumpIf (pitch > 270, 1)
		Goto KeepGoDownBackwardRight+19
		TNT1 A 0 A_JumpIfInventory("TurnRight", 1, "KeepGoDownBackwardRight")//#18
		TNT1 A 0 A_TakeInventory("HeliIsRight", 1)
		TNT1 A 0 ACS_NamedExecuteAlways("HeliStopRight", 0, 0, 0, 0)
		HELH A 0 ThrustThing(angle*256/360+192, 3, 1, 0)
		Goto Stay
	
	Forward:
		HEL1 A 0
		TNT1 A 0 A_Recoil(-pitch/3)
		HEL1 ABC 1 A_Recoil(-1)
		Goto Stay
	
	Backward:
		HEL1 A 0
		NULL A 0 A_JumpIf (pitch > 270, 5)
		TNT1 A 0 A_Recoil(-pitch/3)			//GZDoom
		HEL1 ABC 1 A_Recoil(1)
		Goto Stay
		TNT1 A 0 A_Recoil((360-Pitch)/3)	//Zandro
		HEL1 ABC 1 A_Recoil(1)
		Goto Stay
		
	GoUp:
		HEL1 A 0
		TNT1 A 0 A_TakeInventory("Accelerate", 1)
		TNT1 A 0 A_TakeInventory("BACKPEDAL", 1)
		TNT1 A 0 ThrustTHingZ(0, 20, 0, 1)
		HEL1 ABC 1
		Goto Stay
	
	//When pressing W while looking down
	GoUpAccel:
		HEL1 A 0
		TNT1 A 0 A_TakeInventory("Accelerate", 1)
		TNT1 A 0 A_TakeInventory("BACKPEDAL", 1)
		TNT1 A 0 ThrustTHingZ(0, 10, 0, 1)
		TNT1 A 0 A_Recoil(-pitch/6)
		HEL1 ABC 1 A_Recoil(-1)
		Goto Stay
		
	//When pressing W while looking up
	GoUpBack:
		HEL1 A 0
		TNT1 A 0 A_TakeInventory("Accelerate", 1)
		TNT1 A 0 A_TakeInventory("BACKPEDAL", 1)
		TNT1 A 0 ThrustTHingZ(0, 10, 0, 1)
		NULL A 0 A_JumpIf (pitch > 270, 5)
		TNT1 A 0 A_Recoil(-pitch/6)			//GZDoom
		HEL1 ABC 1 A_Recoil(1)
		Goto Stay
		TNT1 A 0 A_Recoil((360-Pitch)/6)	//Zandronum
		HEL1 ABC 1 A_Recoil(1)
		Goto Stay
		
	GoDown:
		HEL1 A 0
		TNT1 A 0 A_TakeInventory("Accelerate", 1)
		TNT1 A 0 A_TakeInventory("BACKPEDAL", 1)
		TNT1 A 0 ThrustTHingZ(0, -25, 0, 1)
		HEL1 ABC 1
		Goto Stay
		
	//When pressing S while looking down	
	GoDownAccel:
		HEL1 A 0
		TNT1 A 0 A_TakeInventory("Accelerate", 1)
		TNT1 A 0 A_TakeInventory("BACKPEDAL", 1)
		TNT1 A 0 ThrustTHingZ(0, -15, 0, 1)
		TNT1 A 0 A_Recoil(-pitch/6)
		HEL1 ABC 1 A_Recoil(-1)
		Goto Stay	
		
	//When pressing S while looking up	
	GoDownBack:
		HEL1 A 0
		TNT1 A 0 A_TakeInventory("Accelerate", 1)
		TNT1 A 0 A_TakeInventory("BACKPEDAL", 1)
		TNT1 A 0 ThrustTHingZ(0, -15, 0, 1)
		NULL A 0 A_JumpIf (pitch > 270, 5)
		TNT1 A 0 A_Recoil(-pitch/6)			//GZDoom
		HEL1 ABC 1 A_Recoil(1)
		Goto Stay
		TNT1 A 0 A_Recoil((360-Pitch)/6)	//Zandronum
		HEL1 ABC 1 A_Recoil(1)
		Goto Stay
		
	Pain.HitGround:
		PLAY G 0
		TNT1 A 0 ThrustThingZ(0,60,0,1)
		HEL1 A 1 A_Pain
		Goto Stay
	
		
	Death:
	XDeath:
	TNT1 A 0
	
	TNT1 A 0 A_StopSound(6)
	TNT1 A 0 A_StopSound(7)
	TNT1 A 0 A_TakeInventory("AttackhelicopterGun", 1)
	TNT1 A 0 SetPlayerProperty(0,0,4)
	TNT1 A 0 A_PlaySound("HELSTOP", 6)
	TNT1 A 0 A_ChangeFlag("QUARTERGRAVITY", 1)
	
	falling:
	TNT1 A 0 A_Scream
	TNT1 A 0 A_ClearTarget
	TNT1 A 0 A_NoBlocking
	HEL1 AB 1 A_CustomMissile ("FlamethrowerFireParticles", 32, 0, random (0, 360), 2, random (0, 180))
	TNT1 A 0 A_SetAngle(10 + angle)
	HEL1 CD 1 A_CustomMissile ("FlamethrowerFireParticles", 32, 0, random (0, 360), 2, random (0, 180))
	TNT1 A 0 A_SetAngle(10 + angle)
	TNT1 A 0 A_CheckFloor("Crashed")
	Loop
	
	Crashed:
	TNT1 A 0 A_SpawnItem("BigExplosion1112")
	TNT1 A 0 A_PlaySound("weapons/explode")
	TNT1 A 0 A_PlaySound("EXPLOSIO", 3)
	
	NULL AAAAAA 0 A_CustomMissile ("MetalShard1", 96, 0, random (0, 360), 2, random (0, 180))
	NULL AAAAAA 0 A_CustomMissile ("MetalShard2", 96, 0, random (0, 360), 2, random (0, 180))
	NULL AAAAAAAAA 0 A_CustomMissile ("GlassShard", 96, 0, random (0, 360), 2, random (0, 360))
	TNT1 A 0 A_StopSound(6)
	ELEC A 0 A_Explode(100, 250)
	TNT1 A 0 A_SpawnItem("DestroyedAircraft")
	8762 A 500
	8762 A 2000
	8762 A -1
	Stop
	
	}
}


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Vehicle's weapons and misc
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

ACTOR attackhelicopterGun : DoomWeapon
{
	Game Doom
	Weapon.SelectionOrder 1900
	Weapon.AmmoUse1 0
	Weapon.AmmoGive1 0
	Weapon.AmmoUse2 0
	Weapon.AmmoGive2 0
	Weapon.AmmoType2 "HelicopterRocketAmmo"
	Weapon.AmmoType1 "HeavyMachinegunAmmo"
	Obituary "$OB_MPPISTOL"
	+WEAPON.AMMO_OPTIONAL
	+WEAPON.ALT_AMMO_OPTIONAL
	//+WEAPON.NOAUTOFIRE
	Inventory.Pickupmessage "$PICKUP_PISTOL_DROPPED"
	Tag "$TAG_PISTOL"
	States
	{
	Spawn:
		LAUN A -1
		Stop
		
	Ready:
		HELH A 56
		TNT1 A 0 A_TakeInventory("PressedUse", 1)
		TNT1 A 0 A_TakeInventory("Kicking", 1)
		TNT1 A 0 A_TakeInventory("FiredPrimary", 1)
		TNT1 A 0 A_TakeInventory("FiredSecondary", 1)
		TNT1 A 0 A_TakeInventory("HeliRestart",1)
		TNT1 A 0 A_Print("Weapons Online", 2)
		TNT1 A 0 A_GunFlash
	Ready2:
		HELH A 2 A_WeaponReady(1)
		TNT1 A 0 A_JumpIfInventory("FiredSecondary", 1, "Rocket1")
		TNT1 A 0 A_JumpIfInventory("Kicking", 1, "Missile1")
		TNT1 A 0 A_JumpIfInventory("HeliRestart",1,1)
		Loop
		TNT1 A 0
		Goto Ready+1
		
	NotReady:
		TNT1 A 1 //A_GiveInventory("attackhelicopterReady", 1)
		Goto Ready2
		
	Deselect:
		TNT1 A 1 A_Lower
		TNT1 A 0 SetPlayerProperty(0,0,4)
		Loop
	Select:
		HELH AAAAAAAAAAAA 0 A_Raise
		TNT1 A 0 SetPlayerProperty(0,1,4)
		HELH AAA 1 A_Raise
		TNT1 A 0
		Goto Ready
		
	NoAmmo:
		HELH A 1
		TNT1 A 0 A_Print("Ammunition Depleted", 2)
		Goto Ready2 
			
	NoRocket:
		HELH A 1
		TNT1 A 0 A_Print("Rockets Depleted", 2)
		Goto Ready2 
		
	NoMissile:
		HELH A 1
		TNT1 A 0 A_Print("Missiles Depleted", 2)
		Goto Ready2 	
	
	
	Fire:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInventory("HeavyMachinegunAmmo", 1, 1)
		Goto NoAmmo
		TNT1 A 0 A_PlaySound("ACANO1", 1)
		TNT1 A 0 A_PlaySound("FARCAN1", 4)
		TNT1 A 0 A_TakeInventory("HeavyMachinegunAmmo", 1)
		TNT1 A 0 A_SpawnItemEx("AutoCannonCaseSpawn", 0, 0, 0, 0, 0, 0, 0)
		TNT1 A 0 A_FireCustomMissile("AutoCannonProjectile", 0, 0, 0, -35, 0, 1)
		TNT1 AA 0 A_FireCustomMissile("HeavyMachinegunFlash", 0, 0, 0, -35)
		HELH A 1 A_GiveInventory("TankReady", 1)
		HELH AA 1 A_GiveInventory("TankReady", 1)
		Goto Ready2
		
	Rocket1:	
		TNT1 A 0
		TNT1 A 0 A_TakeInventory("FIredSecondary", 1)
		TNT1 A 0 A_JumpIfInventory("HelicopterRocketAmmo", 1, 1)
		Goto NoRocket
		TNT1 A 0 A_PlaySound("MISLFIRE", 1)
		TNT1 A 0 A_TakeInventory("HelicopterRocketAmmo", 1)
		
		TNT1 A 0 A_JumpIfInventory("Token1", 1, "Rocket2")
		
		MISG A 0 A_FireCustomMissile("AssaultHelicopterRocket", 0, 1, -40, -40, 0, 1)
		HELH A 1 BRIGHT 
		TNT1 A 0 A_GiveInventory("Token1", 1)
		HELH AA 4
		TNT1 A 0 A_TakeInventory("FIredPrimary", 1)
		TNT1 A 0 A_TakeInventory("FIredSecondary", 1)
		Goto Ready2
		
	Rocket2:	
		TNT1 A 0
		MISG A 0 A_FireCustomMissile("AssaultHelicopterRocket", 0, 1, 40, -40, 0, 1)
		HELH A 1 BRIGHT 
		TNT1 A 0 A_TakeInventory("Token1", 1)
		HELH AA 4
		TNT1 A 0 A_TakeInventory("FIredPrimary", 1)
		TNT1 A 0 A_TakeInventory("FIredSecondary", 1)
		Goto Ready2	
		
		
		
	Missile1:	
		TNT1 A 0
		TNT1 A 0 A_TakeInventory("Kicking", 1)
		TNT1 A 0 A_JumpIfInventory("HelicopterMissileAmmo", 1, 1)
		Goto NoMissile
		TNT1 A 0 A_PlaySound("MISLFIRE", 1)
		TNT1 A 0 A_TakeInventory("HelicopterMissileAmmo", 1)
		
		TNT1 A 0 A_JumpIfInventory("Token1", 1, "Missile2")
		
		MISG A 0 A_FireCustomMissile("AssaultHelicopterMissile", 0, 1, -60, -30, 0, 1)
		HELH A 1 BRIGHT 
		TNT1 A 0 A_GiveInventory("Token1", 1)
		HELH AA 4
		TNT1 A 0 A_TakeInventory("Kicking", 1)
		Goto Ready2
		
	Missile2:	
		TNT1 A 0
		MISG A 0 A_FireCustomMissile("AssaultHelicopterMissile", 0, 1, 60, -30, 0, 1)
		HELH A 1 BRIGHT 
		TNT1 A 0 A_TakeInventory("Token1", 1)
		HELH AA 4
		TNT1 A 0 A_TakeInventory("Kicking", 1)
		Goto Ready2	

	Flash:
		TNT1 A 0
		HLHD A 1 BRIGHT
		TNT1 A 0 ACS_NamedExecuteAlways("BDHelicopterHUD")
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "LightEnd")
		NULL A 0 A_JumpIf (pitch > 40, "TooLowCheck1")
		HLHD A 1 BRIGHT
		TNT1 A 0 ACS_NamedExecuteAlways("BDHelicopterHUD")
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "LightEnd")
		NULL A 0 A_JumpIf (pitch > 40, "TooLowCheck1")
		HLHD A 1 BRIGHT
		TNT1 A 0 ACS_NamedExecuteAlways("BDHelicopterHUD")
		TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "LightEnd")
		NULL A 0 A_JumpIf (pitch > 40, "TooLowCheck1")
		Loop	
		
	TooLowCheck1:
		TNT1 A 0
		TNT1 A 0 A_JumpIf(pitch < 90, "TooLow")
		Goto Flash
		
	TooLow:
		TNT1 A 0 A_SetPitch(39)
		NULL A 0 A_JumpIf (pitch > 40, "TooLowCheck1")
		Goto Flash	
		
	LightEnd:
		TNT1 A 10
		Stop	
	}
}



Actor AssaultHelicopterRocket: Rocket2
{
Speed 100
+FORCERADIUSDMG
Scale 1.0
Damage (random (400, 400))
States
	{
	Spawn:

		MISL A 0
		TNT1 A 0 A_PlaySound("DSRLAUN")
		TNT1 A 0 A_PlaySound("DSRLAUN", 1)
		TNT1 A 0 BRIGHT A_CustomMissile("RocketBackblast", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("RocketBackblast2", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("RocketBackblast3", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("BackblastFlames1", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("BackblastFlames2", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("BackblastFlames3", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("BackblastFlames4", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		MISL AAAA 1 BRIGHT A_CustomMissile("BackblastFlames4", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
	 Live:	
		MISL A 1 BRIGHT A_SpawnItem("PlasmaSmoke")
		TNT1 A 0 A_CustomMissile("PlasmaSmoke", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		Loop
	Death:
        EXPL A 0 Radius_Quake (3, 8, 0, 15, 0)//(intensity, duration, damrad, tremrad, tid)
		TNT1 A 0 A_CustomMissile("ExplosionSplashSpawner")
        TNT1 A 0 A_SpawnItemEx ("DetectFloorCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("DetectCeilCrater",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
	    TNT1 A 0 A_SpawnItemEx ("UnderwaterExplosion",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
        TNT1 AAAAAA 0 A_CustomMissile ("BDExplosionparticles", 0, 0, random (0, 360), 2, random (40, 90))
		TNT1 AAAA 0 A_CustomMissile ("BDExplosionparticles2", 0, 0, random (0, 360), 2, random (0, 90))
		TNT1 AAAA 0 A_CustomMissile ("ExplosionFlames", 0, 0, random (0, 360), 2, random (0, 360))
		TNT1 AA 0 A_SpawnItemEx ("GrenadeExplosion",0,0,13,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0
		TNT1 A 2
		TNT1 A 0 A_SpawnItemEx ("LiquidExplosionEffectSpawner",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0)
		TNT1 A 0 A_PlaySound("FAREXPL", 3)
		TNT1 A 15
		TNT1 A 0 A_PlaySound("distantexp", 5)
		Stop	
	}
}




Actor EnemyHelicopterRocket: Rocket2
{
Speed 75
Scale 1.0
+DONTHURTSPECIES
Species "AttackHelicopterZombie"
States
	{
	Spawn:

		MISL A 0
		TNT1 A 0 A_PlaySound("MISFAR", 2)
		TNT1 A 0 A_PlaySound("DSRLAUN", 1)
		TNT1 A 0 BRIGHT A_CustomMissile("RocketBackblast", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("RocketBackblast2", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("RocketBackblast3", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("BackblastFlames1", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("BackblastFlames2", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("BackblastFlames3", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("BackblastFlames4", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		MISL AAAA 1 BRIGHT A_CustomMissile("BackblastFlames4", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
	 Live:	
		MISL A 1 BRIGHT A_SpawnItem("PlasmaSmoke")
		TNT1 A 0 A_CustomMissile("PlasmaSmoke", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		Loop
	}
}




Actor AssaultHelicopterMissile: AssaultHelicopterRocket
{
Speed 100
+SEEKERMISSILE
+SCREENSEEKER
Scale 1.6
MaxTargetRange 2000
Damage (random (500, 500))
States
	{
	Spawn:

		MISL A 0
		TNT1 A 0 A_PlaySound("MISFAR", 2)
		TNT1 A 0 A_PlaySound("DSRLAUN", 1)
		TNT1 A 0 BRIGHT A_CustomMissile("RocketBackblast", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("RocketBackblast2", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 BRIGHT A_CustomMissile("RocketBackblast3", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		MISL AAA 1 BRIGHT A_CustomMissile("BackblastFlames4", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		MISL AAA 1 BRIGHT A_CustomMissile("BackblastFlames3", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		MISL AAA 1 BRIGHT A_CustomMissile("BackblastFlames2", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
	 Live:	
		MISL A 1 BRIGHT A_SpawnItem("YellowFlare")
		TNT1 A 0 A_CustomMissile("BackblastFlames2", 0, 0, angle-180, CMF_ABSOLUTEANGLE)
		TNT1 A 0 A_SeekerMissile (4,8, SMF_LOOK)
		Loop
	}
}




ACTOR MechHommingMissile: AssaultHelicopterRocket
{
	Damage (random (350, 380))
	+SCREENSEEKER
	+SEEKERMISSILE
	
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SeekerMissile (4,8, SMF_LOOK)
		MISL I 1 Bright
		Loop
	}
}

Actor HeliRestart : Inventory
{
	inventory.maxamount 1
}