Actor Diabloist : DnD_BaseEnemy
{
  Obituary "%o was set ablaze by a Diabloist."
  Health 850
  Radius 20 
  Height 56 
  Mass 500 
  Speed 15 
  PainChance 10
  BloodColor "08 08 08"
  Monster
  +FloorClip
  +NoTarget
  +MissileMore
  Species "AV"
  +DONTHURTSPECIES
  +DONTBLAST
  +QUICKTORETALIATE
  +NOFEAR
  +USEKILLSCRIPTS
  SeeSound "Monster/diasit" 
  PainSound "Monster/diapai" 
  DeathSound "Monster/diadth" 
  ActiveSound "Monster/diaact" 
  DropItem "SoulAmmoSpawner", 128
  DamageFactor "Vile", 0.0
  DamageFactor "VileBullet", 0.0
  DamageFactor "VilePacify", 0.0
  DamageFactor "VileStun", 0.0
  DamageFactor "VileGhost", 0.0
  DamageFactor "VileFire", 0.0
  DamageFactor "VileCurse", 0.0
  DamageFactor "VileBlue", 0.0
  DamageFactor "VileBlueFire", 0.0
  DamageFactor "VileSlow", 0.0
  DamageFactor "VileSnare", 0.0
  DamageFactor "VileMagic", 0.0
  DamageFactor "Fire", 0.5
  DamageFactor "P_Ice", 1.5
  Tag "Diabloist"
  States 
  { 
  Spawn: 
	TNT1 A 0
	TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_DIABLOIST)
Idle:
    DIAB AB 10 A_Look 
    Loop 
  See: 
    DIAB AABBCCDDEEFF 2 Fast A_Chase 
    Loop 
  Missile:
    DIAB G 0 Bright A_Jump(128, "Missile2")
    DIAB G 0 Bright A_FaceTarget
    DIAB G 3 Bright A_FaceTarget
    DIAB H 3 Fast Bright A_FaceTarget
    DIAB I 3 Fast A_CustomMissile("DFire", 32, 0, 0)
    DIAB H 3 Fast Bright A_FaceTarget
    DIAB G 3 Fast Bright A_FaceTarget
    DIAB H 3 Fast Bright A_FaceTarget
    DIAB I 3 Fast Bright A_FaceTarget
    DIAB H 3 Fast Bright A_FaceTarget
    DIAB G 3 Fast Bright A_FaceTarget
    DIAB H 3 Fast Bright A_FaceTarget
    DIAB I 3 Fast Bright A_FaceTarget
    DIAB H 3 Fast Bright A_FaceTarget
    DIAB G 3 Fast Bright A_FaceTarget
    DIAB H 3 Fast Bright A_FaceTarget
    DIAB I 3 Fast Bright A_FaceTarget
    DIAB G 3 Fast Bright A_FaceTarget
    DIAB H 3 Fast Bright A_FaceTarget
    DIAB I 3 Fast Bright A_FaceTarget
    DIAB G 0 Bright A_Jump(128, "Missile3")       
    Goto See
  Missile2:
    DIAB N 5 Fast Bright A_FaceTarget
    DIAB O 5 Fast Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB P 0 Bright A_FaceTarget
    DIAB P 5 Fast Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB N 0 Bright A_FaceTarget
    DIAB N 5 Fast Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB O 0 Bright A_FaceTarget
    DIAB O 5 Fast Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB P 0 Bright A_FaceTarget
    DIAB P 5 Fast Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB N 0 Bright A_FaceTarget
    DIAB N 5 Fast Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB O 0 Bright A_FaceTarget
    DIAB O 5 Fast Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB P 0 Bright A_FaceTarget
    DIAB P 5 Fast Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB N 0 Bright A_FaceTarget
    DIAB N 5 Fast Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB O 0 Bright A_FaceTarget
    DIAB O 5 Fast Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB P 0 Bright A_FaceTarget
    DIAB P 5 Fast Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB N 0 Bright A_FaceTarget
    DIAB N 5 Fast Bright A_CustomMissile("DFlare", 40, 0, Random(-4, 4))
    DIAB O 0 Bright A_FaceTarget
    DIAB P 5 Fast Bright
    DIAB P 0 Bright A_Jump(64, "Missile3")
    DIAB P 0 Bright A_Jump(128, "Missile4")
    Goto See
  Missile3:
    DIAB GHIJKLM 5 Fast Bright A_FaceTarget
    DIAB N 5 Fast Bright A_FaceTarget
    DIAB O 1 Bright A_Playsound ("weapons/firbfi")
    DIAB O 4 Fast Bright A_CustomMissile ("DMissile",32,0,0)
    DIAB P 5 Fast Bright
    DIAB P 0 Bright A_Jump (128,1)
    Goto See
  Missile4:
    DIA2 A 8 Fast Bright A_FaceTarget
    DIA2 B 8 Fast Bright A_FaceTarget
    DIA2 C 0 Bright A_CustomMissile ("DTracer",0,-40,0)
    DIA2 C 8 Fast Bright A_CustomMissile ("DTracer",0,40,0)
    Goto See 
  Pain: 
    DIAB Q 5 Fast 
    DIAB Q 5 Fast A_Pain 
    Goto See 
  Death: 
	TNT1 A 0 A_JumpIfInTargetInventory("Ability_SoulStealer", 1, "GiveSoul")
  GaveSoul:
    DIAB Q 7 
	TNT1 A 0 ACS_ExecuteAlways(982, 0, 2)
    DIAB R 7 A_Scream 
	TNT1 A 0 A_NoBlocking
    DIAB S 7
    DIAB TUVW 7 
    DIAB XY 5 
    DIAB Z -1 
    Stop
	  GiveSoul:
	  Death.BookOfTheDead:
		DIAB Q 1
		TNT1 A 0 A_SpawnItem("SoulEffectSpawner")
		TNT1 A 0 A_GiveToTarget("Souls", 1)  
	  Goto GaveSoul	
  } 
}

Actor DiabloExp1 : BaseExplosionDamage
{
	DamageType "VileFire"
	Obituary "%o was set ablaze by a Diabloist."
	+NODAMAGETHRUST
	States
	{
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 A 1 A_Explode(3 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 32, 0)
		Stop
	}
}

Actor DiabloExp2 : DiabloExp1
{
	States
	{
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 A 1 A_Explode(4 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 32, 0)
		Stop
	}
}

Actor DiabloExp3 : DiabloExp1
{
	States
	{
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 A 1 A_Explode(2 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 32, 0)
		Stop
	}
}

Actor DiabloExp4 : DiabloExp1
{
	States
	{
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 A 1 A_Explode(1 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 32, 0)
		Stop
	}
}

Actor DFire
{
  Obituary "%o got was set ablaze by a Diabloist."
  Radius 0
  Height 1
  Speed 0
  RenderStyle Add
  DamageType "VileFire"
  Translation "160:160=231:231", "161:162=215:215", "163:163=217:217", "164:167=176:188"
  ALPHA 1.00
  +NoGravity
  +SeekerMissile
  +NoTarget
  +DONTBLAST
  +NoDamageThrust
  States
  {
  Spawn:
    TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
    FIRE A 2 Bright A_StartFire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp1")
    FIRE B 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp1")
    FIRE A 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp1")
    FIRE B 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp1")
    FIRE C 2 Bright A_FireCrackle
    TNT1 A 0 Bright A_SpawnItem("DiabloExp1")
    FIRE B 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp2")
    FIRE C 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp2")
    FIRE B 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp2")
    FIRE C 2 Bright A_Fire 
    TNT1 A 0 Bright A_SpawnItem("DiabloExp2")
    FIRE D 2 Bright A_Fire 
    TNT1 A 0 Bright A_SpawnItem("DiabloExp2")
    FIRE C 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp2")
    FIRE D 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp2")
    FIRE C 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp2")
    FIRE D 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp2")
    FIRE E 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp2")
    FIRE D 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp2")
    FIRE E 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp2")
    FIRE D 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp1")
    FIRE E 2 Bright A_FireCrackle
    TNT1 A 0 Bright A_SpawnItem("DiabloExp1")
    FIRE F 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp3")
    FIRE E 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp3")
    FIRE F 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp3")
    FIRE E 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp4")
    FIRE F 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp4")
    FIRE G 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp4")
    FIRE H 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp4")
    FIRE G 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp4")
    FIRE H 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp4")
    FIRE G 2 Bright A_Fire
    TNT1 A 0 Bright A_SpawnItem("DiabloExp4")
    FIRE H 2 Bright A_Fire
    Stop
  }
}

ACTOR DFlare
{
  Radius 5
  Height 5
  Speed 25
  Damage (4 * random(1, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
  RenderStyle Add
  DamageType "VileFire"
  Alpha 0.85
  Projectile
  +ThruGhost
  +DONTBLAST
  Obituary "%o was set ablaze by a Diabloist."
  Seesound "weapons/firmfi"
  DeathSound "weapons/firex4"
  States
  {
  Spawn:
	TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
  SpawnLoop:
    VBAL AB 3 Bright A_SpawnItemEx("MFlareFX", 0, 0, 0, 0, 0, 0, 0, 128)
    Loop
  Death:
    TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
    CBAL CDEFG 3 Bright
    Stop
  }
}

Actor DMissile : CFlameMissile
{
	DamageType "VileFire"
	+ThruGhost
	+DONTBLAST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		Goto Super::Spawn
		Death:
			TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
		Goto Super::Death
	}
}

Actor DiabloExp6 : BaseExplosionDamage
{
	DamageType "VileFire"
	Obituary "%o was set ablaze by a Diabloist."
	States
	{
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(32 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 64, 0)
		Stop
	}
}

Actor DTracer
{
  Radius 5
  Height 5
  Speed 15
  ReactionTime 96
  Damage (4 * random(1, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
  DamageType "VileFire"
  RenderStyle Add
  Alpha 0.67
  Projectile
  +SeekerMissile
  +FloorHugger
  +ThruGhost
  +DONTBLAST
  -NoGravity
  Obituary "%o got was set ablaze by a Diabloist."
  Seesound "weapons/diasht"
  DeathSound "weapons/firex3"   
  States
  {
  Spawn:
	TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
  SpawnLoop:
    TNT1 A 1 Bright A_SeekerMissile(10, 15)
    TNT1 A 0 Bright A_Countdown
    TNT1 A 0 Bright A_SpawnItemEx("DTracerPuff", 0, 0, 0, 0, 0, 0, 0, 128)
    Loop
  Death:
	TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AAA 0 A_CustomMissile("ExplosionFX2", 0, 0, random(0,360), 2, random(0,360))
	TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
    FTRA K 4 Bright
    FTRA L 4 Bright A_SpawnItem("DiabloExp6")
    FTRA MNO 3 Bright
    Stop
  }
}

Actor MFlareFX
{   
  Radius 0
  Height 1
  Speed 0
  Projectile
  RenderStyle Add
  +CLIENTSIDEONLY
  Alpha 0.67
  States
  {
  Spawn:
    FDFX ABCDEF 4 Bright
    Stop 
  }
}

Actor DiabloExp7 : BaseExplosionDamage
{
	DamageType "VileFire"
	Obituary "%o was set ablaze by a Diabloist."
	States
	{
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(4 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 8, 0)
		Stop
	}
}

Actor DTracerPuff
{
  Radius 1
  Height 1
  Speed 0
  RenderStyle Add
  DamageType "VileFire"
  Alpha 0.67
  Projectile
  +FloorHugger
  -NoGravity
  +DONTBLAST
  States
  {
  Spawn:
    FTRA ABCDEFGHIJ 3 Bright A_SpawnItem("DiabloExp7")
    stop
  }
}

Actor DMissileTrail : CFlameFloor
{
  DamageType "Vile"
  +ThruGhost
  +DONTBLAST
}

Actor DMissileCircle : CircleFlame
{
 DamageType "VileFire"
 +ThruGhost
 +DONTBLAST
}

ACTOR DeathVile : ArchVile2
{
  Health 800
  Speed 16
  PainChance 8
  MaxTargetRange 1280
  SeeSound "wile/sight"
  PainSound "wile/pain"
  DeathSound "wile/death"
  ActiveSound "wile/active"
  DamageFactor "Vile", 0.0
  DamageFactor "VileBullet", 0.0
  DamageFactor "VilePacify", 0.0
  DamageFactor "VileStun", 0.0
  DamageFactor "VileGhost", 0.0
  DamageFactor "VileFire", 0.0
  DamageFactor "VileCurse", 0.0
  DamageFactor "VileBlue", 0.0
  DamageFactor "VileBlueFire", 0.0
  DamageFactor "Fire", 0.5
  DamageFactor "P_Ice", 0.5
  DamageFactor "VileSlow", 0.0
  DamageFactor "VileSnare", 0.0
  DamageFactor "VileMagic", 0.0
  DamageFactor "Lightning", 0.5
  DropItem "SoulAmmoSpawner", 128
  Tag "Death Vile"
  +DONTBLAST
  States
  {
  Spawn:
	TNT1 A 0
	TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_DEATHVILE, DND_RESURRECT)
Idle:
    WILE AB 10 A_Look
    Loop
  See:
    WILE AABBCCDDEEFF 2 Fast A_VileChase
    Loop
  Missile:
    WILE G 0 Bright A_PlaySound("wile/start")
    WILE G 8 Fast Bright A_FaceTarget
    WILE H 6 Fast Bright A_VileTarget("DarkFlame")
    WILE IJKLMN 6 Fast Bright A_FaceTarget
    WILE O 6 Fast Bright A_VileAttack("vile/stop", 20 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_SELF)), 70 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_SELF)), 70, 1.0, "VileBlueFire")
    WILE P 14 Fast Bright
    Goto See
  Heal:
    WILE "[\]" 8 Fast Bright
    Goto See
  Pain:
    WILE Q 5 Fast   
    WILE Q 5 Fast A_Pain
    Goto See
  Death:
	TNT1 A 0 A_JumpIfInTargetInventory("Ability_SoulStealer", 1, "GiveSoul")
  GaveSoul:
    WILE Q 7
	TNT1 A 0 ACS_ExecuteAlways(982, 0, 2)
    WILE R 7 A_Scream
    WILE S 7 A_NoBlocking
    WILE TUVWXY 7
    WILE Z -1
    Stop
	  GiveSoul:
	  Death.BookOfTheDead:
		WILE Q 1
		TNT1 A 0 A_SpawnItem("SoulEffectSpawner")
		TNT1 A 0 A_GiveToTarget("Souls", 1)  
	  Goto GaveSoul	
  }
}

