//////////////////////////////////////
//       DARSPIDER (STALKER)        //
//////////////////////////////////////

Actor DarspiderMonster : Stalker 30901
{
//$Category MM8BDM-Monsters (Strife)
//$Title Darspider (Stalker)
//$Sprite D032B8B2
//$Arg0 Spawn on Ceiling
//$Arg0Type 11
//$Arg0Enum { 0 = "Yes"; 1 = "No"; }
Tag "Darspider"
Translation "0:0=0:0", "192:192=248:248", "198:198=0:0", "248:248=248:248"
MONSTER
Species "DarspiderMonster"
BloodType "MonsterRipperProtect_Helper"
//+NOBLOOD
+FLOORCLIP
+DROPOFF
-NOINFIGHTING
+NOVERTICALMELEERANGE
+NOGRAVITY
Health 80
Radius 31
Height 25
Speed 1 // 16
MaxDropOffHeight 32
MinMissileChance 150
PainChance 40
PainChance "WindStorm", 40
PainChance "GravityHold", 40
PainChance "ConcreteShot", 40
PainChance "TornadoBlow", 40
PainChance "BlackHoleBomb", 40
PainChance "TimeStopper", 256
DamageFactor "Dummy", 0.0
SeeSound "item/rushdetect"
PainSound "monster/mm2pain"
DeathSound "monster/death"
ActiveSound "misc/repairing"
Obituary "$OB_STALKER"
Mass 9999
Scale 2.5
States
{
Spawn:
DRSP I 0 NoDelay A_Stop
DRSP I 0 A_TakeInventory("CutterFlag",1)
DRSP I 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
DRSP I 0 A_SpawnItemEx("MonsterHitbox31_25")
DRSP I 0 A_JumpIf(args[1] == 0, "SpawnCeiling")
DRSP I 0 A_ChangeFlag("NOGRAVITY",false)
DRSP I 0 A_ChangeFlag("NOVERTICALMELEERANGE",false)
DRSP I 1 A_StalkerLookInit
Goto Spawn+4

SpawnCeiling:
DRSP A 0 A_ChangeFlag("SPAWNCEILING",true)
Goto SpawnRise

SpawnRise:
DRSP G 2 A_Stop
DRSP I 0 A_ChangeFlag("NOGRAVITY",true)
DRSP I 0 A_ChangeFlag("NOVERTICALMELEERANGE",true)
DRSP I 0 ThrustThingZ(0,10,0,1)
DRSP I 0 A_CheckCeiling("LookCeiling")
DRSP I 1 A_JumpIf(ceilingz-z<34,"LookCeiling")
Goto SpawnRise+3

LookCeiling:
DRSP A 10 A_Look
Loop

LookFloor:
DRSP I 10 A_Look
Loop

FirstSee:
DRSP "#" 0 A_TakeInventory("CutterFlag",1)
DRSP "#" 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
DRSP "#" 0 Thing_SetTranslation(0,30501) //ALLRED
DRSP "#" 2 Bright
DRSP "#" 0 Thing_SetTranslation(0,30901) //DARSPIDERMONSTER
DRSP "#" 0 A_GiveInventory("CutterFlag",1)
Goto See

SuperSee:
See:
DRSP A 0 A_JumpIfInventory("CutterFlag",1,1)
Goto FirstSee
DRSP C 1 A_StalkerChaseDecide
DRSP B 1 A_Chase("Drop","")
DRSP BB 1 A_ChangeVelocity(5.25,0,momz,3)
DRSP B 1 A_Chase("Drop","")
DRSP CC 1 A_ChangeVelocity(5.25,0,momz,3)
DRSP C 1 A_Chase("Drop","")
DRSP CB 1 A_ChangeVelocity(5.25,0,momz,3)
DRSP B 1 A_Chase("Drop","")
DRSP BB 1 A_ChangeVelocity(5.25,0,momz,3)
DRSP C 1 A_Chase("Drop","")
DRSP CC 1 A_ChangeVelocity(5.25,0,momz,3)
DRSP C 0 A_Jump(32,"Drop")
Loop

SeeFloor:
DRSP A 0 A_JumpIfInventory("CutterFlag",1,1)
Goto FirstSee
DRSP D 1 A_Chase
DRSP DD 1 A_ChangeVelocity(5.25,0,momz,3)
DRSP D 1 A_Chase
DRSP EE 1 A_ChangeVelocity(5.25,0,momz,3)
DRSP E 1 A_Chase
DRSP ED 1 A_ChangeVelocity(5.25,0,momz,3)
DRSP D 1 A_Chase
DRSP DD 1 A_ChangeVelocity(5.25,0,momz,3)
DRSP E 1 A_Chase
DRSP EE 1 A_ChangeVelocity(5.25,0,momz,3)
DRSP E 1 A_Chase
DRSP DD 1 A_ChangeVelocity(5.25,0,momz,3)
DRSP D 1 A_Chase
DRSP DE 1 A_ChangeVelocity(5.25,0,momz,3)
DRSP E 1 A_Chase
DRSP EE 1 A_ChangeVelocity(5.25,0,momz,3)
DRSP D 0 A_Jump(64,"Rise")
Loop

Melee:
DRSP C 0 A_Stop
DRSP C 0 A_FaceTarget
DRSP I 1
DRSP I 0 A_PlaySoundEx("item/rushsearchdig","Weapon")
DRSP I 0 Thing_SetTranslation(0,30504) //MISSILEFLASH
DRSP I 2 Bright
DRSP I 0 Thing_SetTranslation(0,30901) //DARSPIDERMONSTER
DRSP G 3
DRSP G 0 A_FaceTarget
DRSP G 0 A_CustomMeleeAttack(15,"weapon/bladeshoot","Silence","Buster")
Goto See

Drop:
DRSP F 0 A_Stop
DRSP F 2
DRSP F 0 A_ChangeFlag("NOGRAVITY",false)
DRSP F 0 A_ChangeFlag("NOVERTICALMELEERANGE",false)
DRSP AAAAAAAAAAAAAAAAAAAAAA 1 A_CheckFloor("SeeFloor")
Goto SeeFloor

Rise:
DRSP G 2 A_Stop
DRSP I 0 A_ChangeFlag("NOGRAVITY",true)
DRSP I 0 A_ChangeFlag("NOVERTICALMELEERANGE",true)
DRSP I 0 ThrustThingZ(0,10,0,1)
DRSP I 0 A_CheckCeiling("See")
DRSP I 1 A_JumpIf(ceilingz-z<34,"See")
Goto Rise+3

Pain:
DRSP H 0 A_Stop
Pain.WindStorm:
Pain.GravityHold:
Pain.ConcreteShot:
Pain.TornadoBlow:
Pain.BlackHoleBomb:
DRSP H 0 Thing_SetTranslation(0,30901) //DARSPIDERMONSTER
DRSP H 1 A_Pain
Goto See

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

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

Death:
XDeath:
DRSP H 0 A_Stop
DRSP H 0 A_FaceTarget
DRSP H 0 Thing_SetTranslation(0,30901) //DARSPIDERMONSTER
DRSP H 2 A_NoBlocking
DRSP H 0 A_Scream
DRSP H 0 A_SpawnItemEx("ExplosionEffect1",0,0,32)
DRSP H 0 A_SpawnItemEx("MonsterFakeDeathFX",0,0,32,0,0,0,0,1)
DRSP H 0 A_SpawnItemEx("DarspiderMonster_DeathMarker",0,0,32,0,0,8,0,1)
DRSP H 0 A_JumpIf(CallACS("Monster_CanDropWeapon"),4)
DRSP H 0 A_Jump(35,2)
DRSP H 0 A_JumpIf(True,2)
DRSP H 0 ACS_NamedExecuteWithResult("Monster_WeaponDrop",1) //Sapper Drill
TNT1 A 50
TNT1 A -1
Stop

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

Actor DarspiderMonster_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)
DRSP JJJJJKKKKKLLLLLMMMMM 1 A_CheckFloor("SpawnFloor")
loop

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

Actor DarspiderMonsterFloor : DarspiderMonster
{
-NOVERTICALMELEERANGE
-NOGRAVITY
States
{
Spawn:
DRSP I 0 NoDelay A_Stop
DRSP I 0 A_TakeInventory("CutterFlag",1)
DRSP I 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
DRSP I 0 A_SpawnItemEx("MonsterHitbox31_25")
LookFloor:
DRSP I 10 A_Look
Loop

FirstSee:
DRSP I 0 A_TakeInventory("CutterFlag",1)
DRSP I 0 ACS_NamedExecuteAlways("Monster_PassivePain",0)
DRSP I 0 Thing_SetTranslation(0,30501) //ALLRED
DRSP I 2 Bright
DRSP I 0 Thing_SetTranslation(0,30901) //DARSPIDERMONSTER
DRSP I 0 A_GiveInventory("CutterFlag",1)
Goto See

See:
DRSP I 0 A_JumpIfInventory("CutterFlag",1,1)
Goto FirstSee
DRSP I 1 A_Jump(256,"SuperSee")
Wait
}
}

Actor DarspiderMonster_Replaced : DarspiderMonster replaces Stalker {}