Actor Diabloist : DnD_BaseRangedMonster_NoRes {
	Obituary "%o was set ablaze by a Diabloist."
	Health 0x7FFFFFFF
	Radius 20 
	Height 56 
	Mass 500 
	Speed 15 
	PainChance 10
	BloodColor "08 08 08"
	MaxTargetRange 1024
	+NoTarget
	+MissileMore
	Species "AV"
	+ISMONSTER
	+DONTHURTSPECIES
	+QUICKTORETALIATE
	+NOFEAR
	SeeSound "Monster/diasit" 
	PainSound "Monster/diapai" 
	DeathSound "Monster/diadth" 
	ActiveSound "Monster/diaact" 
	Tag "Diabloist"
	States { 
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_DIABLOIST)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_RARE2)
		Goto SpawnSetup
	
		IdleState:
			DIAB AB 10 A_GiveInventory("DnD_SightChecker", 1) 
		Loop 
		SeeState: 
			DIAB AABBCCDDEEFF 2 Fast A_Chase 
		Goto See
		MissileState:
			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 
		PainState: 
			DIAB Q 5 Fast 
			DIAB Q 5 Fast A_Pain 
		Goto See 
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Medium", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState: 
			DIAB Q 7 
			DIAB R 7 A_Scream 
			TNT1 A 0 A_NoBlocking
			DIAB S 7
			DIAB TUVW 7 
			DIAB XY 5 
			DIAB Z -1 
		Stop
		
		RaiseState:
			DIAB YXWVUTSRQ 4
		Goto See
	} 
}

Actor DiabloExp1 : BaseExplosionDamage {
	DamageType "MagicalFire"
	Stamina 40
	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, 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, 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, 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, 32, 0)
		Stop
	}
}

