ACTOR InfectedHunter
{
Health 250
Radius 20
Height 56
Speed 15
Mass 100
PainChance 160
MONSTER 
+FLOORCLIP
+MISSILEMORE
BloodColor "Green"
AttackSound "weapons/assaultrifle"
SeeSound "undeadhunter/activate"
AttackSound "Null"
PainSound "undeadhunter/pain"
DeathSound "undeadhunter/death"
ActiveSound "shotguy/active"
DropItem "ModdedGreenArmor" 90 1
DropItem "HandGrenadeAmmo" 190 1
DropItem "MineAmmo" 170 1
DropItem "AmmoPack" 90
DropItem "Backpack" 50 1
DropItem "Armorplate" 200 1
DropItem "Portablemedkit" 180 1
DropItem "DemonAmmoBox" 100 
DropItem "Demon Tech Rifle" 90 1
DropItem "Demon Rail Gun" 45 1
Tag "\c[n9]Infected hunter"
Obituary "%o was the prey for an Infected Hunter."
States
{
Spawn:
        ZHRT A 10 A_Look
		TNT1 A 0 A_SpawnItem("GHellionSmokeSpawner",0,0,0,0)
		ZHRT A 10 A_Look
        Loop
See:
		TNT1 A 0 A_SpawnItem("GHellionSmokeSpawner",0,0,0,0)
        ZHRT AABB 3 A_Chase
		TNT1 A 0 A_SpawnItem("GHellionSmokeSpawner",0,0,0,0)
        TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
		TNT1 A 0 A_SpawnItem("GHellionSmokeSpawner",0,0,0,0)
        ZHRT CCDD 3 A_Chase
		TNT1 A 0 A_SpawnItem("GHellionSmokeSpawner",0,0,0,0)
        TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
		TNT1 A 0 A_SpawnItem("GHellionSmokeSpawner",0,0,0,0)
		ZHRT A 0 A_Jump(80,"Rush")
		TNT1 A 0 A_Jump(80,"Phase")		
        Loop
Phase:
		TNT1 A 0 A_PlaySound("phaseimp/teleport")
		ZHRT E 2 A_FaceTarget
		ZHRT E 1 A_SetTranslucent(0.75)
		ZHRT E 1 A_SetTranslucent(0.55)
		ZHRT E 1 A_SetTranslucent(0.35)
		ZHRT E 1 A_SetTranslucent(0.20)
		Goto Phased
UnPhase:
		TNT1 A 0 A_PlaySound("phaseimp/teleport")
		ZHRT E 1 A_SetTranslucent(0.15)
		ZHRT E 1 A_SetTranslucent(0.35)
		ZHRT E 1 A_SetTranslucent(0.55)
		ZHRT E 1 A_SetTranslucent(0.75)
		TNT1 A 0 A_SetTranslucent(1)
		ZHRT E 2 A_FaceTarget		
		Goto See	
Phased:
		ZHRT AABBCCDDAABBCCDDAABBCCDDAABBCCDD 1 A_ExtChase(0,0)
		ZHRT AABBCCDDAABBCCDD 1 A_Chase
		TNT1 A 0 A_Jump(128,"UnPhase")
		Goto Phased+32
Rush:
		ZHRT A 0 A_JumpIfTargetInLOS("Strafing")
		TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
		TNT1 A 0 A_SpawnItem("GHellionSmokeSpawner",0,0,0,0)
		TNT1 A 0 A_SpawnItemEx("GreenChaingunnerA",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
		ZHRT A 1 Bright A_Chase
		TNT1 A 0 A_SpawnItemEx("GreenChaingunnerA",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
		ZHRT A 1 Bright A_Chase
		TNT1 A 0 A_SpawnItemEx("GreenChaingunnerB",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
		ZHRT B 1 Bright A_Chase
		TNT1 A 0 A_SpawnItemEx("GreenChaingunnerB",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
		ZHRT B 1 Bright A_Chase
		TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
		TNT1 A 0 A_SpawnItem("GHellionSmokeSpawner",0,0,0,0)
		TNT1 A 0 A_SpawnItemEx("GreenChaingunnerC",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
		ZHRT C 1 Bright A_Chase
		TNT1 A 0 A_SpawnItemEx("GreenChaingunnerC",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
		ZHRT C 1 Bright A_Chase
		TNT1 A 0 A_SpawnItemEx("GreenChaingunnerD",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
		ZHRT D 1 Bright A_Chase
		TNT1 A 0 A_SpawnItemEx("GreenChaingunnerD",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION)
		ZHRT D 1 Bright A_Chase
		TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
		TNT1 A 0 A_SpawnItem("GHellionSmokeSpawner",0,0,0,0)
		TNT1 A 0 A_Jump(84,"See")
		TNT1 A 0 A_SpawnItem("GHellionSmokeSpawner",0,0,0,0)
		Loop
Strafing:
		TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
		TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
		ZHRT AA 3 Bright A_GiveInventory("GreenZombieStrafing",1)
		TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
		ZHRT BB 3 Bright A_GiveInventory("GreenZombieStrafing",1)
		TNT1 A 0 A_SpawnItem("FootStep",0,0,0,0)
		TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
		ZHRT CC 3 Bright A_GiveInventory("GreenZombieStrafing",1)	
		TNT1 A 0 A_Chase("","Missile",CHF_DONTMOVE)
		ZHRT DD 3 Bright A_GiveInventory("GreenZombieStrafing",1)
		Goto See
Missile:
        TNT1 A 0 A_SetTranslucent(1)
		TNT1 A 0 Bright A_Jump(180,"DtechRapidRifle")
		TNT1 A 0 Bright A_Jump(60,"DtechRailGun")
DTechRifleBurst:
    	ZHRT E 1 A_FaceTarget
		TNT1 A 0 A_PlaySoundEx("weapons/demontechfire","Weapon")
		TNT1 A 0 A_CustomMissile("ZDemonTechProjectile",Random(28,34),0,Random(6,-6),0)
		ZHRT E 1 A_GiveInventory("GreenZombieStrafing",1)	
		ZHRT E 1 Bright
		TNT1 A 0 A_PlaySoundEx("weapons/demontechfire","Weapon")
		TNT1 A 0 A_CustomMissile("ZDemonTechProjectile",Random(28,34),0,Random(6,-6),0)
		ZHRT E 1 A_GiveInventory("GreenZombieStrafing",1)	
		ZHRT F 1 Bright
        ZHRT E 1 A_FaceTarget
		TNT1 A 0 A_PlaySoundEx("weapons/demontechfire","Weapon")
		TNT1 A 0 A_CustomMissile("ZDemonTechProjectile",Random(28,34),0,Random(6,-6),0)
		ZHRT E 1 A_GiveInventory("GreenZombieStrafing",1)	
		ZHRT E 1 Bright
		TNT1 A 0 A_PlaySoundEx("weapons/demontechfire","Weapon")
		TNT1 A 0 A_CustomMissile("ZDemonTechProjectile",Random(28,34),0,Random(6,-6),0)
		ZHRT E 1 A_GiveInventory("GreenZombieStrafing",1)	
		ZHRT F 1 Bright
        ZHRT E 1 A_FaceTarget
		TNT1 A 0 A_PlaySoundEx("weapons/demontechfire","Weapon")
		TNT1 A 0 A_CustomMissile("ZDemonTechProjectile",Random(28,34),0,Random(6,-6),0)
		ZHRT E 1 A_GiveInventory("GreenZombieStrafing",1)	
		ZHRT E 1 Bright
		TNT1 A 0 A_PlaySoundEx("weapons/demontechfire","Weapon")
		TNT1 A 0 A_CustomMissile("ZDemonTechProjectile",Random(28,34),0,Random(6,-6),0)
		ZHRT E 1 A_GiveInventory("GreenZombieStrafing",1)	
		ZHRT F 1 Bright			
        Goto See		
DTechRapidRifle:
		ZHRT E 1 A_FaceTarget
		TNT1 A 0 A_PlaySoundEx("weapons/demontechfire","Weapon")
		TNT1 A 0 A_CustomMissile("ZDemonTechProjectile",Random(28,34),0,Random(6,-6),0)
		ZHRT E 1 A_GiveInventory("GreenZombieStrafing",1)	
		ZHRT E 1 Bright
		TNT1 A 0 A_PlaySoundEx("weapons/demontechfire","Weapon")
		TNT1 A 0 A_CustomMissile("ZDemonTechProjectile",Random(28,34),0,Random(6,-6),0)
		ZHRT E 1 A_GiveInventory("GreenZombieStrafing",1)	
		ZHRT F 1 Bright
		TNT1 A 0 A_CPosRefire
		TNT1 A 0 A_Jump(20, "See")
		Goto DtechRapidRifle
DTechRailgun:
		TNT1 A 0 A_ChangeFlag("NOPAIN",1)
		TNT1 A 0 A_PlaySound("weapons/rgcharge")
		ZHRT E 0 A_SpawnItemEx("InfectedHunterLineSpawner")
		ZHRT E 0 A_SpawnItemEx("InfectedHunterLineSpawner")
		ZHRT EEEEEE 8 A_FaceTarget 
		TNT1 A 0 A_PlaySoundEx("weapons/demontechfire","Weapon")
		TNT1 A 0 A_CustomMissile("DTRailCore",28,6)
		TNT1 A 0 A_CustomMissile("DarkAnnihilatorRail",28,6)
		ZHRT E 6 A_GiveInventory("GreenZombieStrafing",1)	
		TNT1 A 0 A_ChangeFlag("NOPAIN",0)
		ZHRT E 5 Bright
		Goto See
Pain:
        TNT1 A 0 A_SetTranslucent(1)
		TNT1 A 0 A_Jump(90,"Rush")
		ZHRT G 3 Bright A_GiveInventory("GreenZombieStrafing",1)
		ZHRT G 0 A_Pain
		ZHRT G 3 Bright A_GiveInventory("GreenZombieStrafing",1)
		Goto see 
Death:
        ZHRT H 5  
        ZHRT I 5 A_Scream
        ZHRT J 5 A_Fall
		ZHRT K 5 A_SpawnItem("BodyCrash",0,0,0,0)
        ZHRT L -1
        Stop
XDeath:
        ZHRT OP 2
		ZHRT QR 2 A_XScream
		ZHRT RS 2 A_SpawnItemEx("GreenGibbedGenerator",0,0,0,0,0,0,0,128,0)
		ZHRT TU 2
		ZHRT V 2 A_Noblocking
		ZHRT W -1
        Stop
Raise:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
        ZHRT KJIH 5
        Goto See
		}
}

ACTOR GreenChaingunnerA 
{
	Scale 1.1
	Radius 20
	Height 56
	Speed 0
	Alpha 0.7
	PROJECTILE
	RENDERSTYLE Translucent
	+NOTIMEFREEZE
	+CLIENTSIDEONLY
	States 
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	Fade:
		TNT1 A 1
		ZHRT A 2 A_FadeOut(0.10)
		Goto Fade+1
	Toaster:
		TNT1 A 0
		Stop
    }
}

ACTOR GreenChaingunnerB : GreenChaingunnerA 
{   
	States 
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	Fade:
		TNT1 A 1
		ZHRT B 2 A_FadeOut(0.10)
		Goto Fade+1
	Toaster:
		TNT1 A 0
		Stop
    }
}

ACTOR GreenChaingunnerC : GreenChaingunnerA 
{   
	States 
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	Fade:
		TNT1 A 1
		ZHRT C 2 A_FadeOut(0.10)
		Goto Fade+1
	Toaster:
		TNT1 A 0
		Stop
    }
}

ACTOR GreenChaingunnerD : GreenChaingunnerA 
{   
States 
{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	Fade:
		TNT1 A 1
		ZHRT D 2 A_FadeOut(0.10)
		Goto Fade+1
	Toaster:
		TNT1 A 0
		Stop
    }
}

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

Actor GreenZombieJumping : LegZombieStrafing
{
  +NOTIMEFREEZE
  States
  {
  Pickup:
    NULL A 1 
    NULL A 1 A_CheckFloor(1)
    Stop
	NULL A 1 A_Jump(242,2)
	NULL A 1 ThrustThingZ(0,25,0,1)
    Stop
	NULL A 1
    Stop
  }
}

ACTOR GreenZombieStrafeSens : Inventory{Inventory.MaxAmount 1}

Actor InfectedHunterLineSpawner : GreenPowerLine
{
    +NoTimeFreeze
	Scale 1.3
}