////////////////////////////////////
//          WALKING BOMB          //
////////////////////////////////////

Actor WalkingBomb 31000
{
//$Category MM8BDM-Monsters (Custom)
//$Title Walking Bomb
//$Sprite D033B8B2
Tag "Walking Bomb"
Translation "192:192=4:4", "198:198=129:129"
MONSTER
Species "WalkingBombMonster"
BloodType "MonsterRipperProtect_Helper"
//+NOBLOOD
+FLOORCLIP
+NOBLOCKMONST
-NOINFIGHTING
Health 60
Radius 20
Height 56
Speed 8 // 10
MeleeRange 125
PainChance 20
PainChance "WindStorm", 20
PainChance "GravityHold", 20
PainChance "ConcreteShot", 20
PainChance "TornadoBlow", 20
PainChance "BlackHoleBomb", 20
PainChance "TimeStopper", 256
DamageFactor "Dummy", 0.0
SeeSound "item/rushdetect"
PainSound "monster/mm3pain"
DeathSound "misc/hugequake"
Obituary "$OB_WALKINGBOMB"
Mass 9999
Scale 2.625
States
{
Spawn:
WBOM A 0 NoDelay A_Stop
WBOM A 0 A_TakeInventory("CutterFlag",1)
WBOM A 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
WBOM A 0 A_SpawnItemEx("MonsterHitbox20_56")
WBOM A 10 A_Look
Goto Spawn+4

FirstSee:
WBOM A 0 A_TakeInventory("CutterFlag",1)
WBOM A 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
WBOM A 0 Thing_SetTranslation(0,30501) //ALLRED
WBOM A 2 Bright
WBOM A 0 Thing_SetTranslation(0,31001) //WALKINGBOMBMONSTER
WBOM A 0 A_GiveInventory("CutterFlag",1)
Goto See

See:
WBOM B 0 A_JumpIfInventory("CutterFlag",1,1)
Goto FirstSee
WBOM B 0 A_PlaySoundEx("monster/walkingbombrun","Body")
WBOM BBBB 1 A_Chase
WBOM B 0 A_FaceTarget
WBOM CCCC 1 A_Chase
WBOM C 0 A_FaceTarget
WBOM C 0 A_PlaySoundEx("monster/walkingbombrun","Body")
WBOM DDDD 1 A_Chase
WBOM D 0 A_FaceTarget
WBOM CCCC 1 A_Chase
WBOM C 0 A_FaceTarget
Loop

Melee:
WBOM E 0 A_PlaySoundEx("misc/bombcount","Weapon")
WBOM E 0 A_PlaySoundEx("monster/walkingbombrun","Body")
WBOM EBBB 1 A_Chase("","")
WBOM B 0 A_FaceTarget
WBOM B 0 A_PlaySoundEx("misc/bombcount","Weapon")
WBOM FCCC 1 A_Chase("","")
WBOM C 0 A_FaceTarget
WBOM C 0 A_PlaySoundEx("misc/bombcount","Weapon")
WBOM E 0 A_PlaySoundEx("monster/walkingbombrun","Body")
WBOM GDDD 1 A_Chase("","")
WBOM D 0 A_FaceTarget
WBOM D 0 A_PlaySoundEx("misc/bombcount","Weapon")
WBOM FCCC 1 A_Chase("","")
WBOM B 0 A_FaceTarget
WBOM B 0 A_PlaySoundEx("misc/bombcount","Weapon")
WBOM EBBB 1 A_Chase("","")
WBOM B 0 A_FaceTarget
//WBOM D 0 A_JumpIfTargetInLOS("Explode",0,0,200)
Goto Explode

Explode:
WBOM "#" 1 A_Die
Wait

Pain:
WBOM H 0 A_Stop
Pain.WindStorm:
Pain.GravityHold:
Pain.ConcreteShot:
Pain.TornadoBlow:
Pain.BlackHoleBomb:
WBOM H 0 Thing_SetTranslation(0,31001) //WALKINGBOMBMONSTER
WBOM H 2 A_Pain
Goto See

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

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

Death:
XDeath:
WBOM H 0 A_Stop
WBOM H 0 A_FaceTarget
WBOM H 0 Thing_SetTranslation(0,30503) //ALLWHITE
WBOM H 0 A_NoBlocking
WBOM H 0 A_CustomMissile("WalkingBombExplosion")
WBOM H 0 A_Scream
WBOM H 0 A_Quake(4,20,0,256)
WBOM H 3 A_SpawnItemEx("ExplosionEffect2",frandom(12,48),frandom(12,48),frandom(20,56),0,0,0,frandom(0,359))
TNT1 AAAA 3 A_SpawnItemEx("ExplosionEffect2",frandom(12,48),frandom(12,48),frandom(20,56),0,0,0,frandom(0,359))
TNT1 H 0 A_JumpIf(CallACS("Monster_CanDropWeapon"),4)
TNT1 H 0 A_Jump(10,2)
TNT1 H 0 A_JumpIf(True,2)
TNT1 H 0 ACS_NamedExecuteWithResult("Monster_WeaponDrop",4) //Devil Cannon
TNT1 H 0
Stop
}
}

