ACTOR DarkBishop 17560
{ 
  //$Category Monsters/DUST
  //$Sprite DPTRA1
  //$Title "Dark Bishop"
  Health 900 
  PainChance 70
  Speed 12
  Scale 1
  Radius 20 
  Height 56 
  Mass 150 
  Bloodcolor Black
  MONSTER
  +MISSILEMORE
  +FLOORCLIP
  +DONTHURTSPECIES
  +NOGRAVITY
  +FLOAT
  Obituary "%o's mind was consumed by a Dark Bishop."
  Species "CacoDemon"
  DropItem "BossLifeEssence" 160
  DropItem "BossArmorBonusMax" 160
  DropItem "HellStaff" 50
  DropItem "DustMana" 200 30
  DropItem "DustMana" 200 30
  SeeSound "DarkBishop/Sight" 
  PainSound "DarkBishop/Pain" 
  DeathSound "DarkBishop/Death" 
  ActiveSound "DarkBishop/Active" 
  States 
  { 
  Spawn: 
	DPTR A 10 A_Look 
	Loop 
  See: 
	DPTR AAABBB 4 A_Chase
	DPTR A 0 A_Jump(96,1)
	Loop
	DPTR A 0 A_Chase
	DPTR A 1 A_Playsound("monster/blur")
	DPTR A 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR A 1 A_Chase
	DPTR A 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR A 1 A_Chase
	DPTR A 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR A 1 A_Chase
	DPTR A 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR A 1 A_Chase
	DPTR A 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR A 1 A_Chase
	DPTR A 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR A 1 A_Chase
	DPTR B 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR B 1 A_Chase
	DPTR B 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR B 1 A_Chase
	DPTR B 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR B 1 A_Chase
	DPTR B 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR B 1 A_Chase
	DPTR B 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR B 1 A_Chase
	DPTR B 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR A 1 A_Chase
	DPTR A 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR A 1 A_Chase
	DPTR A 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR A 1 A_Chase
	DPTR A 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR A 1 A_Chase
	DPTR A 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR A 1 A_Chase
	DPTR A 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR A 1 A_Chase
	DPTR A 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR A 1 A_Chase
	DPTR B 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR B 1 A_Chase
	DPTR B 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR B 1 A_Chase
	DPTR B 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR B 1 A_Chase
	DPTR B 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR B 1 A_Chase
	DPTR B 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR B 1 A_Chase
	DPTR B 0 A_SpawnItem("DarkBishFX2",0,0)
	DPTR B 0 A_Jump(96,1)
	Goto See+8
	DPTR B 0
	Goto See
  Missile:
	TNT1 A 0 A_Jump(256,"HomingChargeBalls","RainProjectile","EvenMoreHoming","LetsBalanceTheHoming")
  HomingChargeBalls:
	DPTR D 8 Bright A_FaceTarget
	DPTR E 5 Bright A_FaceTarget
	TNT1 A 0 A_CustomMissile("DBishShot2",36,28,0,0)
	DPTR F 8 Bright A_CustomMissile("DBishShot",36,-28,0,0)
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_CustomMissile("DBishShot2",36,28,0,0)
	DPTR F 8 Bright A_CustomMissile("DBishShot",36,-28,0,0)
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_CustomMissile("DBishShot2",36,28,0,0)
	DPTR F 8 Bright A_CustomMissile("DBishShot",36,-28,0,0)
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_CustomMissile("DBishShot2",36,28,0,0)
	DPTR F 8 Bright A_CustomMissile("DBishShot",36,-28,0,0)
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_CustomMissile("DBishShot2",36,28,0,0)
	DPTR F 8 Bright A_CustomMissile("DBishShot",36,-28,0,0)
	TNT1 A 0 A_FaceTarget
	TNT1 A 0 A_CustomMissile("DBishShot2",36,28,0,0)
	DPTR F 8 Bright A_CustomMissile("DBishShot",36,-28,0,0)
	DPTR ED 6 Bright
	Goto See
  RainProjectile:
	DPTR D 8 Bright
	DPTR E 5 Bright A_FaceTarget
	DPTR F 8 Bright A_CustomMissile("DBishRain",36,0,0,0)
	DPTR ED 6 Bright
	Goto See
  EvenMoreHoming:
	DPTR D 8 Bright
	DPTR E 5 Bright A_FaceTarget
	DPTR D 0 A_PlaySound("dbish/atk3")
	DPTR D 0 A_CustomMissile("DBishHornRodFX",36,0,-20,0)
	DPTR D 0 A_CustomMissile("DBishHornRodFX",36,0,20,0)
	DPTR F 8 Bright A_CustomMissile("DBishHornRodFX",36,0,0,0)
	DPTR ED 6 Bright
	Goto See
  LetsBalanceTheHoming:
	DPTR D 8 Bright
	DPTR E 5 Bright A_FaceTarget
	DPTR F 5 Bright A_CustomMissile("DBishHornRodFXNotHoming",36,0,random(-6,6))
	TNT1 A 0 A_FaceTarget
	DPTR F 5 Bright A_CustomMissile("DBishHornRodFXNotHoming",36,0,random(-6,6))
	TNT1 A 0 A_FaceTarget
	DPTR F 5 Bright A_CustomMissile("DBishHornRodFXNotHoming",36,0,random(-6,6))
	TNT1 A 0 A_FaceTarget
	DPTR F 5 Bright A_CustomMissile("DBishHornRodFXNotHoming",36,0,random(-6,6))
	TNT1 A 0 A_FaceTarget
	DPTR F 5 Bright A_CustomMissile("DBishHornRodFXNotHoming",36,0,random(-6,6))
	TNT1 A 0 A_FaceTarget
	DPTR F 5 Bright A_CustomMissile("DBishHornRodFXNotHoming",36,0,random(-6,6))
	TNT1 A 0 A_FaceTarget
	DPTR F 5 Bright A_CustomMissile("DBishHornRodFXNotHoming",36,0,random(-6,6))
	TNT1 A 0 A_FaceTarget
	DPTR F 5 Bright A_CustomMissile("DBishHornRodFXNotHoming",36,0,random(-6,6))
	TNT1 A 0 A_FaceTarget
	DPTR F 5 Bright A_CustomMissile("DBishHornRodFXNotHoming",36,0,random(-6,6))
	DPTR ED 6 Bright
	Goto See
  Pain: 
	DPTR C 2 
	DPTR C 2 A_Pain 
	Goto See 
  Death: 
	DPTR G 8 Bright A_Scream 
	DPTR H 5 Bright
	DPTR I 5 Bright
	DPTR J 5 Bright A_NoBlocking 
	DPTR KLM 5 Bright
	DPTR N 5
	DPTR O 5  
	DPTR P -1 
	Stop 
  Raise: 
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
	DPTR PONMLKJIHG 5 
	Goto See 
  } 
}

