
// *** MODIFIED BY CHEBMASTER
// Initial reason: setting damage resistances for actors "Tank" and "PlayerTank"
// for my new damage types "FriendlyExplosion" (fixed friendly tanks and pain elemental corpses hurting player) 
// and "LavaHurtTank" (used on lava lake in map CHE22 The Push)
// As we have already learned the hard way, overriding with "replaces" does not frakking work in such complex cases

// Later, I went to town on *everything*.

/*
//***Che
	On Zandronum client,
		*all* jump functions (with sole exception of local player checking his inventory)
		and *all* ACS script start commands do exactly nothing 
		unless the actor is explicitly clientside only (+CLIENTSIDEONLY or +NONETID)

	The only exceptions, only applying to the local player:
		A_JumpIfInventory, ThrustThing, ThruztThingZ
		- so you have to build your clientside logic out of these shit and sticks exclusively
		  (with the help of an ACS script that translates player inputs into inventory tokens
		  - see FBD_VehicleControls.acs)
*/



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

Actor TankBaseNotReal
{
	+THRUACTORS
	YScale 1.8
	XScale 1.9
	+NOTIMEFREEZE
	-FLOORCLIP
	+NOGRAVITY
	-FLOAT
	Mass 5000
	Radius 0
	Height 0
	Gravity 0
	States
	{
		Spawn:
			TNT1 A 0
			TNK1 B 1
			TNT1 A 0 A_SPawnItemEx("TankWeakSpotBase", -65, 0, 2)
			Stop
	}
}




Actor TankBaseNotRealMoving1: TankBaseNotReal
{
	Radius 0
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_SPawnItemEx("TankWeakSpotBase", -65, 0, 2)
			TNT1 A 0 A_CustomMissile("CheckPitchCenter", -12, 0, 0, 2, 0)
			TNT1 A 0 A_CustomMissile("CheckPitchCenter", -12, 0, 180, 2, 0)
			TNT1 A 0 A_SPawnItemEx("CheckIfFloating", 96, 0, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckIfFloating", 96, -64, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckIfFloating", 96, 4, -2, 0, 0, 0, 0)
			TNT1 A 0 A_CustomMissile("CheckIfOn3DFloor", -64, 0, 0, 2, 0)
			TNT1 A 0 A_CustomMissile("CheckIfOn3DFloor", -160, 0, 0, 2, 0)

			TNT1 A 0 A_SPawnItemEx("CheckPitchFront", 76, 64, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchFront", 76, -64, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchFront", 76, 0, -2, 0, 0, 0, 0)

			TNT1 A 0 A_SPawnItemEx("CheckPitchRunOver", 100, 64, 4, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchRunOver", 100, -64, 4, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchRunOver", 100, 0, 4, 0, 0, 0, 0)

			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, 0, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, 64, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, -64, -2, 0, 0, 0, 0)

			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, 0, -10, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, 64, -10, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, -64, -10, 0, 0, 0, 0)
			TNT1 A 1
			TNT1 A 0 A_JumpIfInventory("MP40Ammo", 1, "Normal")
			TNT1 A 0 A_JumpIfInventory("PitchBackToken", 6, "PitchFront2")
			TNT1 A 0 A_JumpIfInventory("PitchBackToken", 3, "PitchFront")
			TNT1 A 0 A_JumpIfInventory("PitchFrontToken", 6, "PitchBack2")
			TNT1 A 0 A_JumpIfInventory("PitchFrontToken", 3, "PitchBack")

		Normal:
			TNT1 A 0
			TNK1 B 1
			Stop

		PitchFront:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("MP40Ammo", 1, "Normal")
			TNT1 A 0 A_JumpIfInventory("ShotgunAmmo", 3, "PitchBack")
			TNT1 A 0 A_SPawnItemEx("PushWeak", 64, 0, -2, 0, 0, 0, 0)
			TNK4 B 2
			Stop

		PitchFront2:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("MP40Ammo", 1, "Normal")
			TNT1 A 0 A_JumpIfInventory("ShotgunAmmo", 3, "PitchBack")
			TNT1 A 0 A_SPawnItemEx("PushFront", 64, 0, -2, 0, 0, 0, 0)
			TNK2 B 2
			Stop

		PitchBack:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("MP40Ammo", 1, "Normal")
			TNK5 B 2 A_SPawnItemEx("PushWeak", -16, 0, -2, 0, 0, 0, 0)
			Stop


		PitchBack2:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("MP40Ammo", 1, "Normal")
			TNT1 AA 0 A_SPawnItemEx("PushFront", -64, 0, -2, 0, 0, 0, 0)
			TNK3 B 2
			Stop
	}
}

Actor TankBaseNotRealMoving2: TankBaseNotRealMoving1
{
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_SPawnItemEx("TankWeakSpotBase", -65, 0, 2)
			TNT1 A 0 A_CustomMissile("CheckPitchCenter", -12, 0, 0, 2, 0)
			TNT1 A 0 A_CustomMissile("CheckPitchCenter", -12, 0, 180, 2, 0)
			TNT1 A 0 A_SPawnItemEx("CheckIfFloating", 96, 0, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckIfFloating", 96, -64, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckIfFloating", 96, 4, -2, 0, 0, 0, 0)
			TNT1 A 0 A_CustomMissile("CheckIfOn3DFloor", -64, 0, 0, 2, 0)
			TNT1 A 0 A_CustomMissile("CheckIfOn3DFloor", -160, 0, 0, 2, 0)

			TNT1 A 0 A_SPawnItemEx("CheckPitchFront", 76, 64, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchFront", 76, -64, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchFront", 76, 0, -2, 0, 0, 0, 0)

			TNT1 A 0 A_SPawnItemEx("CheckPitchRunOver", 100, 64, 4, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchRunOver", 100, -64, 4, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchRunOver", 100, 0, 4, 0, 0, 0, 0)

			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, 0, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, 64, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, -64, -2, 0, 0, 0, 0)

			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, 0, -10, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, 64, -10, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, -64, -10, 0, 0, 0, 0)
			TNT1 A 1
			TNT1 A 0 A_JumpIfInventory("PitchBackToken", 6, "PitchFront2")
			TNT1 A 0 A_JumpIfInventory("PitchBackToken", 3, "PitchFront")
			TNT1 A 0 A_JumpIfInventory("PitchFrontToken", 6, "PitchBack2")
			TNT1 A 0 A_JumpIfInventory("PitchFrontToken", 3, "PitchBack")

		Normal:
			TNT1 A 0
			TNK1 D 1
			Stop

		PitchFront:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("MP40Ammo", 1, "Normal")
			TNT1 A 0 A_JumpIfInventory("ShotgunAmmo", 3, "PitchBack")
			TNT1 A 0 A_SPawnItemEx("PushWeak", 64, 0, -2, 0, 0, 0, 0)
			TNK4 D 2
			Stop

		PitchFront2:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("MP40Ammo", 1, "Normal")
			TNT1 A 0 A_JumpIfInventory("ShotgunAmmo", 3, "PitchBack")
			TNT1 A 0 A_SPawnItemEx("PushFront", 64, 0, -2, 0, 0, 0, 0)
			TNK2 D 2
			Stop

		PitchBack:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("MP40Ammo", 1, "Normal")
			TNK5 D 2 A_SPawnItemEx("PushWeak", -16, 0, -2, 0, 0, 0, 0)
			Stop

		PitchBack2:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("MP40Ammo", 1, "Normal")
			TNT1 AA 0 A_SPawnItemEx("PushFront", -64, 0, -2, 0, 0, 0, 0)
			TNK3 D 2
			Stop
	}
}