Actor DFire {
	Obituary "%o got was set ablaze by a Diabloist."
	Radius 0
	Height 1
	Speed 0
	RenderStyle Add
	DamageType "MagicalFire"
	Stamina 40
	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))
	RenderStyle Add
	DamageType "MagicalFire"
	Stamina 40
	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 : FastProjectile {
	PROJECTILE
	Speed 200
	Height 8
	Radius 14
	Damage (24)
	DamageType "MagicalFire"
	Stamina 40
	MissileType "DMissileTrail"
	+ThruGhost
	+DONTBLAST
	+INVISIBLE
	
	const float r = 32.0;
	
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			CFFX A 4 Bright
			TNT1 A 0 A_PlaySound("ClericFlameExplode")
			CFFX A 1 A_ChangeFlag("INVISIBLE", 0)
		Goto DeathNoExp
		Death:
			TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 A 0 A_PlaySound("ClericFlameExplode")
			CFFX A 1 Bright A_ChangeFlag("INVISIBLE", 0)
			TNT1 A 0 A_SpawnItemEx("DMissileCircle", r * cos(0), r * sin(0), 16, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("DMissileCircle", r * cos(45), r * sin(45), 16, 0, 0, 0, 45, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("DMissileCircle", r * cos(90), r * sin(90), 16, 0, 0, 0, 90, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("DMissileCircle", r * cos(135), r * sin(135), 16, 0, 0, 0, 135, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("DMissileCircle", r * cos(180), r * sin(180), 16, 0, 0, 0, 180, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("DMissileCircle", r * cos(225), r * sin(225), 16, 0, 0, 0, 225, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("DMissileCircle", r * cos(270), r * sin(270), 16, 0, 0, 0, 270, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("DMissileCircle", r * cos(315), r * sin(315), 16, 0, 0, 0, 315, SXF_TRANSFERPOINTERS)
		DeathNoExp:
			TNT1 A 0 A_Stop
			CFFX ABC 3 Bright
			CFFX D 4 Bright
			CFFX E 3 Bright
			CFFX F 4 Bright
			CFFX G 3 Bright
			CFFX H 4 Bright
			CFFX I 3 Bright
			CFFX J 4 Bright
			CFFX K 3 Bright
			CFFX L 4 Bright
			CFFX M 3 Bright
		Stop
	}
}

Actor DiabloExp6 : BaseExplosionDamage {
	DamageType "MagicalFire"
	Stamina 40
	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, 64, 0)
		Stop
	}
}

Actor DTracer {
	Radius 5
	Height 5
	Speed 15
	ReactionTime 96
	Damage (4 * random(1, 8))
	DamageType "MagicalFire"
	Stamina 40
	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)
		Loop
		Death:
			TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 AAA 0 A_SpawnItemEx("ExplosionFX2", 0, 0, 0, frandom(-1, 1), frandom(-1, 1), frandom(-1, 1))
			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 { 
	RenderStyle Add
	+CLIENTSIDEONLY
	+NOINTERACTION
	Alpha 0.67
	States {
		Spawn:
			FDFX ABCDEF 4 Bright
		Stop 
	}
}

Actor DiabloExp7 : BaseExplosionDamage {
	DamageType "MagicalFire"
	Stamina 40
	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, 8, 0)
		Stop
	}
}

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

Actor DMissileTrail {
	RenderStyle Add
	DamageType "MagicalFire"
	Stamina 40
	+ThruGhost
	+DONTBLAST
	+NOBLOCKMAP
	+NOGRAVITY
	States {
		Spawn:
			CFFX N 5 Bright
			CFFX O 4 Bright
			CFFX P 3 Bright
		Stop
	}
}

Actor DMissileCircle {
	Radius 6
	Height 20
	Damage (12)
	Projectile
	-ACTIVATEIMPACT
	+THRUACTORS
	-ACTIVATEPCROSS
	RenderStyle "Add"
	DeathSound "ClericFlameCircle"
	DamageType "MagicalFire"
	Stamina 40
	+ThruGhost
	+DONTBLAST
	
	const float v = 6.4;
	
	States {
		Spawn:
			CFCF A 4 Bright NoDelay A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF B 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF B 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF C 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF C 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF D 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF E 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF E 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF F 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF F 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF G 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF H 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF H 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF I 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF I 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF J 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF K 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF K 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF L 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF L 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF L 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF M 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF M 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF M 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF N 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + 6.0)
			CFCF N 1 Bright A_ChangeVelocity(cos(angle) * v, sin(angle) * v, 0, CVF_REPLACE)
			CFCF O 3 Bright
			CFCF P 2 Bright
		Stop
		Death:
			CFCF QR 3 Bright
			CFCF S 3 Bright A_Explode(20, 20, 0)
			CFCF TUVWXYZ 3 Bright
		Stop
	}
}

ACTOR DeathVile : DnD_ArchVileBase {
	Health 0x7FFFFFFF
	Speed 16
	PainChance 8
	MaxTargetRange 1280
	SeeSound "wile/sight"
	PainSound "wile/pain"
	DeathSound "wile/death"
	ActiveSound "wile/active"
	Tag "Death Vile"
	Species "AV"
	Radius 20
	Height 56
	Mass 500
	Stamina 32
	+ISMONSTER
	+QUICKTORETALIATE
	+NOTARGET
	+DONTHURTSPECIES
	MeleeSound "vile/stop"
	Obituary "%o met a terrible fate at the hands of a Death Vile."
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_DEATHVILE)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_UNCOMMON)
		Goto SpawnSetup
		
		IdleState:
			WILE AB 10 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			WILE AABBCCDDEEFF 2 Fast A_VileChase
		Goto See
		MissileState:
			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, 70, 70, 1.0, "FireBlue")
			WILE P 14 Fast Bright
		Goto See
		HealState:
			WILE "[" 8 Fast Bright
			WILY A 8 Fast Bright
			WILE "]" 8 Fast Bright
		Goto See
		PainState:
			WILE Q 5 Fast   
			WILE Q 5 Fast A_Pain
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Medium", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			WILE Q 7
			WILE R 7 A_Scream
			WILE S 7 A_NoBlocking
			WILE TUVWXY 7
			WILE Z -1
		Stop
	}
}