Actor WalkingBombExplosion
{
PROJECTILE
+NOINTERACTION
DamageType "TopSpin"
Speed 0
States
{
Spawn:
TNT1 A 0 NoDelay A_Explode(50,256)
Stop
}
}

////////////////////////////////////
//          CHRONIC BOMB          //
////////////////////////////////////

Actor ChronicBomb : WalkingBomb 31001
{
//$Category MM8BDM-Monsters (Custom)
//$Title Chronic Bomb
//$Sprite D034B8B2
Tag "Chronic Bomb"
+DROPOFF
Translation "192:192=4:4", "198:198=239:239", "42:42=61:61"
Obituary "$OB_CHRONICBOMB"
DeathSound "misc/sunstarexplode"
States
{
Spawn:
WBOM A 0 NoDelay A_Stop
WBOM A 0 A_TakeInventory("CutterFlag",1)
WBOM A 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
WBOM A 0 A_SpawnItemEx("MonsterHitbox20_56")
WBOM A 10 A_Look
Goto Spawn+4

FirstSee:
WBOM A 0 A_TakeInventory("CutterFlag",1)
WBOM A 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
WBOM A 0 A_SpawnItemEx("MonsterWallChecker_Warp")
WBOM A 0 Thing_SetTranslation(0,30501) //ALLRED
WBOM A 2 Bright
WBOM A 0 Thing_SetTranslation(0,31002) //CHRONICBOMBMONSTER
WBOM A 0 A_GiveInventory("CutterFlag",1)
WBOM A 0 A_TakeInventory("AtomicFireAmmo",28)
Goto See

FrameB:
WBOM B 0 A_CheckFloor(1)
Goto See
WBOM B 0 A_PlaySoundEx("monster/walkingbombrun","Body")
Goto See
FrameC:
WBOM C 0
Goto See
FrameD:
WBOM B 0 A_CheckFloor(1)
Goto See
WBOM D 0 A_PlaySoundEx("monster/walkingbombrun","Body")
Goto See
FrameE:
WBOM C 0 A_TakeInventory("AtomicFireAmmo",28)
Goto See

See:
WBOM "#" 0 A_JumpIfInventory("CutterFlag",1,1)
Goto FirstSee
WBOM "#" 0 A_JumpIfInventory("MonsterJumpFlag2",1,"Jump")
WBOM "#" 1 A_Chase
WBOM "#" 0 A_JumpIfInventory("MonsterJumpFlag2",1,"Jump")
WBOM "#" 1 A_Chase
WBOM "#" 0 A_JumpIfInventory("MonsterJumpFlag2",1,"Jump")
WBOM "#" 1 A_Chase
WBOM "#" 0 A_JumpIfInventory("MonsterJumpFlag2",1,"Jump")
WBOM "#" 1 A_Chase
WBOM "#" 0 A_FaceTarget
WBOM "#" 0 A_GiveInventory("AtomicFireAmmo",1)
WBOM "#" 0 A_JumpIfInventory("AtomicFireAmmo",4,"FrameE")
WBOM "#" 0 A_JumpIfInventory("AtomicFireAmmo",3,"FrameD")
WBOM "#" 0 A_JumpIfInventory("AtomicFireAmmo",2,"FrameC")
WBOM "#" 0 A_JumpIfInventory("AtomicFireAmmo",1,"FrameB")
Loop

Jump:
WBOM I 0 A_TakeInventory("MonsterJumpFlag",1)
WBOM I 0 A_TakeInventory("MonsterJumpFlag2",1)
WBOM I 0 ThrustThingZ(0,42,0,0)
WBOM I 0 A_Recoil(-2)
WBOM I 0 A_FaceTarget
WBOM I 5 A_PlaySoundEx("monster/chronicbombjump","Weapon")
WBOM I 0 A_FaceTarget
WBOM I 1 A_CheckFloor(3)
WBOM I 0 A_Chase
WBOM I 0 A_Recoil(-0.5)
Goto Jump+7
WBOM I 0 A_Stop
Goto FrameE

Melee:
WBOM E 0 A_PlaySoundEx("misc/electrap","Weapon")
WBOM E 0 A_PlaySoundEx("monster/walkingbombrun","Body")
WBOM EBBB 1 A_Chase("","")
WBOM B 0 A_FaceTarget
WBOM B 0 A_PlaySoundEx("misc/electrap","Weapon")
WBOM FCCC 1 A_Chase("","")
WBOM C 0 A_FaceTarget
WBOM C 0 A_PlaySoundEx("misc/electrap","Weapon")
WBOM E 0 A_PlaySoundEx("monster/walkingbombrun","Body")
WBOM GDDD 1 A_Chase("","")
WBOM D 0 A_FaceTarget
WBOM D 0 A_PlaySoundEx("misc/electrap","Weapon")
WBOM FCCC 1 A_Chase("","")
WBOM B 0 A_FaceTarget
WBOM B 0 A_PlaySoundEx("misc/electrap","Weapon")
WBOM EBBB 1 A_Chase("","")
WBOM B 0 A_FaceTarget
//WBOM D 0 A_JumpIfTargetInLOS("Explode",0,0,200)
Goto Explode

Pain:
WBOM H 0 A_Stop
Pain.WindStorm:
Pain.GravityHold:
Pain.ConcreteShot:
Pain.TornadoBlow:
Pain.BlackHoleBomb:
WBOM A 0 Thing_SetTranslation(0,31002) //CHRONICBOMBMONSTER
WBOM H 2 A_Pain
Goto See

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

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

Death:
XDeath:
WBOM H 0 A_Stop
WBOM H 0 A_FaceTarget
WBOM H 0 Thing_SetTranslation(0,30503) //ALLWHITE
WBOM H 0 A_NoBlocking
WBOM H 0 A_CustomMissile("ChronicBombExplosion")
WBOM H 0 A_PlaySoundEx("weapon/slow","Weapon")
WBOM H 0 A_Scream
WBOM H 0 A_Quake(3,20,0,256)
WBOM H 3 A_SpawnItemEx("ExplosionEffect2",0,0,32)
TNT1 H 0 A_JumpIf(CallACS("Monster_CanDropWeapon"),4)
TNT1 H 0 A_Jump(20,2)
TNT1 H 0 A_JumpIf(True,2)
TNT1 H 0 ACS_NamedExecuteWithResult("Monster_WeaponDrop",4) //Devil Cannon
TNT1 H 0
Stop
}
}