Actor TankBaseNotRealMoving3: TankBaseNotRealMoving1
{
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_SPawnItemEx("TankWeakSpotBase", -65, 0, 2)
			TNT1 A 0 A_CustomMissile("CheckPitchCenter", -12, 0, 0, 2, 0)
			TNT1 A 0 A_CustomMissile("CheckPitchCenter", -12, 0, 180, 2, 0)
			TNT1 A 0 A_SPawnItemEx("CheckIfFloating", 96, 0, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckIfFloating", 96, -64, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckIfFloating", 96, 4, -2, 0, 0, 0, 0)
			TNT1 A 0 A_CustomMissile("CheckIfOn3DFloor", -64, 0, 0, 2, 0)
			TNT1 A 0 A_CustomMissile("CheckIfOn3DFloor", -160, 0, 0, 2, 0)

			TNT1 A 0 A_SPawnItemEx("CheckPitchFront", 76, 64, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchFront", 76, -64, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchFront", 76, 0, -2, 0, 0, 0, 0)

			TNT1 A 0 A_SPawnItemEx("CheckPitchRunOver", 100, 64, 4, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchRunOver", 100, -64, 4, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchRunOver", 100, 0, 4, 0, 0, 0, 0)

			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, 0, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, 64, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, -64, -2, 0, 0, 0, 0)

			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, 0, -10, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, 64, -10, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, -64, -10, 0, 0, 0, 0)

			TNT1 A 1
			TNT1 A 0 A_JumpIfInventory("MP40Ammo", 1, "Normal")
			TNT1 A 0 A_JumpIfInventory("PitchBackToken", 6, "PitchFront2")
			TNT1 A 0 A_JumpIfInventory("PitchBackToken", 3, "PitchFront")
			TNT1 A 0 A_JumpIfInventory("PitchFrontToken", 6, "PitchBack2")
			TNT1 A 0 A_JumpIfInventory("PitchFrontToken", 3, "PitchBack")
		Normal:
			TNT1 A 0
			TNK1 E 1
			Stop

		PitchFront:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("MP40Ammo", 1, "Normal")
			TNT1 A 0 A_JumpIfInventory("ShotgunAmmo", 3, "PitchBack")
			TNT1 A 0 A_SPawnItemEx("PushWeak", 64, 0, -2, 0, 0, 0, 0)
			TNK4 E 2
			Stop

		PitchFront2:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("MP40Ammo", 1, "Normal")
			TNT1 A 0 A_JumpIfInventory("ShotgunAmmo", 3, "PitchBack")
			TNT1 A 0 A_SPawnItemEx("PushFront", 64, 0, -2, 0, 0, 0, 0)
			TNK2 E 2
			Stop

		PitchBack:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("MP40Ammo", 1, "Normal")
			TNK5 E 2 A_SPawnItemEx("PushWeak", -16, 0, -2, 0, 0, 0, 0)
			Stop

		PitchBack2:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("MP40Ammo", 1, "Normal")
			TNT1 AA 0 A_SPawnItemEx("PushFront", -64, 0, -2, 0, 0, 0, 0)
			TNK3 E 2
			Stop
	}
}

Actor TankBaseStationedFuckingNotMoving: TankBaseNotReal
{
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_SPawnItemEx("TankWeakSpotBase", -65, 0, 2)
		Normal:
			TNT1 A 0
			TNK1 D 8
			Stop
	}
}

Actor TankBaseStationed: TankBaseNotRealMoving1
{
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_SPawnItemEx("TankWeakSpotBase", -65, 0, 2)
			TNT1 A 0 A_CustomMissile("CheckPitchCenter", -12, 0, 0, 2, 0)
			TNT1 A 0 A_CustomMissile("CheckPitchCenter", -12, 0, 180, 2, 0)
			TNT1 A 0 A_CustomMissile("CheckIfOn3DFloor", -64, 0, 0, 2, 0)
			TNT1 A 0 A_CustomMissile("CheckIfOn3DFloor", -160, 0, 0, 2, 0)
			TNT1 A 0 A_SPawnItemEx("CheckIfFloating", 96, 0, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckIfFloating", 96, -64, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckIfFloating", 96, 4, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchFront", 76, 64, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchFront", 76, -64, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchFront", 76, 0, -2, 0, 0, 0, 0)

			TNT1 A 0 A_SPawnItemEx("CheckPitchRunOver", 100, 64, 4, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchRunOver", 100, -64, 4, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchRunOver", 100, 0, 4, 0, 0, 0, 0)

			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, 0, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, 64, -2, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, -64, -2, 0, 0, 0, 0)

			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, 0, -10, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, 64, -10, 0, 0, 0, 0)
			TNT1 A 0 A_SPawnItemEx("CheckPitchBack", -70, -64, -10, 0, 0, 0, 0)
			TNT1 A 1
			TNT1 A 0 A_JumpIfInventory("MP40Ammo", 1, "Normal")
			TNT1 A 0 A_JumpIfInventory("PitchBackToken", 6, "PitchFront2")
			TNT1 A 0 A_JumpIfInventory("PitchBackToken", 3, "PitchFront")
			TNT1 A 0 A_JumpIfInventory("PitchFrontToken", 6, "PitchBack2")
			TNT1 A 0 A_JumpIfInventory("PitchFrontToken", 3, "PitchBack")
		Normal:
			TNT1 A 0
			TNK1 D 8
			Stop

		PitchFront:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("MP40Ammo", 1, "Normal")
			TNT1 A 0 A_JumpIfInventory("ShotgunAmmo", 3, "PitchBack")
			TNT1 A 0 A_SPawnItemEx("PushWeak", 64, 0, -2, 0, 0, 0, 0)
			TNK4 D 2
			Stop

		PitchFront2:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("MP40Ammo", 1, "Normal")
			TNT1 A 0 A_JumpIfInventory("ShotgunAmmo", 3, "PitchBack")
			TNT1 A 0 A_SPawnItemEx("PushFront", 64, 0, -2, 0, 0, 0, 0)
			TNK2 D 2
			Stop

		PitchBack:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("MP40Ammo", 1, "Normal")
			TNK5 D 2 A_SPawnItemEx("PushWeak", -16, 0, -2, 0, 0, 0, 0)
			Stop

		PitchBack2:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("MP40Ammo", 1, "Normal")
			TNT1 AA 0 A_SPawnItemEx("PushFront", -64, 0, -2, 0, 0, 0, 0)
			TNK3 D 2
			Stop
	}
}



Actor CheckPitchFront
{
	PROJECTILE
	+MISSILE

	Radius 12
	Height 12
	Speed 0
	+THRUSPECIES
	Species "Marines"
	+DONTSPLASH
	-EXPLODEONWATER
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_GiveToTarget("PitchFrontToken")
			SARG A 0
			Stop
		IsOverSOmething:
		Death:
		Xdeath:
			TNT1 A 0
			HEAD A 0
			Stop
	}
}



Actor CheckPitchBack: CheckPitchFront
{
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_GiveToTarget("PitchBackToken")
			SARG A 0
			Stop
		IsOverSOmething:
		Death:
		Xdeath:
			TNT1 A 0
			HEAD A 0
			Stop
	}
}


Actor CheckPitchFront2: CheckPitchFront
{
	States
	{
		Spawn:
			TNT1 A 0
			SARG A 0
			Stop
		Death:
		Xdeath:
			TNT1 A 0
			HEAD A 0
			TNT1 A 0 A_GiveToTarget("PitchFrontToken")
			Stop
	}
}


Actor CheckPitchBack2: CheckPitchFront
{
	States
	{
		Spawn:
			TNT1 A 0
			SARG A 0
			Stop
		Death:
		Xdeath:
			TNT1 A 0
			HEAD A 0
			TNT1 A 0 A_GiveToTarget("PitchBackToken")
			Stop
	}
}





