ACTOR CacoLich : UndeadEnemy
{
	Health 500
	Speed 12
	Radius 31
	Height 56
	PainChance 96
	Mass 500
	SeeSound "CacoLich/Sight"
	ActiveSound "CacoLich/Active"
	PainSound "CacoLich/Pain"
	DeathSound "CacoLich/Death"
	Obituary "%o was blasted by the Cacolich."
	BloodColor "Green"
	MONSTER
	Species "Cacodemon"
	MeleeRange 160
	DamageFactor "Caco", 0.0
	DamageFactor "CacoMagic", 0.0
	DamageFactor "CacoMagicOrange", 0.0
	DamageFactor "CacoExp", 0.0
	DamageFactor "CacoFire", 0.0
	DamageFactor "CacoPoison", 0.0
	Tag "Cacolich"
	+DONTHURTSPECIES	
    +NOGRAVITY
	+DONTBLAST
	+FLOAT
	+USEKILLSCRIPTS
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_CACOLICH, DND_SILVER_WEAKNESS | DND_HOMING)
	Idle:
         CALI A 1 A_Look
	   Loop
	See:
	   CALI A 4 Fast A_Chase
         Loop
      Missile:
         CALI B 6 Fast A_FaceTarget
         CALI C 6 Fast A_CustomMissile("CacoLichBall", 35, 0, 0)
         CALI D 6 Fast A_FaceTarget
         CALI EF 5 Fast A_FaceTarget
         CALI GFGFGFGFGFGFGFGFGF 1 A_CustomMissile("CacoLichFlameFar", 24, 0, 0)
         CALI FE 5 Fast A_FaceTarget
         CALI E 0
         Goto See	
      Melee:
         CALI E 8 Fast A_FaceTarget
		 CALI F 6 Fast A_FaceTarget
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 0)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, 1)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 2)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, 3)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 4)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, 5)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 6)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, 7)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 8)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, 9)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 10)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, 12)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 12)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, 13)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 14)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, 15)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 16)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, 17)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 18)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, 19)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 20)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, 19)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 18)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, 17)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 16)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, 15)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 14)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, 13)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 12)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, 11)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 10)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, 9)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 8)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, 7)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 6)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, 5)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 4)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, 3)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 2)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, 1)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 0)
         CALI G 0 A_SpidRefire
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, -1)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, -2)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, -3)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, -4)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, -5)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, -6)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, -7)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, -8)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, -9)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, -10)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, -12)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, -12)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, -13)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, -14)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, -15)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, -16)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, -17)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, -18)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, -19)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, -20)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, -19)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, -18)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, -17)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, -16)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, -15)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, -14)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, -13)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, -12)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, -11)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, -10)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, -9)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, -8)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, -7)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, -6)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, -5)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, -4)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, -3)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, -2)
         CALI F 1 A_CustomMissile("CacoLichFlame", 24, 0, -1)
         CALI G 1 A_CustomMissile("CacoLichFlame", 24, 0, 0)
         Goto See
	Pain:
         CALI H 4 Fast
         CALI I 6 Fast A_Pain
         Goto See
      Death:
         CALI J 0
         CALI J 0 A_SetFloorClip
         CALI J 6 A_Scream 
         CALI K 6
		 CALI LMN 6
         Wait
      Crash:
	     TNT1 AAAA 0 A_SpawnItem("NashGore_GibGenerator_Green",0,0,0,0)
         CALI O 6
		 TNT1 A 0 A_JumpIfInTargetInventory("Ability_SoulStealer", 1, "GiveSoul")
	  GaveSoul:
		 CALI P 6
         CALI Q 6 A_NoBlocking
         CALI R 6
         CALI S -1
         Stop
	  GiveSoul:
	  Death.BookOfTheDead:
		CALI O 1
		TNT1 A 0 A_SpawnItem("SoulEffectSpawner")
		TNT1 A 0 A_GiveToTarget("Souls", 1)  
	  Goto GaveSoul	
	}
}