Actor DarkFlame : ArchVileFire
{
  States
  {
  Spawn:
    WFRE A 2 Bright A_StartFire
    WFRE BAB 2 Bright A_Fire
	TNT1 A 0 A_PlaySound("wile/flame")
    WFRE C 2 Bright A_Fire
    WFRE BCBCDCDCDEDED 2 Bright A_Fire
	TNT1 A 0 A_PlaySound("wile/flame")
    WFRE E 2 Bright A_Fire
    WFRE FEFEFGHGHGH 2 Bright A_Fire
    Stop	
	}
}

//Hierophant
Actor Hierophant : DnD_BaseEnemy
{
  Health 1250
  Radius 20
  Height 56
  Mass 1000
  Speed 10
  PainChance 16
  Monster
  Scale 1.15
  DamageType Normal
  Obituary "%o was hexed by a Hierophant."
  HitObituary "%o got shredded by a Hierophant."
  +NoTarget
  +FloorClip
  +MissileMore
  Species "AV"
  +DontHurtSpecies
  +DONTBLAST
  +QUICKTORETALIATE
  +USEKILLSCRIPTS
  SeeSound "monster/Hiesit"
  PainSound "monster/Hiepai"
  DeathSound "monster/Hiedth"
  MeleeSound "baron/melee"
  ActiveSound "monster/Hieact"
  DropItem "SoulAmmoSpawner", 128
  DamageFactor "Vile", 0.0
  DamageFactor "VileBullet", 0.0
  DamageFactor "VilePacify", 0.0
  DamageFactor "VileStun", 0.0
  DamageFactor "VileGhost", 0.0
  DamageFactor "VileFire", 0.0
  DamageFactor "VileCurse", 0.0
  DamageFactor "VileBlue", 0.0
  DamageFactor "VileBlueFire", 0.0
  DamageFactor "VileSlow", 0.0
  DamageFactor "VileSnare", 0.0
  DamageFactor "VileMagic", 0.0
  DamageFactor "Fire", 0.5
  Tag "Hierophant"
  States
  {
  Spawn: 
	TNT1 A 0
	TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_HIEROPHANT, DND_CURSE | DND_HOMING | DND_MOBILITY)
Idle:
    HIER AC 10 A_Look 
    Loop 
  See:
    HIER AABBAACCDDCC 4 Fast A_Chase
    HIER A 0 A_Jump(64, "Blur") 
    Loop
  Blur:
    HIER A 1 A_Playsound("monster/blur")
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    HIER A 0 A_SpawnItemEx("HieroFX",0,0,0,0,0,0,0,128,0)
    HIER A 1 A_Chase
    Goto See 
  Missile:
    HIER A 0 A_FaceTarget
    HIER A 0 A_Jump(256, "Missile1", "Missile2", "Missile3")
  Missile1:
    HIER EF 7 Fast Bright A_FaceTarget
    HIER G 0 Bright A_CustomMissile("HieroBall1",26,0,random(-6,-1),0) 
    HIER G 7 Fast Bright A_CustomMissile("HieroBall1",26,0,random(1,6),0)
    HIER A 3 Fast Bright
    HIER HI 7 Fast Bright A_FaceTarget
    HIER J 0 Bright A_CustomMissile("HieroBall1",26,0,random(-6,-1),0) 
    HIER J 7 Fast Bright A_CustomMissile("HieroBall1",26,0,random(1,6),0)
    HIER A 3 Fast A_SpidRefire
    HIER A 0 A_Jump(64, "Missile1")
    Goto See
  Missile2:
    HIER EF 7 Fast Bright A_FaceTarget
    HIER G 7 Fast Bright A_CustomMissile("CurseBall",26,0,0,0)
    HIER A 3 Fast A_SpidRefire
    HIER A 0 A_Jump(128,"Missile1","Missile3")
    Goto See
  Missile3:
    HIER KLM 5 Fast Bright A_FaceTarget 
    HIER N 1 Bright A_CustomMissile("HieroBall2",32,0,0,0,0)
    HIER O 1 Bright A_FaceTarget
    HIER N 1 Bright A_CustomMissile("HieroBall2",32,0,0,0,0)
    HIER O 1 Bright A_FaceTarget
    HIER N 1 Bright A_CustomMissile("HieroBall2",32,0,0,0,0)
    HIER O 1 Bright A_FaceTarget
    HIER N 1 Bright A_CustomMissile("HieroBall2",32,0,0,0,0)
    HIER O 1 Bright A_FaceTarget
    HIER N 1 Bright A_CustomMissile("HieroBall2",32,0,0,0,0)
    HIER O 1 Bright A_FaceTarget
    HIER N 1 Bright A_CustomMissile("HieroBall2",32,0,0,0,0)
    HIER O 1 Bright A_FaceTarget
    HIER N 1 Bright A_CustomMissile("HieroBall2",32,0,0,0,0)
    HIER O 1 Bright A_FaceTarget
    HIER N 1 Bright A_CustomMissile("HieroBall2",32,0,0,0,0)
    HIER O 1 Bright A_FaceTarget
    HIER N 1 Bright A_CustomMissile("HieroBall2",32,0,0,0,0)
    HIER O 1 Bright A_FaceTarget
    HIER N 1 Bright A_CustomMissile("HieroBall2",32,0,0,0,0)
    HIER O 1 Bright A_FaceTarget
    HIER N 1 Bright A_CustomMissile("HieroBall2",32,0,0,0,0)
    HIER O 1 Bright A_FaceTarget
    HIER N 1 Bright A_CustomMissile("HieroBall2",32,0,0,0,0)
    HIER O 1 Bright A_FaceTarget
    HIER N 1 Bright A_CustomMissile("HieroBall2",32,0,0,0,0)
    HIER O 1 Bright A_FaceTarget
    HIER N 1 Bright A_CustomMissile("HieroBall2",32,0,0,0,0)
    HIER O 1 Bright A_FaceTarget
    HIER N 1 Bright A_CustomMissile("HieroBall2",32,0,0,0,0)
    HIER O 1 Bright A_FaceTarget
    HIER L 5 
    Goto See
  Melee:
    HIER EF 8 Fast A_FaceTarget 
    HIER G 3 Fast A_CustomMeleeAttack(10 * random(1, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_SELF)), "baron/melee")
    HIER A 3 Fast 
    HIER A 0 A_Jump(128, 1)
    Goto See
    HIER HI 8 Fast A_FaceTarget 
    HIER J 3 Fast A_CustomMeleeAttack(10 * random(1, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_SELF)), "baron/melee")
    HIER A 3 Fast 
    Goto See
  Pain: 
    HIER P 2 Fast 
    HIER P 2 Fast A_Pain 
    Goto See 
  Death: 
	TNT1 A 0 A_JumpIfInTargetInventory("Ability_SoulStealer", 1, "GiveSoul")
  GaveSoul:
    HIER Q 6  
	TNT1 A 0 ACS_ExecuteAlways(982, 0, 2)
    HIER R 6 A_Scream 
	TNT1 A 0 A_NoBlocking
    HIER S 6
    HIER TUVW 6
    HIER X -1 A_SetFloorClip 
    Stop
	  GiveSoul:
	  Death.BookOfTheDead:
		HIER Q 1
		TNT1 A 0 A_SpawnItem("SoulEffectSpawner")
		TNT1 A 0 A_GiveToTarget("Souls", 1)  
	  Goto GaveSoul	
    } 
}

Actor HieroExp : BaseExplosionDamage
{
	DamageType "VileFire"
	Obituary "%o was hexed by a Hierophant."
	States
	{
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(32 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 32, 0)
		Stop
	}
}

