
// NIGHTMARE MASTERMIND
//
ACTOR RLNightmareSpiderMastermind : RLSpiderMastermindBase 16534
{
  Health 5000
  Radius 90
  Speed 15
  Mass 10000
  
  MinMissileChance 10
  PainThreshold 20
  PainChance 120
  
//  SeeSound "nightmaremastermind/sight"
//  ActiveSound "nightmaremastermind/sight"
  PainSound "spidermastermind/pain"
//  DeathSound "nightmaremastermind/death"

  
  DamageFactor "Melee", 2.0
  DamageFactor "Holy", 3
  DamageFactor "Unholy", 0.05
  
  +QUICKTORETALIATE
  
  Obituary "%o was demolished by the Nightmare Mastermind."
  Tag "Nightmare Mastermind"
    //$category "MP Nightmare"
  
	// Guncaster compatibility
	DropItem "TreasureChest"
	DropItem "TreasureChest"
  States
  {
  Spawn:
    TNT1 A 0 A_StopSound(CHAN_WEAPON)
    TNT1 A 0 A_JumpIfInventory("DRPGGreenAuraToken", 1, 2)
    TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
    TNT1 A 0 A_ChangeFlag("SHOOTABLE", 1)
    TNT1 A 0 A_ChangeFlag("NODAMAGE", 0)
  SpawnLoop:
    NMAS A Random(9,10) A_Look
    TNT1 A 0 A_Jump (2, "SpinAttack")
    Goto SpawnLoop
	
  FriendlyTarget:
  ClearTargetWindDown:
    TNT1 A 0 A_ClearTarget
    TNT1 A 0 A_LookEx (LOF_NOSEESOUND, 0, 0, 0, 360, "See")
    Goto ProlongedFireEnd
	
  See:
    TNT1 A 0 A_StopSound(CHAN_WEAPON)
    TNT1 A 0 A_JumpIfInventory("DRPGGreenAuraToken", 1, 2)
    TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
    TNT1 A 0 A_ChangeFlag("SHOOTABLE", 1)
    TNT1 A 0 A_ChangeFlag("NODAMAGE", 0)
  SeeLoop:
    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, "")
    NMAS AABB 2 A_Chase ("", "Missile")
    TNT1 A 0 A_CheckFlag ("FRIENDLY", 2) // Friendly monsters do not harm you
    TNT1 A 0 A_Jump (10, "SpinAttack")
    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, "")
    NMAS CCDD 2 A_Chase ("", "Missile")
    TNT1 A 0 A_CheckFlag ("FRIENDLY", 2) // Friendly monsters do not harm you
    TNT1 A 0 A_Jump (10, "SpinAttack")
    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, "")
    NMAS EEFF 2 A_Chase ("", "Missile")
    TNT1 A 0 A_CheckFlag ("FRIENDLY", 2) // Friendly monsters do not harm you
    TNT1 A 0 A_Jump (10, "SpinAttack")
    TNT1 A 0
    Goto SeeLoop
	
  MissileProper:
    TNT1 A 0 A_JumpIfInTargetInventory("RLInquisitorsSetBonusActive", 1, "Teleporting") // Fire Immune Target
    TNT1 A 0 A_JumpIf(CheckClass("RLBruiserBrother", AAPTR_TARGET, TRUE), "Teleporting") // Fire Immune Target
    TNT1 A 0 A_JumpIf(CheckClass("RLBruiserBrother2", AAPTR_TARGET, TRUE), "Teleporting") // Fire Immune Target
    TNT1 A 0 A_PlaySound("nightmaremastermind/minigunburst", CHAN_WEAPON, 1, 0, 0.3)
    NMAS A 26 A_FaceTarget
    TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
    NMAS TU 3 A_FaceTarget
    NMAS TU 2 A_FaceTarget
    NMAS TUTU 1 A_FaceTarget
  MissileFire:
    TNT1 A 0 A_JumpIfCloser (350, "ProlongedFire")
    TNT1 A 0 A_CheckFlag ("FRIENDLY", "SummonMissile") // Friendly monsters do not harm you
    NMAS GHGHGHGHGHGHGHGHGHGHGHGHGHGH 1 Bright A_CustomBulletAttack (12, 5, 1, random(3,7) * 3, "RLNightmareMastermindExplodePuff", 0, CBAF_NORANDOM)
    NMAS TUTU 1
    NMAS T 2
    TNT1 A 0 A_JumpIfInventory("DRPGGreenAuraToken", 1, 2)
    TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
    NMAS A 16
    TNT1 A 0 A_Jump (96, "Teleporting")
    Goto See
	
  ProlongedFire:
  RepeatProper:
    TNT1 A 0 A_PlaySound("nightmaremastermind/minigunloop", CHAN_WEAPON, 1, 1, 0.3)
    TNT1 A 0 A_JumpIfInventory ("RLSpiderMastermindStateCounter", 1, "ProlongedFireAlt")
    TNT1 A 0 A_GiveInventory ("RLSpiderMastermindStateCounter", 1)
    TNT1 A 0 A_CheckFlag ("FRIENDLY", "SummonProlongedMissile") // Friendly monsters do not harm you
    NMAS G 1 Bright A_CustomBulletAttack (12, 5, 1, random(3,7) * 3, "RLNightmareMastermindExplodePuff", 0, CBAF_NORANDOM)
    TNT1 A 0 A_MonsterRefire (220, "ProlongedFireEnd")
    Goto ProlongedFireCheck
  ProlongedFireCheck:
    TNT1 A 0 A_JumpIfCloser (350, "RepeatFriendlyCheck")
    Goto ProlongedFireEnd
  ProlongedFireAlt:
    TNT1 A 0 A_TakeInventory ("RLSpiderMastermindStateCounter", 1)
    TNT1 A 0 A_CheckFlag ("FRIENDLY", "SummonProlongedMissileAlt") // Friendly monsters do not harm you
    NMAS H 1 Bright A_CustomBulletAttack (12, 5, 1, random(3,7) * 3, "RLNightmareMastermindExplodePuff", 0, CBAF_NORANDOM)
    TNT1 A 0 A_JumpIfCloser (350, "RepeatFriendlyCheck")
    Goto ProlongedFireEnd
  ProlongedFireEnd:
    TNT1 A 0 A_PlaySound("nightmaremastermind/minigunend", CHAN_WEAPON, 1, 0, 0.3)
    NMAS TUTU 1
    NMAS T 2
    TNT1 A 0 A_JumpIfInventory("DRPGGreenAuraToken", 1, 2)
    TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
    NMAS A 16
    TNT1 A 0 A_Jump (180, "Teleporting")
    Goto See

  SpinAttack:
    TNT1 A 0 A_PlaySound("nightmaremastermind/minigunburst", CHAN_WEAPON, 1, 0, 0.3)
    NMAS A 26 A_SetAngle (angle+5)
    TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
    NMAS TU 3 A_SetAngle (angle+5)
    NMAS TU 2 A_SetAngle (angle+8)
    NMAS TUTU 1 A_SetAngle (angle+10)
	Goto Melee
  MeleeProper:
  SpinFire:
    TNT1 A 0 A_PlaySound("nightmaremastermind/minigunloop", CHAN_WEAPON, 1, 1, 0.3)
    TNT1 A 0 A_SetAngle (angle+10)
    TNT1 A 0 A_JumpIfInventory ("RLSpiderMastermindStateCounter", 1, "SpinFireAlt")
    TNT1 A 0 A_GiveInventory ("RLSpiderMastermindStateCounter", 1)
    NMAS G 1 Bright A_CustomBulletAttack (12, 5, 1, random(3,7) * 3, "RLNightmareMastermindExplodePuff", 0, CBAF_NOPITCH | CBAF_AIMFACING | CBAF_NORANDOM)
    TNT1 A 0 A_Jump (252, "Melee")
    Goto ProlongedFireEnd
  SpinFireAlt:
    TNT1 A 0 A_TakeInventory ("RLSpiderMastermindStateCounter", 1)
    NMAS H 1 Bright A_CustomBulletAttack (12, 5, 1, random(3,7) * 3, "RLNightmareMastermindExplodePuff", 0, CBAF_NOPITCH | CBAF_AIMFACING | CBAF_NORANDOM)
    TNT1 A 0 A_Jump (252, "Melee")
    Goto ProlongedFireEnd

  SummonMissile:
    NMAS GHGHGHGHGHGHGHGHGHGHGHGHGHGH 1 Bright A_CustomBulletAttack (3, 1.5, 1, random(3,5) * 5, "RLSummonNightmareMastermindExplodePuff", 0, CBAF_NORANDOM)
    NMAS TUTU 1
    NMAS T 2
    TNT1 A 0 A_JumpIfInventory("DRPGGreenAuraToken", 1, 2)
    TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
    NMAS A 16
    TNT1 A 0 A_Jump (96, "Teleporting")
    Goto See
  SummonProlongedMissile:
    NMAS G 1 Bright A_CustomBulletAttack (3, 1.5, 1, random(3,5) * 5, "RLNightmareMastermindExplodePuff", 0, CBAF_NORANDOM)
    TNT1 A 0 A_MonsterRefire (220, "ProlongedFireEnd")
    Goto ProlongedFireCheck
  SummonProlongedMissileAlt:
    NMAS H 1 Bright A_CustomBulletAttack (3, 1.5, 1, random(3,5) * 5, "RLNightmareMastermindExplodePuff", 0, CBAF_NORANDOM)
    TNT1 A 0 A_JumpIfCloser (350, "RepeatFriendlyCheck")
    Goto ProlongedFireEnd
	
  PainMain:
    TNT1 A 0 A_StopSound(CHAN_WEAPON)
    TNT1 A 0 ACS_NamedExecuteAlways("DRLA_BossPainCheck", 0)
    TNT1 A 0 A_Pain
    TNT1 A 0 A_Jump (180, "Teleporting")
    Goto See
	
  Teleporting:
    TNT1 A 0 A_CheckFlag ("FRIENDLY", 2) // Friendly monsters do not harm you
    TNT1 A 0 A_JumpIfHealthLower(500, "TeleportHate")
    TNT1 A 0 A_PlaySound("nightmaremastermind/darkness", 7, 1, 0, 0.4)
    NMAS IIIIVIIIIVIIIIVIIIIVIIIIVIIIIV 1 Bright A_SpawnItemEx ("RLNightmareMastermindDarkAura", -1, 0, 0, 0, 0, 0, 0, SXF_SETTARGET | SXF_NOCHECKPOSITION)
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOut", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_ChangeFlag("SHOOTABLE", 0)
    TNT1 A 0 A_ChangeFlag("NODAMAGE", 1)
    TNT1 A 0 A_PlaySound("nightmaremastermind/darknessmove", 5, 1, 0, 0.3)
    TNT1 A 0 A_SetSpeed (Speed*3)
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_SetSpeed (Speed/3)
    TNT1 A 0 A_ChangeFlag("SHOOTABLE", 1)
    TNT1 A 0 A_ChangeFlag("NODAMAGE", 0)
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindDarkShockwave", -1, 0, 50, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_PlaySound("nightmaremastermind/darkness", 7, 1, 0, 0.4)
    NMAS IIIIVIIIIV 1 Bright A_SpawnItemEx ("RLNightmareMastermindDarkAura", -1, 0, 0, 0, 0, 0, 0, SXF_SETTARGET | SXF_NOCHECKPOSITION)
    TNT1 A 0 A_JumpIfInTargetInventory("RLInquisitorsSetBonusActive", 1, 2)
    TNT1 A 0 A_MonsterRefire (0, "See")
    Goto Missile
    TNT1 A 0 A_MonsterRefire (0, "See")
    Goto Teleporting
	
  TeleportHate:
	TNT1 A 0 A_JumpIf(CallACS("DRLA_MonsterQuake") == 0, 2)
    TNT1 A 0 A_Quake(1, 15, 0, 2048, "")
    TNT1 A 0 A_PlaySound("nightmaremastermind/darkness", 7, 1, 0, 0.4)
    TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
    NMAS IIIIVIIIIVIIIIV 1 Bright A_SpawnItemEx ("RLNightmareMastermindDarkAura", -1, 0, 0, 0, 0, 0, 0, SXF_SETTARGET | SXF_NOCHECKPOSITION)
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOut", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_ChangeFlag("SHOOTABLE", 0)
    TNT1 A 0 A_ChangeFlag("NODAMAGE", 1)
    TNT1 A 0 A_PlaySound("nightmaremastermind/darknessmove", 5, 1, 0, 0.3)
    TNT1 A 0 A_SetSpeed (Speed*3)
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_FaceTarget
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindFadeOutFast", 0, 0, 0, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 1 A_Wander
    TNT1 A 0 A_SetSpeed (Speed/3)
    TNT1 A 0 A_ChangeFlag("SHOOTABLE", 1)
    TNT1 A 0 A_ChangeFlag("NODAMAGE", 0)
    TNT1 A 0 A_SpawnItemEx ("RLNightmareMastermindDarkShockwave", -1, 0, 50, 0, 0, 0, 0, SXF_NOCHECKPOSITION)
    TNT1 A 0 A_PlaySound("nightmaremastermind/darkness", 7, 1, 0, 0.4)
    NMAS IIIIV 1 Bright A_SpawnItemEx ("RLNightmareMastermindDarkAura", -1, 0, 0, 0, 0, 0, 0, SXF_SETTARGET | SXF_NOCHECKPOSITION)
    TNT1 A 0 A_PlaySound("nightmaremastermind/minigunloop", CHAN_WEAPON, 1, 1, 0.5)
    NMAS GHGHGHGHGHGHGHGHGHGHGHGHGHGH 1 Bright A_CustomBulletAttack (12, 5, 1, random(3,7) * 3, "RLNightmareMastermindExplodePuff", 0, CBAF_NORANDOM)
    TNT1 A 0 A_PlaySound("nightmaremastermind/minigunend", CHAN_WEAPON, 1, 0, 0.5)
    NMAS TUTU 1
    NMAS T 2
    TNT1 A 0 A_MonsterRefire(0, "See")
    Goto TeleportHate
	
  DeathMain:
    TNT1 A 0 A_GiveInventory ("RLNightmareSpiderMastermindKillIncrementer", 1, AAPTR_PLAYER1) // Used for tallying total kills and bestiary info
    TNT1 A 0 A_StopSound(CHAN_WEAPON)
    NMAS J 20 A_Scream
    NMAS K 10 A_NoBlocking
    NMAS 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, "")
    NMAS 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, "")
    NMAS PQ 10 Bright
    NMAS R 10
    NMAS S 30
    NMAS S 0 A_BossDeath
    "####" "#" 0 A_Jump(256, "DeathEnd")
    Goto DeathEnd
  DeathFrame:
    NMAS S 0 A_BossDeath
    "####" "#" 0 A_Jump(256, "DeathEnd")
    Goto DeathEnd
	
	//Ice
  GenericFreezeDeath:
	"####" "#" 0 A_GiveInventory ("RLNightmareSpiderMastermindKillIncrementer", 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  --
//==============================================================================
  ArsenalMeleeCheck:
	"####" "#" 0 A_JumpIf(CallACS("DRLA_specialstarts") == 2, "Duke2LaserMelee")
    "####" "#" 0 A_JumpIfInventory("DRPGShadowAuraToken", 1, "ShadowAuraMeleeAttack") // DRPG Shadow Aura
    "####" "#" 0 A_JumpIfInventory("LDLegendaryMonsterTransformed", 1, "LegendaryMeleeAttack") // LegenDoom legendary monster
    "####" "#" 0 A_Jump(256, "MeleeProper")
	Goto MeleeProper
	
  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(CHAN_WEAPON)
    TNT1 A 0 A_JumpIfInventory("DRPGGreenAuraToken", 1, 2)
    TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
    TNT1 A 0 A_ChangeFlag("QUICKTORETALIATE", 1)
    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 ("RLNightmareSpiderMastermindKillIncrementer", 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, "")
    NMAS 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  --
//==============================================================================
  Duke2LaserAttack:
    NMAS T 10 A_FaceTarget
  Duke2LaserRepeat:
    NMAS GH 1 Bright A_CustomMissile ("RLDuke2EnemyBasicShot", 43, 8, frandom(-15,15), CMF_OFFSETPITCH, frandom(-3,3))
	TNT1 A 0 A_MonsterRefire (200, "Duke2LaserEnd")
    Goto RepeatFriendlyCheck
  Duke2LaserEnd:
    NMAS U 10 A_FaceTarget
    Goto See
	
  Duke2LaserMelee:
    TNT1 A 0 A_PlaySound("nightmaremastermind/minigunloop", CHAN_WEAPON, 1, 1, 0.3)
    TNT1 A 0 A_SetAngle (angle+10)
    TNT1 A 0 A_JumpIfInventory ("RLSpiderMastermindStateCounter", 1, "Duke2LaserMeleeAlt")
    TNT1 A 0 A_GiveInventory ("RLSpiderMastermindStateCounter", 1)
    NMAS G 1 Bright  A_CustomMissile ("RLDuke2EnemyBasicShot", 43, 8, frandom(-15,15), CMF_OFFSETPITCH, frandom(-3,3))
    TNT1 A 0 A_Jump (252, "Melee")
    Goto ProlongedFireEnd
  Duke2LaserMeleeAlt:
    TNT1 A 0 A_TakeInventory ("RLSpiderMastermindStateCounter", 1)
    NMAS H 1 Bright  A_CustomMissile ("RLDuke2EnemyBasicShot", 43, 8, frandom(-15,15), CMF_OFFSETPITCH, frandom(-3,3))
    TNT1 A 0 A_Jump (252, "Melee")
    Goto ProlongedFireEnd

//==============================================================================
//					--	Final Doomer Compatibility Stuff  --
//==============================================================================
  DeathXSparkFrame:
    "####" "#" 0 A_JumpIfInTargetInventory("Mana",0,2)
    "####" "#" 0 A_DropItem("MajorManaPod",-1,54)
    NMAS J 0 A_BossDeath
    "####" "#" 0 A_Jump(256, "DeathXSpark")
	Goto DeathXSpark
	
//==============================================================================
//					--	Guncaster Compatibility Stuff  --
//==============================================================================
	MidasFrame1:
		NMAS U 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:
		NMAS U 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:
		NMAS U 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:
		NMAS U 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
		NMAS U 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
		NMAS U 0 A_ChangeFlag("NOPAIN",1)
		"####" "#" 0 A_SetUserVar("User_LightningLock", User_LightningLock + 10)
		"####" "#" 0 A_Jump(256,"BlueLightningLock")
		Goto BlueLightningLock
  }
}