Actor DarkFlame : ArchVileFire {
	Stamina 32
	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_BaseHybridMonster_NoRes {
	Health 0x7FFFFFFF
	Radius 20
	Height 56
	Mass 1000
	Speed 10
	PainChance 16
	Scale 1.15
	DamageType "Physical"
	Stamina 1
	Obituary "%o was hexed by a Hierophant."
	HitObituary "%o got shredded by a Hierophant."
	+ISMONSTER
	+NoTarget
	+MissileMore
	Species "AV"
	+DontHurtSpecies
	+QUICKTORETALIATE
	SeeSound "monster/Hiesit"
	PainSound "monster/Hiepai"
	DeathSound "monster/Hiedth"
	MeleeSound "baron/melee"
	ActiveSound "monster/Hieact"
	Tag "Hierophant"
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_HIEROPHANT)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_RARE1)
		Goto SpawnSetup

		IdleState:
			HIER AC 10 A_GiveInventory("DnD_SightChecker", 1) 
		Loop 
		SeeState:
			HIER AABBAACCDDCC 4 Fast A_Chase
			HIER A 0 A_Jump(64, "Blur") 
		Goto See
		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 
		MissileState:
			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
		MeleeState:
			HIER EF 8 Fast A_FaceTarget 
			HIER G 3 Fast A_CustomMeleeAttack(10 * random(1, 8), "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), "baron/melee")
			HIER A 3 Fast 
		Goto See
		PainState: 
			HIER P 2 Fast 
			HIER P 2 Fast A_Pain 
		Goto See 
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Medium", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState: 
			HIER Q 6  
			HIER R 6 A_Scream 
			TNT1 A 0 A_NoBlocking
			HIER S 6
			HIER TUVW 6
			HIER X -1 A_SetFloorClip 
		Stop
		RaiseState:
			HIER WVUTSRQ 4
		Goto See
	} 
}

Actor HieroExp : BaseExplosionDamage {
	DamageType "MagicalFire"
	Stamina 40
	Obituary "%o was hexed by a Hierophant."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(32, 32, 0)
		Stop
	}
}

Actor HieroBall1 : BaronBall {
	Speed 20
	Damage (6 * random(1, 8))
	DamageType "MagicalFire"
	Stamina 40
	+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 {
	Speed 16
	Radius 10
	Height 6
	Renderstyle Add
	Damage (4 * random(1, 8))
	DamageType "MagicalFire"
	Stamina 40
	PROJECTILE
	+ThruGhost
	+SEEKERMISSILE
	+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_Weave(2, 2, 2.0, 1.0)
			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 "MagicalVoid"
	Stamina 8
	Obituary "%o was hexed by a Hierophant."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(32, 96, 0)
		Stop
	}
}

Actor CurseBall : BaronBall {
	Speed 24
	Damage (random(1, 8))
	Height 16
	Radius 10
	DamageType "MagicalVoid"
	Stamina 8
	+ThruGhost
	+HITTRACER
	+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
		XDeath:
			TNT1 A 0 A_GiveInventory("DnD_Curse_Hierophant", 1, AAPTR_TRACER)
		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_SpawnItemEx("ExplosionFX3", 0, 0, 0, frandom(-1, 1), frandom(-1, 1), frandom(-1, 1))
			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 : DnD_BaseHybridMonster_NoRes { 
	Health 0x7FFFFFFF
	Radius 20
	Height 56
	Mass 700 
	Speed 10
	PainChance 20 
	Species "AV"
	+ISMONSTER
	+NOTARGET 
	+MISSILEMORE
	+NOBLOOD
	+DONTRIP
	+QUICKTORETALIATE
	+NOFEAR
	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" 
	Tag "Deathknight"
	States { 
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_DEATHKNIGHT)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_VERYRARE)
		Goto SpawnSetup

		IdleState:
			DKNT AB 10 A_GiveInventory("DnD_SightChecker", 1) 
		Loop 
		SeeState:
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "SeeState2")
			DKNT A 0 A_Jump(32, "SeeState2")
			DKNT A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
			DKNT AABBCCDD 3 Fast A_Chase
		Goto See
		SeeState2:
			TNT1 A 0 A_GiveInventory("DnD_Boolean", 1)
			DKNT P 0 ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_ISBLOCKING, -1, -1, -1)
			DKNT PPQQRRSS 3 Fast A_Chase
		goto see
		MeleeState:
			TNT1 A 0 A_TakeInventory("DnD_Boolean", 1)
			DKNT E 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
			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, "monster/dknhit") 
		Goto See
		MissileState:
			TNT1 A 0 A_TakeInventory("DnD_Boolean", 1)
			DKNT A 0 A_Jump(88, "Balls")
			DKNT A 0 A_Jump(88, "Bolts")
			DKNT E 0 Bright ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
			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 ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_ISBLOCKING, -1, -1, -1)
			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 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
		Goto See
		Balls:
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_ISBLOCKING, -1, -1, -1)
			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 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
		Goto See
		PainState:
			DKNT H 2 Fast 
			DKNT H 2 Fast A_Pain
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_ISBLOCKING, -1, -1, -1)
			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 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
			DKNT P 0 A_Jump (24, "ShieldWalk")
		Goto See
		ShieldWalk:
			DKNT H 1 A_GiveInventory("DnD_Boolean", 1)
		Goto See
		Decide:
			DKNT T 0 A_Jump(128, "Missile")
		Goto Melee
		XDeathState:
		DeathState:
			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)
			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
		RaiseState:
			DKNT NMLKJI 4
		Goto See
	} 
}

