ACTOR Cardinal : DnD_BaseRangedBoss { 
	Health 0x7FFFFFFF
	Speed 7
	Radius 40
	Height 110
	PainChance 50
	Mass 2048
	Meleedamage 10 
	SeeSound "cardinal/see"
	PainSound "cardinal/pain"
	ActiveSound "demon/active"
	DeathSound "cardinal/death"
	Missiletype "Cardinal_Rocket"
	MissileHeight 72
	bloodcolor green
	Species "Cyber"
	Tag "Dark Cardinal"
	+ISMONSTER
	+QUICKTORETALIATE
	+DONTHURTSPECIES   
	+NORADIUSDMG
	+BOSS
	-FLOORCLIP
	Obituary "%o was blessed by the dark cardinal."  
	States { 
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_CARDINAL)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_UNCOMMON)
		Goto SpawnSetup

		IdleState:
			CARD AB 4 Bright A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			CARD A 0 A_ChangeFlag("NOPAIN", 0)
			CARD AABBAABBAABB 2 Fast Bright A_Chase 
		Goto See
		MissileState:
			CARD A 0 A_jump(128, "Missile2", "Missile3")
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("Cardinal_Rocket", 72, -30, 0)
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("Cardinal_Rocket", 72, -30, 0)
		Goto See
		Missile2:
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("CardinalPlasma", 72, -30, 0)
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("CardinalPlasma", 72, -30, 0)
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("CardinalPlasma", 72, -30, 0)
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("CardinalPlasma", 72, -30, 0)
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("CardinalPlasma", 72, -30, 0)
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("CardinalPlasma", 72, -30, 0)
		Goto See
		Missile3:
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("DeathBall", 72, -30, 0)
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("DeathBall", 72, -30, 0)
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("DeathBall", 72, -30, 0)
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("DeathBall", 72, -30, 0)
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("DeathBall", 72, -30, 0)
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("DeathBall", 72, -30, 0)
		Goto See
		Missile4:
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("Cardinal_Rocket", 72, -30, 0)
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("Cardinal_Rocket", 72, -30, 0)
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("DeathBall", 72, -30, 0)
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("DeathBall", 72, -30, 0)
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("DeathBall", 72, -30, 0)
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("DeathBall", 72, -30, 0)
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("DeathBall", 72, -30, 0)
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("DeathBall", 72, -30, 0)
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("Cardinal_Rocket", 72, -30, 0)
			CARD C 4 Fast Bright A_FaceTarget
			CARD D 5 Fast Bright A_CustomMissile("Cardinal_Rocket", 72, -30, 0)
		Goto See
		Retaliate:
			CARD A 0 A_ChangeFlag("NOPAIN", 1)
			CARD A 0 A_PlaySound("cardinal/see", CHAN_AUTO)
			CARD A 0 A_SetTranslucent(0.75, 1)
			CARD AA 1 Bright A_Chase("", "", CHF_NOPLAYACTIVE)
			CARD A 0 A_SpawnItemEx("CardinalImage", 0, 0, 0, 0, 0, 0, 0)
			CARD AA 1 Bright A_Chase("", "", CHF_NOPLAYACTIVE)
			CARD A 0 A_SpawnItemEx("CardinalImage", 0, 0, 0, 0, 0, 0, 0)
			CARD BB 1 Bright A_Chase("", "", CHF_NOPLAYACTIVE)
			CARD A 0 A_SpawnItemEx("CardinalImage", 0, 0, 0, 0, 0, 0, 0)
			CARD BB 1 Bright A_Chase("", "", CHF_NOPLAYACTIVE)
			CARD A 0 A_SpawnItemEx("CardinalImage", 0, 0, 0, 0, 0, 0, 0)
			CARD AA 1 Bright A_Chase("", "", CHF_NOPLAYACTIVE)
			CARD A 0 A_SpawnItemEx("CardinalImage", 0, 0, 0, 0, 0, 0, 0)
			CARD AA 1 Bright A_Chase("", "", CHF_NOPLAYACTIVE)
			CARD A 0 A_SpawnItemEx("CardinalImage", 0, 0, 0, 0, 0, 0, 0)
			CARD BB 1 Bright A_Chase("", "", CHF_NOPLAYACTIVE)
			CARD A 0 A_SpawnItemEx("CardinalImage", 0, 0, 0, 0, 0, 0, 0)
			CARD BB 1 Bright A_Chase("", "", CHF_NOPLAYACTIVE)
			CARD A 0 A_SpawnItemEx("CardinalImage", 0, 0, 0, 0, 0, 0, 0)
			CARD AA 1 Bright A_Chase("", "", CHF_NOPLAYACTIVE)
			CARD A 0 A_SpawnItemEx("CardinalImage", 0, 0, 0, 0, 0, 0, 0)
			CARD AA 1 Bright A_Chase("", "", CHF_NOPLAYACTIVE)
			CARD A 0 A_SpawnItemEx("CardinalImage", 0, 0, 0, 0, 0, 0, 0)
			CARD BB 1 Bright A_Chase("", "", CHF_NOPLAYACTIVE)
			CARD A 0 A_SpawnItemEx("CardinalImage", 0, 0, 0, 0, 0, 0, 0)
			CARD BB 1 Bright A_Chase("", "", CHF_NOPLAYACTIVE)
			CARD A 0 A_SpawnItemEx("CardinalImage", 0, 0, 0, 0, 0, 0, 0)
			CARD AA 1 Bright A_Chase("", "", CHF_NOPLAYACTIVE)
			CARD A 0 A_SpawnItemEx("CardinalImage", 0, 0, 0, 0, 0, 0, 0)
			CARD AA 1 Bright A_Chase("", "", CHF_NOPLAYACTIVE)
			CARD A 0 A_SpawnItemEx("CardinalImage", 0, 0, 0, 0, 0, 0, 0)
			CARD BB 1 Bright A_Chase("", "", CHF_NOPLAYACTIVE)
			CARD A 0 A_SpawnItemEx("CardinalImage", 0, 0, 0, 0, 0, 0, 0)
			CARD BB 1 Bright A_Chase("", "", CHF_NOPLAYACTIVE)
			CARD A 0 A_SpawnItemEx("CardinalImage", 0, 0, 0, 0, 0, 0, 0)
			CARD AA 1 Bright A_Chase("", "", CHF_NOPLAYACTIVE)
			CARD A 0 A_SpawnItemEx("CardinalImage", 0, 0, 0, 0, 0, 0, 0)
			CARD AA 1 Bright A_Chase("", "", CHF_NOPLAYACTIVE)
			CARD A 0 A_SpawnItemEx("CardinalImage", 0, 0, 0, 0, 0, 0, 0)
			CARD BB 1 Bright A_Chase("", "", CHF_NOPLAYACTIVE)
			CARD A 0 A_SpawnItemEx("CardinalImage", 0, 0, 0, 0, 0, 0, 0)
			CARD BB 1 Bright A_Chase("", "", CHF_NOPLAYACTIVE)
			CARD A 0 A_SetTranslucent(1.0, 0)
		Goto Missile4
		PainState: 
			CARD M 6 Fast Bright
			CARD A 0 A_Pain
			CARD A 0 A_SpawnDebris("MetalScrap")
			CARD A 0 A_Jump(192, "Retaliate")
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			CARD E 8 Bright
			CARD F 8 Bright A_Scream
			TNT1 A 0 A_NoBlocking
			TNT1 AAA 0 A_SpawnItemEx("GreenParticleSpawner", 0, 0, 72, 0, 0, 0, 0, 128)
			CARD GGGG 2 Bright A_SpawnItemEx("ExplosionFXGreen", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			TNT1 AAA 0 A_SpawnItemEx("GreenParticleSpawner", 0, 0, 72, 0, 0, 0, 0, 128)
			CARD HHHH 2 Bright A_SpawnItemEx("ExplosionFXGreen", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			TNT1 AAA 0 A_SpawnItemEx("GreenParticleSpawner", 0, 0, 72, 0, 0, 0, 0, 128)
			TNT1 AAA 0 A_SpawnItemEx("GreenParticleSpawner", 0, 0, 72, 0, 0, 0, 0, 128)
			CARD IIII 2 Bright A_SpawnItemEx("ExplosionFXGreen", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			CARD JJJJ 2 Bright A_SpawnItemEx("ExplosionFXGreen", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			TNT1 AAA 0 A_SpawnItemEx("GreenParticleSpawner", 0, 0, 72, 0, 0, 0, 0, 128)
			CARD KKKK 2 Bright A_SpawnItemEx("ExplosionFXGreen", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			TNT1 AAA 0 A_SpawnItemEx("GreenParticleSpawner", 0, 0, 72, 0, 0, 0, 0, 128)
			CARD LLLL 2 Bright A_SpawnItemEx("ExplosionFXGreen", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			TNT1 A -1 A_KillMaster
		Stop
   } 
}

Actor CardinalImage {
	Height 2
	Radius 2
	Alpha 0.75
	+CLIENTSIDEONLY
	States {
		Spawn:
			CARD A 1 A_FadeOut(0.05)
		Loop
	}
}

Actor CardinalExp1 : BaseExplosionDamage {
	DamageType "ExplosiveGreen"
	Stamina 4
	Obituary "%o was blessed by the dark cardinal."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(128, 128, 0)
		Stop
	}
}

ACTOR Cardinal_Rocket {
	Radius 11
	Height 8
	Speed 28
	Damage (20 * random(1, 8))
	DamageType "ExplosiveGreen"
	Stamina 4
	Projectile
	+DONTBLAST
	+RANDOMIZE
	+DEHEXPLOSION
	+ROCKETTRAIL
	SeeSound "weapons/rocklf"
	DeathSound "weapons/rocklx"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			CROC AB 4 Bright
		Loop
		Death:
			TNT1 AAA 0 A_SpawnItemEx("GreenParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 A 0 A_SpawnItemEx ("BFGFlare", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			TNT1 AAAAA 0 A_CustomMissile("RocketSmoke", 0, 0, random(0, 360), 2, random(0, 180))
			TNT1 AAAAAAAA 0 A_CustomMissile("RocketSmoke", 0, 0, random(0, 360), 2, random(0, 360))
			CROC C 8 Bright A_SpawnItem("CardinalExp1")
			CROC D 6 Bright
			CROC E 4 Bright
		Stop
	}
}
//====================
Actor CardinalExp2 : BaseExplosionDamage {
	DamageType "ExplosiveGreen"
	Stamina 4
	Obituary "%o was blessed by the dark cardinal."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(24, 84, 0)
		Stop
	}
}

ACTOR FireT {
	+NOBLOCKMAP
	+NOTELEPORT
	+NOGRAVITY
	+DONTBLAST
	RenderStyle Add
	DamageType "MagicalGreen"
	Stamina 8
    Alpha 0.9
	States {
		Spawn:
			FIRE ABCDEFGH 6 Bright A_SpawnItem("CardinalExp2")
		Stop
	}
}
//====================
actor DeathBall : BaronBall2 {
	Damage (8 * random(1, 8))
	DamageType "MagicalGreen"
	Stamina 8
	+SEEKERMISSILE 
	scale .7
	Speed 32
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			BAL7 A 4 BRIGHT A_SeekerMissile(8, 8)
			BAL7 A 0 A_SpawnItem("BallTail", 0, 0)
			BAL7 B 4 BRIGHT A_SeekerMissile(8, 8)
			BAL7 A 0 A_SpawnItem("BallTail", 0, 0)
		Loop
	}
}
//====================
ACTOR BallTail {
	Radius 1
	Height 1
	Speed 0
	Damage 0
	Mass 100
	translation "168 : 191 = 112 : 127"
	RenderStyle Translucent
	Alpha 0.9
	PROJECTILE
	+CLIENTSIDEONLY
	scale .6
	States {
		Spawn:
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 Thing_ChangeTid(0,390)
			BAL7 AB 2 A_fadeout(0.05)
		loop
	}
}
//====================
ACTOR CardinalPlasma {
	Radius 11
	Height 8
	Speed 24
	Damage (10 * random(1, 8))
	DamageType "MagicalGreen"
	Stamina 8
	Projectile
	+FLOATBOB
	+DONTBLAST
	SeeSound "imp/attack"
	DeathSound ""
	scale 1.25
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			CRTA J 1 Bright A_SpawnItem("plasmaTail", 0, 0)
		Loop
		Death:
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 Thing_ChangeTid(0,390)
			CRTA J 2 A_fadeout(0.05)
		Stop
	}
}
//====================
ACTOR plasmaTail {
	+FLOATBOB
	scale .66
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 Thing_ChangeTid(0,390)
			CRTA IHGFEDCBABCDEFGHIJ 2 BRIGHT A_fadeout(0.05)
		loop
	}
}

ACTOR TerminatorX : DnD_BaseRangedBoss { 
	Health 0x7FFFFFFF
	Radius 40
	Height 110
	Mass 2048 
	Speed 12 
	PainChance 8
	scale 1.4
	Obituary "%o was liquidated by a Terminator."
	+ISMONSTER
	+MISSILEMORE
	+BOSS
	Species "Cyber"
	+DONTHURTSPECIES
	+NORADIUSDMG
	+DONTRIP
	Missiletype Grenadeblast
	Damagefactor "Redblast", 0.0
	SeeSound "monster/termsit" 
	PainSound "monster/termpin" 
	DeathSound "monster/termdth"
	ActiveSound "Terminator/termact"
	Tag "Terminator"
	States { 
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_TERMINATOR)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_UNCOMMON)
		Goto SpawnSetup

		IdleState:
			TERM AB 10 A_GiveInventory("DnD_SightChecker", 1) 
		Loop 
		SeeState:
			TERM A 1 A_Playsound("Terminator/terstepA")
			TERM A 3 Fast A_Chase
			TERM A 4 Fast A_Chase
			TERM B 4 Fast A_Chase
			TERM B 4 Fast A_Chase
			TERM C 1 A_Playsound("Terminator/terstepA")
			TERM C 3 Fast A_Chase 
			TERM C 4 Fast A_Chase
			TERM D 4 Fast A_Chase
			TERM D 4 Fast A_Chase
		Goto See 
		PainState:
			TERM L 3 Fast 	
			TNT1 A 0 A_SpawnDebris("MetalScrap")
			TERM L 3 Fast A_Pain
		Goto See
		MissileState:
			TERM E 0 A_Jump(160, "Bullets", "RedStar") 
		Blaster:
			TERM EE 4 Fast A_FaceTarget
			TERM F 8 Fast Bright A_CustomMissile("TerminatorBlaster", 56, 20,0,0)
			TERM F 0 A_jump(144, "Refire")
		Goto See
		Refire:
			TERM E 8 Fast A_Spidrefire
		Goto Blaster
		Bullets:
			TERM G 2 Fast A_Facetarget
			TNT1 A 0 A_SpawnItemEx ("shotguncasing", -8, 44, 58, -4, 0, frandom(3.0, 5.0), random(-80, -90))
			TNT1 AA 0 A_CustomMissile("TerminatorBullet", 60, -18, frandom(-8.0, 8.0), 0, frandom(-4.0, 4.0))
			TERM H 1 Bright A_CustomMissile("TerminatorBullet", 60, -18, frandom(-15.0, 15.0), 0, frandom(-8.0, 8.0))
			TERM H 1 Bright A_Playsound("Terminator/tershotB")
			TERM G 2 Fast A_Facetarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			TNT1 A 0 A_SpawnItemEx ("shotguncasing", -8, 44, 58, -4, 0, frandom(3.0, 5.0), random(-80, -90))
			TNT1 AA 0 A_CustomMissile("TerminatorBullet", 60, -18, frandom(-8.0, 8.0), 0, frandom(-4.0, 4.0))
			TERM I 1 Bright A_CustomMissile("TerminatorBullet", 60, -18, frandom(-15.0, 15.0), 0, frandom(-8.0, 8.0))
			TERM I 1 Bright A_Playsound("Terminator/tershotB")
			TERM G 0 A_jump(24, "RedStar")
			TERM G 1 A_Spidrefire
		Goto Bullets
		RedStar:
			TERM J 0 A_JumpIfCloser(256, "RedGrenade")
		RedStarGo:
			TERM JJ 4 Fast A_Facetarget
			TERM K 8 Bright A_CustomMissile("Redstar", 42, -15, 0, 0)
		Goto See
		RedGrenade:
			TNT1 A 0 A_Jump(48, "RedStarGo")
			TERM JJ 4 Fast A_Facetarget
			TERM K 8 Fast Bright A_CustomMissile("Redgrenade", 46, -15, 0, 0)
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			TERM M 6 A_Scream
			TNT1 A 0 A_Fall
			TERM N 4 A_NoBlocking
			TERM OPQ 4 Bright
			TERM R 0 Bright A_FaceTarget
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			TERM R 0 Bright A_SpawnItemEx("TerminatorHead", 15, 0, 90, 10, 0, 0, -170, 128)
			TERM R 0 Bright A_SpawnItemEx("TerminatorShoulder", 60, 0, 75, 8, 0, 0, -70, 128)
			TERM R 4 Bright A_SpawnItemEx("TerminatorArm", 60, 0, 0, 3, 0, 0, -90, 128)
			TERM SSTTUUVV 2 Bright A_SpawnItemEx("ExplosionFX", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			TERM WW 2 A_SpawnItemEx("ExplosionFX", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			TERM XXXYYY 2 A_SpawnItemEx("ExplosionFX", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			TERM Z 1 A_Playsound("Terminator/terstepA")
			TERM Z 5 
			TERM [ -1 A_KillMaster
		Stop
   } 
}

Actor TerminatorExp1 : BaseExplosionDamage {
	DamageType "ExplosiveFire"
	Stamina 36
	Obituary "%o was liquidated by a Terminator."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(50, 72, 0)
		Stop
	}
}

ACTOR TerminatorBlaster {
	Radius 8
	Height 12
	Speed 28
	Damage (15 * random(4, 8))
	DamageType "ExplosiveFire"
	Stamina 36
	PROJECTILE
	RENDERSTYLE ADD
	alpha 0.85
	+DONTBLAST
	+THRUGHOST
	SeeSound "monster/brufir"
	DeathSound "weapons/hellex"
	DONTHURTSHOOTER
	Decal RevenantScorch
	States {
		Spawn: 
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			0LST A 1 Bright 
		loop
		Death:
			TNT1 A 0 A_SpawnItemEx("OrangeParticleSpawner", 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))
			0LST B 6 Bright A_SpawnItem("TerminatorExp1")
			0LST CDEFGHIJKL 3 Bright 
		stop
	}
}

