ACTOR Doom_Arachnotron : ZBaseActorMetal 19394
{
  Obituary "$OB_BABY"
  health 500
  Radius 29
  Height 64
  Mass 1000
  Speed 12
  Scale 1.1
  SeeSound "baby/sight"
  PainSound "baby/pain"
  DeathSound "baby/death"
  ActiveSound "baby/active"
  dropitem "ShrinkerAmmo" 32 20
  dropitem "ExpanderAmmo" 32 20
  dropitem "Shrinker" 16
  dropitem "Expander" 16
  dropitem "BootsPickup" 4
  dropitem "PigCopShotgun" 64
  dropitem "DukeArmor" 4
  MONSTER
  +FLOORCLIP
  +NOICEDEATH
  +NOBLOOD
  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 64
  painchance "Fire", 10
  painchance "BulletFlame", 10
  painchance "PlasmaSpark", 256
  painchance "MicrowaveBlast", 256
  Species "Arachnotrons"
  +DOHARMSPECIES
  +NOINFIGHTSPECIES
  +DONTHARMCLASS
  WoundHealth 10
  States
  {
  Spawn:
    BSPI A 10 {A_Look; if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    Loop
  See:
    "####" "#" 0 A_PlaySound("baby/walk", 6)
    BSPI ABCDEF 3 {A_Chase; if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    Loop
  Missile:
    "####" "#" 0 A_Jump (224, 2)
    "####" "#" 0 A_JumpIfCloser(500,"Missile2")
    BSPI AAAA 5 {A_FaceTarget; if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    BSPI GG 3 {A_FaceTarget; if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_CustomMissile("MuzzleFlashMedium",32,0,0)
    "####" "#" 0 A_PlaySound("robotlame/shoot", 6)
    BSPI H 3 bright {A_CustomMissile("DoomEnemyPlasmaBall", 25, 0, 0, 0); if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    BSPI GG 3 {A_FaceTarget; if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_CustomMissile("MuzzleFlashMedium",32,0,0)
    "####" "#" 0 A_PlaySound("robotlame/shoot", 6)
    BSPI H 3 bright {A_CustomMissile("DoomEnemyPlasmaBall", 25, 0, 0, 0); if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    BSPI GG 3 {A_FaceTarget; if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_CustomMissile("MuzzleFlashMedium",32,0,0)
    "####" "#" 0 A_PlaySound("robotlame/shoot", 6)
    BSPI H 3 bright {A_CustomMissile("DoomEnemyPlasmaBall", 25, 0, 0, 0); if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    BSPI GG 3 {A_FaceTarget; if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_CustomMissile("MuzzleFlashMedium",32,0,0)
    "####" "#" 0 A_PlaySound("robotlame/shoot", 6)
    BSPI H 3 bright {A_CustomMissile("DoomEnemyPlasmaBall", 25, 0, 0, 0); if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_SpidRefire
    "####" "#" 0 A_Jump(32,"See")
    Goto Missile+6
  Missile2:
    BSPI AAAA 5 {A_FaceTarget; if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    BSPI R 3 {A_FaceTarget; if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_PlaySound("rpg/shoot", CHAN_WEAPON, 3, 0, ATTN_NORM)
    "####" "#" 0 A_CustomMissile("Doom_ArachnotronMortar",25,0,random[RIDMONSTERAT](-2,2),2,random[RIDMONSTERAT](0,5))
    "####" "#" 0 A_CustomMissile("MuzzleFlashMedium",32,0,0)
    BSPI SSS 3 Bright {A_facetarget; if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    BSPI R 3 {A_FaceTarget; if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_PlaySound("rpg/shoot", CHAN_WEAPON, 3, 0, ATTN_NORM)
    "####" "#" 0 A_CustomMissile("Doom_ArachnotronMortar",25,0,random[RIDMONSTERAT](-2,2),2,random[RIDMONSTERAT](0,5))
    "####" "#" 0 A_CustomMissile("MuzzleFlashMedium",32,0,0)
    BSPI SSS 3 Bright {A_facetarget; if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    BSPI R 3 {A_FaceTarget; if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    "####" "#" 0 A_PlaySound("rpg/shoot", CHAN_WEAPON, 3, 0, ATTN_NORM)
    "####" "#" 0 A_CustomMissile("Doom_ArachnotronMortar",25,0,random[RIDMONSTERAT](-2,2),2,random[RIDMONSTERAT](0,5))
    "####" "#" 0 A_CustomMissile("MuzzleFlashMedium",32,0,0)
    BSPI SSS 3 Bright {A_facetarget; if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, 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")
    BSPI I 3 {if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    BSPI I 3 {A_Pain; if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    goto See
  Pain2:
    BSPI Q 3 {if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    BSPI Q 3 {A_Pain; if (health > 125) {return;} A_CustomMissile("FlameTrails1", 30, 0, random[RIDFX](0, 360), CMF_AIMDIRECTION, random[RIDFX](60, 90));}
    goto See
  Pain.MicrowaveBlast:
    BSPI 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:
    BSPI J 7 A_Scream
    "####" "#" 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)
    BSPI K 7
    BSPI L 7 A_SpawnItemEx("RPGExplosion",0,0,32,0,0,0,0,SXF_ABSOLUTEVELOCITY,0)
    "####" "#" 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("Doom_ArachnotronLeg", 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)
    TNT1 A 10 A_SpawnItemEx("PigFlyerExplosion",random[RIDFX](-16,16),random[RIDFX](-16,16),random[RIDFX](0,32),0,0,0,0,0)
    Stop
  }
}

Actor Doom_ArachnotronMortar : PigBruteMortar
{
  Damage (15)
  Obituary "%o was brutally destroyed by an Arachnotron."
  States
  {
  Death:
    TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 180))
    TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    "####" "#" 0 A_CustomMissile ("RPGExplosion", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 AAAAA 0 A_CustomMissile ("ExplosionSmokeFast22", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    "####" "#" 0 A_SpawnItem("BigRicoChet")
    "####" "#" 0 A_SPawnItem("ExplosionAirDisplacementEffect")
    "####" "#" 0 A_PlaySound("rpg/blowup")
    "####" "#" 0 A_PlayWeaponSound("rpg/blowup")
    "####" "#" 0 Radius_Quake(2, 8, 0, 12, 0)
    TNT1 A 2
    "####" "#" 0 A_Explode(15, 136)
    TNT1 A 10
    stop
  }
}

actor DoomEnemyPlasmaBall : ZMissile
{
  PROJECTILE
  Damage (10)
  Speed 25
  Height 6
  Radius 10
  Scale 1.0
  Renderstyle Add
  SeeSound "baby/attack"
  DeathSound "baby/shotx"
  Alpha 1.0
  decal DukeSmallScorch
  +RANDOMIZE
  damagetype "Plasma"
  -THRUSPECIES
  Species "none"
  States
  {
  Spawn:
    TNT1 A 0 NoDelay A_Jump(128,"Spawn3")
  Spawn2:
    TNT1 A 0 A_SpawnItemEx("DoomPlasmaBallTrail2", (6 *momx)/-35.0, -(6 *momy)/-35.0, 2+(6 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE)
    PLSS A 1 Bright {A_SpawnItem("BlueFlare22Small",0,0); A_SpawnItemEx("DoomPlasmaBallTrail1", (3 *momx)/-35.0, -(3 *momy)/-35.0, 2+(3 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);}
    TNT1 A 0 A_SpawnItemEx("DoomPlasmaBallTrail3", (9 *momx)/-35.0, -(9 *momy)/-35.0, 2+(9 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE)
    PLSS A 1 Bright {A_SpawnItem("BlueFlare22Small",0,0); A_SpawnItemEx("DoomPlasmaBallTrail2", (6 *momx)/-35.0, -(6 *momy)/-35.0, 2+(6 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);}
    TNT1 A 0 A_SpawnItemEx("DoomPlasmaBallTrail4", (12*momx)/-35.0, -(12*momy)/-35.0, 2+(12*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE)
    PLSS B 1 Bright {A_SpawnItem("BlueFlare22Small",0,0); A_SpawnItemEx("DoomPlasmaBallTrail3", (9 *momx)/-35.0, -(9 *momy)/-35.0, 2+(9 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);}
    TNT1 A 0 A_SpawnItemEx("DoomPlasmaBallTrail1", (3 *momx)/-35.0, -(3 *momy)/-35.0, 2+(3 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE)
    PLSS B 1 Bright {A_SpawnItem("BlueFlare22Small",0,0); A_SpawnItemEx("DoomPlasmaBallTrail4", (12*momx)/-35.0, -(12*momy)/-35.0, 2+(12*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);}
    loop
  Spawn3:
    TNT1 A 0 A_SpawnItemEx("DoomPlasmaBallTrail2", (6 *momx)/-35.0, -(6 *momy)/-35.0, 2+(6 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE)
    PLSS B 1 Bright {A_SpawnItem("BlueFlare22Small",0,0); A_SpawnItemEx("DoomPlasmaBallTrail1", (3 *momx)/-35.0, -(3 *momy)/-35.0, 2+(3 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);}
    TNT1 A 0 A_SpawnItemEx("DoomPlasmaBallTrail3", (9 *momx)/-35.0, -(9 *momy)/-35.0, 2+(9 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE)
    PLSS B 1 Bright {A_SpawnItem("BlueFlare22Small",0,0); A_SpawnItemEx("DoomPlasmaBallTrail2", (6 *momx)/-35.0, -(6 *momy)/-35.0, 2+(6 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);}
    TNT1 A 0 A_SpawnItemEx("DoomPlasmaBallTrail4", (12*momx)/-35.0, -(12*momy)/-35.0, 2+(12*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE)
    PLSS A 1 Bright {A_SpawnItem("BlueFlare22Small",0,0); A_SpawnItemEx("DoomPlasmaBallTrail3", (9 *momx)/-35.0, -(9 *momy)/-35.0, 2+(9 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);}
    TNT1 A 0 A_SpawnItemEx("DoomPlasmaBallTrail1", (3 *momx)/-35.0, -(3 *momy)/-35.0, 2+(3 *momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE)
    PLSS A 1 Bright {A_SpawnItem("BlueFlare22Small",0,0); A_SpawnItemEx("DoomPlasmaBallTrail4", (12*momx)/-35.0, -(12*momy)/-35.0, 2+(12*momz)/-35.0, 0,0,0, 0, SXF_ABSOLUTEANGLE);}
    loop
  Death:
    TNT1 AAAAA 0 A_CustomMissile ("BluePlasmaParticle", 0, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    TNT1 A 0 A_Explode(5,70,0)
    PLSE A 1 {A_SpawnItem("BlueFlare22",0,0); A_FadeOut(0.085);}
    PLSE A 1 {A_SpawnItem("BlueFlare22",0,0); A_FadeOut(0.085);}
    PLSE B 1 {A_SpawnItem("BlueFlare22",0,0); A_FadeOut(0.085);}
    PLSE B 1 {A_SpawnItem("BlueFlare22",0,0); A_FadeOut(0.085);}
    TNT1 AAA 0 A_CustomMissile ("OldschoolRocketSmokeTrail3", 2, 0, random[RIDFX](0, 360), 2, random[RIDFX](0, 360))
    PLSE C 1 {A_SpawnItem("BlueFlare22",0,0); A_FadeOut(0.085);}
    PLSE C 1 {A_SpawnItem("BlueFlare22",0,0); A_FadeOut(0.085);}
    PLSE D 1 A_FadeOut(0.085)
    PLSE D 1 A_FadeOut(0.085)
    PLSE E 1 A_FadeOut(0.085)
    PLSE E 1 A_FadeOut(0.085)
    Stop
  }
}

ACTOR DoomPlasmaBallTrail1
{
  +THRUACTORS
  +CLIENTSIDEONLY
  +NOBLOCKMAP
  +NOGRAVITY
  Renderstyle Add
  Alpha 0.99
  Scale 1.0
  +MISSILE
  +THRUGHOST
  States
  {
  Spawn:
    TNT1 A 0 NoDelay A_Jump(128,"Spawn2")
    PLSS A 1 BRIGHT
    Stop
  Spawn2:
    PLSS B 1 BRIGHT
    Stop
  }
}

ACTOR DoomPlasmaBallTrail2 : DoomPlasmaBallTrail1
{
  Alpha 0.6
  States
  {
  Spawn:
    TNT1 A 0 NoDelay A_Jump(128,"Spawn2")
    PLSS A 1 BRIGHT
    Stop
  Spawn2:
    PLSS B 1 BRIGHT
    Stop
  }
}

ACTOR DoomPlasmaBallTrail3 : DoomPlasmaBallTrail1
{
  Alpha 0.3
  States
  {
  Spawn:
    TNT1 A 0 NoDelay A_Jump(128,"Spawn2")
    PLSS A 1 BRIGHT
    Stop
  Spawn2:
    PLSS B 1 BRIGHT
    Stop
  }
}

ACTOR DoomPlasmaBallTrail4 : DoomPlasmaBallTrail1
{
  Alpha 0.1
  States
  {
  Spawn:
    TNT1 A 0 NoDelay A_Jump(128,"Spawn2")
    PLSS A 1 BRIGHT
    Stop
  Spawn2:
    PLSS B 1 BRIGHT
    Stop
  }
}