/////////////////////////////////////////////////////////
//         GIANT SPRINGER SPITTER (ARACHNOTRON)        //
/////////////////////////////////////////////////////////

Actor GiantSpringerSpitter 30611
{
//$Category MM8BDM-Monsters (Doom)
//$Title Giant Springer Spitter (Arachnotron)
//$Sprite D019B8B2
Tag "Giant Springer Spitter"
Translation "192:192=92:92", "198:198=144:144"
MONSTER
Species "GiantSpringerMonster"
BloodType "MonsterRipperProtect_Helper"
//+NOBLOOD
+FLOORCLIP
-NOINFIGHTING
+DONTHARMSPECIES
+BOSSDEATH
Health 500
Radius 64
Height 64
Speed 1 // 12
PainChance 128
PainChance "WindStorm", 128
PainChance "GravityHold", 128
PainChance "ConcreteShot", 128
PainChance "TornadoBlow", 128
PainChance "BlackHoleBomb", 128
PainChance "TimeStopper", 256
DamageFactor "Dummy", 0.0
SeeSound "item/rushdetect"
PainSound "monster/mm3pain"
DeathSound "monster/death"
ActiveSound "misc/repairing"
Obituary "$OB_BABY"
Mass 9999
Scale 2.5
States
{
Spawn:
GSPR A 0 NoDelay A_Stop
GSPR A 0 A_TakeInventory("CutterFlag",1)
GSPR A 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
GSPR A 0 A_SpawnItemEx("MonsterHitbox64_64")
GSPR A 0 A_SetScale(2.75,2.5)
GSPR A 10 A_Look
Goto Spawn+5

FirstSee:
GSPR A 0 A_TakeInventory("CutterFlag",1)
GSPR A 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
GSPR A 0 Thing_SetTranslation(0,30501) //ALLRED
GSPR A 2 Bright
GSPR A 0 Thing_SetTranslation(0,30611) //GIANTSPRINGERSPITTERMONSTER
GSPR A 0 A_GiveInventory("CutterFlag",1)
GSPR A 20
Goto See

See:
GSPR A 0 A_JumpIfInventory("CutterFlag",1,1)
Goto FirstSee
GSPR B 0 A_PlaySoundEx("misc/dozer","Body")
GSPR B 1 A_Chase
GSPR BB 1 A_ChangeVelocity(4.125,0,momz,3)
GSPR C 1 A_Chase
GSPR CC 1 A_ChangeVelocity(4.125,0,momz,3)
Loop

Missile:
GSPR B 0 A_Stop
GSPR B 0 A_PlaySoundEx("misc/fakereloadshort","Weapon")
GSPR BCBC 5 A_FaceTarget
GSPR B 0 A_CustomMissile("GiantSpringerSpitterShotFX",25)
GSPR B 0 A_CustomMissile("GiantSpringerSpitterShot",20)
GSPR B 0 Thing_SetTranslation(0,30504) //MISSILEFLASH
GSPR B 2 Bright
GSPR B 0 Thing_SetTranslation(0,30611) //GIANTSPRINGERSPITTERMONSTER
GSPR B 2
GSPR C 4
GSPR C 1 A_SpidRefire
Goto Missile+6

Pain:
GSPR H 0 A_Stop
Pain.WindStorm:
Pain.GravityHold:
Pain.ConcreteShot:
Pain.TornadoBlow:
Pain.BlackHoleBomb:
GSPR H 0 Thing_SetTranslation(0,30611) //GIANTSPRINGERSPITTERMONSTER
GSPR H 6 A_Pain
Goto See

Pain.TimeStopper:
GSPR H 0 A_Stop
GSPR H 0 Thing_SetTranslation(0,30611) //GIANTSPRINGERSPITTERMONSTER
GSPR H 0 A_ChangeFlag("NOPAIN",true)
GSPR "##############################################################################################################################################################################################################################################################################################################################################################" 1 A_SpawnItemEx("TimeStopGFX",random(8,68),0,random(0,96),0,0,0,random(0,359),0,80)
GSPR H 0 A_ChangeFlag("NOPAIN",false)
Goto See

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

Death:
XDeath:
GSPR H 0 A_Stop
GSPR H 0 A_FaceTarget
GSPR H 0 Thing_SetTranslation(0,30611) //GIANTSPRINGERSPITTERMONSTER
GSPR H 2 A_NoBlocking
GSPR H 0 A_PlaySound("monster/explode",CHAN_AUTO,1.0)
GSPR H 0 A_SpawnItemEx("ExplosionEffect2",random(-32,32),random(-32,32),random(8,80))
GSPR HZ 2
GSPR H 0 A_PlaySound("monster/explode",CHAN_AUTO,1.0)
GSPR H 0 A_SpawnItemEx("ExplosionEffect2",random(-32,32),random(-32,32),random(8,80))
GSPR HZ 2
GSPR H 0 A_PlaySound("monster/explode",CHAN_AUTO,1.0)
GSPR H 0 A_SpawnItemEx("ExplosionEffect2",random(-32,32),random(-32,32),random(8,80))
GSPR HZ 2
GSPR H 0 A_PlaySound("monster/explode",CHAN_AUTO,1.0)
GSPR H 0 A_SpawnItemEx("ExplosionEffect2",random(-32,32),random(-32,32),random(8,80))
GSPR HZ 2
GSPR H 0 A_PlaySound("monster/explode",CHAN_AUTO,1.0)
GSPR H 0 A_SpawnItemEx("ExplosionEffect2",random(-32,32),random(-32,32),random(8,80))
GSPR HZ 2
GSPR H 0 A_Scream
GSPR H 0 A_SpawnItemEx("ExplosionEffect1",0,0,32)
GSPR H 0 A_SpawnItemEx("MonsterFakeDeathFX",0,0,32,0,0,0,0,1)
GSPR H 0 A_SpawnItemEx("GiantSpringerSpitter_DeathMarker",0,0,32,0,0,8,0,1)
TNT1 H 0 A_JumpIf(CallACS("Monster_CanDropWeapon"),4)
TNT1 H 0 A_Jump(80,2)
TNT1 H 0 A_JumpIf(True,2)
TNT1 H 0 ACS_NamedExecuteWithResult("Monster_WeaponDrop",4) //Devil Cannon
TNT1 A 33
TNT1 A -1 A_BossDeath
Stop

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

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

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

Actor GiantSpringerSpitterShot
{
Translation "192:192=4:4", "198:198=107:107"
+BRIGHT
PROJECTILE
Radius 13
Height 8
Speed 25
Damage (15)
DamageType "Buster"
SeeSound "weapon/drillfly"
DeathSound "misc/mm10crsh"
Scale 2.5
States
{
Spawn:
GSPR K 1
wait

Death:
HARD E 0 A_SetScale(3.5,3.5)
HARD EDCB 2
stop
}
}

Actor GiantSpringerSpitterShotFX : HardKnuckleFX
{
ReactionTime 1
Speed 20
States
{
Spawn:
TNT1 A 1 NoDelay
TNT1 A 0 A_CountDown
Loop

Death:
HARD EDCB 2
Stop
}
}

Actor GiantSpringerSpitter_Replaced : GiantSpringerSpitter replaces Arachnotron {}