/////////////////////////////////////////////
//         HAMMER JOE (HELLKNIGHT)         //
/////////////////////////////////////////////

Actor HammerJoeMonster 30609
{
//$Category MM8BDM-Monsters (Doom)
//$Title Hammer Joe (HellKnight)
//$Sprite D016B8B2
Tag "Hammer Joe"
Translation "192:192=4:4", "198:198=110:110", "202:202=227:227"
MONSTER
Species "HammerJoeMonster"
BloodType "MonsterRipperProtect_Helper"
//+NOBLOOD
+FLOORCLIP
-NOINFIGHTING
+DONTHARMSPECIES
Health 500
Radius 24
Height 64
Speed 1 // 8
PainChance 50
PainChance "WindStorm", 50
PainChance "GravityHold", 50
PainChance "ConcreteShot", 50
PainChance "TornadoBlow", 50
PainChance "BlackHoleBomb", 50
PainChance "TimeStopper", 256
DamageFactor "Dummy", 0.0
SeeSound "item/rushdetect"
PainSound "monster/mm3pain"
DeathSound "monster/death"
ActiveSound "misc/repairing"
Obituary "$OB_KNIGHT"
HitObituary "$OB_KNIGHTHIT"
Mass 9999
Scale 2.5
States
{
Spawn:
HAMJ A 0 NoDelay A_Stop
HAMJ A 0 A_TakeInventory("CutterFlag",1)
HAMJ A 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
HAMJ A 0 A_SpawnItemEx("MonsterHitbox24_64")
HAMJ A 10 A_Look
Goto Spawn+4

FirstSee:
HAMJ A 0 A_TakeInventory("CutterFlag",1)
HAMJ A 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
HAMJ A 0 Thing_SetTranslation(0,30501) //ALLRED
HAMJ A 2 Bright
HAMJ A 0 Thing_SetTranslation(0,30609) //HAMMERJOEMONSTER
HAMJ A 0 A_GiveInventory("CutterFlag",1)
Goto See

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

Missile:
HAMJ F 0 A_Stop
HAMJ F 0 A_FaceTarget
HAMJ IIJ 1
HAMJ F 0 A_PlaySound("misc/kingswing",CHAN_BODY,0.5)
HAMJ JKLIJ 1
HAMJ J 0 A_FaceTarget
HAMJ K 1 
HAMJ F 0 A_PlaySound("misc/kingswing",CHAN_BODY,0.5)
HAMJ LIJKLIJ 1
HAMJ G 0 A_PlaySoundEx("weapon/deepdiggerthrow","Weapon")
HAMJ G 2
HAMJ G 0 A_CustomComboAttack("HammerJoeMonsterShot",32,45,"weapon/coilfire2","Buster")
HAMJ G 0 Thing_SetTranslation(0,30504) //MISSILEFLASH
HAMJ G 2 Bright
HAMJ G 0 Thing_SetTranslation(0,30609) //HAMMERJOEMONSTER
HAMJ G 4
Goto See

Pain:
HAMJ H 0 A_Stop
Pain.WindStorm:
Pain.GravityHold:
Pain.ConcreteShot:
Pain.TornadoBlow:
Pain.BlackHoleBomb:
HAMJ H 0 Thing_SetTranslation(0,30609) //HAMMERJOEMONSTER
HAMJ H 4 A_Pain
Goto See

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

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

Death:
XDeath:
HAMJ H 0 A_Stop
HAMJ H 0 A_FaceTarget
HAMJ H 0 Thing_SetTranslation(0,30609) //HAMMERJOEMONSTER
HAMJ H 2 A_NoBlocking
HAMJ H 0 A_Scream
HAMJ H 0 A_SpawnItemEx("ExplosionEffect1",0,0,32)
HAMJ H 0 A_SpawnItemEx("MonsterFakeDeathFX",0,0,32,0,0,0,0,1)
HAMJ H 0 A_SpawnItemEx("HammerJoeMonster_DeathMarker",0,0,32,0,0,8,0,1)
HAMJ H 0 A_JumpIf(CallACS("Monster_CanDropWeapon"),4)
HAMJ H 0 A_Jump(100,2)
HAMJ H 0 A_JumpIf(True,2)
HAMJ H 0 ACS_NamedExecuteWithResult("Monster_WeaponDrop",0) //Crushing Fist
TNT1 A 46
TNT1 A -1
Stop

Raise:
TNT1 A 0 A_SpawnItemEx("MonsterReviveHelper")
TNT1 A 20
TNT1 A 0 A_GiveInventory("DrillFlag",1)
HAMJ A 36
TNT1 A 0 A_TakeInventory("DrillFlag",1)
Goto See
}
}

Actor HammerJoeMonster_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)
HAMJ MMMMMNNNNNOOOOOPPPPP 1 A_CheckFloor("SpawnFloor")
loop