ACTOR RLNightmareMastermindDarkAura
{
  Radius 100
  Height 100
  VSpeed 3
  +MTHRUSPECIES
  +NOGRAVITY
  +FLOORCLIP
  +NOLIFTDROP
  +NOTONAUTOMAP
  +NOTIMEFREEZE
  +BLOODSPLATTER
  DamageType "MindRape"
  Alpha 0.8
  RenderStyle Stencil
  States
  {
  Spawn:
    TNT1 A 0 NoDelay A_Explode (3, 256, 0, 0, 256)
    TNT1 A 0 A_RadiusGive ("PowerRLCorruptionContextEffect", 512, RGF_CORPSES, 1) // Resurrects and corrupts nearby player bodies, beware
    TNT1 A 0 A_Jump (60, "SpawnLoop")
    TNT1 A 0 A_RadiusGive ("RLNightmareMastermindDarkAuraBlend", 256, RGF_PLAYERS, 1)
  SpawnLoop:
    TNT1 A 0 A_SetScale (ScaleX, ScaleY+0.1)
    NMAS V 1 A_FadeTo (0, 0.06, 1)
    Loop
  }
}

ACTOR RLNightmareMastermindDarkAuraBlend : CustomInventory
{
  -COUNTITEM
  +INVENTORY.ALWAYSPICKUP
  Inventory.PickupMessage ""
  Inventory.PickupSound ""
  States
  {
  Spawn:
    TNT1 A 1
    Stop
  Pickup:
    TNT1 A 0 
    TNT1 A 0 A_SetBlend("Black", 0.35, 3)
    Stop
  }
}