Actor CheckPitchFront2b: CheckPitchFront
{
	States
	{
		Spawn:
			TNT1 A 0
			SARG A 0
			Stop
		Death:
		Xdeath:
			TNT1 A 0
			HEAD A 0
			TNT1 A 0 A_GiveToTarget("PitchFrontToken2")
			Stop
	}
}


Actor CheckPitchBack2b: CheckPitchFront
{
	States
	{
		Spawn:
			TNT1 A 0
			SARG A 0
			Stop
		Death:
		Xdeath:
			TNT1 A 0
			HEAD A 0
			TNT1 A 0 A_GiveToTarget("PitchBackToken2")
			Stop
	}
}



Actor CheckIfFloating: CheckPitchFront
{
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_GiveToTarget("ShotgunAmmo")
			SARG A 0
			Stop
		IsOverSOmething:
		Death:
		Xdeath:
			TNT1 A 0
			HEAD A 0
			Stop
	}
}

Actor CheckPitchCenter: CheckPitchFront
{
	Radius 32
	Height 2
	Speed 30
	Damage 0
	Scale 1.0
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_GiveToTarget("ShotgunAmmo")
			TNT1 A 1
			Stop
		Death:
			TNT1 A 0
			Stop
		Xdeath:
			TNT1 A 0
			TNT1 A 0 A_GiveToTarget("MP40Ammo")
			HEAD A 0
			Stop
	}
}



Actor CheckPitchRunOver: CheckPitchCenter
{
	Speed 50
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 1
			Stop
		Death:
			TNT1 A 0
			Stop
		Xdeath:
			TNT1 A 0
			TNT1 A 0 A_GiveToTarget("PitchBackToken", 6)
			TNT1 A 0
			Stop
	}
}


Actor CheckIfOn3DFloor: CheckPitchCenter
{
	Speed 9
	States
	{
		Spawn:
			TNT1 A 0
			
			TNT1 A 0
			TNT1 A 0 A_GiveToTarget("MP40AMmo", 1)
			Stop
		XDeath:
			TNT1 A 0
			Stop
		Death:
			TNT1 A 0
			Stop
	}
}


Actor PushFront: CheckPitchFront
{
	+FORCERADIUSDMG
	+NOTIMEFREEZE
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_RadiusThrust(5000, 100, RTF_AFFECTSOURCE  | RTF_NOIMPACTDAMAGE , 1)
			SARG A 0
			Stop
		IsOverSOmething:
		Death:
		Xdeath:
			TNT1 A 0
			TNT1 A 0 A_RadiusThrust(5000, 100, RTF_AFFECTSOURCE  | RTF_NOIMPACTDAMAGE  , 1)
			HEAD A 0
			Stop
	}
}



Actor PushwEAK: CheckPitchFront
{
	+FORCERADIUSDMG
	+NOTIMEFREEZE
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_RadiusThrust(2500, 100, RTF_AFFECTSOURCE  | RTF_NOIMPACTDAMAGE , 1)
			SARG A 0
			Stop
		IsOverSOmething:
		Death:
		Xdeath:
			TNT1 A 0
			TNT1 A 0 A_RadiusThrust(2500, 100, RTF_AFFECTSOURCE  | RTF_NOIMPACTDAMAGE  , 1)
			HEAD A 0
			Stop
	}
}

Actor TankTurretNotReal: TankBaseNotReal
{
	Scale 1.25
	States
	{
		Spawn:
			TNT1 A 0
			TNK1 T 1
			Stop
	}
}








Actor TankTurretNotReal2: TankTurretNotReal
{
	States
	{
		Spawn:
			TNT1 A 0
			TNK1 T 2
			Stop
	}
}

Actor TankTurretNotReal4: TankTurretNotReal
{
	States
	{
		Spawn:
			TNT1 A 0
			TNK1 T 4
			Stop
	}
}

Actor TankTurretNotReal8: TankTurretNotReal
{
	States
	{
		Spawn:
			TNT1 A 0
			TNK1 T 8
			Stop
	}
}



ACTOR Tank: SwitchableDecoration 7261
{
	var int user_stationedtankbasedirection;
    Radius 64
	Height 72
	+SOLID
	+USESPECIAL
	MONSTER
	-COUNTKILL
	+SHOOTABLE
	+LOOKALLAROUND
	+THRUACTORS
	+NOINFIGHTING
	-COUNTKILL
	-NOTDMATCH
	+NOBLOODDECALS
	+DONTRIP
	+NOTIMEFREEZE
	//$Category Vehicles
	MaxTargetRange 120
	PainChance "Repair", 255
	BloodType "TankBlood", "TankBlood", "TankBlood"
	//***Che
	//Activation THINGSPEC_Activate | THINGSPEC_ThingTargets | THINGSPEC_NoDeathSpecial
	Activation THINGSPEC_Switch | THINGSPEC_ThingTargets | THINGSPEC_NoDeathSpecial
	Mass 5000
	Speed 0
	health 2000
	Scale 1.25
	damagefactor "Headkick", 0.0
	damagefactor "slime", 0.0	damagefactor "Repair", 1.0 damagefactor "CheckRepair", 0.0
	damagefactor "Head", 0.0	damagefactor "FriendBullet", 0.0    damagefactor "Taunt", 0.0    damagefactor "KillMe", 0.0
	damagefactor "Shrapnel", 0.0    damagefactor "Blood", 0.0    damagefactor "BlueBlood", 0.0
	damagefactor "GreenBlood", 0.0    damagefactor "MinorHead", 0.0    damagefactor "Decaptate", 0.0	damagefactor "MonsterKnocked", 0.0
    damagefactor "CancelTeleportFog", 0.0	damagefactor "BHFTOnBarrel", 0.0	damagefactor "GibRemoving", 0.0	damagefactor "SuperPunch", 5.0
	damagefactor "HelperMarineFatallity", 0.0	damagefactor "Leg", 0.0	damagefactor "SpawnMarine", 0.0	damagefactor "TeleportRemover", 0.0
	DamageFactor "CauseObjectsToSplash", 0.0 DamageFactor "Trample", 0.0 DamageFactor "Minigun", 0.1 damageFactor "Machinegun", 0.1
	DamageFactor "TankWeakSpot", 3.0 damagefactor "Plasma", 1.3 damagefactor "Plasma2", 1.3
	damagefactor "Desintegrate", 3.0 damagefactor "Railgun", 2.0 damagefactor "Fire", 0.0
	Damagefactor "Stealth", 0.0 Damagefactor "Slide", 0.0 Damagefactor "Use", 0.0 Damagefactor "PussyGrab", 0.0
	damagefactor "stomp", 0 damagefactor "Shotgun", 0.02 damagefactor "kick", 0.05 damagefactor "extremepunches", 0.05 damagefactor "taunt", 0 damagefactor "avoid", 0
	damagefactor "melee", 0.2 damagefactor "minigun", 0.05 damagefactor "minor", 0.02 damagefactor "saw", 0.2 damagefactor "cut", 0.2
	damagefactor "Explosive", 0.46 damagefactor "bullet", 0.1 damagefactor "monsterbullet", 0.25 damagefactor "monstershotgun", 0.2 damagefactor "monsterminigun", 0.2
	damagefactor "ExplosiveImpact", 0.25
	
	//***Che
	DamageFactor "FriendlyExplosion", 0.0
	DamageFactor "LavaHurtTank", 100.0
	DamageFactor "Psionic", 0.1
	
	//***Che
	+FRIENDLY
	
    States
    {
		Spawn:
			//***Che:
			TNK1 C 1 NODELAY ACS_NamedExecuteWithResult("FBD_IncreaseVehicleHPForPseudorealism")
			TNT1 A 0 A_GiveInventory("HeavyMachinegunAmmo", 400)
			TNT1 A 0 A_GiveInventory("TankAmmo", 40)
			//TNT1 A 0 Thing_ChangeTID(0, 261)
			TNT1 A 0 ACS_NamedExecuteWithResult("BDSetNewTankDirection")//Check vehicle initial angle.
			//TNT1 A 1 A_ChangeFlag("FRIENDLY", 0)
			TNT1 A 5
			TNT1 A 0 A_JumpIf(CallACS("GetIsMonstersOnly"), "Vanish") 
				// vehicles CANNOT work without BD player, 
				// using them in monsters only results in  game crashing
			TNT1 A 0 A_SpawnItem("TankTurretNotReal8")
			//TNT1 A 0 Thing_ChangeTID(0, 0)
			TNK1 C 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0 A_ChangeFlag("FRIENDLY", 1)
			
			Goto StandingHere
			
		Vanish:
			TNT1 A 1 A_NoBlocking
			TNT1 A 0 A_ChangeFlag("USESPECIAL", 0)
			TNT1 A 30
			Stop
			
		StandingHere:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteAlways("BDSetBaseAngle", 0, 0, 0, 0)//SpawnVehicleBase
			TNT1 A 2
			TNT1 A 0 A_SpawnItem("TankTurretNotReal8")
			TNT1 A 0 A_SpawnItem("StationedVehicleCheckRepairs")
			Loop
			
		Active:
		Inactive: //***Che
			TNT1 A 0 
			//***Che
			/*
			TNT1 A 0 A_TakeFromTarget("PowerInvulnerable", 1)
			TNT1 A 0 A_GiveToTarget("CeaseMorph", 1)
			TNK1 C 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_GiveToTarget("CheckingMorphingPlayerHealth", 1)
			TNT1 A 0 A_SpawnItem("TankTurretNotReal8")
			NULL A 3
			TNT1 A 0 A_GiveToTarget("TankMorpher", 1)
			TNT1 A 0 A_GiveToTarget("HeavyMachinegunAmmo", 400)
			TNT1 A 0 A_GiveToTarget("TankAmmo", 40)
			TNT1 A 0 Thing_ChangeTID(0, 261)
			*/
			"----" A 0 A_JumpIf(!CallAcs("FBD_EnterVehicle", 2), "StandingHere") // 2 = tank
			TNT1 A 0 A_NoBlocking
			NULL A 1
			TNT1 A 0 A_ChangeFlag("USESPECIAL", 0)
			NULL A 10
			TNT1 A 0 Thing_ChangeTID(0, 0)
			NULL 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_ChangeFlag("USESPECIAL", 0)
			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)
			TNK1 T 1
			TNT1 A 0 HealThing(5)
			TNT1 A 0 A_ChangeFLag("NOPAIN", 0)
			Goto StandingHere
	}
}

