
// SPIDER OVERMIND
//
ACTOR RLCyberneticSpiderMastermind : RLSpiderMastermindBase 16551
{
  Health 7000
  Radius 90
  Mass 10000
  
  PainThreshold 200
  MinMissileChance 10
  
  DamageFactor "Melee", 2.0
  DamageFactor "Holy", 2
  DamageFactor "Unholy", 0.25
  
  SeeSound "spiderovermind/whisper"
  ActiveSound "spiderovermind/whisper"
  PainSound ""
  
  +QUICKTORETALIATE
  
  Obituary "%o was not prepared for the onslaught of the Spider Overmind."
  Tag "Spider Overmind"
    //$category "MP Technophobia"
  
	// Guncaster compatibility
	DropItem "TreasureChest"
	DropItem "TreasureChest"
  States
  {
  Spawn:
    TNT1 A 0 A_StopSound(7)
    TNT1 A 0 A_JumpIfInventory("DRPGGreenAuraToken", 1, 2)
    TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
    TNT1 A 0 A_JumpIf(CallACS("DRPGCheck"), "SpawnAuraActivation")
  SpawnAuraCheckDone:
    CSPM A Random(9,10) A_Look
    TNT1 A 0 A_CheckSight(3)
    TNT1 A 0 A_Jump(6, 1)
    Goto SpawnAuraCheckDone
    TNT1 A 0 A_PlaySound("spiderovermind/whisper", 7, 1, 0, 0.2)
    TNT1 A 0
    Goto SpawnAuraCheckDone
	
  ClearTargetWindDown:
    TNT1 A 0 A_ClearTarget
    TNT1 A 0 A_LookEx (LOF_NOSEESOUND, 0, 0, 0, 360, "See")
    Goto MissileEnd
	
  See:
    TNT1 A 0 A_StopSound(7)
    TNT1 A 0 A_JumpIfInventory("DRPGGreenAuraToken", 1, 2)
    TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
    TNT1 A 0 A_Jump(64, 2)
    TNT1 A 0 A_JumpIfInventory("DRPGShadowAuraToken", 1, "GenerateHallucinations")
  GenerateHallucinationsDone:
    TNT1 A 0 A_Jump(254, 2)
    TNT1 A 0 A_PlaySound("spiderovermind/whisper", 7, 0.75, 0, 0.2)
    TNT1 A 0 A_PlaySound("spider/walk", 5, 1, 0, 0.7)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(1, 12, 0, 384, "")
    CSPM AABB 3 A_Chase ("", "Missile")
    TNT1 A 0 A_Jump(254, 2)
    TNT1 A 0 A_PlaySound("spiderovermind/whisper", 7, 0.75, 0, 0.2)
    TNT1 A 0 A_PlaySound("spider/walk", 5, 1, 0, 0.7)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(1, 12, 0, 384, "")
    CSPM CCDD 3 A_Chase ("", "Missile")
    TNT1 A 0 A_Jump(254, 2)
    TNT1 A 0 A_PlaySound("spiderovermind/whisper", 7, 0.75, 0, 0.2)
    TNT1 A 0 A_PlaySound("spider/walk", 5, 1, 0, 0.7)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(1, 12, 0, 384, "")
    CSPM EEFF 3 A_Chase ("", "Missile")
    Goto See
  Repositioning:
    TNT1 A 0 A_StopSound(7)
    TNT1 A 0 A_JumpIfInventory("DRPGGreenAuraToken", 1, 2)
    TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
    TNT1 A 0 A_Jump(64, 2)
    TNT1 A 0 A_JumpIfInventory("DRPGShadowAuraToken", 1, "GenerateHallucinations2")
  GenerateHallucinationsDone2:
    TNT1 A 0 A_Jump(254, 2)
    TNT1 A 0 A_PlaySound("spiderovermind/whisper", 7, 0.75, 0, 0.2)
    TNT1 A 0 A_PlaySound("spider/walk", 5, 1, 0, 0.7)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(1, 12, 0, 384, "")
    CSPM AA 3 A_Wander
    TNT1 A 0 A_Jump (64, 2)
    TNT1 A 0 A_Chase ("", "Missile", CHF_DONTMOVE)
    CSPM BB 3 A_Wander
    TNT1 A 0 A_Jump(254, 2)
    TNT1 A 0 A_PlaySound("spiderovermind/whisper", 7, 0.75, 0, 0.2)
    TNT1 A 0 A_PlaySound("spider/walk", 5, 1, 0, 0.7)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(1, 12, 0, 384, "")
    CSPM CC 3 A_Wander
    TNT1 A 0 A_Jump (64, 2)
    TNT1 A 0 A_Chase ("", "Missile", CHF_DONTMOVE)
    CSPM DD 3 A_Wander
    TNT1 A 0 A_Jump(254, 2)
    TNT1 A 0 A_PlaySound("spiderovermind/whisper", 7, 0.75, 0, 0.2)
    TNT1 A 0 A_PlaySound("spider/walk", 5, 1, 0, 0.7)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(1, 12, 0, 384, "")
    CSPM EE 3 A_Wander
    TNT1 A 0 A_Jump (64, 2)
    TNT1 A 0 A_Chase ("", "Missile", CHF_DONTMOVE)
    CSPM FF 3 A_Wander
    TNT1 A 0 A_Jump (32, 1)
    Loop
    TNT1 A 0
    Goto Missile
	
  Overwatch:
    TNT1 A 0 A_JumpIfInventory("DRPGGreenAuraToken", 1, 2)
    TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
    TNT1 A 0 A_PlaySound("rlmonsters/chaingunspin", 7, 1, 1, 1.2)
    TNT1 A 0 A_Jump(254, 2)
    TNT1 A 0 A_PlaySound("spiderovermind/whisper", 7, 0.75, 0, 0.2)
    TNT1 A 0 A_Chase ("", "MissileRestartFire", CHF_DONTMOVE)
    CSPM TU 1 A_FaceTarget
    TNT1 A 0 A_Jump(254, 2)
    TNT1 A 0 A_PlaySound("spiderovermind/whisper", 7, 0.75, 0, 0.2)
    TNT1 A 0 A_Chase ("", "MissileRestartFire", CHF_DONTMOVE)
    CSPM TU 1 A_FaceTarget
    TNT1 A 0 A_Jump (8, "MissileEnd")
    Goto Overwatch
  MissileRestartFire:
    CSPM TUT 1 A_FaceTarget
    TNT1 A 0 A_Jump (256, 4,8,12,16,20,24)
    CSPM TUTUTUTUTUTUTUTUTUTUTUTU 1 A_FaceTarget
    TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
    Goto RepeatFriendlyCheck
	
  GETOUTHEREANDTASTETHEPALSMA:
    TNT1 A 0 A_Jump (200, 2)
    TNT1 A 0 A_JumpIfTargetInLOS (1, 0, JLOSF_DEADNOJUMP)
	Goto See
    TNT1 A 0 A_FaceTarget (1,1)
    TNT1 A 0 A_Jump(254, 2)
    TNT1 A 0 A_PlaySound("spiderovermind/whisper", 7, 0.75, 0, 0.2)
    TNT1 A 0 A_JumpIfInventory ("RLSpiderMastermindStateCounter", 1, "FITEMEEEEEEEEEEEE")
    TNT1 A 0 A_GiveInventory ("RLSpiderMastermindStateCounter", 1)
    CSPM G 1 Bright A_CustomMissile("RLSpiderOvermindPlasma", 40, 3, frandom(-26,26), CMF_OFFSETPITCH, frandom(-12,12))
    TNT1 A 0 A_Jump(3, "ComeonManIJustWannaShootYou")
    TNT1 A 0 A_JumpIfTargetInLOS ("RepeatFriendlyCheck")
    Goto GETOUTHEREANDTASTETHEPALSMA
  FITEMEEEEEEEEEEEE:
    TNT1 A 0 A_TakeInventory ("RLSpiderMastermindStateCounter", 1)
    CSPM H 1 Bright A_CustomMissile("RLSpiderOvermindPlasma", 40, 3, frandom(-26,26), CMF_OFFSETPITCH, frandom(-12,12))
    TNT1 A 0 A_Jump(3, "ComeonManIJustWannaShootYou")
    TNT1 A 0 A_JumpIfTargetInLOS ("RepeatFriendlyCheck")
    Goto GETOUTHEREANDTASTETHEPALSMA
  ComeonManIJustWannaShootYou:
    TNT1 A 0 A_JumpIfInventory("DRPGGreenAuraToken", 1, 2)
    TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
    TNT1 A 0 A_PlaySound("rlmonsters/chaingunspin", 7, 1, 1, 1.2)
    TNT1 A 0 A_Jump(254, 2)
    TNT1 A 0 A_PlaySound("spiderovermind/whisper", 7, 0.75, 0, 0.2)
    TNT1 A 0 A_Chase ("", "MissileRestartFire", CHF_DONTMOVE)
    CSPM TU 1 A_FaceTarget (1,1)
    TNT1 A 0 A_Jump(254, 2)
    TNT1 A 0 A_PlaySound("spiderovermind/whisper", 7, 0.75, 0, 0.2)
    TNT1 A 0 A_Chase ("", "MissileRestartFire", CHF_DONTMOVE)
    CSPM TU 1 A_FaceTarget (1,1)
    TNT1 A 0 A_Jump (40, "GETOUTHEREANDTASTETHEPALSMA")
    TNT1 A 0 A_MonsterRefire (0, "ComeonManIJustWannaShootYou")
    Goto See
	
  MissileProper:
    TNT1 A 0 A_CheckFlag("FRIENDLY", "MissileWindup") // Friendly Overminds will not make enemies explode with their thonking
    TNT1 A 0 A_JumpIfInventory("PowerRLSpiderOvermindStahpPlsToken", 1, "MissileWindup")// I forgot this and it broke everything aaaaaa
    TNT1 A 0 A_JumpIfInTargetInventory("PowerInvulnerable", 1, "PsychoCrusher")
    TNT1 A 0 A_JumpIfInTargetInventory("RLPlasmaShieldArmorToken", 1, "PsychoCrusher")
    TNT1 A 0 A_JumpIfInTargetInventory("PowerRLReactiveShieldSystemPlasma", 1, "PsychoCrusher")
    TNT1 A 0 A_JumpIfCloser (1024, "MissileWindup")
    TNT1 A 0 A_Jump(health/50+100, "MissileWindup")
    TNT1 A 0 A_JumpIfInTargetInventory("RLNoMoreMindGamesMisterBond", 1, "MissileWindup")
    Goto PsychoCrusher
  MissileWindup:
    CSPM U 8 A_FaceTarget
    TNT1 A 0 A_PlaySound("rlmonsters/chaingunwindup", 7)
    CSPM TU 4 A_FaceTarget
    CSPM TUTU 2 A_FaceTarget
    CSPM TUTUTUTU 1 A_FaceTarget
    TNT1 A 0 A_MonsterRefire(0, "Overwatch")
    TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
  MissileFire:
  RepeatProper:
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_Jump(254, 2)
    TNT1 A 0 A_PlaySound("spiderovermind/whisper", 7, 0.75, 0, 0.2)
    TNT1 A 0 A_JumpIfInventory ("RLSpiderMastermindStateCounter", 1, "MissileAlt")
    TNT1 A 0 A_GiveInventory ("RLSpiderMastermindStateCounter", 1)
    TNT1 A 0 A_CheckFlag ("FRIENDLY", "SummonMissile") // Friendly monsters do not harm you
    CSPM G 1 Bright A_CustomMissile("RLSpiderOvermindPlasma", 40, 3, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
    TNT1 A 0 A_MonsterRefire(0, "GETOUTHEREANDTASTETHEPALSMA")
    TNT1 A 0 A_Jump (250, 5)
    TNT1 A 0 A_JumpIfCloser (1024, 4)
    TNT1 A 0 A_JumpIfInventory("PowerRLSpiderOvermindStahpPlsToken", 1, 3)
    TNT1 A 0 A_CheckFlag("FRIENDLY", 2) // Friendly Overminds will not make enemies explode with their thonking
    TNT1 A 0 A_JumpIfInTargetInventory("RLNoMoreMindGamesMisterBond", 1, 1)
    Goto MissileEndMindTime
    TNT1 A 0
    Goto RepeatFriendlyCheck
  MissileAlt:
    TNT1 A 0 A_TakeInventory ("RLSpiderMastermindStateCounter", 1)
    TNT1 A 0 A_CheckFlag ("FRIENDLY", "SummonMissileAlt") // Friendly monsters do not harm you
    TNT1 A 0 A_Jump (128, 3)
    CSPM H 1 Bright A_CustomMissile("RLSpiderOvermindPlasma", 40, 3, frandom(-1,1), CMF_OFFSETPITCH, frandom(-1,1))
    TNT1 A 0 A_Jump (256, 2)
    CSPM H 1 Bright A_CustomMissile("RLSpiderOvermindPlasma", 40, 3, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
    TNT1 A 0 A_MonsterRefire(0, "GETOUTHEREANDTASTETHEPALSMA")
    TNT1 A 0 A_Jump (250, 5)
    TNT1 A 0 A_JumpIfCloser (1024, 4)
    TNT1 A 0 A_JumpIfInventory("PowerRLSpiderOvermindStahpPlsToken", 1, 3)
    TNT1 A 0 A_CheckFlag("FRIENDLY", 2) // Friendly Overminds will not make enemies explode with their thonking
    TNT1 A 0 A_JumpIfInTargetInventory("RLNoMoreMindGamesMisterBond", 1, 1)
    Goto MissileEndMindTime
    TNT1 A 0
    Goto RepeatFriendlyCheck
  MissileEnd:
    TNT1 A 0 A_JumpIfInventory("DRPGGreenAuraToken", 1, 2)
    TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
    TNT1 A 0 A_PlaySound("rlmonsters/chaingunwinddown", 7)
    CSPM TUTUTUTU 1
    CSPM TUTU 2
    CSPM TU 4
    TNT1 A 0 A_Jump (220, "Repositioning")
    Goto See
  MissileEndMindTime:
    TNT1 A 0 A_JumpIfInventory("DRPGGreenAuraToken", 1, 2)
    TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
    TNT1 A 0 A_PlaySound("rlmonsters/chaingunwinddown", 7)
    CSPM TUTUTUTU 1
    CSPM TUTU 2
    CSPM TU 4
    TNT1 A 0 A_JumpIfInventory("PowerRLSpiderOvermindStahpPlsToken", 1, "Repositioning")
    TNT1 A 0 A_CheckFlag("FRIENDLY", "Repositioning") // Friendly Overminds will not make enemies explode with their thonking
    Goto Melee
	
  PsychoCrusher:
  MeleeProper:
    TNT1 A 0 A_CheckFlag("FRIENDLY", "Repositioning") // Friendly Overminds will not make enemies explode with their thonking
    TNT1 A 0 A_JumpIfInventory("PowerRLSpiderOvermindStahpPlsToken", 1, "Repositioning")// I forgot this and it broke everything aaaaaa
    CSPM U 12 A_FaceTarget
    TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
    TNT1 A 0 A_MonsterRefire(0, "Missile")
    TNT1 A 0 A_ChangeFlag("QUICKTORETALIATE", 0)
    TNT1 A 0 A_ChangeFlag("NOTARGETSWITCH", 1)
    TNT1 A 0 A_CustomMissile("RLSpiderOvermindMindAttack")
  PsychoCrusherLoop:
    TNT1 A 0 A_MonsterRefire(0, "PsychoFinisher")
    TNT1 A 0 A_Jump(240, 2)
    TNT1 A 0 A_PlaySound("spiderovermind/whisper", 7, 0.75, 0, 0.2)
    CSPM Z 1 Bright A_FaceTarget
    CSPM X 1 Bright A_FaceTarget
    TNT1 A 0 A_JumpIfInventory("PowerRLSpiderOvermindStahpPlsToken", 1, "PsychoFinisher")// This is here becuase fuck you los checks on low walls
    TNT1 A 0 A_JumpIfInventory("PowerRLSpiderOvermindMindCheckerToken", 1, 1)// This is here because fuck you mysteriously breaking psychicness
	Goto PsychoRestore
    TNT1 A 0 A_JumpIfInTargetInventory("RLAngelicAttireSetBonusActive", 1, "PsychoImmunity")// This is here because fuck you angels
    Goto PsychoCrusherLoop
  PsychoRestore:
    TNT1 A 0 A_CustomMissile("RLSpiderOvermindMindAttack")
    Goto PsychoCrusherLoop
  PsychoImmunity:
    TNT1 A 0 A_GiveInventory("RLNoMoreMindGamesMisterBond", 1)
    TNT1 A 0 A_Jump(20, 1, "PsychoFinisher")
    Goto PsychoCrusherLoop
  PsychoFinisher:
    TNT1 A 0 A_JumpIfInventory("RLOvermindMindRapeSuccessful", 1, "YUMYUMTHANKSFORTHEMIND")// Overminds are fun
    CSPM U 4
    TNT1 A 0 A_ChangeFlag("QUICKTORETALIATE", 1)
    TNT1 A 0 A_ChangeFlag("NOTARGETSWITCH", 0)
    TNT1 A 0 A_JumpIfInventory("DRPGGreenAuraToken", 1, 2)
    TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
    CSPM U 20
    Goto See
  YUMYUMTHANKSFORTHEMIND:
    TNT1 A 0 A_GiveInventory("RLPlayerCorruptedBonus", 1)
	Goto PsychoFinisher+1
	
  SummonMissile:
    CSPM G 1 Bright A_CustomMissile("RLSummonSpiderOvermindPlasma", 40, 3, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
    TNT1 A 0 A_MonsterRefire(100, "GETOUTHEREANDTASTETHEPALSMA")
    Goto RepeatFriendlyCheck
  SummonMissileAlt:
    TNT1 A 0 A_Jump (128, 3)
    CSPM H 1 Bright A_CustomMissile("RLSummonSpiderOvermindPlasma", 40, 3, frandom(-1,1), CMF_OFFSETPITCH, frandom(-1,1))
    TNT1 A 0 A_Jump (256, 2)
    CSPM H 1 Bright A_CustomMissile("RLSummonSpiderOvermindPlasma", 40, 3, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
    TNT1 A 0 A_MonsterRefire(100, "GETOUTHEREANDTASTETHEPALSMA")
    Goto RepeatFriendlyCheck
	
  PainMain:
    TNT1 A 0 A_StopSound(7)
    TNT1 A 0 ACS_NamedExecuteAlways("DRLA_BossPainCheck", 0)
    CSPM I 3
    CSPM I 3 A_Pain
    Goto See
	
  DeathMain:
    TNT1 A 0 A_GiveInventory ("RLCyberneticSpiderMastermindKillIncrementer", 1, AAPTR_PLAYER1) // Used for tallying total kills and bestiary info
    TNT1 A 0 A_StopSound(7)
    CSPM J 20 A_Scream
    CSPM K 10 A_NoBlocking
    CSPM L 10
    TNT1 A 0 A_SpawnItemEx ("RLGibber", 0,0,0, VelX,VelY,VelZ, 0, SXF_ABSOLUTEMOMENTUM | SXF_USEBLOODCOLOR | SXF_NOCHECKPOSITION)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(7, 30, 0, 1536, "")
    CSPM MNO 10 Bright
    TNT1 A 0 A_SpawnItemEx ("RLGibber", 0,0,0, VelX,VelY,VelZ, 0, SXF_ABSOLUTEMOMENTUM | SXF_USEBLOODCOLOR | SXF_NOCHECKPOSITION)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(1, 20, 0, 768, "")
    CSPM PQ 10 Bright
    CSPM R 10
    CSPM S 30
    CSPM S 0 A_BossDeath
    "####" "#" 0 A_Jump(256, "DeathEnd")
    Goto DeathEnd
  DeathFrame:
    CSPM S 0 A_BossDeath
    "####" "#" 0 A_Jump(256, "DeathEnd")
    Goto DeathEnd
	
	//Ice
  GenericFreezeDeath:
	"####" "#" 0 A_GiveInventory ("RLCyberneticSpiderMastermindKillIncrementer", 1, AAPTR_PLAYER1) // Used for tallying total kills and bestiary info
    "####" "#" 0 A_Jump(256, "GenericFreezeMana")
    Goto GenericFreezeMana
	
  CrushDRLA:
    TNT1 A 30 A_SpawnItemEx("RLCrushedLarge",0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION)
    "####" "#" 0 A_BossDeath
    "####" "#" 0 A_Jump(256, "CrushEnd")
    Goto CrushEnd
//==============================================================================
//					--	DOOMRL ARSENAL STUFF  --
//==============================================================================
  ArsenalMissileCheck:
    "####" "#" 0 A_JumpIfInventory("DRPGShadowAuraToken", 1, "ShadowAuraMissileAttack") // DRPG Shadow Aura
    "####" "#" 0 A_JumpIfInventory("LDLegendaryMonsterTransformed", 1, "LegendaryMissileAttack") // LegenDoom legendary monster
    "####" "#" 0 A_Jump(256, "MissileProper")
	Goto MissileProper
  ArsenalRepeatCheck:
    "####" "#" 0 A_JumpIfInventory("DRPGShadowAuraToken", 1, "ShadowAuraRepeatAttack") // DRPG Shadow Aura
    "####" "#" 0 A_JumpIfInventory("LDLegendaryMonsterTransformed", 1, "LegendaryRepeatAttack") // LegenDoom legendary monster
    "####" "#" 0 A_Jump(256, "RepeatProper")
	Goto RepeatProper
  SpawnAuraActivation:
    "####" "#" 0 ACS_NamedExecuteAlways("GetAuraTokens", 0)
    Goto SpawnAuraCheckDone
	
  Pain.RigelBlast:
    TNT1 A 0 A_PlaySound("weapons/dn2gunhit", CHAN_BODY)
    D2F1 S 2 Bright
    Goto See
  Pain.NeuralStun:
    D2F1 S 2 Bright
    Goto See
  Pain.CyberDisruptor:
    TNT1 A 0 A_StopSound(7)
    Goto Pain.LightningBlue
	
  Death.NeuralStun:
    TNT1 A 0
    Goto Death
  XDeath.RigelBlast:
  Death.RigelBlast:
    TNT1 A 0 A_GiveInventory ("RLDuke2Score", 10000, AAPTR_TARGET)
    TNT1 A 0 A_GiveInventory ("RLCyberneticSpiderMastermindKillIncrementer", 1, AAPTR_PLAYER1) // Used for tallying total kills and bestiary info
    TNT1 A 0 A_PlaySound("weapons/dn2gunbigexplosion", 7, 1, 0, 0.3)
    TNT1 A 0 A_NoBlocking
    TNT1 A 0 A_SetUserVar("user_dn2bossexplosiontimer", 80)
  DN2BossExplosionLoop:
    TNT1 A 0 A_JumpIf (user_dn2bossexplosiontimer <= 0, "DN2BossExplosionFinish")
    TNT1 A 0 A_Jump(190, 2)
    TNT1 A 0 A_RadiusGive ("RLDN2BossFlash", 768, RGF_PLAYERS, 1)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(4, 2, 0, 768, "")
    CSPM I 1 Bright
    TNT1 A 0 A_Jump(150, 2)
    TNT1 A 0 A_PlaySound("weapons/dn2gunbigexplosion", 7, 1, 0, 0.3)
    TNT1 A 0 A_Jump(100, 2)
    TNT1 A 0 A_SpawnItemEx ("RLDuke2RandomExplosion", frandom(-84,84),frandom(-84,84),frandom(4,90), 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1
    TNT1 A 0 A_SpawnItemEx ("RLDuke2RandomExplosion", frandom(-84,84),frandom(-84,84),frandom(4,90), 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_SetUserVar("user_dn2bossexplosiontimer", user_dn2bossexplosiontimer - 1)
    Goto DN2BossExplosionLoop
  DN2BossExplosionFinish:
    TNT1 A 0 A_RadiusGive ("RLDN2BossFlash2", 1560, RGF_PLAYERS, 1)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(9, 15, 0, 1560, "")
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_PlaySound("weapons/dn2gunbigexplosion", 7, 1, 0, 0)
//    TNT1 A 0 A_SpawnItemEx ("RLDuke2BossExplosion", 0,0,48, 0,0,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_SpawnItemEx ("RLDuke2ShockwaveLeft", 0,12,48, 0,14,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_SpawnItemEx ("RLDuke2ShockwaveRight", 0,-12,48, 0,-14,0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 35
    TNT1 A 0 A_BossDeath
	Stop
	
//==============================================================================
//					--	Special Monster Attacks  --
//==============================================================================
// AAAAAAAAAAAAAAAA THE DRUNK MISSILES AAAAAAAAAA
  ShadowAuraMissileAttack:
    TNT1 A 0 A_JumpIfInventory("PowerRLSpiderOvermindStahpPlsToken", 1, "ShadowAuraMissileWindUp")// I forgot this and it broke everything aaaaaa
    TNT1 A 0 A_JumpIfInTargetInventory("PowerInvulnerable", 1, "PsychoCrusher")
    TNT1 A 0 A_JumpIfInTargetInventory("RLInquisitorsSetBonusActive", 1, "PsychoCrusher")
    TNT1 A 0 A_JumpIfInTargetInventory("PowerRLReactiveShieldSystemFire", 1, "PsychoCrusher")
    TNT1 A 0 A_JumpIfCloser (1024, "ShadowAuraMissileWindUp")
    TNT1 A 0 A_Jump(health/50+100, "ShadowAuraMissileWindUp")
    TNT1 A 0 A_JumpIfInTargetInventory("RLNoMoreMindGamesMisterBond", 1, "ShadowAuraMissileWindUp")
    Goto PsychoCrusher
  ShadowAuraMissileWindUp:
    CSPM U 8 A_FaceTarget
    TNT1 A 0 A_PlaySound("rlmonsters/chaingunwindup", 7)
    CSPM TU 4 A_FaceTarget
    CSPM TUTU 2 A_FaceTarget
    CSPM TUTUTUTU 1 A_FaceTarget
    TNT1 A 0 A_MonsterRefire(0, "Overwatch")
    TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
  ShadowAuraRepeatAttack:
    TNT1 A 0 A_Jump(254, 2)
    TNT1 A 0 A_PlaySound("spiderovermind/whisper", 7, 0.75, 0, 0.2)
    TNT1 A 0 A_JumpIfInventory ("RLSpiderMastermindStateCounter", 1, "ShadowAuraMissileAttackAlt")
    TNT1 A 0 A_GiveInventory ("RLSpiderMastermindStateCounter", 1)
    CSPM G 2 Bright A_CustomMissile("RLSpiderOvermindShadowRocket", 40, 3, frandom(-18,18), CMF_OFFSETPITCH, frandom(-9,9))
    TNT1 A 0 A_MonsterRefire(164, "Overwatch")
    TNT1 A 0 A_Jump (250, 5)
    TNT1 A 0 A_JumpIfCloser (1024, 4)
    TNT1 A 0 A_JumpIfInventory("PowerRLSpiderOvermindStahpPlsToken", 1, 3)
    TNT1 A 0 A_JumpIfInTargetInventory("PowerInvulnerable", 1, 2)
    TNT1 A 0 A_JumpIfInTargetInventory("RLNoMoreMindGamesMisterBond", 1, 1)
    Goto MissileEndMindTime
    TNT1 A 0
    Goto RepeatFriendlyCheck
  ShadowAuraMissileAttackAlt:
    TNT1 A 0 A_TakeInventory ("RLSpiderMastermindStateCounter", 1)
    CSPM H 2 Bright A_CustomMissile("RLSpiderOvermindShadowRocket", 40, 3, frandom(-10,10), CMF_OFFSETPITCH, frandom(-6,6))
    TNT1 A 0 A_MonsterRefire(164, "Overwatch")
    TNT1 A 0 A_Jump (250, 5)
    TNT1 A 0 A_JumpIfCloser (1024, 4)
    TNT1 A 0 A_JumpIfInventory("PowerRLSpiderOvermindStahpPlsToken", 1, 3)
    TNT1 A 0 A_JumpIfInTargetInventory("PowerInvulnerable", 1, 2)
    TNT1 A 0 A_JumpIfInTargetInventory("RLNoMoreMindGamesMisterBond", 1, 1)
    Goto MissileEndMindTime
    TNT1 A 0
    Goto RepeatFriendlyCheck

//==============================================================================
// Spawn fake credits everywhere.
  GenerateHallucinations:
    TNT1 A 0 A_JumpIfInventory("DRPGShadowAuraToken", 1, 2)
    TNT1 A 0 A_CustomMissile("RLFakeCreditsSpawner")
    Goto GenerateHallucinationsDone
    TNT1 A 0 A_CustomMissile("RLFakeShadowCreditsSpawner")
    Goto GenerateHallucinationsDone
  GenerateHallucinations2:
    TNT1 A 0 A_JumpIfInventory("DRPGShadowAuraToken", 1, 2)
    TNT1 A 0 A_CustomMissile("RLFakeCreditsSpawner")
    Goto GenerateHallucinationsDone2
    TNT1 A 0 A_CustomMissile("RLFakeShadowCreditsSpawner")
    Goto GenerateHallucinationsDone2
	
//==============================================================================
//					--	Final Doomer Compatibility Stuff  --
//==============================================================================
  DeathXSparkFrame:
    "####" "#" 0 A_JumpIfInTargetInventory("Mana",0,2)
    "####" "#" 0 A_DropItem("MajorManaPod",-1,54)
    CSPM I 0 A_BossDeath
    "####" "#" 0 A_Jump(256, "DeathXSpark")
	Goto DeathXSpark
	
//==============================================================================
//					--	Guncaster Compatibility Stuff  --
//==============================================================================
	MidasFrame1:
		CSPM I 0 A_SpawnItemEx("Midas_Statue_Mastermind", 0,0,0, 0,0,0, 0,SXF_TRANSFERPOINTERS|SXF_TRANSFERSPRITEFRAME)
		TNT1 A 0 A_JumpIf(1, "DestroyedEnd")
		Goto DestroyedEnd
	MidasFrame2:
		CSPM I 0 A_SpawnItemEx("Midas_Statue_Mastermind", 0,0,0, frandom(-10.0,-12.0),0,frandom(1.0,3.0), 0,SXF_TRANSFERPOINTERS|SXF_SETMASTER|SXF_TRANSFERSPRITEFRAME)
		TNT1 A 10 A_KillChildren
		TNT1 A 0 A_JumpIf(1, "DestroyedEnd")
		Goto DestroyedEnd
	MidasFrame3:
		CSPM I 0 A_SpawnItemEx("Midas_Statue_Mastermind", 0,0,0, frandom(-15.0,-20.0),0,frandom(10.0,15.0), 0,SXF_TRANSFERPOINTERS|SXF_SETMASTER|SXF_TRANSFERSPRITEFRAME)
		TNT1 A 10 A_KillChildren
		TNT1 A 0 A_JumpIf(1, "DestroyedEnd")
		Goto DestroyedEnd
		
	//Gumpop
	Death.Acid:
		CSPM I 1 A_ChangeFlag("SOLID",0)
		"####" "#" 1 A_Playsound("Gumpop/Expand",5)
		"####" "###################################" 1 A_SetScale(ScaleX+frandom(0.01,0.025))
		"####" "#" 1 A_Playsound("Gumpop/Pop",5)
		"####" "#" 0 A_Jump(256,"XDeathMain")
		Goto XDeathMain
		
	//Thunderstruck
	Pain.Lightning:
		"####" "#" 0 A_Jump(164,1)
		Goto Pain
		CSPM I 0 A_ChangeFlag("NOPAIN",1)
		"####" "#" 0 A_SetUserVar("User_LightningLock", User_LightningLock + 10)
		"####" "#" 0 A_Jump(256,"LightningLock")
		Goto LightningLock
		
	//Cauterizer
	Pain.LightningBlue:
		"####" "#" 0 A_Jump(48,1)
		Goto Pain
		CSPM I 0 A_ChangeFlag("NOPAIN",1)
		"####" "#" 0 A_SetUserVar("User_LightningLock", User_LightningLock + 10)
		"####" "#" 0 A_Jump(256,"BlueLightningLock")
		Goto BlueLightningLock
  }
}

ACTOR RLSpiderOvermindPlasma : FastProjectile
{
    Radius 6
    Height 6
    Speed 60
    Damage (5 * random(4,6))
	DamageType "Plasma"
//    Decal "PlasmaScorch"
//	Species "RLSpidermind"
    RenderStyle Add
    Alpha 0.95
    Scale 0.15
    Projectile
    +MTHRUSPECIES
    +THRUGHOST
	+SEEKERMISSILE
    SeeSound ""
    DeathSound ""
    States
    {
    Spawn:
        TNT1 A 0
		TNT1 A 0 A_PlaySound ("spiderovermind/plasma", 7, 1, 0, 0.6)
    SpawnLoop:
        TNT1 A 1
		TNT1 A 0 A_SpawnItemEx("RLSpiderOvermindPlasmaTrail",(0.01*momx)/-35.0, -(0.01*momy)/-35.0, 2+(0.01*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx("RLSpiderOvermindPlasmaTrail2",(1*momx)/-35.0, -(1*momy)/-35.0, 2+(1*momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx("RLSpiderOvermindPlasmaTrail3", (2 *momx)/-35.0, -(2 *momy)/-35.0, 2+(2 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx("RLSpiderOvermindPlasmaTrail4",(3 *momx)/-35.0, -(3 *momy)/-35.0, 2+(3 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx("RLSpiderOvermindPlasmaTrail5", (4 *momx)/-35.0, -(4 *momy)/-35.0, 2+(4 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx("RLSpiderOvermindPlasmaTrail6",(5 *momx)/-35.0, -(5 *momy)/-35.0, 2+(5 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx("RLSpiderOvermindPlasmaTrail7", (6 *momx)/-35.0, -(6 *momy)/-35.0, 2+(6 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx("RLSpiderOvermindPlasmaTrail8",(7 *momx)/-35.0, -(7 *momy)/-35.0, 2+(7 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx("RLSpiderOvermindPlasmaTrail9", (8 *momx)/-35.0, -(8 *momy)/-35.0, 2+(8 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx("RLSpiderOvermindPlasmaTrail10",(9 *momx)/-35.0, -(9 *momy)/-35.0, 2+(9 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx("RLSpiderOvermindPlasmaTrail11", (10 *momx)/-35.0, -(10 *momy)/-35.0, 2+(10 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx("RLSpiderOvermindPlasmaTrail12",(11 *momx)/-35.0, -(11 *momy)/-35.0, 2+(11 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx("RLSpiderOvermindPlasmaTrail13", (12 *momx)/-35.0, -(12 *momy)/-35.0, 2+(12 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx("RLSpiderOvermindPlasmaTrail14",(13 *momx)/-35.0, -(13 *momy)/-35.0, 2+(13 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx("RLSpiderOvermindPlasmaTrail15", (14 *momx)/-35.0, -(14 *momy)/-35.0, 2+(14 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx("RLSpiderOvermindPlasmaTrail16",(15 *momx)/-35.0, -(15 *momy)/-35.0, 2+(15 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION)
        TNT1 A 0 A_SpawnItemEx("RLSpiderOvermindPlasmaTrail17", (16 *momx)/-35.0, -(16 *momy)/-35.0, 2+(16 *momz)/-35.0, 0, 0, 0, 0, SXF_ABSOLUTEANGLE | SXF_NOCHECKPOSITION)
		Loop
    Death:
		TNT1 A 0 A_Jump(25, "TimeToBeAnnoying")
		Goto DeathAnimation
    DeathAnimation:
		TNT1 A 0 A_PlaySound ("spiderovermind/plasmaimpact", 7, 1, 0, 0.8)
        BBB3 ABCDE 4 Bright
        Stop
    TimeToBeAnnoying:
		TNT1 A 0 A_JumpIfTargetInLos ("CanSeeTracer", 0, JLOSF_PROJECTILE, 256)
		TNT1 A 0 A_RearrangePointers (AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_NULL)
		TNT1 A 0 A_SeekerMissile (0,0,SMF_LOOK, 256, 4)
		TNT1 A 0 A_Stop
		TNT1 A 0 A_SeekerMissile (0,0,SMF_LOOK, 256, 4)
		TNT1 A 0 A_Stop
		TNT1 A 0 A_JumpIfTargetInLos ("CanSeeTracer", 0, JLOSF_PROJECTILE, 256)
		Goto DeathAnimation
    TimeToBeAnnoying:
		TNT1 A 0 A_PlaySound ("rlmonsters/laserhit", 7, 1, 0, 1.5)
		TNT1 A 0 A_CustomMissile ("RLSpiderOvermindPlasma2", 0,0,0, CMF_TRACKOWNER, 0, AAPTR_TRACER) // I would be greatly amused if it jumped more than once
        Stop
    }
}

ACTOR RLSpiderOvermindPlasma2 : RLSpiderOvermindPlasma
{
    SeeSound ""
}

ACTOR RLSummonSpiderOvermindPlasma : RLSpiderOvermindPlasma
{
    -MTHRUSPECIES
}

actor RLSpiderOvermindPlasmaTrail
{
    Scale 0.12
    RenderStyle Add
    Alpha 0.95
    +NOINTERACTION
	+NOCLIP
	+NOGRAVITY
    States
    {
    Spawn:
		TNT1 A 0
		TNT1 A 0 A_Jump(256, "SpawnA", "SpawnB", "SpawnC", "SpawnD")
		Goto SpawnA
    SpawnA:
        BBAL E 1 Bright
        stop
    SpawnB:
        BBAL F 1 Bright
        stop
    SpawnC:
        BBAL G 1 Bright
        stop
    SpawnD:
        BBAL H 1 Bright
        stop
    }
}

actor RLSpiderOvermindPlasmaTrail2 : RLSpiderOvermindPlasmaTrail
{
    Alpha 0.92
    Scale 0.12
}

actor RLSpiderOvermindPlasmaTrail3 : RLSpiderOvermindPlasmaTrail
{
    Alpha 0.89
    Scale 0.11
}

actor RLSpiderOvermindPlasmaTrail4 : RLSpiderOvermindPlasmaTrail
{
    Alpha 0.86
    Scale 0.11
}

actor RLSpiderOvermindPlasmaTrail5 : RLSpiderOvermindPlasmaTrail
{
    Alpha 0.83
    Scale 0.10
}

actor RLSpiderOvermindPlasmaTrail6 : RLSpiderOvermindPlasmaTrail
{
    Alpha 0.80
    Scale 0.10
}

actor RLSpiderOvermindPlasmaTrail7 : RLSpiderOvermindPlasmaTrail
{
    Alpha 0.77
    Scale 0.09
}

actor RLSpiderOvermindPlasmaTrail8 : RLSpiderOvermindPlasmaTrail
{
    Alpha 0.74
    Scale 0.09
}

actor RLSpiderOvermindPlasmaTrail9 : RLSpiderOvermindPlasmaTrail
{
    Alpha 0.71
    Scale 0.08
}

actor RLSpiderOvermindPlasmaTrail10 : RLSpiderOvermindPlasmaTrail
{
    Alpha 0.68
    Scale 0.08
}

actor RLSpiderOvermindPlasmaTrail11 : RLSpiderOvermindPlasmaTrail
{
    Alpha 0.65
    Scale 0.07
}

actor RLSpiderOvermindPlasmaTrail12 : RLSpiderOvermindPlasmaTrail
{
    Alpha 0.62
    Scale 0.07
}

actor RLSpiderOvermindPlasmaTrail13 : RLSpiderOvermindPlasmaTrail
{
    Alpha 0.59
    Scale 0.06
}

actor RLSpiderOvermindPlasmaTrail14 : RLSpiderOvermindPlasmaTrail
{
    Alpha 0.56
    Scale 0.06
}

actor RLSpiderOvermindPlasmaTrail15 : RLSpiderOvermindPlasmaTrail
{
    Alpha 0.53
    Scale 0.05
}

actor RLSpiderOvermindPlasmaTrail16 : RLSpiderOvermindPlasmaTrail
{
    Alpha 0.50
    Scale 0.05
}

actor RLSpiderOvermindPlasmaTrail17 : RLSpiderOvermindPlasmaTrail
{
    Alpha 0.47
    Scale 0.04
}

ACTOR RLSpiderOvermindMiniMissile : Rocket
{
  Radius 5
  Height 3
  Scale 0.7
  Speed 40
  Decal "RevenantScorch"
  Damage 5
  Damagetype "Fire"
  PainType "Explosion"
  DeathType "Explosion"
  SeeSound "rlmonsters/minimissile"
  DeathSound ""
  -DEHEXPLOSION
  -ROCKETTRAIL
  +THRUGHOST
  +SEEKERMISSILE
  +NOTIMEFREEZE
  +BLOODSPLATTER
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIfInTargetInventory("DRPGOrangeAuraToken", 1, "OrangeAuraHoming")
    FROX A 1 Bright
    Goto Spawn
  OrangeAuraHoming:
    FROX A 15 Bright
    FROX A 1 Bright A_SeekerMissile(0, 1, SMF_PRECISE | SMF_CURSPEED)
    Goto OrangeAuraHoming+1
  Death:
    TNT1 A 0 A_SetTranslucent (0.95, 1)
    TNT1 A 0 A_Explode (16,32,0)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 3)
    TNT1 A 0 A_Quake(1, 6, 0, 256, "")
    TNT1 A 0 A_Quake(3, 2, 0, 128, "")
    TNT1 A 0 A_PlaySound ("rlmonsters/smallexp", 7, 1, 0, 0.8)
    TNT1 A 0 A_PlaySound("rlmonsters/smallexp", CHAN_ITEM, 0.05, 0, 0.25)
    FREX A 6 Bright
    FREX B 4 Bright
    FREX C 2 Bright
    Stop
  }
}

ACTOR RLSpiderOvermindRocket : Rocket
{
  Decal "Scorch"
  DamageType "Fire"
  PainType "Explosion"
  DeathType "Explosion"
  DeathSound ""
  +THRUGHOST
  +SEEKERMISSILE
  +NOTIMEFREEZE
  +BLOODSPLATTER
  -RANDOMIZE
  -DEHEXPLOSION
  Obituary "%o was blasted to tiny bits by the Spider Overmind's rocket storm."
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIfInTargetInventory("DRPGOrangeAuraToken", 1, "OrangeAuraHoming")
    MISL A 1 Bright
    Goto Spawn
  OrangeAuraHoming:
    MISL A 15 Bright
    MISL A 1 Bright A_SeekerMissile(0, 1, SMF_PRECISE | SMF_CURSPEED)
    Goto OrangeAuraHoming+1
  Death:
    TNT1 A 0 A_SetTranslucent (0.95, 1)
    TNT1 A 0 A_Explode (128,128,0)
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 3)
    TNT1 A 0 A_Quake (1, 8, 0, 1024, "")
    TNT1 A 0 A_Quake (6, 8, 0, 512, "")
    TNT1 A 0 A_PlaySound ("rlmonsters/largeexp", 7, 1, 0, 0.5)
    TNT1 A 0 A_PlaySound("rlmonsters/largeexp", CHAN_ITEM, 0.05, 0, 0.05)
    MEXP A 4 Bright
    MEXP B 4 Bright
    MEXP C 3 Bright
    MEXP D 3 Bright
    MEXP E 2 Bright
    MEXP F 2 Bright
    Stop
  }
}

ACTOR RLSpiderOvermindShadowRocket : RLSpiderOvermindRocket
{
  +MTHRUSPECIES
  +NOTIMEFREEZE
  Obituary "%o was annihilated by a shadow aura Spider Overmind."
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_SeekerMissile(0,1,SMF_PRECISE)
    TNT1 A 0 A_ChangeVelocity (1, frandom(-7, 7), frandom(-2, 2), 1)
    MISL A 1 Bright
    TNT1 A 0 A_ChangeVelocity (1, frandom(-7, 7), frandom(-2, 2), 1)
    MISL A 1 Bright
    TNT1 A 0 A_ChangeVelocity (1, frandom(-7, 7), frandom(-2, 2), 1)
    MISL A 1 Bright
    Loop
  }
}

ACTOR RLSummonSpiderOvermindMiniMissile : RLSpiderOvermindMiniMissile
{
  +MTHRUSPECIES
}

//==============================================================================
//		MINDFUCKERY
//==============================================================================

ACTOR RLSpiderOvermindMindAttack
{
  Radius 5
  Height 5
  Projectile
  +NOGRAVITY
  +NOTELEPORT
  +THRUACTORS
  +NOCLIP
  +PAINLESS
  +PIERCEARMOR
  +NODAMAGETHRUST
  +DONTREFLECT
  +SEEKERMISSILE
  +NOEXPLODEFLOOR
  +FORCERADIUSDMG
  +NOTONAUTOMAP
  BounceType "Hexen"
  DamageType "Mindrape"
  Obituary "%o was corrupted by the Spider Overmind."
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_Warp (AAPTR_TRACER, 1, 0, 20, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
  FiringLoop:
	TNT1 A 0 A_JumpIfInventory ("RLSpiderOvermindHealthDrainCounter", 666, "Finish666", AAPTR_TRACER)
    TNT1 A 0 A_JumpIfInventory("RLAngelicAttireSetBonusActive", 1, "Immune", AAPTR_TRACER)
	TNT1 A 0 A_PlaySound("spiderovermind/mindattack", 7 | 64, 1, 1, 1)
	TNT1 A 0 A_GiveInventory ("RLSpiderOvermindMindDamage", 1, AAPTR_TRACER)
    TNT1 A 0 A_JumpIfInTargetInventory("DRPGPurpleAuraToken", 1, 3)
    TNT1 A 0 A_GiveToTarget ("Health", 1)
    TNT1 A 0 A_Jump(256, 2)
    TNT1 A 0 A_GiveToTarget ("Health", 10)
    TNT1 A 0 A_GiveToTarget ("PowerRLSpiderOvermindMindCheckerToken", 1)
    TNT1 AA 1 A_Warp (AAPTR_TRACER, 1, 0, 20, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 0 A_JumpIfInTargetLOS ("PlayerCheck", 0, JLOSF_DEADNOJUMP | JLOSF_PROJECTILE)
	Goto FinishDeadTracer
  PlayerCheck:
    TNT1 A 0 A_JumpIfInTargetLOS ("OvermindCheck", 0)
	Goto FinishEvade
  OvermindCheck:
    TNT1 A 0 A_JumpIfInTargetLOS ("FiringLoop", 0, JLOSF_DEADNOJUMP)
	Goto FinishOvermindDeadTracer
  Immune:
	TNT1 A 0 A_StopSound (7)
    TNT1 AA 1 A_Warp (AAPTR_TRACER, 1, 0, 20, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE | WARPF_COPYINTERPOLATION)
    TNT1 A 0 A_JumpIfInTargetLOS ("ImmunePlayerCheck", 0, JLOSF_DEADNOJUMP | JLOSF_PROJECTILE)
	Goto FinishDeadTracer
  ImmunePlayerCheck:
    TNT1 A 0 A_JumpIfInTargetLOS ("FiringLoop", 0, JLOSF_DEADNOJUMP)
	Goto FinishEvade
  Finish666:
	TNT1 A 0 A_StopSound (7)
	TNT1 A 0 A_TakeFromTarget ("RLSpiderOvermindHealthDrainCounter", 666, AAPTR_TRACER)
	TNT1 A 0 A_GiveInventory ("RLSpiderOvermindMindSlayer", 1, AAPTR_TRACER)
	TNT1 A 0 A_GiveInventory ("RLPlayerCorruptedBonus", 1, AAPTR_TARGET)
	Stop
  FinishEvade:
	TNT1 A 0 A_StopSound (7)
    TNT1 A 0 A_GiveToTarget ("PowerRLSpiderOvermindStahpPlsToken", 1)
	TNT1 A 0 A_GiveInventory ("RLSpiderOvermindHealthResetter", 1, AAPTR_TRACER)
	Stop
  FinishDeadTracer:
	TNT1 A 0 A_StopSound (7)
	TNT1 A 0 A_GiveInventory ("RLSpiderOvermindPlayerDeadHealthResetter", 1, AAPTR_TRACER)
	TNT1 A 0 A_GiveInventory ("RLPlayerCorruptedBonus", 1, AAPTR_TARGET)
	Stop
  FinishOvermindDeadTracer:
	TNT1 A 0 A_StopSound (7)
	TNT1 A 0 A_GiveInventory ("RLSpiderOvermindDeadHealthResetter", 1, AAPTR_TRACER)
	Stop
	}
}

ACTOR RLSpiderOvermindMindDamage : CustomInventory
{
  -COUNTITEM
  +INVENTORY.ALWAYSPICKUP
  Inventory.PickupMessage ""
  Inventory.PickupSound ""
  States
  {
  Spawn:
    TNT1 A 1
    Stop
  Pickup:
    TNT1 A 0 
    TNT1 A 0 A_DamageSelf (1, "Mindrape", DMSS_FOILINVUL | DMSS_NOFACTOR | DMSS_NOPROTECT)
    TNT1 A 0 A_GiveInventory("RLSpiderOvermindHealthDrainCounter", 1)
    TNT1 A 0 A_SetBlend("Red", 0.35, 1)
    Stop
  }
}

ACTOR RLSpiderOvermindHealthResetter : CustomInventory
{
  -COUNTITEM
  +INVENTORY.ALWAYSPICKUP
  Inventory.PickupMessage ""
  Inventory.PickupSound ""
  States
  {
  Spawn:
    TNT1 A 1
    Stop
  Pickup:
    TNT1 A 0
    TNT1 A 0 A_JumpIfInventory("PowerInvulnerable", 1, "Invulnerabibble")
    TNT1 A 0 A_JumpIfInventory("RLSpiderOvermindHealthDrainCounter", 1, 1)
	Goto HealthResetFinished
    TNT1 A 0 A_TakeInventory("RLSpiderOvermindHealthDrainCounter", 1)
    TNT1 A 0 A_GiveInventory("Health", 1)
    Goto Pickup
  HealthResetFinished:
    TNT1 A 0 A_PlaySound("spiderovermind/moarwhisper", 5, 1, 0, 50)
    TNT1 A 0 A_SetBlend("White", 0.25, 5)
    Stop
  Invulnerabibble:
    TNT1 A 0 A_TakeInventory("RLSpiderOvermindHealthDrainCounter", 666)
    TNT1 A 0
    Stop
  }
}

ACTOR RLSpiderOvermindPlayerDeadHealthResetter : CustomInventory
{
  -COUNTITEM
  +INVENTORY.ALWAYSPICKUP
  Inventory.PickupMessage ""
  Inventory.PickupSound ""
  States
  {
  Spawn:
    TNT1 A 1
    Stop
  Pickup:
    TNT1 A 0 
    TNT1 A 0 A_TakeInventory("RLSpiderOvermindHealthDrainCounter", 666)
    TNT1 A 0 A_GiveInventory("RLOvermindMindRapeSuccessful", 1)
    TNT1 A 0 A_SetBlend("Black", 1, 70)
    Stop
  }
}

ACTOR RLSpiderOvermindDeadHealthResetter : CustomInventory
{
  -COUNTITEM
  +INVENTORY.ALWAYSPICKUP
  Inventory.PickupMessage ""
  Inventory.PickupSound ""
  States
  {
  Spawn:
    TNT1 A 1
    Stop
  Pickup:
    TNT1 A 0 
    TNT1 A 0 A_JumpIfInventory("RLSpiderOvermindHealthDrainCounter", 1, 1)
	Goto HealthResetFinished
    TNT1 A 0 A_TakeInventory("RLSpiderOvermindHealthDrainCounter", 1)
    TNT1 A 0 A_GiveInventory("Health", 1)
    Goto Pickup
  HealthResetFinished:
    TNT1 A 0 A_SetBlend("White", 0.25, 5)
    Stop
  }
}

ACTOR RLSpiderOvermindMindSlayer : CustomInventory
{
  +INVENTORY.ALWAYSPICKUP
  Inventory.PickupMessage ""
  Inventory.PickupSound ""
  States
  {
  Spawn:
    TNT1 A 1
    Stop
  Pickup:
    TNT1 A 0 A_TakeInventory("RLSpiderOvermindHealthDrainCounter", 666)
    TNT1 A 0 A_PlaySound("spiderovermind/mindpulse", 5, 1, 0, 50)
    TNT1 A 0 A_SetBlend("Black", 1, 70)
    TNT1 A 0 A_GiveInventory("RLOvermindMindRapeSuccessful", 1)
    TNT1 A 0 A_DamageSelf (6666666, "Mindrape", DMSS_FOILINVUL | DMSS_KILL | DMSS_NOFACTOR | DMSS_NOPROTECT | DMSS_FOILBUDDHA)
    Stop
  }
}

ACTOR RLPlayerCorruptedBonus : CustomInventory
{
  -COUNTITEM
  +INVENTORY.ALWAYSPICKUP
  Inventory.PickupMessage ""
  Inventory.PickupSound ""
  States
  {
  Spawn:
    TNT1 A 1
    Stop
  Pickup:
    TNT1 A 0 
    TNT1 A 0 A_JumpIf(CallACS("DRPGCheck"), 1)
	Stop
    TNT1 A 0 A_JumpIf(CheckClass("RLCyberneticSpiderMastermind", AAPTR_DEFAULT, TRUE), "OvermindEffects")
    TNT1 A 0// A_JumpIf(CheckClass("RLArmageddonSpiderMastermind", AAPTR_DEFAULT, TRUE), "NightmareOvermindEffects")
	Stop
  NightmareOvermindEffects:
  OvermindEffects:
    TNT1 A 0 ACS_NamedExecuteAlways("GetAuraTokens", 0)
    TNT1 A 0 A_JumpIfInventory("DRPGPinkAuraToken", 1, 1)
	Stop
    TNT1 A 0 A_ResetHealth
//    TNT1 A 0 ACS_NamedExecuteAlways("HealMonster", 0, 100, 100)
	Stop
  }
}

//==============================================================================
//		OH NOES IT WAS A FAKE ALL ALONG
//==============================================================================

ACTOR RLFakeOvermind
{
  +FLOORCLIP
  +NOINTERACTION
  +THRUACTORS
  +NODAMAGE
  +DONTSPLASH
  
  var int user_fakeovermindtimer;
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_SetUserVar("user_fakeovermindtimer", random(35,270))
    TNT1 A 0 A_PlaySound("spiderovermind/mindpulse", CHAN_WEAPON, 1, 0, 1.2)
    TNT1 A 0 A_Jump(256, "SpawnLoop")
	Goto SpawnLoop
  SpawnLoop:
    TNT1 A 0 A_JumpIf (user_fakeovermindtimer <= 0, "Despawn")
    TNT1 A 0 A_Jump(254, 2)
    TNT1 A 0 A_PlaySound("spiderovermind/moarwhisper", CHAN_AUTO, 0.35, 0, 1.2)
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_FadeTo (frandom(0.5,0.99), frandom(0.02,0.5), 0)
    FOVE A 1 A_SetScale (frandom(0.8,1.2),frandom(0.8,1.2))
    TNT1 A 0 A_SetUserVar("user_fakeovermindtimer", user_fakeovermindtimer - 1)
    TNT1 A 0 A_Jump (8, "Missile")
    Goto SpawnLoop
  Missile:
    TNT1 A 0 A_JumpIf (user_fakeovermindtimer <= 0, "Despawn")
    TNT1 A 0 A_Jump(254, 2)
    TNT1 A 0 A_PlaySound("spiderovermind/moarwhisper", CHAN_AUTO, 0.35, 0, 1.2)
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_FadeTo (frandom(0.5,0.99), frandom(0.02,0.5), 0)
    FOVE B 1 Bright A_SetScale (frandom(0.8,1.2),frandom(0.8,1.2))
    TNT1 A 0 A_SetUserVar("user_fakeovermindtimer", user_fakeovermindtimer - 1)
    TNT1 A 0 A_JumpIf (user_fakeovermindtimer <= 0, "Despawn")
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_FadeTo (frandom(0.5,0.99), frandom(0.02,0.5), 0)
    FOVE C 1 Bright A_SetScale (frandom(0.8,1.2),frandom(0.8,1.2))
    TNT1 A 0 A_SetUserVar("user_fakeovermindtimer", user_fakeovermindtimer - 1)
    TNT1 A 0 A_Jump (8, "SpawnLoop")
    Goto Missile
  Despawn:
    TNT1 A 0 A_SetScale (frandom(0.8,1.2),frandom(0.8,1.2))
    FOVE A 1 A_FadeTo (0, 0.08, 1)
    Goto Despawn
  }
}

ACTOR RLFakeShadowOvermind : RLFakeOvermind
{
  RenderStyle "Subtract"
}

ACTOR RLFakeOvermindNoPulse : RLFakeOvermind
{
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_SetUserVar("user_fakeovermindtimer", random(35,270))
    TNT1 A 0 A_Jump(256, "SpawnLoop")
	Goto SpawnLoop
  }
}

ACTOR RLFakeShadowOvermindNoPulse : RLFakeOvermindNoPulse
{
  RenderStyle "Subtract"
}

ACTOR RLOvermindAfterImage
{
  +FLOORCLIP
  +NOINTERACTION
  +THRUACTORS
  +NODAMAGE
  +DONTSPLASH
  States
  {
  Spawn:
    "####" "#" 0
    "####" "#" 0 A_PlaySound("spiderovermind/moarwhisper", 7, 0.75, 0, 1.2)
    "####" "#" 1 A_FadeTo (0, 0.04, 1)
    Goto Spawn+2
  }
}

ACTOR RLShadowOvermindAfterImage : RLOvermindAfterImage
{
  RenderStyle "Subtract"
}

ACTOR RLOvermindDelaySpawner
{
  +NOGRAVITY
  +NOINTERACTION
  +THRUACTORS
  +DONTSPLASH
  States
  {
  Spawn:
    TNT1 A 6
// Change this to Arachnomasters later on
    TNT1 A 0 A_SpawnItemEx ("RLCyberneticArachnotron", 0,0,0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERPOINTERS)
    TNT1 A 10
    Stop
  }
}

//==============================================================================
//		THE REALM OF FALSE CURRENCIES
//==============================================================================

actor RLFakeCreditsSpawner : RandomSpawner
{
    DropItem "RLFakeCreditsA" 255 40
    DropItem "RLFakeCreditsB" 255 32
    DropItem "RLFakeCreditsC" 255 26
    DropItem "RLFakeCreditsD" 255 18
    DropItem "RLFakeCreditsE" 255 8
    DropItem "RLFakeCreditsF" 255 4
    DropItem "RLFakeCreditsG" 255 1
}

actor RLFakeShadowCreditsSpawner : RandomSpawner
{
    DropItem "RLFakeShadowCreditsA" 255 40
    DropItem "RLFakeShadowCreditsB" 255 32
    DropItem "RLFakeShadowCreditsC" 255 26
    DropItem "RLFakeShadowCreditsD" 255 18
    DropItem "RLFakeShadowCreditsE" 255 8
    DropItem "RLFakeShadowCreditsF" 255 4
    DropItem "RLFakeShadowCreditsG" 255 1
}

actor DRPGFakeCreditsSpawner : RandomSpawner
{
    DropItem "RLFakeCreditsA" 255 40
    DropItem "RLFakeCreditsB" 255 32
    DropItem "RLFakeCreditsC" 255 26
    DropItem "RLFakeCreditsD" 255 18
    DropItem "RLFakeCreditsE" 255 8
    DropItem "RLFakeCreditsF" 255 4
    DropItem "RLFakeCreditsG" 255 1
}

actor DRPGFakeShadowCreditsSpawner : RandomSpawner
{
    DropItem "RLFakeShadowCreditsA" 255 40
    DropItem "RLFakeShadowCreditsB" 255 32
    DropItem "RLFakeShadowCreditsC" 255 26
    DropItem "RLFakeShadowCreditsD" 255 18
    DropItem "RLFakeShadowCreditsE" 255 8
    DropItem "RLFakeShadowCreditsF" 255 4
    DropItem "RLFakeShadowCreditsG" 255 1
}

// ohnoes a credit
actor RLFakeCreditsA : CustomInventory
{
    scale 0.5
	Radius 64
	Height 32
	+INVENTORY.QUIET
	+INVENTORY.ALWAYSPICKUP
	+INVENTORY.NEVERRESPAWN
	+INVENTORY.NOSCREENFLASH
    Inventory.PickupFlash "RLFakeCreditsATrolling"
    Inventory.PickupMessage ""
    Inventory.PickupSound ""
    States
    {
    Spawn:
        TNT1 A 0
		Goto Player1Check
    Player1Check:
		TNT1 A 0 A_TransferPointer(AAPTR_PLAYER1, AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
		TNT1 A 0 A_CheckFlag("SHOOTABLE", 1, AAPTR_TARGET)
		Goto Player2Check
		TNT1 A 0 A_Jump(256, "WarpToPlayer")
		Goto Player2Check
    Player2Check:
		TNT1 A 0 A_TransferPointer(AAPTR_PLAYER2, AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
		TNT1 A 0 A_CheckFlag("SHOOTABLE", 1, AAPTR_TARGET)
		Goto Player3Check
		TNT1 A 0 A_Jump(256, "WarpToPlayer")
		Goto Player3Check
    Player3Check:
		TNT1 A 0 A_TransferPointer(AAPTR_PLAYER3, AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
		TNT1 A 0 A_CheckFlag("SHOOTABLE", 1, AAPTR_TARGET)
		Goto Player4Check
		TNT1 A 0 A_Jump(256, "WarpToPlayer")
		Goto Player4Check
    Player4Check:
		TNT1 A 0 A_TransferPointer(AAPTR_PLAYER4, AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
		TNT1 A 0 A_CheckFlag("SHOOTABLE", 1, AAPTR_TARGET)
		Goto Player5Check
		TNT1 A 0 A_Jump(256, "WarpToPlayer")
		Goto Player5Check
    Player5Check:
		TNT1 A 0 A_TransferPointer(AAPTR_PLAYER5, AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
		TNT1 A 0 A_CheckFlag("SHOOTABLE", 1, AAPTR_TARGET)
		Goto Player6Check
		TNT1 A 0 A_Jump(256, "WarpToPlayer")
		Goto Player6Check
    Player6Check:
		TNT1 A 0 A_TransferPointer(AAPTR_PLAYER6, AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
		TNT1 A 0 A_CheckFlag("SHOOTABLE", 1, AAPTR_TARGET)
		Goto Player7Check
		TNT1 A 0 A_Jump(256, "WarpToPlayer")
		Goto Player7Check
    Player7Check:
		TNT1 A 0 A_TransferPointer(AAPTR_PLAYER7, AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
		TNT1 A 0 A_CheckFlag("SHOOTABLE", 1, AAPTR_TARGET)
		Goto Player8Check
		TNT1 A 0 A_Jump(256, "WarpToPlayer")
		Goto Player8Check
    Player8Check:
		TNT1 A 0 A_TransferPointer(AAPTR_PLAYER8, AAPTR_DEFAULT, AAPTR_DEFAULT, AAPTR_TARGET)
		TNT1 A 0 A_CheckFlag("SHOOTABLE", 1, AAPTR_TARGET)
		Stop
		TNT1 A 0 A_Jump(256, "WarpToPlayer")
		Stop
    WarpToPlayer:
        TNT1 A 0 A_Warp (AAPTR_TARGET, random(-1024,1024), random(-1024,1024), 0, 0, WARPF_TOFLOOR)
		TNT1 A 0 A_Jump(256, "SpawnLoop")
		Goto SpawnLoop
    SpawnLoop:
        CRED A -1 Bright
        Stop
    Pickup:
        TNT1 A 0
        Stop
    }
}

actor RLFakeCreditsB : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeCreditsBTrolling"
    States
    {
    SpawnLoop:
        CRED B -1 Bright
        Stop
    }
}

actor RLFakeCreditsC : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeCreditsCTrolling"
    States
    {
    SpawnLoop:
        CRED C -1 Bright
        Stop
    }
}

actor RLFakeCreditsD : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeCreditsDTrolling"
    States
    {
    SpawnLoop:
        CRED D -1 Bright
        Stop
    }
}

actor RLFakeCreditsE : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeCreditsETrolling"
    States
    {
    SpawnLoop:
        CRED E -1 Bright
        Stop
    }
}

actor RLFakeCreditsF : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeCreditsFTrolling"
    States
    {
    SpawnLoop:
        CRED F -1 Bright
        Stop
    }
}

actor RLFakeCreditsG : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeCreditsGTrolling"
    States
    {
    SpawnLoop:
        CRED ABCDEFEDCB 2 Bright
        Goto SpawnLoop
    }
}

actor RLFakeShadowCreditsA : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeShadowCreditsATrolling"
    States
    {
    SpawnLoop:
        CRED A -1 Bright
        Stop
    }
}

actor RLFakeShadowCreditsB : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeShadowCreditsBTrolling"
    States
    {
    SpawnLoop:
        CRED B -1 Bright
        Stop
    }
}

actor RLFakeShadowCreditsC : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeShadowCreditsCTrolling"
    States
    {
    SpawnLoop:
        CRED C -1 Bright
        Stop
    }
}

actor RLFakeShadowCreditsD : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeShadowCreditsDTrolling"
    States
    {
    SpawnLoop:
        CRED D -1 Bright
        Stop
    }
}

actor RLFakeShadowCreditsE : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeShadowCreditsETrolling"
    States
    {
    SpawnLoop:
        CRED E -1 Bright
        Stop
    }
}

actor RLFakeShadowCreditsF : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeShadowCreditsFTrolling"
    States
    {
    SpawnLoop:
        CRED F -1 Bright
        Stop
    }
}

actor RLFakeShadowCreditsG : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeShadowCreditsGTrolling"
    States
    {
    SpawnLoop:
        CRED ABCDEFEDCB 2 Bright
        Goto SpawnLoop
    }
}

actor DRPGFakeCreditsA : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeCreditsATrolling"
    States
    {
    Spawn:
        TNT1 A 0
        Goto SpawnLoop
    SpawnLoop:
        CRED A -1 Bright
        Stop
    }
}

actor DRPGFakeCreditsB : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeCreditsBTrolling"
    States
    {
    Spawn:
        TNT1 A 0
        Goto SpawnLoop
    SpawnLoop:
        CRED B -1 Bright
        Stop
    }
}

actor DRPGFakeCreditsC : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeCreditsCTrolling"
    States
    {
    Spawn:
        TNT1 A 0
        Goto SpawnLoop
    SpawnLoop:
        CRED C -1 Bright
        Stop
    }
}

actor DRPGFakeCreditsD : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeCreditsDTrolling"
    States
    {
    Spawn:
        TNT1 A 0
        Goto SpawnLoop
    SpawnLoop:
        CRED D -1 Bright
        Stop
    }
}

actor DRPGFakeCreditsE : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeCreditsETrolling"
    States
    {
    Spawn:
        TNT1 A 0
        Goto SpawnLoop
    SpawnLoop:
        CRED E -1 Bright
        Stop
    }
}

actor DRPGFakeCreditsF : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeCreditsFTrolling"
    States
    {
    Spawn:
        TNT1 A 0
        Goto SpawnLoop
    SpawnLoop:
        CRED F -1 Bright
        Stop
    }
}

actor DRPGFakeCreditsG : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeCreditsGTrolling"
    States
    {
    Spawn:
        TNT1 A 0
        Goto SpawnLoop
    SpawnLoop:
        CRED ABCDEFEDCB 2 Bright
        Goto SpawnLoop
    }
}

actor DRPGFakeShadowCreditsA : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeShadowCreditsATrolling"
    States
    {
    Spawn:
        TNT1 A 0
        Goto SpawnLoop
    SpawnLoop:
        CRED A -1 Bright
        Stop
    }
}

actor DRPGFakeShadowCreditsB : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeShadowCreditsBTrolling"
    States
    {
    Spawn:
        TNT1 A 0
        Goto SpawnLoop
    SpawnLoop:
        CRED B -1 Bright
        Stop
    }
}

actor DRPGFakeShadowCreditsC : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeShadowCreditsCTrolling"
    States
    {
    Spawn:
        TNT1 A 0
        Goto SpawnLoop
    SpawnLoop:
        CRED C -1 Bright
        Stop
    }
}

actor DRPGFakeShadowCreditsD : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeShadowCreditsDTrolling"
    States
    {
    Spawn:
        TNT1 A 0
        Goto SpawnLoop
    SpawnLoop:
        CRED D -1 Bright
        Stop
    }
}

actor DRPGFakeShadowCreditsE : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeShadowCreditsETrolling"
    States
    {
    Spawn:
        TNT1 A 0
        Goto SpawnLoop
    SpawnLoop:
        CRED E -1 Bright
        Stop
    }
}

actor DRPGFakeShadowCreditsF : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeShadowCreditsFTrolling"
    States
    {
    Spawn:
        TNT1 A 0
        Goto SpawnLoop
    SpawnLoop:
        CRED F -1 Bright
        Stop
    }
}

actor DRPGFakeShadowCreditsG : RLFakeCreditsA
{
    Inventory.PickupFlash "RLFakeShadowCreditsGTrolling"
    States
    {
    Spawn:
        TNT1 A 0
        Goto SpawnLoop
    SpawnLoop:
        CRED ABCDEFEDCB 2 Bright
        Goto SpawnLoop
    }
}

//==============================================================================

ACTOR RLFakeCreditsATrolling
{
    scale 0.5
  +NOGRAVITY
  +NOINTERACTION
  +THRUACTORS
  +DONTSPLASH
  States
  {
  Spawn:
        TNT1 A 0
        TNT1 A 0 A_Jump(128, 2)
        TNT1 A 0 A_PlaySound("spiderovermind/credittrolling", 7, 0.55, 0, 1.8)
        CRED A 0 A_Jump(250, 2)
        "####" "#" 0 A_SpawnItemEx ("RLFakeOvermind", 0,random(-10,30),0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERPOINTERS)
        "####" "#" 1 Bright A_FadeTo (0, 0.05, 1)
        Wait
  }
}

ACTOR RLFakeCreditsBTrolling : RLFakeCreditsATrolling
{
  States
  {
  Spawn:
        TNT1 A 0
        TNT1 A 0 A_Jump(128, 2)
        TNT1 A 0 A_PlaySound("spiderovermind/credittrolling", 7, 0.55, 0, 1.8)
        CRED B 0 A_Jump(250, 2)
        "####" "#" 0 A_SpawnItemEx ("RLFakeOvermind", 0,random(-10,30),0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERPOINTERS)
        "####" "#" 1 Bright A_FadeTo (0, 0.05, 1)
        Wait
  }
}

ACTOR RLFakeCreditsCTrolling : RLFakeCreditsATrolling
{
  States
  {
  Spawn:
        TNT1 A 0
        TNT1 A 0 A_Jump(128, 2)
        TNT1 A 0 A_PlaySound("spiderovermind/credittrolling", 7, 0.55, 0, 1.8)
        CRED C 0 A_Jump(250, 2)
        "####" "#" 0 A_SpawnItemEx ("RLFakeOvermind", 0,random(-10,30),0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERPOINTERS)
        "####" "#" 1 Bright A_FadeTo (0, 0.05, 1)
        Wait
  }
}

ACTOR RLFakeCreditsDTrolling : RLFakeCreditsATrolling
{
  States
  {
  Spawn:
        TNT1 A 0
        TNT1 A 0 A_Jump(128, 2)
        TNT1 A 0 A_PlaySound("spiderovermind/credittrolling", 7, 0.55, 0, 1.8)
        CRED D 0 A_Jump(250, 2)
        "####" "#" 0 A_SpawnItemEx ("RLFakeOvermind", 0,random(-10,30),0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERPOINTERS)
        "####" "#" 1 Bright A_FadeTo (0, 0.05, 1)
        Wait
  }
}

ACTOR RLFakeCreditsETrolling : RLFakeCreditsATrolling
{
  States
  {
  Spawn:
        TNT1 A 0
        TNT1 A 0 A_Jump(128, 2)
        TNT1 A 0 A_PlaySound("spiderovermind/credittrolling", 7, 0.55, 0, 1.8)
        CRED E 0 A_Jump(230, 2)
        "####" "#" 0 A_SpawnItemEx ("RLFakeOvermind", 0,random(-10,30),0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERPOINTERS)
        "####" "#" 1 Bright A_FadeTo (0, 0.05, 1)
        Wait
  }
}

ACTOR RLFakeCreditsFTrolling : RLFakeCreditsATrolling
{
  States
  {
  Spawn:
        TNT1 A 0
        TNT1 A 0 A_Jump(128, 2)
        TNT1 A 0 A_PlaySound("spiderovermind/credittrolling", 7, 0.55, 0, 1.8)
        CRED F 0 A_Jump(200, 2)
        "####" "#" 0 A_SpawnItemEx ("RLFakeOvermind", 0,random(-10,30),0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERPOINTERS)
        "####" "#" 1 Bright A_FadeTo (0, 0.05, 1)
        Wait
  }
}

ACTOR RLFakeCreditsGTrolling : RLFakeCreditsATrolling
{
  States
  {
  Spawn:
        TNT1 A 0
        TNT1 A 0 A_Jump(128, 2)
        TNT1 A 0 A_PlaySound("spiderovermind/credittrolling", 7, 0.55, 0, 1.8)
        CRED A 0 A_Jump(128, 2)
        CRED A 0 A_SpawnItemEx ("RLFakeOvermind", 0,random(-10,30),0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERPOINTERS)
  SpawnLoop:
        CRED AABBCCDDEEFFEEDDCCBB 1 Bright A_FadeTo (0, 0.05, 1)
        Goto SpawnLoop
  }
}

ACTOR RLFakeShadowCreditsATrolling : RLFakeCreditsATrolling
{
  States
  {
  Spawn:
        TNT1 A 0
        TNT1 A 0 A_Jump(128, 2)
        TNT1 A 0 A_PlaySound("spiderovermind/credittrolling", 7, 0.55, 0, 1.8)
        CRED A 0 A_Jump(250, 2)
        "####" "#" 0 A_SpawnItemEx ("RLFakeShadowOvermind", 0,random(-10,30),0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERPOINTERS)
        "####" "#" 1 Bright A_FadeTo (0, 0.05, 1)
        Wait
  }
}

ACTOR RLFakeShadowCreditsBTrolling : RLFakeCreditsATrolling
{
  States
  {
  Spawn:
        TNT1 A 0
        TNT1 A 0 A_Jump(128, 2)
        TNT1 A 0 A_PlaySound("spiderovermind/credittrolling", 7, 0.55, 0, 1.8)
        CRED B 0 A_Jump(250, 2)
        "####" "#" 0 A_SpawnItemEx ("RLFakeShadowOvermind", 0,random(-10,30),0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERPOINTERS)
        "####" "#" 1 Bright A_FadeTo (0, 0.05, 1)
        Wait
  }
}

ACTOR RLFakeShadowCreditsCTrolling : RLFakeCreditsATrolling
{
  States
  {
  Spawn:
        TNT1 A 0
        TNT1 A 0 A_Jump(128, 2)
        TNT1 A 0 A_PlaySound("spiderovermind/credittrolling", 7, 0.55, 0, 1.8)
        CRED C 0 A_Jump(250, 2)
        "####" "#" 0 A_SpawnItemEx ("RLFakeShadowOvermind", 0,random(-10,30),0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERPOINTERS)
        "####" "#" 1 Bright A_FadeTo (0, 0.05, 1)
        Wait
  }
}

ACTOR RLFakeShadowCreditsDTrolling : RLFakeCreditsATrolling
{
  States
  {
  Spawn:
        TNT1 A 0
        TNT1 A 0 A_Jump(128, 2)
        TNT1 A 0 A_PlaySound("spiderovermind/credittrolling", 7, 0.55, 0, 1.8)
        CRED D 0 A_Jump(250, 2)
        "####" "#" 0 A_SpawnItemEx ("RLFakeShadowOvermind", 0,random(-10,30),0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERPOINTERS)
        "####" "#" 1 Bright A_FadeTo (0, 0.05, 1)
        Wait
  }
}

ACTOR RLFakeShadowCreditsETrolling : RLFakeCreditsATrolling
{
  States
  {
  Spawn:
        TNT1 A 0
        TNT1 A 0 A_Jump(128, 2)
        TNT1 A 0 A_PlaySound("spiderovermind/credittrolling", 7, 0.55, 0, 1.8)
        CRED E 0 A_Jump(230, 2)
        "####" "#" 0 A_SpawnItemEx ("RLFakeShadowOvermind", 0,random(-10,30),0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERPOINTERS)
        "####" "#" 1 Bright A_FadeTo (0, 0.05, 1)
        Wait
  }
}

ACTOR RLFakeShadowCreditsFTrolling : RLFakeCreditsATrolling
{
  States
  {
  Spawn:
        TNT1 A 0
        TNT1 A 0 A_Jump(128, 2)
        TNT1 A 0 A_PlaySound("spiderovermind/credittrolling", 7, 0.55, 0, 1.8)
        CRED F 0 A_Jump(200, 2)
        "####" "#" 0 A_SpawnItemEx ("RLFakeShadowOvermind", 0,random(-10,30),0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERPOINTERS)
        "####" "#" 1 Bright A_FadeTo (0, 0.05, 1)
        Wait
  }
}

ACTOR RLFakeShadowCreditsGTrolling : RLFakeCreditsATrolling
{
  States
  {
  Spawn:
        TNT1 A 0
        TNT1 A 0 A_Jump(128, 2)
        TNT1 A 0 A_PlaySound("spiderovermind/credittrolling", 7, 0.55, 0, 1.8)
        CRED A 0 A_Jump(128, 2)
        CRED A 0 A_SpawnItemEx ("RLFakeShadowOvermind", 0,random(-10,30),0, 0,0,0, 0, SXF_NOCHECKPOSITION | SXF_TRANSFERPOINTERS)
  SpawnLoop:
        CRED AABBCCDDEEFFEEDDCCBB 1 Bright A_FadeTo (0, 0.05, 1)
        Goto SpawnLoop
  }
}

//==============================================================================

Actor RLSpiderOvermindHealthDrainCounter : Inventory
{
inventory.maxamount 666
}

Actor RLCyberneticSpiderMastermindStateCounter : Inventory
{
inventory.maxamount 1
}

Actor RLNoMoreMindGamesMisterBond : Inventory
{
inventory.maxamount 1
}

ACTOR RLOvermindSpecialCooldown : Powerup
{
	Powerup.Duration -8
}

ACTOR PowerRLSpiderOvermindMindCheckerToken : Powerup
{
	Powerup.Duration 3
}

ACTOR RLOvermindMindRapeSuccessful : Powerup
{
	Powerup.Duration 5
}

ACTOR PowerRLSpiderOvermindStahpPlsToken : Powerup
{
	Powerup.Duration -12
}

ACTOR RLDRPGSummonedCyberneticSpiderMastermind : RLCyberneticSpiderMastermind
{
  -COUNTKILL
  +NOBLOCKMONST
  +NOTELESTOMP
  +NOFEAR
  +SEEINVISIBLE
  +DONTDRAIN
  +ALWAYSFAST
  +QUICKTORETALIATE
  +MISSILEMORE
  +THRUSPECIES
  Species "Player"
  States
  {
  Spawn:
	TNT1 A 0 NoDelay ACS_NamedExecuteAlways("MonsterInit", 0)
    TNT1 A 0 A_GiveInventory ("RLMonsterInitializerToken", 1)
    TNT1 A 0 A_GiveInventory ("DRPGDRLASummonedMonsterToken", 1)
	Goto Super::Spawn
	See:
	TNT1 A 0 ACS_NamedExecuteAlways("MonsterInit", 0)
    TNT1 A 0 A_GiveInventory ("RLMonsterInitializerToken", 1)
    TNT1 A 0 A_GiveInventory ("DRPGDRLASummonedMonsterToken", 1)
	Goto Super::See
  }
}

ACTOR RLCCCyberneticSpiderMastermind : RLCyberneticSpiderMastermind
{
  +TOUCHY
  States
  {
  See:
    CSPM U 2
    Loop
  Missile:
    CSPM T 4
    CSPM U 3
    CSPM T 2
    CSPM GHGHGHGH 1 Bright
    CSPM T 2
    CSPM U 3
    CSPM T 4
    Loop
  Melee:
    CSPM ZX 1 Bright
    Loop
  Death:
    CSPM J 20 A_Scream
    CSPM K 10 A_NoBlocking
    CSPM L 10
    CSPM MNOPQ 10 Bright
    CSPM R 10
    CSPM S 30
    CSPM S -1
    Stop
  }
}
