// *** MODIFIED BY CHEBMASTER
// I mark most important places modified by me with //***Che -- unless I forget to.








ACTOR FBD_PistolZombie: FBD_RifleZombie 17843
{
	//***Che radius, height and maxdropoffheight (n/a for flying ones) MUST be kept consistent with FBD_TrySpawn in FBD_CORE.acs!
	
	DropItem "PistolSpawner"
	Tag "$PISZOM" // "Pistol Zombie";
	//$Sprite PSPOA1
	States
	{
		Pain.Ice:
			"----" A 20 A_Pain
			Goto See
			
		WaitTargetsFatalityOut:
			PSPO A 1 A_Jump(256, "FallBackContinue", "Panic", "Panic")
			Wait
		
		Spawn:
			PSSS B 0 NODELAY ACS_NamedExecuteWithResult("FBD_RunMonster", 5) // 5 = default headbox
			"----" A 0 A_GiveInventory("TargetIsAFormerHuman", 1) //used by AOE DOT inflictors to reward players with soul ammo -- otherwise untraceable
			TNT1 A 0 A_GiveInventory("TypeZombieMan", 1)
			
			TNT1 A 0 A_GiveInventory("SKZombieMan", 1)
			TNT1 A 0 A_GiveInventory("ZombieManAmmo", random(1,10))
			PSPO A 7
			Goto Stand
		
		Stand:
			TNT1 A 0
			TNT1 A 0 A_JumpIf(user_serverside_sfchk >= 4, "StandSfestExtreme") // extreme slaughtermap optimization
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 6, 0, 39)
			PSPO AAAAAA 10 A_Look
			Loop
		
		StandSfestExtreme:
			PSPO A 10 A_Look
			Loop
			
		Idle:
			TNT1 A 0		
			TNT1 A 0 A_ClearTarget
			TNT1 A 0 A_SetUserVar("user_sleeping", 1)			
			TNT1 A 0 A_TakeInventory("ZombiemanAmmo", 20)
			TNT1 A 0 A_GiveInventory("ZombieManAmmo", random(1,10))
		SearchForPlayer:

			TNT1 A 0 A_SetUserVar("user_sleeping", 1)		

			TNT1 A 0 A_TakeInventory("EnemyMemory", 30)
			TNT1 A 0 A_GiveInventory("SKZombieMan", 1)

			
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 6, 0, 39)
			PSPO A 10 A_Look

			PSPO A 10 A_Look

			PSPO A 10 A_Look

			PSPO A 10 A_Look


			PSPO A 10 A_Look

			PSPO A 10 A_Look

			PSPO A 10 A_Look
			
		StartSearching:	
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 6, 0, 39)
			PSPO A 2 A_Look
			
			TNT1 A 0 A_Wander
			PSPO A 2 A_Look
			TNT1 A 0 A_Wander
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 3, 0, 40)
			PSPO B 2 A_Look
			
			TNT1 A 0 A_Wander
			PSPO B 2 A_Look
			TNT1 A 0 A_Wander
			
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 3, 0, 39)
			PSPO C 2 A_Look
			
			TNT1 A 0 A_Wander
			PSPO C 2 A_Look
			TNT1 A 0 A_Wander
			
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 1, 0, 40)
			PSPO D 2 A_Look
			
			TNT1 A 0 A_Wander
			PSPO D 2 A_Look
			TNT1 A 0 A_Wander
			
			
			TNT1 A 0 A_Jump(64, "Idle")
			Goto StartSearching
			
			
		FallBack:
			//***Che: taraget, not "any player" //TNT1 A 0 A_CheckSight("Advance")
			TNT1 A 0 A_JumpIfTargetinLOS(1)
			Goto Advance
			
			TNT1 A 0 A_JumpIfInventory("Enraged", 1, 5)
			TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAMiniBoss", 1, "Panic")
			TNT1 A 0 A_JumpIfInTargetInventory("TargetIsABoss", 1, "Panic")
			TNT1 A 0 A_JumpIfInTargetInventory("TargetIsAGreatTerribleBoss", 1, "Panic")
			TNT1 A 0 A_JumpIfInTargetInventory("GoFatality", 1, "WaitTargetsFatalityOut")
		
		FallBackContinue:	
			TNT1 A 0 A_ChangeFLag("NODROPOFF", 1)

			
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 1, 0, 40)
			PSPO D 2 A_FaceTarget
			PSPO D 2 A_Recoil(4)
			TNT1 A 0 A_jump(64, "Missile")
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 3, 0, 39)
			PSPO C 2 A_FaceTarget
			PSPO C 2 A_Recoil(4)
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 3, 0, 40)
			PSPO B 2 A_FaceTarget
			PSPO B 2 A_Recoil(3)
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 6, 0, 39)
			PSPO A 2 A_FaceTarget
			PSPO A 2 A_Recoil(3)
			TNT1 A 0 A_ChangeFLag("NODROPOFF", 0)
			GOto Missile
			
		See:
			TNT1 A 0 A_ChangeFLag("NODROPOFF", 0)
			TNT1 A 0 A_TakeInventory("SKZombieman", 1)
			TNT1 A 0 A_TakeInventory("EnemyMemory", 15)
			TNT1 A 0 A_CheckSight("SeeNeverSeen")
			TNT1 A 0 A_TakeInventory("SKZombieman", 1)
			Goto SeeContinue
		
		SeeContinue:
			TNT1 A 0	
		
			// slaughtermap manage
			TNT1 A 0 A_JumpIf(!user_sleeping, 3) // forgo the expensive sight check if already awake
			TNT1 A 0 A_CheckSight(2) // do not consider ourselves awake if none of the players can see us
			TNT1 A 0 A_SetUserVar("user_sleeping", 0)
			TNT1 A 0 A_JumpIf(user_serverside_sfchk != -1, 3) // -1 means ACS commands us to do the radiusgive
			TNT1 A 0 A_RadiusGive("SfestCounterServerside", 500, RGF_MONSTERS | RGF_CUBE | RGF_NOSIGHT, 1)			
			TNT1 A 0 A_SetUserVar("user_serverside_sfchk", 1) // reply that we did the deed	
		
		
		
			TNT1 A 0 A_JumpIfCloser(200, "FallBack")
		Advance:
			TNT1 A 0 A_ChangeFLag("NODROPOFF", 0)
			//TNT1 A 0 A_SpawnItemEx("FootSep", 0, 0, 10, 0, 0)
			TNT1 A 0 A_JumpIfInventory("EnemyMemory", 15, "Idle")
			TNT1 A 0 A_GiveInventory("EnemyMemory", 1)

			
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 6, 0, 39)
			PSPO AAA 2 A_Chase
			
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 3, 0, 40)
			PSPO BBB 2 A_Chase
			
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 3, 0, 39)
			PSPO CCC 2 A_Chase
			
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 1, 0, 40)
			PSPO DDD 2 A_Chase
			
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), "Idle")
			Loop
			
		SeeNeverSeen:
		Advance:
			TNT1 A 0 A_ChangeFLag("NODROPOFF", 0)

			
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 6, 0, 39)
			PSPO AA 2 A_Chase
			
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 3, 0, 40)
			PSPO BB 2 A_Chase
			
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 3, 0, 39)
			PSPO CC 2 A_Chase
			
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 1, 0, 40)
			PSPO DD 2 A_Chase
			TNT1 A 0 A_CheckSIght("SeeNeverSeen")
			Goto SeeContinue	
			
		Pain.Taunt:
			TNT1 A 0
			TNT1 A 0 A_JumpIfInventory("Enraged", 1, "Missile")
			PSPO B 0 A_Pain
			TNT1 A 0 A_ChangeFlag("FASTER", 1)
			TNT1 A 0 A_ChangeFlag("MISSILEMORE", 1)
			TNT1 A 0 A_ChangeFlag("MISSILEEVENMORE", 1)
			TNT1 A 0 A_PlaySound("grunt/sight", CHAN_VOICE)
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 3, 0, 40)
			PSPO B 1 A_FaceTarget
			PSPO B 10
			TNT1 A 0 A_GiveInventory("Enraged", 1)
			TNT1 A 0 A_PlaySound("grunt/sight", CHAN_WEAPON)
			Goto Missile
			
		Pain.Head:
			TNT1 A 0 A_TakeInventory("SKZombieman", 1)
			
			POSH G 5 A_Pain
			TNT1 A 0 A_FaceTarget
			
			POSH H 20
			
			POSH H 20
			Goto SeeContinue	
			
		Missile:
			TNT1 A 0 A_Stop
			
			// slaughtermap manage - warming the headbox up
			TNT1 A 0 A_JumpIf(!user_sleeping, 4) // forgo the expensive sight check if already awake
			TNT1 A 0 A_JumpIfInTargetInventory("IsPlayer", 1, 2) // bypass the sight check 
			TNT1 A 0 A_CheckSight(2) // out of sight of any player, AND attacking another monster, keep slumbering
			TNT1 A 0 A_SetUserVar("user_sleeping", 0)			
			
			TNT1 A 0 A_ChangeFlag("GHOST", 0)
			TNT1 A 0 A_ChangeFLag("NODROPOFF", 0)
			TNT1 A 0 A_TakeInventory("SKZombieman", 1)
			TNT1 A 0 A_TakeInventory("EnemyMemory", 10)
			
			//TNT1 A 0 A_Jump(8, "Grenade")
			
			TNT1 A 0 A_JumpIfInTargetInventory("IsLTGPlayer", 1, "LTGCheck")
		MissileContinueAfterLTGCheck:	
			
			//TNT1 A 0 A_TakeInventory("CantFire", 1)
			//TNT1 A 0 A_CustomMissile("MonsterTargetCheck", 34, 0, 0, 0) 
			//TNT1 A 0 A_CustomMissile("MonsterTargetCheckFaster", 34, 0, 0, 0)  
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -9, 0, 38)
			PSPO E 14 A_FaceTarget
			
		FireGun:
			
			TNT1 A 0 A_GiveInventory("ZombieManAmmo", 1)
			TNT1 A 0 A_PlaySound("pfire")
			TNT1 A 0 A_CustomMissile("DistantFireSoundRifle", 32, 0, 0, 1, 0)
			PSPO F 2 BRIGHT A_CustomMissile("ZombieManTracer", 48, 0, random(-2, 2), 1, random(-2, 2))
			TNT1 A 0 A_SpawnItem ("PistolCaseSpawn", 0, 30,0)
			PSPO E 12 A_FaceTarget
			
			TNT1 A 0 A_JumpIfCloser(500, 2)
			TNT1 A 0 A_Jump(200, 2)
			TNT1 A 0 A_JumpIfInTargetInventory("GoFatality", 1, "WaitTargetsFatalityOut")
			
			TNT1 A 0 A_Jump(96, "FireGun")
		   
			TNT1 A 0 A_JumpIfInventory("ZombieManAmmo", 15, "Reload")
			TNT1 A 0 A_JumpIf(CallAcs("FBD_TargetIsInvisible"), "SearchForPlayer")
			Goto SeeContinue
			
			
		
		Reload:
			TNT1 A 0 A_TakeInventory("ZombieManAmmo", 20)
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 0, 2, 41)
			
			PSPR A 1
			PSPR A 1 A_CustomMissile("EmptyClipSpawn", 38, 0, random(-11, 11), 0)
			TNT1 A 0 A_PlaySound("Reload")
			PSPR ABACDED 3
			Goto SeeContinue

		Pain.Avoid:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteWithResult("DeleteHeadboxMkII")
			TNT1 A 0 A_Jump(256, "AvoidLeft", "AvoidRight")
			Goto AvoidLeft
		  
		AvoidLeft:
			PSPO A 1 A_FaceTarget
			TNT1 A 0 ThrustThing(angle*256/360+192, 15, 0, 0)
			ZRO2 ABCDEFGH 3 A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -9, 0, 38, 1)
			Goto Missile
		AvoidRight:
			PSPO A 1 A_FaceTarget
			TNT1 A 0 ThrustThing(angle*256/360+64, 15, 0, 0)
			ZRO1 ABCDEFGH 3 A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -9, 0, 38, 1)
			Goto Missile

	   //If the monster is hit by the "Killme" damage (which is "exploded" by the captured marine), automatically start firing at the target.
		Pain.KillMe:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteAlways("FBD_DropGrenade")
			TNT1 A 0 HealThing(1)
			Goto Missile
		//Emergency manuever in case the monster gets killed by an "alerter" actor	
		//Death.KillMe:
		//Death.Taunt:
		//Death.Avoid:
		//	Goto Death
			//***Che: grrrrrr >:(
			//TNT1 A 0
			//TNT1 A 0 A_ChangeFlag("SOLID", 0)
			//TNT1 A 0 A_SpawnItem("PistolZombie")
			//TNT1 A 0
			//Stop


		Pain.Cut:
		Pain.Saw:
			TNT1 A 0
			TNT1 A 0 A_Stop
		Pain:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteAlways("FBD_DropGrenade")
			TNT1 A 0 A_JumpIfInventory ("IsDown", 1, "PainDown") //8)
			
			PSPO G 2 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -12, -11, 40) // whoa, that's a big y-offset
			TNT1 A 0 A_TakeInventory("SKZombieman", 1)
			
			PSPO G 2 A_Pain
			TNT1 A 0 A_Jump(196, "Missile")
			Goto SeeContinue
		   // TNT1 AAAA 0
		PainDown:	
			TNT1 A 0 A_Pain
			ID11 F 6 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -15, 0, 5)
			Goto GetUp
			
		Pain.Argent:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteAlways("FBD_DropGrenade")
			
			//TNT1 A 0 A_ClearTarget
			TNT1 A 0 A_GiveInventory("Enraged", 1)
			TNT1 A 0 A_Pain
			TNT1 A 0 HealThing(15,60)
			TNT1 A 0 ACS_NamedExecuteWithResult("DisplayArgentDischarge", 10, 40, 0)	

			TNT1 A 0 A_JumpIfInventory ("IsDown", 1, "PainDown")
			
			
			PSPO G 2 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -12, -11, 40)
			TNT1 A 0 A_TakeInventory("SKZombieman", 1)
			
			PSPO GGGG 8 A_Pain
			TNT1 A 0 A_Jump(64, "Missile")
			Goto SeeContinue			
			
		Pain.LowKick:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteAlways("FBD_DropGrenade")
			TNT1 A 0 A_JumpIfInventory("IsDown", 1, "Death.LowKick")
			Goto Pain
			
	//	Death.LowKick:
	//		TNT1 A 0 A_NoBlocking
	//		TNT1 A 0 A_GiveToTarget("GoFatality", 1)
	//		TNT1 A 0 A_GiveToTarget("IsCurbstompingZombieman", 1)
	//		Stop	

		Pain.Melee:
		Pain.Fatality:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteAlways("FBD_DropGrenade")
			TNT1 A 0 A_JumpIfInventory ("SKZombieman", 1, "GotoStealthKill")
			TNT1 A 0 A_JumpIfInventory ("IsDown", 1, 8)
			
			PSPO G 4 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -12, -11, 40)
			
			PSPO G 4 A_Pain
			Goto SeeContinue
			TNT1 AAAA 0
			TNT1 A 0 A_Pain
			//ID11 FRRRQ 10
			//flying on his back, front only
			ID11 F 10 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -15, 0, 5)
			//sprawled on his  back, front only
			ID11 R 20 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -15, 0, 1)
			//sitting up, front only
			ID11 Q 10 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 0, -4, 19)
			TNT1 A 0 A_TakeInventory("SKZombieman", 1)
			TNT1 A 0 A_TakeInventory("IsDown", 1)
			Goto SeeContinue
			
		GotoStealthKill:
			TNT1 A 1
			//TNT1 A 0 A_JumpIfInTargetInventory("PowerStrength", 1, "BecomeMeatShield")
			TNT1 A 0 A_Explode(100, 1, 1)
			TNT1 A 1
			Goto SeeContinue
			
		BecomeMeatShield:
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_GiveToTarget("HasZManShield", 1)
			TNT1 A 0 A_GiveToTarget("GotMeatShield", 1)
			TNT1 A 30 ACS_NamedExecuteWithResult("DeleteHeadboxMkII")
			Stop
		
		Pain.ExtremePunches:
		Pain.ExplosiveImpact:
		Pain.Explosive:
		Pain.Bfg10k: //***Che changed damage type from extreme to custom
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteAlways("FBD_DropGrenade")
			TNT1 A 0 A_ChangeFlag("NOBLOCKMONST", 1)
			TNT1 A 0 A_ChangeFLag("NODROPOFF", 0)
			TNT1 A 0 A_Pain
			TNT1 A 0 A_JumpIfInventory ("IsDown", 1, "Pain")
			TNT1 A 0 A_TakeInventory("SKZombieman", 1)
			TNT1 A 0 A_GiveInventory("IsDown", 1)
			TNT1 A 0 ThrustThingZ(0,40,0,1)
			//POS4 UVWXY 5
			//falling backwards, front only
			POS4 U 5 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 0, -5, 39)
			POS4 V 5 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -15, 0, 23)
			POS4 W 5 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -15, 0, 18)
			POS4 X 5 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -15, 0, 5)
			POS4 Y 5 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -15, 0, 1)
			Goto FallingAfterImpact
			
		Pain.Slide:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteAlways("FBD_DropGrenade")
			TNT1 A 0 A_ChangeFlag("NOBLOCKMONST", 1)
			TNT1 A 0 A_ChangeFLag("NODROPOFF", 0)
			TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
			TNT1 A 0 A_ChangeFlag("GHOST", 1)
			TNT1 A 0 A_ChangeFlag("THRUGHOST", 1)
			TNT1 A 0 A_ChangeFlag("USESPECIAL", 1)
			POS4 U 0 A_Pain
			TNT1 A 0 A_ChangeFlag("FORCEXYBILLBOARD", 1)
			TNT1 A 0 A_JumpIfInventory ("IsDown", 1, "Pain")
			TNT1 A 0 A_TakeInventory("SKZombieman", 1)
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 0, -5, 39)
			POS4 U 1 A_facetarget
			TNT1 A 0 ThrustThingZ(0,50,0,1)
			TNT1 A 0 A_FaceTarget
			POS4 U 3 
			TNT1 A 0 A_Recoil(-8)
			TNT1 A 0 A_GiveInventory("IsDown", 1)
			TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
			TNT1 A 0 A_ChangeFlag("GHOST", 0)
			TNT1 A 0 A_ChangeFlag("THRUGHOST", 0)
			//POS4 UVWXY 3
			//falling backwards, front only
			POS4 U 3
			POS4 V 3 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -15, 0, 23)
			POS4 W 3 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -15, 0, 18)
			POS4 X 3 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -15, 0, 5)
			POS4 Y 3 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -15, 0, 1)
			Goto FallingAfterImpact
			 
		Pain.Kick:
		Pain.HeavyImpact:
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteAlways("FBD_DropGrenade")
			TNT1 A 0 A_ChangeFlag("NOBLOCKMONST", 1)
			TNT1 A 0 A_ChangeFLag("NODROPOFF", 0)
			TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
			TNT1 A 0 A_ChangeFlag("USESPECIAL", 1)
			POS4 U 0 A_Pain
			TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
			TNT1 A 0 A_ChangeFlag("FORCEXYBILLBOARD", 1)
			TNT1 A 0 A_JumpIfInventory ("IsDown", 1, "Pain")
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 0, -5, 39)
			TNT1 A 0 A_TakeInventory("SKZombieman", 1)
			POS4 U 1 A_facetarget
			TNT1 A 0 ThrustThingZ(0,30,0,1)
			TNT1 A 0 A_FaceTarget
			POS4 U 3 ThrustThing(angle*256/360+128, 10, 0, 0)
			TNT1 A 0 A_GiveInventory("IsDown", 1)
			//POS4 UVWXY 3
			//falling backwards, front only
			POS4 U 3
			POS4 V 3 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -15, 0, 23)
			POS4 W 3 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -15, 0, 18)
			POS4 X 3 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -15, 0, 5)
			POS4 Y 3 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -15, 0, 1)
			Goto FallingAfterImpact
			
		FallingAfterImpact:
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -15, 0, 5)
			ID11 F 1 A_GiveInventory ("FallingHeight", 1)
			ID11 F 1 A_CheckFloor ("GetUp")
			NULL A 0 A_JumpIf (momz == 0, "GetUp")
			Loop
			
		GetUp:
			TNT1 A 0
			MARN A 0 A_SpawnItem("bdbodythud")
			TNT1 A 0 A_JumpIfInventory ("FallingHeight", 5, "FallingDie")
			TNT1 A 0 A_TakeInventory("FallingHeight", 100)
			TNT1 A 0 A_Stop
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -15, 0, 1)
			ID11 RRRRRRRRRRRRRR 5 A_JumpIf(momz < 0, "FallingAfterImpact")
			
			TNT1 A 0 A_TakeInventory("IsDown", 1)
			ID11 Q 10 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 0, -4, 19)
			TNT1 A 0 A_ChangeFlag("FORCEXYBILLBOARD", 0)
			TNT1 A 0 A_ChangeFlag("USESPECIAL", 0)
			Goto SeeContinue
			
		Active:
			TNT1 A 0
			
			TNT1 A 0 A_GiveToTarget("ExecuteDownedZombieman", 1)
			TNT1 A 0 A_GiveToTarget("GoSpecial", 1)
			TNT1 A 0
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", -15, 0, 5)
			ID11 RRRRRR 2 A_JumpIfInTargetInventory("IsExecutingOnAir", 1, "FinishActive")
			TNT1 A 0 A_JumpIfInTargetInventory("ExecuteBashWall", 1, "FinishActive")
			TNT1 A 1
			TNT1 A 0 A_JumpIfInTargetInventory("ExecuteStompWall", 1, "GetUp")
		FinishActive:
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_ChangeFlag("SHOOTABLE", 0)
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
			TNT1 A 0 A_ChangeFlag("COUNTKILL", 0)
			TNT1 A 0 A_ChangeFlag("USESPECIAL", 0)
			Stop

		LTGCheckExtreme: // extreme outfits, 25% chance to treat the player as naked on each attack.
			TNT1 A 0 A_JumpIfCloser(400, 1)
			Goto MissileContinueAfterLTGCheck
			TNT1 A 0 A_JumpIfInTargetInventory("LTGExtreme", 1, 1)
			Goto MissileContinueAfterLTGCheck
			TNT1 A 0 A_Jump(64, "LTGCheckB")
			Goto MissileContinueAfterLTGCheck
		LTGCheck:
			TNT1 A 0 A_JumpIfInTargetInventory("IsDressed", 1, "LTGCheckExtreme")
		LTGCheckB:	
			TNT1 A 0 A_JumpIfInventory("AlreadyPerformedLTGCatCall", 1, "LTGCheck2")
			
			TNT1 A 0 A_JumpIfCloser(600, 1)
			Goto MissileContinueAfterLTGCheck
			
			TNT1 A 0 A_GiveInventory("AlreadyPerformedLTGCatCall", 1)
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 3, 0, 40)

			TNT1 A 0 A_PlaySound("grunt/catcall", CHAN_VOICE)
			PSPO ABABAB 15 A_FaceTarget
			Goto See

		LTGCheck2:
			TNT1 A 0 ACS_NamedExecuteWithResult("AdjustHeadboxMkII", 6, 0, 39)
			TNT1 A 0 A_PlaySound("grunt/catcall", CHAN_VOICE)
			PSPO AAAAAA 15 A_FaceTarget
			TNT1 A 0 A_JumpIfTargetInLOS("MissileContinueAfterLTGCheck")
			Goto See			
	}
}





Actor PistolZombieRaisedByVile: FBD_PistolZombie {
	States {
		Spawn:
			TNT1 A 0 NODELAY A_ChangeFlag("NOPAIN", 1)

			// no raising animation: this one is spawned by a raised rifle zombie
			// *after* he had played it!
	
			TNT1 A 0 ACS_NamedExecuteWithResult("FBD_RunMonster", 5)
			"----" A 0 A_GiveInventory("TargetIsAFormerHuman", 1) //used by AOE DOT inflictors to reward players with soul ammo -- otherwise untraceable
			POSS G 1
			TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
			TNT1 A 0 ACS_NamedExecuteWithResult("FBD_CustomizeOnRez") // it runs OnRezMapScript
				// if the map prpvides one
			Goto See		
	}
}