//***Che *must* they roll forward or backward when I place them on a railway platform in map editor, sliding eventually off?
// Fuckers.
ACTOR TankPassiveFuckingNotTwitchingOnA3dFloor: Tank 17768
{
    States
    {
		Spawn:
			//***Che:
			TNK1 C 1 NODELAY ACS_NamedExecuteWithResult("FBD_IncreaseVehicleHPForPseudorealism")
			TNT1 A 0 A_GiveInventory("HeavyMachinegunAmmo", 400)
			TNT1 A 0 A_GiveInventory("TankAmmo", 40)
			TNT1 A 0 ACS_NamedExecuteWithResult("BDSetNewTankDirection")//Check vehicle initial angle.
			//TNT1 A 1 A_ChangeFlag("FRIENDLY", 0)
			TNT1 A 5
			TNT1 A 0 A_JumpIf(CallACS("GetIsMonstersOnly"), "Vanish") 
			TNT1 A 0 A_SpawnItem("TankTurretNotReal8")
			TNK1 C 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0 A_ChangeFlag("FRIENDLY", 1)
			
			Goto StandingHere
			
		StandingHere:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteAlways("BDSetBaseAngleFuckingNotMoving", 0, 0, 0, 0)//SpawnVehicleBase
			TNT1 A 2
			TNT1 A 0 A_SpawnItem("TankTurretNotReal8")
			TNT1 A 0 A_SpawnItem("StationedVehicleCheckRepairs")
			Loop
	}
}



ACTOR TankUsed: Tank
{
    States
    {
		//***Che
		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("TankBaseDirection", 500)
			Goto StandingHere
			
		
/*		
		Active:
			TNT1 A 0 
			//TNT1 A 0 A_JumpIfInTargetInventory("PowerInvulnerable", 1, "StandingHere")
			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)
			NULL A 3
			TNT1 A 0 A_GiveToTarget("TankMorpher", 1)
			TNT1 A 0 Thing_ChangeTID(0, 261)
			TNT1 A 0 A_NoBlocking
			NULL A 1
			TNT1 A 0 A_ChangeFlag("USESPECIAL", 0)
			NULL A 10
			TNT1 A 0 Thing_ChangeTID(0, 0)
			Stop
*/			
	}
}



ACTOR TankRealism: Tank
{
	Health 16000
}

	


ACTOR PowerTankSwitch : PowerMorph 
{
	PowerMorph.PlayerClass "PlayerTank"
}


/*
//***Che obsoleted
ACTOR TankMorpher : CustomInventory 
{
	States
	{
		PickUp:
			TNT1 A 1
			TNT1 A 0 ACS_NamedExecuteAlways("BDEnterTank", 0, 0, 0, 0)//Get into Tank
			TNT1 A 0 A_GiveInventory("TankMorphActivation")
			TNT1 A 0 ACS_NamedExecuteWithResult("TelefogExclusionZone") //A_SpawnItem("CancelTeleportFog")
			TNT1 A 1
			Stop
	}
}
*/


ACTOR TankMorphActivation : PowerupGiver
{
	Powerup.Type "PowerTankSwitch"
	Powerup.Duration 252000
	+INVENTORY.AUTOACTIVATE
	+INVENTORY.ALWAYSPICKUP
	Inventory.MaxAmount 1
	Health 100
	GibHealth 1
	Mass 6000
	Height 72
	Radius 32
	States
	{
		Spawn:
			TNT1 A 100
			Stop

		PickUp:
			TNT1 A 1
			TNT1 A 1
			Stop
	}
}
 
 