Actor DKExp1 : BaseExplosionDamage {
	DamageType "MagicalFire"
	Stamina 40
	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, 64, 0)
		Stop
	}
}

ACTOR DKDart {
	Radius 3
	Height 12
	Speed 24
	Damage (random(15,25))
	DamageType "MagicalFire"
	Stamina 40
	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_SpawnItemEx("ExplosionFX8", 0, 0, 0, frandom(-1, 1), frandom(-1, 1), frandom(-1, 1))
			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))
	PROJECTILE
	RENDERSTYLE ADD
	ALPHA 0.80
	DamageType "Magical"
	Stamina 8
	+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_SpawnItemEx("ExplosionFX8", 0, 0, 0, frandom(-1, 1), frandom(-1, 1), frandom(-1, 1))
			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))
	DamageType "Magical"
	Stamina 8
	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
	+MOVEWITHSECTOR
	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
	+MOVEWITHSECTOR
	States {
		Spawn:
			SHLD ABCDEFGHI 3
		goto death 
		Death:
			SHLD H -1
		Stop
	}
}

Actor DKExp2 : BaseExplosionDamage {
	DamageType "Magical"
	Stamina 8
	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, 8, 0)
		Stop
	}
}

ACTOR DKFire {
	Radius 2
	Height 6
	Speed 3
	Damage 0
	DamageType "Magical"
	Stamina 8
	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 : DnD_BaseHybridMonster_NoRes {
	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." 
	+ISMONSTER
	MeleeRange 128
	Tag "Horshacker"
	Health 0x7FFFFFFF
	Radius 20
	Height 56
	Mass 700 
	Speed 10
	PainChance 20 
	Species "AV"
	+NOTARGET 
	+MISSILEMORE
	+NOBLOOD
	+DONTRIP
	+QUICKTORETALIATE
	+NOFEAR
	MeleeSound "monster/dknhit" 
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_HORSHACKER)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_VERYRARE)
		Goto SpawnSetup

		IdleState:
			DKNT AB 10 A_GiveInventory("DnD_SightChecker", 1) 
		Loop 
		SeeState:
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "SeeState2")
			DKNT A 0 A_Jump(32, "SeeState2")
			DKNT A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
			DKNT AABBCCDD 3 Fast A_Chase
		Goto See
		SeeState2:
			TNT1 A 0 A_GiveInventory("DnD_Boolean", 1)
			DKNT P 0 ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_ISBLOCKING, -1, -1, -1)
			DKNT PPQQRRSS 3 Fast A_Chase
		goto see
		MeleeState:
			DKNT E 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
			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
		MissileState:
			DKNT A 0 A_Jump(96, "Balls")
			DKNT A 0 A_Jump(96, "Bolts")
			DKNT E 0 Bright ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
			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 ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_ISBLOCKING, -1, -1, -1)
			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 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
		Goto See
		Balls:
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_ISBLOCKING, -1, -1, -1)
			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 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
		Goto See	   
		PainState:
			DKNT H 2  Fast
			DKNT H 2 Fast A_Pain
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_ISBLOCKING, -1, -1, -1)
			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 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
			DKNT P 0 A_Jump (24, "ShieldWalk")
		Goto See
		ShieldWalk:
			DKNT H 1 A_GiveInventory("DnD_Boolean", 1)
		Goto See
		XDeathState:
		DeathState:  
			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)
			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 
		RaiseState:
			DKNT NMLKJI 4
		Goto See
	}
}

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