actor Redstar {
    Radius 10
    Height 20
    Speed 16
    Damage (10 * random(6, 8))
	DamageType "EnergyRed"
	Stamina 16
    Scale 0.6
    +SEEKERMISSILE
	+DONTBLAST
    PROJECTILE
    RENDERSTYLE ADD
    ALPHA 0.8
    SeeSound "Terminator/tershotA"
    DeathSound "imp/shotx"
    Decal CacoScorch
    States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			TPR9 ABCD 3 Bright A_SeekerMissile (10,15)
		Loop
		Death:
			TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
			TPR9 EFGHIJKLMNO 3 Bright
		Stop
    }
}

actor Redgrenade {
    Radius 6
    Height 12
    Speed 24
    Damage (5 * random(1, 8))
	DamageType "EnergyRed"
	Stamina 16
    PROJECTILE
    +DoomBounce
    -NoGravity
	+DONTBLAST
    RENDERSTYLE ADD
    ALPHA 0.8
    DeathSound "imp/shotx"
    States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TGND A 1 Bright Thrustthingz(0, 24, 0, 1)
			TGND A 1 Bright A_Playsound("Terminator/tershotA")
			TGND BBBBCCCCAAAA 1 Bright A_SpawnItemEx("grenadetrail2",0,0,0,0,0,0,0,128)
			TGND A 0 A_Jumpifcloser(48, 1)
		Goto Spawn+3
		Death:
			TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
			STAR E 3 Bright A_SpawnItem("TerminatorExp1")
			TNT1 A 0 A_custommissile("grenadeblast",0,0,0,CMF_TRACKOWNER | CMF_AIMDIRECTION,0)
			TNT1 A 0 A_custommissile("grenadeblast",0,0,20,CMF_TRACKOWNER | CMF_AIMDIRECTION,0)
			TNT1 A 0 A_custommissile("grenadeblast",0,0,40,CMF_TRACKOWNER | CMF_AIMDIRECTION,0)
			TNT1 A 0 A_custommissile("grenadeblast",0,0,60,CMF_TRACKOWNER | CMF_AIMDIRECTION,0)
			TNT1 A 0 A_custommissile("grenadeblast",0,0,80,CMF_TRACKOWNER | CMF_AIMDIRECTION,0)
			TNT1 A 0 A_custommissile("grenadeblast",0,0,100,CMF_TRACKOWNER | CMF_AIMDIRECTION,0)
			TNT1 A 0 A_custommissile("grenadeblast",0,0,120,CMF_TRACKOWNER | CMF_AIMDIRECTION,0)
			TNT1 A 0 A_custommissile("grenadeblast",0,0,140,CMF_TRACKOWNER | CMF_AIMDIRECTION,0)
			TNT1 A 0 A_custommissile("grenadeblast",0,0,160,CMF_TRACKOWNER | CMF_AIMDIRECTION,0)
			TNT1 A 0 A_custommissile("grenadeblast",0,0,180,CMF_TRACKOWNER | CMF_AIMDIRECTION,0)
			TNT1 A 0 A_custommissile("grenadeblast",0,0,200,CMF_TRACKOWNER | CMF_AIMDIRECTION,0)
			TNT1 A 0 A_custommissile("grenadeblast",0,0,220,CMF_TRACKOWNER | CMF_AIMDIRECTION,0)
			TNT1 A 0 A_custommissile("grenadeblast",0,0,240,CMF_TRACKOWNER | CMF_AIMDIRECTION,0)
			TNT1 A 0 A_custommissile("grenadeblast",0,0,260,CMF_TRACKOWNER | CMF_AIMDIRECTION,0)
			TNT1 A 0 A_custommissile("grenadeblast",0,0,280,CMF_TRACKOWNER | CMF_AIMDIRECTION,0)
			TNT1 A 0 A_custommissile("grenadeblast",0,0,300,CMF_TRACKOWNER | CMF_AIMDIRECTION,0)
			TNT1 A 0 A_custommissile("grenadeblast",0,0,320,CMF_TRACKOWNER | CMF_AIMDIRECTION,0)
			TNT1 A 0 A_custommissile("grenadeblast",0,0,340,CMF_TRACKOWNER | CMF_AIMDIRECTION,0)
			STAR FGHIJKLMNO 3 Bright
		Stop
    }
}

ACTOR Grenadetrail2 {
	Renderstyle ADD
	Alpha 0.6
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {   
		Spawn:
			TGTR ABCDEFGHI 4 Bright 
	    Stop
	}
}

actor Grenadeblast {
    Radius 6
    Height 12
    Speed 5
    Damage (random(1, 2))
	DamageType "EnergyRed"
	Stamina 16
    PROJECTILE
    RENDERSTYLE ADD
    +Ripper
	+DONTBLAST
    ALPHA 0.8
    SeeSound "imp/attack"
    DeathSound "imp/shotx"
    States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TGBL ABCDEFGHIJK 2 Bright
        stop
    }
}

Actor TerminatorBullet : UndeadInitiateBullet {
	DamageType "Physical"
	Stamina 1
	Damage (15)
	States {
		Death:
			TPUF A 2 Bright
			TPUF A 0 A_Jump(128,10)
			TPUF BCDEFGH 2 Bright
	    Stop
			TPUF IJKLMNO 2 Bright 
		Stop
		XDeath:
			TNT1 A 1
		Stop
	}
}

ACTOR TerminatorArm {
	Radius 12
	Height 15
	Speed 3
	Mass 1000
	scale 1.4
	+DOOMBOUNCE
	+CLIENTSIDEONLY
	+MOVEWITHSECTOR
	-SOLID
	States {
		Spawn:
			 TARM A 5
			 TARM B 5 A_Fall 
			 TARM CDE 5
			 TARM F -1
         Stop
	}
}

actor TerminatorHead {
    Radius 6
    Height 8
    Speed 10
    Mass 1000
    +DOOMBOUNCE
    +DROPOFF
    +Missile
	+CLIENTSIDEONLY
	+MOVEWITHSECTOR
	-SOLID
    scale 1.4
    
    States {
		Spawn:
			THAD DEFGHABC 2
        loop
		Death:
			THAD I -1
        loop
    }
}

actor TerminatorShoulder {
    Radius 8
    Height 8
    Speed 8
    Mass 1000
    +DOOMBOUNCE
    +DROPOFF
    +Missile
	+CLIENTSIDEONLY
	+MOVEWITHSECTOR
	-SOLID
    scale 1.4
    
    States {
		Spawn:
			TSHO ABCDEFGH 2
		loop
		Death:
			TSHO I -1
		loop
    }
}

Actor Thamuz : DnD_BaseRangedBoss {
	Health 0x7FFFFFFF
	Speed 16
	PainChance 35
	Mass 2048
	Height 110
	Radius 40
	Scale 1.1
	Bloodcolor "00 AA 00"
	+ISMONSTER
	+Boss
	+NoRadiusDMG
	Species "Cyber"
	+DONTHURTSPECIES  
	SeeSound "Thamuz/Idlesight"
	PainSound "Thamuz/Pain"
	DeathSound "Thamuz/death"
	ActiveSound "Thamuz/Idlesight"
	Obituary "%o fell before Thamuz."
	Translation "1:2=247:247", "16:47=120:127", "48:72=90:111", "73:79=5:8", "128:140=101:111", "141:143=5:7", "144:151=5:7", "160:167=112:127", "169:191=119:127", "208:223=114:123", "224:231=112:113", "232:235=124:127", "236:239=247:247"
	Tag "Thamuz"
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_THAMUZ)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_UNCOMMON)
		Goto SpawnSetup
		
		IdleState:
			CYBR A 10 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			TNT1 A 0 A_ChangeFlag("NOBLOOD", 0)
			CYBR A 3 Fast A_Chase
			TNT1 A 0 A_SpawnItemEx("DarkCyberGhostA",0,0,0,0,0,0,0,128)
			CYBR A 3 Fast A_Chase
			TNT1 A 0 A_SpawnItemEx("DarkCyberGhostA",0,0,0,0,0,0,0,128)
			CYBR B 3 Fast A_Chase
			TNT1 A 0 A_SpawnItemEx("DarkCyberGhostB",0,0,0,0,0,0,0,128)
			CYBR B 3 Fast A_Chase
			TNT1 A 0 A_SpawnItemEx("DarkCyberGhostB",0,0,0,0,0,0,0,128)
			CYBR C 3 Fast A_Chase
			TNT1 A 0 A_SpawnItemEx("DarkCyberGhostC",0,0,0,0,0,0,0,128)
			CYBR C 3 Fast A_Chase
			TNT1 A 0 A_SpawnItemEx("DarkCyberGhostC",0,0,0,0,0,0,0,128)
			CYBR D 3 Fast A_Chase
			TNT1 A 0 A_SpawnItemEx("DarkCyberGhostD",0,0,0,0,0,0,0,128)
			CYBR D 3 Fast A_Chase
			CYBR D 0 A_SpawnItemEx("DarkCyberGhostD",0,0,0,0,0,0,0,128)
			CYBR D 0 A_PlaySoundEx("Hectebus/Step", "SoundSlot7", 0)
		Goto See
		MissileState:
			TNT1 A 0 A_Jump(160,"Var1", "Var2", "Var3")
			CYBR AE 5 Fast A_FaceTarget
			CYBR E 5 Fast A_FaceTarget
			CYBR F 10 Fast A_CustomMissile("DCBMiss1",56,-25,0)
			CYBR E 15 Fast A_FaceTarget
			CYBR E 0 A_Jump(128, "Refire")
		Goto See
		Refire:
			CYBR A 0 A_MonsterRefire(64, "See")
		Goto MissileState
		Var1:
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_ISBLOCKING, -1, -1, -1)
			TNT1 A 0 A_ChangeFlag("NOBLOOD", 1)
			//TNT1 A 0 ACS_NamedExecuteAlways("DnD Draw Pentagram", 0, DND_PENTAGRAMFX_THAMUZ)
			CYBR G 20 Fast A_PlaySound("Apocalypse/cast")
			TNT1 A 0 A_CustomMissile("DCBMiss3",50,0,20)
			TNT1 A 0 A_CustomMissile("DCBMiss3",50,0,40)
			TNT1 A 0 A_CustomMissile("DCBMiss3",50,0,60)
			TNT1 A 0 A_CustomMissile("DCBMiss3",50,0,80)
			TNT1 A 0 A_CustomMissile("DCBMiss3",50,0,100)
			TNT1 A 0 A_CustomMissile("DCBMiss3",50,0,120)
			TNT1 A 0 A_CustomMissile("DCBMiss3",50,0,140)
			TNT1 A 0 A_CustomMissile("DCBMiss3",50,0,160)
			TNT1 A 0 A_CustomMissile("DCBMiss3",50,0,-20)
			TNT1 A 0 A_CustomMissile("DCBMiss3",50,0,-40)
			TNT1 A 0 A_CustomMissile("DCBMiss3",50,0,-60)
			TNT1 A 0 A_CustomMissile("DCBMiss3",50,0,-80)
			TNT1 A 0 A_CustomMissile("DCBMiss3",50,0,-100)
			TNT1 A 0 A_CustomMissile("DCBMiss3",50,0,-120)
			TNT1 A 0 A_CustomMissile("DCBMiss3",50,0,-140)
			TNT1 A 0 A_CustomMissile("DCBMiss3",50,0,-160)
			TNT1 A 0 A_CustomMissile("DCBMiss3",50,0,180)
			CYBR G 10 Fast A_CustomMissile("DCBMiss3",50,0,0)
			CYBR GGGGGGGG 10 Fast
			TNT1 A 0 A_ChangeFlag("NOBLOOD", 0)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
			CYBR G 10 Fast
		Goto See
		Var2:
			CYBR AE 3 Fast A_FaceTarget
			CYBR E 4 Fast A_FaceTarget
			CYBR F 4 Fast A_CustomMissile("DCBMiss2",56,-25,0)
			CYBR E 4 Fast A_FaceTarget
			CYBR F 4 Fast A_CustomMissile("DCBMiss2",56,-25,0)
			CYBR E 4 Fast A_FaceTarget
			CYBR F 4 Fast A_CustomMissile("DCBMiss2",56,-25,0)
			CYBR E 4 Fast A_FaceTarget
			CYBR F 4 Fast A_CustomMissile("DCBMiss2",56,-25,0)
			CYBR E 4 Fast A_FaceTarget
			CYBR F 4 Fast A_CustomMissile("DCBMiss2",56,-25,0)
			CYBR E 4 Fast A_FaceTarget
			CYBR F 4 Fast A_CustomMissile("DCBMiss2",56,-25,0)
			CYBR E 4 Fast A_FaceTarget
			CYBR F 4 Fast A_CustomMissile("DCBMiss2",56,-25,0)
			CYBR E 4 Fast A_FaceTarget
			CYBR F 4 Fast A_CustomMissile("DCBMiss2",56,-25,0)
			CYBR E 4 Fast A_FaceTarget
			CYBR F 4 Fast A_CustomMissile("DCBMiss2",56,-25,0)
			CYBR E 4 Fast A_FaceTarget
			CYBR F 4 Fast A_CustomMissile("DCBMiss2",56,-25,0)
		Goto See
		Var3:
			CYBR AE 3 Fast A_FaceTarget
			CYBR E 12 Fast A_FaceTarget
			CYBR E 4 Fast A_FaceTarget
			TNT1 A 0 A_CustomMissile("DCBMiss2",56,-25,-16)
			TNT1 A 0 A_CustomMissile("DCBMiss2",56,-25,-8)
			TNT1 A 0 A_CustomMissile("DCBMiss2",56,-25,8)
			TNT1 A 0 A_CustomMissile("DCBMiss2",56,-25,16)
			CYBR F 4 Fast A_CustomMissile("DCBMiss2",56,-25,0)
		Goto See
		PainState:
			TNT1 A 0 A_ChangeFlag("NOBLOOD", 0)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
			CYBR G 2 Fast
			CYBR G 2 Fast A_Pain
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			CYBR H 5
			CYBR I 5 A_Scream
			TNT1 A 0 A_SpawnItemEx("BDS",0,0,0,0,0,0,0,128)
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			TNT1 A 0 A_NoBlocking
			CYBR JJJKKKLLLMMMNNNOOO 2 A_SpawnItemEx("ExplosionFXGreen", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			CYBR P -1 A_KillMaster
		Stop
	}
}

Actor BDS {   
	Radius 1
	Height 1
	Speed 1
	SeeSound "Thamuz/death2"
	Projectile
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 1
		Stop
	}
}

Actor DarkCyberGhostA {   
	Radius 2
	Height 2
	Speed 0
	Scale 1.1
	RenderStyle Translucent
	+CLIENTSIDEONLY
	+NOINTERACTION
	Translation "1:2=247:247", "16:47=120:127", "48:72=90:111", "73:79=5:8", "128:140=101:111", "141:143=5:7", "144:151=5:7", "160:167=112:127", "169:191=119:127", "208:223=114:123", "224:231=112:113", "232:235=124:127", "236:239=247:247"
	Alpha 0.6
	States {
		Spawn:
			TNT1 A 3
			CYBR A 3 A_FadeOut(0.10)
		Goto Spawn+1
	}
}

Actor DarkCyberGhostB : DarkCyberGhostA {   
	States {
		Spawn:
			TNT1 A 3
			CYBR B 3 A_FadeOut(0.10)
		Goto Spawn+1
	}
}

Actor DarkCyberGhostC : DarkCyberGhostA {   
	States {
		Spawn:
			TNT1 A 3
			CYBR C 3 A_FadeOut(0.10)
		Goto Spawn+1
	}
}

Actor DarkCyberGhostD : DarkCyberGhostA {   
	States {
		Spawn:
			TNT1 A 3
			CYBR D 3 A_FadeOut(0.10)
		Goto Spawn+1
	}
}

Actor ThamuzExp1 : BaseExplosionDamage  {
	DamageType "ExplosiveGreen"
	Stamina 4
	Obituary "%o fell before Thamuz."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(140, 140, 0)
		Stop
	}
}