ACTOR PlayerTank : PlayerPawn
{
	var int user_tankbasedirection;
	Player.SoundClass "fbd_vehicle_override" //just to remove the gender-inappropriate *land sounds
	Speed 0
	Scale 1.25
	Radius 64
	Height 72
	Mass 5000
	PainChance 0
	health 2000 //500
	-PICKUP
	Speed 0.01
	player.viewheight	72
    player.attackzoffset 56
	MaxStepHeight 32
	Player.MorphWeapon "TankGun"
    Player.JumpZ 0
	Species "Marines"
	+NOSKIN
	Damagefactor "Stealth", 0.0
	+FORCERADIUSDMG
	+FIXMAPTHINGPOS
	+NORADIUSDMG
	+DONTRIP
	-CANUSEWALLS
	+NOBLOODDECALS
	BloodType "TankBlood", "TankBlood", "TankBlood"
	-PICKUP
	damagefactor "slime", 0.0	damagefactor "Repair", 1.0 damagefactor "CheckRepair", 0.0
	damagefactor "Head", 0.0	damagefactor "FriendBullet", 0.0    damagefactor "Taunt", 0.0    damagefactor "KillMe", 0.0
	damagefactor "Shrapnel", 0.0    damagefactor "Blood", 0.0    damagefactor "BlueBlood", 0.0
	damagefactor "GreenBlood", 0.0    damagefactor "MinorHead", 0.0    damagefactor "Decaptate", 0.0	damagefactor "MonsterKnocked", 0.0
    damagefactor "CancelTeleportFog", 0.0	damagefactor "BHFTOnBarrel", 0.0	damagefactor "GibRemoving", 0.0	damagefactor "SuperPunch", 5.0
	damagefactor "HelperMarineFatallity", 0.0	damagefactor "Leg", 0.0	damagefactor "SpawnMarine", 0.0	damagefactor "TeleportRemover", 0.0
	DamageFactor "CauseObjectsToSplash", 0.0 DamageFactor "Trample", 0.0 DamageFactor "Minigun", 0.1 damageFactor "Machinegun", 0.1
	DamageFactor "TankWeakSpot", 3.0 damagefactor "Plasma", 1.3 damagefactor "Plasma2", 1.3
	damagefactor "Desintegrate", 3.0 damagefactor "Railgun", 2.0 damagefactor "Fire", 0.0
	Damagefactor "Stealth", 0.0 Damagefactor "Slide", 0.0 Damagefactor "Use", 0.0 Damagefactor "PussyGrab", 0.0
	damagefactor "stomp", 0 damagefactor "Shotgun", 0.02 damagefactor "kick", 0.05 damagefactor "extremepunches", 0.05 damagefactor "taunt", 0 damagefactor "avoid", 0
	damagefactor "melee", 0.2 damagefactor "minigun", 0.05 damagefactor "minor", 0.02 damagefactor "saw", 0.2 damagefactor "cut", 0.2
	damagefactor "Explosive", 0.46 damagefactor "bullet", 0.1 damagefactor "monsterbullet", 0.25 damagefactor "monstershotgun", 0.2 damagefactor "monsterminigun", 0.2
	damagefactor "ExplosiveImpact", 0.25
	
	//***Che
	DamageFactor "FriendlyExplosion", 0.0
	DamageFactor "LavaHurtTank", 100.0	
	
	//***Che
	Player.Face YMT
	Player.MugShotMaxHealth 2000
	
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_TakeInventory("PressedUse", 1)
			TNT1 A 0 ThrustTHingZ(0, 100, -1, 1)
			
			TNK1 T 1
		Spawn2:
			TNT1 A 0 A_GiveInventory("IsInATank", 1)
			TNT1 A 0 A_TakeInventory("PressedUse", 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)
			
			TNT1 A 0 SetPlayerProperty(0, 1, PROP_BUDDHA)
			TNK1 T 1
			TNK1 TTTT 1 A_SpawnItemEx ("TankBaseNotRealMoving1" , 0, 0, -90, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNK1 TTTT 1 A_SpawnItemEx ("TankBaseNotRealMoving1" , 0, 0, -90, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_TakeInventory("PressedUse", 1)
			TNT1 A 0 A_TakeInventory("FiredTankMainGun", 1)
			TNT1 A 0 A_Print (a, 4, "TUTO1")
			Goto Stay

			

		ExitVehicle:
			TNT1 A 1
			
			TNT1 A 0 A_TakeInventory("PressedUse", 1)
			TNT1 A 0 A_JumpIfHealthLower(2, "EmergencyExit")
			TNT1 A 0 A_JumpIfInventory("EmergencyEject", 1, "EmergencyExit")
			//TNT1 A 0 A_SpawnItemEx ("TransferPlayerOutOfVehicle", 0, 0, 76)
			//***Che
			TNT1 A 0 A_TakeInventory("CanLeaveVehicle", 1)
			TNT1 A 0 A_SpawnItemEx ("FBD_TransferPlayerOutOfVehicle", 0, 0, 76)
			
			TNK1 T 1
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNK1 T 1
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNK1 T 1
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			
			TNT1 A 0 A_JumpIfInventory("CanLeaveVehicle", 1, "CanExit")
			TNT1 A 0 A_Print("$EXITVEH_CANT", 1)
			Goto Stay
		
		CanExit:
			TNT1 A 0
			TNT1 A 2 A_TakeInventory("IsInATank", 1)
			TNT1 A 0 A_TakeInventory("PressedUse", 1)
			TNT1 A 0 A_TakeInventory("CanLeaveVehicle", 1)
			TNT1 A 0 SetPlayerProperty(0, 0, PROP_BUDDHA)
			//***Che
			//TNT1 A 0 ACS_NamedExecuteAlways("BDLeaveTank")
			//TNT1 A 0 A_SpawnItemEx ("TankUsed", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
			"----" A 0 ACS_NamedExecuteWithResult("FBD_LeaveVehicle", 2) // 2 = tank
			Goto FinishExit
		
		
		EmergencyExit:
			TNT1 A 0
			TNT1 A 0 A_TakeInventory("EmergencyEject", 1)			
			TNT1 A 2 A_TakeInventory("IsInATank", 1)
			TNT1 A 0 A_TakeInventory("PressedUse", 1)
			TNT1 A 0 A_TakeInventory("CanLeaveVehicle", 1)
//***Che
			//TNT1 A 0 ThrustThingZ(0,120,0,1)
			//TNT1 A 0 A_SpawnItem("TankExplode")
			TNT1 A 0 ACS_NamedExecuteWithResult("FBD_RegisterPlayerVehicleExit",-30,0,40)
			//PLA1 J 2
			TNT1 A 0 A_StopSound(1)
			TNT1 A 0 SetPlayerProperty(0, 0, PROP_BUDDHA)
			TNT1 A 0 SetPlayerProperty(0, 0, PROP_FLIGHT)
			//TNT1 A 0 ACS_NamedExecuteAlways("BDLeaveTank")
			"----" A 0 ACS_NamedExecuteWithResult("FBD_LeaveVehicle", 2, 1) // 2 = tank, 1 = emergency exit
			PLA1 J 100
			Goto Stay

		FinishExit:
			TNT1 A 0 A_TakeInventory("PressedUse", 1)
			TNT1 AAA 10 A_TakeInventory("PressedUse", 1)
			TNT1 A 0 A_TakeInventory("PressedUse", 1)
			Goto Stay
		
			
			
		TurnLeft:
			TNT1 A 0
			TNK1 T 1 
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Stay")
			TNT1 A 0 A_PlaySound("TANK1", 5, 1, 1)
			TNT1 A 0 A_SpawnItemEx ("TnkTreadsDamage" , 100, 0, 0, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEANGLE | SXF_ABSOLUTEVELOCITY)
			TNT1 A 0 A_SpawnItemEx("TnkStep", 0, 0, 8, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_JumpIf(user_tankbasedirection > 359, "TurnLeft2")
			TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection+4)
			
			
			TNK1 T 1 
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving2" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_JumpIf(user_tankbasedirection > 359, "TurnLeft2")
			TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection+4)
			TNT1 A 0 A_TakeInventory("TurnRight", 1)
			TNT1 A 0 A_TakeInventory("TurnLeft", 1)
			
			
			TNK1 T 1 
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving3" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_JumpIf(user_tankbasedirection > 359, "TurnLeft2")
			TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection+4)
			
			Goto CheckIfStillMoves
		
		TurnLeft2:
			TNT1 A 0 A_SetUserVar("user_tankbasedirection", 0)
			TNT1 A 0 A_JumpIfInventory("Accelerate", 1, "TurnLeftAccel")
			Goto TurnLeft
			
			
		TurnLeftAccel:
			TNT1 A 0
			TNT1 A 0 A_TakeInventory("TurnLeft", 1)
			TNK1 T 1 
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_JumpIf(user_tankbasedirection > 359, "TurnLeft2")

			TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection+2)
			
			TNT1 A 0 ThrustThing(user_tankbasedirection*256/360, 1, 1)
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving3" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			
			TNT1 A 0 A_PlaySound("TANK1", 5, 1, 1)
			TNT1 A 0 A_SpawnItemEx ("TnkTreadsDamage" , 100, 0, 0, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEANGLE | SXF_ABSOLUTEVELOCITY)
			
			TNT1 A 0 A_SpawnItemEx("TnkStep", 0, 0, 8, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEANGLE)
			TNK1 T 1 
			//TNT1 A 0 ThrustThing(user_tankbasedirection*256/360, 1, 1)
			TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection+2)
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving2" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			
			TNK1 T 1 
			TNT1 A 0 ThrustThing(user_tankbasedirection*256/360, 1, 1)
			TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection+2)
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving2" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			
			TNT1 A 0 A_JumpIF(velz < 0, "Falling")
			
			TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, "TurnLeftAccel")
			TNT1 A 0 A_TakeInventory("TurnRight", 1)
			TNT1 A 0 A_TakeInventory("TurnLeft", 1)
			
			Goto CheckIfStillMoves	
			
		TurnRight:
			TNT1 A 0
			TNK1 T 1 
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Stay")
			TNT1 A 0 A_PlaySound("TANK1", 5, 1, 1)
			TNT1 A 0 A_SpawnItemEx ("TnkTreadsDamage" , 100, 0, 0, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEANGLE | SXF_ABSOLUTEVELOCITY)
			TNT1 A 0 A_SpawnItemEx("TnkStep", 0, 0, 8, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEANGLE)
			
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_JumpIf(user_tankbasedirection == 0, "TurnRIght2")
			TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection-4)

			
			
			TNK1 T 1 
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving2" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_JumpIf(user_tankbasedirection == 0, "TurnRIght2")
			TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection-4)
			TNT1 A 0 A_TakeInventory("TurnLeft", 1)
			TNT1 A 0 A_TakeInventory("TurnRight", 1)
			
			TNK1 T 1 
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving3" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_JumpIf(user_tankbasedirection == 0, "TurnRIght2")
			TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection-4)
			
			Goto CheckIfStillMoves
		
		TurnRight2:
			TNT1 A 0 A_SetUserVar("user_tankbasedirection", 360)
			TNT1 A 0 A_JumpIfInventory("Accelerate", 1, "TurnRightAccel")
			Goto TurnRight	
			
		
		TurnRightAccel:
			TNT1 A 0
			TNK1 T 1 
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_JumpIf(user_tankbasedirection == 0, "TurnRIght2")
			
			TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection-2)
			
			
			TNT1 A 0 A_PlaySound("TANK1", 5, 1, 1)
			TNT1 A 0 A_SpawnItemEx ("TnkTreadsDamage" , 100, 0, 0, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEANGLE | SXF_ABSOLUTEVELOCITY)
			
			TNT1 A 0 A_SpawnItemEx("TnkStep", 0, 0, 8, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEANGLE)
			TNK1 T 1 
			TNT1 A 0 ThrustThing(user_tankbasedirection*256/360, 1, 1)
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving3" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			
			TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection-2)
			TNK1 T 1 
			//TNT1 A 0 ThrustThing(user_tankbasedirection*256/360, 1, 1)
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving2" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			
			TNT1 A 0 A_SetUserVar("user_tankbasedirection", user_tankbasedirection-2)
			TNK1 T 1 
			TNT1 A 0 ThrustThing(user_tankbasedirection*256/360, 1, 1)
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_JumpIF(velz < 0, "Falling")
			TNT1 A 0 A_JumpIfInventory("TurnRight", 1, "TurnRightAccel")
			TNT1 A 0 A_TakeInventory("TurnLeft", 1)
			TNT1 A 0 A_TakeInventory("TurnRight", 1)
			Goto CheckIfStillMoves
		
		CheckIfStillMoves:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("EmergencyEject", 1, "EmergencyExit")
			TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
			TNT1 A 0 A_JumpIfInventory("Accelerate", 1, "Accelerate")
			TNT1 A 0 A_JumpIfInventory("Backpedal", 1, "BackPedal")
			TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, "TurnLeft")
			TNT1 A 0 A_JumpIfInventory("TurnRight", 1, "TurnRight")
			TNT1 A 0 A_StopSound(2)
			TNT1 A 0 A_PlaySound("TANK2", 5, 1, 1)
			TNT1 A 0 A_PlaySound("TANK3", 2)
			
		Stay:
			TNT1 A 0
			TNT1 A 0 
			
			TNT1 A 0 A_PlaySound("TANK2", 5, 1, 1)
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_JumpIfInventory("EmergencyEject", 1, "EmergencyExit")
			TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
			TNT1 A 0 A_JumpIfInventory("Backpedal", 1, "BackPedal")
			TNT1 A 0 A_JumpIfInventory("Accelerate", 1, "Accelerate")
			TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, "TurnLeft")
			TNT1 A 0 A_JumpIfInventory("TurnRight", 1, "TurnRight")
			TNK1 T 1 
			TNT1 A 0 A_JumpIF(velz < 0, "Falling")
			Goto Stay
			
		
		Pain.TracksDamaged:
			TNT1 A 0
			TNT1 A 0 
			
			TNT1 A 0 A_Jump(32, "DestroyTracks")
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_JumpIfInventory("EmergencyEject", 1, "EmergencyExit")
			TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
			TNT1 A 0 A_JumpIfInventory("Backpedal", 1, "BackPedal")
			TNT1 A 0 A_JumpIfInventory("Accelerate", 1, "Accelerate")
			TNK1 T 1 
			Goto Stay
			
			
		
		Accelerate:
			
			TNT1 A 0 A_PlaySound("TANK1", 5, 1, 1)
			TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, "TurnLeftAccel")
			TNT1 A 0 A_JumpIfInventory("TurnRight", 1, "TurnRightAccel")
			TNT1 A 0 A_SpawnItemEx ("TnkTreadsDamage" , 100, 0, 0, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEANGLE | SXF_ABSOLUTEVELOCITY)
			
			TNK1 T 1 
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Stay")
			TNT1 A 0 A_JumpIfInventory("EmergencyEject", 1, "EmergencyExit")
			TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
			TNT1 A 0 ThrustThing(user_tankbasedirection*256/360, 1, 1)
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving3" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			
			
			TNT1 A 0 A_SpawnItemEx("TnkStep", 0, 0, 8, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEANGLE)
			TNK1 T 1 
			//TNT1 A 0 ThrustThing(user_tankbasedirection*256/360, 1, 1)
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving2" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			
			
			TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, "TurnLeftAccel")
			TNT1 A 0 A_JumpIfInventory("TurnRight", 1, "TurnRightAccel")
			
			TNK1 T 1 
			TNT1 A 0 ThrustThing(user_tankbasedirection*256/360, 1, 1)
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_JumpIF(velz < 0, "Falling")
			Goto CheckIfStillMoves
			
			
		Backpedal:
			
			
			TNT1 A 0 A_PlaySound("TANK1", 5, 1, 1)
			TNT1 A 0 A_SpawnItemEx("TnkStep", 0, 0, 8, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_SpawnItemEx ("TnkTreadsDamage" , -100, 0, 0, 0, 0, 0, user_tankbasedirection, SXF_ABSOLUTEANGLE | SXF_ABSOLUTEVELOCITY)
			
			TNK1 T 1 
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Stay")
			TNT1 A 0 ThrustThing(user_tankbasedirection*256/360+128, 1, 1)
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving3" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			
			TNT1 A 0 A_JumpIfInventory("TurnRight", 1, "TurnLeft")
			TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, "TurnRight")
			
			TNK1 T 1 
			TNT1 A 0 A_JumpIfInventory("EmergencyEject", 1, "EmergencyExit")
			TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
			TNT1 A 0 //ThrustThing(user_tankbasedirection*256/360+128, 1, 1)
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving2" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)

			TNT1 A 0 A_JumpIfInventory("TurnRight", 1, "TurnLeft")
			TNT1 A 0 A_JumpIfInventory("TurnLeft", 1, "TurnRight")
			
			TNK1 T 1 
			TNT1 A 0 ThrustThing(user_tankbasedirection*256/360+128, 1, 1)
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_JumpIF(velz < 0, "Falling")
			Goto CheckIfStillMoves
			
			
		Falling:
			TNT1 A 0
			TNT1 A 0 A_CheckFloor("CheckIfStillMoves")
		
		FallingForReal:
			TNT1 A 0
			TNK1 T 1 
			TNT1 A 0 A_JumpIfInventory("EmergencyEject", 1, "EmergencyExit")
			TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "ExitVehicle")
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_JumpIF(velz == 0, "CrashIntoGround")
			TNT1 A 0 A_GiveInventory("VehicleFallingCount", 1)
			Loop
			
		CrashIntoGround:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("VehicleFallingCount", 6, "CrashIntoGroundViolently")
			TNK1 T 1 
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_SpawnItem("CrashTankIntotheGround1")
			TNT1 A 0 A_SpawnItem("CrashTankIntotheGround2")
			TNT1 A 0 A_SpawnItemEx ("LargeMassWaterImpact", 0, 0, -10)
			TNT1 A 0 Radius_Quake(1, 6, 0, 4, 0)
			TNT1 A 0 A_PlaySound("EBIKEBNC", 2)
			TNT1 A 0 A_TakeInventory("VehicleFallingCount", 100)
			Goto Stay
			
		CrashIntoGroundViolently:
			TNT1 A 0
			TNK1 T 1 
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_SpawnItem("CrashTankIntotheGround1")
			TNT1 A 0 A_SpawnItem("CrashTankIntotheGround2")
			
			TNT1 A 0 A_SpawnItemEx ("ExplosionSplashSpawner", 0, 0, -10)
			
			TNT1 A 0 Radius_Quake(8, 24, 0, 4, 0)
			TNT1 A 0 A_PlaySound("BIKECLW", 1)
			TNT1 A 0 A_PlaySound("EBIKECLS", 2)
			TNT1 AAAA 0 A_CustomMissile ("ExplosionSmoke", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 A 0 A_TakeInventory("VehicleFallingCount", 100)
			TNT1 A 0 A_SetPitch(-8.0 + pitch)
			TNK1 T 1 
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_SetPitch(4.0 + pitch)
			TNK1 T 1
			TNT1 A 0 A_SpawnItemEx ("TankBaseNotRealMoving1" , 0, 0, 0, momx, momy, momz, user_tankbasedirection, SXF_ABSOLUTEVELOCITY | SXF_ABSOLUTEANGLE)
			TNT1 A 0 A_SetPitch(4.0 + pitch)
			Goto Stay	
			
			
			
		Death:	
		XDeath:
			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
			TNT1 A 0 A_NoBlocking
			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))
			ELEC A 0 A_Explode(100, 250)
			TNT1 A 0 A_SpawnItem("DestroyedArmouredVehicle")
			8762 A 5
			TNT1 A 0 A_TakeInventory("TankGun", 1)
			TNT1 A 0 A_TakeInventory("IsInATank", 1)
			8762 A 100
			8762 A -1
			Stop
	}
}


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