ACTOR DarkBishFX2 : ImpballTrail
{  
  Radius 2
  Height 2
  Speed 0
  PROJECTILE
  RENDERSTYLE Translucent
  ALPHA 0.90
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	TNT1 A 3
	DPTR A 5 A_FadeOut(0.10)
	goto Spawn+3
  }
}

ACTOR DBishShot
{
  Radius 8
  Height 16
  Speed 30
  Damage 3
  RENDERSTYLE ADD
  ALPHA 0.67
  Damagetype "Void"
  PROJECTILE
  +THRUGHOST
  +SEEKERMISSILE
  SeeSound "DBish/Atk1"
  DeathSound "monster/acohit"
  Decal "BishopScorch"
  States
  {
  Spawn:
	PFX2 A 1 Bright A_Weave(3, 3, 2.0, 1.0)
	PFX2 A 0 Bright A_CustomMissile("DBishShotFX",0,0,0,0)
	PFX2 B 0 Bright A_SeekerMissile(1,1)
	PFX2 A 1 Bright A_Weave(3, 3, 2.0, 1.0)
	PFX2 A 0 Bright A_CustomMissile("DBishShotFX",0,0,0,0)
	PFX2 B 0 Bright A_SeekerMissile(1,1)
	PFX2 B 1 Bright A_Weave(3, 3, 2.0, 1.0)
	PFX2 A 0 Bright A_CustomMissile("DBishShotFX",0,0,0,0)
	PFX2 B 0 Bright A_SeekerMissile(1,1)
	PFX2 B 1 Bright A_Weave(3, 3, 2.0, 1.0)
	PFX2 A 0 Bright A_CustomMissile("DBishShotFX",0,0,0,0)
	PFX2 B 0 Bright A_SeekerMissile(1,1)
	loop
  Death:
	TNT1 A 0 A_SpawnItemEx("WhiteParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AA 0 A_CustomMissile("WhiteKaboom2", 0, 0, random(0,360), 2, random(0,360))
	TNT1 AA 0 A_CustomMissile("SmokeFX4", 0, 0, random(0,360), 2, random(0,360))
	PFX2 CDEFGH 3 Bright
	stop
  }
}

ACTOR DBishShot2 : DBishShot
{
  States
  {
  Spawn:
	PFX2 A 1 Bright A_Weave(3, 3, -2.0, 1.0)
	PFX2 A 0 Bright A_CustomMissile("DBishShotFX",0,0,0,0)
	PFX2 B 0 Bright A_SeekerMissile(1,1)
	PFX2 A 1 Bright A_Weave(3, 3, -2.0, 1.0)
	PFX2 A 0 Bright A_CustomMissile("DBishShotFX",0,0,0,0)
	PFX2 B 0 Bright A_SeekerMissile(1,1)
	PFX2 B 1 Bright A_Weave(3, 3, -2.0, 1.0)
	PFX2 A 0 Bright A_CustomMissile("DBishShotFX",0,0,0,0)
	PFX2 B 0 Bright A_SeekerMissile(1,1)
	PFX2 B 1 Bright A_Weave(3, 3, -2.0, 1.0)
	PFX2 A 0 Bright A_CustomMissile("DBishShotFX",0,0,0,0)
	PFX2 B 0 Bright A_SeekerMissile(1,1)
	loop
  }
}

ACTOR DBishShotFX : ImpBallTrail
{  
  Radius 2
  Height 2
  Speed 0
  PROJECTILE
  RENDERSTYLE ADD
  ALPHA 0.67
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	TNT1 A 2 Bright
	PFX2 AABB 1 Bright A_FadeOut(0.08)
	Goto Spawn+3
  }
}

