///////////////////////////////////////
//         HOT HEAD (DOOMIMP)        //
/////////////////////////////////////// 

Actor HotHeadMonster 30604
{
//$Category MM8BDM-Monsters (Doom)
//$Title Hot Head (DoomImp)
//$Sprite D005B8B2
Tag "Hot Head"
Translation "41:41=41:41", "192:192=216:216", "198:198=41:41", "216:216=216:216"
MONSTER
Species "HotHeadMonster"
BloodType "MonsterRipperProtect_Helper"
//+NOBLOOD
+FLOORCLIP
-NOINFIGHTING
+DONTHARMSPECIES
Health 60
Radius 20
Height 56
Speed 1 // 8
PainChance 200
PainChance "WindStorm", 200
PainChance "GravityHold", 200
PainChance "ConcreteShot", 200
PainChance "TornadoBlow", 200
PainChance "BlackHoleBomb", 200
PainChance "TimeStopper", 256
DamageFactor "Dummy", 0.0
SeeSound "item/rushdetect"
PainSound "monster/mm2pain"
DeathSound "monster/death"
ActiveSound "misc/repairing"
Obituary "$OB_IMP"
HitObituary "$OB_IMPHIT"
Mass 9999
Scale 2.5
States
{
Spawn:
HTHD A 0 NoDelay A_Stop
HTHD A 0 A_TakeInventory("CutterFlag",1)
HTHD A 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
HTHD A 0 A_SpawnItemEx("MonsterHitbox20_56")
// Alphabet soup in order to match the idle animation of HotHead with the A_Look loop delay of DoomImp (10 tics)
HTHD A 1 A_Look
HTHD AAAAAAAAM 1
HTHD M 1 A_Look
HTHD MMMMMMMAA 1
HTHD A 1 A_Look
HTHD AAAAAAMMM 1
HTHD M 1 A_Look
HTHD MMMMMAAAA 1
HTHD A 1 A_Look
HTHD AAAAMMMMM 1
HTHD M 1 A_Look
HTHD MMMAAAAAA 1
HTHD A 1 A_Look
HTHD AAMMMMMMM 1
HTHD M 1 A_Look
HTHD MAAAAAAAA 1
HTHD A 1 A_Look
HTHD MMMMMMMMM 1
Goto Spawn+4

FirstSee:
HTHD A 0 A_TakeInventory("CutterFlag",1)
HTHD A 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
HTHD A 0 Thing_SetTranslation(0,30501) //ALLRED
HTHD A 2 Bright
HTHD A 0 Thing_SetTranslation(0,30604) //HOTHEADMONSTER
HTHD A 0 A_GiveInventory("CutterFlag",1)
Goto See

See:
HTHD A 0 A_JumpIfInventory("CutterFlag",1,1)
Goto FirstSee
HTHD B 1 A_Chase
HTHD BB 1 A_ChangeVelocity(2,0,momz,3)
HTHD B 1 A_Chase
HTHD BB 1 A_ChangeVelocity(2,0,momz,3)
HTHD C 1 A_Chase
HTHD CC 1 A_ChangeVelocity(2,0,momz,3)
HTHD C 1 A_Chase
HTHD CC 1 A_ChangeVelocity(2,0,momz,3)
HTHD D 1 A_Chase
HTHD DD 1 A_ChangeVelocity(2,0,momz,3)
HTHD D 1 A_Chase
HTHD DD 1 A_ChangeVelocity(2,0,momz,3)
HTHD E 1 A_Chase
HTHD EE 1 A_ChangeVelocity(2,0,momz,3)
HTHD E 1 A_Chase
HTHD EE 1 A_ChangeVelocity(2,0,momz,3)
Loop

Missile:
HTHD F 0 A_Stop
HTHD F 0 A_FaceTarget
HTHD AAAMMMAAAMMMFFFF 1
HTHD F 0 A_PlaySoundEx("misc/sunstarshot","Weapon")
HTHD F 0 A_CustomComboAttack("HotHeadMonsterShot",32,22,"weapon/slashclawhit")
HTHD F 0 Thing_SetTranslation(0,30504) //MISSILEFLASH
HTHD G 2 Bright
HTHD G 0 Thing_SetTranslation(0,30604) //HOTHEADMONSTER
HTHD G 4
Goto See

Pain:
HTHD H 0 A_Stop
Pain.WindStorm:
Pain.GravityHold:
Pain.ConcreteShot:
Pain.TornadoBlow:
Pain.BlackHoleBomb:
HTHD H 0 Thing_SetTranslation(0,30604) //HOTHEADMONSTER
HTHD H 4 A_Pain
Goto See

Pain.TimeStopper:
HTHD H 0 A_Stop
HTHD H 0 Thing_SetTranslation(0,30604) //HOTHEADMONSTER
HTHD H 0 A_ChangeFlag("NOPAIN",true)
HTHD "##############################################################################################################################################################################################################################################################################################################################################################" 1 A_SpawnItemEx("TimeStopGFX",random(8,56),0,random(0,80),0,0,0,random(0,359),0,80)
HTHD H 0 A_ChangeFlag("NOPAIN",false)
Goto See

Death.WindStorm:
Death.GravityHold:
Death.TornadoBlow:
BlowDeath:
HTHD H 0 A_Stop
HTHD H 0 Thing_SetTranslation(0,30604) //HOTHEADMONSTER
HTHD H 0 A_ChangeFlag("SHOOTABLE",false)
HTHD H 0 A_ChangeFlag("NODAMAGE",false)
HTHD H 0 A_ChangeFlag("SOLID",false)
HTHD H 1 ThrustThingZ(0,10,0,1)
HTHD H 0 A_JumpIf(ceilingz-z<64,"Death")
HTHD H 0 A_GiveInventory("BlowDeathTimer",1)
HTHD H 0 A_JumpIfInventory("BlowDeathTimer",35,"Death")
Goto BlowDeath+5

Death:
XDeath:
HTHD H 0 A_Stop
HTHD H 0 A_FaceTarget
HTHD H 0 Thing_SetTranslation(0,30604) //HOTHEADMONSTER
HTHD H 2 A_NoBlocking
HTHD H 0 A_Scream
HTHD H 0 A_SpawnItemEx("ExplosionEffect1",0,0,32)
HTHD H 0 A_SpawnItemEx("MonsterFakeDeathFX",0,0,32,0,0,0,0,1)
HTHD H 0 A_SpawnItemEx("HotHeadMonster_DeathMarker",0,0,32,0,0,8,0,1)
HTHD H 0 A_JumpIf(CallACS("Monster_CanDropWeapon"),4)
HTHD H 0 A_Jump(16,2)
HTHD H 0 A_JumpIf(True,2)
HTHD H 0 ACS_NamedExecuteWithResult("Monster_WeaponDrop",5) //Assault Beam
TNT1 A 26
TNT1 A -1
Stop

Raise:
TNT1 A 0 A_SpawnItemEx("MonsterReviveHelper")
TNT1 A 20
TNT1 A 0 A_GiveInventory("DrillFlag",1)
HTHD MA 9
HTHD A 2
TNT1 A 0 A_TakeInventory("DrillFlag",1)
Goto See
}
}