ACTOR CacoLichBall
{
    Radius 8
    Height 6
    Speed 12
    Damage (7 * random(1, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	DamageType "CacoPoison"
	PROJECTILE
	+SEEKERMISSILE
	+DONTBLAST
	RENDERSTYLE ADD
	ALPHA 0.8
	SeeSound "Imp/attack"
	DeathSound "Imp/shotx"
	Decal CacoScorch
	States
	{
	Spawn:
		TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
	SpawnLoop:
		LBAL AB 4 BRIGHT A_SeekerMissile(5,15)
    Loop
	Death:
		TNT1 A 0 A_SpawnItemEx("GreenParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
		TNT1 AAA 0 A_CustomMissile("ExplosionFX4", 0, 0, random(0,360), 2, random(0,360))
		TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
	   LBAL CDEFG 6 BRIGHT
	   Stop
	}
}

ACTOR CacoLichFlameFar
{
	Radius 4
	Height 6
	Speed 30
	Damage (4 * random(1, 4) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	DamageType "CacoPoison"
	PROJECTILE
	+DONTBLAST
	RENDERSTYLE ADD
	ALPHA 0.8
	SeeSound "CacoFlame/attack"
	States
	{
	Spawn:
		 TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
         CFIR ABCDEFGHIJKLMOP 1
	   Stop
	Death:
         CFIR HIJKLMOP 1
	   Stop
	}
}

ACTOR CacoLichFlame
{
	Radius 4
	Height 6
	Speed 28
	Damage (1 * random(1, 4) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	DamageType "CacoPoison"
	PROJECTILE
	+DONTBLAST
	RENDERSTYLE ADD
	ALPHA 0.8
	SeeSound "CacoFlame/attack"
	States
	{
	Spawn:
		TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
         CFIR ABCDEFGHIJKLMOP 1
	   Stop
	Death:
         CFIR HIJKLMOP 1
	   Stop
	}
}

ACTOR DeathWhisperer : UndeadEnemy
{ 
    Health 500
	Mass 500
    Radius 31
    Height 56
    Speed 13
    PainChance 145
    MONSTER 
	DamageFactor "Caco", 0.0
	DamageFactor "CacoMagic", 0.0
	DamageFactor "CacoMagicOrange", 0.0
	DamageFactor "CacoExp", 0.0
	DamageFactor "CacoFire", 0.0
	DamageFactor "CacoPoison", 0.0
	DamageFactor "Bullet", 0.75
	DamageFactor "Melee", 0.5
	DamageFactor "Melee_Magic", 0.5
    +NOGRAVITY
    +FLOAT
	+DONTBLAST
	+USEKILLSCRIPTS
    Obituary "%o's spirit was eradicated by a Death Whisperer."
	SeeSound "CacoLich/Sight"
	ActiveSound "CacoLich/Active"
	PainSound "CacoLich/Pain"
	DeathSound "CacoLich/Death"
	Species "Cacodemon"
	Tag "Death Whisperer"
	+DONTHURTSPECIES
	+DONTRIP
	+NOBLOOD
    States
    {
    Spawn:
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_DEATHWHISPERER, DND_SILVER_WEAKNESS | DND_HOMING | DND_BULLET_RESIST | DND_MELEE_RESIST | DND_HARDENED_SKIN)
	Idle:
        DCAC A 10 A_Look
        Loop
    See:
        DCAC A 4 Fast A_Chase
        Loop
    Missile:
        DCAC B 5 Fast A_FaceTarget
        DCAC C 5 Fast A_Custommissile ("CacoLichBall",35,0,0)
        DCAC D 5 Fast A_FaceTarget
        Goto See
    Pain:
        DCAC E 5 Fast
        DCAC E 3 Fast A_Pain
        Goto See
      Death:
         DCAC J 0
         DCAC J 0 A_SetFloorClip
         DCAC F 6 A_Scream
         DCAC GH 6
		 Wait
	  GiveSoul:
	  Death.BookOfTheDead:
		DCAC I 1
		TNT1 A 0 A_SpawnItem("SoulEffectSpawner")
		TNT1 A 0 A_GiveToTarget("Souls", 1)  
	  Goto GaveSoul		 
      Crash:
         DCAC I 6
	     TNT1 A 0 A_JumpIfInTargetInventory("Ability_SoulStealer", 1, "GiveSoul")
	  GaveSoul:
		 DCAC J 6
         DCAC K 6 A_NoBlocking
         DCAC L -1
         Stop
    }
}

ACTOR EarthLich : MechanicalEnemy
{ 
    Health 425
	Mass 2000
    Radius 31
    Height 56
    Speed 8
    MONSTER
	DamageFactor "Caco", 0.0
	DamageFactor "CacoMagic", 0.0
	DamageFactor "CacoMagicOrange", 0.0
	DamageFactor "CacoExp", 0.0
	DamageFactor "CacoFire", 0.0
	DamageFactor "CacoPoison", 0.0
    +NOGRAVITY
    +FLOAT
    Obituary "%o was eliminated by an Earth Lich."
	SeeSound "monster/cubsit"
	ActiveSound "monster/senact"
	DeathSound "EarthLich/Death"
	Species "Cacodemon"
	Tag "Earth Lich"
	+DONTHURTSPECIES
	+DONTRIP
	+DONTBLAST
	+NOBLOOD
	+USEKILLSCRIPTS
    States
    {
    Spawn:
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_EARTHLICH, DND_BULLET_RESIST | DND_MELEE_RESIST | DND_HARDENED_SKIN)
	Idle:
        ELIC A 10 A_Look
        Loop
    See:
        ELIC A 4 Fast A_Chase
        Loop
    Missile:
		TNT1 A 0 A_Jump(160, "Spikes")
		TNT1 A 0 A_PlaySound("EarthLich/Rock")
        ELIC BBBBBBBBB 1 A_FaceTarget
        ELIC B 5 Fast A_Custommissile ("EarthLichRock",18,0,0)
        Goto See
	Spikes:
		TNT1 A 0 A_JumpIfInventory("SpikeCounter", 30, "See")
		TNT1 A 0 A_FaceTarget
		ELIC B 2 Fast A_CustomMissile ("EarthLichSpike", 18, random(-4,4), random(-6,6))
		TNT1 A 0 A_GiveInventory("SpikeCounter", 1)
		TNT1 A 0 A_CPosRefire
	    Loop
      Death:
         TNT1 A 0
         TNT1 A 0 A_SetFloorClip
         ELIC C 6 A_Scream
         ELIC DE 6
         Wait
	  GiveSoul:
	  Death.BookOfTheDead:
		ELIC F 1
		TNT1 A 0 A_SpawnItem("SoulEffectSpawner")
		TNT1 A 0 A_GiveToTarget("Souls", 1)  
	  Goto GaveSoul		 
      Crash:
         ELIC F 6
	     TNT1 A 0 A_JumpIfInTargetInventory("Ability_SoulStealer", 1, "GiveSoul")
	  GaveSoul:
         ELIC G 6
		 ELIC H 6 A_NoBlocking
         ELIC I -1
         Stop
	  Raise:
		 TNT1 A 0 A_GiveInventory("Mo_Revived", 1)
		 ELIC IHGFEDC 6
		 Goto See
    }
}

Actor Spikecounter : Inventory
{
	inventory.maxamount 45
}

Actor EarthLichSpike
{
	PROJECTILE
	+THRUGHOST
	+DONTBLAST
	Speed 28
	Damage (random(8,12) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	DamageType "Caco"
	Radius 6
	Height 10
	Alpha 0.8
	RenderStyle Translucent
	SeeSound "Armors/NecroShard"
	DeathSound "Armors/NecroShardHit"
	States
	{
	Spawn:
		TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
	SpawnLoop:
		CRYS AAAAA 1 
		Loop
	Death:
		TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
		CRYE ABCDEF 3
		Stop
	}
}

Actor EarthLichExp : BaseExplosionDamage
{
	DamageType "CacoExp"
    Obituary "%o was eliminated by an Earth Lich."
	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 EarthLichRock
{
	PROJECTILE
	+THRUGHOST
	+DONTBLAST
	Speed 22
	Damage (5*random(4,6) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	DamageType "Caco"
	Radius 10
	Height 14
	Alpha 0.8
	Scale 0.8
	DeathSound "EarthLich/Rockhit"
	States
	{
	Spawn:
		TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
	SpawnLoop:
		HHRB A 5
		Loop
	Death:
		TNT1 A 0 A_SpawnItem("EarthLichExp")
		TNT1 AAAAAAAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
		TNT1 AAAAAAAAAAAAA 0 A_SpawnItemEx("EarthLichRockPiece", random(-3,3), random(-3,3), random(3,8), random(-3,3), random(-3,3), random(-1,9), random(0,360))
		HHPF A 2
		HHPF BCDEF 2
		Stop
	}
}

Actor EarthLichRockPiece
{
	+CLIENTSIDEONLY
	PROJECTILE
	-NOGRAVITY
	Height 4
	Radius 8
	States
	{
		Spawn:
			HRCK FGH 3
		Loop
		Death:
			HRKE ABCDE 2
		Stop
	}
}

ACTOR EnhancedCacodemon : DnD_BaseEnemy
{ 
   Health 300
   Speed 8 
   Radius 31
   Height 56
   PainChance 128
   Mass 400
   Meleedamage 6 
   REACTIONTIME 8 
   MONSTER
   +DONTBLAST
   +NOGRAVITY
   +FLOAT
   +USEKILLSCRIPTS
   SeeSound "caco/sight"
   Painsound "Cacodemon/Pain"
   DeathSound "caco/death"
   ActiveSound "caco/active"
   HitObituary "%o was mowed down by an enhanced cacodemon." 
   Obituary "%o was made into a snack by the enhanced cacodemon." 
	Species "Cacodemon"
	DamageFactor "Caco", 0.0
	DamageFactor "CacoMagic", 0.0
	DamageFactor "CacoMagicOrange", 0.0
	DamageFactor "CacoExp", 0.0
	DamageFactor "CacoFire", 0.0
	DamageFactor "CacoPoison", 0.0
   Translation "9:12=190:190", "16:31=88:103", "32:39=104:109", "40:47=110:111", "112:116=173:175", "117:127=176:191", "166:166=14:14", "167:167=79:79", "168:175=80:103", "176:187=106:111", "188:189=5:5", "190:191=6:6", "192:207=168:191", "223:223=14:14", "235:235=107:107", "240:246=191:191"
	Tag "Enhanced Cacodemon"
	+DONTHURTSPECIES   
   States 
   { 
   Spawn:
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_ENHANCEDCACO)
	Idle:
      HEAD A 10 A_Look 
      Loop 
   See: 
      HEAD A 3 Fast A_Chase 
      Loop 
   Missile: 
   Melee:
      HEAD BC 5 Fast A_FaceTarget 
      HEAD B 0 bright A_CustomMissile("CacoDemonBall", 24, 0, 0, 1)
      HEAD B 0 bright A_CustomMissile("EnhancedCacoBall_1", 24, 0, -8, 1)
      HEAD D 5 Fast bright A_CustomMissile("EnhancedCacoBall_2", 24, 0, 8, 1)
      Goto See 
   Pain: 
      HEAD E 4 Fast 
      HEAD E 4 Fast A_Pain 
      HEAD F 5 Fast 
      Goto See 
   Death: 
      HEAD E 8 
	  TNT1 A 0 A_JumpIfInTargetInventory("Ability_SoulStealer", 1, "GiveSoul")
   GaveSoul:		  
      HEAD F 8 A_Scream 
	  TNT1 A 0 ACS_ExecuteAlways(982, 0, 2)
      HEAD GH 8 
	  HEAD AAAA 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
      HEAD IJK 8 A_NoBlocking 
      HEAD L -1 A_SetFloorClip
      Stop 
	  GiveSoul:
	  Death.BookOfTheDead:
		HEAD F 1
		TNT1 A 0 A_SpawnItem("SoulEffectSpawner")
		TNT1 A 0 A_GiveToTarget("Souls", 1)  
	  Goto GaveSoul	  
   Raise: 
      TNT1 A 0 A_GiveInventory("Mo_Revived", 1)
      HEAD K 8 A_UnsetFloorClip
      HEAD JIHGFE 8 
      Goto See 
   } 
}

Actor EnhancedCacoBall_1 : CacoDemonBall {
	States {
		Spawn:
			BAL2 AABB 2 Bright A_Weave(6, 0, 4, 0)
		Loop
	}
}

Actor EnhancedCacoBall_2 : EnhancedCacoBall_1 {
	weaveindexXY 32
}

ACTOR Inferno : DnD_BaseEnemy
{ 
	Health 400 
	Radius 31 
	Height 56 
	Mass 400 
	Speed 10
	PainChance 128 
	MONSTER
	HITOBITUARY "%o got eaten by an inferno."
	OBITUARY "%o got incinerated by an inferno."
	+FireResist
	+NoGravity 
	+Float
	+DontFall
	+DontHurtSpecies
	+DONTBLAST
	+USEKILLSCRIPTS
	SEESOUND "monster/infsit" 
	PAINSOUND "monster/infpai" 
	DEATHSOUND "monster/infdth" 
	ACTIVESOUND "caco/active"
	MELEESOUND "caco/melee"
	DamageFactor "Caco", 0.0
	DamageFactor "CacoMagic", 0.0
	DamageFactor "CacoMagicOrange", 0.0
	DamageFactor "CacoExp", 0.0
	DamageFactor "CacoFire", 0.0
	DamageFactor "CacoPoison", 0.0
	Species "Cacodemon"
	Tag "Inferno"
	states 
   { 
   Spawn: 
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_INFERNO, DND_DEATH)
	Idle:
       INFR A 10 Bright A_Look 
       Loop 
   See: 
       INFR BCD 3 Fast Bright A_Chase 
       Loop 
   Missile: 
       INFR HI 5 Fast Bright A_FaceTarget 
       INFR J 5 Fast Bright A_CustomMissile ("Lavaball",24,0,0,0)
       Goto See
   Melee: 
       INFR AFG 5 Fast Bright A_FaceTarget 
       INFR E 5 Fast Bright A_CustomMeleeAttack(8 * random(1, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_SELF)), "", "")
       Goto See 
   Pain: 
       INFR K 6 Fast Bright A_Pain 
       INFR K 6 Fast Bright
       Goto See 
   Death: 
       INFR L 6 Bright 
	   TNT1 A 0 A_JumpIfInTargetInventory("Ability_SoulStealer", 1, "GiveSoul")
   GaveSoul: 
       INFR M 6 Bright A_Scream
       INFR N 6 Bright
	   TNT1 AAAAAAA 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
       INFR N 0 A_CustomMissile("Lavaball",32,0,45,2)
       INFR N 0 A_CustomMissile("Lavaball",32,0,135,2)
       INFR N 0 A_CustomMissile("Lavaball",32,0,225,2)
       INFR N 0 A_CustomMissile("Lavaball",32,0,315,2)
       INFR O 6 Bright
       INFR P 6 Bright A_NoBlocking 
       INFR Q 6 Bright
       Stop
	  GiveSoul:
	  Death.BookOfTheDead:
		INFR M 1
		TNT1 A 0 A_SpawnItem("SoulEffectSpawner")
		TNT1 A 0 A_GiveToTarget("Souls", 1)  
	  Goto GaveSoul	  
   } 
}

Actor InfernoExp : BaseExplosionDamage
{
	DamageType "CacoFire"
	Obituary "%o got incinerated by an inferno."
	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)
		Stop
	}
}

ACTOR Lavaball
{
   Radius 8
   Height 8
   Speed 15
   Damage (6 * random(1, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
   DamageType "CacoFire"
   SpawnID 250
   Scale 1.0
   PROJECTILE
   RENDERSTYLE ADD
   ALPHA 0.95
   +DONTBLAST
   SeeSound "weapons/firmfi"
   DeathSound "weapons/firex3"
   DONTHURTSHOOTER
   States
   {
   Spawn: 
	  TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
   SpawnLoop:
      BAL3 AB 4 Bright A_SpawnItem("RedPuff",0,0)
      loop
   Death:
	  TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	  TNT1 AAAA 0 A_CustomMissile("ExplosionFX2", 0, 0, random(0,360), 2, random(0,360))
	  TNT1 AAAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
      BAL3 C 5 Bright A_SpawnItem("InfernoExp")
      BAL3 DE 5 Bright
      stop
   }
}

ACTOR Weakener : DnD_BaseEnemy
{
	Health 300
	Radius 24
	Height 44
	Mass 400
	Speed 10
	PainChance 160
	Monster
	+FLOAT
	+NOGRAVITY
	+MISSILEEVENMORE
	+DONTBLAST
	+USEKILLSCRIPTS
	SeeSound "caco/sight"
	Painsound "Cacodemon/Pain"
	DeathSound "caco/death"
	ActiveSound "caco/active"
	Obituary "%o was drained by a Weakener."
	bloodcolor "Green"
	Species "Cacodemon"
	DamageFactor "Caco", 0.0
	DamageFactor "CacoMagic", 0.0
	DamageFactor "CacoMagicOrange", 0.0
	DamageFactor "CacoExp", 0.0
	DamageFactor "CacoFire", 0.0
	DamageFactor "CacoPoison", 0.0
	Tag "Weakener"
	+DONTHURTSPECIES	
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_WEAKENER)
	Idle:
		CCMN A 10 A_Look
		Loop
	See:
		CCMN A 3 Fast A_Chase
		Loop
	Missile:
		CCMN B 5 Fast A_FaceTarget
		CCMN C 5 Fast A_FaceTarget
		TNT1 A 0 A_CustomMissile("WeakenerBall", 15, 0, -8)
		TNT1 A 0 A_CustomMissile("WeakenerBall", 15, 0, 8)
		CCMN D 5 Fast A_CustomMissile("WeakenerBall", 15)
		Goto See
	Pain:
		CCMN E 3 Fast
		CCMN E 3 Fast A_Pain
		CCMN F 6 Fast
		Goto See
	Death:
		CCMN G 8
	    TNT1 A 0 A_JumpIfInTargetInventory("Ability_SoulStealer", 1, "GiveSoul")
	GaveSoul:	
		CCMN H 8 A_Scream
		TNT1 A 0 ACS_ExecuteAlways(982, 0, 2)
		CCMN I 8
		TNT1 AAAA 0 A_SpawnItem("NashGore_GibGenerator_Green",0,0,0,0)
		CCMN J 8
		CCMN K 8 A_NoBlocking
		CCMN L -1 A_SetFloorClip
		Stop
	  GiveSoul:
	  Death.BookOfTheDead:
		CCMN H 1
		TNT1 A 0 A_SpawnItem("SoulEffectSpawner")
		TNT1 A 0 A_GiveToTarget("Souls", 1)  
	  Goto GaveSoul		
	Raise:
	    TNT1 A 0 A_GiveInventory("Mo_Revived", 1)
		CCMN L 8 A_UnSetFloorClip
		CCMN KJIHG 8
		Goto See
	}
}

ACTOR WeakenerBall
{
	Radius 6
	Height 8
	Speed 28
	Damage (4 * random(1, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	+DONTBLAST
	DamageType "Caco"
	Projectile
	RenderStyle Add
	Alpha 0.8
	SeeSound "caco/attack"
	DeathSound "caco/shotx"
	States
	{
	Spawn:
		TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
	SpawnLoop:
		CMFB AB 3 BRIGHT
		Loop
	Death:
		TNT1 A 0 A_SpawnItemEx("GreenParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
		TNT1 AAA 0 A_CustomMissile("ExplosionFX4", 0, 0, random(0,360), 2, random(0,360))
		TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
		CMFB CDE 6 BRIGHT
		Stop
	}
}

Actor WeakenerBallHoming : WeakenerBall
{
	+SEEKERMISSILE
	States
	{
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			CMFB BA 3 Bright A_SeekerMissile(10, 90)
		Loop
	}
}

actor Grell : DnD_BaseEnemy
{
	//$Category Monsters
	Tag "Grell"
	health 325
	radius 24
	height 56
	mass 400
	speed 10
	Obituary "%o was plagued by a grell." 
	painchance 128
	seesound "grell/sight"
	painsound "grell/pain"
	deathsound "grell/death"
	activesound "grell/active"
	Monster
	Species "CacoDemon"
	DamageFactor "Caco", 0.0
	DamageFactor "CacoMagic", 0.0
	DamageFactor "CacoMagicOrange", 0.0
	DamageFactor "CacoExp", 0.0
	DamageFactor "CacoFire", 0.0
	DamageFactor "CacoPoison", 0.0
	Tag "Grell"
	+DROPOFF
	+NOGRAVITY
	+FLOAT
	+DONTHURTSPECIES
	+DONTBLAST
	+USEKILLSCRIPTS
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_GRELL, DND_POISON)
	Idle:
		GREL A 10 A_Look
		Loop
	See:
		GREL AAB 3 Fast A_Chase
		GREL BCC 3 Fast A_Chase
		Loop
	Missile:
		GREL D 0 A_PlaySound("grell/attack")
		GREL D 4 Fast A_FaceTarget
		GREL E 4 Fast Bright A_FaceTarget    
		GREL F 4 Fast Bright A_CustomMissile("GrellBall", 32, 0, 0) 
		Goto See
	Pain:
		GREL G 3 Fast 
		GREL G 3 Fast A_Pain
		Goto See
	Death:
	    TNT1 A 0 A_JumpIfInTargetInventory("Ability_SoulStealer", 1, "GiveSoul")
	GaveSoul:	
		GREL H 5
		TNT1 A 0 ACS_ExecuteAlways(982, 0, 2)
		GREL I 0 A_NoBlocking
		GREL I 4 A_Scream
	Wait
	Crash:
		GREL J 4 A_PlaySound("grell/thud", CHAN_AUTO)
		GREL K 4 A_NoBlocking
		GREL LM 4 A_SetFloorClip
		GREL N -1 
		Stop
	Raise:
	    TNT1 A 0 A_GiveInventory("Mo_Revived", 1)
		GREL M 5 A_UnSetFloorClip
		GREL LKJIH 5
		Goto See
	  GiveSoul:
	  Death.BookOfTheDead:
		GREL H 1
		TNT1 A 0 A_SpawnItem("SoulEffectSpawner")
		TNT1 A 0 A_GiveToTarget("Souls", 1)  
	  Goto GaveSoul	
	}
}

ACTOR GrellBall
{
	Radius 8
	Height 16
	Speed 20
	Damage (4 * random(1, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	+DONTBLAST
	+THRUGHOST
	DamageType "CacoPoison"
	Renderstyle Add
	Alpha 0.67
	Projectile
	DeathSound "grell/projhit"
	States
	{
	Spawn:
		TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
	SpawnLoop:
		FVUL AAABBB 1 Bright A_SpawnItemEx("BarbTrail",0,0,0,0,0,0,0,128,0)
		loop
	Death:
		TNT1 A 0 A_SpawnItemEx("GreenParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
		FVUL CDEF 4 Bright
		stop
	}
}

ACTOR ShadowPriest : MagicalBulletResistantEnemy {
	Health 250
	PainChance 170
	Speed 8
	Scale 0.90
	Radius 20
	Height 56
	Mass 150
	MONSTER
	+NOBLOOD
	+NOGRAVITY
	+FLOAT
	+DONTBLAST
	+FLOORCLIP
	+DONTHURTSPECIES
	-TELESTOMP
	-DONTOVERLAP
	-NOTARGETSWITCH
	+USEKILLSCRIPTS
	DamageFactor "Caco", 0.0
	DamageFactor "CacoMagic", 0.0
	DamageFactor "CacoMagicOrange", 0.0
	DamageFactor "CacoExp", 0.0
	DamageFactor "CacoFire", 0.0
	DamageFactor "CacoPoison", 0.0
	Obituary "A Shadow Priest dragged %o into darkness."
	SeeSound "monster/acosit"
	AttackSound ""
	PainSound "monster/acopai"
	DeathSound "monster/acodth"
	ActiveSound "monster/acoact"
	Tag "Shadow Priest"
	States
   {
   Spawn:
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_SHADOWPRIEST, DND_MAGIC_WEAKNESS | DND_MOBILITY | DND_HOMING)
	Idle:
       ACOL AB 10 A_Look
       Loop
   See:
       ACOL AAABBB 4 Fast A_Chase
       ACOL B 0 A_Jump(96, "Dash")
       Loop
   Dash:
       ACOL A 0 A_Chase
       ACOL A 1 A_Playsound("monster/blur")
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL A 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL A 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 1 A_Chase
       ACOL B 0 Bright A_SpawnItem("AcolFX2",0,0)
       ACOL B 0 A_Jump(96, "See")
       Goto Dash
   Missile:
       ACOL D 8 Fast Bright A_FaceTarget
       ACOL E 5 Fast Bright A_FaceTarget
       ACOL F 3 Fast Bright A_CustomMissile("AcolyteShot",34,0,0,0)
       ACOL F 0 Bright A_FaceTarget
       ACOL F 3 Fast Bright A_CustomMissile("AcolyteShot",34,0,0,0)
       ACOL F 0 Bright A_FaceTarget
       ACOL F 3 Fast Bright A_CustomMissile("AcolyteShot",34,0,0,0)
       ACOL F 0 Bright A_FaceTarget
       ACOL F 3 Fast Bright A_CustomMissile("AcolyteShot",34,0,0,0)
       ACOL F 0 Bright A_FaceTarget
       ACOL F 3 Fast Bright A_CustomMissile("AcolyteShot",34,0,0,0)
       ACOL F 0 Bright A_FaceTarget
       ACOL F 3 Fast Bright A_CustomMissile("AcolyteShot",34,0,0,0)
       ACOL F 0 Bright A_FaceTarget
       ACOL F 3 Fast Bright A_CustomMissile("AcolyteShot",34,0,0,0)
       ACOL F 0 Bright A_FaceTarget
       ACOL F 3 Fast Bright A_CustomMissile("AcolyteShot",34,0,0,0)
       ACOL F 0 Bright A_FaceTarget
       ACOL F 3 Fast Bright A_CustomMissile("AcolyteShot",34,0,0,0)
       ACOL F 0 Bright A_FaceTarget
       ACOL F 3 Fast Bright A_CustomMissile("AcolyteShot",34,0,0,0)
       Goto See
   Pain:
       ACOL C 2 Fast
       ACOL C 2 Fast A_Pain
       ACOL C 0 A_Jump(96, "Dash")
       Goto See
   Death:
            TNT1 A 0 A_JumpIfInTargetInventory("Ability_SoulStealer", 1, "GiveSoul")
        GaveSoul:
       ACOL G 8 Bright A_Scream
       ACOL H 5 Bright
       ACOL I 5 Bright
       ACOL J 5 Bright A_NoBlocking
       ACOL KLM 5 Bright
       ACOL N 5 A_CustomMissile("AcolFX1",54,0,0,0)
       ACOL O 5 A_SpawnItem("DissipationEffect_Orange")
       ACOL P -1
       Stop
   Raise:
       TNT1 A 0 A_GiveInventory("Mo_Revived", 1)
       ACOL PONMLKJIHG 3
       Goto See
          GiveSoul:
          Death.BookOfTheDead:
                ACOL G 1 Bright
                TNT1 A 0 A_SpawnItem("SoulEffectSpawner")
                TNT1 A 0 A_GiveToTarget("Souls", 1)  
          Goto GaveSoul
   }
}
 
ACTOR AcolyteShot
{
   Radius 8
   Height 16
   Speed 10
   Damage (2 * random(1, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
   RENDERSTYLE ADD
   ALPHA 0.72
   Scale 0.85
   PROJECTILE
   +DONTBLAST
   +SEEKERMISSILE
   DamageType "CacoMagic"
   SeeSound "monster/acosht"
   DeathSound "monster/acohit"
   Decal "BishopScorch"
   States
   {
   Spawn:
	  TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
   SpawnLoop:
      CFX1 AABB 1 Bright A_BishopMissileWeave
      CFX1 B 0 Bright A_SeekerMissile(2, 3)
      loop
   Death:
      CFX1 CDEFGH 3 Bright
      stop
   }
}

ACTOR AcolFX2
{   
   Radius 2
   Height 2
   Speed 0
   Scale 0.90
   PROJECTILE
   RENDERSTYLE Translucent
   +NOBLOCKMAP
   +DONTBLAST
   +CLIENTSIDEONLY
   ALPHA 0.90
   States
   {
   Spawn:
      TNT1 A 3
      ACOL A 5 A_FadeOut(0.10)
      goto Spawn+1
   }
}

ACTOR AcolFX1
{   
   Radius 0
   Height 2
   Speed 0
   PROJECTILE
   +DONTBLAST
   +CLIENTSIDEONLY
   RENDERSTYLE Translucent
   ALPHA 0.67
   States
   {
   Spawn:
      ACOL QRSTUVW 4
      Stop 
   }
}

Actor ShadowPriest2 : ShadowPriest {
	-USEKILLSCRIPTS
	DamageFactor "Cyber", 0.5
	States {
			Spawn:
				TNT1 A 0
				TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_SHADOWPRIEST)
				ACOL PON 4
				ACOL MLKJIHG 3
			Idle:
				ACOL A 2 A_Look
		goto See
		Idle:
			ACOL A 2 A_Look
		Loop
	   Missile:
		   ACOL D 8 Fast Bright A_FaceTarget
		   ACOL E 5 Fast Bright A_FaceTarget
		   ACOL F 3 Fast Bright A_CustomMissile("AcolyteShot2",34,0,0,0)
		   ACOL F 0 Bright A_FaceTarget
		   ACOL F 3 Fast Bright A_CustomMissile("AcolyteShot2",34,0,0,0)
		   ACOL F 0 Bright A_FaceTarget
		   ACOL F 3 Fast Bright A_CustomMissile("AcolyteShot2",34,0,0,0)
		   ACOL F 0 Bright A_FaceTarget
		   ACOL F 3 Fast Bright A_CustomMissile("AcolyteShot2",34,0,0,0)
		   ACOL F 0 Bright A_FaceTarget
		   ACOL F 3 Fast Bright A_CustomMissile("AcolyteShot2",34,0,0,0)
		   ACOL F 0 Bright A_FaceTarget
		   ACOL F 3 Fast Bright A_CustomMissile("AcolyteShot2",34,0,0,0)
		   ACOL F 0 Bright A_FaceTarget
		   ACOL F 3 Fast Bright A_CustomMissile("AcolyteShot2",34,0,0,0)
		   ACOL F 0 Bright A_FaceTarget
		   ACOL F 3 Fast Bright A_CustomMissile("AcolyteShot2",34,0,0,0)
		   ACOL F 0 Bright A_FaceTarget
		   ACOL F 3 Fast Bright A_CustomMissile("AcolyteShot2",34,0,0,0)
		   ACOL F 0 Bright A_FaceTarget
		   ACOL F 3 Fast Bright A_CustomMissile("AcolyteShot2",34,0,0,0)
		   Goto See
	   Death:
		   ACOL G 8 Bright A_Scream 
		   ACOL H 5 Bright
		   ACOL I 5 Bright
		   ACOL J 5 Bright A_NoBlocking 
		   TNT1 AAAAAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
		   ACOL KLM 5 Bright
		   ACOL N 5 A_CustomMissile("AcolFX1",54,0,0,0)
		   ACOL O 5  
		   ACOL P -1 
       Stop 
	}
}

Actor AcolyteShot2 : AcolyteShot {
	DamageType "Cyber"
}

ACTOR Guardian : MagicalBulletResistantEnemy { 
	Health 275
	Radius 24 
	Height 56
	Mass 640
	Speed 9 
	PainChance 48
	Scale 1.1
	MONSTER
	HitObituary "%o got fried by a Guardian."
	Obituary "%o got fried by a Guardian."
	Species "CacoDemon"
	+NOGRAVITY 
	+FLOAT
	+DONTFALL
	+NOBLOOD
	+DONTHURTSPECIES
	+NOICEDEATH
	+DONTRIP
	+USEKILLSCRIPTS
    SeeSound "monster/sensit"
    PainSound "monster/senpai"
    ActiveSound "monster/cubfly"
    deathsound "monster/sendth"
	DamageFactor "Caco", 0.0
	DamageFactor "CacoMagic", 0.0
	DamageFactor "CacoMagicOrange", 0.0
	DamageFactor "CacoExp", 0.0
	DamageFactor "CacoFire", 0.0
	DamageFactor "CacoPoison", 0.0
	Tag "Guardian"
	States 
   { 
   Spawn: 
		TNT1 A 0
		TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_GUARDIAN, DND_MAGIC_WEAKNESS | DND_BULLET_RESIST | DND_MELEE_RESIST | DND_HARDENED_SKIN)
	Idle:
       GARD ABCDEF 3 A_Look 
       Loop 
   See: 
       GARD ABCDEF 3 Fast A_Chase
       Loop 
   Missile: 
       GARD G 8 Fast Bright A_FaceTarget 
       GARD H 4 Fast Bright A_FaceTarget
   KeepFiring:
	   GARD I 0 Bright A_PlaySound("weapons/magic1",0,2.0)
       GARD I 0 BRIGHT A_CustomMissile("GuardShot",32,4,0,1)
       GARD I 4 Fast BRIGHT A_CustomMissile("GuardShot",32,-4,0,1)
       GARD H 4 Fast Bright A_FaceTarget
	   GARD I 0 Bright A_PlaySound("weapons/magic1",0,2.0)
       GARD I 0 BRIGHT A_CustomMissile("GuardShot",32,4,0,1)
       GARD I 4 Fast BRIGHT A_CustomMissile("GuardShot",32,-4,0,1)
       GARD H 4 Fast Bright A_FaceTarget 
	   GARD I 0 Bright A_PlaySound("weapons/magic1",0,2.0)
       GARD I 0 BRIGHT A_CustomMissile("GuardShot",32,4,0,1)
       GARD I 4 Fast BRIGHT A_CustomMissile("GuardShot",32,-4,0,1)
	   GARD H 4 Fast Bright A_FaceTarget
	   TNT1 A 0 A_JumpIfTargetInLOS("KeepFiring", 0, JLOSF_DEADNOJUMP, 320)
       GARD G 8 Bright A_FaceTarget
       Goto See 
   Pain: 
       GARD J 3 Fast 
       GARD J 3 Fast A_Pain 
       Goto See 
   Death:
	    TNT1 A 0 A_JumpIfInTargetInventory("Ability_SoulStealer", 1, "GiveSoul")
	  GaveSoul:
       TNT1 A 0 A_NoBlocking
       TNT1 A 0 A_SetFloorClip
       GARD K 4 Bright A_Scream 
	   TNT1 AAAAAAAAAAAAAAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
       GARD LMNOPQ 4 Bright
       Stop 
	  GiveSoul:
	  Death.BookOfTheDead:
		HEAD G 1
		TNT1 A 0 A_SpawnItem("SoulEffectSpawner")
		TNT1 A 0 A_GiveToTarget("Souls", 1)  
	  Goto GaveSoul
   } 
}

ACTOR GuardShot : CacodemonBall
{
   Radius 6
   Height 6
   Speed 18
   Damage (4 * random(1, 8) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
   DamageType "CacoMagic"
   ALPHA 0.85
   +FORCEXYBILLBOARD
   Seesound "none"
   deathsound "weapons/maceex"
   Obituary "%o was fried by a Guardian."
   States
   {
   Spawn:
	  TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
   SpawnLoop:
      GBAL AAABBB 1 Bright A_SpawnItem("GuardianShotTrail")
      loop
   Death:
	  TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
      GBAL CDEFGHI 3 Bright
      stop
   }
}

Actor GuardianShotTrail {
	+CLIENTSIDEONLY
	+NOINTERACTION
	+NOGRAVITY
	Renderstyle Add
	Alpha 0.5
	States {
		Spawn:
			TNT1 A 1
		SpawnLoop:
			GBAL AAABBB 1 Bright A_FadeOut(0.075)
		Loop
	}
}

Actor Wicked : DnD_BaseEnemy { 
	Health 300
	Radius 28
	Height 56
	Mass 200 
	Speed 10 
	PainChance 112 
	Monster
	+NoGravity
	+Float
	+USEKILLSCRIPTS
	Obituary "%o got blasted by a Wicked."
	SeeSound "Wicked/See" 
	PainSound "Wicked/Pain" 
	DeathSound "Wicked/Die" 
	ActiveSound "Wicked/Act"
	Tag "Wicked"
	Species "Cacodemon"
	States { 
		Spawn: 
			TNT1 A 0
			TNT1 A 0 A_GiveInventory("MakeMagicResist", 1)
			TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_WICKED, DND_PIERCE | DND_MOBILITY | DND_HOMING, DND_MAGIC_RESIST)
		Idle:
			WICK ABCD 8 A_Look 
		Loop 
		See:
			WICK AABBCCDD 4 Fast A_Chase
			WICK A 0 A_Jump(64, "See2")
		See2:
			WICK EEFFGGHH 2 Fast A_Chase
			WICK E 0 A_Jump(32, "See")
		Missile:
			WICK I 1 A_PlaySound("Wicked/Attack")
			WICK I 4 A_FaceTarget
			TNT1 A 0 A_FaceTarget
			WICK JJJJJ 1 BRIGHT A_SpawnItemEx("WickedFireFX_1", 0, 0, 0, 0, random(-6, 6))
			TNT1 A 0 A_CustomMissile("WickedShot",60,0,0)
			WICK KKKKKKKK 1 BRIGHT A_SpawnItemEx("WickedFireFX_2", 0, 0, 0, 0, random(-6, 6))
			WICK L 5 
		Goto See       
		Pain: 
			WICK M 3 Fast
			WICK M 3 Fast A_Pain 
			WICK M 3 Fast
		Goto See 
		Death:
			TNT1 A 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
			WICK N 5 A_Scream
			WICK OP 5 
			TNT1 AAAA 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
			WICK P 0 A_SpawnItemEX("WickedTorso",0,0,48,0,0,0,0,16)
			WICT A 5 A_NoBlocking
			WICT BCDEF 5 
			WICT G -1 A_SetFloorClip 
		Stop 
		Raise:
			TNT1 A 0 A_GiveInventory("Mo_Revived", 1)
			WICT G 0 A_RemoveChildren(TRUE)
			WICK G 0 A_SpawnItemEx("WickedTorsoRes",0,0,0,0,0,1,0,0)
			WICT G 5 A_UnSetFloorClip
			WICT FEDBC 5
			WICK PON 5
		Goto See
		Ice:
			"----" G 5 A_GenericFreezeDeath
			"----" G 1 A_FreezeDeathChunks
		Wait
	} 
}

Actor WickedFireFX_1 {
	+NOINTERACTION
	+CLIENTSIDEONLY
	Renderstyle Translucent
	Alpha 0.0
	States {
		Spawn:
			WICK JJJJJJJJJJ 1 A_FadeIn(0.05)
			WICK JJJJJJJJJJ 1 A_FadeOut(0.05)
		Stop
	}
}

Actor WickedFireFX_2 : WickedFireFX_1 {
	States {
		Spawn:
			WICK KKKKKKKKKK 1 A_FadeIn(0.05)
			WICK KKKKKKKKKK 1 A_FadeOut(0.05)
		Stop
	}
}

Actor WickedShot {
	Radius 8
	Height 8
	Speed 10
	Damage (8 * random(3, 5) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	RenderStyle Add
	DamageType "CacoMagicOrange"
	Alpha 0.67
	Projectile
	+ThruGhost
	+SeekerMissile
	+ForceXYBillboard
	+PIERCEARMOR
	+NODAMAGETHRUST
	SeeSound "weapons/firmfi"
	DeathSound "FireDemonMissileHit"
	Decal "DoomImpScorch"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			WIBL ABCDABCDABCDABCDABCDABCDABCD 1 Bright A_SpawnItemEx("WickedFX",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,128,0)
			WIBL ABCD 0 Bright A_SeekerMissile(90, 90)
		Loop
		Death:
			WIBL JKLMN 3 Bright
		Stop
	}
}

Actor WickedFX
{   
  Radius 2
  Height 2
  +NoBlockMap
  +NoGravity
  +DontSplash
  +ForceXYBillboard
  +CLIENTSIDEONLY
  RenderStyle Add
  Alpha 0.67
  States
  {
  Spawn:
    TNT1 A 3 Bright
    WIBL EFGHI 3 BRIGHT
    Stop 
  }
}

Actor WickedTorso
{
  Mass 1000000
  Radius 1
  Height 1
  +IsMonster
  +Corpse
  States
  {
  Spawn:
    WICK Q 5 NoDelay A_PlaySound("monster/tenpn1")
    WICK R 5
    Wait
  Crash:
    WICK S 1 A_SetFloorClip
    WICK S 4 A_PlaySound("monster/tenpn2")
    WICK TUV 5
    WICK W -1
    Stop
  }
}

Actor WickedTorsoRes
{   
  Radius 24
  Height 24
  +NoGravity
  +NoBlockMap
  +NoClip
  +CLIENTSIDEONLY
  States
  {
  Spawn:
    WICK WVUTSRQ 5
    Stop     
  }
}