ACTOR DemonTechTrooper 28913
{ 
Monster
Health 180
Radius 20
Height 56
Speed 8
Mass 100
Alpha 0.26
Renderstyle Translucent
PainChance 70
PainChance "RedZombieDemonTech", 0
+FLOORCLIP
+MISSILEMORE
+MISSILEEVENMORE
DamageFactor "RedZDemonTechProjectile", 0.0
DropItem "StimKit" 80
DropItem "ArmorBooster" 80
DropItem "AmmoPack" 65
DropItem "HandGrenadeAmmo" 150 1
DropItem "MineAmmo" 75 1
DropItem "DemonAmmo" 162 80
AttackSound "Null"
SeeSound "superzombie/sight"
PainSound "superzombie/pain"
DeathSound "superzombie/death"
ActiveSound "superzombie/active"
Obituary "%o was silenced by a Demon Tech Trooper."
States
	{
	Spawn:
		HTWA A 10 A_Look
		Loop
	See:
		HTWA AABB 2 A_Chase
		TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
		TNT1 A 0 A_JumpIfTargetInLOS("Strafing")
		HTWA CCDD 2 A_Chase
		TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
		Loop
	Strafing:
		TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
		TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
		HTWA AABB 3 A_GiveInventory("DTZombieStrafing",1)
		TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
		TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
		HTWA CCDD 3 A_GiveInventory("DTZombieStrafing",1)
		Goto See
	Pause:
		TNT1 A 0 A_GiveInventory("DTZombieStrafing",1)
		HTF1 A 20 A_PlaySound("weapons/demontechsteam")
		Goto See
	Missile: 
		TNT1 A 0 A_GiveInventory("DTZombieStrafing",1)
		HTF1 A 2 A_FaceTarget
		TNT1 A 0 A_CustomMissile("RedZDemonTechProjectile",35,0,random(-8,8),0)
		HTF1 B 2 Bright A_PlaySoundEx("weapons/demontechfire","Weapon")
		TNT1 A 0 A_GiveInventory("DTZombieStrafing",1)
		TNT1 A 0 A_Jump(20,"Pause")
		TNT1 A 0 A_GiveInventory("DTZombieStrafing",1)
		TNT1 A 0 A_SpidRefire
		Goto Missile+1
	Pain:
		TNT1 A 0 A_Jump(87,"PainMissile")
		TNT1 A 0 A_GiveInventory("DTZombieStrafing",1)
		HTPA A 3 A_Pain
		Goto See
	PainMissile:
		HTPA A 3
		HTPA A 3 A_Pain
		Goto Missile
	Death:
		TNT1 A 0
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(298) == 1,2)
		TNT1 A 0 A_Jump(224,2)
		TNT1 A 0 A_SpawnItem("Demon Tech Rifle",0,12)
		HTZA H 5 A_Scream
		HTZA I 5 A_Fall
		HTZA J 5 A_SpawnItem("BodyCrash",0,0,0,0)
		HTZA J 5
		HTZA L 63000 CanRaise
		Stop
	XDeath:
		TNT1 A 0
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(298) == 1,2)
		TNT1 A 0 A_Jump(224,2)
		TNT1 A 0 A_SpawnItem("Demon Tech Rifle",0,12)
		HTD1 A 3 A_XScream
		HTD1 B 3 A_SpawnItemEx("GibbedGenerator",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
		HTD1 A 3 A_Fall
		HTD1 CDE 3
		HTD1 F 63000 CanRaise
		Stop
	Raise:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		HTZA LJJIH 5
		Goto See
	}
}