Actor HotHeadMonster_DeathMarker : Monster_DeathMarker
{
States
{
Spawn:
TNT1 A 0 NoDelay A_Jump(128,2)
TNT1 A 0 A_SetScale(-ScaleX,ScaleY)
SpawnLoop:
TNT1 A 0 A_Jump(128,4)
TNT1 A 0 A_Jump(64,4)
TNT1 A 0 A_Jump(32,4)
HTHD IIIIIJJJJJKKKKKLLLLL 1 A_CheckFloor("SpawnFloor")
loop

SpawnFloor:
TNT1 A 0 A_Jump(128,2)
HTHD I 1 A_JumpIfInTargetInventory("DrillFlag",1,"Death")
wait
HTHD K 1 A_JumpIfInTargetInventory("DrillFlag",1,"Death")
wait
}
}

Actor HotHeadMonsterShot
{
Translation "192:192=216:216", "198:198=41:41"
+BRIGHT
PROJECTILE
Radius 6
Height 8
Speed 10
FastSpeed 20
Damage (15)
DamageType "Buster"
SeeSound "weapon/atomicfire"
DeathSound "misc/sunstargroundflame"
Scale 2.5
States
{
Spawn:
HTHD NO 4 NoDelay
loop

Death:
MMFX CDE 3
stop
}
}

