ACTOR Doom_SpiderMastermind : ZBaseActorMetal 19404
{
  Obituary "%o was destroyed by a Mastermind."
  Health 4000
  Radius 60
  Height 100
  Mass 5000
  Speed 20
  Scale 1.0
  SeeSound "spider/sight"
  AttackSound "spider/attack"
  PainSound "spider/pain"
  DeathSound "spider/death"
  ActiveSound "spider/active"
  MONSTER
  +FLOORCLIP
  +MISSILEMORE
  +MISSILEEVENMORE
  +NOICEDEATH
  +NOBLOOD
  +BOSS
  damagefactor "Shrinker", 0.0
  damagefactor "Expander", 0.5
  damagefactor "AlienzShrinker", 0.0
  damagefactor "Shrinkerhit", 0.0
  damagefactor "Explosion", 0.7
  damagefactor "RocketExplosion", 0.7
  damagefactor "ShellExplosion", 0.85
  damagefactor "Fire", 0.5
  damagefactor "BulletFlame", 0.5
  damagefactor "Plasma", 1.3
  damagefactor "MicrowaveBlast", 1.3
  PainChance 32
  painchance "Fire", 10
  painchance "BulletFlame", 10
  painchance "PlasmaSpark", 256
  painchance "MicrowaveBlast", 256
  Species "SpiderMasterminds"
  +DOHARMSPECIES
  +NOINFIGHTSPECIES
  +DONTHARMCLASS
  WoundHealth 10
  States
  {
  Spawn:
    SPID A 7 {A_Look; if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    Loop
  See:
    SPID A 3 {A_Metal; if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    SPID ABB 3 {A_Chase; if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    SPID C 3 {A_Metal; if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    SPID CDD 3 {A_Chase; if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    SPID E 3 {A_Metal; if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    SPID EFF 3 {A_Chase; if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    Loop
  Missile:
    "####" "#" 0 A_Jump(64,"Grenade")
    SPID AAAAA 4 BRIGHT {A_FaceTarget; if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 bright A_CustomMissile("EnemyProjectile", 42, 5, random[RIDMONSTERAT](-3, 3), CMF_OFFSETPITCH, random[RIDMONSTERAT](-1, 1))
    SPID H 1 bright {A_CustomMissile("EnemyProjectile", 42, 5, random[RIDMONSTERAT](-3, 3), CMF_AIMOFFSET, random[RIDMONSTERAT](-1, 1)); if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_CustomMissile("40mmSpawnLeft2", 40, 0, -60, 2, random[RIDFX](0, 10))
    SPID G 1 A_FaceTarget
    "####" "#" 0 A_CustomMissile("MuzzleFlashFast",32,0,0)
    "####" "#" 0 A_PlayWeaponSound("spider/attack")
    "####" "#" 0 bright A_CustomMissile("EnemyProjectile", 42, 5, random[RIDMONSTERAT](-3, 3), CMF_OFFSETPITCH, random[RIDMONSTERAT](-1, 1))
    SPID H 1 bright A_CustomMissile("EnemyProjectile", 42, 5, random[RIDMONSTERAT](-3, 3), CMF_AIMOFFSET, random[RIDMONSTERAT](-1, 1))
    "####" "#" 0 A_CustomMissile("40mmSpawnLeft2", 40, 0, -60, 2, random[RIDFX](0, 10))
    SPID G 1 {A_FaceTarget; if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_CustomMissile("MuzzleFlashFast",32,0,0)
    "####" "#" 0 A_PlayWeaponSound("spider/attack")
    "####" "#" 0 bright A_CustomMissile("EnemyProjectile", 42, 5, random[RIDMONSTERAT](-3, 3), CMF_OFFSETPITCH, random[RIDMONSTERAT](-1, 1))
    SPID H 1 bright A_CustomMissile("EnemyProjectile", 42, 5, random[RIDMONSTERAT](-3, 3), CMF_AIMOFFSET, random[RIDMONSTERAT](-1, 1))
    "####" "#" 0 A_CustomMissile("40mmSpawnLeft2", 40, 0, -60, 2, random[RIDFX](0, 10))
    SPID G 1 A_FaceTarget
    "####" "#" 0 A_CustomMissile("MuzzleFlashFast",32,0,0)
    "####" "#" 0 A_PlayWeaponSound("spider/attack")
    "####" "#" 0 bright A_CustomMissile("EnemyProjectile", 42, 5, random[RIDMONSTERAT](-3, 3), CMF_OFFSETPITCH, random[RIDMONSTERAT](-1, 1))
    SPID H 1 bright {A_CustomMissile("EnemyProjectile", 42, 5, random[RIDMONSTERAT](-3, 3), CMF_AIMOFFSET, random[RIDMONSTERAT](-1, 1)); if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_CustomMissile("40mmSpawnLeft2", 40, 0, -60, 2, random[RIDFX](0, 10))
    SPID G 1 A_FaceTarget
    "####" "#" 0 A_CustomMissile("MuzzleFlashFast",32,0,0)
    "####" "#" 0 A_PlayWeaponSound("spider/attack")
    SPID G 1 A_CposRefire
    "####" "#" 0 A_Jump(4,"See")
    goto Missile+6
  Grenade:  
    "####" "#" 0 A_JumpIfCloser(400,"Missile")
    SPID AAAAA 3 {A_FaceTarget; if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_PlaySound("rpg/shoot", CHAN_WEAPON, 3, 0, ATTN_NORM)
    "####" "#" 0 A_CustomMissile("BattleLordAttack",42, 5,-6,2,32)
    "####" "#" 0 A_CustomMissile("BattleLordAttack",42, 5,0,2,32)
    "####" "#" 0 A_CustomMissile("BattleLordAttack",42, 5,6,2,32)
    "####" "#" 0 A_CustomMissile("MuzzleFlashSmall",32,0,0)
    SPID GGTTT 3 BRIGHT {if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    SPID AAAAA 3 {A_FaceTarget; if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_PlaySound("rpg/shoot", CHAN_WEAPON, 3, 0, ATTN_NORM)
    "####" "#" 0 A_CustomMissile("BattleLordAttack",42, 5,-3,2,32)
    "####" "#" 0 A_CustomMissile("BattleLordAttack",42, 5,3,2,32)
    "####" "#" 0 A_CustomMissile("MuzzleFlashSmall",32,0,0)
    SPID GGTTT 3 BRIGHT {if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    SPID AAAAA 3 {A_FaceTarget; if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_PlaySound("rpg/shoot", CHAN_WEAPON, 3, 0, ATTN_NORM)
    "####" "#" 0 A_CustomMissile("BattleLordAttack",42, 5,-6,2,32)
    "####" "#" 0 A_CustomMissile("BattleLordAttack",42, 5,0,2,32)
    "####" "#" 0 A_CustomMissile("BattleLordAttack",42, 5,6,2,32)
    "####" "#" 0 A_CustomMissile("MuzzleFlashSmall",32,0,0)
    SPID GGTTT 3 BRIGHT {if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    goto See
  Pain:
    "####" "#" 0 A_SpawnDebris("DukeMechParticle", FALSE, 1.0, 1.0)
    "####" "#" 0 A_Jump(128,"Pain2")
    SPID I 3 {if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    SPID I 3 {A_Pain; if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    goto See
  Pain2:
    SPID U 3 {if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    SPID U 3 {A_Pain; if (health > 1000) {return;} A_CustomMissile("FlameTrails1", 60, 5, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    goto See
  Pain.MicrowaveBlast:
    SPID I 1
    "####" "#" 0 A_CheckThump("Pain")
    loop
  Death.Plasma:
    "####" "#" 0 A_SpawnItemEx("DukePlasmaExplosion",0,0,32,0,0,0,0,1,0)
  Death:
  XDeath:
  Death.BossStomp:
  Death.Explosion:
  Death.RocketExplosion:
  Death.ExplosiveShotgun:
  Death.ShellExplosion:
    "####" "#" 0 A_Scream
    SPID JJJJJJJJJJJJJJJJJJJJ 1 A_CustomMissile("FlameTrails1", random[RIDFX](60, 80), random[RIDFX](-30, 30), random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90))
    SPID KKKKKKKKKK 1 A_CustomMissile("FlameTrails1", random[RIDFX](20, 40), random[RIDFX](0, 50), random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90))
    SPID LLLLLLLLLL 1 A_CustomMissile("FlameTrails1", random[RIDFX](0, 30), random[RIDFX](20, 70), random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90))
    "####" "#" 0 A_SpawnDebris("MetalGibs1", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("MetalGibs2", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("MetalGibs3", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("MetalGibs4", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("MetalGibs5", FALSE, 1.0, 1.0)
    SPID M 1 A_SpawnItemEx("ExpanderExplosion",0,0,32,0,0,0,0,SXF_ABSOLUTEVELOCITY,0)
    SPID M 1
    SPID M 1
    SPID M 1
    "####" "#" 0 A_SpawnDebris("MetalGibs1", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("MetalGibs2", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("MetalGibs3", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("MetalGibs4", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("MetalGibs5", FALSE, 1.0, 1.0)
    "####" "#####" 0 A_CustomMissile ("ShrinkerAttackSmoke", random[RIDFX](-5, 60), random[RIDFX](-35, 35), random[RIDFX](0, 360), 2, random[RIDFX](0, 160))
    SPID N 1 A_SpawnItemEx("RPGExplosion",random[RIDFX](-20,20),random[RIDFX](-20,20),5)
    SPID N 1 A_SpawnItemEx("RPGExplosion",random[RIDFX](-20,20),random[RIDFX](-20,20),5)
    SPID N 1 A_SpawnItemEx("RPGExplosion",random[RIDFX](-40,40),random[RIDFX](-40,40),5)
    SPID N 1 A_SpawnItemEx("RPGExplosion",random[RIDFX](-40,40),random[RIDFX](-40,40),5)
    SPID O 1 A_SpawnItemEx("RPGExplosion",random[RIDFX](-60,60),random[RIDFX](-60,60),5)
    SPID O 1 A_SpawnItemEx("RPGExplosion",random[RIDFX](-60,60),random[RIDFX](-60,60),5)
    SPID O 1 A_SpawnItemEx("RPGExplosion",random[RIDFX](-80,80),random[RIDFX](-80,80),5)
    SPID O 1 A_SpawnItemEx("RPGExplosion",random[RIDFX](-80,80),random[RIDFX](-80,80),5)
    "####" "#####" 0 A_CustomMissile ("ShrinkerAttackSmoke", random[RIDFX](-5, 60), random[RIDFX](-35, 35), random[RIDFX](0, 360), 2, random[RIDFX](0, 160))
    "####" "#" 0 A_NoBlocking
    "####" "#" 0 A_BossDeath
    "####" "#" 0 A_SpawnDebris("DukeGibs1", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs1", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs1", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#####" 0 A_CustomMissile ("RedPlasmaParticle", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    "####" "#####" 0 A_CustomMissile ("RedPlasmaParticle", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    "####" "#####" 0 A_CustomMissile ("RedPlasmaParticle", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    "####" "#" 0 A_SpawnDebris("Doom_SpiderMastermindLeg", FALSE, 1.0, 1.0)
    "####" "#" 0 A_Explode(100,180)
    "####" "#" 0 A_PlaySound("rpg/blowup")
    "####" "#" 0 A_PlayWeaponSound("rpg/blowup")
    "####" "#" 0 A_SpawnDebris("DukeGibs1", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs1", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs2", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs3", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs4", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs5", TRUE, 1.0, 1.0)
    "####" "#" 0 A_SpawnDebris("DukeGibs6", FALSE, 1.0, 1.0)
    SPID PPPPQQQQRRRR 1 A_FadeOut(0.075,0)
   "####" "###" 0 A_CustomMissile ("ShrinkerAttackSmoke", random[RIDFX](-5, 60), random[RIDFX](-35, 35), random[RIDFX](0, 360), 2, random[RIDFX](0, 160))
    Stop
  }
}