SpawnFloor:
HAMJ "#" 1 A_JumpIfInTargetInventory("DrillFlag",1,"Death")
wait
}
}

Actor HammerJoeMonsterShot
{
Translation "198:198=0:0"
+BRIGHT
PROJECTILE
Radius 6
Height 16
Speed 15
FastSpeed 20
Damage (30)
DamageType "Buster"
Scale 2.75
States
{
Spawn:
HAMJ QR 4 NoDelay
loop

Death:
MMFX CDE 3
stop
}
}

Actor HammerJoeMonster_Replaced : HammerJoeMonster replaces HellKnight {}

/////////////////////////////////////////////
//      HAMMER JOE ELITE (BARONOFHELL)     //
/////////////////////////////////////////////

Actor HammerJoeEliteMonster : HammerJoeMonster 30610
{
//$Category MM8BDM-Monsters (Doom)
//$Title Hammer Joe Elite (BaronOfHell)
//$Sprite D017B8B2
Tag "Hammer Joe Elite"
Translation "192:192=4:4", "198:198=173:173", "202:202=116:116"
+BOSSDEATH
Health 1000
Obituary "$OB_BARON"
HitObituary "$OB_BARONHIT"
States
{
FirstSee:
HAMJ A 0 A_TakeInventory("CutterFlag",1)
HAMJ A 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
HAMJ A 0 Thing_SetTranslation(0,30501) //ALLRED
HAMJ A 2 Bright
HAMJ A 0 Thing_SetTranslation(0,30610) //HAMMERJOEELITEMONSTER
HAMJ A 0 A_GiveInventory("CutterFlag",1)
Goto See

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

Missile:
HAMJ F 0 A_Stop
HAMJ F 0 A_FaceTarget
HAMJ IIJ 1
HAMJ F 0 A_PlaySound("misc/kingswing",CHAN_BODY,0.5)
HAMJ JKLIJ 1
HAMJ J 0 A_FaceTarget
HAMJ K 1 
HAMJ F 0 A_PlaySound("misc/kingswing",CHAN_BODY,0.5)
HAMJ LIJKLIJ 1
HAMJ G 0 A_PlaySoundEx("weapon/deepdiggerthrow","Weapon")
HAMJ G 2
HAMJ G 0 A_CustomComboAttack("HammerJoeMonsterShot",32,45,"weapon/coilfire2","Buster")
HAMJ G 0 Thing_SetTranslation(0,30504) //MISSILEFLASH
HAMJ G 2 Bright
HAMJ G 0 Thing_SetTranslation(0,30610) //HAMMERJOEELITEMONSTER
HAMJ G 4
Goto See

Pain:
HAMJ H 0 A_Stop
Pain.WindStorm:
Pain.GravityHold:
Pain.ConcreteShot:
Pain.TornadoBlow:
Pain.BlackHoleBomb:
HAMJ H 0 Thing_SetTranslation(0,30610) //HAMMERJOEELITEMONSTER
HAMJ H 4 A_Pain
Goto See

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

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

Death:
XDeath:
HAMJ H 0 A_Stop
HAMJ H 0 A_FaceTarget
HAMJ H 0 Thing_SetTranslation(0,30610) //HAMMERJOEELITEMONSTER
HAMJ H 2 A_NoBlocking
HAMJ H 0 A_Scream
HAMJ H 0 A_SpawnItemEx("ExplosionEffect1",0,0,32)
HAMJ H 0 A_SpawnItemEx("MonsterFakeDeathFX",0,0,32,0,0,0,0,1)
HAMJ H 0 A_SpawnItemEx("HammerJoeEliteMonster_DeathMarker",0,0,32,0,0,8,0,1)
HAMJ H 0 A_JumpIf(CallACS("Monster_CanDropWeapon"),4)
HAMJ H 0 A_Jump(150,2)
HAMJ H 0 A_JumpIf(True,2)
HAMJ H 0 ACS_NamedExecuteWithResult("Monster_WeaponDrop",0) //Crushing Fist
TNT1 A 46
TNT1 A -1
Stop
}
}

Actor HammerJoeEliteMonster_DeathMarker : HammerJoeMonster_DeathMarker {}

Actor HammerJoeEliteMonster_Replaced : HammerJoeEliteMonster replaces BaronOfHell {}

/////////////////////////////////////////////
//      HAMMER JOE CAPTAIN (BELPHEGOR)     //
/////////////////////////////////////////////