ACTOR TankReady : Ammo
{
   Inventory.Amount 0
   Inventory.MaxAmount 100
   Ammo.BackpackAmount 0
   Ammo.BackpackMaxAmount 100
   Inventory.Icon TNT1A0
}

ACTOR TankGun : DoomWeapon
{
	Game Doom
	Weapon.SelectionOrder 1900
	Weapon.AmmoUse1 0
	Weapon.AmmoGive1 0
	Weapon.AmmoUse2 0
	Weapon.AmmoGive2 0
	Weapon.AmmoType2 "TankAmmo"
	Weapon.AmmoType1 "HeavyMachinegunAmmo"
	Obituary "$OB_MPPISTOL"
	+WEAPON.AMMO_OPTIONAL
	+WEAPON.ALT_AMMO_OPTIONAL
	+WEAPON.NOAUTOAIM
	//+WEAPON.NOAUTOFIRE
	Inventory.Pickupmessage "$PICKUP_PISTOL_DROPPED"
	Tag "$TAG_PISTOL"
	States
	{
		Ready:
			TNT1 A 0
			TNT1 A 0 A_PlaySound("TNKENGS", 4)
			TNHD W 10
			TNT1 A 0 A_PlaySound("INFRARED", 1)
			TNHD XYZXYZXYZXYZXYZXYZXYZ 1 BRIGHT
			TNT1 A 0 A_GiveInventory("TankReady", 100)
			TNT1 A 0 A_TakeInventory("EmergencyEject", 1)
			TNT1 A 0 A_TakeInventory("PressedUse", 1)
			TNT1 A 0 A_TakeInventory("PressedJump", 2)
			TNHD Y 0 A_TakeInventory("PressedJump", 2)
			TNHD X 1 A_GunFlash
			Goto ReadyToFire
			
		ReadyToFire:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("TankZoom", 1, "Ready2")
			TNT1 A 0 A_JumpIfInventory("SwitchFlashlight",1,"SwitchFlashlight")
			
			TNHD A 1 A_WeaponReady(1)
			TNT1 A 0 A_JumpIfInventory("Kicking", 1, "ZoomMode")
			TNT1 A 0 A_GiveInventory("TankReady", 1)
			NULL A 0 A_JumpIf (pitch > 220, "TooHighCheck2")
			NULL A 0 A_JumpIf (pitch > 16, "TooLowCheck2")
			Loop
			
			
		Ready2:
			TNT1 A 0
			TNT1 A 1 A_WeaponReady(1)
			TNT1 A 0 A_JumpIfInventory("SwitchFlashlight",1,"SwitchFlashlight")
			TNT1 A 0 A_JumpIfInventory("Kicking", 1, "ZoomMode")
			TNT1 A 0 A_GiveInventory("TankReady", 1)
			NULL A 0 A_JumpIf (pitch > 220, "TooHighCheck2")
			NULL A 0 A_JumpIf (pitch > 16, "TooLowCheck2")
			Loop
			
			
			
		NotReady:
			TNHD A 1 A_GiveInventory("TankReady", 1)
			Goto ReadyToFire
			
			
		NotReadyZoom:
			TNT1 A 1 A_GiveInventory("TankReady", 1)
			Goto ReadyToFire	
				
			
		ZoomMode:
			TNT1 A 0
			TNT1 A 1
			TNT1 A 0 A_JumpIfInventory("TankZoom", 1, "StopZoom")
			TNT1 A 0 A_ZoomFactor(5.0)
			TNT1 A 0 A_GiveInventory("TankZoom")
			TNT1 A 1
			TNT1 A 0 A_TakeInventory("Kicking", 1)
			Goto Ready2
		
		StopZoom:
			TNT1 A 0
			TNT1 A 0 A_ZoomFactor(1.0)
			TNT1 A 0 A_TakeInventory("TankZoom", 1)
			TNT1 A 1
			TNT1 A 0 A_TakeInventory("Kicking", 1)
			Goto ReadyToFire
		
		Deselect:
			TNHD Z 1 A_Lower
			TNT1 A 0 A_ZoomFactor(1.0)
			TNT1 A 0 SetPlayerProperty(0,0,4)
			Loop
			
		Select:
			TNT1 A 0
			TNHD z 1 A_Raise
			TNHD zzzzzzzzzzzzzzzzzzzzzz 0 A_Raise
			TNHD z 1 A_Raise
			Goto Ready
		
		Flash:
		
			TNT1 A 0 A_JumpIfInventory("TankReady", 99, 1)
			Goto Flashreloading
			TNHD J 1 BRIGHT
			TNT1 A 0 A_JumpIfHealthLower(2, "EmergencyExit")
			TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "LightEnd")
			NULL A 0 A_JumpIf (pitch > 220, "TooHighCheck1")
			NULL A 0 A_JumpIf (pitch > 16, "TooLowCheck1")
			TNHD J 1 BRIGHT
			TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "LightEnd")
			NULL A 0 A_JumpIf (pitch > 220, "TooHighCheck1")
			NULL A 0 A_JumpIf (pitch > 16, "TooLowCheck1")
			TNHD J 1 BRIGHT
			TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "LightEnd")
			NULL A 0 A_JumpIf (pitch > 220, "TooHighCheck1")
			NULL A 0 A_JumpIf (pitch > 16, "TooLowCheck1")
			Goto Flash
			
		FLashReloading:
			TNHD I 1 BRIGHT
			TNT1 A 0 A_JumpIfHealthLower(2, "EmergencyExit")
			TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "LightEnd")
			NULL A 0 A_JumpIf (pitch > 220, "TooHighCheck1")
			NULL A 0 A_JumpIf (pitch > 16, "TooLowCheck1")
			TNHD I 1 BRIGHT
			TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "LightEnd")
			NULL A 0 A_JumpIf (pitch > 220, "TooHighCheck1")
			NULL A 0 A_JumpIf (pitch > 16, "TooLowCheck1")
			TNHD I 1 BRIGHT
			TNT1 A 0 A_JumpIfInventory("PressedUse", 1, "LightEnd")
			NULL A 0 A_JumpIf (pitch > 220, "TooHighCheck1")
			NULL A 0 A_JumpIf (pitch > 16, "TooLowCheck1")
			TNT1 A 0 A_JumpIfInventory("TankReady", 99, "Flash")
			Goto Flashreloading
			
		EmergencyExit:
			TNT1 A 0 
			TNT1 A 0 A_PlaySound("CARSTE", 1)
			TNT1 A 0 A_GiveInventory("EmergencyEject")//("PressedUse")

			TNT1 A 5
			Goto LightEnd
			
		Fire:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("TankAmmo", 1, 2)
			Goto NotReady
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("TankZoom", 1, "FireZoom")
			TNT1 A 0 A_JumpIfInventory("TankReady", 99, 1)
			Goto NotReady
			TNT1 A 0 A_TakeInventory("TankReady", 100, 1)
			TNT1 A 0 A_PlaySound("TANKF", 1)
			TNT1 A 0 A_TakeInventory("TankAmmo", 1)
			
			MISG A 0 A_FireCustomMissile("TankShell", 0, 1, 0, -24)
			MISG A 0 A_FireCustomMissile("TankFireEffect", 0, 1, 0, -24)
			TNHD B 2 BRIGHT
			TNT1 A 0 BRIGHT A_SetPitch(pitch - 8.0)
			TNHD C 1
			TNHD DE 1 A_SetPitch(pitch + 2.0)
			TNHD AA 1 A_SetPitch(pitch + 2.0)
			TNT1 A 0 A_GiveInventory("FiredTankMainGun", 1)
			TNT1 A 0 A_GiveInventory("TankReady", 5)
			TNT1 A 0 A_PlaySound("TANKRE", 3)
			TNHD A 2
			Goto ReadyToFire
			
			
		FireZoom:	
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("TankReady", 99, 1)
			Goto NotReadyZoom
			TNT1 A 0 A_TakeInventory("TankReady", 100, 1)
			TNT1 A 0 A_PlaySound("TANKF", 1)
			TNT1 A 0 A_TakeInventory("TankAmmo", 1)
			MISG A 0 A_FireCustomMissile("TankShell", 0, 1, 0, -24)
			MISG A 0 A_FireCustomMissile("TankFireEffect", 0, 1, 0, -24)
			TNT1 I 1 BRIGHT
			TNT1 A 0 A_SetPitch(pitch - 8.0)
			TNT1 I 2
			TNT1 II 1 A_SetPitch(pitch + 2.0)
			TNT1 II 1 A_SetPitch(pitch + 2.0)
			TNT1 A 0 A_GiveInventory("FiredTankMainGun", 1)
			TNT1 A 0 A_GiveInventory("TankReady", 5)
			TNT1 A 0 A_PlaySound("TANKRE", 3)
			TNT1 I 2
			Goto Ready2
			
		NoAmmo:
			TNT1 A 2
			Goto ReadyToFire 
			
		AltFire:
			TNT1 A 0 A_JumpIfInventory("HeavyMachinegunAmmo", 1, 1)
			Goto NoAmmo
			
			
			TNT1 A 0 A_PlaySound("TANKMG", 1)
			TNT1 A 0 A_FireCustomMissile("HeavyMachinegunProjectile", 0, 1, 20, -25, 0, 0)
			TNT1 A 0 A_FireCustomMissile("HeavyMachinegunFlash", 0, 1, 20, -25)
			TNT1 A 0 A_TakeInventory("HeavyMachinegunAmmo", 1)
			
			TNT1 A 0 A_JumpIfInventory("TankZoom", 1, "AltFire2")
			
			TNHD F 1 BRIGHT
			TNT1 A 0 A_GiveInventory("TankReady", 1)
			TNHD A 1 A_GiveInventory("TankReady", 1)
			TNHD AA 1 A_GiveInventory("TankReady", 1)
			TNT1 A 0 A_ReFire
			Goto ReadyToFire
			
			
		AltFire2:	
			TNT1 F 1 BRIGHT
			TNT1 A 0 A_GiveInventory("TankReady", 1)
			TNT1 A 1 A_GiveInventory("TankReady", 1)
			TNT1 AA 1 A_GiveInventory("TankReady", 1)
			TNT1 A 0 A_ReFire
			Goto Ready2	
			
			
			
		
		TooHigh2:
			TNT1 A 0 A_SetPitch(326)
			Goto ReadyToFire
			
		
		TooLowCheck2:
			//NULL A 0 A_JumpIf (pitch > 180, "TooHighCheck1")
			TNT1 A 0 A_SetPitch(16)
			Goto ReadyToFire
			
			
		TooHighCheck2:
			TNT1 A 0
			NULL A 0 A_JumpIf (pitch < 325, "TooHigh2")
			Goto ReadyToFire
		
		
		
		TooHigh:
			TNT1 A 0 A_SetPitch(326)
			Goto Flash
			
		
		TooLowCheck1:
			//NULL A 0 A_JumpIf (pitch > 180, "TooHighCheck1")
			TNT1 A 0 A_SetPitch(16)
			Goto Flash
			
		TooHighCheck1:
			TNT1 A 0
			NULL A 0 A_JumpIf (pitch < 325, "TooHigh")
			Goto Flash
		
		
		
			
			
			
		SwitchFlashlight:
			TNT1 A 0
			TNT1 A 0 A_TakeInventory("SwitchFlashlight", 1)
			TNT1 A 0 A_JumpIfInventory("FlashlightOn",1,"TurnFlashOff")
			TNT1 A 0 A_Giveinventory("FlashlightOn",1)
			TNT1 A 0 A_giveinventory("PowerLightAmp", 1)
			TNT1 A 0 A_PlaySound("INFRARED", 1)
			TNT1 A 0 A_PlaySound("FLASHON", 2)
			
			Goto ReadyToFire
		TurnFlashOff:
			TNT1 A 0 A_Takeinventory("FlashlightOn",1)
			TNT1 A 0 A_TakEinventory("PowerLightAmp", 1)
			TNT1 A 0 A_PlaySound("FLASHOFF", 2)
			Goto ReadyToFire
		
		LightEnd:
			TNT1 A 1
			TNT1 A 0 A_Takeinventory("PowerLightAmp", 1)
			Stop
			
		Spawn:
			LAUN A -1
			Stop
		
	}
}