Actor DCBMiss1 {
	Radius 12
	Height 12
	Speed 16
	Damage (16 * random(4, 8))
	DamageType "MagicalPoison"
	Stamina 136
	Projectile
	+SeekerMissile
	+ExtremeDeath
	+DONTBLAST
	Renderstyle Add
	SeeSound "q2weapon/bfgball"
	DeathSound "q2weapon/bfgballexplo"
	Decal BFGLightning
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			CBTS A 1 Bright A_SeekerMissile(1,90)
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			CBTS A 1 Bright
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			TNT1 A 0 A_SpawnItemEx("DCBM1Trail",0,0,0,0,0,0,0,128)
			CBTS B 1 Bright A_SeekerMissile(1,90)
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			CBTS B 1 Bright
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			TNT1 A 0 A_SpawnItemEx("DCBM1Trail",0,0,0,0,0,0,0,128)
			CBTS C 1 Bright A_SeekerMissile(1,90)
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			CBTS C 1 Bright
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			TNT1 A 0 A_SpawnItemEx("DCBM1Trail",0,0,0,0,0,0,0,128)
			CBTS D 1 Bright A_SeekerMissile(1,90)
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			CBTS D 1 Bright
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			TNT1 A 0 A_SpawnItemEx("DCBM1Trail",0,0,0,0,0,0,0,128)
			CBTS E 1 Bright A_SeekerMissile(1,90)
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			CBTS E 1 Bright
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			TNT1 A 0 A_SpawnItemEx("DCBM1Trail",0,0,0,0,0,0,0,128)
			CBTS F 1 Bright A_SeekerMissile(1,90)
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			CBTS F 1 Bright
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			TNT1 A 0 A_SpawnItemEx("DCBM1Trail",0,0,0,0,0,0,0,128)
			CBTS G 1 Bright A_SeekerMissile(1,90)
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			CBTS G 1 Bright
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			TNT1 A 0 A_SpawnItemEx("DCBM1Trail",0,0,0,0,0,0,0,128)
			CBTS H 1 Bright A_SeekerMissile(1,90)
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			CBTS H 1 Bright
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			TNT1 A 0 A_SpawnItemEx("DCBM1Trail",0,0,0,0,0,0,0,128)
			CBTS I 1 Bright A_SeekerMissile(1,90)
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			CBTS I 1 Bright
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			TNT1 A 0 A_SpawnItemEx("DCBM1Trail",0,0,0,0,0,0,0,128)
			CBTS J 1 Bright A_SeekerMissile(1,90)
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			CBTS J 1 Bright
			TNT1 A 0 A_SpawnItemEx("GreenParticleSlowVanish",Random(-12,12),Random(-12,12),Random(-12,12),Random(-2,2),Random(-2,2),Random(-2,2),Random(-20,20),128)
			TNT1 A 0 A_SpawnItemEx("DCBM1Trail",0,0,0,0,0,0,0,128)
		Loop
		Death:
			TNT1 AA 0 A_SpawnItemEx("GreenParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 A 0 A_SpawnItemEx ("BFGFlare", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			TNT1 AAAAA 0 A_SpawnItemEx("ExplosionFX4", 0, 0, 0, frandom(-1, 1), frandom(-1, 1), frandom(-1, 1))
			TNT1 AAAAAAAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
			CBTS K 2 Bright A_SpawnItem("ThamuzExp1")
			CBTS LMNOPQRSTUVW 2 Bright
		Stop
	}
}

Actor DCBM1Trail {   
	Scale 0.8
	RenderStyle Add
	Alpha 0.6
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			TNT1 A 4
			CBTS LMNOPQRSTUVW 2 A_FadeOut
		Stop
	}
}

Actor DCBMiss2 {
	Radius 12
	Height 8
	Health 5
	Speed 28
	Damage (12 * random(3, 8)) 
	+DONTBLAST
	DamageType "MagicalPoison"
	Stamina 136
	RenderStyle Add
	Projectile
	SeeSound "q2weapon/rocketlauncherfire"
	DeathSound "q2weapon/rocketexplo"
	Decal RevenantScorch
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			THZ4 A 2 Bright 
		Loop
		Death:
			TNT1 A 0 A_SpawnItemEx("GreenParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
			FSFX DEFGHIJKLM 2 Bright
		Stop
	}
}

Actor DCBMiss3 {
	Radius 1
	Height 1
	Health 5
	Speed 8
	Damage 0
	DamageType "MagicalPoison"
	Stamina 136
	Scale 2
	RenderStyle Add
	+BloodLessImpact
	+Ripper
	+DontSplash
	+DONTBLAST
	Projectile
	SeeSound "h2necromancer/magiccast"
	States {
		Spawn:
			TNT1 A 2 A_Gravity
		Loop
		Death:
			FSFX NOPQRSTNOPQRST 3
			TNT1 A 0 A_CustomMissile("DCBMiss3M",0,0,180)
		Stop
	}
}

Actor ThamuzExp2 : BaseExplosionDamage {
	DamageType "MagicalGreen"
	Stamina 8
	Obituary "%o fell before Thamuz."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(64, 64, 0)
		Stop
	}
}

Actor DCBMiss3M {
	Radius 10
	Height 10
	Speed 28
	Damage (15 * random(4, 8))
	DamageType "MagicalPoison"
	Stamina 136
	Scale 1.3
	+FloorHugger
	+DONTBLAST
	RenderStyle Add
	Projectile
	DeathSound "comet/explosion"
	Decal RevenantScorch
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			FSFX NOPQRSTNOPQRST 3 A_SpawnItemEx("DCBMiss3MG",0,0,0,0,0,0,0,128)
		Loop
		Death:
			TNT1 A 0 A_SpawnItemEx("GreenParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 AAA 0 A_SpawnItemEx("ExplosionFX4", 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))
			TNT1 A 0 A_SpawnItem("ThamuzExp2")
			FSFX UVW 3
		Stop
	}
}


Actor DCBMiss3MG {
	Radius 1
	Height 1
	Speed 0
	Scale 0.8
	+Noclip
	Projectile
	RenderStyle Add
	Alpha 0.6
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 4
			FSFX NOPQRST 3
		Stop
	}
}

actor Azazel : DnD_BaseHybridBoss {
    Health 0x7FFFFFFF
    Radius 40
    Height 100
	Scale 1.3
    Speed 12
    PainChance 20
    Mass 2048
	+ISMONSTER
    +MISSILEEVENMORE
	+DONTHURTSPECIES
    +MISSILEMORE
    +NORADIUSDMG
	+BOSS
	+BOSSDEATH
    MinMissileChance 20
    SeeSound "azazel/see"
    PainSound "azazel/pain"
    DeathSound "azazel/die"
    ActiveSound "azazel/act"
    MeleeSound "baron/melee"
    Obituary "%o was slaughtered by Azazel"
	Species "Cyber"
	Tag "Azazel"
    MeleeDamage 8
    States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_AZAZEL)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_VERYRARE)
		Goto SpawnSetup

		IdleState:
			AZEW A 5 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			AZEW AABB 3 Fast A_Chase
			TNT1 D 0 A_PlaySoundEx("Hectebus/Step", "SoundSlot7", 0)
			AZEW CCDD 3 Fast A_Chase
			AZEW D 0 A_PlaySoundEx("Hectebus/Step", "SoundSlot7", 0)
		Goto See
		MissileState:
		MeleeState:
			TNT1 A 0 A_Jump(64, "MDoubleSerie", "SpreadSerie")
			TNT1 A 0 A_Jump(128,"MRightHand")
		MLeftHand:
			TNT1 A 0 A_PlaySound("Goat/Attack")
			AZEA D 4 Fast A_FaceTarget
			AZEA E 4 Fast A_FaceTarget
			AZEA F 7 Fast A_CustomMissile("SatyrLordMissile1",38,-5,0)
		Goto see
		MRightHand:
			TNT1 A 0 A_PlaySound("Goat/Attack")
			AZEA A 4 Fast A_FaceTarget
			AZEA B 4 Fast A_FaceTarget
			AZEA C 7 Fast A_CustomMissile("SatyrLordMissile2",38,5,0)
		Goto see	
		MDoubleSerie:
			TNT1 A 0 A_PlaySoundEx("missile1charge","SoundSlot5")
			TNT1 A 0 A_FaceTarget
			AZEA D 4 Fast A_SpawnItemEx("SatyrLordMissileDual1Fake",10,-20,66,0,0,0,32)
			AZEA E 4 Fast A_SpawnItemEx("SatyrLordMissileDual1Fake",10,-9,52,0,0,0,32)
			AZEA F 6 Fast A_SpawnItemEx("SatyrLordMissileDual1Fake",10,4,34,0,0,0,32)
			TNT1 A 0 A_PlaySoundEx("missile2charge","SoundSlot6")
			TNT1 A 0 A_FaceTarget
			AZEA A 4 Fast A_SpawnItemEx("SatyrLordMissileDual2Fake",10,20,66,0,0,0,32)
			AZEA B 4 Fast A_SpawnItemEx("SatyrLordMissileDual2Fake",10,9,52,0,0,0,32)
			AZEA C 6 Fast A_SpawnItemEx("SatyrLordMissileDual2Fake",10,-4,34,0,0,0,32)
			TNT1 A 0 A_PlaySound("Goat/Attack")
			TNT1 A 0 A_FaceTarget
			AZEA D 4 Fast A_CustomMissile("SatyrLordMissileDual1Real",66,-20,0)
			AZEA E 4 Fast A_CustomMissile("SatyrLordMissileDual1Real",52,-9,0)
			AZEA F 6 Fast A_CustomMissile("SatyrLordMissileDual1Real",34,4,0)
			TNT1 A 0 A_PlaySound("Goat/Attack")
			TNT1 A 0 A_FaceTarget
			AZEA A 4 Fast A_CustomMissile("SatyrLordMissileDual2Real",66,20,0)
			AZEA B 4 Fast A_CustomMissile("SatyrLordMissileDual2Real",52,9,0)
			AZEA C 6 Fast A_CustomMissile("SatyrLordMissileDual2Real",34,-4,0)
		Goto see  
		SpreadSerie:
			TNT1 A 0 A_PlaySoundEx("missile1charge","SoundSlot5")
			TNT1 A 0 A_FaceTarget
			AZEA D 4 Fast A_SpawnItemEx("SatyrLordMissileDual1Fake",10,-32,52,0,0,0,32)
			AZEA E 4 Fast A_SpawnItemEx("SatyrLordMissileDual1Fake",10,-18,44,0,0,0,32)
			AZEA F 6 Fast A_SpawnItemEx("SatyrLordMissileDual1Fake",10,-4,36,0,0,0,32)
			TNT1 A 0 A_PlaySoundEx("missile1charge","SoundSlot6")
			TNT1 A 0 A_FaceTarget
			AZEA A 4 Fast A_SpawnItemEx("SatyrLordMissileDual1Fake",10,32,52,0,0,0,32)
			AZEA B 4 Fast A_SpawnItemEx("SatyrLordMissileDual1Fake",10,18,44,0,0,0,32)
			AZEA C 6 Fast A_SpawnItemEx("SatyrLordMissileDual1Fake",10,4,36,0,0,0,32)
			TNT1 A 0 A_PlaySound("Goat/Attack")
			TNT1 A 0 A_FaceTarget
			AZEA D 4 Fast A_CustomMissile("SatyrLordMissileDual1Real",52,-32,-4)
			AZEA E 4 Fast A_CustomMissile("SatyrLordMissileDual1Real",44,-18,-8)
			AZEA F 6 Fast A_CustomMissile("SatyrLordMissileDual1Real",36,-4,-16)
			TNT1 A 0 A_PlaySound("Goat/Attack")
			TNT1 A 0 A_FaceTarget
			AZEA A 4 Fast A_CustomMissile("SatyrLordMissileDual1Real",52,32,4)
			AZEA B 4 Fast A_CustomMissile("SatyrLordMissileDual1Real",44,18,8)
			AZEA C 6 Fast A_CustomMissile("SatyrLordMissileDual1Real",36,4,16)
		Goto See
		PainState:
			AZEP A 2 Fast
			AZEP A 2 Fast A_Pain
			TNT1 A 0 A_Jump(128, "NoCircle")
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Monster Health Regen Script", 0, DND_MHR_DURATION | (1 << 16), 150, 5)
			AZEP A 1 A_CustomMissile("SLGroundFire",0,0,0)
			AZEP A 1 A_CustomMissile("SLGroundFire",0,0,45)
			AZEP A 1 A_CustomMissile("SLGroundFire",0,0,-45)
			AZEP A 1 A_CustomMissile("SLGroundFire",0,0,90)
			AZEP A 1 A_CustomMissile("SLGroundFire",0,0,-90)
			AZEP A 1 A_CustomMissile("SLGroundFire",0,0,135)
			AZEP A 1 A_CustomMissile("SLGroundFire",0,0,-135)
			AZEP A 1 A_CustomMissile("SLGroundFire",0,0,180)
			AZEP A 4 Fast
		NoCircle:
			AZEW A 0
		Goto See
		XDeathState:
		DeathState:
			AZED AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("AzazelSmoke", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			TNT1 A 0 A_SpawnItem("AzazelBoom", 0, 40)
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			AZED B 5 A_Scream
			AZED C 5
			AZED D 4 A_Fall
			AZED E 4
			AZED FFFGGGGGGGGGGGGGG 1 A_SpawnItemEx("AzazelSmoke", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			AZED G 3 A_SpawnItemEx("AzazelSmoke", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			AZED G 6 A_SpawnItemEx("AzazelSmoke", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			AZED G 10 A_SpawnItemEx("AzazelSmoke", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			AZED G 25 A_SpawnItemEx("AzazelSmoke", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			AZED G 40 A_SpawnItemEx("AzazelSmoke", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			AZED GGG 60 A_SpawnItemEx("AzazelSmoke", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			AZED G -1 A_KillMaster
		Stop
    }
}

Actor AzazelSmoke : msxgen_smoke {
	Scale 0.85
}

Actor AzazelBoom : msxBarrelboom1 {
	Scale 1.35
	States {
		Spawn:
			TNT1 AAA 0 A_PlaySound("HFSpid/Die")
		Goto Super::Spawn
	}
}

//*************************************************
//*************************************************
Actor AzazelExp1 : BaseExplosionDamage {
	DamageType "Magical"
	Stamina 8
	Obituary "%o was slaughtered by Azazel"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(36, 48, 0)
		Stop
	}
}

actor SLGroundFire {
	Projectile
	Speed 16
	Damage (3 * random(1, 8))
	+RIPPER
	Scale 0.4
	+FLOORHUGGER
	+DONTBLAST
	SeeSound "groundfirestart"
	RenderStyle Add
	DamageType "Magical"
	Stamina 8
	Alpha 0.9
	Decal Scorch
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			FX03 B 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 C 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 D 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 E 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 F 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 G 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 H 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 I 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 J 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 K 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 L 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 M 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 N 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 O 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 P 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 Q 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 R 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 S 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 T 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 U 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 V 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 W 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 X 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
			FX03 Y 1 A_SpawnItemEx("SLGFXtraSpawner",0,0,0,0,0,0,0)
			TNT1 A 0 A_SpawnItem("AzazelExp1")
		Loop
		Death:
			TNT1 A 1
		Stop
	}
}

Actor SLGFXtraSpawner {
	+NOCLIP
	RenderStyle None
	States {
		Spawn:
			TNT1 A 0
			PLAY AAA 0 A_SpawnItemEx("SLGFXtra",0,0,0,random(3,-3),random(3,-3),random(3,-3),0)
		Stop
	}
}

Actor SLGFXtra {
	Height 1
	Scale 0.09
	RenderStyle Add
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			STAR P 3 Bright
			STAR P 0 A_Jump(128,1)
		Loop
			STAR P 3 Bright
			STAR P 1 Bright A_FadeOut
		Wait
		Death:
			TNT1 A 1
		Stop
	}
}

//*************************************************
//*************************************************
Actor SatyrLordMissile1 {
	Projectile
	Radius 8
	Height 16
	Speed 24
	Damage (19 * random(1, 8))
	DamageType "MagicalRed"
	Stamina 8
	Scale 0.65
	RenderStyle Add
	SeeSound "redballbsee"
	DeathSound "redballbdeth"
	Translation "192:207=172:191"
	Decal PlasmaScorchLower
	+DONTBLAST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			ANFB AAA 1 Bright A_CustomMissile("SLM1Trail",random(-5,5),random(8,-8),0)
			ANFB BBB 1 Bright A_CustomMissile("SLM1Trail",random(-5,5),random(8,-8),0)
			ANFB CCC 1 Bright A_CustomMissile("SLM1Trail",random(-5,5),random(8,-8),0)
		Loop
		Death:
			ANFB DEFG 3 Bright
		Stop
	}
}


Actor SLM1Trail {
	Projectile
	-NOGRAVITY
	Gravity 0.4
	+NOCLIP
	Damage 0
	RenderStyle Add
	Alpha 0.8
	Scale 0.5
	+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 SatyrLordMissile2 {
	Speed 18
	damage (15 * random(1, 8))
	scale 0.35
	radius 6
	height 12
	RENDERSTYLE ADD
	Alpha 0.75
	PROJECTILE
	DamageType "MagicalGray"
	Stamina 8
	+SEEKERMISSILE
	+DONTBLAST
	seesound "whiteballbsee"
	deathsound "whiteballbdeth"
	states {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			PSMM A 2 Bright A_SeekerMissile(25,10)
			TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
			PSMM A 2 Bright A_SeekerMissile(25,10)
			TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
			PSMM B 2 Bright A_SeekerMissile(25,10)
			TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
			PSMM B 2 Bright A_SeekerMissile(25,10)
			TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
			PSMM C 2 Bright A_SeekerMissile(25,10)
			TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
			PSMM C 2 Bright A_SeekerMissile(25,10)
			TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)

			PSMM D 2 Bright A_SeekerMissile(25,10)
			TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
			PSMM E 2 Bright A_SeekerMissile(25,10)
			TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
			PSMM F 2 Bright A_SeekerMissile(25,10)
			TNT1 A 0 A_CustomMissile("SLM2Trail",0,0,0)
		goto Spawn+12
		Death:
			PSMM GGHHIIJJKKLLMM 2 Bright A_FadeOut(0.05)
		stop
	}
}

Actor SLM2Trail {
	Projectile
	+NOCLIP
	Damage 0
	RenderStyle Add
	Alpha 0.45
	Scale 0.9
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 2
			PUF2 BDFHJLNPRTVXZ 1
			PUF3 B 1 A_FadeOut(0.2)
		Wait
	}
}

//*************************************************
//*************************************************
Actor SatyrLordMissileDual1Fake {
	Projectile
	Speed 0
	Scale 0.34
	RenderStyle Add
	SeeSound "waitingballsspawn"
	+CLIENTSIDEONLY
	States {
		Spawn:
			MSP4 ABCD 2
			MSP4 ABCD 2
			MSP4 ABCD 2
			MSP4 ABCD 2
			Stop
		Death:
			TNT1 A 1
			Stop
	}
}

Actor SatyrLordMissileDual1Real {
	Projectile
	Speed 32
	Scale 0.34
	RenderStyle Add
	Damage (12 * random(4, 8))
	DamageType "MagicalRed"
	Stamina 8
	Radius 6
	height 12
	SeeSound "redballssee"
	DeathSound "redballsdeth"
	Decal DoomImpScorch
	+DONTBLAST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			MSP4 A 1 A_CustomMissile("SLMD1RTrail",random(-5,5),random(8,-8),0)
			TNT1 AA 0 A_CustomMissile("SLMD1RTrail",random(-5,5),random(8,-8),0)
			MSP4 A 1 A_CustomMissile("SLMD1RTrail",random(-5,5),random(8,-8),0)
			TNT1 AA 0 A_CustomMissile("SLMD1RTrail",random(-5,5),random(8,-8),0)
			MSP4 B 1 A_CustomMissile("SLMD1RTrail",random(-5,5),random(8,-8),0)
			TNT1 AA 0 A_CustomMissile("SLMD1RTrail",random(-5,5),random(8,-8),0)
			MSP4 B 1 A_CustomMissile("SLMD1RTrail",random(-5,5),random(8,-8),0)
			TNT1 AA 0 A_CustomMissile("SLMD1RTrail",random(-5,5),random(8,-8),0)
			MSP4 C 1 A_CustomMissile("SLMD1RTrail",random(-5,5),random(8,-8),0)
			TNT1 AA 0 A_CustomMissile("SLMD1RTrail",random(-5,5),random(8,-8),0)
			MSP4 C 1 A_CustomMissile("SLMD1RTrail",random(-5,5),random(8,-8),0)
			TNT1 AA 0 A_CustomMissile("SLMD1RTrail",random(-5,5),random(8,-8),0)
			MSP4 D 1 A_CustomMissile("SLMD1RTrail",random(-5,5),random(8,-8),0)
			TNT1 AA 0 A_CustomMissile("SLMD1RTrail",random(-5,5),random(8,-8),0)
			MSP4 D 1 A_CustomMissile("SLMD1RTrail",random(-5,5),random(8,-8),0)
			TNT1 AA 0 A_CustomMissile("SLMD1RTrail",random(-5,5),random(8,-8),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))
			MSP1 GHIJKLMNO 2
		Stop
	}
}