Actor HotHeadMonster_Replaced : HotHeadMonster replaces DoomImp {}

////////////////////////////////////////
//         COLD HEAD (DARKIMP)        //
////////////////////////////////////////

Actor ColdHeadMonster : HotHeadMonster 30625
{
//$Category MM8BDM-Monsters (Skulltag)
//$Title Cold Head (DarkImp)
//$Sprite D006B8B2
Tag "Cold Head"
Translation "41:41=68:68", "192:192=4:4", "198:198=68:68", "216:216=4:4"
Health 120
Obituary "$OB_DARKIMP"
HitObituary "$OB_DARKIMP_MELEE"
States
{
FirstSee:
HTHD A 0 A_TakeInventory("CutterFlag",1)
HTHD A 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
HTHD A 0 Thing_SetTranslation(0,30501) //ALLRED
HTHD A 2 Bright
HTHD A 0 Thing_SetTranslation(0,30625) //COLDHEADMONSTER
HTHD A 0 A_GiveInventory("CutterFlag",1)
Goto See

See:
HTHD A 0 A_JumpIfInventory("CutterFlag",1,1)
Goto FirstSee
HTHD B 1 A_Chase
HTHD BB 1 A_ChangeVelocity(2,0,momz,3)
HTHD B 1 A_Chase
HTHD BB 1 A_ChangeVelocity(2,0,momz,3)
HTHD C 1 A_Chase
HTHD CC 1 A_ChangeVelocity(2,0,momz,3)
HTHD C 1 A_Chase
HTHD CC 1 A_ChangeVelocity(2,0,momz,3)
HTHD D 1 A_Chase
HTHD DD 1 A_ChangeVelocity(2,0,momz,3)
HTHD D 1 A_Chase
HTHD DD 1 A_ChangeVelocity(2,0,momz,3)
HTHD E 1 A_Chase
HTHD EE 1 A_ChangeVelocity(2,0,momz,3)
HTHD E 1 A_Chase
HTHD EE 1 A_ChangeVelocity(2,0,momz,3)
Loop

Missile:
HTHD F 0 A_Stop
HTHD F 0 A_FaceTarget
HTHD AAAMMMAAAMMMFFFF 1
HTHD F 0 A_PlaySoundEx("misc/sunstarshot","Weapon")
HTHD F 0 A_CustomComboAttack("ColdHeadMonsterShot",32,28,"weapon/slashclawhit")
HTHD F 0 Thing_SetTranslation(0,30504) //MISSILEFLASH
HTHD G 2 Bright
HTHD G 0 Thing_SetTranslation(0,30625) //COLDHEADMONSTER
HTHD G 4
Goto See

Pain:
HTHD H 0 A_Stop
Pain.WindStorm:
Pain.GravityHold:
Pain.ConcreteShot:
Pain.TornadoBlow:
Pain.BlackHoleBomb:
HTHD H 0 Thing_SetTranslation(0,30625) //COLDHEADMONSTER
HTHD H 4 A_Pain
Goto See

Pain.TimeStopper:
HTHD H 0 A_Stop
HTHD H 0 Thing_SetTranslation(0,30625) //COLDHEADMONSTER
HTHD H 0 A_ChangeFlag("NOPAIN",true)
HTHD "##############################################################################################################################################################################################################################################################################################################################################################" 1 A_SpawnItemEx("TimeStopGFX",random(8,56),0,random(0,80),0,0,0,random(0,359),0,80)
HTHD H 0 A_ChangeFlag("NOPAIN",false)
Goto See

Death.WindStorm:
Death.GravityHold:
Death.TornadoBlow:
BlowDeath:
HTHD H 0 A_Stop
HTHD H 0 Thing_SetTranslation(0,30625) //COLDHEADMONSTER
HTHD H 0 A_ChangeFlag("SHOOTABLE",false)
HTHD H 0 A_ChangeFlag("NODAMAGE",false)
HTHD H 0 A_ChangeFlag("SOLID",false)
HTHD H 1 ThrustThingZ(0,10,0,1)
HTHD H 0 A_JumpIf(ceilingz-z<64,"Death")
HTHD H 0 A_GiveInventory("BlowDeathTimer",1)
HTHD H 0 A_JumpIfInventory("BlowDeathTimer",35,"Death")
Goto BlowDeath+5

Death:
XDeath:
HTHD H 0 A_Stop
HTHD H 0 A_FaceTarget
HTHD H 0 Thing_SetTranslation(0,30625) //COLDHEADMONSTER
HTHD H 2 A_NoBlocking
HTHD H 0 A_Scream
HTHD H 0 A_SpawnItemEx("ExplosionEffect1",0,0,32)
HTHD H 0 A_SpawnItemEx("MonsterFakeDeathFX",0,0,32,0,0,0,0,1)
HTHD H 0 A_SpawnItemEx("ColdHeadMonster_DeathMarker",0,0,32,0,0,8,0,1)
HTHD H 0 A_JumpIf(CallACS("Monster_CanDropWeapon"),4)
HTHD H 0 A_Jump(28,2)
HTHD H 0 A_JumpIf(True,2)
HTHD H 0 ACS_NamedExecuteWithResult("Monster_WeaponDrop",5) //Assault Beam
TNT1 A 26
TNT1 A -1
Stop
}
}