Actor HammerJoeCaptainMonster : HammerJoeMonster 30628
{
//$Category MM8BDM-Monsters (Doom)
//$Title Hammer Joe Captain (Belphegor)
//$Sprite D018B8B2
Tag "Hammer Joe Captain"
Translation "192:192=4:4", "198:198=218:218", "202:202=197:197"
Health 1500
PainChance 25
Obituary "$OB_BELPHEGOR"
HitObituary "$OB_BELPHEGOR_MELEE"
States
{
FirstSee:
HAMJ A 0 A_TakeInventory("CutterFlag",1)
HAMJ A 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
HAMJ A 0 Thing_SetTranslation(0,30501) //ALLRED
HAMJ A 2 Bright
HAMJ A 0 Thing_SetTranslation(0,30628) //HAMMERJOECAPTAINMONSTER
HAMJ A 0 A_GiveInventory("CutterFlag",1)
Goto See

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

Missile:
HAMJ F 0 A_Stop
HAMJ F 0 A_FaceTarget
HAMJ F 0 A_PlaySound("misc/kingswing",CHAN_BODY,0.5)
HAMJ JKLIJK 1
HAMJ F 0 A_PlaySound("misc/kingswing",CHAN_BODY,0.5)
HAMJ L 0 A_FaceTarget
HAMJ LIJKLI 1
HAMJ G 0 A_PlaySoundEx("weapon/deepdiggerthrow","Weapon")
HAMJ G 2
HAMJ G 0 A_CustomComboAttack("HammerJoeCaptainMonsterShot",32,45,"weapon/coilfire2","Buster")
HAMJ G 0 Thing_SetTranslation(0,30504) //MISSILEFLASH
HAMJ G 2 Bright
HAMJ G 0 Thing_SetTranslation(0,30628) //HAMMERJOECAPTAINMONSTER
HAMJ G 2
HAMJ F 0 A_FaceTarget
HAMJ F 0 A_PlaySound("misc/kingswing",CHAN_BODY,0.5)
HAMJ JKLIJK 1
HAMJ F 0 A_PlaySound("misc/kingswing",CHAN_BODY,0.5)
HAMJ L 0 A_FaceTarget
HAMJ LIJKLI 1
HAMJ G 0 A_PlaySoundEx("weapon/deepdiggerthrow","Weapon")
HAMJ G 2
HAMJ G 0 A_CustomComboAttack("HammerJoeCaptainMonsterShot",32,45,"weapon/coilfire2")
HAMJ G 0 Thing_SetTranslation(0,30504) //MISSILEFLASH
HAMJ G 2 Bright
HAMJ G 0 Thing_SetTranslation(0,30628) //HAMMERJOECAPTAINMONSTER
HAMJ G 2
HAMJ F 0 A_FaceTarget
HAMJ F 0 A_PlaySound("misc/kingswing",CHAN_BODY,0.5)
HAMJ JKLIJK 1
HAMJ F 0 A_PlaySound("misc/kingswing",CHAN_BODY,0.5)
HAMJ L 0 A_FaceTarget
HAMJ LIJKLI 1
HAMJ G 0 A_PlaySoundEx("weapon/deepdiggerthrow","Weapon")
HAMJ G 2
HAMJ G 0 A_CustomComboAttack("HammerJoeCaptainMonsterShot",32,45,"weapon/coilfire2")
HAMJ G 0 Thing_SetTranslation(0,30504) //MISSILEFLASH
HAMJ G 2 Bright
HAMJ G 0 Thing_SetTranslation(0,30628) //HAMMERJOECAPTAINMONSTER
HAMJ G 2
Goto See

Pain:
HAMJ H 0 A_Stop
Pain.WindStorm:
Pain.GravityHold:
Pain.ConcreteShot:
Pain.TornadoBlow:
Pain.BlackHoleBomb:
HAMJ H 0 Thing_SetTranslation(0,30628) //HAMMERJOECAPTAINMONSTER
HAMJ H 4 A_Pain
Goto See

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

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

Death:
XDeath:
HAMJ H 0 A_Stop
HAMJ H 0 A_FaceTarget
HAMJ H 0 Thing_SetTranslation(0,30628) //HAMMERJOECAPTAINMONSTER
HAMJ H 2 A_NoBlocking
HAMJ H 0 A_Scream
HAMJ H 0 A_SpawnItemEx("ExplosionEffect1",0,0,32)
HAMJ H 0 A_SpawnItemEx("MonsterFakeDeathFX",0,0,32,0,0,0,0,1)
HAMJ H 0 A_SpawnItemEx("HammerJoeCaptainMonster_DeathMarker",0,0,32,0,0,8,0,1)
HAMJ H 0 A_JumpIf(CallACS("Monster_CanDropWeapon"),4)
HAMJ H 0 A_Jump(200,2)
HAMJ H 0 A_JumpIf(True,2)
HAMJ H 0 ACS_NamedExecuteWithResult("Monster_WeaponDrop",0) //Crushing Fist
TNT1 A 46
TNT1 A -1 A_BossDeath
Stop
}
}

Actor HammerJoeCaptainMonsterShot : HammerJoeMonsterShot
{
Speed 20
}

Actor HammerJoeCaptainMonster_DeathMarker : HammerJoeMonster_DeathMarker {}