Actor SLMD1RTrail {
	Projectile
	-NOGRAVITY
	Gravity 0.4
	+NOCLIP
	Damage 0
	RenderStyle Add
	Alpha 0.8
	Scale 0.3
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 1
			TNT1 A 0 ThrustThingZ(0,random(-3,5),0,1)
			SHTR ABCDDE 3 Bright
			SHTR F 1 Bright A_FadeOut(0.1)
		Wait
	}
}
//*************************************************

Actor SatyrLordMissileDual2Fake {
	Projectile
	Speed 0
	Scale 0.8
	RenderStyle Add
	Alpha 0.75
	SeeSound "waitingballsspawn"
	Translation "112:127=80:111"
	+CLIENTSIDEONLY
	States {
		Spawn:
			CSSF DEDE 2 Bright
			CSSF DEDE 2 Bright
			CSSF DEDE 2 Bright
			CSSF DEDE 2 Bright
		Stop
		Death:
			TNT1 A 1
		Stop
	}
}

Actor SatyrLordMissileDual2Real {
	Projectile
	Speed 24
	Radius 6
	Damage (16 * random(4, 8))
	DamageType "MagicalGray"
	Stamina 8
	Scale 0.8
	RenderStyle Add
	Alpha 0.75
	+DONTBLAST
	+SeekerMissile
	Translation "112:127=80:111"
	SeeSound "whiteballssee"
	DeathSound "whiteballsdeth"
	height 12
	Decal PlasmaScorchLower
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			CSSF D 1 Bright A_SeekerMissile(10,10)
			TNT1 AAA 0 A_CustomMissile("SLMD2RTrail",random(5,-5),random(5,-5),0)
			CSSF D 1 Bright A_SeekerMissile(10,10)
			TNT1 AAA 0 A_CustomMissile("SLMD2RTrail",random(5,-5),random(5,-5),0)
			CSSF E 1 Bright A_SeekerMissile(10,10)
			TNT1 AAA 0 A_CustomMissile("SLMD2RTrail",random(5,-5),random(5,-5),0)
			CSSF E 1 Bright A_SeekerMissile(10,10)
			TNT1 AAA 0 A_CustomMissile("SLMD2RTrail",random(5,-5),random(5,-5),0)
		Loop
		Death:
			TNT1 A 0 A_SpawnItemEx("WhiteParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 AAA 0 A_CustomMissile("ExplosionFX10", 0, 0, random(0,360), 2, random(0,360))
			TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
			CSSF GHI 4 Bright 
			CSSF I 1 Bright A_FadeOut
		Wait
	}
}

Actor SLMD2RTrail {
	Projectile
	Speed 0
	Damage 0
	+NOCLIP
	RenderStyle Add
	Alpha 0.5
	Scale 0.25
	+CLIENTSIDEONLY
	States {
		Spawn:
			PUF2 BCDEFGHIJKL 1 
			PUF2 L 1 A_FadeOut(0.2)
		Wait
	}
}

ACTOR HellsmithX : DnD_BaseHybridBoss { 
	Health 0x7FFFFFFF
	Radius 40
	Height 110
	Mass 5000 
	Speed 16 
	PainChance 16
	Obituary "%o was no match for the might of the Hellsmith."
	HitObituary "%o was crushed under the Hellsmith's hoof." 
	+ISMONSTER
	+NORADIUSDMG 
	+BOSS
	+NOTARGET
	+MISSILEEVENMORE
	+DONTHURTSPECIES
	+DONTRIP
	+NOFEAR
	Species "Cyber"
	MeleeRange 86
	SeeSound "monster/smitht"
	PainSound "monster/smithp" 
	DeathSound "monster/smithd" 
	ActiveSound "monster/smitha"
	MeleeSound "monster/hamhit"
	Tag "Hell Smith"
	States  {  
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_HELLSMITH)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_VERYRARE)
		Goto SpawnSetup
	
		IdleState:
			BSMT AB 10 A_GiveInventory("DnD_SightChecker", 1) 
		Loop 
		SeeState: 
			BSMT A 0 A_ChangeFlag("NOBLOOD", 0)
			BSMT A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", 0, DND_ISBLOCKING) 
			BSMT A 3 Fast A_Playsound ("monster/fihoof") 
			BSMT ABB 3 Fast A_Chase 
			BSMT C 3 Fast A_Playsound ("monster/fihoof") 
			BSMT CDD 3 Fast A_Chase
		Goto See
		MeleeState:
			BSMT E 6 Fast A_FaceTarget
			BSMT F 1 A_Playsound ("monster/hamswg")
			BSMT F 5 Fast A_FaceTarget
			BSMT G 10 Fast A_CustomMeleeAttack(20 * random(1, 8), "monster/hamhit", "")
			BSMT B 0 A_Jump (192, "Melee2")
		Goto See
		Melee2:
			BSMT J 6 Fast A_FaceTarget
			BSMT K 1 A_Playsound ("monster/hamswg")
			BSMT K 5 Fast A_FaceTarget
			BSMT L 10 Fast A_CustomMeleeAttack(20 * random(1, 8), "monster/hamhit", "")
		Goto See      
		RerollMissile:
			BSMT A 0 A_Jump(256, "Missile1", "Missile2", "Missile3")
		Goto Missile1
		MissileState:
			BSMT A 0 A_Jump(160, "Missile1", "Missile2", "Missile3")
		Charge:
			BSMT A 0 A_JumpIfCloser(420, "ContinueCharge")
		Goto RerollMissile
		ContinueCharge:
			BSMT O 1 A_UnsetFloorClip
			TNT1 A 0 A_Playsound ("weapons/suldth")
			TNT1 A 0 A_ChangeFlag("NOBLOOD", 1)
			BSMT O 2 Fast ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_ISBLOCKING, -1, -1, -1)
			TNT1 A 0 A_SpawnItem("HellSmithChargeExp", 0, 55)
			BSMT O 4 Fast A_SkullAttack
			BSMT O 0 A_SpawnItemEx("SmithGhost",0,0,0,0,0,0,0,128,0)
			TNT1 A 0 A_SpawnItem("HellSmithChargeExp", 0, 55)
			BSMT O 4 Fast A_SkullAttack
			BSMT O 0 A_SpawnItemEx("SmithGhost",0,0,0,0,0,0,0,128,0)
			TNT1 A 0 A_SpawnItem("HellSmithChargeExp", 0, 55)
			BSMT O 4 Fast A_SkullAttack
			BSMT O 0 A_SpawnItemEx("SmithGhost",0,0,0,0,0,0,0,128,0)
			TNT1 A 0 A_SpawnItem("HellSmithChargeExp", 0, 55)
			BSMT O 4 Fast A_SkullAttack
			BSMT O 0 A_SpawnItemEx("SmithGhost",0,0,0,0,0,0,0,128,0)
			TNT1 A 0 A_SpawnItem("HellSmithChargeExp", 0, 55)
			BSMT O 4 Fast A_SkullAttack
			BSMT O 0 A_SpawnItemEx("SmithGhost",0,0,0,0,0,0,0,128,0)
			TNT1 A 0 A_SpawnItem("HellSmithChargeExp", 0, 55)
			BSMT O 4 Fast A_SkullAttack
			BSMT O 0 A_SpawnItemEx("SmithGhost",0,0,0,0,0,0,0,128,0)
			TNT1 A 0 A_SpawnItem("HellSmithChargeExp", 0, 55)
			BSMT O 4 Fast A_SkullAttack
			BSMT O 0 A_SpawnItemEx("SmithGhost",0,0,0,0,0,0,0,128,0)
			TNT1 A 0 A_SpawnItem("HellSmithChargeExp", 0, 55)
			BSMT O 4 Fast A_SkullAttack
			BSMT O 0 A_SpawnItemEx("SmithGhost",0,0,0,0,0,0,0,128,0)
			BSMT O 0 A_Stop
			BSMT O 1 A_SetFloorClip
		Goto See
		Missile1:
			BSMT E 6 Fast A_FaceTarget
			BSMT H 6 Fast A_PlaySound ("monster/hamswg")
			BSMT N 0 A_PLaySound ("weapons/hellfi") 
			BSMT I 0 A_CustomMissile ("Hellshot2",52,0,0)
			BSMT I 0 A_CustomMissile ("Hellshot2",52,0,8)
			BSMT I 12 Fast A_CustomMissile ("Hellshot2",52,0,-8)
			BSMT I 0 A_Jump (128, "DoMissile2")
			BSMT B 6 Fast
			BSMT J 6 Fast A_FaceTarget
			BSMT M 6 A_PlaySound ("monster/hamswg")
			BSMT N 1 Fast A_PLaySound ("weapons/hellfi") 
			BSMT N 0 A_CustomMissile ("Hellshot2",52,0,0)
			BSMT N 0 A_CustomMissile ("Hellshot2",52,0,8)
			BSMT N 11 Fast A_CustomMissile ("Hellshot2",52,0,-8)
			BSMT N 0 A_Jump (128, "DoMissile2")
		Goto See
		DoMissile2:
			BSMT N 0
		Goto Missile2
		Missile2:
			BSMT E 6 Fast A_FaceTarget
			BSMT F 1 A_Playsound ("monster/hamswg")
			BSMT F 5 Fast A_FaceTarget
			BSMT G 0 A_CustomMissile("STracer",0,0,15,0)
			BSMT G 0 A_CustomMissile("STracer",0,0,30,0)
			BSMT G 0 A_CustomMissile("STracer",0,0,45,0)
			BSMT G 0 A_CustomMissile("STracer",0,0,60,0)
			BSMT G 0 A_CustomMissile("STracer",0,0,0,0)
			BSMT G 0 A_CustomMissile("STracer",0,0,-15,0)
			BSMT G 0 A_CustomMissile("STracer",0,0,-30,0)
			BSMT G 0 A_CustomMissile("STracer",0,0,-45,0)
			BSMT G 0 A_CustomMissile("STracer",0,0,-60,0)	   
			BSMT G 10 Fast A_Playsound("monster/hamflr")
			BSMT B 0 A_Jump (128, "DoMissile3")
		Goto See
		DoMissile3:
			BSMT N 0
		Goto Missile3
		Missile3:
			BSMT J 6 Fast A_FaceTarget
			BSMT K 1 A_Playsound ("monster/hamswg")
			BSMT K 5 Fast A_FaceTarget
			BSMT G 0 A_CustomMissile("STracer",0,0,45,0)
			BSMT G 0 A_CustomMissile("STracer",0,0,90,0)
			BSMT G 0 A_CustomMissile("STracer",0,0,135,0)
			BSMT G 0 A_CustomMissile("STracer",0,0,180,0)
			BSMT G 0 A_CustomMissile("STracer",0,0,225,0)
			BSMT G 0 A_CustomMissile("STracer",0,0,270,0)
			BSMT G 0 A_CustomMissile("STracer",0,0,315,0)
			BSMT G 0 A_CustomMissile("STracer",0,0,0,0)
			BSMT L 10 Fast A_Playsound("monster/hamflr")
		Goto See           
		PainState: 
			TNT1 A 0 A_ChangeFlag("NOBLOOD", 0)
			BSMT P 10 Fast A_Pain
			BSMT P 0 A_Jump (128, "PainPentagram")
		Goto See
		PainPentagram:
			BSMT E 0 ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_ISBLOCKING, -1, -1, -1)
			TNT1 A 0 A_ChangeFlag("NOBLOOD", 1)
			BSMT E 6 A_FaceTarget
			BSMT F 1 A_Playsound ("monster/hamswg")
			BSMT F 5 A_FaceTarget
			BSMT F 0 A_CustomMissile("PentaLine1",0,0,-72,2)
			BSMT F 0 A_CustomMissile("PentaLine1",0,0,-144,2)
			BSMT F 0 A_CustomMissile("PentaLine1",0,0,-216,2)
			BSMT F 0 A_CustomMissile("PentaLine1",0,0,-288,2)
			BSMT F 0 A_CustomMissile("PentaLine1",0,0,0,2)
			BSMT G 1 A_Playsound ("monster/hamflr")
			TNT1 A 0 A_SpawnItem("SmithExplosion1", 0, 64)
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Monster Health Regen Script", 0, DND_MHR_DURATION | (10 << 16), ACS_NamedExecuteWithResult("DnD Monster Heal Potency", 20), 7)
			BSMT GGGGGGGGGG 7 Fast A_SpawnItem("SmithExplosion1", 0, 64)
			BSMT G 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
			BSMT G 0 A_ChangeFlag("NOBLOOD", 0)
		Goto See
		XDeathState:
		DeathState:
			BSMT F 0 A_CustomMissile("PentaLine3",0,0,-72,2)
			BSMT F 0 A_CustomMissile("PentaLine3",0,0,-144,2)
			BSMT F 0 A_CustomMissile("PentaLine3",0,0,-216,2)
			BSMT F 0 A_CustomMissile("PentaLine3",0,0,-288,2)
			BSMT F 0 A_CustomMissile("PentaLine3",0,0,0,2)
			BSMT F 0 Radius_Quake(6,250,2,64,8)
			BSMT P 250 A_CustomMissile("SmithDFSpawner",0,0,0,0)
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			BSMT Q 6 A_CustomMissile("SmithHammer",128,-40,-30,0)
			BSMT Q 0 A_CustomMissile("SmithFire",0,0,0,2)
			BSMT R 6 A_Scream	   
			BSMT R 0 A_CustomMissile("SmithFire",0,0,0,2)
			BSMT S 6
			BSMT TU 6
			BSMT V 0 A_CustomMissile("SmithFire",0,0,0,2)
			BSMT V 6 A_NoBlocking 
			BSMT V 6 
			BSMT X 6
			BSMT X 0 A_CustomMissile("SmithFire",0,0,0,2)
			BSMT Y -1 A_KillMaster 
		Stop
   } 
}

Actor HellSmithChargeExp : BaseExplosionDamage {
	Obituary "%o was trampled by a Hellsmith."
	DamageType "Physical"
	Stamina 1
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(80, 144, 0, 0, 65)
		Stop
	}
}

ACTOR SmithFire {   
   Radius 2
   Height 2
   Damage 0
   +NOCLIP
   Speed 0
   PROJECTILE
   RENDERSTYLE ADD
   ALPHA 0.75
   SeeSound "Weapons/hellex"
   +CLIENTSIDEONLY
   +DONTSPLASH
   States {
	   Spawn:
		  MNSM A 3 Bright
		  MNSM B 3 Bright
		  MNSM CDEFGHIJKLMNOPQ 3 Bright
	  stop
   }
}

ACTOR SmithGhost {
	Radius 40
	Height 70
	Speed 1
	Damage 0
	RenderStyle Translucent
	Alpha 0.5
	PROJECTILE
	+CLIENTSIDEONLY
	+DONTSPLASH
	states {
		Spawn:
			BSMT O 35
			BSMT O 2 A_FadeOut(0.1)
		goto Spawn+1
	}
}

ACTOR PentaLine1 {
	Radius 0
	Height 32
	Speed 200
	Alpha 0.85
	PROJECTILE
	+CLIENTSIDEONLY
    +FLOORHUGGER
    +NOCLIP
	+DONTSPLASH
	+DONTBLAST
    SeeSound "weapons/diasht"
	states 	{
		Spawn:
           TNT1 A 1
           TNT1 A 0 A_CustomMissile("PentaLine2",0,0,-198,2)
           TNT1 A 0 A_CustomMissile("PentaLine2",0,0,198,2)
	   stop
	}
}

