/////////////////////////////////////////
//         MONO ROADER (DEMON)         //
/////////////////////////////////////////

Actor MonoRoader 30605
{
//$Category MM8BDM-Monsters (Doom)
//$Title Mono Roader (Demon)
//$Sprite D007B8B2
Tag "Mono Roader"
Translation "192:192=4:4", "198:198=198:198"
MONSTER
Species "MonoRoaderMonster"
BloodType "MonsterRipperProtect_Helper"
//+NOBLOOD
+FLOORCLIP
+NODROPOFF
-NOINFIGHTING
Health 150
Radius 30
Height 56
Speed 1 // 10
PainChance 180
PainChance "WindStorm", 180
PainChance "GravityHold", 180
PainChance "ConcreteShot", 180
PainChance "TornadoBlow", 180
PainChance "BlackHoleBomb", 180
PainChance "TimeStopper", 256
DamageFactor "Dummy", 0.0
SeeSound "item/rushdetect"
PainSound "monster/mm4pain"
DeathSound "monster/death"
ActiveSound "misc/repairing"
Obituary "$OB_DEMONHIT"
Mass 9999
Scale 2.5
States
{
Spawn:
MROD A 0 NoDelay A_Stop
MROD A 0 A_TakeInventory("CutterFlag",1)
MROD A 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
MROD A 0 A_SpawnItemEx("MonsterHitbox30_56")
MROD A 10 A_Look
Goto Spawn+4

FirstSee:
MROD C 0 A_TakeInventory("CutterFlag",1)
MROD C 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
MROD C 0 Thing_SetTranslation(0,30501) //ALLRED
MROD C 2 Bright
MROD C 0 Thing_SetTranslation(0,30605) //MONOROADERMONSTER
MROD C 0 A_GiveInventory("CutterFlag",1)
Goto See

See:
MROD A 0 A_JumpIfInventory("CutterFlag",1,1)
Goto FirstSee
MROD C 0 A_Chase
MROD CC 1 A_ChangeVelocity(6,0,momz,3)
MROD C 0 A_Chase
MROD CD 1 A_ChangeVelocity(6,0,momz,3)
MROD D 0 A_Chase
MROD DD 1 A_ChangeVelocity(6,0,momz,3)
Loop

Melee:
MROD C 0 A_Stop
MROD C 0 A_FaceTarget
MROD CB 1
MROD AAAA 2
MROD B 0 A_PlaySoundEx("item/rushsearchdig","Weapon")
MROD B 0 Thing_SetTranslation(0,30504) //MISSILEFLASH
MROD B 2 Bright
MROD B 0 Thing_SetTranslation(0,30605) //MONOROADERMONSTER
MROD DD 2
MROD D 0 A_PlaySoundEx("weapon/wheelshot","Body")
MROD D 0 A_CustomMeleeAttack(25,"weapon/tenguhit","Silence","Buster")
MROD CCCCCCCC 1 A_SetAngle(Angle+55)
Goto See

Pain:
MROD H 0 A_Stop
Pain.WindStorm:
Pain.GravityHold:
Pain.ConcreteShot:
Pain.TornadoBlow:
Pain.BlackHoleBomb:
MROD H 0 Thing_SetTranslation(0,30605) //MONOROADERMONSTER
MROD H 4 A_Pain
Goto See

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

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

Death:
XDeath:
MROD H 0 A_Stop
MROD H 0 A_FaceTarget
MROD H 0 Thing_SetTranslation(0,30605) //MONOROADERMONSTER
MROD H 2 A_NoBlocking
MROD H 0 A_Scream
MROD H 0 A_SpawnItemEx("ExplosionEffect1",0,0,32)
MROD H 0 A_SpawnItemEx("MonsterFakeDeathFX",0,0,32,0,0,0,0,1)
MROD H 0 A_SpawnItemEx("MonoRoader_DeathMarker",0,0,32,0,0,8,0,1)
MROD H 0 A_JumpIf(CallACS("Monster_CanDropWeapon"),4)
MROD H 0 A_Jump(1,2)
MROD H 0 A_JumpIf(True,2)
MROD H 0 ACS_NamedExecuteWithResult("Monster_WeaponDrop",1) //Sapper Drill
TNT1 A 26
TNT1 A -1
Stop

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

Actor MonoRoader_DeathMarker : Monster_DeathMarker
{
States
{
Spawn:
TNT1 A 0 NoDelay A_Jump(128,2)
TNT1 A 0 A_SetScale(-ScaleX,ScaleY)
SpawnLoop:
MROD I 1 A_CheckFloor("SpawnFloor")
loop

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

Actor MonoRoader_Replaced : MonoRoader replaces Demon {}

//////////////////////////////////////////////////
//         SHADOW MONO ROADER (SPECTRE)         //
//////////////////////////////////////////////////

Actor ShadowMonoRoader : MonoRoader 30606
{
//$Category MM8BDM-Monsters (Doom)
//$Title Shadow Mono Roader (Spectre)
//$Sprite D008B8B2
Tag "Shadow Mono Roader"
Translation "192:192=4:4", "198:198=198:198"
+SHADOW
Renderstyle Fuzzy
Alpha 0.25
Obituary "$OB_SPECTREHIT"
States
{
Death:
XDeath:
MROD H 0 A_Stop
MROD H 0 A_FaceTarget
MROD H 0 Thing_SetTranslation(0,30605) //MONOROADERMONSTER
MROD H 2 A_NoBlocking
MROD H 0 A_Scream
MROD H 0 A_SpawnItemEx("ExplosionEffect1",0,0,32)
MROD H 0 A_SpawnItemEx("MonsterFakeDeathFX",0,0,32,0,0,0,0,1)
MROD H 0 A_SpawnItemEx("ShadowMonoRoader_DeathMarker",0,0,32,0,0,8,0,1)
MROD H 0 A_JumpIf(CallACS("Monster_CanDropWeapon"),4)
MROD H 0 A_Jump(16,2)
MROD H 0 A_JumpIf(True,2)
MROD H 0 ACS_NamedExecuteWithResult("Monster_WeaponDrop",1) //Sapper Drill
TNT1 A 26
TNT1 A -1
Stop
}
}

Actor ShadowMonoRoader_DeathMarker : MonoRoader_DeathMarker
{
Renderstyle Fuzzy
Alpha 0.25
}

Actor ShadowMonoRoader_Replaced : ShadowMonoRoader replaces Spectre {}

////////////////////////////////////////////////////
//         MONO ROADER ELITE (FAST DEMON)         //
////////////////////////////////////////////////////

Actor MonoRoaderElite : MonoRoader 30621
{
//$Category MM8BDM-Monsters (Doom)
//$Title Mono Roader Elite (Fast Demon)
//$Sprite D009B8B2
Tag "Mono Roader Elite"
Speed 10
Translation "192:192=4:4", "198:198=218:218"
Obituary "$OB_FASTDEMONHIT"
States
{
FirstSee:
MROD C 0 A_TakeInventory("CutterFlag",1)
MROD C 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
MROD C 0 Thing_SetTranslation(0,30501) //ALLRED
MROD C 2 Bright
MROD C 0 Thing_SetTranslation(0,30621) //MONOROADERELITEMONSTER
MROD C 0 A_GiveInventory("CutterFlag",1)
Goto See

See:
MROD A 0 A_JumpIfInventory("CutterFlag",1,1)
Goto FirstSee
MROD C 1 
MROD C 0 A_Chase
MROD C 1 
MROD C 0 A_Chase
MROD D 1 
MROD D 0 A_Chase
MROD D 1 
MROD D 0 A_Chase
Loop

Melee:
MROD C 0 A_Stop
MROD C 0 A_FaceTarget
MROD B 1
MROD AA 2
MROD B 0 A_PlaySoundEx("item/rushsearchdig","Weapon")
MROD B 0 Thing_SetTranslation(0,30504) //MISSILEFLASH
MROD B 1 Bright
MROD B 0 Thing_SetTranslation(0,30621) //MONOROADERELITEMONSTER
MROD D 2
MROD D 0 A_PlaySoundEx("weapon/wheelshot","Body")
MROD D 0 A_CustomMeleeAttack(25,"weapon/tenguhit","Silence","Buster")
MROD CCCC 1 A_SetAngle(Angle+90,SPF_INTERPOLATE)
Goto See

Pain:
MROD H 0 A_Stop
Pain.WindStorm:
Pain.GravityHold:
Pain.ConcreteShot:
Pain.TornadoBlow:
Pain.BlackHoleBomb:
MROD H 0 Thing_SetTranslation(0,30621) //MONOROADERELITEMONSTER
MROD H 2 A_Pain
Goto See

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

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

Death:
XDeath:
MROD H 0 A_Stop
MROD H 0 A_FaceTarget
MROD H 0 Thing_SetTranslation(0,30621) //MONOROADERELITEMONSTER
MROD H 2 A_NoBlocking
MROD H 0 A_Scream
MROD H 0 A_SpawnItemEx("ExplosionEffect1",0,0,32)
MROD H 0 A_SpawnItemEx("MonsterFakeDeathFX",0,0,32,0,0,0,0,1)
MROD H 0 A_SpawnItemEx("MonoRoaderElite_DeathMarker",0,0,32,0,0,8,0,1)
MROD H 0 A_JumpIf(CallACS("Monster_CanDropWeapon"),4)
MROD H 0 A_Jump(30,2)
MROD H 0 A_JumpIf(True,2)
MROD H 0 ACS_NamedExecuteWithResult("Monster_WeaponDrop",1) //Sapper Drill
TNT1 A 26
TNT1 A -1
Stop
}
}

Actor MonoRoaderElite_DeathMarker : MonoRoader_DeathMarker {}

/////////////////////////////////////////////////////////////
//         SHADOW MONO ROADER ELITE (FAST SPECTRE)         //
/////////////////////////////////////////////////////////////

Actor ShadowMonoRoaderElite : MonoRoaderElite 30622
{
//$Category MM8BDM-Monsters (Doom)
//$Title Shadow Mono Roader Elite (Fast Spectre)
//$Sprite D010B8B2
Tag "Shadow Mono Roader Elite"
+SHADOW
Renderstyle Fuzzy
Alpha 0.25
Obituary "$OB_FASTSPECTREHIT"
States
{
Death:
XDeath:
MROD H 0 A_Stop
MROD H 0 A_FaceTarget
MROD H 0 Thing_SetTranslation(0,30621) //MONOROADERELITEMONSTER
MROD H 2 A_NoBlocking
MROD H 0 A_Scream
MROD H 0 A_SpawnItemEx("ExplosionEffect1",0,0,32)
MROD H 0 A_SpawnItemEx("MonsterFakeDeathFX",0,0,32,0,0,0,0,1)
MROD H 0 A_SpawnItemEx("ShadowMonoRoaderElite_DeathMarker",0,0,32,0,0,8,0,1)
MROD H 0 A_JumpIf(CallACS("Monster_CanDropWeapon"),4)
MROD H 0 A_Jump(45,2)
MROD H 0 A_JumpIf(True,2)
MROD H 0 ACS_NamedExecuteWithResult("Monster_WeaponDrop",1) //Sapper Drill
TNT1 A 26
TNT1 A -1
Stop
}
}

Actor ShadowMonoRoaderElite_DeathMarker : ShadowMonoRoader_DeathMarker {}

//////////////////////////////////////////////////////
//         BRUTAL MONO ROADER (BLOOD DEMON)         //
//////////////////////////////////////////////////////

Actor BrutalMonoRoader : MonoRoader 30629
{
//$Category MM8BDM-Monsters (Skulltag)
//$Title Brutal Mono Roader (Blood Demon)
//$Sprite D011B8B2
Tag "Brutal Mono Roader"
Health 300
Speed 10
Translation "4:4=18:18", "192:192=180:180", "198:198=191:191"
Obituary "$OB_BLOODDEMON_MELEE"
States
{
FirstSee:
MROD C 0 A_TakeInventory("CutterFlag",1)
MROD C 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
MROD C 0 Thing_SetTranslation(0,30501) //ALLRED
MROD C 2 Bright
MROD C 0 Thing_SetTranslation(0,30629) //BRUTALMONOROADERMONSTER
MROD C 0 A_GiveInventory("CutterFlag",1)
Goto See

See:
MROD A 0 A_JumpIfInventory("CutterFlag",1,1)
Goto FirstSee
MROD C 1 
MROD C 0 A_Chase
MROD C 1 
MROD C 0 A_Chase
MROD D 1 
MROD D 0 A_Chase
MROD D 1 
MROD D 0 A_Chase
Loop

Melee:
MROD C 0 A_Stop
MROD C 0 A_FaceTarget
MROD B 1
MROD AA 2
MROD B 0 A_PlaySoundEx("item/rushsearchdig","Weapon")
MROD B 0 Thing_SetTranslation(0,30504) //MISSILEFLASH
MROD B 1 Bright
MROD B 0 Thing_SetTranslation(0,30629) //BRUTALMONOROADERMONSTER
MROD D 2
MROD D 0 A_PlaySoundEx("weapon/wheelshot","Body")
MROD D 0 A_CustomMeleeAttack(25,"weapon/tenguhit","Silence","Buster")
MROD CCCC 1 A_SetAngle(Angle+90,SPF_INTERPOLATE)
Goto See

Pain:
MROD H 0 A_Stop
Pain.WindStorm:
Pain.GravityHold:
Pain.ConcreteShot:
Pain.TornadoBlow:
Pain.BlackHoleBomb:
MROD H 0 Thing_SetTranslation(0,30629) //BRUTALMONOROADERMONSTER
MROD H 2 A_Pain
Goto See

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

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

Death:
XDeath:
MROD H 0 A_Stop
MROD H 0 A_FaceTarget
MROD H 0 Thing_SetTranslation(0,30629) //BRUTALMONOROADERMONSTER
MROD H 2 A_NoBlocking
MROD H 0 A_Scream
MROD H 0 A_SpawnItemEx("ExplosionEffect1",0,0,32)
MROD H 0 A_SpawnItemEx("MonsterFakeDeathFX",0,0,32,0,0,0,0,1)
MROD H 0 A_SpawnItemEx("BrutalMonoRoader_DeathMarker",0,0,32,0,0,8,0,1)
MROD H 0 A_JumpIf(CallACS("Monster_CanDropWeapon"),4)
MROD H 0 A_Jump(65,2)
MROD H 0 A_JumpIf(True,2)
MROD H 0 ACS_NamedExecuteWithResult("Monster_WeaponDrop",1) //Sapper Drill
TNT1 A 26
TNT1 A -1
Stop
}
}

Actor BrutalMonoRoader_DeathMarker : MonoRoader_DeathMarker {}