Actor RocketDoge
{
MONSTER
Health 80
Height 36
Radius 14
Speed 11
Mass 100
Scale 1.1
Painchance "Mine", 256
Painchance "Crush", 256
Painchance 128
+FLOORCLIP
+FASTER
+MissileMore
+FASTMELEE
+LONGMELEERANGE
-CANUSEWALLS
+DONTHARMSPECIES
Species "SS"
Damagetype "SS"
Damagefactor "SS", 0.0
Damagefactor "Rocket", 0.0
DamageFactor 0.7
DropItem "LifeEssence", 200, 8
DropItem "ArmorBonusMax", 200, 8
Dropitem "Missile", 128, 1
Dropitem "Missile", 128, 1
Dropitem "Missile", 128, 1
SeeSound "dog/sight"
DeathSound "dog/death"
Obituary "%o was blown to the moon by a Rocket Dog."
Tag "Nazi Guard Dog with rocket launcher"
var int user_currenthp;
States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag(NOPAIN,0)
		TNT1 A 0 A_SetUserVar("user_currenthp",ACS_NamedExecuteWithResult("Hem_GetCurrentHealth"))
	SpawnLoop:
		PERR E 10 A_Look
		TNT1 A 0 A_JumpIf(user_currenthp > ACS_NamedExecuteWithResult("Hem_GetCurrentHealth"),"See")
		loop
	See:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag(NOPAIN,0)
		TNT1 A 0 A_SetUserVar("user_currenthp",ACS_NamedExecuteWithResult("Hem_GetCurrentHealth"))
	SeeLoop:
		PERR AAAABBBBCCCCDDDD 1 A_Chase
		loop
	Missile:
	Melee:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag(NOPAIN,0)
		TNT1 A 0 A_JumpIfHealthLower(100,"Avoid")
		TNT1 A 0 A_JumpIfCloser(150,"Avoid2")
		TNT1 A 0 A_JumpIfCloser(500,"Normal")
		TNT1 A 0 A_JumpIfCloser(700,"rawcket")
		TNT1 A 0 A_JumpIfCloser(900,"TripleR")
		PERR E 4 A_FaceTarget
		TNT1 A 0 A_Recoil(-20)
	Normal:
		TNT1 A 0 A_CheckFlag(FRIENDLY,5)
		TNT1 A 0 A_TakeInventory("ProjHitCheck",1)
		TNT1 A 0 A_TakeInventory("ProjMissCheck",1)
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_CustomMissile("ss-hit-testing",29,0,0,CMF_TRACKOWNER|CMF_CHECKTARGETDEAD)
		PERR EEEEEEEE 1 A_FaceTarget
		TNT1 A 0 A_CheckFlag(FRIENDLY,4)
		TNT1 A 0 A_JumpIfInventory("ProjHitCheck",1,3)
		TNT1 A 0 A_JumpIfInventory("ProjMissCheck",1,"MissileMiss")
		TNT1 A 0 A_Jump(256,"MissileMiss")
		PERR EE 1 bright A_FaceTarget
		TNT1 A 0 A_CustomMissile("DogeMiniRocket",29,0)
		TNT1 A 0 A_Recoil(3)
		PERR EE 1 bright A_FaceTarget
		PERR E 5
		Goto See
	Avoid:
		PERR EEEE 1 A_FaceTarget
		PERR E 8 A_Recoil(15)
		Goto TripleR
	Avoid2:
		PERR EEEE 1 A_FaceTarget
		PERR E 8 A_Recoil(20)
		Goto Normal
	Rawcket:
		TNT1 A 0 A_CheckFlag(FRIENDLY,5)
		TNT1 A 0 A_TakeInventory("ProjHitCheck",1)
		TNT1 A 0 A_TakeInventory("ProjMissCheck",1)
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_CustomMissile("ss-hit-testing",29,0,0,CMF_TRACKOWNER|CMF_CHECKTARGETDEAD)
		PERR EEEEEEEE 1 A_FaceTarget
		TNT1 A 0 A_CheckFlag(FRIENDLY,4)
		TNT1 A 0 A_JumpIfInventory("ProjHitCheck",1,3)
		TNT1 A 0 A_JumpIfInventory("ProjMissCheck",1,"MissileMiss")
		TNT1 A 0 A_Jump(256,"MissileMiss")
		PERR EE 1 bright A_FaceTarget
		TNT1 A 0 A_CustomMissile("PerroMisil",29,0)
		TNT1 A 0 A_Recoil(5)
		PERR EE 1 bright A_FaceTarget
		PERR E 5
		Goto See
	TripleR:
		TNT1 A 0 A_CheckFlag(FRIENDLY,5)
		TNT1 A 0 A_TakeInventory("ProjHitCheck",1)
		TNT1 A 0 A_TakeInventory("ProjMissCheck",1)
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_CustomMissile("ss-hit-testing",32,0,0,CMF_TRACKOWNER|CMF_CHECKTARGETDEAD)
		PERR EEEEEEEEEEEE 1 A_FaceTarget
		TNT1 A 0 A_CheckFlag(FRIENDLY,4)
		TNT1 A 0 A_JumpIfInventory("ProjHitCheck",1,3)
		TNT1 A 0 A_JumpIfInventory("ProjMissCheck",1,"MissileMiss")
		TNT1 A 0 A_Jump(256,"MissileMiss")
		PERR EE 1 Bright A_FaceTarget
		TNT1 A 0 bright A_CustomMissile("PerroMisil",29,0,20)
		PERR E 1 A_Recoil(5)
		PERR E 2 bright A_CustomMissile("PerroMisil",29,0)
		PERR E 3 A_Recoil(5)
		PERR E 4 bright A_CustomMissile("PerroMisil",29,0,-20)
		PERR E 5 A_Recoil(5)
		PERR E 9
		Goto See
	MissileMiss:
		TNT1 A 0
		TNT1 A 0 A_Jump(128,2)
		TNT1 A 0 A_Recoil(3)
		PERR EEEE 4 A_FaceTarget
		Goto See
	Pain:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag(NOPAIN,1)
		PERR A 2
		PERR A 2 A_Pain
		TNT1 A 0 A_JumpIf((user_currenthp - ACS_NamedExecuteWithResult("Hem_GetCurrentHealth")) > 100,"TripleR")
		TNT1 A 0 A_GiveInventory("MonsterAvoid",1)
		Goto See
	Pain.Crush:
		TNT1 A 0
		TNT1 A 0 A_ChangeFlag(NOPAIN,1)
		TNT1 A 0 A_GiveInventory("MonsterAvoid",1)
		PERR A 2
		PERR A 2 A_Pain
		Goto See
	Death:
		PERR F 8
		PERR G 8 A_Scream
		PERR H 6 A_Fall
		PERR I 63000 CanRaise
		Stop
	Raise:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		PERR IHGF 8
		Goto See
	}
}