ACTOR PentaLine2 {
	Radius 0
	Height 32
	Speed 16
	Alpha 0.85
	PROJECTILE
	+CLIENTSIDEONLY
    +FLOORHUGGER
    +NOCLIP
	+DONTBLAST
	states {
		Spawn:
           TNT1 AAAAAAAAAAAAAAAA 1 A_SpawnItem("PentaFire",0,0)
	   stop
	}
}

Actor SmithExplosion1 : BaseExplosionDamage {
	DamageType "MagicalFire"
	Stamina 40
	Obituary "%o was turned to crisps by a Hellsmith."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(48, 192, 0)
		Stop
	}	
}

Actor SmithExplosion2 : BaseExplosionDamage {
	DamageType "MagicalFire"
	Stamina 40
	Obituary "%o was turned to crisps by a Hellsmith."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(2, 32, 0)
		Stop
	}	
}

ACTOR PentaFire {
	Radius 0
	Height 32
	Speed 0
    DamageType "MagicalFire"
	Stamina 40
    RenderStyle Add
	Alpha 0.85
    ReactionTime 2
	PROJECTILE
	+CLIENTSIDEONLY
    +FLOORHUGGER
    +DONTSPLASH
    -NOGRAVITY
	+DONTBLAST
	states {
	   Spawn:
           CFCF A 1 Bright
           CFCF A 2 Bright A_PlaySound("weapons/onfire")
           CFCF BCDEFGHIJKLM 2 Bright
           CFCF A 0 Bright A_CountDown
	   loop
       Death:
           CFCF NOP 3 Bright
       stop
	}
}

ACTOR SmithDFSpawner {
	Radius 0
	Height 1
	Speed 0
	Damage 0
    ReactionTime 50
	Alpha 0.5
	PROJECTILE
	+CLIENTSIDEONLY
    +NOEXPLODEFLOOR
	+DONTBLAST
    States {
		Spawn:
			TNT1 A 6 A_CustomMissile("SmithDeathFire",0,0,0,2,90)
			TNT1 A 0 A_CountDown
		Loop
		Death:
			TNT1 A 1
		stop
	}
}

ACTOR SmithDeathFire {
	Radius 2
	Height 2
	Speed 16
	Damage 0
	PROJECTILE
	RENDERSTYLE ADD
	DamageType "MagicalFire"
	Stamina 40
	ALPHA 0.67
	Scale 2.75
	SeeSound "weapons/bigbrn"
	+NOCLIP
	+CLIENTSIDEONLY
	+DONTSPLASH
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 Thing_ChangeTID(0, SPECIAL_FX_TID)
			FRFX JKLMNOP 2 Bright
		stop
		Death:
			TNT1 A 1
		stop
	}
}

ACTOR PentaLine3 {
	Radius 0
	Height 32
	Speed 200
	Alpha 0.85
	PROJECTILE
	+CLIENTSIDEONLY
    +FLOORHUGGER
    +NOCLIP
	+DONTBLAST
    SeeSound "weapons/diasht"
	states {
		Spawn:
			TNT1 A 1
			TNT1 A 0 A_CustomMissile("PentaLine4",0,0,-198,2)
			TNT1 A 0 A_CustomMissile("PentaLine4",0,0,198,2)
		stop
	}
}

ACTOR PentaLine4 {
	Radius 0
	Height 32
	Speed 16
	Alpha 0.85
	PROJECTILE
	+CLIENTSIDEONLY
    +FLOORHUGGER
    +NOCLIP
	+DONTBLAST
	states {
		Spawn:
			TNT1 AAAAAAAAAAAAAAAA 1 A_SpawnItem("PentaFire2",0,0)
		stop
	}
}

ACTOR PentaFire2 {
	Radius 0
	Height 32
	Speed 0
    RenderStyle Add
	Alpha 0.85
    ReactionTime 7
	PROJECTILE
	+CLIENTSIDEONLY
    +FLOORHUGGER
    +DONTSPLASH
    -NOGRAVITY
	+DONTBLAST
	states {
		Spawn:
			CFCF A 1 Bright
			CFCF A 2 Bright A_PlaySound("weapons/onfire")
			CFCF BCDEFGHIJKLM 3 Bright
			CFCF A 0 Bright A_CountDown
		loop
		Death:
			CFCF NOP 3 Bright
		stop
	}
}

Actor SmithExplosion3 : BaseExplosionDamage {
	DamageType "MagicalFire"
	Stamina 40
	Obituary "%o was turned to crisps by a Hellsmith."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(64, 128, 0)
		Stop
	}	
}

ACTOR STracer {
	Radius 5
	Height 5
	Speed 15
	Damage (10 * random(4, 8))
	RenderStyle ADD
	DamageType "MagicalFire"
	Stamina 40
	Alpha 0.67
	PROJECTILE
	+FLOORHUGGER
	+THRUGHOST
	-NOGRAVITY
	+DONTSPLASH
	+DONTBLAST
	Seesound "weapons/diasht"
	DeathSound "weapons/firex3"   
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			TNT1 A 1 Bright A_CStaffMissileSlither
			TNT1 A 0 Bright A_SpawnItem("STracerPuff",0,0)
		loop
		Death:
			FTRA K 4 Bright
			FTRA L 4 Bright A_SpawnItem("SmithExplosion3")
			FTRA MNO 3 Bright
		stop
	}
}

Actor SmithExplosion4 : BaseExplosionDamage {
	DamageType "MagicalFire"
	Stamina 40
	Obituary "%o was turned to crisps by a Hellsmith."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(8, 4, 0)
		Stop
	}	
}

ACTOR STracerPuff {
	Radius 1
	Height 1
	Speed 0
	RENDERSTYLE ADD
	DamageType "MagicalFire"
	Stamina 40
	ALPHA 0.67
	PROJECTILE
	+FLOORHUGGER
	-NOGRAVITY
	+DONTSPLASH
	+DONTBLAST
	States {
		Spawn:
			FTRA ABCDEFGHIJ 3 Bright A_SpawnItem("SmithExplosion4")
		stop
	}
}

ACTOR SmithHammer {
	Radius 5
	Height 5
	Speed 2
	Damage 0
	PROJECTILE
	-NOGRAVITY
	+LOWGRAVITY
	+CLIENTSIDEONLY
	+MOVEWITHSECTOR
	DeathSound "monsters/hamflr"   
	States {
		Spawn:
			MAUL A 3  
			MAUL B 4
			MAUL C 5
		goto Spawn+2
		Death:
			MAUL D -1 
		stop
	}
}

Actor SmithExplosion5 : BaseExplosionDamage {
	DamageType "MagicalFire"
	Stamina 40
	Obituary "%o was blown up by a Hell Smith."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(96, 128, 0)
		Stop
	}	
}

ACTOR Hellshot2 {
	Radius 8
	Height 12
	Speed 26
	Damage (10 * random(6, 10))
	PROJECTILE
	RENDERSTYLE ADD
	DamageType "MagicalFire"
	Stamina 40
	ALPHA 0.95
	DeathSound "weapons/hellex"
	DONTHURTSHOOTER
	+THRUGHOST
	+DONTSPLASH
	+DONTBLAST
	Decal "Scorch"
	States {
		Spawn: 
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			HEPA ABCDEF 3 Bright A_SpawnItemEx("RedPuff",0,0,0,0,0,0,0,8)
		loop
		Death:
			MSP1 G 3 Bright
			TNT1 A 0 A_CustomMissile("HellBoom",0,0,0,6)
			TNT1 A 0 A_CustomMissile("HellBoom",0,0,45,6)
			TNT1 A 0 A_CustomMissile("HellBoom",0,0,90,6)
			TNT1 A 0 A_CustomMissile("HellBoom",0,0,135,6)
			TNT1 A 0 A_CustomMissile("HellBoom",0,0,180,6)
			TNT1 A 0 A_CustomMissile("HellBoom",0,0,225,6)
			TNT1 A 0 A_CustomMissile("HellBoom",0,0,270,6)
			TNT1 A 0 A_CustomMissile("HellBoom",0,0,315,6)
			MSP1 H 3 Bright A_SpawnItem("SmithExplosion5")
			MSP1 IJKLMNOP 3 Bright
		stop
	}
}

ACTOR HellBoom {
	Radius 8
	Height 8
	Speed 6
	Damage 0
	PROJECTILE
	+RIPPER
	+THRUGHOST
	+BLOODLESSIMPACT
	+DONTSPLASH
	+DONTBLAST
	SeeSound "weapons/firex3"
	ALPHA 0.80
	States {
		Spawn:
			TNT1 AAAAA 6 A_SpawnItem("HellFX",0,0)
		Stop
	}
}

Actor SmithExplosion6 : BaseExplosionDamage {
	DamageType "MagicalFire"
	Stamina 40
	Obituary "%o was turned to crisps by a Bloodseeker."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(48, 96, 0)
		Stop
	}	
}

ACTOR HellFX {  
	Radius 5
	Height 5
	Speed 0
	Damage 0
	PROJECTILE
	RENDERSTYLE ADD
	Damagetype "MagicalFire"
	Stamina 40
	ALPHA 0.80
	SeeSound "weapons/firex3"
	+DONTSPLASH
	+DONTBLAST
	States {
		Spawn:
			MSP1 G 3 Bright
			MSP1 H 3 Bright A_SpawnItem("SmithExplosion6")
			MSP1 IJKLMNOP 3 Bright
		stop
	}
}

ACTOR AvatarOfChaos : DnD_BaseRangedBoss { 
	Health 0x7FFFFFFF
	PainChance 4
	Speed 15 
	Scale 1.15
	Radius 40 
	Height 100
	Mass 0x7FFFFFFF
	+ISMONSTER
	+NORADIUSDMG 
	+BOSS 
	+NOTARGET
	+QUICKTORETALIATE
	+NOFEAR
	Obituary "%o was smitten by the Avatar of Chaos."
	SeeSound "monster/avasit" 
	PainSound "monster/avapai" 
	DeathSound "monster/avadth" 
	ActiveSound "monster/avaact"
	Species "Cyber"
	Tag "Avatar of Chaos"
	var int user_count;
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_AVATAR)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_RARE2)
		Goto SpawnSetup

		IdleState:
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Avatar Ball Setup", 0)
			AVAT AB 10 A_GiveInventory("DnD_SightChecker", 1) 
		Loop 
		SeeState: 
			TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
			AVAT AABBCCDD 3 Fast A_Chase 
		Goto See 
		MissileState:
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Monster State Syncer", 0, 7)
			TNT1 A 0 A_SetUserVar("user_count", 0)
			TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
			TNT1 A 0 A_Jump(160, "Missile2", "Missile3")
			TNT1 A 0 A_Jump(256, "Missile1", "Missile4")
		Goto Missile1
		Missile1: // Red Lightning
			TNT1 A 0 A_FaceTarget
			AVAT E 1 Bright A_PlaySound ("monster/avaatk")
			TNT1 A 0 ACS_ExecuteAlways(973, 0, 2)
			AVAT EEEEEEEEEEEEEEEEEEEEEEEEEEEE 2 Fast Bright A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Monster State Syncer", 0, 8)
			TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_CustomMissile ("RedLiteBot", 0, 0, 120, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile ("RedLiteTop", 0, 0, 120, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile ("RedLiteBot", 0, 0, 240, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile ("RedLiteTop", 0, 0, 240, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile ("RedLiteBot", 0, 0, 0, CMF_AIMDIRECTION)
			AVAT F 16 Bright A_CustomMissile ("RedLiteTop", 0, 0, 0, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile ("RedLiteBot", 0, 0, 60, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile ("RedLiteTop", 0, 0, 60, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile ("RedLiteBot", 0, 0, 180, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile ("RedLiteTop", 0, 0, 180, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile ("RedLiteBot", 0, 0, 300, CMF_AIMDIRECTION)
			AVAT F 8 Bright A_CustomMissile ("RedLiteTop", 0, 0, 300, CMF_AIMDIRECTION)
			AVAT F 0 ACS_NamedExecuteAlways("DnD Monster State Syncer", 0, 9)
		Goto See
		Missile2: // Blue Ball
			TNT1 A 0  A_FaceTarget
			AVAT I 1 Bright A_PlaySound ("monster/avaatk")
			TNT1 A 0 ACS_ExecuteAlways(973, 0, 2)
			AVAT IIIIIIIIIIIIIIIIIIIIIIIIIIII 2 Fast Bright A_FaceTarget 
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Monster State Syncer", 0, 8)
			AVAT JJJJJJJ 3 Fast Bright A_CustomMissile("AvatarIceJet", 56, 0, frandom(-6, 6))
			TNT1 A 0 A_FaceTarget
			AVAT JJJJJJJ 3 Fast Bright A_CustomMissile("AvatarIceJet", 56, 0, frandom(-6, 6))
			TNT1 A 0 A_FaceTarget
			AVAT JJJJJJJ 3 Fast Bright A_CustomMissile("AvatarIceJet", 56, 0, frandom(-6, 6))
			AVAT J 0 ACS_NamedExecuteAlways("DnD Monster State Syncer", 0, 9)
		Goto See
		Missile3:
			TNT1 A 0 A_FaceTarget
			AVAT K 1 Bright A_PlaySound ("monster/avaatk")
			TNT1 A 0 ACS_ExecuteAlways(973, 0, 2)
			AVAT KKKKKKKKKKKKKKKKKKKKKKKKKKKK 2 Fast Bright A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Monster State Syncer", 0, 8)
			TNT1 A 0 A_CustomMissile ("AvaFireBall", 56, 0, 12)
			TNT1 A 0 A_CustomMissile ("AvaFireBall", 56, 0, 6)
			TNT1 A 0 A_CustomMissile ("AvaFireBall", 56, 0, -6)
			TNT1 A 0 A_CustomMissile ("AvaFireBall", 56, 0, -12)
		Missile3Loop:
			TNT1 A 0 A_JumpIf(user_count == 48, "Missile3Finish")
			AVAT L 2 Fast Bright A_CustomMissile ("AvaFireBall", 56, 0, 25 * sin(15 * user_count))
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		Missile3Finish:
			AVAT L 1 Bright ACS_NamedExecuteAlways("DnD Monster State Syncer", 0, 9)
		Goto See
		Missile4:
			TNT1 A 0 A_FaceTarget
			AVAT G 1 Bright A_PlaySound ("monster/avaatk")
			TNT1 A 0 ACS_ExecuteAlways(973, 0, 2)
			AVAT GGGGGGGGGGGGGGGGGGGGGGGGGGGG 2 Bright A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Monster State Syncer", 0, 8)
			AVAT H 1 Bright A_PlaySound("items/bookofthedead")
			TNT1 A 0 A_SpawnItemEx("AvatarEvilSmile", 16, 0, 36, 0, 0, 4, 0, SXF_CLIENTSIDE)
			TNT1 A 0 ACS_ExecuteAlways(973, 0, 1)
			AVAT H 120 Fast Bright
			AVAT H 0 ACS_NamedExecuteAlways("DnD Monster State Syncer", 0, 9)
		Goto See
		PainState: 
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Monster State Syncer", 0, 9)
			AVAT M 4 Fast 
			AVAT M 4 Fast A_Pain 
		Goto See 
		XDeathState:
		DeathState:
			TNT1 A 0 A_SetTranslucent(1.0)
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Monster State Syncer", 0, 10)
			TNT1 A 0 A_CustomMissile("SorcBall1Projectile", 90, 0, 0, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SorcBall2Projectile", 90, 0, 60, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SorcBall3Projectile", 90, 0, 120, CMF_AIMDIRECTION)
			AVAT N 7 Bright A_KillChildren("Perish")
			TNT1 AAAAA 0 A_SpawnItemEx("ExplosionFXMagic", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128)
			AVAT O 7 Bright A_Scream
			TNT1 AAAAA 0 A_SpawnItemEx("ExplosionFXMagic", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128)
			AVAT P 7 Bright
			TNT1 A 0 A_KillChildren("Perish")
			TNT1 AAAAA 0 A_SpawnItemEx("ExplosionFXMagic", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128)
			AVAT Q 7 Bright 
			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_NoBlocking
			AVAT RSTU 7 Bright
			AVAT V -1 A_KillMaster("Perish")
		Stop
		
		// override base states that result in this monster dying to the cubes dont mess up
		Death.MagicSealing:
			"####" "#" 0 ACS_NamedExecuteAlways("DnD Monster State Syncer", 0, 10)
			"####" "#" 0 A_CustomMissile("SorcBall1Projectile", 90, 0, 0, CMF_AIMDIRECTION)
			"####" "#" 0 A_CustomMissile("SorcBall2Projectile", 90, 0, 60, CMF_AIMDIRECTION)
			"####" "#" 0 A_CustomMissile("SorcBall3Projectile", 90, 0, 120, CMF_AIMDIRECTION)
		Goto Super::Death.MagicSealing
		Death.Emerald:
			"####" "#" 0 ACS_NamedExecuteAlways("DnD Monster State Syncer", 0, 10)
			"####" "#" 0 A_CustomMissile("SorcBall1Projectile", 90, 0, 0, CMF_AIMDIRECTION)
			"####" "#" 0 A_CustomMissile("SorcBall2Projectile", 90, 0, 60, CMF_AIMDIRECTION)
			"####" "#" 0 A_CustomMissile("SorcBall3Projectile", 90, 0, 120, CMF_AIMDIRECTION)
		Goto Super::Death.Emerald
		Death.Ice:
		Death.P_Ice:
			"####" "#" 0 ACS_NamedExecuteAlways("DnD Monster State Syncer", 0, 10)
			"####" "#" 0 A_CustomMissile("SorcBall1Projectile", 90, 0, 0, CMF_AIMDIRECTION)
			"####" "#" 0 A_CustomMissile("SorcBall2Projectile", 90, 0, 60, CMF_AIMDIRECTION)
			"####" "#" 0 A_CustomMissile("SorcBall3Projectile", 90, 0, 120, CMF_AIMDIRECTION)
		Goto Super::Death.Ice
   }
}

Actor AvatarBallSet : DnD_Boolean { }

Actor AvatarDead : DnD_Boolean { }

Actor AvatarAttack : DnD_Boolean { }

Actor AvatarOnAttack : DnD_Boolean { }

Actor SorcBallBase {
	+NOINTERACTION
    Radius 2
    Height 2
	Speed 16
}

Actor SorcBall1New : SorcBallBase {
	+CLIENTSIDEONLY
	var int user_angle;
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_SetUserVar("user_angle", 0)
			TNT1 A 0 ACS_ExecuteAlways(970, 0, 0, 1, 32)
		SpawnLoop:
			SBMP A 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))
			SBMP A 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))			
			SBMP B 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMP B 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMP C 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMP C 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))					
			SBMP D 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))
			SBMP D 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))					
			SBMP E 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMP E 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))				
			SBMP F 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))			
			SBMP F 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))				
			SBMP G 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))			
			SBMP G 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMP H 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))			
			SBMP H 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMP I 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))			
			SBMP I 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMP J 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMP J 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMP K 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMP K 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMP L 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMP L 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMP M 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMP M 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMP N 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMP N 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMP O 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))			
			SBMP O 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMP P 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMP P 1 ACS_ExecuteAlways(970, 0, 1, 1, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
		Loop
		Death:
			TNT1 A 1 A_SpawnItemEx("ExplosionFXMagic", 0, 0, 0, 0, 0, 0, 0, 128)
		Stop
	}
}

