Actor MarineSlayer
{
Monster
Health 220
WoundHealth 50
Height 56
Radius 16
Mass 100
Speed 11
MeleeThreshold 80
MeleeRange 80
MaxStepHeight 45
Painchance "Mine", 256
Painchance "Explosion", 256
PainChance 61
+FLOORCLIP
+QUICKTORETALIATE
+DONTHURTSPECIES
+DONTHARMSPECIES
Species "EliteZombies"
Damagefactor "Acid", 3.2
Damagefactor "Explosion", 0.7
Damagefactor "Rocket", 0.8
Damagefactor "Mine", 0.1
//No Infighting
Damagefactor "HTZombie", 0.0
DamageFactor "MiniRocket", 0.0
DamageFactor "ZombieCannon", 0.0
Damagefactor "ZExplosiveBullets", 0.0
Damagefactor "ZGrenade", 0.0
DropItem "HealthFlask", 200, 4
DropItem "Stimkit", 180, 1
DropItem "PortableMedkit", 90
DropItem "ArmorBooster", 90
DropItem "ExtraArmor", 128
DropItem "MineAmmo", 130
DropItem "MineAmmo", 130
DropItem "HandGrenadeAmmo", 140, 4
DropItem "AmmoPack", 170, 3
DropItem "BulletMag", 192, 10
DropItem "Enforcer", 256, 1
DropItem "Knife", 256, 1
DropItem "HemFlare", 64, 1
SeeSound "PNZombie/See"
ActiveSound "PNZombie/Act"
PainSound "PNZombie/Pain"
DeathSound "PNZombie/Die"
Obituary "%o was pierced by a Marine Slayer."
HitObituary "%o got castrated by a Marine Slayer."
Tag "\cbMarine Slayer\c-"
States
	{
	Spawn:
		EXTR A 10 A_Look
		loop
	Idle:
		EXTR A 10 A_LookEx(0,0,0,0,360,"Chase")
		TNT1 A 0 HealThing(1)
		loop
	See:
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_Jump(256,"DodgeLeft","DodgeRight")
	Chase:
		TNT1 A 0 A_Jump(96,"Chase1")
		TNT1 AAA 0 A_FastChase
		EXTR AA 1 A_FastChase
		Goto Chase2
	Chase1:
		EXTR AA 1 A_Chase
	Chase2:		
		TNT1 A 0 A_JumpIfCloser(130,"Dodge")
		TNT1 A 0 A_JumpIfInTargetLOS("Dodge",45,JLOSF_DEADNOJUMP,800)
		TNT1 A 0 A_Jump(192,"Chase3")
		EXTR AA 1 A_FastChase
		Goto Chase4
	Chase3:
		EXTR AA 1 A_Chase
	Chase4:
		TNT1 A 0 A_JumpIfCloser(130,"Dodge")
		TNT1 A 0 A_JumpIfInTargetLOS("Dodge",45,JLOSF_DEADNOJUMP,800)
		TNT1 A 0 A_Jump(192,"Chase5")
		EXTR BB 1 A_FastChase
		Goto Chase6
	Chase5:
		EXTR BB 1 A_Chase
	Chase6:
		TNT1 A 0 A_JumpIfCloser(130,"Dodge")
		TNT1 A 0 A_JumpIfInTargetLOS("Dodge",45,JLOSF_DEADNOJUMP,800)
		TNT1 A 0 A_Jump(192,"Chase7")
		EXTR BB 1 A_FastChase
		Goto Chase8
	Chase7:
		EXTR BB 1 A_Chase
	Chase8:
		TNT1 A 0 A_SpawnItemEx("FootStep2",0,0,2,0,0,-20)
		TNT1 A 0 A_JumpIfCloser(150,"Dodge")
		TNT1 A 0 A_JumpIfInTargetLOS("Dodge",45,JLOSF_DEADNOJUMP,800)
		TNT1 A 0 A_Jump(192,"Chase9")
		EXTR CC 1 A_FastChase
		Goto Chase10
	Chase9:
		EXTR CC 1 A_Chase
	Chase10:
		TNT1 A 0 A_JumpIfCloser(150,"Dodge")
		TNT1 A 0 A_JumpIfInTargetLOS("Dodge",45,JLOSF_DEADNOJUMP,800)
		TNT1 A 0 A_Jump(192,"Chase11")
		EXTR CC 1 A_FastChase
		Goto Chase12
	Chase11:
		EXTR CC 1 A_Chase
	Chase12:
		TNT1 A 0 A_JumpIfCloser(130,"Dodge")
		TNT1 A 0 A_JumpIfInTargetLOS("Dodge",45,JLOSF_DEADNOJUMP,800)
		TNT1 A 0 A_Jump(192,"Chase13")
		EXTR DD 1 A_FastChase
		Goto Chase14
	Chase13:
		EXTR DD 1 A_Chase
	Chase14:
		TNT1 A 0 A_JumpIfCloser(130,"Dodge")
		TNT1 A 0 A_JumpIfInTargetLOS("Dodge",45,JLOSF_DEADNOJUMP,800)
		TNT1 A 0 A_Jump(192,"Chase15")
		EXTR DD 1 A_FastChase
		Goto Chase16
	Chase15:
		EXTR DD 1 A_Chase
	Chase16:
		TNT1 A 0 A_SpawnItemEx("FootStep2",0,0,2,0,0,-20)
		TNT1 A 0 A_JumpIfCloser(130,"Dodge")
		TNT1 A 0 A_JumpIfInTargetLOS("Dodge",45,JLOSF_DEADNOJUMP,800)
		TNT1 A 0 A_JumpIfHealthLower((ACS_NamedExecuteWithResult("Hem_SpawnHealth")*0.90),"Heal")
		Goto Chase
	Wound:
		"####" "#" 0
		"####" "#" 5 A_JumpIfInventory("Tic",5,"Heal1")
		TNT1 A 0 A_GiveInventory("Tic",1)
		Goto Heal3
	Heal:
		EXTR A 5
		TNT1 A 0 A_Jump(40,"Heal2")
		TNT1 A 0 A_Jump(15,"Heal3")
	Heal1:
		TNT1 A 0 HealThing(10)
		TNT1 A 0 A_PlaySound("pickups/flask",0,1.0,0)
		GoTo Chase
	Heal2:
		TNT1 A 0
		TNT1 A 0 HealThing(25)
		TNT1 A 0 A_PlaySound("pickups/pstimpack",0,1.0,0)
		GoTo Chase
	Heal3:
		TNT1 A 0
		TNT1 A 0 HealThing(45)
		TNT1 A 0 A_PlaySound("pmed/use",0,1.0,0)
		GoTo Chase
	SeeNoDodge:
		EXTR AABB 2 A_Chase("Melee","Grenade")
		TNT1 A 0 A_SpawnItemEx("FootStep2",0,0,2,0,0,-20)
		EXTR CCDD 2 A_Chase("Melee","Grenade")
		TNT1 A 0 A_SpawnItemEx("FootStep2",0,0,2,0,0,-20)
		EXTR AABB 2 A_Chase("Melee","Grenade")
		TNT1 A 0 A_SpawnItemEx("FootStep2",0,0,2,0,0,-20)
		EXTR CCDD 2 A_Chase("Melee","Grenade")
		TNT1 A 0 A_SpawnItemEx("FootStep2",0,0,2,0,0,-20)
		EXTR AABB 2 A_Chase("Melee","Grenade")
		TNT1 A 0 A_SpawnItemEx("FootStep2",0,0,2,0,0,-20)
		EXTR CCDD 2 A_Chase("Melee","Grenade")
		TNT1 A 0 A_SpawnItemEx("FootStep2",0,0,2,0,0,-20)
		Goto Chase
	Pain.Mine:
	Dodge:
		TNT1 A 0
		EXTR A 1 A_FaceTarget
		TNT1 A 0 ThrustThingZ(0,20,0,0)
		TNT1 A 0 A_Jump(256,"DodgeRight","DodgeLeft")
	DodgeLeft:
		TNT1 A 0 ThrustThing(angle*256/360+192,15,0,0)
		TNT1 A 0 A_Jump(136,2)
		TNT1 A 0 A_JumpIfHealthLower((ACS_NamedExecuteWithResult("Hem_SpawnHealth")*0.90),"Heal")
		TNT1 A 0
		Goto SeeNoDodge
	DodgeRight:
		TNT1 A 0 ThrustThing(angle*256/360+64,15,0,0)
		TNT1 A 0 A_Jump(136,2)
		TNT1 A 0 A_JumpIfHealthLower((ACS_NamedExecuteWithResult("Hem_SpawnHealth")*0.90),"Heal")
		TNT1 A 0
		Goto SeeNoDodge
	Melee:
		TNT1 A 0
		EXTR C 4 A_FaceTarget
		EXTR H 8 A_CustomMeleeAttack(random(20,25),"Exterminator/Bladehit","Exterminator/Swing","Melee")
		TNT1 A 0 A_Jump(32,2)
		TNT1 A 0 A_TakeFromTarget("PortableMedkit",1)
		TNT1 A 0 A_Jump(32,2)
		TNT1 A 0 A_TakeFromTarget("HandGrenadeAmmo",1)
		TNT1 A 0 A_Jump(32,2)
		TNT1 A 0 A_TakeFromTarget("MineAmmo",1)
		TNT1 A 0 A_Jump(32,2)
		TNT1 A 0 A_TakeFromTarget("Stimkit",1)
		TNT1 A 0 A_TakeFromTarget("HealthFlask",1)
		TNT1 A 0 A_JumpIfInTargetLOS("CheckRangeToPullout",45,JLOSF_DEADNOJUMP,800)
		Goto NoPullout
	CheckRangeToPullout:
		TNT1 A 0 A_JumpIfCloser(51,"Pullout")
		Goto NoPullout
	Pullout:
		TNT1 A 0 A_GiveToTarget("HemHideweapon2",1)
		Goto Dodge
	NoPullout:
		TNT1 A 0 A_Jump(80,"Dodge")
		EXTR A 8
		Goto Chase
	FullAuto:
		TNT1 A 0
		TNT1 A 0 A_PlaySound("Exterminator/Fire",CHAN_WEAPON)
		EXTR F 2 Bright A_CustomBulletAttack(12,12,1,random(8,12),"ZBulletPuff",0,CBAF_NORANDOM)
		EXTR E 2 A_FaceTarget
		TNT1 A 0 A_JumpIfInTargetLOS("Dodge",45,JLOSF_DEADNOJUMP,800)
		TNT1 A 0 A_MonsterRefire(0,"Chase")
		Goto FullAuto
	Pain.Explosion:
		TNT1 A 0
		TNT1 A 0 A_JumpIfInTargetLOS("Grenade",360,JLOSF_DEADNOJUMP,800)
		TNT1 A 0 A_JumpIfHealthLower((ACS_NamedExecuteWithResult("Hem_SpawnHealth")*0.50),"Heal")
	Grenade:
		TNT1 A 0
		TNT1 A 0 A_JumpIfCloser(200,"FullAuto")
		TNT1 A 0 A_JumpIfCloser(550,"NoPitch")
	Pitched:
		TNT1 A 0 A_PlaySound("weapons/hgrenadepin",0,1.0,0)
		EXTR CH 4 A_FaceTarget
		TNT1 A 0 A_PlaySound("weapons/hgrenadethrow",0,1.0,0)
		EXTR H 1 A_CustomMissile("ZGrenade",32,0,0,CMF_AIMDIRECTION|CMF_TRACKOWNER,15)
		GoTo Dodge
	NoPitch:
		TNT1 A 0
		TNT1 A 0 A_JumpIfCloser(200,"FullAuto")
		TNT1 A 0 A_PlaySound("weapons/hgrenadepin",0,1.0,0)
		EXTR CH 4 A_FaceTarget
		TNT1 A 0 A_PlaySound("weapons/hgrenadethrow",0,1.0,0)
		EXTR H 1 A_CustomMissile("ZGrenade",32,0,0,CMF_TRACKOWNER)
		GoTo Dodge
	Missile:
		EXTR E 12 A_FaceTarget
	Missile2:
		TNT1 A 0 A_Jump(45,"Grenade")
		TNT1 A 0 A_JumpIfCloser(256,"FullAuto")
		TNT1 A 0 A_PlaySound("Exterminator/Fire",CHAN_WEAPON)
		EXTR F 2 Bright A_CustomBulletAttack(8,8,1,random(5,8),"ZBulletPuff",0,CBAF_NORANDOM)
		EXTR E 2 A_FaceTarget
		TNT1 A 0 A_JumpIfInTargetLOS("Dodge",45,JLOSF_DEADNOJUMP,800)
		TNT1 A 0 A_Jump(236,2)
		TNT1 A 0 A_JumpIfHealthLower((ACS_NamedExecuteWithResult("Hem_SpawnHealth")*0.90),"Heal")
		TNT1 A 0
		TNT1 A 0 A_PlaySound("Exterminator/Fire",CHAN_WEAPON)
		EXTR F 2 Bright A_CustomBulletAttack(8,8,1,random(5,8),"ZBulletPuff",0,CBAF_NORANDOM)
		EXTR E 2 A_FaceTarget
		TNT1 A 0 A_JumpIfInTargetLOS("Dodge",45,JLOSF_DEADNOJUMP,800)
		TNT1 A 0 A_Jump(236,2)
		TNT1 A 0 A_JumpIfHealthLower((ACS_NamedExecuteWithResult("Hem_SpawnHealth")*0.90),"Heal")
		TNT1 A 0
		TNT1 A 0 A_PlaySound("Exterminator/Fire",CHAN_WEAPON)
		EXTR F 2 Bright A_CustomBulletAttack(8,8,1,random(5,8),"ZBulletPuff",0,CBAF_NORANDOM)
		EXTR E 2 A_FaceTarget
		TNT1 A 0 A_JumpIfInTargetLOS("Dodge",45,JLOSF_DEADNOJUMP,800)
		TNT1 A 0 A_Jump(236,2)
		TNT1 A 0 A_JumpIfHealthLower((ACS_NamedExecuteWithResult("Hem_SpawnHealth")*0.90),"Heal")
		TNT1 A 0
		TNT1 A 0 A_SentinelRefire
		Goto Missile2
	Pain:
		TNT1 A 0
		EXTR G 4 A_Pain
		GoTo See
	Death:
		TNT1 A 0
		TNT1 A 0 A_TakeInventory("Tic",999999)
		TNT1 A 0 A_Jump(40,"Martyrdom")
		EXTR I 5 A_Scream
		EXTR A 0 A_Jump(128,"Death2")
		EXTR J 5 A_Fall
		EXTR KL 4
		TNT1 A 0 A_SpawnItem("BodyCrash",0,0,0,0)
		EXTR M 63000 CanRaise
		Stop
	Martyrdom:
		EXTR CH 4 A_FaceTarget
		TNT1 A 0 A_PlaySound("weapons/hgrenadethrow",0,1.0,0)
		EXTR H 1 A_CustomMissile("ZGrenade",32,0,0,CMF_TRACKOWNER)
		EXTR I 5 A_Scream
		EXTR A 0 A_Jump(128,"Death2")
		EXTR J 5 A_Fall
		EXTR KL 4
		TNT1 A 0 A_SpawnItem("BodyCrash",0,0,0,0)
		EXTR M 63000 CanRaise
		Stop
	Death2:
		TNT1 A 0
		TNT1 A 0 A_Giveinventory("death2",1)
		EXTR N 5 A_Fall
		EXTR OP 4
		EXTR Q 63000 CanRaise
		Stop
	XDeath:
		TNT1 A 0
		TNT1 A 0 A_TakeInventory("Tic",999999)
		TNT1 A 0 A_GiveInventory("Xdeathcheck",1)
		TNT1 A 0 A_SpawnItemEx("GibbedGenerator",0,0,0,0,0,0,0,128,0)
		EXTR R 4 A_XScream
		EXTR S 4 A_Fall
		POSS OPQRST 4
		POSS U 63000 CanRaise
		Stop
	Raise:
		TNT1 A 0
	    TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		TNT1 A 0 A_JumpIfInventory("Death2",1,"Raise2")
		TNT1 A 0 A_JumPifInventory("XDeathCheck",1,"XRaise")
		POSS MLKJI 5
		GoTo See
	Raise2:
		TNT1 A 0 a_takeinventory("death2",1)
		POSS QPONI 5
		Goto see
	XRaise:
		TNT1 A 0 a_takeinventory("xdeathcheck",1)
		POSS UTSRQPO 4
		Goto see
	}
}

Actor ZGrenade : ThrownGrenade
{
Species ""
Species "EliteZombies"
Damagetype ""
Damagetype "ZGrenade"
Obituary "%o was grenaded down by a Marine Slayer."
}

Actor ZBulletPuff : ModdedBulletPuff
{
+MTHRUSPECIES
Damagetype "ZExplosiveBullets"
}