Actor RocketDoge
{
MONSTER
Health 210
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
+DONTHURTSPECIES
+DONTHARMCLASS
Species "SS"
Damagetype "SS"
Damagefactor "SS", 0.0
Damagefactor "Rocket", 0.0
DamageFactor 0.7
DropItem "LifeEssence", 196, 8
DropItem "ArmorBonusMax", 196, 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
{
+DontHurtSpecies
+DontHarmSpecies
+DontHarmClass
Species "SS"
Damagetype "SS"
Damagefactor "SS", 0.0
DropItem ""
DropItem "LifeEssence", 196
DropItem "ArmorBonusMax", 196
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 : NewRocket
{
Damage (4*random(4,8))
+ThruSpecies
+DontHurtSpecies
+DontHarmSpecies
Species ""
Species "SS"
Damagetype ""
Damagetype "SS"
}

Actor DogeMiniRocket : ZMiniRocket
{
+ThruSpecies
+DontHurtSpecies
+DontHarmSpecies
Species ""
Species "SS"
Damagetype ""
Damagetype "SS"
}