Actor DBishRain : CacoHellStaffBall1
{
  Damage 12
  Seesound "Dbish/Atk2"
  States
  {
  Spawn:
	TNT1 AA 0 A_SpawnItemEx("WhiteHellStaffParticle",0,0,0,frandom(-8,8),frandom(-8,8),frandom(-8,8),random(0,360))
	HPRO D 1 Bright A_SpawnItem("WhiteHellStaffTrail")
	TNT1 AA 0 A_SpawnItemEx("WhiteHellStaffParticle",0,0,0,frandom(-8,8),frandom(-8,8),frandom(-8,8),random(0,360))
	HPRO D 1 Bright A_SpawnItem("WhiteHellStaffTrail")
	TNT1 AA 0 A_SpawnItemEx("WhiteHellStaffParticle",0,0,0,frandom(-8,8),frandom(-8,8),frandom(-8,8),random(0,360))
	HPRO E 1 Bright A_SpawnItem("WhiteHellStaffTrail")
	TNT1 AA 0 A_SpawnItemEx("WhiteHellStaffParticle",0,0,0,frandom(-8,8),frandom(-8,8),frandom(-8,8),random(0,360))
	HPRO E 1 Bright A_SpawnItem("WhiteHellStaffTrail")
	TNT1 AA 0 A_SpawnItemEx("WhiteHellStaffParticle",0,0,0,frandom(-8,8),frandom(-8,8),frandom(-8,8),random(0,360))
	HPRO F 1 Bright A_SpawnItem("WhiteHellStaffTrail")
	TNT1 AA 0 A_SpawnItemEx("WhiteHellStaffParticle",0,0,0,frandom(-8,8),frandom(-8,8),frandom(-8,8),random(0,360))
	HPRO F 1 Bright A_SpawnItem("WhiteHellStaffTrail")
	loop
  Death:
	TNT1 AAAAAAAAAA 0 A_SpawnItemEx("WhiteHellStaffParticle",0,0,0,frandom(-8,8),frandom(-8,8),frandom(0,12),random(0,360))
	TNT1 A 0 A_SpawnItemEx("WhiteParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 A 0 A_SetScale(1)
	PFX1 GH 5 bright
	PFX1 I 4 bright
	PFX1 JKL 3 bright
	TNT1 AAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("DBishRainDrop",random(-64,64),random(-64,64),0,0,0,0)
	TNT1 AAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("DBishRainDrop",random(-64,64),random(-64,64),0,0,0,0)
	TNT1 AAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("DBishRainDrop",random(-64,64),random(-64,64),0,0,0,0)
	TNT1 AAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("DBishRainDrop",random(-64,64),random(-64,64),0,0,0,0)
	TNT1 AAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("DBishRainDrop",random(-64,64),random(-64,64),0,0,0,0)
	TNT1 AAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("DBishRainDrop",random(-64,64),random(-64,64),0,0,0,0)
	stop
  }
}

Actor DBishRainDrop
{
  Radius 3
  Height 4
  Speed 12
  Damage (random(4,6)*4)
  Gravity 12
  +MISSILE
  +BRIGHT
  +CEILINGHUGGER
  +DONTSPLASH  
  +EXPLODEONWATER
  -CANBOUNCEWATER
  Renderstyle Add
  Species "Cacodemon"
  Mass 10
  States
  {
  Spawn:
	TNT1 A 2
  Spawn2:
	PFX3 A 1 A_JumpIf(momz >= 0,"Death")
	PFX3 A 1
	loop
  Death:
	PFX3 BCDEF 3
	stop
  }
}

ACTOR DBishHornRodFX : CacoHellStaffBall2
{
  Speed 25
  Damage 6
  +STRIFEDAMAGE
  States
  {
  Spawn:
	HPRO DDEEFF 1 Bright A_SpawnItem("WhiteHellStaffTrail")
	TNT1 A 0 A_SeekerMissile(15, 30)
	Loop
  Death:
	TNT1 A 0
	TNT1 AAAAAAAAA 0 A_SpawnItemEx("WhiteHellStaffParticle",0,0,0,frandom(-4,4),frandom(-4,4),frandom(-4,4),random(0,359))
	CLBA D 1 Bright A_FadeOut(0.2)
	Goto Death+1
  }
}

ACTOR DBishHornRodFXNotHoming : CacoHellStaffBall1
{
  Speed 35
  States
  {
  Spawn:
	HPRO DDEEFF 1 Bright A_SpawnItemEx("WhiteHellStaffParticle",0,0,0,0,frandom(-1,1),frandom(-1,1),random(0,359))
	Loop
  Death:
	TNT1 A 0
	TNT1 AAAAAAAAA 0 A_SpawnItemEx("WhiteHellStaffParticle",0,0,0,frandom(-4,4),frandom(-4,4),frandom(-4,4),random(0,359))
	CLBA D 1 Bright A_FadeOut(0.2)
	Goto Death+1
  }
}

ACTOR WhiteHellStaffParticle
{
  +NoInteraction
  +ClientSideOnly
  Renderstyle Add
  Scale 0.05
  States
  {
  Spawn:
  TNT1 A 2
  CLBA D 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.048)
  CLBA D 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.046)
  CLBA D 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.044)
  CLBA D 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.042)
  CLBA D 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.040)
  CLBA D 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.038)
  CLBA D 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.036)
  CLBA D 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.034)
  CLBA D 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.032)
	Stop
  }
}

ACTOR WhiteHellStaffTrail
{
  +NoInteraction
  +ClientSideOnly
  Renderstyle Add
  Scale 0.7
  States
  {
  Spawn:
  TNT1 A 2
  TNT1 A 0 A_Jump(256,"one","two","three")
  One:
  HPRO D 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.68)
  HPRO D 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.66)
  HPRO E 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.64)
  HPRO E 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.62)
  HPRO F 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.6)
  HPRO F 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.58)
  HPRO D 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.56)
  HPRO D 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.54)
  HPRO E 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.52)
  Stop
  Two:
  HPRO E 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.68)
  HPRO E 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.66)
  HPRO F 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.64)
  HPRO F 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.62)
  HPRO D 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.6)
  HPRO D 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.58)
  HPRO E 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.56)
  HPRO E 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.54)
  HPRO F 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.52)
  Stop
  Three:
  HPRO F 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.68)
  HPRO F 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.66)
  HPRO D 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.64)
  HPRO D 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.62)
  HPRO E 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.6)
  HPRO E 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.58)
  HPRO F 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.56)
  HPRO F 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.54)
  HPRO D 1 Bright A_FadeOut(0.1)
  TNT1 A 0 A_SetScale(0.52)
  Stop
  }
}