Actor SorcBall2New : SorcBallBase {
	+CLIENTSIDEONLY
	var int user_angle;
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_SetUserVar("user_angle", 60)
			TNT1 A 0 ACS_ExecuteAlways(970, 0, 0, 2, 32)
		SpawnLoop:
			SBMB A 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))
			SBMB A 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))			
			SBMB B 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMB B 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMB C 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMB C 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))					
			SBMB D 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))
			SBMB D 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))					
			SBMB E 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMB E 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))				
			SBMB F 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))			
			SBMB F 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))				
			SBMB G 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))			
			SBMB G 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMB H 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))			
			SBMB H 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMB I 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))			
			SBMB I 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMB J 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMB J 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMB K 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMB K 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMB L 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMB L 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMB M 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMB M 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMB N 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMB N 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMB O 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))			
			SBMB O 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMB P 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMB P 1 ACS_ExecuteAlways(970, 0, 1, 2, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
		Loop
		Death:
			TNT1 A 1 A_SpawnItemEx("ExplosionFXMagicBlue", 0, 0, 0, 0, 0, 0, 0, 128)
		Stop
	}
}

Actor SorcBall3New : SorcBallBase {
	+CLIENTSIDEONLY
	var int user_angle;
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_SetUserVar("user_angle", 120)
			TNT1 A 0 ACS_ExecuteAlways(970, 0, 0, 3, 32)
		SpawnLoop:
			SBMG A 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))
			SBMG A 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))			
			SBMG B 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMG B 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMG C 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMG C 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))					
			SBMG D 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))
			SBMG D 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))					
			SBMG E 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMG E 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))				
			SBMG F 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))			
			SBMG F 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))				
			SBMG G 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))			
			SBMG G 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMG H 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))			
			SBMG H 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMG I 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))			
			SBMG I 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMG J 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMG J 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMG K 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMG K 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMG L 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMG L 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMG M 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMG M 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMG N 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMG N 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMG O 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))			
			SBMG O 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
			SBMG P 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))		
			SBMG P 1 ACS_ExecuteAlways(970, 0, 1, 3, 32)
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("DnD Avatar Ball State Check") == -2, "Death")
			TNT1 A 0 A_SetUserVar("user_angle", user_angle + 4 * ACS_NamedExecuteWithResult("DnD Avatar Ball State Check"))	
		Loop
		Death:
			TNT1 A 1 A_SpawnItemEx("ExplosionFXMagicYellow", 0, 0, 0, 0, 0, 0, 0, 128)
		Stop
	}
}

Actor SorcBallProjectileBase {
	PROJECTILE
	Speed 8
	Height 10
	Radius 5
	Damage (1)
	+FULLVOLDEATH
	+CANBOUNCEWATER
	+NOWALLBOUNCESND
	-NOGRAVITY
    -ACTIVATEIMPACT
    -ACTIVATEPCROSS
	Gravity 0.075
	BounceType Hexen
	BounceCount 5
	BounceSound "SorcererBallBounce"
    DeathSound "SorcererBigBallExplode"
	DamageType "Magical"
	Stamina 8
}

Actor SorcBallFlare_Red {
	Renderstyle Add
	Alpha 0.75
	Scale 0.25
	ReactionTime 30
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			FLAR A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR A 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR A 0 A_FadeOut(0.075)
			FLAR A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR A 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR A 0 A_FadeOut(0.075)
			FLAR A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR A 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR A 0 A_FadeOut(0.075)
			FLAR A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR A 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR A 0 A_FadeOut(0.075)
			FLAR A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR A 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR A 0 A_FadeOut(0.075)
			FLAR A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR A 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR A 0 A_FadeIn(0.075)
			FLAR A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR A 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR A 0 A_FadeIn(0.075)
			FLAR A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR A 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR A 0 A_FadeIn(0.075)
			FLAR A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR A 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR A 0 A_FadeIn(0.075)
			FLAR A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR A 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR A 0 A_FadeIn(0.075)
			FLAR A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR A 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR A 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR A 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR A 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR A 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR A 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR A 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR A 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR A 0 A_CountDown
		Loop
		Death:
		Fade:
			"####" "#" 1 A_FadeOut(0.025)
		Wait
	}
}

Actor SorcBallFlare_Blue : SorcBallFlare_Red {
	States {
		Spawn:
			FLAR B 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR B 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR B 0 A_FadeOut(0.075)
			FLAR B 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR B 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR B 0 A_FadeOut(0.075)
			FLAR B 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR B 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR B 0 A_FadeOut(0.075)
			FLAR B 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR B 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR B 0 A_FadeOut(0.075)
			FLAR B 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR B 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR B 0 A_FadeOut(0.075)
			FLAR B 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR B 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR B 0 A_FadeIn(0.075)
			FLAR B 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR B 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR B 0 A_FadeIn(0.075)
			FLAR B 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR B 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR B 0 A_FadeIn(0.075)
			FLAR B 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR B 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR B 0 A_FadeIn(0.075)
			FLAR B 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR B 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR B 0 A_FadeIn(0.075)
			FLAR B 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR B 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR B 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR B 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR B 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR B 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR B 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR B 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR B 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR B 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR B 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR B 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR B 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR B 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR B 0 A_CountDown
		Loop
	}
}

Actor SorcBallFlare_Yellow : SorcBallFlare_Red {
	States {
		Spawn:
			FLAR E 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR E 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR E 0 A_FadeOut(0.075)
			FLAR E 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR E 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR E 0 A_FadeOut(0.075)
			FLAR E 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR E 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR E 0 A_FadeOut(0.075)
			FLAR E 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR E 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR E 0 A_FadeOut(0.075)
			FLAR E 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR E 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR E 0 A_FadeOut(0.075)
			FLAR E 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR E 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR E 0 A_FadeIn(0.075)
			FLAR E 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR E 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR E 0 A_FadeIn(0.075)
			FLAR E 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR E 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR E 0 A_FadeIn(0.075)
			FLAR E 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR E 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR E 0 A_FadeIn(0.075)
			FLAR E 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR E 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR E 0 A_FadeIn(0.075)
			FLAR E 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR E 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR E 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR E 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR E 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR E 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR E 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR E 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR E 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR E 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR E 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR E 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR E 1 A_Warp(AAPTR_TARGET, 0, 0, 0, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			FLAR E 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			FLAR E 0 A_CountDown
		Loop
	}
}

Actor SorcBall1Projectile : SorcBallProjectileBase {
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Avatar Ball Flare", 0, 0)
		SpawnLoop:
			SBMP ABCDEFGHIJKLMNOP 2 Bright
		Loop
		Death:
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Avatar Ball Flare", 0, 3)
			TNT1 AA 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 A 0 A_ChangeFlag("NOBOUNCESOUND", 1)
			SBS4 D 5 Bright A_Explode(192, 192, 0)
			SBS4 E 5 Bright
			SBS4 FGH 6 Bright
		Stop
	}
}

Actor SorcBall2Projectile : SorcBallProjectileBase {
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Avatar Ball Flare", 0, 1)
		SpawnLoop:
			SBMB ABCDEFGHIJKLMNOP 2 Bright
		Loop
		Death:
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Avatar Ball Flare", 0, 3)
			TNT1 AA 0 A_SpawnItemEx("BlueParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 A 0 A_ChangeFlag("NOBOUNCESOUND", 1)
			SBS3 D 5 Bright A_Explode(192, 192, 0)
			SBS3 E 5 Bright
			SBS3 FGH 6 Bright
		Stop
	}
}

Actor SorcBall3Projectile : SorcBallProjectileBase {
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Avatar Ball Flare", 0, 2)
		SpawnLoop:
			SBMG ABCDEFGHIJKLMNOP 2 Bright
		Loop
		Death:
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Avatar Ball Flare", 0, 3)
			TNT1 AA 0 A_SpawnItemEx("YellowParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 A 0 A_ChangeFlag("NOBOUNCESOUND", 1)
			SBS2 D 5 Bright A_Explode(192, 192, 0)
			SBS2 E 5 Bright
			SBS2 FGH 6 Bright
		Stop
	}
}

Actor RedLiteInBetween {
	Projectile
	Radius 8
	Height 24
	Speed 0
	Renderstyle Add
	Damage (random(9, 16))
	DamageType "MagicalLightningRed"
	Stamina 264
	+THRUGHOST
	+DONTBLAST
	DeathSound "Avatar/BoltHit"
	States {
		Spawn:
			MLFX IJKLM 3 Bright
		Loop
		Death:
			MLFX OPQRSTU 3 Bright
		Stop
	}
}

Actor RedLiteBot {
	Projectile
	Radius 16
	Height 32
	Speed 18
	Renderstyle Add
	const int pspd = 18;
	const int boltspeed = 32;
	const float turnang = 6;
	ReactionTime 3
	Seesound "Avatar/BoltFire"
	BounceType Hexen
	BounceFactor 0.125
	+FLOORHUGGER
	+THRUACTORS
	States {
		Spawn:
			TNT1 A 0 NoDelay A_PlaySound("Avatar/BoltLoop", 5, 1.0, 1)
		SpawnLoop:
			MLFX EFGHEFGH 4 Bright A_SpawnItemEx("RedLiteInBetween", 0, 0, 0, 0, 0, boltspeed)
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Sync Hack", 0, x, y, z)
			TNT1 A 0 A_ChangeVelocity(velx / 8, vely / 8, velz, CVF_REPLACE)
			MLFX EFGHEFGHEFGH 4 Bright A_SpawnItemEx("RedLiteInBetween", 0, 0, 0, 0, 0, boltspeed)
			TNT1 A 0 A_SpawnItemEx("RedLiteInBetween", 0, 0, 0, 0, 0, boltspeed)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX E 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX E 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX E 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX E 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SpawnItemEx("RedLiteInBetween", 0, 0, 0, 0, 0, boltspeed)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX F 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX F 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX F 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX F 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SpawnItemEx("RedLiteInBetween", 0, 0, 0, 0, 0, boltspeed)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX G 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX G 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX G 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX G 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SpawnItemEx("RedLiteInBetween", 0, 0, 0, 0, 0, boltspeed)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX H 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX H 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX H 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX H 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SpawnItemEx("RedLiteInBetween", 0, 0, 0, 0, 0, boltspeed)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX E 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX E 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX E 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX E 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SpawnItemEx("RedLiteInBetween", 0, 0, 0, 0, 0, boltspeed)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX F 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX F 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX F 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX F 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SpawnItemEx("RedLiteInBetween", 0, 0, 0, 0, 0, boltspeed)
			MLFX G 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX G 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX G 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX G 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SpawnItemEx("RedLiteInBetween", 0, 0, 0, 0, 0, boltspeed)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX H 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX H 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX H 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX H 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Sync Hack", 0, x, y, z)
			TNT1 A 0 A_ChangeVelocity(velx / 8, vely / 8, velz, CVF_REPLACE)
			MLFX EFGHEFGHEFGH 4 Bright A_SpawnItemEx("RedLiteInBetween", 0, 0, 0, 0, 0, boltspeed)
			TNT1 A 0 A_ChangeVelocity(pspd *cos(angle + 180) / 2, pspd *sin(angle + 180) / 2, velz, CVF_REPLACE)
			TNT1 A 0 A_CountDown
		Loop
		Death:
			"####" "#" 0 A_StopSound(5)
			"####" "#" 1 A_FadeOut(0.0825)
		Wait
	}
}

Actor RedLiteTop : RedLiteBot {
	-FLOORHUGGER
	+CEILINGHUGGER
	States {
		Spawn:
			TNT1 A 0 NoDelay A_PlaySound("Avatar/BoltLoop", 5, 1.0, 1)
		SpawnLoop:
			MLFX ABCDABCD 4 Bright A_SpawnItemEx("RedLiteInBetween", 0, 0, -12, 0, 0, -boltspeed)
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Sync Hack", 0, x, y, z)
			TNT1 A 0 A_ChangeVelocity(velx / 8, vely / 8, velz, CVF_REPLACE)
			MLFX ABCDABCDABCD 4 Bright A_SpawnItemEx("RedLiteInBetween", 0, 0, -12, 0, 0, -boltspeed)
			TNT1 A 0 A_SpawnItemEx("RedLiteInBetween", 0, 0, -12, 0, 0, -boltspeed)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX A 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX A 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX A 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX A 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SpawnItemEx("RedLiteInBetween", 0, 0, -12, 0, 0, -boltspeed)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX B 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX B 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX B 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX B 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SpawnItemEx("RedLiteInBetween", 0, 0, -12, 0, 0, -boltspeed)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX C 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX C 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX C 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX C 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SpawnItemEx("RedLiteInBetween", 0, 0, -12, 0, 0, -boltspeed)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX D 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX D 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX D 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX D 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SpawnItemEx("RedLiteInBetween", 0, 0, -12, 0, 0, -boltspeed)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX A 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX A 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX A 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX A 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SpawnItemEx("RedLiteInBetween", 0, 0, -12, 0, 0, -boltspeed)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX B 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX B 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX B 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX B 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SpawnItemEx("RedLiteInBetween", 0, 0, -12, 0, 0, -boltspeed)
			MLFX C 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX C 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX C 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX C 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SpawnItemEx("RedLiteInBetween", 0, 0, -12, 0, 0, -boltspeed)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX D 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX D 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX D 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetAngle(angle + turnang)
			MLFX D 1 Bright A_ChangeVelocity(pspd *cos(angle), pspd *sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Sync Hack", 0, x, y, z)
			TNT1 A 0 A_ChangeVelocity(velx / 8, vely / 8, velz, CVF_REPLACE)
			MLFX ABCDABCDABCD 4 Bright A_SpawnItemEx("RedLiteInBetween", 0, 0, -12, 0, 0, -boltspeed)
			TNT1 A 0 A_ChangeVelocity(pspd *cos(angle + 180) / 2, pspd *sin(angle + 180) / 2, velz, CVF_REPLACE)
			TNT1 A 0 A_CountDown
		Loop
	}
}

ACTOR AvaFireBall {
	Radius 9
	Height 18
	Speed 24
	Damage (7 * random(1, 8))
	DamageType "MagicalFire"
	Stamina 40
	ExplosionDamage 12
	ExplosionRadius 40
	PROJECTILE
	RENDERSTYLE ADD
	ALPHA 0.80
	+THRUGHOST
	+DONTBLAST
	SeeSound "Beast/Attack"
	DeathSound "weapons/phoenixhit"
	Decal "RevenantScorch"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			AFX5 ABC 3 Bright
		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))
			AFX5 D 3 Bright A_Explode(48, 128, 0)
			AFX5 EFGH 3 Bright
		stop
	}
}

Actor AvatarIceJet {
	Radius 14
	Height 12
	Speed 20
	Damage (random(8, 16))
	DamageType "MagicalIce"
	Stamina 72
	PROJECTILE
	+RIPPER
	+BLOODLESSIMPACT
	+DONTBLAST
	RenderStyle Translucent
	Alpha 0.5
	SeeSound "Avatar/IceJet"
	DeathSound "Avatar/IceJet"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			AVIC ABC 4 BRIGHT
		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))
			AVIC DEFG 4 BRIGHT
		Stop
	}
}

ACTOR HolyMissile2 {
	Radius 4
	Height 4
	Speed 22
	Damage (5 * random(8, 12))
	DamageType "MagicalGray"
	Stamina 8
	PROJECTILE
	Species "ThruDecor"
	+SEEKERMISSILE
	+THRUSPECIES
	+DONTBLAST
	RENDERSTYLE ADD
	ALPHA 0.7
	MissileType HolyMissileTrail
	SeeSound "Avatar/SoulFire"
	DeathSound "Avatar/SoulXP"
	Decal "Scorch"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			SPIR A 1 Bright A_CustomMissile("HolyMissileTrail",0,0,0,0)
			TNT1 A 0 A_SeekerMissile(10, 16, SMF_PRECISE)
			SPIR B 1 Bright A_CustomMissile("HolyMissileTrail",0,0,0,0)
			TNT1 A 0 A_SeekerMissile(10, 16, SMF_PRECISE)
			SPIR A 1 Bright A_CustomMissile("HolyMissileTrail",0,0,0,0)
			TNT1 A 0 A_SeekerMissile(10, 16, SMF_PRECISE)
			SPIR B 1 Bright A_CustomMissile("HolyMissileTrail",0,0,0,0)
			TNT1 A 0 A_SeekerMissile(10, 16, SMF_PRECISE)
			SPIR A 1 Bright A_CustomMissile("HolyMissileTrail",0,0,0,0)
			TNT1 A 0 A_SeekerMissile(10, 16, SMF_PRECISE)
			SPIR B 1 Bright A_CustomMissile("HolyMissileTrail",0,0,0,0)
		Loop
		Death:
			TNT1 A 0 A_SpawnItemEx("WhiteParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 AAA 0 A_CustomMissile("ExplosionFX10", 0, 0, random(0,360), 2, random(0,360))
			TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
			SPIR KLMNO 3 Bright
		Stop
	}
}