Actor HorshackerMelee {
	PROJECTILE
	Radius 4
	Height 8
	Damage (5 * random(5, 8))
	DamageType "Physical"
	Stamina 1
	+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 "MagicalBlue"
	Stamina 8
	Obituary "%o was horshacked by the Horshacker."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(8, 32, 0)
		Stop
	}
}

ACTOR SwordSlash {
	Radius 8
	Height 16
	Speed 16
	Damage (random(4, 6))
	DamageType "MagicalBlue"
	Stamina 8
	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 "MagicalBlue"
	Stamina 8
	Obituary "%o was horshacked by the Horshacker."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(32, 72, 0)
		Stop
	}
}

ACTOR DKDart2 : DKDart {
	Radius 6
	Height 12
	Speed 20
	Damage (16)
	DamageType "MagicalBlue"
	Stamina 8
	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_SpawnItemEx("ExplosionFX5", 0, 0, 0, frandom(-1, 1), frandom(-1, 1), frandom(-1, 1))
			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))
	DamageType "MagicalBlue"
	Stamina 8
	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))
	DamageType "MagicalBlue"
	Stamina 8
	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_SpawnItemEx("ExplosionFX5", 0, 0, 0, frandom(-1, 1), frandom(-1, 1), frandom(-1, 1))
			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
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			CTFX A 1 A_FadeOut(0.1)
		Loop
		Death:
			TNT1 A 1
		Stop
	}
}

Actor DKBolt2Homing : DKBolt2 {
	Damage (5*random(2,3))
	DamageType "MagicalBlue"
	Stamina 8
	+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 "Physical"
	Stamina 1
}

actor UndeadPriest : DnD_BaseHybridMonster_NoRes {
	obituary "%o was bagged by an undead priest."
	Health 0x7FFFFFFF
	gibhealth 20
	radius 20
	height 56
	mass 400
	speed 8
	painchance 48
	XScale 1.1
	YScale 1.2
	DropItem "SawedoffPickup" 64
	dropitem "Shell" 128
	decal BulletChip
	SeeSound "UndeadPriest/See"
	ActiveSound "UndeadPriest/Act"
	painsound "UndeadPriest/Pain"
	deathsound "UndeadPriest/Die"
	Species "AV"
	+ISMONSTER
	Tag "Undead Priest"
	+QUICKTORETALIATE
	+NODROPOFF
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_UNDEADPRIEST)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_EPIC)
		Goto SpawnSetup

		IdleState:
			TNT1 A 0 A_TakeInventory("NoDrop", 1)
			UNDP A 10 A_GiveInventory("DnD_SightChecker", 1)
		loop
		SeeState:
			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
		Goto See
		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
		MeleeState:
		MissileState:
			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 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			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
		PainState:
			UNDP G 5 Fast A_GiveInventory("NoDrop", 1)
			UNDP G 5 Fast A_Pain
			UNDP G 0 A_Jump(96, "ReleaseSouls")
		goto See
		ReleaseSouls:
			UNDP G 0 A_PlaySound("UndeadPriest/SoulRelease")
			UNDP GG 0 A_SpawnItemEx("UndeadSpirit", 0, 0, 40, 0, 0, 0, 0, SXF_SETMASTER)
		Goto See
		DeathState:
			TNT1 A 0 A_GiveInventory("NoDrop", 1)
			UNDP H 6 A_KillChildren("Perish")
			UNDP I 6 A_Scream
			UNDP JK 6
			UNDP L 6 A_NoBlocking
			UNDP M 6
			UNDP N -1
		Stop
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Medium", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			TNT1 A 0 A_GiveInventory("NoDrop", 1)
			TNT1 A 0 A_KillChildren("Perish")
			UNDP O 5 A_Scream
			UNDP P 5
			UNDP R 5 A_NoBlocking
			UNDP STUVW 5
			UNDP X -1
		Stop
		RaiseState:
			UNDP WVUTSRPO 5
		Goto See
	}
}