ACTOR RLNightmareMastermindFadeOut
{
  Radius 100
  Height 100
  +NOGRAVITY
  +FLOORCLIP
  +NOLIFTDROP
  +NOTONAUTOMAP
  +NOTIMEFREEZE
  Alpha 1.0
  RenderStyle Stencil
  States
  {
  Spawn:
    TNT1 A 0
    NMAS V 1 A_FadeTo (0, 0.08, 1)
    Loop
  }
}

ACTOR RLNightmareMastermindFadeOutFast : RLNightmareMastermindFadeOut
{
  States
  {
  Spawn:
    TNT1 A 0
    NMAS V 1 A_FadeTo (0, 0.22, 1)
    Loop
  }
}

ACTOR RLNightmareMastermindDarkShockwave
{
   Projectile
   Radius 8
   Height 8
   Speed 0
   Scale 0.8
   Damage 0
   RENDERSTYLE Stencil
   Alpha 0.98
   +NOCLIP
   +NOINTERACTION
   +NOTIMEFREEZE
   States
   {
   Spawn:
   SHOK ABCDEFGHIJKLMNOPQR 1 Bright A_SetScale (ScaleX+0.2)
   Stop
   }
}

ACTOR RLNightmareMastermindExplodePuff
{ 
   +NOGRAVITY
   +NOBLOCKMAP
   +PUFFONACTORS
   +PUFFGETSOWNER
   +RANDOMIZE
   +THRUGHOST
   +MTHRUSPECIES
   RenderStyle Add
   Alpha 0.9
   Mass 5
   Scale 0.6
   Decal "RevenantScorch"
   Damagetype "Fire"
   States
   {
   Spawn:
    TNT1 A 0
    TNT1 A 0 A_CheckFlag ("NOTIMEFREEZE", "DoorpegAntiTime", AAPTR_TARGET)
    Goto SpawnAura
  DoorpegAntiTime: // If the firing monster has blue aura in DoomRPG, the projectile is not frozen in time.
    TNT1 A 0 A_ChangeFlag ("NOTIMEFREEZE", 1)
    Goto SpawnAura
  SpawnAura: // Projectile animation
      TNT1 A 0 A_PlaySound("rlmonsters/bulletexp", 7, 0.5, 0, 1.2)
      TNT1 A 0 A_Explode (20,16, 0, 1)
      MICX ABCDEFG 2 Bright
      Stop
   }
}

ACTOR RLDRPGSummonedNightmareSpiderMastermind : RLNightmareSpiderMastermind
{
  -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 RLCCNightmareSpiderMastermind : RLNightmareSpiderMastermind
{
  +TOUCHY
  States
  {
  See:
    NMAS TUTUTUTUTUTUTUTU 1
    Loop
  Missile:
    NMAS GHGHGHGH 1 Bright
    Goto See
  Melee:
    NMAS TUTUTUTUTUTUTUTU 1
    Goto See
  Death:
    NMAS J 20 A_Scream
    NMAS K 10 A_NoBlocking
    NMAS L 10
    NMAS MNOPQ 10 Bright
    NMAS R 10
    NMAS S 30
    NMAS S -1 A_BossDeath
    Stop
  }
}