ACTOR HolyMissileTrail {
	Radius 3
	Height 3
	Speed 15
	PROJECTILE
	RENDERSTYLE ADD
	Alpha 0.7
	+CLIENTSIDEONLY
	states {
		Spawn:
			SPIR QRS 3
		Death:
			SPIR C 3 BRIGHT
			SPIR D 3 BRIGHT
		Stop
	}
}

Actor AcolyteSummonBall {
	Speed 15
	Radius 22
	Height 65
	+NOBLOCKMAP
	+MISSILE
	+NOTELEPORT
	+DONTBLAST
	SeeSound "Avatar/Bishop"
	States {
		Spawn:
			SBS3 ABC 2 Bright
		Loop
		Death:
			SBS2 D 4 Bright A_Stop
			TNT1 A 0 A_RearrangePointers(AAPTR_DEFAULT, AAPTR_TARGET)
			TNT1 A 0 A_SpawnItemEx("ShadowPriest2", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
			SBS2 EFGH 4 Bright
		Stop
	}
}

Actor AcolyteSummoner : CustomInventory {
	inventory.maxamount 1
	+AUTOACTIVATE
	+ALWAYSPICKUP
	
	States {
		Use:
			TNT1 A 0 A_CustomMissile("AcolyteSummonBall", 48, 0, 90, CMF_CHECKTARGETDEAD)
			TNT1 A 0 A_CustomMissile("AcolyteSummonBall", 48, 0, 180, CMF_CHECKTARGETDEAD)
			TNT1 A 0 A_CustomMissile("AcolyteSummonBall", 48, 0, 270, CMF_CHECKTARGETDEAD)
		Stop
	}
}

Actor AvatarEvilSmile {
	Radius 2
	Height 2
	Renderstyle Add
	Alpha 0.25
	Scale 1.25
	+NOGRAVITY
	+NOCLIP
	+CLIENTSIDEONLY
	
	States {
		Spawn:
			SRBA EEFFGG 1 Bright A_Fadein(0.1)
			TNT1 A 0 A_Stop
			SRBA H 105 Bright
			SRBA IIIIJJJJ 1 Bright A_FadeOut(0.05)
		Stop
	}
}

Actor Thanatos : DnD_BaseRangedBoss {
	Translation "0:255=%[0.00,0.00,0.00]:[0.81,0.53,0.53]", "16:47=16:47", "168:255=168:255", "80:111=80:111"
	Obituary "%o was wiped off the face of Earth by a Thanatos."
	Health 0x7FFFFFFF
	Radius 40
	Height 110 
	Mass 16384
	Speed 20
	PainChance 8
	Scale 1.15
	Species "Cyber"
	+ISMONSTER
	+NOTARGET 
	+NORADIUSDMG 
	+BOSS 
	+DONTHURTSPECIES
	+MISSILEMORE
	+MISSILEEVENMORE 
	+QUICKTORETALIATE
	SeeSound "monster/annsee" 
	PainSound "monster/annpain" 
	DeathSound "monster/anndie" 
	ActiveSound "monster/annact" 
	Tag "Thanatos"
	States {  
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_THANATOS)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_EPIC)
		Goto SpawnSetup
	
		IdleState:
			4NNI AB 10 A_GiveInventory("DnD_SightChecker", 1) 
		Loop 
		SeeState: 
			4NNI A 3 Fast A_Playsound ("monster/annhoof")
			4NNI ABBCC 3 Fast A_Chase 
			4NNI D 3 Fast A_Playsound ("monster/annhoof") 
			4NNI D 3 Fast A_Chase 
		Goto See 
		MissileState:
			TNT1 A 0 A_JumpIfCloser(288, "Stomp")
		Rockets:
			TNT1 A 0 A_Jump(144, "Mini", "Homing")
			4NNI E 6 Fast A_FaceTarget 
			4NNI F 0 A_CustomMissile ("CyberdemonRocket2",56,30,0)
			4NNI F 12 Fast Bright A_CustomMissile ("CyberdemonRocket2",56,-30,0)
			4NNI E 12 Fast A_FaceTarget 
			4NNI F 0 A_CustomMissile ("CyberdemonRocket2",56,30,0)
			4NNI F 12 Fast Bright A_CustomMissile ("CyberdemonRocket2",56,-30,0) 
			4NNI E 12 Fast A_FaceTarget 
			4NNI F 0 A_CustomMissile ("CyberdemonRocket2",56,30,0)
			4NNI F 12 Fast Bright A_CustomMissile ("CyberdemonRocket2",56,-30,0)
		Goto See
		Homing:
			4NNI E 6 Fast A_FaceTarget 
			4NNI F 0 A_CustomMissile ("ThanatosRocket",56,30,0)
			4NNI F 12 Fast Bright A_CustomMissile ("ThanatosRocket",56,-30,0)
			4NNI E 12 Fast A_FaceTarget 
			4NNI F 0 A_CustomMissile ("ThanatosRocket",56,30,0)
			4NNI F 12 Fast Bright A_CustomMissile ("ThanatosRocket",56,-30,0) 
			4NNI E 12 Fast A_FaceTarget 
			4NNI F 0 A_CustomMissile ("ThanatosRocket",56,30,0)
			4NNI F 12 Fast Bright A_CustomMissile ("ThanatosRocket",56,-30,0)
		Goto See
		Mini:
			4NNI E 6 Fast A_FaceTarget 
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,30, random(-5, 5), CMF_OFFSETPITCH | CMF_AIMOFFSET, frandom(-2.8, 2.8))
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,30, random(-5, 5), CMF_OFFSETPITCH | CMF_AIMOFFSET, frandom(-2.8, 2.8))
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,30, random(-5, 5), CMF_OFFSETPITCH | CMF_AIMOFFSET, frandom(-2.8, 2.8))
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,30, random(-5, 5))
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,-30, random(-5, 5), CMF_OFFSETPITCH | CMF_AIMOFFSET, frandom(-2.8, 2.8))
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,-30, random(-5, 5), CMF_OFFSETPITCH | CMF_AIMOFFSET, frandom(-2.8, 2.8))
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,-30, random(-5, 5), CMF_OFFSETPITCH | CMF_AIMOFFSET, frandom(-2.8, 2.8))
			4NNI F 12 Fast Bright A_CustomMissile ("ThanatosMiniRocket",64,-30,0)
			4NNI E 12 Fast A_FaceTarget 
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,30, random(-5, 5), CMF_OFFSETPITCH | CMF_AIMOFFSET, frandom(-2.8, 2.8))
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,30, random(-5, 5), CMF_OFFSETPITCH | CMF_AIMOFFSET, frandom(-2.8, 2.8))
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,30, random(-5, 5), CMF_OFFSETPITCH | CMF_AIMOFFSET, frandom(-2.8, 2.8))
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,30, random(-5, 5))
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,-30, random(-5, 5), CMF_OFFSETPITCH | CMF_AIMOFFSET, frandom(-2.8, 2.8))
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,-30, random(-5, 5), CMF_OFFSETPITCH | CMF_AIMOFFSET, frandom(-2.8, 2.8))
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,-30, random(-5, 5), CMF_OFFSETPITCH | CMF_AIMOFFSET, frandom(-2.8, 2.8))
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,30,0)
			4NNI F 12 Fast Bright A_CustomMissile ("ThanatosMiniRocket",64,-30,0) 
			4NNI E 12 Fast A_FaceTarget 
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,30, random(-5, 5), CMF_OFFSETPITCH | CMF_AIMOFFSET, frandom(-2.8, 2.8))
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,30, random(-5, 5), CMF_OFFSETPITCH | CMF_AIMOFFSET, frandom(-2.8, 2.8))
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,30, random(-5, 5), CMF_OFFSETPITCH | CMF_AIMOFFSET, frandom(-2.8, 2.8))
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,30, random(-5, 5))
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,-30, random(-5, 5), CMF_OFFSETPITCH | CMF_AIMOFFSET, frandom(-2.8, 2.8))
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,-30, random(-5, 5), CMF_OFFSETPITCH | CMF_AIMOFFSET, frandom(-2.8, 2.8))
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,-30, random(-5, 5), CMF_OFFSETPITCH | CMF_AIMOFFSET, frandom(-2.8, 2.8))
			4NNI F 0 A_CustomMissile ("ThanatosMiniRocket",64,30,0)
			4NNI F 12 Fast Bright A_CustomMissile ("ThanatosMiniRocket",64,-30,0)
		Goto See
		Stomp:
			TNT1 A 0 A_Jump(64, "Rockets")
			ANMA AA 6 Fast A_FaceTarget
			TNT1 A 0 A_SpawnItem("CyberdemonStomper")
			TNT1 A 0 A_SpawnItemEx("StompFX", 24)
			TNT1 A 0 A_SpawnItemEx("SlamAftermathSpawner")
			TNT1 A 0 A_PlaySound("cyberdemon/slam", 5)
			TNT1 A 0 A_playSound("cyberdemon/slamadd", 6)
			ANMA B 9 Fast
			ANMA BB 9 Fast A_FaceTarget
		Goto See
		PainState: 
			4NNI G 10 Fast A_Pain 
		Goto See 
		XDeathState:
		DeathState:
			4NNI H 10 Bright
			4NNI I 10 Bright A_Scream 
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			4NNI JJJJJ 2 Bright A_SpawnItemEx("ExplosionFX", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			4NNI KKKKK 2 Bright A_SpawnItemEx("ExplosionFX", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			4NNI LLLLL 2 Bright A_SpawnItemEx("ExplosionFX", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			4NNI MMMMM 2 Bright A_SpawnItemEx("ExplosionFX", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			4NNI NNNNN 2 Bright A_SpawnItemEx("ExplosionFX", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			4NNI OOOOO 2 Bright A_SpawnItemEx("ExplosionFX", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128) 
			4NNI P 30 
			4NNI P -1 A_KillMaster
		Stop
   }
}

Actor ThanatosExp1 : BaseExplosionDamage {
	DamageType "Explosive"
	Stamina 4
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(96, 128, 0)
		Stop
	}
}

ACTOR ThanatosRocket {
	Radius 8
	Height 11
	Speed 20
	Damage (100)
	DamageType "Explosive"
	Stamina 4
	PROJECTILE
	DeathSound "weapons/heavyrlexp"
	+SeekerMissile
	+MTHRUSPECIES
	+Rockettrail
	+THRUGHOST
	+FORCEXYBILLBOARD
	+FORCERADIUSDMG
	+EXPLODEONWATER
	+DONTBLAST
	SeeSound "weapons/heavyrlfire"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			HMIS AA 4 Bright
		SpawnLoop:
			TNT1 AAAAAA 0 A_CustomMissile ("MeleeSmoke", 0, 0, random (0, 360), 2, random (0, 360))
			HMIS A 2 Bright A_SeekerMissile (10, 25)
			TNT1 AAAAAA 0 A_CustomMissile ("MeleeSmoke", 0, 0, random (0, 360), 2, random (0, 360))
			HMIS A 2 Bright
			TNT1 AAAAAA 0 A_CustomMissile ("MeleeSmoke", 0, 0, random (0, 360), 2, random (0, 360))
			HMIS A 2 Bright A_SeekerMissile (10, 25)
			TNT1 AAAAAA 0 A_CustomMissile ("MeleeSmoke", 0, 0, random (0, 360), 2, random (0, 360))
			HMIS A 2 Bright A_PlaySound("Weapons/HeatSeek", 7)
		Loop
		Death:
			TNT1 A 0 A_StopSound(7)
			TNT1 A 0 A_SetTranslucent (0.75,1)
			TNT1 A 0 A_SpawnItemEx ("ExplosionFlare", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			TNT1 AAAAA 0 A_CustomMissile("RocketSmoke", 0, 0, random(0, 360), 2, random(0, 180))
			TNT1 AAAAAAAA 0 A_CustomMissile("RocketSmoke", 0, 0, random(0, 360), 2, random(0, 360))	
			TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 180))
			TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random (0, 360), 2, random (0, 360))
			MACX A 2 Bright A_SpawnItem("ThanatosExp1")
			MACX BCDEFGHIJ 2 Bright
		stop
	}
}

Actor CyberdemonRocket2 : CyberdemonRocket {
	Speed 28
}

Actor CyberdemonStomper : BaseExplosionDamage {
	DamageType "PhysicalSlow"
	Stamina 1
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 4 A_Explode(160, 224, 0)
			TNT1 A 4 A_Explode(116, 256, 0)
			TNT1 A 4 A_Explode(80, 288, 0)
		Stop
	}
}

ACTOR SlamFX {
	Radius 12
	Height 16
	RenderStyle Translucent
	Alpha 0.1
	PROJECTILE
	Speed 8
	+CLIENTSIDEONLY
	+DROPOFF
	-NOGRAVITY
	+FORCERADIUSDMG
	+BLOODLESSIMPACT
	+FloorHugger
	+RIPPER
	States {
		Spawn:
	    	IDGA CCAABBCCC 10
		Death:
			IDGA C 1
	    Stop
	}
}

Actor SlamAftermathSpawner {
	Height 2
	Radius 2
	PROJECTILE
	Speed 1
	+HEXENBOUNCE
	+THRUACTORS
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_SetPitch(0.0)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 0, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 10, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 20, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 30, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 40, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 50, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 60, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 70, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 80, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 90, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 100, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 110, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 120, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 130, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 140, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 150, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 160, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 170, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 180, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 190, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 200, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 210, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 220, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 230, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 240, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 250, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 260, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 270, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 280, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 290, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 300, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 310, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 320, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 330, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 340, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("SlamFX", 0, 0, 350, CMF_AIMDIRECTION)
		Stop
	}
}

Actor StompFX {
	+NOINTERACTION
	+CLIENTSIDEONLY
	Renderstyle Add
	Alpha 1.0
	Scale 1.5
	States {
		Spawn:
			CJFX ABC 3 Bright A_FadeOut(0.05)
			CJFX DEFGH 2 Bright A_FadeOut(0.05)
			CJFX IJK 3 Bright A_FadeOut(0.05)
		Stop
	}
}

Actor ThanatosExp2 : BaseExplosionDamage {
	DamageType "Explosive"
	Stamina 4
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(32, 72, 0)
		Stop
	}
}

Actor ThanatosMiniRocket {
	PROJECTILE
	Speed 22
	Damage (32)
	DamageType "Explosive"
	Stamina 4
	SeeSound "weapons/devastatorfire"
	DeathSound "Weapons/DevastatorExpl"
	Height 8
	Radius 4
	Scale 0.45
	+THRUGHOST
	+MTHRUSPECIES
	+FOILINVUL
	+FORCERADIUSDMG
	+NODAMAGETHRUST
	+SEEKERMISSILE
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			DEVM AA 2 Bright
			TNT1 A 0 A_ScaleVelocity(1.5)
		SpawnLoop:
			TNT1 A 0 A_SpawnItem("DevastatorSmoke")
			DEVM A 2 Bright
		Loop
		Death:
			TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSmall", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			TNT1 AA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 180))
			TNT1 AAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 AA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 AAAAA 0 A_CustomMissile("DevastatorSmoke", 0, 0, random(0, 360), 2, random(0, 180))
			TNT1 A 1 A_SpawnItem("ThanatosExp2")
			TNT1 A 1 A_SpawnItem("DevastatorExplosion")
		Stop
	}
}

Actor LowerThanHP : DnD_Boolean { }