Actor UndeadSpirit : DnD_ArchVilePassiveBase {
	Health 0x7FFFFFFF
	Radius 16 
	Height 32 
	Mass 50 
	Speed 10 
	RENDERSTYLE ADD
	ALPHA 0.67 
	PAINCHANCE 0
	Species "AV"
	+THRUSPECIES
	+DONTGIB
	+NOTARGET
	+NOGRAVITY 
	+FLOAT
	+DONTFALL
	+DONTHURTSPECIES
	+THRUGHOST
	+NOBLOOD
	+NOPAIN
	+GHOST
	-SOLID
	-FLOORCLIP
	-USEKILLSCRIPTS
	SeeSound "UndeadSoul/See"
	DeathSound "UndeadSoul/Die"
	States { 
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_UNDEADPRIESTGHOST)
		Goto SpawnSetup

		IdleState:
			BDSP AB 10 A_GiveInventory("DnD_SightChecker", 1) 
		Loop 
		SeeState: 
			BDSP A 3 A_Wander
			BDSP A 3 A_VileChase 
			BDSP B 3 A_Wander
			BDSP B 3 A_VileChase 
		Loop 
		HealState:
			TNT1 A 0 A_GiveInventory("Mo_Died", 1)
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Kill Forced CS", 0)
			BDSP A 3
		Goto Death
		XDeathState:
		DeathState: 
			BDSP E 4
			BDSP F 5 A_Scream
			TNT1 A 0 A_NoBlocking
			BDSP GHIJ 4  
		Stop 
	} 
}

Actor UndeadSpiritDamager : BaseExplosionDamage {
	DamageType "MagicalGreen"
	Stamina 520
	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, 4), 40, 0)
		Stop
	}
}

Actor UndeadSpiritAttack {
	PROJECTILE
	Health 5
	Species "AV"
	Height 24
	Radius 16
	Damage 0
	Speed 20
	RENDERSTYLE ADD
	ALPHA 0.66
	ReactionTime 7
	BounceType "Hexen"
	DamageFactor "MagicalGreen", 0
	RadiusDamageFactor 0
	+CANBOUNCEWATER
	+DONTSPLASH
	+THRUACTORS
	+SEEKERMISSILE
	+SHOOTABLE
	+DONTBLAST
	+NOBLOOD
	-NOBLOCKMAP
	SeeSound "UndeadSoul/See"
	DeathSound "UndeadSoul/Die"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Setup Shootable") // if random bugs regarding shootable objects start occuring, look here!
		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_BaseHybridMonster_NoRes {
	Health 0x7FFFFFFF
	Radius 20
	Height 56
	Mass 1000
	Speed 12
	PainChance 56
	Scale 1.15
	Obituary "%o was incinerated by a Guru."
	HitObituary "%o got shredded by a Guru."
	+ISMONSTER
	+NoTarget
	+MissileMore
	+MISSILEEVENMORE
	Species "AV"
	+DontHurtSpecies
	+QUICKTORETALIATE
	SeeSound "Guru/See"
	PainSound "Guru/Pain"
	DeathSound "Guru/Die"
	MeleeSound "baron/melee"
	ActiveSound "Guru/Act"
	Tag "Guru"
	var int user_count;
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_GURU)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_RARE1)
		Goto SpawnSetup

		IdleState:
			GURU AB 10 A_GiveInventory("DnD_SightChecker", 1) 
		Loop 
		SeeState:
			GURU AABBCCDD 3 Fast A_Chase
		Goto See
		Rush:
			GURU ABCD 2 Fast A_Chase("", "", CHF_NOPLAYACTIVE)
			TNT1 A 0 A_Jump(192, "FlameWall")
			GURU ABCD 2 Fast A_Chase
		Goto See 
		MissileState:
			TNT1 A 0 A_Jump(256, "Wide", "SingleBurst", "Rush")
		Wide:
			GURU E 11 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 8 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:
			GURU A 0 A_JumpIfTargetINLOS("ContinueWall", 0)
		Goto See
		ContinueWall:
			GURU E 8 Fast A_FaceTarget
			GURU F 3 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
		MeleeState:
			GURU E 5 Fast A_FaceTarget 
			GURU F 4 Fast Bright A_CustomMeleeAttack(5 * random(1, 8), "baron/melee")
			GURU G 4 Fast
		Goto See
		PainState: 
			GURU D 2 Fast 
			GURU D 2 Fast A_Pain 
		Goto See 
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState: 
			GURU H 6  
			GURU I 6 A_Scream 
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low_Delayed", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			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
		RaiseState:
			GURU LKJIH 5
		Goto See
	} 
}