ACTOR RedZDemonTechProjectile
{
PROJECTILE
Height 4
Radius 2
Speed 40
Scale 0.06
Decal "RedDTRScorch"
Damage 5
+FORCERADIUSDMG
DamageType "RedZombieDemonTech"
DeathSound "weapons/demontechex"
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_Jump(128,"Spawn2")
		Goto Normal
	Normal:
		TNT1 A 0 Bright A_Jump(128,"NormalFX")
		RDTR A 1 Bright A_SpawnItemEx("RedDemonTechTrail",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		Loop
	NormalFX:
		TNT1 A 0 Bright A_SpawnItemEx("RDTechLightning",Random(-1,1),Random(-1,1),Random(-1,1),0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		RDTR A 1 Bright A_SpawnItemEx("RedDemonTechTrail",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_SpawnItemEx("RDTechLightning2",Random(-1,1),Random(-1,1),Random(-1,1),0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		RDTR A 1 Bright A_SpawnItemEx("RedDemonTechTrail",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		Goto Normal
	Spawn2:
		TNT1 A 0 Bright A_Jump(128,"Spawn2FX")
		RDTR A 1 Bright A_SpawnItemEx("RedDemonTechTrail2",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		Loop
	Spawn2FX:
		TNT1 A 0 Bright A_SpawnItemEx("RDTechLightning",Random(-1,1),Random(-1,1),Random(-1,1),0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		RDTR A 1 Bright A_SpawnItemEx("RedDemonTechTrail",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_SpawnItemEx("RDTechLightning2",Random(-1,1),Random(-1,1),Random(-1,1),0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		RDTR A 1 Bright A_SpawnItemEx("RedDemonTechTrail",Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-1,1),Random(-20,20),SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		Goto Spawn2
	Death:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_SpawnItemEx("RedParticleSpawnerDT",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
		TNT1 A 0 Bright A_SpawnItemEx("RedDemonTechEx",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
		TNT1 AAA 0 Bright A_CustomMissile("RedDTKaboom",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
		TNT1 AAAA 0 Bright A_CustomMissile("SmokeFX4",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
		TNT1 A 1 Bright A_Explode(6,48,0,0)
		Stop
	}
}

Actor DTZombieStrafing : CustomInventory
{
-COUNTITEM
+INVENTORY.QUIET
+INVENTORY.UNDROPPABLE
+INVENTORY.ALWAYSPICKUP
+INVENTORY.AUTOACTIVATE       
Inventory.Amount 1
Inventory.MaxAmount 0
States
	{
	Pickup:
		TNT1 A 1 
		TNT1 A 1 A_Jump(188,2)
		TNT1 A 1 A_GiveInventory("DTZombieJumping",1)
		TNT1 A 1 A_JumpIf(velx != 0 || vely != 0,2)
		TNT1 A 1 A_Jump(256,2)
		TNT1 A 1 A_Jump(235,5)
		TNT1 A 1 A_JumpIfInventory("DTStrafeSens",1,3)
		TNT1 A 1 A_GiveInventory("DTStrafeSens",1)
		TNT1 A 1 A_Jump(256,2)	
		TNT1 A 1 A_TakeInventory("DTStrafeSens",1)
		TNT1 A 1 A_JumpIfInventory("DTStrafeSens",1,3)
		TNT1 A 1 ThrustThing(angle*256/360+38.7,3,0,0)
		TNT1 A 1 A_Jump(256,2)	
		TNT1 A 1 ThrustThing(angle*256/360+38.7,-3,0,0)
		TNT1 A 1 A_FaceTarget
		TNT1 A 1 A_Jump(24,2)
		TNT1 A 1 A_JumpIfCloser(300,2)
		TNT1 A 1 A_Recoil(-1)
		Stop
		TNT1 A 1 A_Recoil(1)
		Stop	
	}
}

Actor DTZombieJumping : DTZombieStrafing
{
States
	{
	Pickup:
		TNT1 A 1 
		TNT1 A 1 A_CheckFloor(1)
		Stop
		TNT1 A 1 A_Jump(242,2)
		TNT1 A 1 ThrustThingZ(0,25,0,1)
		Stop
		TNT1 A 1
		Stop
	}
}

ACTOR DTStrafeSens : Inventory { Inventory.MaxAmount 1 }