actor Cerberus : DnD_BaseRangedBoss {
	obituary "%o didn't approach Cerberus the right way."
	Health 0x7FFFFFFF
	radius 40
	height 110
	mass 2048
	speed 8
	painchance 16
	seesound "Cerberus/See"
	painsound "Cerberus/Pain"
	deathsound "Cerberus/Die"
	activesound "Cerberus/See"
	+ISMONSTER
	Scale 1.15
	+BOSS
	+DONTHURTSPECIES
	+NOTarget
	+NORADIUSDMG
	+DONTRIP
	Species "Cyber"
	MinMissileChance 32
	Tag "Cerberus"
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_CERBERUS)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_EPIC)
		Goto SpawnSetup
	
		IdleState:
			TNT1 A 0 A_JumpIfInventory("LowerThanHp", 1, "Idle2")
			TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(961, 7) / 2, "PainX")
			CERB A 14 A_GiveInventory("DnD_SightChecker", 1)
		loop
		Idle2:
			CERB N 14 A_GiveInventory("DnD_SightChecker", 1)
		loop
		SeeState:
			TNT1 A 0 A_JumpIfInventory("LowerThanHp", 1, "See2")
			TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(961, 7) / 2, "PainX")
		SeeGo:
			CERB B 2 Fast A_Chase
			CERB B 2 Fast A_Chase("", "", CHF_NOPLAYACTIVE)
			CERB C 2 Fast A_Chase
			CERB C 1 Fast A_Chase("", "", CHF_NOPLAYACTIVE)
			CERB D 2 Fast A_Chase
			CERB D 2 Fast A_Chase("", "", CHF_NOPLAYACTIVE)
			CERB E 2 Fast A_Chase
			CERB E 1 Fast A_Chase("", "", CHF_NOPLAYACTIVE)
			CERB F 2 Fast A_Chase
			CERB F 2 Fast A_Chase("", "", CHF_NOPLAYACTIVE)
		Goto See
		See2:
			CERX A 2 Fast A_Chase
			CERX A 2 Fast A_Chase("", "", CHF_NOPLAYACTIVE)
			CERX B 2 Fast A_Chase
			CERX B 1 Fast A_Chase("", "", CHF_NOPLAYACTIVE)
			CERX C 2 Fast A_Chase
			CERX C 2 Fast A_Chase("", "", CHF_NOPLAYACTIVE)
			CERX D 2 Fast A_Chase
			CERX D 1 Fast A_Chase("", "", CHF_NOPLAYACTIVE)
			CERX E 2 Fast A_Chase
			CERX E 2 Fast A_Chase("", "", CHF_NOPLAYACTIVE)
		Goto See
		MissileState:
			TNT1 A 0 A_JumpIfInventory("LowerThanHp", 1, "MissileSingle")
			TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(961, 7) / 2, "PainX")
			CYBR F 0 A_Jump(96, "Pattern1", "Pattern2")
			CERB G 9 Fast A_FaceTarget 
			CERB H 8 Fast A_FaceTarget
			CYBR H 0 A_CustomMissile ("CerberusShot", 45, 24, 0, CMF_AIMOFFSET)
			CYBR H 0 A_CustomMissile ("CerberusShot", 45, -24, 0, CMF_AIMOFFSET)
			TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(961, 7) / 2, "PainX")
			CERB I 8 Fast 
			CERB J 7 Fast
		Goto See
		MissileSingle:
			CERX F 3 Fast A_FaceTarget 
			CERX G 4 Fast A_FaceTarget 
			CRB2 J 0 A_CustomMissile ("CerberusShot", 45, 24)
			CERB N 5 Fast 
			CERB N 3 Fast A_SentinelRefire
		Goto Missile
		Pattern1:
			CERB G 5 Fast A_FaceTarget 
			CERB H 9 Fast A_FaceTarget
			CYBR H 0 A_CustomMissile("CerberusShot", 45, 24, -36, CMF_AIMOFFSET | CMF_AIMDIRECTION, -5)
			CYBR H 0 A_CustomMissile("CerberusShot", 45, -24, 36, CMF_AIMOFFSET | CMF_AIMDIRECTION, -5)
			TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(961, 7) / 2, "PainX")
			CERB I 6 Fast
			CERB J 6 Fast
			CERB H 5 A_FaceTarget
			CYBR H 0 A_CustomMissile("CerberusShot", 45, 24, 0, CMF_AIMOFFSET)
			CYBR H 0 A_CustomMissile("CerberusShot", 45, -24, 0, CMF_AIMOFFSET) 
			TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(961, 7) / 2, "PainX")
			CERB I 6 Fast 
			CERB J 6 Fast
			CERB H 5 A_FaceTarget
			CYBR H 0 A_CustomMissile("CerberusShot", 45, 24, -18, CMF_AIMOFFSET | CMF_AIMDIRECTION, -5)
			CYBR H 0 A_CustomMissile("CerberusShot", 45, -24, -18, CMF_AIMOFFSET | CMF_AIMDIRECTION, -5) 
			TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(961, 7) / 2, "PainX")
			CERB I 6 Fast
			CERB J 6 Fast
			CERB H 5 A_FaceTarget
			CYBR H 0 A_CustomMissile("CerberusShot", 45, 24, 0, CMF_AIMOFFSET)
			CYBR H 0 A_CustomMissile("CerberusShot", 45, -24, 0, CMF_AIMOFFSET) 
			TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(961, 7) / 2, "PainX")
			CERB I 6 Fast
			CERB J 6 Fast
			CERB H 5 A_FaceTarget
			CYBR H 0 A_CustomMissile("CerberusShot", 45, 24, 14, CMF_AIMOFFSET | CMF_AIMDIRECTION, -5)
			CYBR H 0 A_CustomMissile("CerberusShot", 45, -24, 14, CMF_AIMOFFSET | CMF_AIMDIRECTION, -5) 
			TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(961, 7) / 2, "PainX")
			CERB I 6 Fast
			CERB J 6 Fast
			CERB H 5 A_FaceTarget
			CYBR H 0 A_CustomMissile("CerberusShot", 45, 24, 0, CMF_AIMOFFSET)
			CYBR H 0 A_CustomMissile("CerberusShot", 45, -24, 0, CMF_AIMOFFSET) 
			TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(961, 7) / 2, "PainX")
			CERB I 6 Fast
			CERB J 6 Fast
		Goto See
		Pattern2:
			CERB I 6 Fast
			CERB J 6 Fast A_FaceTarget
			CYBR H 0 A_CustomMissile("CerberusShot", 45, -24, 0, CMF_AIMOFFSET) 
			TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(961, 7) / 2, "PainX")
			CERB G 5 Fast A_FaceTarget 
			CERB H 9 Fast A_FaceTarget
			CYBR H 0 A_CustomMissile("CerberusShot", 45, 24, -9, CMF_AIMOFFSET | CMF_AIMDIRECTION, -5)
			TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(961, 7) / 2, "PainX")
			CERB I 6 Fast
			CERB J 6 Fast A_FaceTarget
			CYBR H 0 A_CustomMissile("CerberusShot", 45, -24, 0, CMF_AIMOFFSET) 
			TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(961, 7) / 2, "PainX")
			CERB G 5 Fast A_FaceTarget 
			CERB H 9 Fast A_FaceTarget
			CYBR H 0 A_CustomMissile("CerberusShot", 45, 24, 0, CMF_AIMOFFSET | CMF_AIMDIRECTION, -5)
			//CYBR H 0 A_CustomMissile("CerberusShot", 45, -24, 0, CMF_AIMOFFSET | CMF_AIMDIRECTION, -5)
			TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(961, 7) / 2, "PainX")
			CERB I 6 Fast
			CERB J 6 Fast A_FaceTarget
			CYBR H 0 A_CustomMissile("CerberusShot", 45, -24, 0, CMF_AIMOFFSET) 
			TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(961, 7) / 2, "PainX")
			CERB G 5 Fast A_FaceTarget 
			CERB H 9 Fast A_FaceTarget
			CYBR H 0 A_CustomMissile("CerberusShot", 45, 24, -9, CMF_AIMOFFSET | CMF_AIMDIRECTION, -5)
			TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(961, 7) / 2, "PainX")
		Goto See
		PainState:
			TNT1 A 0 A_JumpIfHealthLower (ACS_ExecuteWithResult(961, 7) / 2, "PainX")
			CERB K 6 Fast A_Pain
			CERB L 6 Fast A_JumpIfHealthLower (ACS_ExecuteWithResult(961, 7) / 2, "PainX")
		goto See
		PainX:
			TNT1 A 0 A_GiveInventory("LowerThanHp", 1)
			TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
			TNT1 A 0 A_ChangeFlag("MISSILEMORE", 1)
			TNT1 A 0 A_ChangeFlag("MISSILEEVENMORE", 1)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_AGGRESSIVE, DND_NOPAIN, -1, -1)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_RAGE, -1, -1, -1)
			CERB K 7 Fast A_Pain
			CERB LM 7 Fast
		goto Missile
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			CERX H 6 A_Scream
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			CERX I 6 A_Fall
			TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItem("NashGore_FlyingBlood",0,0,0,0)
			CERX J 6
			TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItem("NashGore_FlyingBlood",0,0,0,0)
			CERX KKKKKKKKKKKKKKKKKKKKKKKKKKKK 2 A_SpawnItemEx("NashGore_FlyingBlood",random[Cerberus](25,-25),(random[Cerberus](-1,1)*25)+random[Cerberus](-6,6),random[Cerberus](8,24),random[Cerberus](2,4),random[Cerberus](-2,2),random[Cerberus](-1,3))
			TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("NashGore_FlyingBlood",random[Cerberus](25,-25),(random[Cerberus](-1,1)*25)+random[Cerberus](-6,6),random[Cerberus](8,24),random[Cerberus](2,4),random[Cerberus](-2,2),random[Cerberus](-1,3))
			CERX L 10
			TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("NashGore_FlyingBlood",random[Cerberus](25,-15),(random[Cerberus](-1,1)*25)+random[Cerberus](-6,6),random[Cerberus](8,24),random[Cerberus](2,4),random[Cerberus](-2,2),random[Cerberus](-1,3))
			CERX M 10
			TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("NashGore_FlyingBlood",random[Cerberus](25,-5),(random[Cerberus](-1,1)*25)+random[Cerberus](-6,6),random[Cerberus](8,24),random[Cerberus](2,4),random[Cerberus](-2,2),random[Cerberus](-1,3))
			CERX N 10
			TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("NashGore_FlyingBlood",random[Cerberus](25,5),(random[Cerberus](-1,1)*25)+random[Cerberus](-6,6),random[Cerberus](8,24),random[Cerberus](2,4),random[Cerberus](-2,2),random[Cerberus](-1,3))
			CERX O 10
			TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("NashGore_FlyingBlood",random[Cerberus](25,15),(random[Cerberus](-1,1)*25)+random[Cerberus](-6,6),random[Cerberus](8,24),random[Cerberus](2,4),random[Cerberus](-2,2),random[Cerberus](-1,3))
			CERX P 10
			TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("NashGore_FlyingBlood",25,(random[Cerberus](-1,1)*25)+random[Cerberus](-6,6),random[Cerberus](4,12),random[Cerberus](8,4),random[Cerberus](-2,2),random[Cerberus](-1,3))
			CERX Q 10
			TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("NashGore_FlyingBlood",random[Cerberus](25,35),(random[Cerberus](-1,1)*25)+random[Cerberus](-6,6),random[Cerberus](8,24),random[Cerberus](2,4),random[Cerberus](-2,2),random[Cerberus](-1,3))
			CERX Q -1 A_KillMaster
		stop
	}
}

Actor CerberusExp1 : BaseExplosionDamage {
	DamageType "ExplosiveFire"
	Stamina 36
	Obituary "%o didn't approach Cerberus the right way."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(96, 128, 0)
		Stop
	}
}

Actor CerberusExp2 : BaseExplosionDamage {
	DamageType "ExplosiveFire"
	Stamina 36
	Obituary "%o didn't approach Cerberus the right way."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(32, 96, 0)
		Stop
	}
}

Actor CerberusExp3 : BaseExplosionDamage {
	DamageType "ExplosiveFire"
	Stamina 36
	Obituary "%o didn't approach Cerberus the right way."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(16, 72, 0)
		Stop
	}
}

Actor CerberusExp4 : BaseExplosionDamage {
	DamageType "ExplosiveFire"
	Stamina 36
	Obituary "%o didn't approach Cerberus the right way."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(8, 56, 0)
		Stop
	}
}

actor CerberusShot { 
	Decal Scorch
	radius 8
	height 16
	speed 24
	damage (10 * random(8, 10))
	DamageType "Fire"
	Stamina 32
	renderstyle Add
	Scale 0.75
	seesound "Cerberus/Fire"
	Deathsound "Cerberus/Explode"
	PROJECTILE
	+DONTBLAST
	states {
		Spawn:   
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 A_PlaySound("Cerberus/MissileFly", 7, 1.0, 1)
		SpawnLoop:
			NAPP ABCDE 2 bright A_SpawnItemEx("BFireTrail",0+random[Cerberus](-5,5),0+random[Cerberus](-5,5),0+random[Cerberus](-5,5),0,0,1,0,128)
		loop
		Death:
			TNT1 A 0 A_StopSound(7)
			LLSX A 5 Bright A_SpawnItem("CerberusExp1")
			LLSX BCD 4 Bright A_SpawnItem("CerberusExp2")
			LLSX EFG 3 Bright A_SpawnItem("CerberusExp3")
			LLSX HI 3 Bright A_SpawnItem("CerberusExp4")
			LLSX J 3 Bright
			LLSX K 3
		stop
	}
}

ACTOR DeathWyvern : DnD_BaseRangedBoss {
	Health 0x7FFFFFFF
	PainChance 128
	Speed 15
	Height 80
	Radius 24
	Mass 2048
	PainChance 8
	Species "Cyber"
	+NOGRAVITY
	+FLOAT
	+BOSS
	+ISMONSTER
	+MISSILEMORE
	+QUICKTORETALIATE
    +NOGRAVITY
    +FLOAT
	SeeSound "Dragon/See"
	PainSound "Dragon/Pain"
	DeathSound "Dragoon/Die"
	ActiveSound "Dragon/See"
	Obituary "%o couldn't withstand the toxicity of a Death Wyvern."
	BloodColor "10 A5 10"
	Tag "Death Wyvern"
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_DEATHWYVERN)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_VERYRARE)
		Goto SpawnSetup
	
		IdleState:
			DRAG D 10 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			DRAG AAA 2 Fast A_Chase
			TNT1 A 0 A_Playsound("Dragon/Wing", CHAN_5)
			DRAG BBBCCCDDDCCCBBB 2 Fast A_Chase
		Goto See
		PainState:
			DRAG F 10 Fast A_Pain
		Goto See
		MissileState:
			TNT1 A 0 A_GiveInventory("WyvernGlideDecider", 1)
			TNT1 A 0 A_FaceTarget
			DRAG E 3 Fast A_GiveInventory("WyvernGlider", 1)
			DRAG E 5 Fast A_CustomMissile("WyvernPoisonBlast", 32)
			TNT1 A 0 A_FaceTarget
			DRAG E 3 Fast A_GiveInventory("WyvernGlider", 1)
			DRAG E 5 Fast A_CustomMissile("WyvernPoisonBlast", 32)
			TNT1 A 0 A_FaceTarget
			DRAG E 3 Fast A_GiveInventory("WyvernGlider", 1)
			TNT1 A 0 A_ScaleVelocity(0.25)
			TNT1 A 0 A_TakeInventory("DnD_Boolean", 1)
			DRAG E 5 Fast A_CustomMissile("WyvernPoisonBlast", 32)
		Goto See
		XDeathState:
		DeathState:
			DRAG G 5 A_Scream
			DRAG H 4 A_NoBlocking
			TNT1 A 0 A_KillMaster
			DRAG I 4 ACS_NamedExecuteAlways("DnD Check Corpse Landing")
			DRAG J 4
		Wait
		CorpseLand:
			DRAG KL 5
			DRAG M -1
		Stop
	}
}

ACTOR WyvernPoisonBlast {
	Speed 32
	Radius 12
	Height 10
	Damage (random(10, 12) * 5)
	DamageType "Poison"
	Stamina 128
	Projectile
	RenderStyle Add
	SeeSound "MageStaffFire"
	DeathSound "Weapons/glahit"
	var int user_a;

	States {
		Spawn:
			D2FX ABCDEF 4 Bright
		Loop
		Death:
			TNT1 A 0 A_Explode(64, 96, 0, 0, 32)
			D5FX GHI 4 Bright
			TNT1 A 0 A_Jump(256, "1", "2", "3", "4")
		1:
			TNT1 A 0 A_SetUserVar("user_a", random(0, 360))
			TNT1 A 0 A_SpawnItemEx("WyvernPostBlast", 64 * cos(user_a), 64 * sin(user_a), 0, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
		2:
			TNT1 A 0 A_SetUserVar("user_a", random(0, 360))
			TNT1 A 0 A_SpawnItemEx("WyvernPostBlast", 64 * cos(user_a), 64 * sin(user_a), 0, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
		3:
			TNT1 A 0 A_SetUserVar("user_a", random(0, 360))
			TNT1 A 0 A_SpawnItemEx("WyvernPostBlast", 64 * cos(user_a), 64 * sin(user_a), 0, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
		4:
			TNT1 A 0 A_SpawnItemEx("GreenSmallFlash_Smaller")
			TNT1 A 0 A_SpawnItemEx("GreenParticleSpawner")
			TNT1 A 0 A_SetUserVar("user_a", random(0, 360))
			TNT1 A 0 A_SpawnItemEx("WyvernPostBlast", 64 * cos(user_a), 64 * sin(user_a), 0, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SetUserVar("user_a", random(0, 360))
			D5FX J 4 Bright A_SpawnItemEx("WyvernPostBlast", 64 * cos(user_a), 64 * sin(user_a), 0, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
			D5FX KL 3 Bright
		Stop
	}
}

Actor WyvernPostBlast {
	Projectile
	+THRUACTORS
	Height 1
	Radius 1
	DamageType "Poison"
	Stamina 128
	Scale 0.75
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_Jump(256, "1", "2", "3", "4", "5", "6")
		1:
			TNT1 A 16
		Goto GoOff
		2:
			TNT1 A 28
		Goto GoOff
		3:
			TNT1 A 40
		Goto GoOff
		4:
			TNT1 A 52
		Goto GoOff
		5:
			TNT1 A 64
		Goto GoOff
		6:
			TNT1 A 76
		Goto GoOff
		GoOff:
			TNT1 A 0 A_SpawnItemEx("GreenSmallFlash_Smaller")
			TNT1 A 0 A_SpawnItemEx("GreenParticleSpawner")
			TNT1 A 0 A_PlaySound("Weapons/glahit")
			D5FX GH 4 Bright
			TNT1 A 0 A_Explode(64, 96, 0, 0, 32)
			D5FX IJ 4 Bright
			D5FX KL 3 Bright
		Stop
	}
}

Actor WyvernGlider : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_Jump(128, "Nothing")
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "Other")
			TNT1 A 0 A_ChangeVelocity(9 * cos(angle + 90), 9 * sin(angle + 90), velz, CVF_REPLACE)
		Stop
		Other:
			TNT1 A 0 A_ChangeVelocity(9 * cos(angle - 90), 9 * sin(angle - 90), velz, CVF_REPLACE)
		Stop
		Nothing:
			TNT1 A 0
		Stop
	}
}

Actor WyvernGlideDecider : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_Jump(128, "Other")
		Stop
		Other:
			TNT1 A 0 A_GiveInventory("DnD_Boolean", 1)
		Stop
	}
}