Actor HieroBall1 : BaronBall
{
  Speed 20
  Damage (6 * random(1, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
  DamageType "VileFire"
  +ThruGhost
  +ForceXYBillBoard
  Decal RevenantScorch
  States
  {
  Spawn: 
	TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
  SpawnLoop:
    HIB1 AB 4 Bright
    Loop
  Death:
    TNT1 A 0 A_SetTranslucent(0.75, 1)
	TNT1 A 0 A_SpawnItemEx("YellowParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AAA 0 A_CustomMissile("ExplosionFX9", 0, 0, random(0,360), 2, random(0,360))
	TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
    HIB1 C 3 Bright
    HIB1 D 3 Bright A_SpawnItem("HieroExp")
    HIB1 EFG 3 Bright
    Stop
  }
}

Actor HieroBall2 : BishopFX
{
  Speed 16
  Damage (4 * random(1, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
  DamageType "VileFire"
  +ThruGhost
  +ForceXYBillBoard
  +DONTBLAST
  Seesound "weapons/firmfi"
  DeathSound "weapons/firex5"
  Decal PlasmaScorchLower
  States
  {
  Spawn: 
    TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
  SpawnLoop:
    HIB2 ABCD 1 Bright A_BishopMissileWeave
    HIB2 A 0 Bright A_SeekerMissile(5, 6)
    Loop
  Death:
    TNT1 A 0 A_SetTranslucent(0.75, 1)
	TNT1 A 0 A_SpawnItemEx("YellowParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
    HIB2 EFGHIJ 3 Bright
    Stop
  }
}

Actor HieroExp2 : BaseExplosionDamage
{
	DamageType "VileCurse"
	Obituary "%o was hexed by a Hierophant."
	States
	{
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(32 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 96, 0)
		Stop
	}
}

Actor CurseBall : BaronBall
{
  Speed 24
  Damage (random(1, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
  Height 16
  Radius 10
  DamageType "VileCurse"
  +ThruGhost
  +ForceXYBillBoard
  +ForceRadiusDmg
  +NoDamageThrust
  +SeekerMissile
  +DONTBLAST
  Alpha 0.90
  SeeSound "monster/curse1"
  DeathSound "monster/curse2"
  Decal MummyScorch
  States
  {
  Spawn: 
	TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
  SpawnLoop:
    HCRS A 2 Bright A_SpawnItemEx("CurseTrail",0,0,0,0,0,0,0,128,0)
    TNT1 A 0 A_SeekerMissile(6, 7)
    HCRS B 2 Bright A_SpawnItemEx("CurseTrail",0,0,0,0,0,0,0,128,0)
    TNT1 A 0 A_SeekerMissile(6, 7)
    HCRS C 2 Bright A_SpawnItemEx("CurseTrail",0,0,0,0,0,0,0,128,0)
    TNT1 A 0 A_SeekerMissile(6, 7)
    HCRS D 2 Bright A_SpawnItemEx("CurseTrail",0,0,0,0,0,0,0,128,0)
    TNT1 A 0 A_SeekerMissile(6, 7)        
    Loop
  Death:
    TNT1 A 0 A_SetTranslucent(0.80, 1)
	TNT1 A 0 A_SpawnItemEx("PurpleParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AAA 0 A_CustomMissile("ExplosionFX3", 0, 0, random(0,360), 2, random(0,360))
	TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
    HCRS E 3 Bright A_SpawnItem("HieroExp2")
    HCRS FGHI 3 Bright
    Stop
  }
}

Actor CurseTrail : Bloodtrail
{   
  RenderStyle Add
  Alpha 0.80
  +CLIENTSIDEONLY
  States
  {
  Spawn:
    TNT1 A 3
    HCRS JLMNOPR 3 Bright
    Stop 
  }
}

Actor HieroFX : AcolFX2
{   
  Scale 1.0
  Alpha 0.80
  States
  {
  Spawn:
    TNT1 A 3
    HIER A 5 A_FadeOut(0.10)
    Goto Spawn+1
  }
}

ACTOR Deathknight : UndeadBulletResistantEnemy
{ 
	Health 900
	Radius 20
	Height 56
	Mass 700 
	Speed 10
	PainChance 20 
	Species "AV"
  DamageFactor "Vile", 0.0
  DamageFactor "VileBullet", 0.0
  DamageFactor "VilePacify", 0.0
  DamageFactor "VileStun", 0.0
  DamageFactor "VileGhost", 0.0
  DamageFactor "VileFire", 0.0
  DamageFactor "VileCurse", 0.0
  DamageFactor "VileBlue", 0.0
  DamageFactor "VileBlueFire", 0.0
  DamageFactor "Fire", 0.5
  DamageFactor "P_Ice", 0.5
  DamageFactor "Lightning", 0.5
  DamageFactor "VileSlow", 0.0
  DamageFactor "VileSnare", 0.0
  DamageFactor "VileMagic", 0.0
	DamageFactor "Painless_Sun", 1.3
	MONSTER
	+FLOORCLIP 
	+NOTARGET 
	+MISSILEMORE
	+NOBLOOD
	+DONTRIP
	+QUICKTORETALIATE
	+DONTBLAST
	+NOFEAR
	+USEKILLSCRIPTS
	Obituary "%o thought he could kill a deathknight."
	HitObituary "A Deathknight hacked %o into pieces." 
	MeleeSound "monster/dknhit" 
	SeeSound "monster/dknsit" 
	PainSound "monster/dknpai" 
	DeathSound "monster/dkndth" 
	ActiveSound "monster/dknact" 
    DropItem "SoulAmmoSpawner", 128
	Tag "Deathknight"
	States 
   { 
   Spawn: 
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_DEATHKNIGHT, DND_SILVER_WEAKNESS | DND_BLOCK | DND_BULLET_RESIST | DND_HARDENED_SKIN)
	Idle:
       DKNT AB 10 A_Look 
       Loop 
   See:
       DKNT A 0 A_Jump(32,10)
       DKNT A 0 A_UnSetInvulnerable
       DKNT AABBCCDD 3 Fast A_Chase
       Goto See
       DKNT P 0 A_SetInvulnerable
       DKNT PPQQRRSS 3 Fast A_Chase
       goto see+12
   Melee:
       DKNT E 0 A_UnSetInvulnerable
       DKNT E 6 Fast A_FaceTarget
       DKNT F 1 A_Playsound ("monster/dknswg")
       DKNT F 6 Fast A_FaceTarget
       DKNT G 6 Fast A_CustomMeleeAttack(10 * random(1, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_SELF)), "monster/dknhit") 
       Goto See
   Missile:
       DKNT A 0 A_Jump(88, "Balls")
       DKNT A 0 A_Jump(88, "Bolts")
       DKNT E 0 Bright A_UnSetInvulnerable
       DKNT E 6 Fast Bright A_FaceTarget
       DKNT F 6 Fast Bright A_Playsound ("monster/kntswg")
       DKNT G 0 Bright A_CustomMissile ("DKDart",32,0,-3,0)
       DKNT G 0 Bright A_CustomMissile ("DKDart",32,0,-1,0)
       DKNT G 0 Bright A_CustomMissile ("DKDart",32,0,1,0)
       DKNT G 5 Fast Bright A_CustomMissile ("DKDart",32,0,3,0)
       DKNT A 0 A_Jump(64, "Bolts")
       Goto See
   Bolts:
       DKNT T 0 Bright A_SetInvulnerable
       DKNT T 3 Fast Bright A_FaceTarget      
       DKNT U 3 Fast Bright A_CustomMissile("DKbolt",44,-4,0,0)
       DKNT T 3 Fast Bright A_FaceTarget      
       DKNT U 3 Fast Bright A_CustomMissile("DKbolt",44,-4,0,0)
       DKNT T 3 Fast Bright A_FaceTarget      
       DKNT U 3 Fast Bright A_CustomMissile("DKbolt",44,-4,0,0)
       DKNT T 3 Fast Bright A_FaceTarget      
       DKNT U 3 Fast Bright A_CustomMissile("DKbolt",44,-4,0,0)
       DKNT T 3 Fast Bright A_FaceTarget      
       DKNT U 3 Fast Bright A_CustomMissile("DKbolt",44,-4,0,0)
       DKNT T 3 Fast Bright A_FaceTarget      
       DKNT U 2 Fast Bright A_CustomMissile("DKbolt",44,-4,0,0)
       DKNT U 0 Bright A_UnSetInvulnerable
       Goto See
   Balls:
	    TNT1 A 0 A_SetInvulnerable
		DKNT T 3 Fast Bright A_FaceTarget
		DKNT U 3 Fast A_CustomMissile ("DKBall", 44, -4, -24)
		DKNT T 0 Bright A_FaceTarget
		DKNT U 3 Fast A_CustomMissile ("DKBall", 44, -4, -16)
		DKNT T 0 Bright A_FaceTarget		
		DKNT U 3 Fast A_CustomMissile ("DKBall", 44, -4, -8)
		DKNT T 0 Bright A_FaceTarget
		DKNT U 3 Fast A_CustomMissile ("DKBall", 44, -4, 0)
		DKNT T 0 Bright A_FaceTarget
		DKNT U 3 Fast A_CustomMissile ("DKBall", 44, -4, 8)
		DKNT T 0 Bright A_FaceTarget
		DKNT U 3 Fast A_CustomMissile ("DKBall", 44, -4, 16)
		DKNT T 3 Fast Bright A_FaceTarget
		DKNT U 3 Fast A_CustomMissile ("DKBall", 44, -4, 24)		
		DKNT T 3 Fast Bright A_FaceTarget
		DKNT U 3 Fast A_CustomMissile ("DKBall", 44, -4, 24)		
		DKNT T 3 Fast Bright A_FaceTarget
		DKNT U 3 Fast A_CustomMissile ("DKBall", 44, -4, 16)
		DKNT T 0 Bright A_FaceTarget
		DKNT U 3 Fast A_CustomMissile ("DKBall", 44, -4, 8)
		DKNT T 0 Bright A_FaceTarget
		DKNT U 3 Fast A_CustomMissile ("DKBall", 44, -4, 0)
		DKNT T 0 Bright A_FaceTarget
		DKNT U 3 Fast A_CustomMissile ("DKBall", 44, -4, -8)
		DKNT T 0 Bright A_FaceTarget
		DKNT U 3 Fast A_CustomMissile ("DKBall", 44, -4, -16)
		DKNT T 0 Bright A_FaceTarget		
		DKNT U 3 Fast A_CustomMissile ("DKBall", 44, -4, -24)
		TNT1 A 0 A_UnSetInvulnerable
	   Goto See
   Pain:
       DKNT H 2 Fast 
       DKNT H 2 Fast A_Pain
	   TNT1 A 0 A_SetInvulnerable
       DKNT TTTTTTT 5 Fast A_JumpIfCloser(48, "Decide")
	   TNT1 A 0 A_FaceTarget
	   TNT1 A 0 A_Jump(32, "Unset")
       DKNT TTTTTTT 5 Fast A_JumpIfCloser(48, "Decide")
	   TNT1 A 0 A_FaceTarget
	   TNT1 A 0 A_Jump(64, "Unset")
       DKNT TTTTTTT 5 Fast A_JumpIfCloser(48, "Decide")
	   TNT1 A 0 A_FaceTarget
	   TNT1 A 0 A_Jump(96, "Unset")
       DKNT TTTTTTT 5 Fast A_JumpIfCloser(48, "Decide")  
   Unset:
       DKNT T 0 A_UnSetInvulnerable
       DKNT P 0 A_Jump (24,1)
       Goto See+12
       DKNT H 1
       Goto See
   Decide:
	   TNT1 A 0 A_Jump(128, "Missile")
	   Goto Melee
   Death:
	   TNT1 A 0 A_JumpIfInTargetInventory("Ability_SoulStealer", 1, "GiveSoul")
   GaveSoul:
       DKNT I 0 Bright A_CustomMissile("DKSword",44,32,-90,0)
       DKNT I 8 Bright A_CustomMissile("DKShield",44,-32,90,0)
	   TNT1 AAAAA 0 A_SpawnItemEx("ExplosionFXMagic", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128)
       TNT1 A 0 A_Scream
	   TNT1 A 0 A_NoBlocking
	   DKNT JJJJKKKK 2 Bright A_SpawnItemEx("ExplosionFXMagic", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128)
	   TNT1 A 0 A_JumpIf(1 == ACS_NamedExecuteWithResult("DnD Item Dropchance", 50), "Drop2")
   Skip2:
	   DKNT LLLL 2 Bright A_SpawnItemEx("ExplosionFXMagic", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
       DKNT MN 8 Bright 
       DKNT O -1 
       Stop 
   Drop2:
	   TNT1 A 0  A_SpawnItemEx("SoulRenderPickup", 0, 0, 8, 0, 0, 4)
	   Goto Skip2
	  GiveSoul:
	  Death.BookOfTheDead:
		DKNT I 1 Bright
		TNT1 A 0 A_SpawnItem("SoulEffectSpawner")
		TNT1 A 0 A_GiveToTarget("Souls", 1)  
	  Goto GaveSoul	
   } 
}

Actor DKExp1 : BaseExplosionDamage
{
	DamageType "VileFire"
	Obituary "%o thought he could kill a deathknight."
	States
	{
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(32 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 64, 0)
		Stop
	}
}

ACTOR DKDart
{
   Radius 3
   Height 12
   Speed 24
   Damage (random(15,25) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
   DamageType "VileFire"
   ExplosionDamage 32
   ExplosionRadius 64
   RENDERSTYLE ADD
   ALPHA 0.85
   PROJECTILE
   +DONTBLAST
   +THRUGHOST
   Seesound "monster/dkndrt"
   DeathSound "weapons/firex2"
   States
   {
   Spawn:
	  TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
   SpawnLoop:
      DKAT ABC 3 Bright
      loop
   Death:
      TNT1 A 0 A_SetTranslucent (0.85,1)
	  TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	  TNT1 AAA 0 A_CustomMissile("ExplosionFX8", 0, 0, random(0,360), 2, random(0,360))
	  TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
      DKAT D 3 Bright
      DKAT E 3 Bright A_SpawnItem("DKExp1")
      DKAT FG 3 Bright
      TNT1 A 0 A_CustomMissile("DKFire",0,0,45,2)
      TNT1 A 0 A_CustomMissile("DKFire",0,0,90,2)
      TNT1 A 0 A_CustomMissile("DKFire",0,0,135,2)
      TNT1 A 0 A_CustomMissile("DKFire",0,0,180,2)
      TNT1 A 0 A_CustomMissile("DKFire",0,0,225,2)
      TNT1 A 0 A_CustomMissile("DKFire",0,0,270,2)
      TNT1 A 0 A_CustomMissile("DKFire",0,0,315,2)
      DKAT H 3 Bright A_CustomMissile("DKFire",0,0,0,2)
      DKAT IJKLM 3 Bright
      stop
   }
}

ACTOR DKbolt
{
   Radius 8
   Height 8
   Speed 15
   Damage (8 * random(1, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
   PROJECTILE
   RENDERSTYLE ADD
   ALPHA 0.80
   DamageType "VileMagic"
   +THRUGHOST
   +DONTBLAST
   SeeSound "Weapons/boltfi"
   DeathSound "weapons/firex4"
   States
   {
   Spawn:
	  TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
   SpawnLoop:
      BOLT A 1 Bright A_BishopMissileWeave
      BOLT A 0 A_SpawnItem("RedPuff",0,0)
      loop
   Death:
	  TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	  TNT1 AAA 0 A_CustomMissile("ExplosionFX8", 0, 0, random(0,360), 2, random(0,360))
	  TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
      HBAL EFHI 2 Bright
      stop
   }
}

ACTOR DKBall
{
	Radius 8
	Height 8
	Speed 15
	Damage (random(10,15) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	DamageType "VileMagic"
	PROJECTILE
	SeeSound "monster/dkball"
	+DONTBLAST
	States
	{
	Spawn:
		TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
	SpawnLoop:
		KN2M E 0 Bright A_CustomMissile("SwordFXRed",0,0,-90,0)
		KN2M E 2 Bright A_CustomMissile("SwordFXRed",0,0,90,0)
		Loop
	Death:
		KN2M HIJ 5 Bright
		Stop
	}
}

ACTOR DKBallTrail
{
	Radius 1
	Height 1
	Speed 1
	Damage 0
	Scale 1.4
	PROJECTILE
	+CLIENTSIDEONLY
	+NOGRAVITY
	States
	{
	Spawn:
		KN2M F 14 BRIGHT
		KN2M G 14 BRIGHT
		Stop
	}
}

ACTOR DKSword
{   
   Radius 8
   Height 8
   Speed 1
   PROJECTILE
   +CLIENTSIDEONLY
   -NOGRAVITY
   +LOWGRAVITY
   States
   {
   Spawn:
      SWRD KLMNOPQ 3 BRIGHT
      goto Death 
   Death:
      SWRD RS 4 BRIGHT
      SWRD T 4 BRIGHT
      SWRD U 4
      SWRD T 4 BRIGHT
      SWRD U 8
      SWRD T 4 BRIGHT
      SWRD U 16
      SWRD T 4 BRIGHT
      SWRD U -1
	  Stop
   }
}

ACTOR DKShield
{   
   Radius 8
   Height 8
   Speed 1
   PROJECTILE
   -NOGRAVITY
   +LOWGRAVITY
   +CLIENTSIDEONLY
   States
   {
   Spawn:
      SHLD ABCDEFGHI 3
      goto death 
   Death:
      SHLD H -1
	  Stop
   }
}

Actor DKExp2 : BaseExplosionDamage
{
	DamageType "Vile"
	Obituary "%o thought he could kill a deathknight."
	States
	{
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(4 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 8, 0)
		Stop
	}
}

ACTOR DKFire
{
   Radius 2
   Height 6
   Speed 3
   Damage 0
   DamageType "Vile"
   ExplosionDamage 4
   ExplosionRadius 8
   RENDERSTYLE ADD
   ALPHA 0.95
   PROJECTILE
   +THRUGHOST
   +DONTBLAST
   DeathSound "weapons/scorch"
   States
   {
   Spawn:
	  TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
      DKAT NOPQRSTNOPQRSTNOPQRST 2 Bright A_SpawnItem("DKExp2")
      goto death
   Death:
      DKAT UVW 3 Bright A_SpawnItem("DKExp2")
      stop
   }
}

Actor Horshacker : Deathknight
{
	Translation "0:255=%[0.00,0.00,0.00]:[0.28,0.88,1.98]", "80:111=80:111", "0:15=0:15", "128:159=128:159", "48:79=48:79", "160:167=160:167", "208:239=208:239", "249:249=249:249"
	Seesound "monster/horshacksee"
	ActiveSound "monster/horshackact"
	PainSound "monster/horshackpain"
	DeathSound "monster/horshackdie"
	Obituary "%o was horshacked by the Horshacker."
	HitObituary "%o was gutted by a Horshacker." 
	MeleeRange 128
	Tag "Horshacker"
	States
	{
   Spawn: 
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_HORSHACKER, DND_SILVER_WEAKNESS | DND_BLOCK | DND_BULLET_RESIST | DND_HARDENED_SKIN)
	Idle:
       DKNT AB 10 A_Look 
       Loop 
	   Melee:
		   DKNT E 0 A_UnSetInvulnerable
		   DKNT E 6 Fast A_FaceTarget
		   TNT1 A 0 A_Playsound ("monster/dknswg")
		   DKNT F 6 Fast A_FaceTarget
		   TNT1 A 0 A_CustomMissile ("SwordSlash", 32, 0, 0, 0, 0)
		   DKNT G 6 Fast A_CustomMissile("HorshackerMelee", 32)
       Goto See
	  Missile:
       DKNT A 0 A_Jump(96, "Balls")
       DKNT A 0 A_Jump(96, "Bolts")
       DKNT E 0 Bright A_UnSetInvulnerable
       DKNT E 6 Fast Bright A_FaceTarget
       DKNT F 6 Fast Bright A_FaceTarget
	   TNT1 A 0 A_Playsound ("monster/kntswg")
       TNT1 A 0 A_CustomMissile ("DKDart2Left",32,0)
       TNT1 A 0 A_CustomMissile ("DKDart2Right",32,0)
	   TNT1 A 0 A_CustomMissile ("DKDart2",32,0, 8)
	   TNT1 A 0 A_CustomMissile ("DKDart2",32,0, -8)
       DKNT G 5 Fast Bright A_CustomMissile ("DKDart2",32,0)
       DKNT A 0 A_Jump(64, "Bolts")
       Goto See
   Bolts:
       DKNT T 0 Bright A_SetInvulnerable
       DKNT T 3 Fast Bright A_FaceTarget
	   TNT1 A 0 A_CustomMissile("DKbolt2Lower",44,-4,0,0)
       DKNT U 3 Fast Bright A_CustomMissile("DKbolt2",44,-4,0,0)
       DKNT T 3 Fast Bright A_FaceTarget      
       DKNT U 3 Fast Bright A_CustomMissile("DKbolt2Homing",44,-4,0,0)
       DKNT T 3 Fast Bright A_FaceTarget      
	   TNT1 A 0 A_CustomMissile("DKbolt2Lower",44,-4,0,0)
       DKNT U 3 Fast Bright A_CustomMissile("DKbolt2",44,-4,0,0)
       DKNT T 3 Fast Bright A_FaceTarget      
       DKNT U 3 Fast Bright A_CustomMissile("DKbolt2Homing",44,-4,0,0)
       DKNT T 3 Fast Bright A_FaceTarget      
	   TNT1 A 0 A_CustomMissile("DKbolt2Lower",44,-4,0,0)
       DKNT U 3 Fast Bright A_CustomMissile("DKbolt2",44,-4,0,0)
       DKNT T 3 Fast Bright A_FaceTarget      
       DKNT U 2 Fast Bright A_CustomMissile("DKbolt2Homing",44,-4,0,0)
       DKNT U 0 Bright A_UnSetInvulnerable
       Goto See
   Balls:
	    TNT1 A 0 A_SetInvulnerable
		DKNT T 3 Fast Bright A_FaceTarget
		TNT1 A 0 A_CustomMissile ("DKBall2", 44, -4, 24)
		TNT1 A 0 A_CustomMissile ("DKBall2", 44, -4, 0)
		DKNT U 6 Fast A_CustomMissile ("DKBall2", 44, -4, -24)
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_CustomMissile ("DKBall2", 44, -4, 16)
		DKNT U 6 Fast A_CustomMissile ("DKBall2", 44, -4, -16)
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 A_CustomMissile ("DKBall2", 44, -4, 8)
		TNT1 A 0 A_CustomMissile ("DKBall2", 44, -4, 0)
		DKNT U 6 Fast A_CustomMissile ("DKBall2", 44, -4, -8)		
		TNT1 A 0 A_UnSetInvulnerable
	   Goto See	   
	   Pain:
		   DKNT H 2  Fast
		   DKNT H 2 Fast A_Pain
		   TNT1 A 0 A_SetInvulnerable
		   DKNT TT 5 Fast
		   TNT1 A 0 A_Jump(32, "Unset")
		   DKNT TT 5 Fast
		   TNT1 A 0 A_Jump(64, "Unset")
		   DKNT TT 5 Fast
		   TNT1 A 0 A_Jump(96, "Unset")
		   DKNT TT 5 Fast
	   Unset:
		   DKNT T 0 A_UnSetInvulnerable
		   DKNT P 0 A_Jump (24,1)
	   Goto See+12
		   DKNT H 1
	   Goto See
   Death:
	   TNT1 A 0 A_JumpIfInTargetInventory("Ability_SoulStealer", 1, "GiveSoul")
	GaveSoul:   
       DKNT I 0 Bright A_CustomMissile("DKSword2",44,32,-90,0)
       DKNT I 8 Bright A_CustomMissile("DKShield",44,-32,90,0)
	   TNT1 AAAAA 0 A_SpawnItemEx("ExplosionFXMagicBlue", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128)
       TNT1 A 0 A_Scream
	   TNT1 A 0 A_NoBlocking
	   DKNT JJJJKKKK 2 Bright A_SpawnItemEx("ExplosionFXMagicBlue", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128)
	   TNT1 A 0 A_JumpIf(1 == ACS_NamedExecuteWithResult("DnD Item Dropchance", 50), "Drop2")
   Skip2:
	   DKNT LLLL 2 Bright A_SpawnItemEx("ExplosionFXMagicBlue", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
       DKNT MN 8 Bright 
       DKNT O -1 
       Stop 
   Drop2:
	   TNT1 A 0 A_SpawnItemEx("SoulRenderPickup", 0, 0, 8, 0, 0, 4)
	   Goto Skip2
	  GiveSoul:
	  Death.BookOfTheDead:
		DKNT I 1 Bright
		TNT1 A 0 A_SpawnItem("SoulEffectSpawner")
		TNT1 A 0 A_GiveToTarget("Souls", 1)  
	  Goto GaveSoul	   
	}
}

Actor DKSword2 : DKSword
{
	Translation "32:47=192:207", "168:191=192:207"
}

Actor HorshackerMelee
{
	PROJECTILE
	Radius 4
	Height 8
	Damage (5 * random(5, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	DamageType "Vile"
	+DONTBLAST
	+THRUSPECIES
	Species "AV"
	DeathSound "monster/dknhit"
	Speed 48
	States
	{
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 2
		Stop
		Death:
			TNT1 A 1
		Stop
	}
}

Actor HorshackerExp1 : BaseExplosionDamage
{
	DamageType "VileBlue"
	Obituary "%o was horshacked by the Horshacker."
	States
	{
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(8 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 32, 0)
		Stop
	}
}

ACTOR SwordSlash
{
	Radius 8
	Height 16
	Speed 16
	Damage (random(4, 6) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	DamageType "VileBlue"
	PROJECTILE
	RenderStyle Add
	Alpha 0.75
	DontHurtShooter
	+RIPPER
	+CANNOTPUSH
	+NODAMAGETHRUST
	+DONTBLAST
	SeeSound "monster/horshackrip"
	
	States
	{
	Spawn:
		TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		TRIS A 1 Bright A_SpawnItem("SwordSlashTrail",0,0)
		TRIS A 0 A_SpawnItem("HorshackerExp1")
		TRIS A 1 Bright A_SpawnItem("SwordSlashTrail",0,0)
		TRIS A 0 A_SpawnItem("HorshackerExp1")
		TRIS A 1 Bright A_SpawnItem("SwordSlashTrail",0,0)
		TRIS A 0 A_SpawnItem("HorshackerExp1")
		TRIS A 1 Bright A_SpawnItem("SwordSlashTrail",0,0)
		TRIS A 0 A_SpawnItem("HorshackerExp1")
		TRIS A 1 Bright A_SpawnItem("SwordSlashTrail",0,0)
		TRIS A 0 A_SpawnItem("HorshackerExp1")
		TRIS A 1 Bright A_SpawnItem("SwordSlashTrail",0,0)
		TRIS A 0 A_SpawnItem("HorshackerExp1")
		TRIS A 1 Bright A_SpawnItem("SwordSlashTrail",0,0)
		TRIS A 0 A_SpawnItem("HorshackerExp1")
		TRIS A 1 Bright A_SpawnItem("SwordSlashTrail",0,0)
		TRIS A 0 A_SpawnItem("HorshackerExp1")
		TRIS A 1 Bright A_SpawnItem("SwordSlashTrail",0,0)
		TRIS A 0 A_SpawnItem("HorshackerExp1")
		TRIS A 1 Bright A_SpawnItem("SwordSlashTrail",0,0)
		TRIS A 0 A_SpawnItem("HorshackerExp1")
		TRIS A 1 Bright A_SpawnItem("SwordSlashTrail",0,0)
		TRIS A 0 A_SpawnItem("HorshackerExp1")
		TRIS A 1 Bright A_SpawnItem("SwordSlashTrail",0,0)
		TRIS A 0 A_SpawnItem("HorshackerExp1")
		TRIS A 1 Bright A_SpawnItem("SwordSlashTrail",0,0)
		TRIS A 0 A_SpawnItem("HorshackerExp1")
		TRIS A 1 Bright A_SpawnItem("SwordSlashTrail",0,0)
		TRIS A 0 A_SpawnItem("HorshackerExp1")
		TRIS A 1 Bright A_SpawnItem("SwordSlashTrail",0,0)
		TRIS A 0 A_SpawnItem("HorshackerExp1")
		Stop
   }
}

ACTOR SwordSlashTrail
{
	Radius 6
	Height 12
	+NOCLIP
	+NOINTERACTION
	RenderStyle Add
	+CLIENTSIDEONLY
	Alpha 0.8
	States
	{
	Spawn:
		TNT1 A 0
		TRIS A 2 BRIGHT A_FadeOut(0.10)
		Goto Spawn+1
	}
}

Actor HorshackerExp2 : BaseExplosionDamage
{
	DamageType "VileBlue"
	Obituary "%o was horshacked by the Horshacker."
	States
	{
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(32 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 72, 0)
		Stop
	}
}

ACTOR DKDart2 : DKDart
{
   Radius 6
   Height 12
   Speed 20
   Damage (16 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
   DamageType "VileBlue"
   RENDERSTYLE ADD
   ALPHA 0.85
   Scale 0.8
   PROJECTILE
   +THRUGHOST
   Seesound "monster/dkndrt"
   DeathSound "weapons/firex2"
   States
   {
   Spawn:
	  TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
   SpawnLoop:
      FX00 CDEF 3 Bright
      loop
   Death:
      TNT1 A 0 A_SetTranslucent (0.85,1)
	  TNT1 A 0 A_SpawnItemEx("BlueParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	  TNT1 AAA 0 A_CustomMissile("ExplosionFX5", 0, 0, random(0,360), 2, random(0,360))
	  TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
      FX00 H 3 Bright
	  TNT1 A 0 A_SpawnItem("HorshackerExp2")
	  FX00 IJKLM 3 Bright
      stop
   }
}

Actor DKDart2Left : DKDart2
{
	States
	{
		Spawn:
			FX00 CD 3 Bright
			TNT1 A 0 ThrustThing(angle*256/360+64, 6, 0, 0)
		SpawnLoop:
			FX00 EFCD 3 Bright
		Loop
	}
}

Actor DKDart2Right : DKDart2
{
	States
	{
		Spawn:
			FX00 CD 3 Bright
			TNT1 A 0 ThrustThing(angle*256/360-64, 6, 0, 0)
		SpawnLoop:
			FX00 EFCD 3 Bright
		Loop
	}
}


ACTOR DKBall2 : DKBall
{
	Speed 28
	Damage (2 * random(4, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	DamageType "VileBlue"
	States
	{
	Spawn:
		TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
	SpawnLoop:
		KN3M E 0 Bright A_CustomMissile("DKBallTrail2",0,8,-90,0)
		KN3M E 1 Bright A_CustomMissile("DKBallTrail2",0,8,90,0)
	Loop
	Death:
		KN3M HIJ 5 Bright
		Stop
	}
}

ACTOR DKBallTrail2 : SwordFXRed
{
	States
	{
	Spawn:
		KN3M F 14 BRIGHT
		KN3M G 14 BRIGHT
		Stop
	}
}

ACTOR DKbolt2 : DKBolt
{
   Damage (5 * random(2, 6) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
   DamageType "VileBlue"
   SeeSound "HFSpid/See"
   DeathSound "HFSpid/Die"
   Scale 0.8
   States
   {
	   Spawn:
		  TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
	   SpawnLoop:
		  CTFX A 1 Bright A_BishopMissileWeave
		  TNT1 AA 0 A_BishopMissileWeave
		  TNT1 A 0 A_SpawnItem("DKBolt2Effect",0,0)
		  loop
	   Death:
		  TNT1 A 0 A_SpawnItemEx("BlueParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
		  TNT1 AAA 0 A_CustomMissile("ExplosionFX5", 0, 0, random(0,360), 2, random(0,360))
		  TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
		  CTFX BCDEF 2 Bright
		  stop
   }
}

Actor DKBolt2Lower : DKBolt2
{
	States
	{
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 AAAAAAAAAAAAAAA 0 A_BishopMissileWeave
		SpawnLoop:
		  CTFX A 1 Bright A_BishopMissileWeave
		  TNT1 AA 0 A_BishopMissileWeave
		  TNT1 A 0 A_SpawnItem("DKBolt2Effect",0,0)		
		Loop
	}
}

actor DKBolt2Effect
{
	scale 1.0
	renderstyle add
	alpha 0.8
	radius 1
	height 1
	+NOGRAVITY
	+CLIENTSIDEONLY
	States
	{
	Spawn:
		CTFX A 1 A_FadeOut(0.1)
		Loop
		Death:
		TNT1 A 1
		Stop
	}
}

Actor DKBolt2Homing : DKBolt2
{
	Damage (5*random(2,3) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	DamageType "VileBlue"
	+SEEKERMISSILE
	ReactionTime 105
	States
	{
	   Spawn:
		  TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
	   SpawnLoop:
		  CTFX A 1 Bright A_SeekerMissile(5, 10)
		  TNT1 A 0 A_SpawnItem("DKBolt2Effect", 0, 0)	  
		  TNT1 A 0 A_CountDown
		  loop	
	}
}

Actor UndeadPriestBullet : RapidFireBullet {
	DamageType "VileBullet"
}

actor UndeadPriest : UndeadEnemy {
	obituary "%o was bagged by an undead priest."
	health 800
	gibhealth 20
	radius 20
	height 56
	mass 400
	speed 8
	painchance 48
	XScale 1.1
	YScale 1.25
	DropItem "SawedoffPickup" 64
	dropitem "Shell" 128
	decal BulletChip
	SeeSound "UndeadPriest/See"
	ActiveSound "UndeadPriest/Act"
	painsound "UndeadPriest/Pain"
	deathsound "UndeadPriest/Die"
  DamageFactor "Vile", 0.0
  DamageFactor "VileBullet", 0.0
  DamageFactor "VilePacify", 0.0
  DamageFactor "VileStun", 0.0
  DamageFactor "VileGhost", 0.0
  DamageFactor "VileFire", 0.0
  DamageFactor "VileCurse", 0.0
  DamageFactor "VileBlue", 0.0
  DamageFactor "VileBlueFire", 0.0
  DamageFactor "Fire", 1.5
  DamageFactor "VileSlow", 0.0
  DamageFactor "VileSnare", 0.0
  DamageFactor "VileMagic", 0.0
	DamageFactor "Painless_Sun", 1.3
	Species "AV"
	Tag "Undead Priest"
	MONSTER
	+QUICKTORETALIATE
	+NODROPOFF
	+DONTBLAST
	+USEKILLSCRIPTS
	states {
		Spawn:
			TNT1 A 0
			TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_UNDEADPRIEST, DND_SILVER_WEAKNESS | DND_MOBILITY | DND_HOMING | DND_HEAL)
		Idle:
			TNT1 A 0 A_TakeInventory("NoDrop", 1)
			UNDP A 10 A_Look
		loop
		See:
			TNT1 A 0 A_TakeInventory("NoDrop", 1)
			TNT1 A 0 A_Jump (64, "Run")
			UNDP AABB 3 Fast A_Chase
			TNT1 A 0 A_Jump (64, "Run2")
			UNDP CCDD 3 Fast A_Chase
		Loop
		Run:
			UNDP AA 2 Fast A_Chase("Missile", "Ghosts", CHF_FASTCHASE)
			UNDP BB 2 Fast A_Chase
		Run2:
			UNDP CC 2 Fast A_Chase("Missile", "Ghosts", CHF_FASTCHASE)
			UNDP DD 2 Fast A_Chase
		Goto Run
		Melee:
		Missile:
			UNDP E 10 Fast A_FaceTarget
			TNT1 AAAA 0 A_CustomMissile("UndeadPriestBullet", 42, -9, frandom(-6.4, 6.4), 0, frandom(-5.2, 5.2))
			UNDP F 5 Fast bright A_CustomMissile("UndeadPriestBullet", 42, -9, frandom(-6.4, 6.4), 0, frandom(-5.2, 5.2))
			UNDP F 0 bright A_PlaySoundEx ("UndeadPriest/Shoot","SoundSlot6")
			UNDP E 2 Fast
			TNT1 AAAA 0 A_CustomMissile("UndeadPriestBullet", 42, -9, frandom(-6.4, 6.4), 0, frandom(-5.2, 5.2))
			UNDP F 5 Fast bright A_CustomMissile("UndeadPriestBullet", 42, -9, frandom(-6.4, 6.4), 0, frandom(-5.2, 5.2))
			UNDP F 0 bright A_PlaySoundEx ("UndeadPriest/Shoot2","SoundSlot7")
			UNDP E 10 Fast
		goto See
		Ghosts:
			UNDP E 10 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("UndeadPriest/SoulRelease")
			UNDP EEEEE 10 Fast A_CustomMissile("UndeadSpiritAttack", 40, random(-1, 1) * 4 * random(1, 8), random(-8, 8))
		Goto See
		Pain:
			UNDP G 5 Fast A_GiveInventory("NoDrop", 1)
			UNDP G 5 Fast A_Pain
			TNT1 A 0 A_Jump(96, "ReleaseSouls")
		goto See
		ReleaseSouls:
			TNT1 A 0 A_PlaySound("UndeadPriest/SoulRelease")
			TNT1 AA 0 A_SpawnItemEx("UndeadSpirit", 0, 0, 40, 0, 0, 0, 0, SXF_SETMASTER)
			Goto See
		Death:
			TNT1 A 0 A_GiveInventory("NoDrop", 1)
			TNT1 A 0 A_JumpIfInTargetInventory("Ability_SoulStealer", 1, "GiveSoul")
	    GaveSoul: 
			UNDP H 6 A_KillChildren
			UNDP I 6 A_Scream
			UNDP JK 6
			UNDP L 6 A_NoBlocking
			UNDP M 6
			UNDP N -1
		Stop
		XDeath:
			TNT1 A 0 A_GiveInventory("NoDrop", 1)
			TNT1 A 0 A_JumpIfInTargetInventory("Ability_SoulStealer", 1, "GiveSoulX")
		GaveSoulX:
			TNT1 A 0 A_KillChildren
			UNDP O 5 A_Scream
			UNDP P 5
			UNDP R 5 A_NoBlocking
			UNDP STUVW 5
			UNDP X -1
		Stop
	  GiveSoul:
		UNDP H 1
		TNT1 A 0 A_SpawnItem("SoulEffectSpawner")
		TNT1 A 0 A_GiveToTarget("Souls", 1)  
	  Goto GaveSoul
	  GiveSoulX:
	  Death.BookOfTheDead:
		UNDP O 1
		TNT1 A 0 A_SpawnItem("SoulEffectSpawner")
		TNT1 A 0 A_GiveToTarget("Souls", 1)  
	  Goto GaveSoulX
	}
}

Actor UndeadSpirit {
	Health 50
	Radius 16 
	Height 32 
	Mass 50 
	Speed 10 
	RENDERSTYLE ADD
	ALPHA 0.67 
	PAINCHANCE 0
	MONSTER
	Species "AV"
	+THRUSPECIES
	+DONTGIB
	+NOTARGET
	+NOGRAVITY 
	+FLOAT
	+DONTFALL
	+DONTHURTSPECIES
	+THRUGHOST
	+NOBLOOD
	+GHOST
	+DONTBLAST
	-SOLID
	SeeSound "UndeadSoul/See"
	DeathSound "UndeadSoul/Die"
	States { 
		Spawn: 
			BDSP AB 10 A_Look 
		Loop 
		See: 
			BDSP A 3 A_Wander
			BDSP A 3 A_VileChase 
			BDSP B 3 A_Wander
			BDSP B 3 A_VileChase 
		Loop 
		Heal:
			BDSP A 3
		Goto Death 
		Death: 
			BDSP E 4
			BDSP F 5 A_Scream 
			BDSP GHIJ 4  
		Stop 
	} 
}

Actor UndeadSpiritDamager : BaseExplosionDamage {
	DamageType "VileGhost"
	Obituary "%o was spooked by an undead ghost."
	States
	{
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(random(2, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 40, 0)
		Stop
	}
}

Actor UndeadSpiritAttack {
	PROJECTILE
	Height 6
	Radius 4
	Damage 0
	Speed 20
	RENDERSTYLE ADD
	ALPHA 0.66
	ReactionTime 7
	+THRUACTORS
	+SEEKERMISSILE
	+DONTBLAST
	+RIPPER
	+NOBLOOD
	+HEXENBOUNCE
	SeeSound "UndeadSoul/See"
	DeathSound "UndeadSoul/Die"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			BDSP A 5 A_SeekerMissile(90, 90, SMF_LOOK)
			TNT1 A 0 A_JumpIfInTargetInventory("NoDrop", 1, "Death")
			TNT1 A 0 A_SpawnItem("UndeadSpiritDamager")
			BDSP A 5 A_SeekerMissile(90, 90, SMF_LOOK)
			TNT1 A 0 A_JumpIfInTargetInventory("NoDrop", 1, "Death")
			TNT1 A 0 A_SpawnItem("UndeadSpiritDamager")
			BDSP B 5 A_SeekerMissile(90, 90, SMF_LOOK)
			TNT1 A 0 A_JumpIfInTargetInventory("NoDrop", 1, "Death")
			TNT1 A 0 A_SpawnItem("UndeadSpiritDamager")
			BDSP B 5 A_SeekerMissile(90, 90, SMF_LOOK)
			TNT1 A 0 A_JumpIfInTargetInventory("NoDrop", 1, "Death")
			TNT1 A 0 A_SpawnItem("UndeadSpiritDamager")
			TNT1 A 0 A_CountDown
		Loop
		Death: 
			BDSP E 4 A_Stop
			BDSP F 5 A_Scream 
			BDSP GHIJ 4  
		Stop 
	}
}

Actor Guru : DnD_BaseEnemy {
	Health 800
	Radius 20
	Height 56
	Mass 1000
	Speed 12
	PainChance 56
	Monster
	Scale 1.15
	Obituary "%o was incinerated by a Guru."
	HitObituary "%o got shredded by a Guru"
	+NoTarget
	+FloorClip
	+MissileMore
	+MISSILEEVENMORE
	Species "AV"
	+DontHurtSpecies
	+QUICKTORETALIATE
	+DONTBLAST
	+USEKILLSCRIPTS
	SeeSound "Guru/See"
	PainSound "Guru/Pain"
	DeathSound "Guru/Die"
	MeleeSound "baron/melee"
	ActiveSound "Guru/Act"
	DropItem "SoulAmmoSpawner", 128
  DamageFactor "Vile", 0.0
  DamageFactor "VileBullet", 0.0
  DamageFactor "VilePacify", 0.0
  DamageFactor "VileStun", 0.0
  DamageFactor "VileGhost", 0.0
  DamageFactor "VileFire", 0.0
  DamageFactor "VileCurse", 0.0
  DamageFactor "VileBlue", 0.0
  DamageFactor "VileBlueFire", 0.0
  DamageFactor "Fire", 0.5
  DamageFactor "VileSlow", 0.0
  DamageFactor "VileSnare", 0.0
  DamageFactor "VileMagic", 0.0
  DamageFactor "Lightning", 1.5
  Tag "Guru"
	var int user_count;
	States {
		Spawn: 
			TNT1 A 0
			TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_GURU, DND_CURSE)
		Idle:
			GURU AB 10 A_Look 
		Loop 
		See:
			GURU AABBCCDD 3 Fast A_Chase
		Loop
		Rush:
			GURU ABCD 2 Fast A_Chase("", "", CHF_NOPLAYACTIVE)
			TNT1 A 0 A_Jump(192, "FlameWall")
			GURU ABCD 2 Fast A_Chase
		Goto See 
		Missile:
			TNT1 A 0 A_Jump(256, "Wide", "SingleBurst", "Rush")
		Wide:
			GURU E 5 Fast A_FaceTarget
			TNT1 A 0 A_CustomMissile("GuruPacifier", 32, 0, -8)
			TNT1 A 0 A_CustomMissile("GuruPacifier", 32, 0, -4)
			TNT1 A 0 A_CustomMissile("GuruPacifier", 32, 0, 0)
			TNT1 A 0 A_CustomMissile("GuruPacifier", 32, 0, 4)
			TNT1 A 0 A_CustomMissile("GuruPacifier", 32, 0, 8)
			GURU F 6 Fast Bright A_FaceTarget
			GURU G 4 Fast
		Goto See
		SingleBurst:
			TNT1 A 0 A_SetUserVar("user_count", 0)
			GURU E 6 Fast A_FaceTarget
		BurstLoop:
			TNT1 A 0 A_JumpIf(user_count == 8, "FinishBurst")
			TNT1 A 0 A_CustomMissile("GuruSmallProjectile", 32, -6, frandom(-2.5, 2.5))
			GURU F 4 Fast Bright A_FaceTarget
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		FinishBurst:
			GURU G 5 Fast
		Goto See
		FlameWall:
			TNT1 A 0 A_JumpIfTargetINLOS("ContinueWall", 0)
		Goto See
		ContinueWall:
			GURU E 8 Fast A_FaceTarget
			GURU F 2 Fast Bright A_FaceTarget
			TNT1 A 0 A_PlaySound("Guru/FireWall")
			GURU F 5 Fast Bright A_CustomMissile("FireWallAttack", 0)
			GURU G 5 Fast
		Goto See
		Melee:
			GURU E 4 Fast A_FaceTarget 
			GURU F 3 Fast Bright A_CustomMeleeAttack(5 * random(1, 8), "baron/melee")
			GURU G 4 Fast
		Goto See
		Pain: 
			GURU D 2 Fast 
			GURU D 2 Fast A_Pain 
		Goto See 
		Death: 
			TNT1 A 0 A_JumpIfInTargetInventory("Ability_SoulStealer", 1, "GiveSoul")
		GaveSoul:
			GURU H 6  
			TNT1 A 0 ACS_ExecuteAlways(982, 0, 2)
			GURU I 6 A_Scream 
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_CustomMissile("GuruHand_Fly", 34, -6, frandom(90.0, 270.0), CMF_AIMDIRECTION, frandom(0.25, 2.5))
			TNT1 A 0 A_CustomMissile("GuruLeg_Fly", 18, -6, frandom(90.0, 270.0), CMF_AIMDIRECTION, frandom(0.25, 2.5))
			GURU J 6
			GURU KL 6
			GURU M -1 A_SetFloorClip 
		Stop
		GiveSoul:
		Death.BookOfTheDead:
			GURU H 1
			TNT1 A 0 A_SpawnItem("SoulEffectSpawner")
			TNT1 A 0 A_GiveToTarget("Souls", 1)  
		Goto GaveSoul	
	} 
}

Actor GuruExplosion1 : BaseExplosionDamage {
	DamageType "VileFire"
	Obituary "%o was incinerated by a Guru."
	+NODAMAGETHRUST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(8 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 36, 0)
		Stop
	}
}

Actor GuruExplosion2 : GuruExplosion1 {
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(4 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 28, 0)
		Stop
	}
}

Actor GuruPacifier {
	Projectile
	Height 10
	Radius 5
	Speed 24
	Renderstyle Add
	Damage (3 * random(1, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	DamageType "VilePacify"
	SeeSound "Guru/Fire"
	DeathSound "imp/shotx"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			GURP AB 3 Bright A_SpawnItem("GuruExplosion1")
		Loop
		Death:
			GURP CDEF 4 Bright
		Stop
	}
}

Actor GuruSmallProjectile : GuruPacifier {
	Speed 36
	Radius 4
	Height 8
	Scale 0.75
	Damage (2 * random(1, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			GURP AB 3 Bright A_SpawnItem("GuruExplosion2")
		Loop
	}
}

Actor GuruHand_Fly {
	PROJECTILE
	Height 6
	Radius 4
	Speed 12
	+DOOMBOUNCE
	+CANBOUNCEWATER
	-NOGRAVITY
	BounceCount 5
	+CLIENTSIDEONLY
	States {
		Spawn:
			GURP G 7 A_SpawnDebris("NashGore_FlyingBlood")
		Loop
		Death:
			TNT1 A 1 A_SpawnItem("GuruHand")
		Stop
	}
}

Actor GuruHand {
	Height 2
	Radius 2
	+CLIENTSIDEONLY
	+MOVEWITHSECTOR
	States {
		Spawn:
			GURP G -1
		Stop
	}
}

Actor GuruLeg_Fly {
	PROJECTILE
	Height 6
	Radius 4
	Speed 12
	+DOOMBOUNCE
	+CANBOUNCEWATER
	-NOGRAVITY
	BounceCount 5
	+CLIENTSIDEONLY
	States {
		Spawn:
			GURP H 7 A_SpawnDebris("NashGore_FlyingBlood")
		Loop
		Death:
			TNT1 A 1 A_SpawnItem("GuruLeg")
		Stop
	}
}

Actor GuruLeg {
	Height 2
	Radius 2
	+CLIENTSIDEONLY
	+MOVEWITHSECTOR
	States {
		Spawn:
			GURP H -1
		Stop
	}
}

ACTOR FireWallAttack {
	Radius 2
	Height 2
	Speed 24
	Damage 0
	PROJECTILE
	+FLOORHUGGER
	+RIPPER
	+BLOODLESSIMPACT
	States {
		Spawn:
			TNT1 A 1 bright A_CustomMissile("FireWallAttackTrail")
			TNT1 A 0 A_CustomMissile("FireWallDamageSpawner")
		Loop
		Death:
			TNT1 A 0
		Stop
	}
}

Actor FireWallDamageSpawner {
	Height 2
	Radius 1
	Projectile
	Speed 0
	+THRUACTORS
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 AAAA 3 A_CustomMissile("FireVileDamage")
		Stop
	}
}

ACTOR FireWallAttackTrail {
	Radius 2
	Height 2
	RenderStyle Add
	Alpha 0.7
	+CLIENTSIDEONLY
	+NOGRAVITY
	+NOCLIP

	States {
		Spawn:
			FIRE A 2 bright
			TNT1 A 0 A_SpawnItemEx("OrangeParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
			FIRE BCBC 2 bright
			TNT1 A 0 A_SpawnItemEx("OrangeParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
			FIRE DEFGH 2 bright
		Stop
	}
}

Actor FireVileDamage : DnD_FakeDamager {
	Radius 32
	Height 64
	DamageType "VileFire"
	Damage (random(1,8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	Speed 32
	+FLOORHUGGER
}

Actor DarkZealot : MagicalEnemy {
	Health 750
	MONSTER
	+MISSILEMORE
	+DONTHURTSPECIES
	+QUICKTORETALIATE
	+NOBLOOD
	+DONTBLAST
	+USEKILLSCRIPTS
	Species "AV"
  DamageFactor "Vile", 0.0
  DamageFactor "VileBullet", 0.0
  DamageFactor "VilePacify", 0.0
  DamageFactor "VileStun", 0.0
  DamageFactor "VileGhost", 0.0
  DamageFactor "VileFire", 0.0
  DamageFactor "VileCurse", 0.0
  DamageFactor "VileBlue", 0.0
  DamageFactor "VileBlueFire", 0.0
  DamageFactor "Lightning", 0.5
  DamageFactor "P_Ice", 1.5
  DamageFactor "VileSlow", 0.0
  DamageFactor "VileSnare", 0.0
  DamageFactor "VileMagic", 0.0
	SeeSound "DarkServant/See"
	PainSound "DarkServant/Pain"
	ActiveSound "DarkServant/Act"
	DeathSound "Weapons/SReaverLoop"
	Obituary "%o was tormented to death by a Dark Zealot."
	PainChance 48
	Radius 20
	Height 56
	Speed 10
	XScale 1.1
	YScale 1.25
	Mass 1500
	var int user_teleport;
	Tag "Dark Zealot"
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_SetUserVar("user_teleport", 0)
			TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_DARKZEALOT, DND_MAGIC_WEAKNESS | DND_PIERCE | DND_HEAL | DND_TELEPORT)
			TNT1 A 0 ACS_ExecuteAlways(964, 0, 2)
		Idle:
			RSON AB 10 A_Look
		Loop
		See:
			RSON A 3 Fast A_Chase
			RSON A 3 Fast A_Chase("")
			RSON B 3 Fast A_Chase
			RSON B 3 Fast A_Chase("")
			RSON C 3 Fast A_Chase
			RSON C 3 Fast A_Chase("")
			RSON D 3 Fast A_Chase
			RSON D 3 Fast A_Chase("")
		Loop
		Melee:
		Missile:
			TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(961, 5), "Decide")
			TNT1 A 0 A_Jump(64, "Heal", "Shield")
			TNT1 A 0 A_Jump(192, "Attack1", "Attack2", "Teleport")
		Goto Attack1
		Decide:
			TNT1 A 0 A_Jump(192, "Heal", "Shield")
			TNT1 A 0 A_Jump(64, "Attack1")
			TNT1 A 0 A_Jump(224, "Attack2", "Teleport")
		Goto Attack1
		Attack1:
			RSON FF 4 Fast Bright A_FaceTarget
			RSON G 5 Fast Bright A_CustomMissile("DarkZealotPierce", 44)
			RSON TT 4 Fast Bright A_FaceTarget
			RSON U 5 Fast Bright A_CustomMissile("DarkZealotPierce", 44)
			RSON FF 4 Fast Bright A_FaceTarget
			RSON G 5 Fast Bright A_CustomMissile("DarkZealotPierce", 44)			
		Goto See
		Attack2:
			TNT1 A 0 A_PlaySound("DarkServant/Attack1", CHAN_WEAPON)
			RSON F 8 Fast Bright A_FaceTarget
			RSON G 9 Fast Bright A_CustomMissile("HadesBoltZealot", 0, 0, 16)
			TNT1 A 0 A_FaceTarget
			RSON G 9 Fast Bright A_CustomMissile("HadesBoltZealot", 0, 0, 4)
			TNT1 A 0 A_FaceTarget
			RSON G 9 Fast Bright A_CustomMissile("HadesBoltZealot", 0, 0, -4)
			TNT1 A 0 A_FaceTarget
			RSON G 9 Fast Bright A_CustomMissile("HadesBoltZealot", 0, 0, -16)
			TNT1 A 0 A_FaceTarget
			RSON G 9 Fast Bright A_CustomMissile("HadesBoltZealot", 0, 0)
		Goto See
		Heal:
			RSON TT 6 Fast Bright A_FaceTarget
			TNT1 A 0 A_PlaySound("DarkServant/Heal", CHAN_WEAPON)
			RSON U 8 Fast Bright A_RadiusGive("ZealotHealer", 384, RGF_MONSTERS | RGF_GIVESELF, 1)
		Goto See
		Redecide:
			TNT1 A 0 A_Jump(52, "Heal")
			TNT1 A 0 A_Jump(96, "Attack1")
			TNT1 A 0 A_Jump(192, "Attack2", "Teleport")
		Goto Attack1
		Shield:
			TNT1 A 0 A_JumpIfInventory("ZealotShielded", 1, "Redecide")
			RSON F 1 Bright
			TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
			TNT1 A 0 A_GiveInventory("ZealotShielded", 1)
			RSON FF 6 Fast Bright A_FaceTarget
			TNT1 A 0 A_PlaySound("DarkServant/Magic", CHAN_WEAPON)
			TNT1 A 0 A_GiveInventory("MonsterTraits", DND_REFLECTIVE)
			TNT1 A 0 ACS_ExecuteAlways(960, 0, 0)
			TNT1 A 0 ACS_ExecuteAlways(959, 0, 0)
			TNT1 A 0 A_Blast(0, 3, 84, 24)
			RSON G 8 Fast Bright A_SetReflectiveInvulnerable
		Goto See
		Pain:
			TNT1 A 0 A_Jump(96, "Teleport")
			RSON E 3 Fast
			RSON E 3 Fast A_Pain
		Goto See
		Teleport:
			TNT1 A 0 A_PlaySound("DarkServant/Laugh")
			TNT1 A 0 A_UnsetShootable
			RSON OPQRS 3 Fast Bright
		TeleportLoop:
			TNT1 A 0 A_JumpIf(user_teleport == 25, "TeleportFinish")
			TNT1 AAAA 0 A_SpawnItemEx("DarkServantTrail2", frandom(-36.0, 36.0), frandom(-36.0, 36.0), frandom(8.0, 56.0), 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_CLIENTSIDE)
			TNT1 AA 0 A_Wander
			TNT1 A 2 A_Wander
			TNT1 A 0 A_CustomMissile("DarkZealotLightning", 36, 0, random(0, 359), CMF_AIMDIRECTION, frandom(-8.0, 8.0))
			TNT1 A 0 A_SetUserVar("user_teleport", user_teleport + 1)
		Loop
		TeleportFinish:
			TNT1 A 0 A_ScaleVelocity(0.5)
			TNT1 A 0 A_SetUserVar("user_teleport", 0)
			RSON SRQPO 3 Fast Bright
			TNT1 A 0 A_SetShootable
		Goto See
		Death:
			TNT1 A 0 A_JumpIfInTargetInventory("Ability_SoulStealer", 1, "GiveSoul")
		GaveSoul:
			RSON H 6
			TNT1 A 0 A_SetTranslucent(1.0, 0)
			RSON I 6 A_Scream
			TNT1 A 0 A_SpawnItem("DissipationEffect")
			RSON J 6
			RSON K 6 A_NoBlocking
			RSON LM 6
			RSON N -1
		Stop
		GiveSoul:
		Death.BookOfTheDead:
			RSON H 1
			TNT1 A 0 A_SpawnItem("SoulEffectSpawner")
			TNT1 A 0 A_GiveToTarget("Souls", 1)  
		Goto GaveSoul
	}
}

Actor ZealotShielded : DnD_Boolean { }

Actor DarkServantTrail2 {
	+CLIENTSIDEONLY
	+NOINTERACTION
	Renderstyle Add
	Height 1
	Radius 1
	States {
		Spawn:
			ZLTT HHIIHHIIJJKK 1 Bright A_FadeOut(0.05)
			ZLTT L 2 Bright
		Stop
	}
}

Actor HadesBoltExpZealot : BaseExplosionDamage
{
	DamageType "VileMagic"
	Obituary "%o was tormented to death by a Dark Zealot."
}

Actor HadesBoltExp2Zealot : BaseExplosionDamage
{
	DamageType "VileMagic"
	Obituary "%o was tormented to death by a Dark Zealot."
}

Actor HadesBoltZealot : HadesBolt
{
  Speed 15
  Damagetype "VileMagic"
  States
  {
  Spawn:
    TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
  SpawnLoop:
    LFX2 F 1 Bright A_SpawnItem("HadesBoltExpZealot")
    LFX2 F 0 Bright A_CustomMissile("HadesBolt2Zealot",0,0,0,6,90)
    LFX2 F 0 ThrustThing(random(0,255),1,0,0)
    LFX2 G 1 Bright A_SpawnItem("HadesBoltExpZealot")
    LFX2 G 0 Bright A_CustomMissile("HadesBolt2Zealot",0,0,0,6,90)
    LFX2 H 1 Bright A_SpawnItem("HadesBoltExpZealot")
    LFX2 H 0 Bright A_CustomMissile("HadesBolt2Zealot",0,0,0,6,90)
    LFX2 I 1 Bright A_SpawnItem("HadesBoltExpZealot")
    LFX2 I 0 Bright A_CustomMissile("HadesBolt2Zealot",0,0,0,6,90)
    LFX2 J 1 Bright A_SpawnItem("HadesBoltExpZealot")
    LFX2 J 0 Bright A_CustomMissile("HadesBolt2Zealot",0,0,0,6,90)
    LFX2 J 0 Bright A_CountDown
    Loop
  Death:
    LFX2 FGHIJ 2 Bright A_SpawnItem("HadesBoltExp2Zealot")
    Stop
  }
}

Actor HadesBolt2Zealot : HadesBolt2
{
  DamageType "VileMagic"
  States
  {
  Spawn:
	TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
  SpawnLoop:
    TNT1 A 1 Bright A_SpawnItem("HadesBoltExpZealot")
    Loop
  Death:
    TNT1 A 1 Bright
    Stop
  }
}

Actor ZealotHealer : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 ACS_ExecuteAlways(961, 0, 6)
			TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERHEALSCRIPT, 0, 150 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_SELF)))
		Stop
	}
}

Actor ZealotShield {
	Height 1
	Radius 1
	+THRUACTORS
	+CLIENTSIDEONLY
	Renderstyle Add
	States {
		Spawn:
			TXP2 ABCDEFGH 2 Bright A_FadeOut(0.0825)
			TXP2 IJKLMNOP 2 Bright A_FadeIn(0.0825)
		Loop
		Death:
			TXP2 "#########" 1 A_SetScale(scalex - 0.075, scaley - 0.075)
		Stop
	}
}

Actor ZealotUnsetReflection : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
			TNT1 A 0 A_TakeInventory("ZealotShielded", 1)
			TNT1 A 0 A_UnsetReflectiveInvulnerable
			TNT1 A 0 A_TakeInventory("MonsterTraits", DND_REFLECTIVE)
		Stop
	}
}

Actor DarkZealotLightningTrail {
	Renderstyle Add
	Alpha 1.0
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
		Spawnloop:
			LFX1 XYZ 2 A_FadeOut(0.1)
		Loop
	}
}

Actor DarkZealotLightning {
	PROJECTILE
	Height 18
	Radius 12
	Speed 40
	Damage (5 * random(2, 3) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	+PIERCEARMOR
	+NODAMAGETHRUST
	DamageType "VileMagic"
	SeeSound "DarkServant/Lightning"
	DeathSound "DarkServant/LightningHit"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			LFX1 XYZ 3 Bright A_SpawnItem("DarkZealotLightningTrail")
		Loop
		Death:
			DLIT J 4 Bright
			DLIT KL 3 Bright
			DLIT MNO 2
		Stop
	}
}

Actor DarkZealotPierce {
	PROJECTILE
	Speed 28
	Height 14
	Radius 8
	Damage (random(8, 12) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	DamageType "VileMagic"
	Scale 0.7
	+RIPPER
	+THRUGHOST
	+PIERCEARMOR
	+BLOODLESSIMPACT
	+NODAMAGETHRUST
	SeeSound "weapons/gaussbegin"
	DeathSound "DarkServant/LightningHit"
	Renderstyle Add
	Alpha 0.85
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			HSPL ABCDEFGHIJ 2 Bright A_FadeOut(0.05)
		Loop
		Death:
			HSP2 "#" 1 Bright A_FadeOut(0.075)
		Loop
	}
}

actor FleshWizard : DnD_BaseEnemy {
	obituary "%o was tormented by a Flesh Wizard."
	health 625
	radius 20
	height 56
	mass 256
	speed 16
	painchance 64
	SEESOUND "FleshWizard/See"
	painsound "FleshWizard/pain"
	deathsound "FleshWizard/die"
	Tag "Flesh Wizard"
	Species "AV"
	DropItem "SoulAmmoSpawner", 128
	MONSTER
  DamageFactor "Vile", 0.0
  DamageFactor "VileBullet", 0.0
  DamageFactor "VilePacify", 0.0
  DamageFactor "VileStun", 0.0
  DamageFactor "VileGhost", 0.0
  DamageFactor "VileFire", 0.0
  DamageFactor "VileCurse", 0.0
  DamageFactor "VileBlue", 0.0
  DamageFactor "VileBlueFire", 0.0
  DamageFactor "VileSlow", 0.0
  DamageFactor "VileSnare", 0.0
  DamageFactor "VileMagic", 0.0
  DamageFactor "Fire", 1.5
  DamageFactor "P_Ice", 1.5
	+FLOORCLIP
	+QUICKTORETALIATE
	+NOINFIGHTING
	+NODAMAGETHRUST
	+DONTHARMSPECIES
	+DONTMORPH
	+DONTBLAST
	+USEKILLSCRIPTS
	states {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_GiveInventory("MakeMagicImmune", 1)
			TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_FLESHWIZARD, DND_MAGIC_IMMUNE | DND_TELEPORT | DND_HOMING | DND_DEATH)
		Idle:
			LMWZ E 10 A_Look
		loop
		See:
			LMWZ EEE 4 Fast A_Chase
			TNT1 A 0 A_Jump(16, "Teleport")
		Loop
		Teleport:
			TNT1 A 0 A_PlaySound("H2SkullWizard/Teleport")
			TNT1 A 0 A_UnsetShootable
			TNT1 A 0 A_UnsetSolid
			LMWZ ABCD 3 Fast
			TNT1 AAAAAAAA 1 Fast A_Wander
			TNT1 AAA 1 Fast A_Chase("", "", CHF_NOPLAYACTIVE)
			TNT1 AAA 1 Fast A_Chase("", "")
			TNT1 AAAAAAAA 1 Fast A_Wander
			LMWZ DCBA 3 Fast
			TNT1 A 0 A_PlaySound("H2SkullWizard/Melee")
			TNT1 A 0 A_SetSolid
			TNT1 A 0 A_SetShootable
			LMWZ E 4 Fast A_JumpIfTargetInLOS("Missile")
		Loop
		Missile:
			TNT1 A 0 A_JumpIfCloser(256, "Leash")
		MissileNormal:
			LMWZ FFF 5 Fast A_FaceTarget
			LMWZ G 7 Fast A_FaceTarget
			TNT1 A 0 A_FaceTarget
			LMWZ H 6 Fast A_CustomMissile("FleshWizardMissile", 48)
			TNT1 A 0 A_FaceTarget
			LMWZ H 6 Fast A_CustomMissile("FleshWizardMissile", 48)
			TNT1 A 0 A_FaceTarget
			LMWZ H 6 Fast A_CustomMissile("FleshWizardMissile", 48)
			LMWZ G 5 Fast
			LMWZ F 6 Fast
		Goto See
		Leash:
			LMWZ EE 2 A_JumpIfInTargetInventory("Level", 1, "CheckMore")
		Goto MissileNormal
		CheckMore:
			LMWZ EE 2 Fast A_JumpIfTargetInLOS("BeginLeash")
		Goto See
		BeginLeash:
			TNT1 A 0 A_TakeInventory("StopLeash", 1)
			TNT1 A 0 A_ChangeFlag("QUICKTORETALIATE", 0)
			LMWZ F 5 Fast A_FaceTarget
			LMWZ G 4 Fast A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DND Flesh Wizard Torment", 0, 10)
		LeashLoop:
			LMWZ H 1 Fast A_JumpIfInventory("StopLeash", 1, "LeashEnd")
			LMWZ H 1 Fast A_JumpIfTargetInLOS("ContinueLeash")
		Goto LeashEnd
		ContinueLeash:
			LMWZ H 4 Fast A_FaceTarget
		Goto LeashLoop
		LeashEnd:
			TNT1 A 0 A_GiveInventory("StopLeash", 1)
			TNT1 A 0 A_ChangeFlag("QUICKTORETALIATE", 1)
			LMWZ G 4 Fast A_FaceTarget
			LMWZ F 5 Fast
		Goto See
		Pain:
			TNT1 A 0 A_GiveInventory("StopLeash", 1)
			LMWZ I 3 Fast A_ChangeFlag("QUICKTORETALIATE", 1)
			LMWZ I 5 Fast A_Pain
			TNT1 A 0 A_Jump(192, "Teleport")
		Goto See
		Death:
			LMWZ J 6 A_Scream
		GaveSoul:
			TNT1 A 0 Thing_ChangeTID(0, 0)
			TNT1 A 0 A_SpawnItemEx("FleshWizardDeathFX", 0, 0, 48, 0, 0, 2)
			TNT1 AAAAAAA 0 A_SpawnItemEx("NashGore_FlyingBlood", random(-16, 16), random(-16, 16), random(32, 60), random(-4, 4), random(-4, 4), random(0, 6), 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItem("FleshWizardCorpseDamage")
			LMWZ K 6 A_NoBlocking
			TNT1 A 0 A_PlaySound("FleshWizard/SnareBegin", 6)
			LMWZ LMNO 6
			LMWZ P -1
		Stop
	    Ice:
			"----" G 5 A_GenericFreezeDeath
			"----" G 1 A_FreezeDeathChunks
		Wait
		GiveSoul:
		Death.BookOfTheDead:
			LMWZ J 1
			TNT1 A 0 A_SpawnItem("SoulEffectSpawner")
			TNT1 A 0 A_GiveToTarget("Souls", 1)  
		Goto GaveSoul
	}
}

Actor StopLeash : DnD_Boolean { }

Actor FleshWizardMissileTrail {
	RenderStyle Add
	Alpha 0.8
	Scale 0.5
	Translation "0:255=%[0.00,0.00,0.00]:[1.39,0.03,0.00]"
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 1
			TNT1 A 0 ThrustThingZ(0,random(-3,8),0,1)
			SHTR ABCDDE 3 Bright
			SHTR F 1 Bright A_FadeOut(0.1)
		Wait
	}
}

Actor FleshWizardExp : BaseExplosionDamage {
	DamageType "VileSlow"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(30 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 96, 0)
		Stop
	}
}

Actor FleshWizardCorpseDamage : BaseExplosionDamage {
	DamageType "VileSnare"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 A_Explode(48 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 192)
		Stop
	}
}

Actor FleshWizardMissile {
	PROJECTILE
	Height 12
	Radius 6
	Speed 18
	Damage (5 * random(2, 3) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	DamageType "VileSlow"
	Translation "0:255=%[0.00,0.00,0.00]:[1.39,0.03,0.00]"
	SeeSound "redballbsee"
	DeathSound "redballbdeth"
	Scale 0.75
	+SEEKERMISSILE
	+NODAMAGETHRUST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			ANFB A 2 Bright A_SpawnItem("FleshWizardMissileTrail")
			TNT1 A 0 A_SeekerMissile(5, 10)
			ANFB A 2 Bright A_SpawnItem("FleshWizardMissileTrail")
			TNT1 A 0 A_SeekerMissile(5, 10)
			ANFB B 2 Bright A_SpawnItem("FleshWizardMissileTrail")
			TNT1 A 0 A_SeekerMissile(5, 10)
			ANFB C 2 Bright A_SpawnItem("FleshWizardMissileTrail")
			TNT1 A 0 A_SeekerMissile(5, 10)
		Loop
		Death:
			ANFB D 3 Bright
			TNT1 AAAAA 0 A_SpawnItemEx("NashGore_FlyingBlood", random(-16, 16), random(-16, 16), random(12, 36), random(-4, 4), random(-4, 4), random(0, 6), 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION)
			TNT1 A 0 A_SpawnItem("FleshWizardExp")
			ANFB EFG 3 Bright
		Stop
	}
}

Actor FleshWizardLeashFX {
	+CLIENTSIDEONLY
	+NOINTERACTION
	Renderstyle Add
	Scale 0.85
	States {
		Spawn:
			FFX1 BC 2
		Stop
	}
}

Actor FleshWizardDebuffFX : FleshWizardLeashFX {
	States {
		Spawn:
			FFX1 A 1 A_FadeOut(0.1)
		Loop
	}
}

Actor FleshWizardDamageSoundPlayer : DnD_Activator {
	States {
		Pickup:
		Use:
			TNT1 AAAA 0 A_SpawnItemEx("NashGore_FlyingBlood", random(-16, 16), random(-16, 16), random(12, 36), random(-4, 4), random(-4, 4), random(0, 6), 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION)
			TNT1 A 0 A_PlaySound("FleshWizard/SnareBegin")
		Stop
	}
}

Actor FleshWizardDeathFX {
	+CLIENTSIDEONLY
	+NOINTERACTION
	Renderstyle Add
	Alpha 0.85
	States {
		Spawn:
			BSBL GHIJ 5 Bright
			BSBL K 15 Bright
			BSBL L 5 Bright
		Stop
	}
}