Actor ColdHeadMonster_DeathMarker : HotHeadMonster_DeathMarker {}

Actor ColdHeadMonsterShot : HotHeadMonsterShot
{
Translation "192:192=4:4", "198:198=68:68"
Speed 20
SeeSound "weapon/iceslasher"
DeathSound "misc/sunstargroundflame"
States
{
Spawn:
HTHD NO 4 NoDelay
loop

Death:
MMFX CDE 3
stop
}
}

////////////////////////////////////////
//     NIGHTMARE HOT HEAD (CUSTOM)    //
////////////////////////////////////////

Actor NMHotHeadMonster : HotHeadMonster 30789
{
//$Category MM8BDM-Monsters (Custom)
//$Title Nightmare Hot Head
//$Sprite D006B8B2
Tag "Nightmare Hot Head"
Translation "192:192=74:74", "198:198=103:103", "0:0=4:4", "4:4=0:0"
Health 120
Obituary "$OB_DARKIMP"
HitObituary "$OB_DARKIMP_MELEE"
Renderstyle Subtract
States
{
FirstSee:
HTHD A 0 A_TakeInventory("CutterFlag",1)
HTHD A 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
HTHD A 0 Thing_SetTranslation(0,30501) //ALLRED
HTHD A 2 Bright
HTHD A 0 Thing_SetTranslation(0,30789) //NIGHTMAREHOTHEADMONSTER
HTHD A 0 A_GiveInventory("CutterFlag",1)
Goto See

See:
HTHD A 0 A_JumpIfInventory("CutterFlag",1,1)
Goto FirstSee
HTHD B 1 A_Chase
HTHD BB 1 A_ChangeVelocity(2,0,momz,3)
HTHD B 1 A_Chase
HTHD BB 1 A_ChangeVelocity(2,0,momz,3)
HTHD C 1 A_Chase
HTHD CC 1 A_ChangeVelocity(2,0,momz,3)
HTHD C 1 A_Chase
HTHD CC 1 A_ChangeVelocity(2,0,momz,3)
HTHD D 1 A_Chase
HTHD DD 1 A_ChangeVelocity(2,0,momz,3)
HTHD D 1 A_Chase
HTHD DD 1 A_ChangeVelocity(2,0,momz,3)
HTHD E 1 A_Chase
HTHD EE 1 A_ChangeVelocity(2,0,momz,3)
HTHD E 1 A_Chase
HTHD EE 1 A_ChangeVelocity(2,0,momz,3)
Loop

Missile:
HTHD F 0 A_Stop
HTHD F 0 A_FaceTarget
HTHD AAAMMMAAAMMMFFFF 1
HTHD F 0 A_PlaySoundEx("misc/sunstarshot","Weapon")
HTHD F 0 A_CustomComboAttack("ColdHeadMonsterShot",32,28,"weapon/slashclawhit")
HTHD F 0 Thing_SetTranslation(0,30504) //MISSILEFLASH
HTHD G 2 Bright
HTHD G 0 Thing_SetTranslation(0,30789) //NIGHTMAREHOTHEADMONSTER
HTHD G 4
Goto See

Pain:
HTHD H 0 A_Stop
Pain.WindStorm:
Pain.GravityHold:
Pain.ConcreteShot:
Pain.TornadoBlow:
Pain.BlackHoleBomb:
HTHD H 0 Thing_SetTranslation(0,30789) //NIGHTMAREHOTHEADMONSTER
HTHD H 4 A_Pain
Goto See

Pain.TimeStopper:
HTHD H 0 A_Stop
HTHD H 0 Thing_SetTranslation(0,30789) //NIGHTMAREHOTHEADMONSTER
HTHD H 0 A_ChangeFlag("NOPAIN",true)
HTHD "##############################################################################################################################################################################################################################################################################################################################################################" 1 A_SpawnItemEx("TimeStopGFX",random(8,56),0,random(0,80),0,0,0,random(0,359),0,80)
HTHD H 0 A_ChangeFlag("NOPAIN",false)
Goto See

Death.WindStorm:
Death.GravityHold:
Death.TornadoBlow:
BlowDeath:
HTHD H 0 A_Stop
HTHD H 0 Thing_SetTranslation(0,30789) //NIGHTMAREHOTHEADMONSTER
HTHD H 0 A_ChangeFlag("SHOOTABLE",false)
HTHD H 0 A_ChangeFlag("NODAMAGE",false)
HTHD H 0 A_ChangeFlag("SOLID",false)
HTHD H 1 ThrustThingZ(0,10,0,1)
HTHD H 0 A_JumpIf(ceilingz-z<64,"Death")
HTHD H 0 A_GiveInventory("BlowDeathTimer",1)
HTHD H 0 A_JumpIfInventory("BlowDeathTimer",35,"Death")
Goto BlowDeath+5

Death:
XDeath:
HTHD H 0 A_Stop
HTHD H 0 A_FaceTarget
HTHD H 0 Thing_SetTranslation(0,30789) //NIGHTMAREHOTHEADMONSTER
HTHD H 2 A_NoBlocking
HTHD H 0 A_Scream
HTHD H 0 A_SpawnItemEx("ExplosionEffect1",0,0,32)
HTHD H 0 A_SpawnItemEx("MonsterFakeDeathFX",0,0,32,0,0,0,0,1)
HTHD H 0 A_SpawnItemEx("NMHotHeadMonster_DeathMarker",0,0,32,0,0,8,0,1)
TNT1 A 26
TNT1 A -1
Stop
}
}

Actor NMHotHeadMonster_DeathMarker : HotHeadMonster_DeathMarker {}

Actor NMHotHeadMonsterShot : HotHeadMonsterShot
{
Translation "192:192=74:74", "198:198=103:103", "0:0=4:4", "4:4=0:0"
Speed 20
SeeSound "weapon/iceslasher"
DeathSound "misc/sunstargroundflame"
States
{
Spawn:
HTHD NO 4 NoDelay
loop

Death:
MMFX CDE 3
stop
}
}