actor MSpiderMastermind : SpiderMastermind replaces SpiderMastermind
{
  tag "Spider Mastermind"
  health 5000 //3000 3.0.1
  Radius 100
  height 100
  mass 1000
  speed 12
  
  +ALWAYSFAST //added 3.0.1
  +NORADIUSDMG
  +QUICKTORETALIATE
  +NOINFIGHTING
  
  PainThreshold 200 //added
  
  PainChance "Control", 255
  DamageFactor "Control", 1
  dropitem "MQuadDamagePowerup" 64
  dropitem "MFrighteningPowerup" 32
  
  // Takes damage from 
  DamageFactor "CybRLDamage", 0 //added
  DamageFactor "CybYamato", 0.03
  DamageFactor "MarineDamage", 1
  DamageFactor "MarineRail", 0.9
  DamageFactor "ImpBallDamage", 1
  DamageFactor "ZombiesDamage", 1
  DamageFactor "CacoDamage", 1
  DamageFactor "SkelDamage", 1
  DamageFactor "FatsoDamage", 1
  DamageFactor "KnightDamage", 1
  DamageFactor "ArachDamage", 1
  DamageFactor "viledamage", 1

  states
  {
  Spawn:
    SPID A 10 A_Look 
    SPID B 10 
    SPID A 0 Thing_SetSpecial (0,226,409,0,health)
    loop
  See:
    SPID A 3 A_Metal
    SPID ABB 3 A_Chase
    SPID C 3 A_Metal
    SPID CDD 3 A_Chase
    SPID E 3 A_Metal
    SPID EFF 3 A_Chase
    SPID A 0 A_JumpIf (special != 226,1) 
    loop	
    SPID A 0 Thing_SetSpecial (0,226,409,0,health)
    goto see
  Missile:
    SPID A 20 A_FaceTarget
		SPID G 2 bright A_PlaySound("shotguy/attack", CHAN_WEAPON)
		SPID G 0 bright A_CustomBulletAttack(22.5, 0, 3, random(8,12), "SpiderMastermindBulletRico", 0, CBAF_NORANDOM)
		SPID G 0 A_CustomMissile("SpiderMastermindBulletTracer", 60, 0, random(-7, 7), 1, random(-2, 2))
    SPID H 2
    	SPID G 2 bright A_PlaySound("shotguy/attack", CHAN_WEAPON)
		SPID G 0 bright A_CustomBulletAttack(22.5, 0, 3, random(8,12), "SpiderMastermindBulletRico", 0, CBAF_NORANDOM)
		SPID G 0 A_CustomMissile("SpiderMastermindBulletTracer", 60, 0, random(-7, 7), 1, random(-2, 2))
    SPID H 2
    	SPID G 2 bright A_PlaySound("shotguy/attack", CHAN_WEAPON)
		SPID G 0 bright A_CustomBulletAttack(22.5, 0, 3, random(8,12), "SpiderMastermindBulletRico", 0, CBAF_NORANDOM)
		SPID G 0 A_CustomMissile("SpiderMastermindBulletTracer", 60, 0, random(-7, 7), 1, random(-2, 2))
	SPID G 0 A_CheckSight ("See") //stop refire if no target in line of sight
    goto Missile+1
  Death.Control:
    TNT1 A 0 ACS_Execute(410,0,14)
    TNT1 A 10
    stop
  Death:
    SPID J 20 A_Scream
    SPID K 10 A_NoBlocking
    SPID LMNOPQR 10
    SPID S 30 A_GiveToTarget ("MarineExp",20)
    SPID S -1 A_BossDeath
    stop	
  }
}

//Ricochet round splash on wall
ACTOR SpiderMastermindBulletRico
{
  DamageType "ZombiesDamage"
  +NOEXTREMEDEATH
  +NOBLOCKMAP
  +NOGRAVITY
  +ALLOWPARTICLES
  +RANDOMIZE
  RenderStyle ADD //Translucent
  Alpha 1.5
  VSpeed 1
  Mass 5
  States
  {
  Spawn:
    FX58 ABCDEFGHJ 1
	Goto Death
  Death:
    TNT1 A 1 A_PlaySound("ricochet/hit",6) 
    Stop
  }
}

//Vulcan bullet tracer with ricochet sound and visuals
Actor SpiderMastermindBulletTracer: FastProjectile
{
	-DONTSPLASH
	//seesound "weapon/VulcanFire"
	damagetype Cutless
	Projectile
	+RANDOMIZE
	+FORCEXYBILLBOARD
	+DONTSPLASH 
    +NOEXTREMEDEATH
	//+CLIENTSIDEONLY //no network traffic spam
	damage 0
	radius 2
	height 2
	speed 140
	renderstyle ADD
	alpha 0.9
	scale .15
states
{
Spawn:
	TRAC A 1 BRIGHT
	Loop
Death:
	TNT1 A 0
    Stop
XDeath:
	TNT1 A 0
	Stop
} }