ACTOR DarkBishop
{ 
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."
DropItem "BossLifeEssence", 160
DropItem "BossArmorBonusMax", 160
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 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR A 1 A_Chase
       DPTR A 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR A 1 A_Chase
       DPTR A 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR A 1 A_Chase
       DPTR A 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR A 1 A_Chase
       DPTR A 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR A 1 A_Chase
       DPTR A 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR A 1 A_Chase
       DPTR B 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR B 1 A_Chase
       DPTR B 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR B 1 A_Chase
       DPTR B 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR B 1 A_Chase
       DPTR B 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR B 1 A_Chase
       DPTR B 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR B 1 A_Chase
       DPTR B 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR A 1 A_Chase
       DPTR A 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR A 1 A_Chase
       DPTR A 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR A 1 A_Chase
       DPTR A 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR A 1 A_Chase
       DPTR A 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR A 1 A_Chase
       DPTR A 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR A 1 A_Chase
       DPTR A 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR A 1 A_Chase
       DPTR B 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR B 1 A_Chase
       DPTR B 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR B 1 A_Chase
       DPTR B 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR B 1 A_Chase
       DPTR B 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR B 1 A_Chase
       DPTR B 0 Bright A_SpawnItem("DarkBishFX2",0,0)
       DPTR B 1 A_Chase
       DPTR B 0 Bright 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")
   HomingChargeBalls:
       DPTR D 8 Bright A_FaceTarget
       DPTR E 5 Bright A_FaceTarget
       TNT1 A 0 Bright A_CustomMissile("DBishShot2",36,28,0,0)
       DPTR F 8 Bright A_CustomMissile("DBishShot",36,-28,0,0)
       TNT1 A 0 Bright A_FaceTarget
       TNT1 A 0 Bright A_CustomMissile("DBishShot2",36,28,0,0)
       DPTR F 8 Bright A_CustomMissile("DBishShot",36,-28,0,0)
       TNT1 A 0 Bright A_FaceTarget
       TNT1 A 0 Bright A_CustomMissile("DBishShot2",36,28,0,0)
       DPTR F 8 Bright A_CustomMissile("DBishShot",36,-28,0,0)
       TNT1 A 0 Bright A_FaceTarget
       TNT1 A 0 Bright A_CustomMissile("DBishShot2",36,28,0,0)
       DPTR F 8 Bright A_CustomMissile("DBishShot",36,-28,0,0)
       TNT1 A 0 Bright A_FaceTarget
       TNT1 A 0 Bright A_CustomMissile("DBishShot2",36,28,0,0)
       DPTR F 8 Bright A_CustomMissile("DBishShot",36,-28,0,0)
       TNT1 A 0 Bright A_FaceTarget
       TNT1 A 0 Bright A_CustomMissile("DBishShot2",36,28,0,0)
       DPTR F 8 Bright A_CustomMissile("DBishShot",36,-28,0,0)
       TNT1 A 0 Bright A_FaceTarget
       TNT1 A 0 Bright A_CustomMissile("DBishShot2",36,28,0,0)
       DPTR F 8 Bright A_CustomMissile("DBishShot",36,-28,0,0)
       TNT1 A 0 Bright A_FaceTarget
       TNT1 A 0 Bright A_CustomMissile("DBishShot2",36,28,0,0)
       DPTR F 8 Bright A_CustomMissile("DBishShot",36,-28,0,0)
       TNT1 A 0 Bright A_FaceTarget
       TNT1 A 0 Bright A_CustomMissile("DBishShot2",36,28,0,0)
       DPTR F 8 Bright A_CustomMissile("DBishShot",36,-28,0,0)
       TNT1 A 0 Bright A_FaceTarget
       TNT1 A 0 Bright A_CustomMissile("DBishShot2",36,28,0,0)
       DPTR F 8 Bright A_CustomMissile("DBishShot",36,-28,0,0)
       TNT1 A 0 Bright A_FaceTarget
       TNT1 A 0 Bright A_CustomMissile("DBishShot2",36,28,0,0)
       DPTR F 8 Bright A_CustomMissile("DBishShot",36,-28,0,0)
       DPTR F 0 Bright A_FaceTarget
       Goto See
   RainProjectile:
       DPTR D 8 Bright
       DPTR E 5 Bright A_FaceTarget
       DPTR F 8 Bright A_CustomMissile("DBishRain",36,0,0,0)
       Goto See
   EvenMoreHoming:
       DPTR D 8 Bright
       DPTR E 5 Bright A_FaceTarget
       DPTR D 0 Bright A_PlaySound("dbish/atk3")
       DPTR D 0 Bright A_CustomMissile("DBishHornRodFX",36,0,-20,0)
       DPTR D 0 Bright A_CustomMissile("DBishHornRodFX",36,0,20,0)
       DPTR F 8 Bright A_CustomMissile("DBishHornRodFX",36,0,0,0)
       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 4
   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,3)
      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,3)
      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,3)
      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,3)
      loop
   Death:
	  TNT1 A 0 A_SpawnItemEx("WhiteParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	  TNT1 AA 0 A_CustomMissile("Kaboom21", 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,3)
      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,3)
      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,3)
      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,3)
      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 : FastProjectile
{
	Radius 12
	Height 8
	Speed 30
	Damage 12
	PROJECTILE
	Renderstyle add
	Seesound "Dbish/Atk2"
	Deathsound "HellStaff/Explode"
	states
	{
	Spawn:
		PFX1 CCC 1 BRIGHT A_SpawnItemEx("DBishHornRodFXTrail1", 0, 0, 0, 0, 0, 0, 0, 128)
		PFX1 DDD 1 BRIGHT A_SpawnItemEx("DBishHornRodFXTrail2", 0, 0, 0, 0, 0, 0, 0, 128)
		PFX1 EEE 1 BRIGHT A_SpawnItemEx("DBishHornRodFXTrail1", 0, 0, 0, 0, 0, 0, 0, 128)
		PFX1 FFF 1 BRIGHT A_SpawnItemEx("DBishHornRodFXTrail2", 0, 0, 0, 0, 0, 0, 0, 128)
		loop
	Death:
		TNT1 A 0 A_SpawnItemEx("WhiteParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
		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
    -NOTELEPORT
	-TELEPORT
	Renderstyle Add
	DamageType "Void"
	Mass 10
	States
	{
	Spawn:
		TNT1 A 2
	Spawn2:
		PFX3 A 1 bright A_JumpIf(momz >= 0,"Death")
		PFX3 A 1 bright
		loop
	Death:
		PFX3 BCDEF 3 bright
		stop
	}
}

ACTOR DBishHornRodFX
{
  Radius 12
  Height 8
  Speed 25
  Damage 10
  Scale 0.8
  Projectile
  +WINDTHRUST
  -NOBLOCKMAP
  +SeekerMissile
  +STRIFEDAMAGE
  RenderStyle Add
  SeeSound "Hellstaff2/shot"
  DeathSound "HellStaff/Explode"
  States
  {
  Spawn:
	PFX1 AAA 1 BRIGHT A_SpawnItemEx("DBishHornRodFXTrail1", 0, 0, 0, 0, 0, 0, 0, 128)
	PFX1 BBB 1 BRIGHT A_SpawnItemEx("DBishHornRodFXTrail2", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 A 0 A_SeekerMissile(30, 45)
    Loop
  Death:
    TNT1 A 0 A_SpawnItemEx("WhiteParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
    PFX1 HI 5 Bright
    PFX1 JK 4 Bright
    PFX1 LM 3 Bright
    Stop
  }
}

Actor DBishHornRodFXTrail1 : ImpballTrail
{
  Radius 0
  Height 0
  Speed 0
  Damage 0
  Scale 0.8
  Alpha 0.8
  Renderstyle Add
  PROJECTILE
  +DONTREFLECT
  states
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
    PFX1 A 1 Bright A_FadeOut(0.1)
    loop
  }
}

Actor DBishHornRodFXTrail2 : DBishHornRodFXTrail1
{
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
    PFX1 B 1 Bright A_FadeOut(0.1)
    loop
  }
}