Actor GuruExplosion1 : BaseExplosionDamage {
	DamageType "MagicalFire"
	Stamina 40
	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, 36, 0)
		Stop
	}
}

Actor GuruExplosion2 : GuruExplosion1 {
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(4, 28, 0)
		Stop
	}
}

Actor GuruPacifier {
	Projectile
	Height 10
	Radius 5
	Speed 24
	Renderstyle Add
	Damage (3 * random(1, 8))
	DamageType "MagicalFire"
	Stamina 40
	SeeSound "Guru/Fire"
	DeathSound "imp/shotx"
	+HITTRACER
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			GURP AB 3 Bright A_SpawnItem("GuruExplosion1")
		Loop
		XDeath:
			TNT1 A 0 A_GiveInventory("DnD_Curse_Guru", 1, AAPTR_TRACER)
		Death:
			GURP CDEF 4 Bright
		Stop
	}
}

Actor GuruSmallProjectile : GuruPacifier {
	Speed 36
	Radius 4
	Height 8
	Scale 0.75
	Damage (2 * random(1, 8))
	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 "MagicalFire"
	Stamina 40
	Damage (random(1,8))
	Speed 32
	+FLOORHUGGER
}

Actor DarkZealot : DnD_BaseHybridMonster_NoRes {
	Health 0x7FFFFFFF
	+MISSILEMORE
	+DONTHURTSPECIES
	+QUICKTORETALIATE
	+NOBLOOD
	Species "AV"
	SeeSound "DarkServant/See"
	PainSound "DarkServant/Pain"
	ActiveSound "DarkServant/Act"
	DeathSound "Weapons/SReaverLoop"
	Obituary "%o was tormented to death by a Dark Zealot."
	+ISMONSTER
	PainChance 48
	Radius 20
	Height 56
	ProjectilePassHeight 64
	Speed 10
	XScale 1.1
	YScale 1.25
	Mass 1500
	var int user_teleport;
	Tag "Dark Zealot"
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_DARKZEALOT)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_EPIC)
		Goto SpawnSetup

		IdleState:
			TNT1 A 0 A_SetShootable
			TNT1 A 0 A_SetTranslucent(1.0, 0)
		IdleLoop:
			RSON AB 10 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			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("")
		Goto See
		MeleeState:
		MissileState:
			TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(961, 5), "Decide")
			TNT1 A 0 A_Jump(64, "HealAround", "Shield")
			TNT1 A 0 A_Jump(192, "Attack1", "Attack2", "Teleport")
		Goto Attack1
		Decide:
			TNT1 A 0 A_Jump(192, "HealAround", "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
		HealAround:
			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, "HealAround")
			TNT1 A 0 A_Jump(96, "Attack1")
			TNT1 A 0 A_Jump(192, "Attack2", "Teleport")
		Goto Attack1
		Redecide2:
			TNT1 A 0 A_Jump(96, "Attack2")
		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 ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_REFLECTIVE, -1, -1, -1)
			TNT1 A 0 ACS_ExecuteAlways(960, 0, 0)
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Monster State Syncer", 0, 0)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Push All Players", 84, 24)
			RSON G 8 Fast Bright A_SetReflectiveInvulnerable
		Goto See
		PainState:
			TNT1 A 0 A_JumpIfInventory("DarkZealotCooldown", 1, "Paincont")
			TNT1 A 0 A_Jump(96, "Teleport")
		PainCont:
			RSON E 3 Fast
			RSON E 3 Fast A_Pain
		Goto See
		Teleport:
			TNT1 A 0 A_JumpIfInventory("DarkZealotCooldown", 1, "Redecide2")
			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_GiveInventory("DarkZealotCooldown", 1)
			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
		XDeathState:
		DeathState:
			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
		RaiseState:
			RSON MLKJIH 5
		Goto See
	}
}