Actor ChronicBombExplosion
{
+BRIGHT
PROJECTILE
+NOINTERACTION
+FORCEXYBILLBOARD
DamageType "TimeSlow"
Speed 0
Scale 3.5
States
{
Spawn:
TNT1 A 0 NoDelay A_Explode(35,256)
SLOD EFGHIJKLMNEFGHIJKLMN 1
Stop
}
}

/*Scrapped in Favour of Walking Bomb, may be of use later on

////////////////////////////////////
//         ATOMIC CHICKEN         //
////////////////////////////////////

Actor AtomicChickenMonster 31000
{
//$Category MM8BDM-Monsters (Custom)
//$Title Atomic Chicken
//$Sprite D033B8B2
Tag "Atomic Chicken"
Translation "215:215=215:215", "216:216=216:216", "227:227=227:227"
MONSTER
+NOBLOOD
+FLOORCLIP
+NODROPOFF
-NOINFIGHTING
Health 60
Radius 20
Height 68
Speed 8 // 10
MeleeRange 150
PainChance 20
PainChance "WindStorm", 20
PainChance "GravityHold", 20
PainChance "ConcreteShot", 20
PainChance "TornadoBlow", 20
PainChance "BlackHoleBomb", 20
PainChance "TimeStopper", 256
DamageFactor "Dummy", 0.0
SeeSound "misc/brgillusion"
PainSound "monster/mm2pain"
DeathSound "misc/hugequake"
Obituary "$OB_ATOMICCHICKEN"
Mass 9999
Scale 2.25
States
{
Spawn:
ATOC A 0 NoDelay A_Stop
ATOC A 0 A_TakeInventory("CutterFlag",1)
ATOC A 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
ATOC A 0 A_SpawnItemEx("MonsterHitbox20_68")
SpawnLoop:
ATOC A 3 A_Look
ATOC B 2
ATOC B 0 A_PlaySoundEx("weapon/crackermine","Body")
ATOC A 0 ThrustThingZ(0,30,0,0)
ATOC B 3 
ATOC C 1 A_CheckFloor("SpawnLoop2")
Wait
SpawnLoop2:
ATOC C 3 A_Look
ATOC B 2
ATOC B 0 A_PlaySoundEx("weapon/crackermine","Body")
ATOC A 0 ThrustThingZ(0,30,0,0)
ATOC B 3 
ATOC A 1 A_CheckFloor("SpawnLoop")
Wait

FirstSee:
ATOC "#" 0 A_TakeInventory("CutterFlag",1)
ATOC "#" 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
ATOC "#" 0 Thing_SetTranslation(0,30501) //ALLRED
ATOC "#" 2 Bright
ATOC "#" 0 Thing_SetTranslation(0,31001) //WALKINGBOMBMONSTER
ATOC "#" 0 A_GiveInventory("CutterFlag",1)
Goto See

See:
ATOC A 0 A_JumpIfInventory("CutterFlag",1,1)
Goto FirstSee
ATOC A 0 A_PlaySoundEx("monster/walkingbombrun","Body")
ATOC AAAA 1 A_Chase
ATOC A 0 A_FaceTarget
ATOC BBBB 1 A_Chase
ATOC B 0 A_FaceTarget
ATOC CCCC 1 A_Chase
ATOC C 0 A_FaceTarget
ATOC C 0 A_PlaySoundEx("monster/walkingbombrun","Body")
ATOC BBBB 1 A_Chase
ATOC B 0 A_FaceTarget
Loop

Melee:
ATOC D 0 A_PlaySoundEx("misc/bombcount","Weapon")
ATOC D 0 A_PlaySoundEx("monster/walkingbombrun","Body")
ATOC DAAA 1 A_Chase("","")
ATOC A 0 A_FaceTarget
ATOC E 0 A_PlaySoundEx("misc/bombcount","Weapon")
ATOC EBBB 1 A_Chase("","")
ATOC B 0 A_FaceTarget
ATOC F 0 A_PlaySoundEx("misc/bombcount","Weapon")
ATOC FCCC 1 A_Chase("","")
ATOC C 0 A_FaceTarget
ATOC E 0 A_PlaySoundEx("monster/walkingbombrun","Body")
ATOC E 0 A_PlaySoundEx("misc/bombcount","Weapon")
ATOC EBBB 1 A_Chase("","")
ATOC B 0 A_FaceTarget
ATOC DAAA 1 A_Chase("","")
ATOC A 0 A_FaceTarget
ATOC A 0 A_PlaySoundEx("monster/walkingbombrun","Body")
ATOC E 0 A_PlaySoundEx("misc/bombcount","Weapon")
ATOC A 0 A_JumpIfTargetInLOS("Explode",0,0,100)
Goto See+6

Explode:
ATOC "#" 1 A_Die
Wait

Pain:
ATOC "#" 0 A_Stop
Pain.WindStorm:
Pain.GravityHold:
Pain.ConcreteShot:
Pain.TornadoBlow:
Pain.BlackHoleBomb:
ATOC "#" 0 Thing_SetTranslation(0,31001) //WALKINGBOMBMONSTER
ATOC "#" 2 A_Pain
Goto See

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

Death.WindStorm:
Death.GravityHold:
Death.TornadoBlow:
BlowDeath:
ATOC "#" 0 A_Stop
ATOC "#" 0 Thing_SetTranslation(0,31001) //WALKINGBOMBMONSTER
ATOC "#" 0 A_ChangeFlag("SHOOTABLE",false)
ATOC "#" 0 A_ChangeFlag("NODAMAGE",false)
ATOC "#" 0 A_NoBlocking
ATOC "#" 1 ThrustThingZ(0,10,0,1)
ATOC "#" 0 A_JumpIf(ceilingz-z<64,"Death")
ATOC "#" 0 A_GiveInventory("BlowDeathTimer",1)
ATOC "#" 0 A_JumpIfInventory("BlowDeathTimer",35,"Death")
Goto BlowDeath+5

Death:
XDeath:
ATOC "#" 0 A_Stop
ATOC "#" 0 A_FaceTarget
ATOC "#" 0 Thing_SetTranslation(0,30503) //ALLWHITE
ATOC "#" 0 A_NoBlocking
ATOC "#" 0 A_CustomMissile("AtomicChickenMonsterExplosion")
ATOC "#" 0 A_Scream
ATOC "#" 0 A_Quake(4,20,0,256)
ATOC "#" 3 A_SpawnItemEx("ExplosionEffect2",frandom(12,48),frandom(12,48),frandom(40,72),0,0,0,frandom(0,359))
TNT1 AAAA 3 A_SpawnItemEx("ExplosionEffect2",frandom(12,48),frandom(12,48),frandom(40,72),0,0,0,frandom(0,359))
Stop
}
}

Actor AtomicChickenMonsterExplosion
{
PROJECTILE
+NOINTERACTION
Speed 0
States
{
Spawn:
TNT1 A 0 NoDelay A_Explode(50,256)
Stop
}
}

*/