Actor NaziDoge : NaziDog replaces NaziDog
{
+DONTHARMSPECIES
Species "SS"
Damagetype "SS"
Damagefactor "SS", 0.0
DropItem ""
DropItem "LifeEssence", 180
DropItem "ArmorBonusMax", 180
Tag "Nazi Guard Dog"
States
	{
	Melee:
		TNT1 A 0
		TNT1 A 0 A_PlaySound("dog/bite")
		NDO2 EF 4 A_FaceTarget
		NDO2 G 5 A_MeleeAttack
		NDO2 FE 5 A_FaceTarget
		NDOG A 5 A_FaceTarget
		Goto See
	Death:
		TNT1 A 0
		NDOG H 5 A_Scream
		NDOG I 5 A_Fall
		NDOG J 5 A_SpawnItem("BodyCrash",0,0,0,0)
		NDOG K 63000 CanRaise
		Stop
	XDeath:
		TNT1 A 0
		NDOG L 3 A_SpawnItemEx("GibbedGenerator",0,0,0,0,0,0,0,128,0)
		NDOG M 3 A_XScream
		NDOG N 3 A_Fall
		NDOG O 3
		NDOG P 63000 CanRaise
		Stop
	}
}

Actor PerroMisil : Rocket
{
Projectile
Speed 26
Damage (4*random(4,8))
-ROCKETTRAIL
+THRUSPECIES
+MTHRUSPECIES
+DONTHARMSPECIES
Damagetype "SS"
SeeSound "rocket/fire"
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_CheckFlag(FRIENDLY,"AltDamage",AAPTR_TARGET)
		TNT1 A 1 Bright A_Jump(256,"Normal")
		Loop
	AltDamage:
		TNT1 A 0 Bright A_SetDamageType("Explosion")
	Normal:
		TNT1 A 0 Bright A_CustomMissile("MissileTrail",Random(4,6),Random(-2,2)) 
		TNT1 A 0 Bright A_CustomMissile("ProjectileTrailParticleOrange",Random(4,6),Random(-2,2)) 
		MIS2 A 1 Bright
		Loop
	Death:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("OrangeParticleSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0) 
		TNT1 AAA 0 A_CustomMissile("Kaboom3",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
		TNT1 AAA 0 A_CustomMissile("SmokeFX2",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
		TNT1 AAAA 0 A_SpawnItemEx("Debris",0,0,0,random(-4,4),random(-4,4),random(4,8),0,SXF_CLIENTSIDE,0)
		TNT1 A 0 A_Explode
		TNT1 A 1 A_SpawnItem("RocketEx")
		Stop
	}
}

Actor DogeMiniRocket : ZMiniRocket
{
Damagetype ""
Damagetype "SS"
}