Actor DarkZealotCooldown : PowerProtection {
	damagefactor "normal", 1.0
	powerup.duration 120 // 15 + 105 (35 x 3)
}

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 "LightningRed"
	Stamina 256
	Obituary "%o was tormented to death by a Dark Zealot."
}

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

Actor HadesBoltZealot : HadesBolt {
	Speed 15
	Damagetype "LightningRed"
	Stamina 256
	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 "LightningRed"
	Stamina 256
	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_NamedExecuteAlways("DnD Monster Health Regen Script", 0, DND_MHR_DURATION | (1 << 16), ACS_NamedExecuteWithResult("DnD Monster Heal Potency", 150), 5)
		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 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_REFLECTIVE, -1, -1, -1)
		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))
	+PIERCEARMOR
	+NODAMAGETHRUST
	DamageType "LightningRed"
	Stamina 256
	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))
	DamageType "LightningRed"
	Stamina 256
	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_BaseRangedMonster_NoRes {
	obituary "%o was tormented by a Flesh Wizard."
	Health 0x7FFFFFFF
	radius 20
	height 56
	mass 256
	speed 16
	painchance 64
	SEESOUND "FleshWizard/See"
	painsound "FleshWizard/pain"
	deathsound "FleshWizard/die"
	Tag "Flesh Wizard"
	Species "AV"
	Stamina 520
	Scale 0.75
	+ISMONSTER
	+QUICKTORETALIATE
	+NOINFIGHTING
	+NODAMAGETHRUST
	+DONTHARMSPECIES
	+DONTMORPH
	states {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_FLESHWIZARD)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_EPIC)
		Goto SpawnSetup

		IdleState:
			LMWZ E 10 A_GiveInventory("DnD_SightChecker", 1)
		loop
		SeeState:
			LMWZ EEE 4 Fast A_Chase
			LMWZ E 0 A_Jump(12, "Teleport")
		Goto See
		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
		MissileState:
			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
		PainState:
			TNT1 A 0 A_GiveInventory("StopLeash", 1)
			LMWZ I 3 Fast A_ChangeFlag("QUICKTORETALIATE", 1)
			LMWZ I 5 Fast A_Pain
			LMWZ I 0 A_Jump(128, "Teleport")
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Medium", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			LMWZ J 6 A_Scream
			//TNT1 A 0 Thing_ChangeTID(0, 0)
			TNT1 A 0 A_SpawnItemEx("FleshWizardDeathFX", 0, 0, 48, 0, 0, 2)
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Medium_Delayed", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			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
		RaiseState:
			LMWZ ONMLKJ 5
		Goto See
	}
}

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 "MagicalRed"
	Stamina 8
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(10, 96, 0)
		Stop
	}
}

Actor FleshWizardCorpseDamage : BaseExplosionDamage {
	DamageType "MagicalSnare"
	Stamina 8
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 A_Explode(48, 192)
		Stop
	}
}

Actor FleshWizardMissile {
	PROJECTILE
	Height 12
	Radius 6
	Speed 16
	Damage (5 * random(2, 3))
	DamageType "MagicalRed"
	Stamina 520
	Translation "0:255=%[0.00,0.00,0.00]:[1.39,0.03,0.00]"
	SeeSound "redballbsee"
	DeathSound "redballbdeth"
	Scale 0.75
	+HITTRACER
	+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(4, 8)
			ANFB A 2 Bright A_SpawnItem("FleshWizardMissileTrail")
			TNT1 A 0 A_SeekerMissile(4, 8)
			ANFB B 2 Bright A_SpawnItem("FleshWizardMissileTrail")
			TNT1 A 0 A_SeekerMissile(4, 8)
			ANFB C 2 Bright A_SpawnItem("FleshWizardMissileTrail")
			TNT1 A 0 A_SeekerMissile(4, 8)
		Loop
		XDeath:
			TNT1 A 0 A_GiveInventory("FleshWizardSlow1", 1, AAPTR_TRACER)
		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
	}
}