// Zombiemen

Actor Teron : DnD_BaseRangedMonster_NoRes {
	Health 0x7FFFFFFF
    GibHealth -10
	DropItem "ShotgunPickup_Drop"
	Radius 20
	Height 56
	Speed 10
	PainChance 64
	SeeSound "FancyZombie/sight"
	PainSound "FancyZombie/pain"
	DeathSound "FancyZombie/death"
	ActiveSound "FancyZombie/idle"
	Obituary "%o fell victim to Teron the Hoarder."
	Mass 256
	Tag "Teron the Hoarder"
	Scale 1.125
	+ISMONSTER
	+DONTRIP
	+NOTARGET
	+NOINFIGHTING
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_TERON)
		Goto SpawnSetup
		
		IdleState:
			UE00 A 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE00 B 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE00 C 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE00 D 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			UE00 ABCD 4 Fast A_Chase
		Goto See
		MissileState:
			TNT1 A 0 A_JumpIfInventory("DnD_Info", 8, "NeedReload")
			TNT1 A 0 A_Jump(128, "SpreadShot")
			UE00 E 6 Fast A_FaceTarget
			TNT1 A 0 A_SpawnItemEx ("shotguncasing", -8, 7, 26, 4, 0, frandom(3.0, 5.0), random(-80, -90))
			TNT1 AAAAAAAAA 0 A_CustomMissile("RapidFireBullet", 32, 0, frandom(-11.2, 11.2), 0, frandom(-7.1, 7.1))
			TNT1 A 0 A_GiveInventory("DnD_Info", 1)
			UE00 F 7 Fast Bright A_PlaySound("weapons/autosgfire", CHAN_WEAPON)
			UE00 E 6 Fast
		Goto See
		SpreadShot:
			UE00 E 6 Fast A_FaceTarget
			TNT1 A 0 A_SpawnItemEx ("shotguncasing", -8, 7, 26, 4, 0, frandom(3.0, 5.0), random(-80, -90))
			TNT1 AAAAAAAAA 0 A_CustomMissile("RapidFireBullet", 32, 0, frandom(-11.2, 11.2), 0, frandom(-7.1, 7.1))
			TNT1 A 0 A_GiveInventory("DnD_Info", 1)
			UE00 F 7 Fast Bright A_PlaySound("weapons/autosgfire", CHAN_WEAPON)
			TNT1 A 0 A_FaceTarget
			UE00 E 6 Fast A_SetAngle(angle + 9.75 + frandom(0, 9.75))
			TNT1 A 0 A_SpawnItemEx ("shotguncasing", -8, 7, 26, 4, 0, frandom(3.0, 5.0), random(-80, -90))
			TNT1 AAAAAAAAA 0 A_CustomMissile("RapidFireBullet", 32, 0, frandom(-11.2, 11.2), 0, frandom(-7.1, 7.1))
			TNT1 A 0 A_GiveInventory("DnD_Info", 1)
			UE00 F 7 Fast Bright A_PlaySound("weapons/autosgfire", CHAN_WEAPON)
			TNT1 A 0 A_FaceTarget
			UE00 E 6 Fast A_SetAngle(angle - 9.75 - frandom(0, 9.75))
			TNT1 A 0 A_SpawnItemEx ("shotguncasing", -8, 7, 26, 4, 0, frandom(3.0, 5.0), random(-80, -90))
			TNT1 AAAAAAAAA 0 A_CustomMissile("RapidFireBullet", 32, 0, frandom(-11.2, 11.2), 0, frandom(-7.1, 7.1))
			TNT1 A 0 A_GiveInventory("DnD_Info", 1)
			UE00 F 7 Fast Bright A_PlaySound("weapons/autosgfire", CHAN_WEAPON)
		Goto See
		NeedReload:
			UE00 D 8 Fast A_PlaySound("weapons/autosgopen")
			UE00 DDDD 8 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("weapons/autosgload")
			TNT1 A 0 A_TakeInventory("DnD_Info", 0)
			UE00 DD 8 Fast A_FaceTarget
		Goto See
		PainState:
			UE00 G 3 Fast
			UE00 G 3 Fast A_Pain
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low_Delayed", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			UE00 H 5
			UE00 I 5 A_Scream
			UE00 J 5 A_NoBlocking
			UE00 K 5
			UE00 L -1
		Stop
	}
}

Actor Gant : DnD_BaseHybridMonster_NoRes {
	Health 0x7FFFFFFF
    GibHealth -10
	DropItem "SuperShotgunPickup_Drop"
	Radius 24
	Height 60
	Speed 10
	PainChance 64
	SeeSound "Gant/See"
	PainSound "Gant/pain"
	DeathSound "Gant/Die"
	ActiveSound "Gant/Idle"
	Obituary "%o fell victim to Gant the Cruel."
	Mass 512
	Tag "Gant the Cruel"
	BloodColor "88 16 88"
	+ISMONSTER
	+DONTRIP
	+NOTARGET
	+NOINFIGHTING
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_GANT)
		Goto SpawnSetup
		
		IdleState:
			UE01 A 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE01 B 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE01 C 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE01 D 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			UE01 A 2 Fast A_Chase("Melee", "")
			UE01 A 2 Fast A_Chase
			UE01 B 2 Fast A_Chase("Melee", "")
			UE01 B 2 Fast A_Chase
			UE01 C 2 Fast A_Chase("Melee", "")
			UE01 C 2 Fast A_Chase
			UE01 D 2 Fast A_Chase("Melee", "")
			UE01 D 2 Fast A_Chase
		Goto See
		MeleeState:
			UE01 H 8 Fast A_FaceTarget
			TNT1 A 0 A_CustomMissile("GantBash", 32)
			UE01 I 4 Fast A_FaceTarget
			UE01 J 4 Fast
		Goto See
		MissileState:
			UE01 E 7 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("Gant/Fire", CHAN_WEAPON)
			TNT1 AAAAA 0 A_CustomMissile("Gant_AcidShot", 40, 9, frandom(-5.25, 5.25), CMF_OFFSETPITCH, frandom(-3.25, 3.25))
			UE01 F 4 Fast Bright A_FaceTarget
			UE01 G 10 Fast A_FaceTarget
		Goto See
		PainState:
			UE01 K 3 Fast
			UE01 K 3 Fast A_Pain
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low_Delayed", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			UE01 L 7
			UE01 M 6 A_Scream
			UE01 N 5 A_NoBlocking
			UE01 OPQ 4
			UE01 R -1
		Stop
	}
}

actor GantBash : PaladinBash {
	DamageType "Melee"
	Stamina 1
	damage (8 * random(2, 3))
	deathsound "weapons/vblhit"
	States {
		spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			TNT1 AA 1 A_SeekerMissile(90, 90, SMF_PRECISE)
			stop
		death:
			TNT1 A 0 A_Quake(4, 17, 0, 256)
			TNT1 A 1 ACS_NamedExecuteWithResult("DnD Projectile Push", 20)
			TNT1 A 1
		stop
	}
}

Actor Gant_AcidShot {
	PROJECTILE
	Damage (random(7, 9))
	DamageType "Poison"
	Stamina 128
	Deathsound "Gant/Hit"
	Speed 30
	Height 16
	Radius 8
	Renderstyle Add
	Scale 0.75
	+DONTBLAST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnState:
			ACID A 2 Bright A_SpawnItemEx("Gant_AcidShotTrail", -8)
		Loop
		Death:
			TNT1 A 0 A_SetScale(0.4)
			TNT1 A 0 A_CustomMissile("Gant_AcidCloud", 0, 0, frandom(0, 360), CMF_ABSOLUTEANGLE | CMF_TRACKOWNER)
			BPLO ABCDEFGHIJKLM 1 Bright
		Stop
	}
}

Actor Gant_AcidCloud : TorturedSoulPoison {
	Renderstyle Add
    Radius 24 
    Height 6 
    Speed 4 
    Damage (random(1, 2)) 
	DamageType "Poison"
	Stamina 128
	BounceCount 6
	BounceType Hexen
}

Actor Gant_AcidShotTrail {
	Renderstyle Add
	Alpha 1.0
	Scale 0.5
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			ACID BBCCDDEEFF 1 Bright A_FadeOut(0.075)
		Loop
	}
}

Actor Bronn : DnD_BaseHybridMonster_NoRes {
	Health 0x7FFFFFFF
    GibHealth -10
	DropItem "MachinegunPickup_Drop"
	Radius 24
	Height 60
	Speed 10
	PainChance 64
	MeleeRange 192
	SeeSound "Bronn/See"
	PainSound "Bronn/pain"
	DeathSound "Bronn/die"
	ActiveSound "Bronn/See"
	Obituary "%o fell victim to Bronn the Mad."
	Mass 768
	Tag "Bronn the Mad"
	BloodColor "88 16 88"
	+ISMONSTER
	+NODROPOFF
	+DONTRIP
	+NOTARGET
	+NOINFIGHTING
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_BRONN)
		Goto SpawnSetup
		
		IdleState:
			UE02 A 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE02 B 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE02 C 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE02 D 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			UE02 A 2 Fast A_Chase("Melee", "")
			UE02 A 2 Fast A_Chase
			UE02 B 2 Fast A_Chase("Melee", "")
			UE02 B 2 Fast A_Chase
			UE02 C 2 Fast A_Chase("Melee", "")
			UE02 C 2 Fast A_Chase
			UE02 D 2 Fast A_Chase("Melee", "")
			UE02 D 2 Fast A_Chase
		Goto See
		MeleeState:
			TNT1 A 0 A_Jump(128, "MissileState")
			TNT1 A 0 A_JumpIfCloser(80, "CloseMelee")
		DashMelee:
			UE02 C 2 Fast A_FaceTarget
			TNT1 A 0 ACS_ExecuteAlways(971, 0, 25)
			UE02 DAB 2 Fast
			UE02 H 5 Fast
			UE02 I 1 Fast
			UE02 I 4 Fast A_CustomMissile("BronnBash", 32, 0, 0, CMF_AIMDIRECTION)
			UE02 J 4 Fast A_FaceTarget
		Goto See
		CloseMelee:
			UE02 H 8 Fast A_FaceTarget
			TNT1 A 0 A_CustomMissile("BronnBash", 32)
			UE02 I 4 Fast A_FaceTarget
			UE02 J 4 Fast
		Goto See
		MissileState:
			TNT1 A 0 A_Jump(112, "Lobbed")
		MissileGo:
			UE02 E 10 Fast A_FaceTarget
		MissileLoop:
			TNT1 A 0 A_PlaySound("Gant/Fire", CHAN_WEAPON)
			TNT1 A 0 A_CustomMissile("Gant_AcidShot", 48, 12, frandom(-3, 3), CMF_OFFSETPITCH, frandom(-1.75, 1.75))
			UE02 F 4 Fast Bright A_FaceTarget
			UE02 E 2 Fast Bright A_FaceTarget
			TNT1 A 0 A_JumpIfCloser(144, "DashMelee")
			UE02 G 5 Fast A_MonsterRefire(64, "See")
		Loop
		Lobbed:
			TNT1 A 0 A_JumpIfCloser(256, "ContinueLob")
		Goto MissileGo
		ContinueLob:
			UE02 EEE 8 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("Gant/Fire", CHAN_WEAPON)
			UE02 F 4 Fast Bright A_CustomMissile("Bronn_AcidShot", frandom(47, 49), 12, frandom(-4.25, 4.25), CMF_OFFSETPITCH, frandom(8, 15.0))
			UE02 E 4 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("Gant/Fire", CHAN_WEAPON)
			UE02 F 4 Fast Bright A_CustomMissile("Bronn_AcidShot", frandom(47, 49), 12, frandom(-4.25, 4.25), CMF_OFFSETPITCH, frandom(8, 15.0))
			UE02 E 4 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("Gant/Fire", CHAN_WEAPON)
			UE02 F 4 Fast Bright A_CustomMissile("Bronn_AcidShot", frandom(47, 49), 12, frandom(-4.25, 4.25), CMF_OFFSETPITCH, frandom(8, 15.0))
			UE02 E 4 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("Gant/Fire", CHAN_WEAPON)
			UE02 F 4 Fast Bright A_CustomMissile("Bronn_AcidShot", frandom(47, 49), 12, frandom(-4.25, 4.25), CMF_OFFSETPITCH, frandom(8, 15.0))
			UE02 E 4 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("Gant/Fire", CHAN_WEAPON)
			UE02 F 4 Fast Bright A_CustomMissile("Bronn_AcidShot", frandom(47, 49), 12, frandom(-4.25, 4.25), CMF_OFFSETPITCH, frandom(8, 15.0))
			UE02 E 4 Fast A_FaceTarget
			UE02 G 9 Fast
		Goto See
		PainState:
			UE02 K 3 Fast
			UE02 K 3 Fast A_Pain
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low_Delayed", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			UE02 L 7
			UE02 M 6 A_Scream
			UE02 N 5 A_NoBlocking
			UE02 OP 4
			UE02 Q -1
		Stop
	}
}

actor BronnBash : GantBash {
	DamageType "Melee"
	Stamina 1
	damage (6 * random(4, 7))
	States {
		death:
			TNT1 A 0 A_Quake(4, 17, 0, 256)
			TNT1 A 1 ACS_NamedExecuteWithResult("DnD Projectile Push", 24)
			TNT1 A 1
		stop
	}
}

Actor Bronn_AcidShot : Gant_AcidShot {
	Speed 16
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnState:
			ACID AAAA 2 Bright A_SpawnItemEx("Gant_AcidShotTrail", -8)
			TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
		SpawnLoop:
			ACID A 2 Bright A_SpawnItemEx("Gant_AcidShotTrail", -8)
		Loop
		Death:
			TNT1 A 0 A_SetScale(0.4)
			TNT1 A 0 A_Stop
			TNT1 A 0 A_ScaleVelocity(0)
			TNT1 A 0 A_CustomMissile("Gant_AcidCloud", 0, 0, frandom(0, 360), CMF_ABSOLUTEANGLE | CMF_TRACKOWNER)
			TNT1 A 0 A_Explode(16, 56, 0)
			BPLO ABCDEFGHIJKLM 1 Bright
		Stop
	}
}

Actor Vaaj : DnD_BaseRangedMonster_NoRes {
	Health 0x7FFFFFFF
    GibHealth -10
	Radius 20
	Height 58
	Speed 8
	PainChance 96
	SeeSound "Vaaj/See"
	PainSound "Vaaj/pain"
	DeathSound "Vaaj/Die"
	ActiveSound "Vaaj/See"
	Obituary "%o fell victim to Vaaj the Temptress."
	Mass 256
	Tag "Vaaj the Temptress"
	Species "Imp"
	var int user_count;
	Scale 1.1
	+ISMONSTER
	+NOTARGET
	+NOINFIGHTING
	+DONTHURTSPECIES
	+DONTHARMSPECIES
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_VAAJ)
		Goto SpawnSetup
		
		IdleState:
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE03 AA 4 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE03 BB 4 A_Wander
		loop
		SeeState:
			UE03 AB 3 A_Chase
			UE03 B 3 A_FastChase
		loop
		MissileState:
			TNT1 A 0 A_Jump(96, "BigCharge")
			UE03 G 3 A_FaceTarget
			UE03 I 3
			TNT1 A 0 A_PlaySound("Vaaj/Attack")
			TNT1 A 0 A_CustomMissile ("PinkBall", 36, 0, 0)
			TNT1 A 0 A_Jump(128, "Skip")
			UE03 J 1
			TNT1 A 0 A_CustomMissile ("PinkBall", 36, 0, -8)
			TNT1 A 0 A_CustomMissile ("PinkBall", 36, 0, 8)
		Skip:
			UE03 J 5 A_FaceTarget
		goto See
		BigCharge:
			TNT1 A 0 A_SetUserVar("user_count", 0)
			TNT1 A 0 A_PlaySound("weapons/deathstfire2")
		BigChargeLoop:
			TNT1 A 0 A_JumpIf(user_count == 15, "BigChargeFinish")
			TNT1 A 0 A_FaceTarget
			TNT1 AA 0 A_SpawnItemEx("Vaaj_ChargeFX", frandom(-48, 48), frandom(-48, 48), frandom(0, 4), 0, 0, frandom(1.875, 3.5))
			UE03 I 4 Bright A_SpawnItemEx("Vaaj_ChargeFX", frandom(-48, 48), frandom(-48, 48), frandom(0, 4), 0, 0, frandom(1.875, 3.5))
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		BigChargeFinish:
			TNT1 A 0 A_PlaySound("weapons/deathstfire")
			UE03 J 9 Bright A_CustomMissile("VaajBigBall", 36)
		Goto See
		PainState:
			UE03 H 2
			UE03 H 2 A_Pain
			UE03 GGG 2 A_FastChase
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low_Delayed", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			UE03 K 6 A_Scream
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_SpawnItemEx("VaajSoulFX", 0, 0, 24)
			UE03 LMN 6
			UE03 OP 6
			UE03 Q -1
		Stop
	}
}

Actor Vaaj_ChargeFX {
	+NOINTERACTION
	+CLIENTSIDEONLY
	+VISIBILITYPULSE
	RenderStyle Add
	Alpha 0.4
	Scale 0.01
	States {
		Spawn:
			FLAR D 25 Bright
		Stop
	}
}

Actor VaajBigBall {
	PROJECTILE
	Damage (128)
	Speed 18
	Height 40
	Radius 20
	Scale 0.625
	DeathSound "Deathray/LaserExplode2"
	+PIERCEARMOR
	+FORCERADIUSDMG
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Vaaj Pull")
		SpawnState:
			SUCP HI 2 Bright A_SpawnItemEx("VaajBigBall_Trail", -8)
		loop
		Death:
			TNT1 A 0 A_SpawnItemEx("VaajBigBall_ExplodeFX")
			TNT1 A 0 A_Quake(5, 24, 0, 192)
			TNT1 A 5 A_Explode(160, 192, 0)
		Stop
	}
}

Actor VaajBigBall_ExplodeFX {
	Scale 0.75
	RenderStyle Add
	+NOINTERACTION
	+CLIENTSIDEONLY
	Translation "0:255=%[0.00,0.00,0.00]:[1.65,0.72,1.84]"
	States {
		Spawn:
			BFOG ABCDEF 4 Bright
		Stop
	}
}

Actor VaajBigBall_Trail {
	+NOINTERACTION
	+CLIENTSIDEONLY
	+VISIBILITYPULSE
	RenderStyle Add
	Alpha 0.75
	Scale 0.625
	States {
		Spawn:
			SUCP HI 2 Bright A_FadeOut(0.0875)
		Loop
	}
}

Actor PinkBallTrail {
	+NOINTERACTION
	+CLIENTSIDEONLY
	+VISIBILITYPULSE
	RenderStyle Add
	Alpha 0.4
	States {
		Spawn:
			SUCP ABCD 1
		Stop
	}
}

actor PinkBall {
	radius 4
	height 8
	speed 30
	damage (10)
	DamageType "MagicalVoid"
	Stamina 8
	renderstyle Add
	deathsound "imp/shotx"
	PROJECTILE
	+PIERCEARMOR
	states {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnState:
			SUCP AABBCCDD 1 A_SpawnItemEx("PinkBallTrail", -8)
		loop
		Death:
			SUCP EFG 6 bright
		stop
	}
}

Actor VaajSoulFX {
	+CLIENTSIDEONLY
	+NOINTERACTION
	RenderStyle Add
	Translation "0:255=%[0.00,0.00,0.00]:[1.88,0.68,1.91]"
	Alpha 1.0
	States {
		Spawn:
			SHGH ABCDEFG 3 Bright A_FadeOut(0.05)
		Stop
	}
}

Actor Remus : DnD_BaseHybridMonster_NoRes {
	Health 0x7FFFFFFF
    GibHealth -10
	Radius 30
	Height 64
	Speed 13
	PainChance 80
	MeleeRange 120
	SeeSound "Remus/See"
	PainSound "Remus/pain"
	DeathSound "Remus/die"
	Obituary "%o fell victim to Remus the Broken."
	Mass 1576
	MaxTargetRange 384
	Tag "Remus the Broken"
	Species "Demon"
	+ISMONSTER
	+NODAMAGETHRUST
	+NOTARGET
	+NOINFIGHTING
	+NORADIUSDMG
	+DONTHURTSPECIES
	+DONTHARMSPECIES
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_REMUS)
		Goto SpawnSetup
		
		IdleState:
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE04 A 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE04 B 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE04 C 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE04 D 5 A_Wander
		Loop
		SeeState:
			TNT1 A 0 A_GiveInventory("DnD_Info", 1)
			UE04 AA 2 A_Chase
		SeeTeleportSkip:
			TNT1 A 0 A_GiveInventory("DnD_Info", 1)
			UE04 BB 2 A_Chase
			TNT1 A 0 A_GiveInventory("DnD_Info", 1)
			UE04 CC 2 A_Chase
			TNT1 A 0 A_TakeInventory("DnD_Info", 1)
			UE04 DD 2 A_Chase
		Goto See
		MissileState:
			TNT1 A 0 A_UnSetShootable
			TNT1 A 0 A_PlaySound("Remus/tele")
			TNT1 A 0 A_JumpIfInventory("DnD_Info", 3, "TeleportD")
			TNT1 A 0 A_JumpIfInventory("DnD_Info", 2, "TeleportC")
			TNT1 A 0 A_JumpIfInventory("DnD_Info", 1, "TeleportB")
		TeleportA:
			UEA4 A 1 bright A_Chase("", "")
			UEB4 B 1 bright A_Chase("", "")
			UEC4 C 1 bright A_Chase("", "")
			UED4 D 1 bright A_Chase("", "")
			TNT1 AAAAAAAAAAAAAAAAA 1 A_Chase("", "")
			UED4 A 1 bright A_Chase("", "")
			UEC4 B 1 bright A_Chase("", "")
			UEB4 C 1 bright A_Chase("", "")
			UEA4 D 1 bright A_Chase("", "")
			TNT1 A 0 A_SetShootable
			TNT1 A 0 A_TakeInventory("DnD_Info", 0)
			UE04 A 2 A_Chase
			UE04 B 2 A_Chase
		Goto TeleportDecide
		TeleportB:
			UEA4 B 1 bright A_Chase("", "")
			UEB4 C 1 bright A_Chase("", "")
			UEC4 D 1 bright A_Chase("", "")
			UED4 A 1 bright A_Chase("", "")
			TNT1 AAAAAAAAAAAAAAAAA 2 A_Chase("", "")
			UED4 A 1 bright A_Chase("", "")
			UEC4 B 1 bright A_Chase("", "")
			UEB4 C 1 bright A_Chase("", "")
			UEA4 D 1 bright A_Chase("", "")
			TNT1 A 0 A_SetShootable
			TNT1 A 0 A_TakeInventory("DnD_Info", 0)
			UE04 A 2 A_Chase
			UE04 B 2 A_Chase
		Goto TeleportDecide
		TeleportC:
			TNT1 A 0 A_UnSetShootable
			TNT1 A 0 A_PlaySound("Remus/tele")
			UEA4 C 1 bright A_Chase("", "")
			UEB4 D 1 bright A_Chase("", "")
			UEC4 A 1 bright A_Chase("", "")
			UED4 B 1 bright A_Chase("", "")
			TNT1 AAAAAAAAAAAAAAAAA 3 A_Chase("", "")
			UED4 A 1 bright A_Chase("", "")
			UEC4 B 1 bright A_Chase("", "")
			UEB4 C 1 bright A_Chase("", "")
			UEA4 D 1 bright A_Chase("", "")
			TNT1 A 0 A_SetShootable
			TNT1 A 0 A_TakeInventory("DnD_Info", 0)
			UE04 A 2 A_Chase
			UE04 B 2 A_Chase
		Goto TeleportDecide
		TeleportD:
			UEA4 A 1 bright A_Chase("", "")
			UEB4 B 1 bright A_Chase("", "")
			UEC4 C 1 bright A_Chase("", "")
			UED4 D 1 bright A_Chase("", "")
			TNT1 AAAAAAAAAAAAAAAAA 4 A_Chase("", "")
			UED4 A 1 bright A_Chase("", "")
			UEC4 B 1 bright A_Chase("", "")
			UEB4 C 1 bright A_Chase("", "")
			UEA4 D 1 bright A_Chase("", "")
			TNT1 A 0 A_SetShootable
			TNT1 A 0 A_TakeInventory("DnD_Info", 0)
			UE04 A 2 A_Chase
			UE04 B 2 A_Chase
		Goto TeleportDecide
		TeleportDecide:
			UE04 B 0 A_Jump(128, "TeleportA", "TeleportB", "TeleportC", "TeleportD")
		Goto See
		MeleeState:
			TNT1 A 0 A_SetShootable
			UE04 NO 3 A_FaceTarget
			UE04 PQ 3 Bright A_FaceTarget
		MeleeLoop:
			TNT1 A 0 A_PlaySound("Enforcer/Hit")
			TNT1 A 0 A_CustomMissile("RemusZapper", 36)
			TNT1 A 0 A_FaceTarget
			TNT1 AAA 0 A_SpawnItemEx("RemusFX", frandom(-radius / 2, radius / 2), frandom(-radius / 2, radius / 2), height / 2 + frandom(-16, 16), frandom(-2, 2), frandom(-2 ,2), frandom(-2 ,2))
			TNT1 A 0 A_CustomMissile("RemusZapProjectile", 36, 0, 0, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("RemusZapProjectile", 36, 0, 60, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("RemusZapProjectile", 36, 0, 120, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("RemusZapProjectile", 36, 0, 180, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("RemusZapProjectile", 36, 0, 240, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("RemusZapProjectile", 36, 0, 300, CMF_AIMDIRECTION)
			UE04 R 2 bright A_CustomMeleeAttack(random(2, 5))
			TNT1 A 0 A_FaceTarget
			TNT1 AAA 0 A_SpawnItemEx("RemusFX", frandom(-radius / 2, radius / 2), frandom(-radius / 2, radius / 2), height / 2 + frandom(-16, 16), frandom(-2, 2), frandom(-2 ,2), frandom(-2 ,2))
			UE04 S 2 bright A_CustomMeleeAttack(random(2, 5))
			TNT1 A 0 A_FaceTarget
			TNT1 AAA 0 A_SpawnItemEx("RemusFX", frandom(-radius / 2, radius / 2), frandom(-radius / 2, radius / 2), height / 2 + frandom(-16, 16), frandom(-2, 2), frandom(-2 ,2), frandom(-2 ,2))
			UE04 T 2 bright A_CustomMeleeAttack(random(2, 5))
			UE04 T 1 Bright A_JumpIf(!ACS_NamedExecuteWithResult("DnD Monster Melee Loop", 96), "MeleeFinish")
			TNT1 A 0 A_PlaySound("Enforcer/Hit")
			TNT1 A 0 A_CustomMissile("RemusZapper", 36)
			TNT1 A 0 A_CustomMissile("RemusZapProjectile", 36, 0, 0, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("RemusZapProjectile", 36, 0, 60, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("RemusZapProjectile", 36, 0, 120, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("RemusZapProjectile", 36, 0, 180, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("RemusZapProjectile", 36, 0, 240, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("RemusZapProjectile", 36, 0, 300, CMF_AIMDIRECTION)
			TNT1 A 0 A_FaceTarget
			TNT1 AAA 0 A_SpawnItemEx("RemusFX", frandom(-radius / 2, radius / 2), frandom(-radius / 2, radius / 2), height / 2 + frandom(-16, 16), frandom(-2, 2), frandom(-2 ,2), frandom(-2 ,2))
			UE04 U 2 bright A_CustomMeleeAttack(random(2, 5))
			TNT1 A 0 A_FaceTarget
			TNT1 AAA 0 A_SpawnItemEx("RemusFX", frandom(-radius / 2, radius / 2), frandom(-radius / 2, radius / 2), height / 2 + frandom(-16, 16), frandom(-2, 2), frandom(-2 ,2), frandom(-2 ,2))
			UE04 V 2 bright A_CustomMeleeAttack(random(2, 5))
			TNT1 A 0 A_FaceTarget
			TNT1 AAA 0 A_SpawnItemEx("RemusFX", frandom(-radius / 2, radius / 2), frandom(-radius / 2, radius / 2), height / 2 + frandom(-16, 16), frandom(-2, 2), frandom(-2 ,2), frandom(-2 ,2))
			UE04 W 2 bright A_CustomMeleeAttack(random(2, 5))
			UE04 W 1 Bright A_JumpIf(!ACS_NamedExecuteWithResult("DnD Monster Melee Loop", 96), "MeleeFinish")
		Loop
		MeleeFinish:
			UE04 PQ 1 Bright A_FaceTarget
			UE04 ON 2 A_FaceTarget
		goto See
		PainState:
			UE04 E 3
			UE04 E 2 A_Pain
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low", 0, 0, 32, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			UE04 F 4 A_Scream
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low", 0, 0, 32, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			UE04 G 8 A_NoBlocking
			UE04 HIJKL 8
			UE04 M -1
		Stop
	}
}

Actor RemusZapProjectile {
	Projectile
	Damage (18)
	DamageType "Lightning"
	Stamina 256
	Speed 28
	Height 8
	Radius 4
	Renderstyle Add
	Scale 0.5
	+DONTBLAST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			FX16 ABCABC 3 Bright
		Stop
		Death:
			FX16 GHIJKL 2 Bright
		Stop
	}
}

Actor RemusZapper {
	Projectile
	Speed 0
	Height 2
	Radius 1
	DamageType "Lightning"
	Stamina 256
	+NODAMAGETHRUST
	+DONTBLAST
    States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1
		Death:
			TNT1 A 1 A_Explode(random(9, 16), 108, 0)
		Stop	
	}
}

Actor RemusFX {
	RenderStyle Add
	Alpha 1.0
	Scale 0.1
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
		SpawnLoop:
			SPKB A 1 Bright A_FadeOut(0.0875)
		Loop
	}
}

Actor Ssrath : DnD_BaseHybridMonster_NoRes {
	Health 0x7FFFFFFF
    GibHealth -10
	Radius 32
	Height 56
	Speed 16
	PainChance 96
	SeeSound "Ssrath/See"
	PainSound "Ssrath/pain"
	DeathSound "Ssrath/die"
	ActiveSound "Ssrath/active"
	Obituary "%o fell victim to Ssrath the Unseen."
	Mass 1024
	Tag "Ssrath the Unseen"
	Species "Demon"
	MeleeRange 72
	MaxTargetRange 320
	Scale 1.1
	Renderstyle Translucent
	BloodColor "17 99 14"
	var int user_ang;
	+ISMONSTER
	+NORADIUSDMG
	+NOTARGET
	+NOINFIGHTING
	+DONTHURTSPECIES
	+DONTHARMSPECIES
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_SSRATH)
		Goto SpawnSetup
		
		IdleState:
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE05 A 5 Fast A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE05 B 5 Fast A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE05 C 5 Fast A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE05 D 5 Fast A_Wander
		Loop
		SeeState:
			TNT1 A 0 A_SetUserVar("user_ang", random(0, 360))
			TNT1 A 0 A_SpawnItemEx("SSrath_FakeImage", 0, 0, 0, 12 * cos(user_ang), 12 * sin(user_ang))
			TNT1 A 0 A_SpawnItemEx("SSrath_MoveFX1")
			UE05 A 2 Fast A_Chase
			TNT1 A 0 A_SpawnItemEx("SSrath_MoveFX1")
			UE05 A 2 Fast A_Chase
			TNT1 A 0 A_SetUserVar("user_ang", random(0, 360))
			TNT1 A 0 A_SpawnItemEx("SSrath_FakeImage", 0, 0, 0, 12 * cos(user_ang), 12 * sin(user_ang))
			TNT1 A 0 A_SpawnItemEx("SSrath_MoveFX2")
			UE05 B 2 Fast A_Chase
			TNT1 A 0 A_SpawnItemEx("SSrath_MoveFX2")
			UE05 B 2 Fast A_Chase
			TNT1 A 0 A_SetUserVar("user_ang", random(0, 360))
			TNT1 A 0 A_SpawnItemEx("SSrath_FakeImage", 0, 0, 0, 12 * cos(user_ang), 12 * sin(user_ang))
			TNT1 A 0 A_SpawnItemEx("SSrath_MoveFX3")
			UE05 C 2 Fast A_Chase
			TNT1 A 0 A_SpawnItemEx("SSrath_MoveFX3")
			TNT1 A 0 A_SetUserVar("user_ang", random(0, 360))
			TNT1 A 0 A_SpawnItemEx("SSrath_FakeImage", 0, 0, 0, 12 * cos(user_ang), 12 * sin(user_ang))
			UE05 C 2 Fast A_Chase
			TNT1 A 0 A_SpawnItemEx("SSrath_MoveFX4")
			UE05 D 2 Fast A_Chase
			TNT1 A 0 A_SpawnItemEx("SSrath_MoveFX4")
			UE05 D 2 Fast A_Chase
		Goto See
		MissileState:
			UE05 E 4 Fast A_FaceTarget
			UE05 FFFFF 5 Fast A_FaceTarget
			TNT1 A 0 A_CustomMissile("Ssrath_Screamer", 32)
			UE05 G 9 Fast
		Goto Vanish
		MeleeState:
			TNT1 A 0 A_SetTranslucent(1.0)
			TNT1 A 0 A_PlaySound("SSrath/Attack")
			UE05 E 4 Fast A_FaceTarget
			TNT1 A 0 A_CustomMissile("SSrath_EyeBeam", 42)
			UE05 F 5 Fast A_FaceTarget
			TNT1 A 0 A_CustomMeleeAttack(32)
			UE05 G 7 Fast A_FaceTarget
		Goto See
		PainState:
			UE05 H 1 Fast A_SetTranslucent(1.0)
			UE05 H 1 Fast A_Pain
			TNT1 A 0 A_Jump(128, "Vanish")
			UE05 H 3 Fast
		Goto See
		Vanish:
			TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
			TNT1 AAAAA 0 A_SpawnItemEx("RocketSmoke", frandom(-24, 24), frandom(-24, 24), frandom(24, 36), frandom(-3, 3), frandom(-3, 3), frandom(-1, 2))
			TNT1 AAAAAAAA 0 A_SpawnItemEx("RocketSmoke", frandom(-36, 36), frandom(-36, 36), frandom(18, 44), frandom(-1, 1), frandom(-1, 1), frandom(-1, 1))
			TNT1 A 0 A_PlaySound("Draugr/Fade")
			UE05 HHHH 1 Fast A_FadeOut(0.24, 0)
			TNT1 AAAAAAAAAAAAAAAA 2 A_Chase("", "")
			TNT1 AAAAA 0 A_SpawnItemEx("RocketSmoke", frandom(-24, 24), frandom(-24, 24), frandom(24, 36), frandom(-3, 3), frandom(-3, 3), frandom(-1, 2))
			TNT1 AAAAAAAA 0 A_SpawnItemEx("RocketSmoke", frandom(-36, 36), frandom(-36, 36), frandom(18, 444), frandom(-1, 1), frandom(-1, 1), frandom(-1, 1))
			TNT1 A 0 A_PlaySound("Draugr/Fade")
			UE05 HHHH 1 Fast A_FadeIn(0.24)
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low", 0, 0, 32, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			TNT1 A 0 A_SetTranslucent(1.0)
			UE05 I 5 A_Scream
			UE05 J 5 A_NoBlocking
			UE05 KLM 4
			UE05 N -1
		Stop
	}
}

Actor SSrath_MoveFX1 {
	Renderstyle Translucent
	Scale 1.1
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 2
		SpawnLoop:
			UE05 A 1 A_FadeOut(0.0875)
		Loop
	}
}

Actor SSrath_MoveFX2 : SSrath_MoveFX1 {
	States {
		Spawn:
			TNT1 A 2
		SpawnLoop:
			UE05 B 1 A_FadeOut(0.0875)
		Loop
	}
}

Actor SSrath_MoveFX3 : SSrath_MoveFX1 {
	States {
		Spawn:
			TNT1 A 2
		SpawnLoop:
			UE05 C 1 A_FadeOut(0.0875)
		Loop
	}
}

Actor SSrath_MoveFX4 : SSrath_MoveFX1 {
	States {
		Spawn:
			TNT1 A 2
		SpawnLoop:
			UE05 D 1 A_FadeOut(0.0875)
		Loop
	}
}

Actor SSrath_FakeImage : SSrath_MoveFX1 {
	Radius 30
	Height 56
	+DONTBLAST
	-TELESTOMP
	-NOINTERACTION
	States {
		Spawn:
			UE05 AAABBBCCCDDD 1 A_FadeOut(0.075)
		Loop
	}
}

Actor SSrath_EyeBeam {
	Projectile
	Height 32
	Radius 16
	Speed 16
	Damage (0)
	DamageType "Magical_SSrath"
	Stamina 8
	Translation "0:255=%[0.00,0.00,0.00]:[1.73,1.76,0.41]"
	Renderstyle Add
	Scale 0.75
	var int user_dmg;
	+THRUACTORS
	+DONTBLAST
	+NODAMAGETHRUST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			R075 A 3 Bright A_SpawnItemEx("SSrath_EyeBeamTrail", 0, 0, 0, velx, vely, velz, 0, SXF_ABSOLUTEVELOCITY)
			R075 A 0 A_SetUserVar("user_dmg", 10)
			R075 A 0 A_Explode(user_dmg * 1.5, 32, 0, 0, 32)
			R075 B 3 Bright A_SpawnItemEx("SSrath_EyeBeamTrail", 0, 0, 0, velx, vely, velz, 0, SXF_ABSOLUTEVELOCITY)
			R075 B 0 A_Explode(user_dmg * 1.625, 36, 0, 0, 36)
			R075 C 3 Bright A_SpawnItemEx("SSrath_EyeBeamTrail", 0, 0, 0, velx, vely, velz, 0, SXF_ABSOLUTEVELOCITY)
			R075 C 0 A_Explode(user_dmg * 1.75, 40, 0, 0, 40)
			R075 D 3 Bright A_SpawnItemEx("SSrath_EyeBeamTrail", 0, 0, 0, velx, vely, velz, 0, SXF_ABSOLUTEVELOCITY)
			R075 D 0 A_Explode(user_dmg * 1.875, 44, 0, 0, 44)
			R075 E 3 Bright A_SpawnItemEx("SSrath_EyeBeamTrail", 0, 0, 0, velx, vely, velz, 0, SXF_ABSOLUTEVELOCITY)
			R075 F 3 Bright A_Explode(user_dmg * 2.0, 48, 0, 0, 48)
			R075 G 3 Bright A_Explode(user_dmg * 2.125, 52, 0, 0, 52)
			R075 H 3 Bright A_Explode(user_dmg * 2.25, 56, 0, 0, 56)
			R075 I 3 Bright A_Explode(user_dmg * 2.375, 60, 0, 0, 60)
			R075 J 3 Bright A_Explode(user_dmg * 2.5, 64, 0, 0, 64)
			R075 K 3 Bright A_Explode(user_dmg * 2.75, 72, 0, 0, 72)
			R075 L 3 Bright A_Explode(user_dmg * 3, 80, 0, 0, 80)
			R075 M 3 Bright A_Explode(user_dmg * 3.25, 88, 0, 0, 88)
			R075 N 3 Bright A_Explode(user_dmg * 3.5, 96, 0, 0, 96)
			R075 O 3 Bright A_Explode(user_dmg * 3.75, 104, 0, 0, 104)
			R075 P 3 Bright A_Explode(user_dmg * 4.0, 112, 0, 0, 112)
		Stop
		Death:
			"####" "#" 1 Bright A_FadeOut(0.0875)
		Wait
	}
}

Actor SSrath_EyeBeamTrail {
	RenderStyle Add
	Scale 0.75
	Height 32
	Radius 16
	Damage 0
	Translation "0:255=%[0.00,0.00,0.00]:[1.73,1.76,0.41]"
	+MISSILE
	+NOGRAVITY
	+THRUACTORS
	+DONTBLAST
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 0 NoDelay A_ScaleVelocity(0.1)
			TNT1 A 3
			TNT1 A 0 A_ScaleVelocity(10.0)
			R075 ABCDEFGHIJKLMNOP 3 Bright
		Stop
		Death:
			"####" "#" 1 Bright A_FadeOut(0.0875)
		Wait
	}
}

Actor SSrath_Screamer {
	Projectile
	Damage (50)
	DamageType "MagicalGray"
	Stamina 8
	SeeSound "SSrath/ScreamerGo"
	DeathSound "Draugr/SeekerExplode"
	Speed 20
	Height 20
	Radius 10
	Renderstyle Add
	Scale 1.15
	+DONTBLAST
	+FOILINVUL
	+PIERCEARMOR
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			TNT1 A 0 A_PlaySound("mummy/head")
			SRV2 AAAA 3 Bright A_SpawnItemEx("SSrath_SoulExplosion", frandom(-32, 32), frandom(-32, 32), frandom(-32, 32), 0, 0, frandom(0, 1))
		Loop
		Death:
			TNT1 A 1 A_SpawnItemEx("SSrath_ScreamerExp", 0, 0, 0, 0, 0, 2)
		Stop
	}
}

Actor SSrath_ScreamerExp {
	Translation "0:255=%[0.00,0.00,0.00]:[1.00,1.00,1.00]"
	Renderstyle Add
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			BSBL HIJKL 4 Bright
		Stop
	}
}

Actor SSrath_SoulExplosion : BaseExplosionDamage {
	DamageType "MagicalGray"
	Stamina 8
	Obituary "%o fell victim to Ssrath the Unseen."
	Renderstyle Add
	Scale 0.5
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			SRV3 A 4 Bright A_PlaySound("monster/dishht1")
			SRV3 B 4 Bright A_Explode(32, 64, 0)
			SRV3 CDEFGHI 3 Bright
		Stop
	}
}

Actor HollowShell : DnD_BaseHybridMonster_NoRes {
	Health 0x7FFFFFFF
    GibHealth -10
	Radius 16
	Height 56
	Speed 8
	PainChance 80
	Damage (5 * random(4, 8))
	SeeSound "HollowShell/See"
	PainSound "demon/pain2"
	DeathSound "HollowShell/Die"
	ActiveSound "HollowShell/Act"
	AttackSound "skull/melee"
	Obituary "%o fell victim to Hollowshell the Lost."
	Mass 384
	Tag "Hollowshell"
	MeleeRange 108
	+ISMONSTER
	+NOTARGET
	+NOINFIGHTING
	+DONTHURTSPECIES
	+DONTHARMSPECIES
	+FLOAT
	+NOGRAVITY
	+DONTFALL
	+MISSILEMORE
	+NOBLOOD
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_HOLLOWSHELL)
		Goto SpawnSetup
		
		IdleState:
			UE10 A 1 Bright A_Wander
			UE10 AA 2 Bright A_SpawnItemEx("HollowShellFlames", -12, 0, frandom(22, 28), frandom(-4, -1), frandom(-2.5, 2.5), frandom(0, 8))
			UE10 A 0 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			UE10 A 0 A_Chase
			UE10 A 1 Fast Bright
			UE10 AA 2 Fast Bright A_SpawnItemEx("HollowShellFlames", -12, 0, frandom(22, 28), frandom(-4, -1), frandom(-2.5, 2.5), frandom(0, 8))
		Loop
		MissileState:
			TNT1 A 0 A_Jump(160, "Charge")
			TNT1 A 0 A_SpawnItemEx("HollowShellFlames", -12, 0, frandom(22, 28), frandom(-4, -1), frandom(-2.5, 2.5), frandom(0, 8))
			UE10 B 2 Fast Bright A_FaceTarget
			TNT1 A 0 A_SpawnItemEx("HollowShellFlames", -12, 0, frandom(22, 28), frandom(-4, -1), frandom(-2.5, 2.5), frandom(0, 8))
			UE10 B 2 Fast Bright A_FaceTarget
			TNT1 A 0 A_CustomMissile("HollowShellComet", 16)
			UE10 BBBB 2 Fast Bright A_SpawnItemEx("HollowShellFlames", -12, 0, frandom(22, 28), frandom(-4, -1), frandom(-2.5, 2.5), frandom(0, 8)) 
		Goto See
		Charge:
			TNT1 A 0 A_FaceTarget
			UE10 BBB 2 Fast Bright A_SpawnItemEx("HollowShellFlames", -12, 0, frandom(22, 28), frandom(-4, -1), frandom(-2.5, 2.5), frandom(0, 8))
			TNT1 A 0 A_SkullAttack
			UE10 BB 2 Fast Bright A_SpawnItemEx("HollowShellFlames", -12, 0, frandom(22, 28), frandom(-4, -1), frandom(-2.5, 2.5), frandom(0, 8))
		ChargeLoop:
			UE10 BBBB 2 Fast Bright A_SpawnItemEx("HollowShellFlames", -12, 0, frandom(22, 28), frandom(-4, -1), frandom(-2.5, 2.5), frandom(0, 8))
			UE10 B 0 A_SkullAttack
		Loop
		MeleeState:
			TNT1 A 0 A_FaceTarget
			UE10 BBB 2 Fast Bright A_SpawnItemEx("HollowShellFlames", -12, 0, frandom(22, 28), frandom(-4, -1), frandom(-2.5, 2.5), frandom(0, 8))
			TNT1 A 0 A_CustomMissile("HollowShellGas", 16, 0, frandom(-7, 7))
			UE10 B 2 Fast Bright A_SpawnItemEx("HollowShellFlames", -12, 0, frandom(22, 28), frandom(-4, -1), frandom(-2.5, 2.5), frandom(0, 8))
			TNT1 A 0 A_CustomMissile("HollowShellGas", 16, 0, frandom(-7, 7))
			UE10 B 2 Fast Bright A_SpawnItemEx("HollowShellFlames", -12, 0, frandom(22, 28), frandom(-4, -1), frandom(-2.5, 2.5), frandom(0, 8))
			TNT1 A 0 A_CustomMissile("HollowShellGas", 16, 0, frandom(-7, 7))
			UE10 B 2 Fast Bright A_SpawnItemEx("HollowShellFlames", -12, 0, frandom(22, 28), frandom(-4, -1), frandom(-2.5, 2.5), frandom(0, 8))
			TNT1 A 0 A_CustomMissile("HollowShellGas", 16, 0, frandom(-7, 7))
			UE10 B 2 Fast Bright A_SpawnItemEx("HollowShellFlames", -12, 0, frandom(22, 28), frandom(-4, -1), frandom(-2.5, 2.5), frandom(0, 8))
			TNT1 A 0 A_CustomMissile("HollowShellGas", 16, 0, frandom(-7, 7))
			UE10 B 2 Fast Bright A_SpawnItemEx("HollowShellFlames", -12, 0, frandom(22, 28), frandom(-4, -1), frandom(-2.5, 2.5), frandom(0, 8))
		Goto See
		PainState:
			UE10 C 2 Fast Bright A_SpawnItemEx("HollowShellFlames", -12, 0, frandom(22, 28), frandom(-4, -1), frandom(-2.5, 2.5), frandom(0, 8))
			TNT1 A 0 A_Pain
			UE10 C 3 Fast Bright A_SpawnItemEx("HollowShellFlames", -12, 0, frandom(22, 28), frandom(-4, -1), frandom(-2.5, 2.5), frandom(0, 8))
		Goto See
		XDeathState:
		DeathState:
			UE10 F 12 A_Scream
			UE10 G 6 Bright A_NoBlocking
			TNT1 AAA 0 A_SpawnItemEx("HollowShellBone1", frandom(-8, 8), frandom(-8, 8), frandom(4, 24), frandom(-12, 12), frandom(-12, 12), frandom(2, 12), frandom(0, 360))
			UE10 H 5 Bright
			TNT1 AAA 0 A_SpawnItemEx("HollowShellBone1", frandom(-8, 8), frandom(-8, 8), frandom(4, 24), frandom(-12, 12), frandom(-12, 12), frandom(2, 12), frandom(0, 360))
			TNT1 AAAA 0 A_SpawnItemEx("HollowShellBone3", frandom(-8, 8), frandom(-8, 8), frandom(4, 24), frandom(-12, 12), frandom(-12, 12), frandom(2, 12), frandom(0, 360))
			UE10 I 5 Bright
			TNT1 AA 0 A_SpawnItemEx("HollowShellBone2", frandom(-8, 8), frandom(-8, 8), frandom(4, 24), frandom(-12, 12), frandom(-12, 12), frandom(2, 12), frandom(0, 360))
			TNT1 AAAA 0 A_SpawnItemEx("HollowShellBone3", frandom(-8, 8), frandom(-8, 8), frandom(4, 24), frandom(-12, 12), frandom(-12, 12), frandom(2, 12), frandom(0, 360))
			UE10 J 5 Bright
			TNT1 AA 0 A_SpawnItemEx("HollowShellBone1", frandom(-8, 8), frandom(-8, 8), frandom(4, 24), frandom(-12, 12), frandom(-12, 12), frandom(2, 12), frandom(0, 360))
			TNT1 AAA 0 A_SpawnItemEx("HollowShellBone3", frandom(-8, 8), frandom(-8, 8), frandom(4, 24), frandom(-12, 12), frandom(-12, 12), frandom(2, 12), frandom(0, 360))
			UE10 K 5 bright
		Stop
	}
}

Actor HollowShellGasExp : BaseExplosionDamage {
	DamageType "Poison"
	Stamina 128
	Obituary "%o fell victim to Hollowshell the Lost."
	+NODAMAGETHRUST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(4, 72, 0, 0, 36)
		Stop
	}
}

Actor HollowShellGas {
	Projectile
	Damage 0
	DamageType "Poison"
	Stamina 128
	Height 20
	Radius 10
	Renderstyle Add
	Alpha 0.9
	Scale 0.1
	Speed 30
	SeeSound "CacoFlame/attack"
	+DONTBLAST
	+NODAMAGETHRUST
	+THRUACTORS
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			DB58 A 1 Bright A_SetScale(scalex + 0.075, scaley + 0.075)
			TNT1 A 0 A_SpawnItem("HollowShellGasExp")
			DB58 B 1 Bright A_SetScale(scalex + 0.075, scaley + 0.075)
			TNT1 A 0 A_SpawnItem("HollowShellGasExp")
			DB58 C 1 Bright A_SetScale(scalex + 0.075, scaley + 0.075)
			TNT1 A 0 A_SpawnItem("HollowShellGasExp")
			DB58 D 1 Bright A_SetScale(scalex + 0.075, scaley + 0.075)
			TNT1 A 0 A_SpawnItem("HollowShellGasExp")
			DB58 E 1 Bright A_SetScale(scalex + 0.075, scaley + 0.075)
			TNT1 A 0 A_SpawnItem("HollowShellGasExp")
			DB58 F 1 Bright A_SetScale(scalex + 0.075, scaley + 0.075)
			TNT1 A 0 A_SpawnItem("HollowShellGasExp")
			DB58 G 1 Bright A_SetScale(scalex + 0.075, scaley + 0.075)
			TNT1 A 0 A_SpawnItem("HollowShellGasExp")
			DB58 H 1 Bright A_SetScale(scalex + 0.075, scaley + 0.075)
			TNT1 A 0 A_SpawnItem("HollowShellGasExp")
			DB58 I 1 Bright A_SetScale(scalex + 0.075, scaley + 0.075)
			TNT1 A 0 A_SpawnItem("HollowShellGasExp")
			DB58 J 1 Bright A_SetScale(scalex + 0.075, scaley + 0.075)
			TNT1 A 0 A_SpawnItem("HollowShellGasExp")
			DB58 K 1 Bright A_SetScale(scalex + 0.075, scaley + 0.075)
			TNT1 A 0 A_SpawnItem("HollowShellGasExp")
			DB58 LMNOPQRS 1 Bright A_SpawnItem("HollowShellGasExp")
			DB58 T 1 Bright A_FadeOut(0.0875)
			TNT1 A 0 A_SpawnItem("HollowShellGasExp")
			DB58 U 1 Bright A_FadeOut(0.0875)
			TNT1 A 0 A_SpawnItem("HollowShellGasExp")
			DB58 V 1 Bright A_FadeOut(0.0875)
			TNT1 A 0 A_SpawnItem("HollowShellGasExp")
			DB58 WXYZ 1 Bright A_FadeOut(0.0875)
		Stop
		Death:
			"####" "#" 1 A_FadeOut(0.075)
		Wait
	}
}

Actor HollowShellExp : HollowShellGasExp {
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(48, 128, 0)
		Stop
	}
}

Actor HollowShellComet : ArchonComet {
	Damage (6 * random(4, 5))
	DamageType "Poison"
	Stamina 128
	States {
		Death:
			TNT1 AA 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_SetTranslucent (0.67,1)
			ARCB J 3 Bright
			ARCB K 3 Bright A_SpawnItem("HollowShellExp")
			ARCB LMN 3 Bright
		Stop
	}
}

Actor HollowShellFlames {
	Renderstyle Add
	Scale 0.9
	Alpha 0.875
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
		SpawnLoop:
			UP18 ABCDEF 3 Bright
		Stop
	}
}

Actor HollowShellBone1 {
	Projectile
	BounceType Doom
	Bouncecount 4
	Speed 28
	Height 12
	Radius 6
	Damage 0
	Renderstyle Translucent
	+THRUACTORS
	+DONTBLAST
	+CLIENTSIDEONLY
	+DONTSPLASH
	-NOGRAVITY
	States {
		Spawn:
			UP19 ABCDEFGH 4 NoDelay A_GiveInventory("DnD_Info", 1)
			"####" "#" 0 A_TakeInventory("DnD_Info", 0)
		Loop
		Death:
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 7, "A")
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 6, "E")
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 5, "Fade")
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 4, "E")
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 3, "Fade")
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 2, "C")
		Fade:
			"####" "#" 4 A_FadeOut(0.075)
		Wait
		A:
			UP19 A 0
		Goto Fade
		C:
			UP19 C 0
		Goto Fade
		E:
			UP19 E 0
		Goto Fade
	}
}

Actor HollowShellBone2 : HollowShellBone1 {
	Height 20
	Radius 10
	States {
		Spawn:
			UP09 ABCDEFGH 4 NoDelay A_GiveInventory("DnD_Info", 1)
			"####" "#" 0 A_TakeInventory("DnD_Info", 0)
		Loop
		Death:
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 7, "A")
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 6, "E")
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 5, "Fade")
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 4, "E")
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 3, "Fade")
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 2, "C")
		Fade:
			"####" "#" 4 A_FadeOut(0.075)
		Wait
		A:
			UP09 A 0
		Goto Fade
		C:
			UP09 C 0
		Goto Fade
		E:
			UP09 E 0
		Goto Fade
	}
}

Actor HollowShellBone3 : HollowShellBone1 {
	Height 8
	Radius 4
	States {
		Spawn:
			UP10 ABCDEFGH 4 A_GiveInventory("DnD_Info", 1)
			"####" "#" 0 A_TakeInventory("DnD_Info", 0)
		Loop
		Death:
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 7, "A")
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 6, "E")
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 5, "Fade")
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 4, "E")
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 3, "Fade")
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 2, "C")
		Fade:
			"####" "#" 4 A_FadeOut(0.075)
		Wait
		A:
			UP10 A 0
		Goto Fade
		C:
			UP10 C 0
		Goto Fade
		E:
			UP10 E 0
		Goto Fade
	}
}

Actor Omnisight : DnD_BaseHybridMonster_NoRes {
	Health 0x7FFFFFFF
    GibHealth -10
	Radius 36
	Height 80
	Speed 8
	PainChance 64
	SeeSound "Omnisight/See"
	PainSound "Omnisight/pain"
	DeathSound "Omnisight/Die"
	ActiveSound "Omnisight/act"
	Obituary "%o fell victim to Omnisight the Beholder."
	Mass 2048
	Tag "Omnisight the Beholder"
	Species "Cacodemon"
	MeleeRange 68
	+ISMONSTER
	+FLOAT
	+NOGRAVITY
	+NORADIUSDMG
	+NOTARGET
	+NOINFIGHTING
	+DONTHURTSPECIES
	+DONTHARMSPECIES
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_OMNISIGHT)
		Goto SpawnSetup
		
		IdleState:
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE06 AA 3 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE06 BB 3 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE06 AA 3 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE06 CC 3 A_Wander
		Loop
		SeeState:
			UE06 AABBAACC 3 A_Chase
			UE06 A 0 A_Jump(32, "Teleport")
		Goto See
		MeleeState:
			TNT1 A 0 A_PlaySound("ChaosSerpent/Melee")
			UE06 ADF 5 A_FaceTarget
			UE06 E 5 A_CustomMeleeAttack(48)
		Goto See
		Redecide:
			UE06 D 0 A_Jump(256, "Missile1", "Missile2", "Missile3")
		Goto Missile1
		MissileState:
			UE06 D 0 A_Jump(256, "Missile1", "Missile2", "Missile3", "Missile4")
		Missile1:
			UE06 DE 8 A_FaceTarget
			UE06 FFFFF 4 bright A_SpawnItemEx("HS_NoExp", 60, 0, 15, 0, 0, 0, 0, SXF_SETMASTER)
		Goto See
		Missile2:
		    UE06 GH 8 Bright A_FaceTarget
			TNT1 A 0 A_FaceTarget
			UE06 H 5 Bright A_PlaySound("Omnisight/shock")
			UE06 I 7 Bright A_CustomMissile("OmniBigBall", 43)
			UE06 G 5 Bright A_FaceTarget
		Goto See
		Missile3:
			UE06 JJJJJJJJ 1 A_FaceTarget
		Missile3Loop:
			TNT1 A 0 A_CustomMissile("HadesBall",92,-40,random(-3,3),0,random(-3,3))
			TNT1 A 0 A_CustomMissile("HadesBall",8,-40,random(-3,3),0,random(-3,3))
			TNT1 A 0 A_CustomMissile("HadesBall",92,40,random(-3,3),0,random(-3,3))
			TNT1 A 0 A_CustomMissile("HadesBall",8,40,random(-3,3),0,random(-3,3))
			TNT1 A 0 A_CustomMissile("OmniBall",54,-50,random(-3,3),0,random(-3,3))
			UE06 K 4 Bright A_CustomMissile("OmniBall",54,50,random(-3,3),0,random(-3,3))
			UE06 J 4 A_SpidRefire
			UE06 J 0 A_Jump(32, "See")
		Loop
		Missile4:
			TNT1 A 0 A_JumpIfInventory("OmniSight_Cooldown", 1, "Redecide")
		    UE06 GH 8 Bright A_FaceTarget
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_GiveInventory("OmniSight_Cooldown", 1)
			UE06 H 5 Bright A_PlaySound("Omnisight/Chaos")
			UE06 I 7 Bright A_CustomMissile("OmniChaosBall", 43)
			UE06 G 5 Bright A_FaceTarget
		Goto See
		PainState:
			UE06 L 5
			UE06 L 5 A_Pain
			UE06 L 0 A_Jump(40, "Teleport")
		Goto See
		Teleport:
			TNT1 A 0 A_SetInvulnerable
			TNT1 A 0 A_UnsetShootable
			UE06 F 1 A_PlaySound("monster/heltel")
			UE06 F 1 A_SetTranslucent(0.90)
			UE06 F 1 A_SetTranslucent(0.80)
			UE06 F 1 A_SetTranslucent(0.70)
			UE06 F 1 A_SetTranslucent(0.60)
			UE06 F 1 A_SetTranslucent(0.50)
			UE06 F 1 A_SetTranslucent(0.40)
			UE06 F 1 A_SetTranslucent(0.30)
			UE06 F 1 A_SetTranslucent(0.20)
			UE06 F 1 A_SetTranslucent(0.10)
			UE06 F 0 A_Jump(128, "TeleDelayed")
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 0 A_Chase("", "", CHF_NOPLAYACTIVE)
		TeleDelayed:
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 1 A_GiveInventory("OmnisightTeleMove", 1)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Sync Hack Immediate", x, y, z)
			UE06 F 1 A_PlaySound("monster/heltel")
			UE06 F 1 A_SetTranslucent(0.10)
			UE06 F 1 A_SetTranslucent(0.20)
			UE06 F 1 A_SetTranslucent(0.30)
			UE06 F 1 A_SetTranslucent(0.40)
			UE06 F 1 A_SetTranslucent(0.50)
			UE06 F 1 A_SetTranslucent(0.60)
			UE06 F 1 A_SetTranslucent(0.70)
			UE06 F 1 A_SetTranslucent(0.80)
			UE06 F 1 A_SetTranslucent(0.90)
			UE06 F 1 A_SetTranslucent(1.0)
			UE06 F 0 A_SetShootable
			UE06 F 0 A_UnSetInvulnerable
		Goto See
		XDeathState:
		DeathState:
		    TNT1 A 0 A_Facetarget
			UE06 M 12 bright A_Scream
			TNT1 A 0 A_Quake(7, 80, 0, 192)
			UE06 NO 5 bright
			TNT1 AAAAA 0 A_CustomMissile("OmnisightFlesh1",random(0,90),random(0,40),random(-180,180),2,random(-15,15))
			TNT1 AAAAA 0 A_CustomMissile("OmnisightFlesh2",random(0,90),random(0,40),random(-180,180),2,random(-15,15))
			TNT1 AAAAAAAAAA 0 A_CustomMissile("OmnisightFlesh3",random(0,90),random(0,40),random(-180,180),2,random(-15,15))
			TNT1 AAAAAAAAAA 0 A_CustomMissile("OmnisightFlesh4",random(0,90),random(0,40),random(-180,180),2,random(-15,15))
			TNT1 AAAAAAAAAA 0 A_CustomMissile("OmnisightFlesh5",random(0,90),random(0,40),random(-180,180),2,random(-15,15))
			TNT1 AAAAAAAAAA 0 A_CustomMissile("OmnisightFlesh6",random(0,90),random(0,40),random(-180,180),2,random(-15,15))
			TNT1 AAAA 0 A_SpawnItemEx("GenericGibber_Medium", frandom(-16, 16), frandom(-16, 16), frandom(18, 40), 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			TNT1 A 0 A_CustomMissile("OmnisightBigArm1",40,-40,-90,2,random(-1,1))
			TNT1 A 0 A_CustomMissile("OmnisightBigArm2",40,40,90,2,random(-1,1))
			TNT1 A 0 A_CustomMissile("OmnisightSmallArm1",100,-30,-90,2,random(-15,15))
			TNT1 A 0 A_CustomMissile("OmnisightSmallArm1",100,30,90,2,random(-15,15))
			TNT1 A 0 A_CustomMissile("OmnisightSmallArm2",100,-30,-90,2,random(-15,15))
			TNT1 A 0 A_CustomMissile("OmnisightSmallArm2",100,30,90,2,random(-15,15))
			TNT1 A 0 A_CustomMissile("OmnisightHorn1",110,-16,-90,2,random(-15,15))
			TNT1 A 0 A_CustomMissile("OmnisightHorn2",110,16,90,2,random(-15,15))
			UE06 PQRSTUV 5 bright
		Stop
	}
}

Actor OmnisightTeleMove : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_Chase("", "", CHF_NOPLAYACTIVE)
			TNT1 AAAAA 0 A_SpawnItemEx("DarkServantTrail2", frandom(-36.0, 36.0), frandom(-36.0, 36.0), frandom(8.0, 56.0), 0, 0, 0, 0, SXF_NOCHECKPOSITION | SXF_CLIENTSIDE)
		Stop
	}
}

Actor OmniSight_Cooldown : PowerDamage {
	damagefactor "normal", 1.0
	powerup.duration -10
}

Actor OmniChaosBall_TrailA {
	Renderstyle Add
	Scale 1.15
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			UP07 A 0
		Goto SpawnLoop
		SpawnLoop:
			UP07 "##########" 1 Bright A_FadeOut(0.0875)
		Stop
	}
}

Actor OmniChaosBall_TrailB : OmniChaosBall_TrailA {
	States {
		Spawn:
			UP07 B 0
		Goto SpawnLoop
	}
}

Actor OmniChaosBall_TrailC : OmniChaosBall_TrailA {
	States {
		Spawn:
			UP07 C 0
		Goto SpawnLoop
	}
}

Actor OmniChaosBall_TrailD : OmniChaosBall_TrailA {
	States {
		Spawn:
			UP07 D 0
		Goto SpawnLoop
	}
}

Actor OmniChaosBall_TrailE : OmniChaosBall_TrailA {
	States {
		Spawn:
			UP07 E 0
		Goto SpawnLoop
	}
}

Actor OmniChaosBall_TrailF : OmniChaosBall_TrailA {
	States {
		Spawn:
			UP07 F 0
		Goto SpawnLoop
	}
}

Actor OmniChaosBall_TrailG : OmniChaosBall_TrailA {
	States {
		Spawn:
			UP07 G 0
		Goto SpawnLoop
	}
}

Actor OmniChaosBall_TrailH : OmniChaosBall_TrailA {
	States {
		Spawn:
			UP07 H 0
		Goto SpawnLoop
	}
}

Actor OmniChaosBall_TrailI : OmniChaosBall_TrailA {
	States {
		Spawn:
			UP07 I 0
		Goto SpawnLoop
	}
}

Actor OmniChaosBall_TrailJ : OmniChaosBall_TrailA {
	States {
		Spawn:
			UP07 J 0
		Goto SpawnLoop
	}
}

ACTOR OmnisightFlesh1 {
	Speed 8
	Mass 100
	Radius 2
	Height 4
	PROJECTILE
	+THRUGHOST
	+LOWGRAVITY
	-NOGRAVITY
	+CLIENTSIDEONLY
	States {
		Spawn:
			UP00 ACEGIKM 5
		loop
		Death:
			UP00 Q -1
		stop
	}
}

ACTOR OmnisightFlesh2 : OmnisightFlesh1 {
	States {
		Spawn:
			UP01 BDFHJLN 5
		loop
		Death:
			UP01 R -1
		stop
	}
}

ACTOR OmnisightFlesh3 : OmnisightFlesh1 {
	States {
		Spawn:
			UP01 ACEG 5
		loop
		Death:
			UP01 I -1
		Stop
	}
}

ACTOR OmnisightFlesh4 : OmnisightFlesh1 {
	States {
		Spawn:
			UP01 BDFH 5
		loop
		Death:
			UP01 J -1
		Stop
	}
}

ACTOR OmnisightFlesh5 : OmnisightFlesh1 {
	States {
		Spawn:
			UP02 ACEGI 5
		loop
		Death:
			UP02 K -1
		Stop
	}
}

ACTOR OmnisightFlesh6 : OmnisightFlesh1 {
	States {
		Spawn:
			UP02 BDFHJ 5
		loop
		Death:
			UP02 L -1
		Stop
	}
}

ACTOR OmnisightBigArm1 : OmnisightFlesh1 {
	States {
		Spawn:
			UP03 ACEGI 5
		loop
		Death:
			UP03 K 3
			UP03 M -1
		stop
	}
}

ACTOR OmnisightBigArm2 : OmnisightFlesh1 {
	States {
		Spawn:
			UP03 BDFHJ 5
		loop
		Death:
			UP03 L 3
			UP03 N -1
		stop
	}
}

ACTOR OmnisightSmallArm1 : OmnisightFlesh1 {
	States {
		Spawn:
			UP04 ACEG 5
		loop
		Death:
			UP04 I -1
		stop
	}
}

ACTOR OmnisightSmallArm2 : OmnisightFlesh1 {
	States {
		Spawn:
			UP04 BDFH 5
		loop
		Death:
			UP04 J -1
		stop
	}
}

ACTOR OmnisightHorn1 : OmnisightFlesh1 {
	States {
		Spawn:
			UP05 ACEGI 5
		loop
		Death:
			UP05 K -1
		stop
	}
}

ACTOR OmnisightHorn2 : OmnisightFlesh1 {
	States {
		Spawn:
			UP05 BDFHJ 5
		loop
		Death:
			UP05 L -1
		stop
	}
}

ACTOR OmniBall {
	Radius 10
	Height 20
	Speed 24
	Damage (8 * random(5, 8))
	DamageType "LightningRed"
	Stamina 256
	PROJECTILE
	RENDERSTYLE ADD
	ALPHA 0.875
	Translation "192:207=168:191"
	+THRUGHOST
	+FORCEXYBILLBOARD
	DeathSound "DarkServant/LightningHit"
	Decal "CacoScorch"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			UP06 ABC 1 Bright
		loop
		Death:
			UP06 DE 4 Bright A_Explode(32, 64, 0)
			UP06 FGHI 4 bright
		stop
	}
}

Actor OmniBigBall {
	Projectile
	Speed 28
	Damage (random(55, 75))
	DamageType "LightningRed"
	Stamina 256
	Height 48
	Radius 24
	RENDERSTYLE ADD
	Alpha 1.0
	DeathSound "DarkServant/LightningHit"
	Decal "CacoScorch"
	var int user_count;
	const float ang_inc = 20.0;
	+VISIBILITYPULSE
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 A_SetUserVar("user_count", 0)
		SpawnLoop:
			UP06 J 3 Bright A_CustomMissile("OmniLightning", 0, 0, user_count * ang_inc, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			UP06 J 0 A_SetUserVar("user_count", user_count + 1)
			UP06 K 3 Bright A_CustomMissile("OmniLightning", 0, 0, user_count * ang_inc, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			UP06 K 0 A_SetUserVar("user_count", user_count + 1)
			UP06 L 3 Bright A_CustomMissile("OmniLightning", 0, 0, user_count * ang_inc, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			UP06 L 0 A_SetUserVar("user_count", user_count + 1)
			UP06 M 3 Bright A_CustomMissile("OmniLightning", 0, 0, user_count * ang_inc, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			UP06 M 0 A_SetUserVar("user_count", user_count + 1)
			UP06 N 3 Bright A_CustomMissile("OmniLightning", 0, 0, user_count * ang_inc, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			UP06 N 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		Death:
			"####" "#" 0 A_Explode(80, 160, 0)
			"####" "#" 0 A_Quake(7, 55, 0, 160)
			"####" "#" 0 A_SpawnItemEx ("ExplosionFlare", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			"####" "##########" 1 A_SetScale(scalex - 0.1, scaley - 0.1)
		Stop
	}
}

Actor OmniLightning : DarkZealotLightning {
	DamageType "LightningRed"
	Stamina 256
	Damage (5 * random(4, 5))
	-PIERCEARMOR
}

Actor OmniChaosBall {
	Height 32
	Radius 16
	PROJECTILE
	Speed 18
	Damage (100)
	DamageType "LightningRed"
	Stamina 256
	Scale 1.15
	Renderstyle Add
	var int user_count;
	const float r = 256.0;
	const float s = 32.0;
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			UP07 A 3 Bright A_SpawnItemEx("OmniChaosBall_TrailA")
			UP07 B 3 Bright A_SpawnItemEx("OmniChaosBall_TrailB")
			UP07 C 3 Bright A_SpawnItemEx("OmniChaosBall_TrailC")
			UP07 D 3 Bright A_SpawnItemEx("OmniChaosBall_TrailD")
			UP07 E 3 Bright A_SpawnItemEx("OmniChaosBall_TrailE")
			UP07 F 3 Bright A_SpawnItemEx("OmniChaosBall_TrailF")
			UP07 G 3 Bright A_SpawnItemEx("OmniChaosBall_TrailG")
			UP07 H 3 Bright A_SpawnItemEx("OmniChaosBall_TrailH")
			UP07 I 3 Bright A_SpawnItemEx("OmniChaosBall_TrailI")
			UP07 J 3 Bright A_SpawnItemEx("OmniChaosBall_TrailJ")
		Loop
		Death:
			TNT1 A 0 A_SetUserVar("user_count", 0)
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(0), s * sin(0))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(15), s * sin(15))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(30), s * sin(30))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(45), s * sin(45))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(60), s * sin(60))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(75), s * sin(75))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(90), s * sin(90))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(105), s * sin(105))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(120), s * sin(120))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(135), s * sin(135))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(150), s * sin(150))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(165), s * sin(165))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(180), s * sin(180))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(195), s * sin(195))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(210), s * sin(210))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(225), s * sin(225))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(240), s * sin(240))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(255), s * sin(255))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(270), s * sin(270))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(285), s * sin(285)) 
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(300), s * sin(300))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(315), s * sin(315))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(330), s * sin(330))
			TNT1 A 0 A_SpawnItemEx("OmniChaosCircleFX", 0, 0, 16, s * cos(345), s * sin(345))
			TNT1 A 32 A_SpawnItemEx("OmniChaosHitFX")
			TNT1 A 0 A_PlaySound("Omnisight/ZapLoop", CHAN_VOICE, 1, true)
		ZappingLoop:
			TNT1 A 0 A_JumpIf(user_count >= 20, "ZapFinish")
			TNT1 A 10 A_SpawnItemEx("OmniLightningBlast", frandom(-r, r), frandom(-r, r))
			TNT1 A 10 A_SpawnItemEx("OmniLightningBlast", frandom(-r, r), frandom(-r, r))
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		ZapFinish:
			TNT1 A 3 A_StopSound(CHAN_VOICE)
		Stop
	}
}

Actor OmniChaosHitFX {
	Scale 1.15
	Renderstyle Add
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			UP07 KLMNOPQRSTUVW 3 Bright
		Stop
	}
}

Actor OmniChaosCircleFX {
	Renderstyle Add
	Scale 2.0
	+CLIENTSIDEONLY
	+FLOORHUGGER
	States {
		Spawn:
			// initial movement phase
			TNT1 A 1
			ZLTT HIHIHIHIHIHIHIHI 2 Bright
			TNT1 A 0 A_Stop
			ZLTT HIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHIHI 2 Bright // 400 tics
			ZLTT JKL 3 Bright
		Stop
	}
}

Actor OmniLightningBlastFX {
	Renderstyle Add
	Alpha 0.01
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			LFX2 FFFFF 1 Bright A_FadeIn(0.2)
			LFX2 GHIJ 2 Bright A_FadeOut(0.1875)
		Stop
	}
}

Actor OmniLightningBlast : BaseExplosionDamage {
	DamageType "LightningRed"
	Stamina 256
	Obituary "%o fell victim to Omnisight the Beholder."
	+FLOORHUGGER
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1
			TNT1 A 4 A_SpawnItemEx("OmniLightningBlastFX")
			TNT1 A 1 A_PlaySound("Omnisight/BigZap")
			TNT1 A 0 A_Quake(5, 17, 0, 128)
			TNT1 A 0 A_Explode(80, 128, 0)
			TNT1 A 1
		Stop
	}
}

Actor Chegovax : DnD_BaseRangedMonster_NoRes {
	Health 0x7FFFFFFF
    GibHealth -10
	Radius 36
	Height 80
	Speed 8
	PainChance 10
	SeeSound "monster/cubsit"
	PainSound "Lich/Pain"
	DeathSound "monster/cubdth"
	ActiveSound "Lich/Act"
	Obituary "%o fell victim to Chegovax the Overseer."
	Mass 2048
	Tag "Chegovax the Overseer"
	Species "PainElemental"
	var int user_count;
	const float f = 1.8;
	const float pbase = -37.5;
	DamageFactor "CacoMagic", 0 // immunity to guardians
	+ISMONSTER
	+LOOKALLAROUND
	+FLOAT
	+NOGRAVITY
	+NOBLOOD
	+DONTRIP
	+NORADIUSDMG
	-DONTFALL
	+NOTARGET
	+NOINFIGHTING
	+DONTHURTSPECIES
	+DONTHARMSPECIES
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_CHEGOVAX)
		Goto SpawnSetup
		
		IdleState:
			UE07 A 3 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE07 B 3 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE07 C 3 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE07 D 3 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE07 E 3 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE07 F 3 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE07 G 3 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE07 H 3 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			UE07 ABCDEFGH 3 A_FastChase
		Goto See
		MissileState:
			UE07 I 0 A_Jump(200, "Attacks")
			UE07 LM 8 Bright A_FaceTarget
			UE07 N 0 A_CustomMissile("GuardianSpawner",32,0,-120)	
			UE07 N 0 A_CustomMissile("GuardianSpawner",32,0,120)	
			UE07 N 10 Bright A_CustomMissile("GuardianSpawner",32,0,0)
			UE07 I 2 Bright
		Goto See
		Attacks:
			TNT1 A 0 A_Jump(108, "Meteor")
		FlameLine:
			TNT1 A 0 A_SetUserVar("user_count", 0)
			UE07 III 5 A_FaceTarget(0, 0)
		FlameLoop:
			TNT1 A 0 A_JumpIf(user_count > 20, "FlameFinish")
			TNT1 A 0 A_CustomMissile("ChegovaxFire", 56, -10, angle, CMF_ABSOLUTEANGLE | CMF_ABSOLUTEPITCH, pitch + pbase + user_count * f)
			UE07 J 2 Bright A_CustomMissile("ChegovaxFire", 56, 10, angle, CMF_ABSOLUTEANGLE | CMF_ABSOLUTEPITCH, pitch + pbase + user_count * f)
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
			TNT1 A 0 A_CustomMissile("ChegovaxFire", 56, -10, angle, CMF_ABSOLUTEANGLE | CMF_ABSOLUTEPITCH, pitch + pbase + user_count * f)
			UE07 K 2 Bright A_CustomMissile("ChegovaxFire", 56, 10, angle, CMF_ABSOLUTEANGLE | CMF_ABSOLUTEPITCH, pitch + pbase + user_count * f)
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		FlameFinish:
			UE07 I 4
		Goto See
		Meteor:
			UE07 LLL 4 Bright A_FaceTarget
			UE07 MM 4 Bright A_FaceTarget
			UE07 N 10 Bright A_CustomMissile("ChegovaxMeteor", 32)
			UE07 ML 4 Bright A_FaceTarget
		Goto See
		PainState:
		   UE07 A 3 
		   UE07 I 3 A_Pain 
		Goto See
		XDeathState:
		DeathState:
			UE07 O 5 Bright A_NoBlocking
		DeathStateFall:
			UE07 P 5 Bright A_NoBlocking
		Loop
		Crash:
			UE07 Q 6 Bright A_Scream
			TNT1 A 0 A_SpawnItemEx("ChegovaxExp1")
			UE07 R 5 Bright A_KillChildren("Perish")
			TNT1 A 0 A_SpawnItemEx("ChegovaxExp2")
			UE07 S 5 Bright
			TNT1 A 0 A_SpawnItemEx("ChegovaxExp3")
			UE07 T 4 Bright
			TNT1 A 0 A_SpawnItemEx("ChegovaxExp4")
			UE07 UVWXYZ 4 Bright
			UE07 [ -1
		Stop
	}
}

Actor ChegovaxMeteorMissileTrail : MeteorMissileTrail {
	States {
		Spawn:
			TNT1 A 1
			RW6F CDEFGH 2 Bright A_FadeOut(0.075)
		Stop
	}
}

Actor ChegovaxMeteor {
	PROJECTILE
	Height 24
	Radius 12
	Speed 28
	Damage (80)
	DamageType "Magical"
	Stamina 8
	SeeSound "MeteorLauncher/fire"
	Deathsound "MeteorLauncher/Hit"
	const float projvel = 13.5;
	Scale 0.9
	+FOILINVUL
	+DONTBLAST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			RW6G AABBCCDD 2 A_SpawnItemEx("ChegovaxMeteorMissileTrail", -8)
		Loop
		Death:
			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))
			TNT1 A 0 A_Explode(96, 128, 0)
			TNT1 A 0 A_SetScale(1.25)
			RW6A EF 3 Bright
			TNT1 AAAAA 0 A_SpawnItemEx("ChegovaxMeteorSplit_1", 0, 0, 0, frandom(-projvel, projvel), frandom(-projvel, projvel), frandom(0, projvel), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_ChangeVelocity(0, 0, 2.0)
			RW6A GHI 4 Bright
			RW6A JJJJJJJJJJJ 2 Bright A_FadeOut(0.075)
		Stop
	}
}

Actor ChegovaxMeteorSplit_1 : ChegovaxMeteor {
	Height 14
	Radius 7
	Speed 24
	BounceSound "MeteorLauncher/Bounce"
	DeathSound "MeteorLauncher/HitSmall"
	Damage (24)
	BounceType Doom
	BounceCount 4
	Gravity 0.66
	-NOGRAVITY
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 A_Jump(256, "1", "2", "3")
		1:
			RW6G E 1
		Loop
		2:
			RW6G F 1
		Loop
		3:
			RW6G G 1
		Loop
		Death:
			TNT1 A 0 A_ChangeVelocity(0, 0, 0)
			TNT1 A 0 A_ChangeFlag("NOGRAVITY", 1)
			TNT1 AAAAA 0 A_CustomMissile("RocketSmokeSmall", 0, 0, random(0, 360), 2, random(0, 180))
			TNT1 AAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 180))
			TNT1 A 0 A_Explode(40, 72, 0)
			TNT1 AAAAAAAAAAA 0 A_SpawnItemEx("ChegovaxMeteorSplit_2", 0, 0, 0, frandom(-projvel, projvel), frandom(-projvel, projvel), frandom(0, projvel), 0, SXF_TRANSFERPOINTERS)
			RW6F IJKL 3 Bright
		Stop
	}
}

Actor ChegovaxMeteorSplit_2 : ChegovaxMeteorSplit_1 {
	Height 8
	Radius 4
	Speed 18
	Damage (12)
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 A_Jump(256, "1", "2")
		1:
			RW6G H 1
		Loop
		2:
			RW6G I 1
		Loop
		Death:
			TNT1 A 0 A_ChangeVelocity(0, 0, 0)
			TNT1 A 0 A_ChangeFlag("NOGRAVITY", 1)
			TNT1 AA 0 A_CustomMissile("RocketSmokeSmall", 0, 0, random(0, 360), 2, random(0, 180))
			TNT1 AAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 180))
			TNT1 A 0 A_Explode(20, 40, 0)
			TNT1 A 0 A_SetScale(0.75, 0.75)
			RW6F IJKL 3 Bright
		Stop
	}
}

Actor ChegovaxFire {
	Projectile
	Height 16
	Radius 8
	Speed 35
	Damage (18)
	DamageType "MagicalFire"
	Stamina 40 // magic + fire
	SeeSound "weapons/magic1"
	DeathSound "weapons/firex4"
	RENDERSTYLE ADD
	ALPHA 0.80
	+DONTBLAST
	+THRUGHOST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			BOLT A 2 Bright A_SpawnItem("RedPuff",0,0)
		Loop
		Death:
			TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 AAA 0 A_SpawnItemEx("ExplosionFX8", 0, 0, 0, frandom(-1, 1), frandom(-1, 1), frandom(-1, 1))
			TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
			HBAL EFHI 2 Bright
		stop
	}
}

ACTOR GuardianSpawner {
	PROJECTILE
	Radius 24
	Height 56
	Speed 25
	Damage (random(6, 10) * 6)
	Alpha 0.90
	+THRUGHOST   
	+FORCEXYBILLBOARD
	+SEEKERMISSILE
	+DONTBLAST
	-NOGRAVITY
	Seesound "weapons/smlbrn"
	DeathSound "vile/firecrkl"
	Translation "112:127 = 176:191"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			SEF2 ABCD 2 Bright
		loop
		Death:
			TNT1 A 0 A_ChangeFlag("NOGRAVITY", 1)
			TNT1 A 0 A_ChangeVelocity(0, 0, 0, CVF_REPLACE)
			FIRR A 2 Bright A_Stop
			TNT1 A 0 A_SpawnItemEX("Guardian_NoExp",0,0,0,0,0,0,0,SXF_SETMASTER)
			FIRR BABCBCBCDCDCDEDEDEFEFEFGHGHGH 2 Bright 
		stop
	}
}

Actor Guardian_NoExp : Guardian {
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_GUARDIAN)
			TNT1 A 0 A_SetArg(1, DND_SUMMONED)
		Goto SpawnSetup
	}
}

Actor ChegovaxExp1 : BaseExplosionDamage {
	DamageType "Explosive"
	Stamina 4
	Obituary "%o fell victim to Chegovax the Overseer."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(80, 80, 0)
		Stop
	}
}

Actor ChegovaxExp2 : ChegovaxExp1 {
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(128, 128, 0)
		Stop
	}
}

Actor ChegovaxExp3 : ChegovaxExp1 {
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(144, 144, 0)
		Stop
	}
}

Actor ChegovaxExp4 : ChegovaxExp1 {
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(176, 176, 0)
		Stop
	}
}

Actor Onimuz : DnD_BaseHybridMonster_NoRes {
	Health 0x7FFFFFFF
    GibHealth -10
	Radius 20
	Height 60
	Speed 12
	PainChance 48
	Seesound "monster/horshacksee"
	ActiveSound "monster/horshackact"
	PainSound "monster/horshackpain"
	DeathSound "monster/horshackdie"
	Obituary "%o fell victim to Onimuz the Unbroken."
	Mass 256
	Tag "Onimuz the Unbroken"
	Species "Skeleton"
	+ISMONSTER
	+NOBLOOD
	+NOTARGET
	+NOINFIGHTING
	+DONTHURTSPECIES
	+DONTHARMSPECIES
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_ONIMUZ)
		Goto SpawnSetup
		
		IdleState:
			UE08 A 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE08 B 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE08 C 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE08 D 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			UE08 ABCD 3 Fast A_Chase
		Goto See
		MeleeState:
			UE08 E 8 Fast A_FaceTarget
			UE08 F 7 Fast A_FaceTarget
			UE08 G 6 Fast A_CustomComboAttack("RedAxe2", 32, 4 * random(5, 8), "hknight/melee")
			UE08 H 8 Fast A_FaceTarget
			UE08 I 7 Fast A_FaceTarget
			UE08 J 6 Fast A_CustomComboAttack("RedAxe2", 32, 4 * random(5, 8), "hknight/melee")
		Goto See
		MissileState:
			TNT1 A 0 A_TakeInventory("DnD_Boolean", 1)
			TNT1 A 0 A_Jump(192, "ThrowAxe")
			TNT1 A 0 A_JumpIfInventory("ProjectionCooldown", 1, "ThrowAxe")
			TNT1 A 0 A_JumpIfCloser(1024, "Projection")
		Goto ThrowAxe
		Projection:
			TNT1 A 0 A_FaceTarget
			UE08 G 5 Fast A_CustomMissile("OnimuzProjection_Missile")
		ProjectionLoop:
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "ProjectionFinish")
			UE08 G 5 Fast A_FaceTarget
		Loop
		ProjectionFinish:
			UE08 G 1 Fast
		Goto See
		ThrowAxe:
			TNT1 A 0 A_Jump(128, "Multi_Left", "Multi_Right")
			TNT1 A 0 A_JumpIfHealthLower (ACS_ExecuteWithResult(961, 7) / 2, "MoreAxe") 
			UE08 E 7 Fast A_FaceTarget
			UE08 F 6 Fast A_FaceTarget
			UE08 G 5 Fast A_CustomMissile("RedAxe2", 32, -6)
			UE08 H 7 Fast A_FaceTarget
			UE08 I 6 Fast A_FaceTarget
			UE08 J 5 Fast A_CustomMissile("RedAxe2", 32, 6)
			UE08 J 1 Fast A_Jump(64, "ThrowAxe")
		Goto See
		Multi_Left:
			UE08 EEEEE 5 Fast A_FaceTarget
			UE08 F 5 Fast A_CustomMissile("RedAxe2", 32, -6, -20 + angle, CMF_ABSOLUTEANGLE)
			UE08 F 5 Fast A_CustomMissile("RedAxe2", 32, -6, -12 + angle, CMF_ABSOLUTEANGLE)
			UE08 F 5 Fast A_CustomMissile("RedAxe2", 32, -6, -4 + angle, CMF_ABSOLUTEANGLE)
			UE08 G 5 Fast A_CustomMissile("RedAxe2", 32, -6, 4 + angle, CMF_ABSOLUTEANGLE)
			UE08 G 5 Fast A_CustomMissile("RedAxe2", 32, -6, 12 + angle, CMF_ABSOLUTEANGLE)
		Goto See
		Multi_Right:
			UE08 HHHHH 5 Fast A_FaceTarget
			UE08 I 5 Fast A_CustomMissile("RedAxe2", 32, -6, 20 + angle, CMF_ABSOLUTEANGLE)
			UE08 I 5 Fast A_CustomMissile("RedAxe2", 32, -6, 12 + angle, CMF_ABSOLUTEANGLE)
			UE08 I 5 Fast A_CustomMissile("RedAxe2", 32, -6, 4 + angle, CMF_ABSOLUTEANGLE)
			UE08 J 5 Fast A_CustomMissile("RedAxe2", 32, -6, -4 + angle, CMF_ABSOLUTEANGLE)
			UE08 J 5 Fast A_CustomMissile("RedAxe2", 32, -6, -12 + angle, CMF_ABSOLUTEANGLE)
		Goto See
		MoreAxe:
			UE08 E 7 Fast A_FaceTarget
			UE08 F 6 Fast A_FaceTarget
			TNT1 A 0 A_CustomMissile("RedAxe2", 32, -6, -9)
			TNT1 A 0 A_CustomMissile("RedAxe2", 32, -6, 9)
			UE08 G 5 Fast A_CustomMissile("RedAxe2", 32, -6)
			UE08 H 7 Fast A_FaceTarget
			UE08 I 6 Fast A_FaceTarget
			TNT1 A 0 A_CustomMissile("RedAxe2", 32, 6, -9)
			TNT1 A 0 A_CustomMissile("RedAxe2", 32, 6, 9)
			UE08 J 5 Fast A_CustomMissile("RedAxe2", 32, 6)
			UE08 J 1 Fast A_Jump(64, "ThrowAxe")
		Goto See
		PainState:
			UE08 K 3 Fast A_GiveInventory("DnD_Boolean", 1)
			UE08 K 3 Fast A_Pain
		Goto See
		XDeathState:
		DeathState:
			TNT1 A 0 A_GiveInventory("DnD_Boolean", 1)
			TNT1 AAAAA 0 A_SpawnItemEx("ExplosionFXMagic", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128)
			UE08 L 5 A_CustomMissile("OnimuzDeathFX", 0, 0, 0, CMF_AIMDIRECTION, 90)
			TNT1 A 0 A_Scream
			UE08 MMM 2 A_SpawnItemEx("ExplosionFXMagic", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128)
			TNT1 A 0 A_NoBlocking
			UE08 NNN 2 A_SpawnItemEx("ExplosionFXMagic", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128)
			UE08 OPQ 5
			UE08 R -1
		Stop
		Death.MagicSealing:
			"####" "#" 0 A_GiveInventory("DnD_Boolean", 1)
		Goto Super::Death.MagicSealing
		Death.Emerald:
			"####" "#" 0 A_GiveInventory("DnD_Boolean", 1)
		Goto Super::Death.Emerald
		Death.Ice:
		Death.P_Ice:
			"####" "#" 0 A_GiveInventory("DnD_Boolean", 1)
		Goto Super::Death.P_Ice
	}
}

Actor ProjectionCooldown : PowerDamage {
	damagefactor "normal", 1.0
	powerup.duration 15
}

Actor OnimuzProjection : DnD_BaseHybridMonster_NoRes {
	Health 0x7FFFFFFF
	Radius 20
	Height 56
	Speed 12
	SeeSound ""
	DeathSound ""
	ActiveSound ""
	Obituary "%o fell victim to Onimuz the Unbroken."
	Mass 0x7FFFFFFF
	Tag "Onimuz Projection"
	Renderstyle Add
	Alpha 0.875
	+ISMONSTER
	-SHOOTABLE
	-SOLID
	-COUNTKILL
	+NOTARGET
	+NOGRAVITY
	+FLOAT
	+NOINFIGHTING
	+MISSILEMORE
	+LOOKALLAROUND
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_PHANTASM) // so it doesnt become elite
		Goto SpawnSetup
		
		IdleState:
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "IdleLoop")
			TNT1 A 0 A_UnsetShootable
			TNT1 A 0 A_UnsetSolid
			TNT1 A 0 A_GiveInventory("DnD_Boolean", 1)
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Timed Monster", 0, 20, 0)
			UE08 A 2
		IdleLoop:
			UE08 A 2 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		
		SeeState:
			TNT1 A 0 A_Chase
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "Remove", AAPTR_MASTER)
			UE08 A 3 Fast A_SpawnItemEx("OnimuzProjection_TrailA")
			TNT1 A 0 A_Chase
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "Remove", AAPTR_MASTER)
			UE08 B 3 Fast A_SpawnItemEx("OnimuzProjection_TrailB")
			TNT1 A 0 A_Chase
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "Remove", AAPTR_MASTER)
			UE08 C 3 Fast A_SpawnItemEx("OnimuzProjection_TrailC")
			TNT1 A 0 A_Chase
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "Remove", AAPTR_MASTER)
			UE08 D 3 Fast A_SpawnItemEx("OnimuzProjection_TrailD")
		Goto See

		MeleeState:
			UE08 E 4 Fast A_FaceTarget
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "Remove", AAPTR_MASTER)
			UE08 E 4 Fast A_FaceTarget
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "Remove", AAPTR_MASTER)
			UE08 F 3 Fast A_FaceTarget
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "Remove", AAPTR_MASTER)
			UE08 F 4 Fast A_FaceTarget
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "Remove", AAPTR_MASTER)
			UE08 G 6 Fast A_CustomComboAttack("RedAxe2", 32, 4 * random(5, 8), "hknight/melee")
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "Remove", AAPTR_MASTER)
			UE08 H 4 Fast A_FaceTarget
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "Remove", AAPTR_MASTER)
			UE08 H 4 Fast A_FaceTarget
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "Remove", AAPTR_MASTER)
			UE08 I 3 Fast A_FaceTarget
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "Remove", AAPTR_MASTER)
			UE08 I 4 Fast A_FaceTarget
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "Remove", AAPTR_MASTER)
			UE08 J 6 Fast A_CustomComboAttack("RedAxe2", 32, 4 * random(5, 8), "hknight/melee")
		Goto See
		MissileState:
			UE08 E 6 Fast A_FaceTarget
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "Remove", AAPTR_MASTER)
			UE08 F 5 Fast A_FaceTarget
			UE08 G 4 Fast A_CustomMissile("RedAxe2", 32, -6)
			UE08 H 6 Fast A_FaceTarget
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "Remove", AAPTR_MASTER)
			UE08 I 5 Fast A_FaceTarget
			UE08 J 4 Fast A_CustomMissile("RedAxe2", 32, 6)
			UE08 J 1 Fast A_Jump(64, "MissileState")
		Goto See

		DeathState:
		XDeathState:
		Remove:
			TNT1 A 0 A_GiveInventory("Mo_Died", 1)
			TNT1 A 0 A_SpawnItemEx("DissipationEffect")
			TNT1 A 0 A_GiveInventory("ProjectionCooldown", 1, AAPTR_MASTER)
			TNT1 A 0 A_Scream
			UE08 LLLLLLL 2 A_FadeOut(0.1125)
		Stop
	}
}

Actor OnimuzProjection_Missile {
	Projectile
	Height 30
	Radius 20
	Damage (0)
	Renderstyle Add
	Alpha 1.0
	Speed 24
	SeeSound "Phantasm/Attack"
	Deathsound "Phantasm/Rise"
	+SEEKERMISSILE
	+LOOKALLAROUND
	+DONTBLAST
	States {
		Spawn:
			UE08 AA 2 A_SpawnItemEx("OnimuzProjection_TrailA")
			TNT1 A 0 A_SeekerMissile(75, 75)
			UE08 BB 2 A_SpawnItemEx("OnimuzProjection_TrailB")
			TNT1 A 0 A_SeekerMissile(75, 75)
			UE08 CC 2 A_SpawnItemEx("OnimuzProjection_TrailC")
			TNT1 A 0 A_SeekerMissile(75, 75)
			UE08 DD 2 A_SpawnItemEx("OnimuzProjection_TrailD")
			TNT1 A 0 A_SeekerMissile(75, 75)
		Loop
		Death:
			TNT1 A 8 ACS_NamedExecuteWithResult("DnD Onimuz Clone Spawn")
		Stop
	}
}

Actor OnimuzProjection_TrailA {
	RenderStyle Add
	Alpha 1.0
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			UE08 A 1 A_FadeOut(0.0875)
		Wait
	}
}

Actor OnimuzProjection_TrailB : OnimuzProjection_TrailA {
	States {
		Spawn:
			UE08 B 1 A_FadeOut(0.0875)
		Wait
	}
}

Actor OnimuzProjection_TrailC : OnimuzProjection_TrailA{
	States {
		Spawn:
			UE08 C 1 A_FadeOut(0.0875)
		Wait
	}
}

Actor OnimuzProjection_TrailD : OnimuzProjection_TrailA {
	States {
		Spawn:
			UE08 D 1 A_FadeOut(0.0875)
		Wait
	}
}

Actor OnimuzDeathFX {
	PROJECTILE
	Radius 10
	Height 40
	Renderstyle Add
	Alpha 0.65
	+THRUACTORS
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 0 A_SpawnItem("OnimuzDeathFX_Trail")
			TNT1 A 0 ThrustThingZ(0, 16, 0, 0)
			TNT1 A 0 ThrustThing(angle * 256 / 360, 4, 0, 0)
			UE08 K 3 A_SetAngle(angle + 15)
			TNT1 A 0 A_Stop
		Loop
	}
}

Actor OnimuzDeathFX_Trail {
	Renderstyle Add
	Alpha 0.65
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			UE08 K 1 A_FadeOut(0.05)
		Loop
	}
}

Actor Harkimonde : DnD_BaseHybridMonster_NoRes {
	Health 0x7FFFFFFF
    GibHealth -10
	Radius 30
	Height 64
	Speed 8
	PainChance 56
	SeeSound "Harkimonde/See"
	PainSound "Harkimonde/pain"
	DeathSound "Harkimonde/Die"
	ActiveSound "Harkimonde/Act"
	Obituary "%o fell victim to Harkimonde the Tormentor."
	MeleeRange 288
	Mass 2048
	Tag "Harkimonde the Tormentor"
	Species "HK"
	+ISMONSTER
	+MISSILEMORE
	+NOTARGET
	+NOINFIGHTING
	+DONTHURTSPECIES
	+DONTHARMSPECIES
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_HARKIMONDE)
		Goto SpawnSetup
		
		IdleState:
			UE09 A 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE09 B 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE09 C 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE09 D 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			TNT1 A 0 A_ChangeFlag("NOBLOOD", 0)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
			UE09 AABBCCDD 2 Fast A_Chase
		Goto See
		MeleeState:
			TNT1 A 0 A_TakeInventory("DND_Boolean", 1)
			TNT1 A 0 A_JumpIfCloser(96, "ShieldBash")
		IgnoreBash:
			TNT1 A 0 A_PlaySound("weapons/hamswg", CHAN_WEAPON)
			UE09 H 5 A_FaceTarget
			UE09 I 4 A_FaceTarget
			TNT1 A 0 A_CustomMissile("HarkimondeSlash", 32)
			UE09 J 7 A_JumpIfCloser(80, "ConfirmedMelee")
		Goto See
		ConfirmedMelee:
			UE09 J 7 A_CustomMeleeAttack(random(40, 65))
		Goto See
		MissileState:
			TNT1 A 0 A_Jump(108, "Leap")
		MissileGo:
			TNT1 A 0 A_ChangeFlag("NOBLOOD", 1)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_ISBLOCKING, -1, -1, -1)
			UE09 EE 4 Fast A_FaceTarget
			UE09 F 10 Fast Bright A_CustomMissile("HarkimondeFlameTracer", 32)
			TNT1 A 0 A_Jump(128, "OneMore")
			TNT1 A 0 A_ChangeFlag("NOBLOOD", 0)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
			UE09 E 1 Fast A_FaceTarget
		Goto See
		Leap:
			TNT1 A 0 A_JumpIfCloser(400, "LeapGo")
		Goto MissileGo
		LeapGo:
			TNT1 A 0 A_PlaySound("Harkimonde/Leap")
			TNT1 A 0 A_TakeInventory("MonsterLeapFinish", 1)
			UE09 HHHH 4 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("Harkimonde/Jump")
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Monster Leap")
			UE09 H 2 Fast ACS_NamedExecuteWithResult("DnD On Solid Surface", 1)
		LeapLoop:
			UE09 I 3 Fast A_JumpIfInventory("MonsterLeapFinish", 1, "LeapFinish")
		Loop
		LeapFinish:
			UE09 J 4 Fast A_TakeInventory("MonsterLeapFinish", 1)
		Goto See
		OneMore:
			UE09 EE 4 Fast A_FaceTarget
			UE09 F 10 Fast Bright A_CustomMissile("HarkimondeFlameTracer", 32)
			TNT1 A 0 A_ChangeFlag("NOBLOOD", 0)
			UE09 F 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
		Goto See
		ShieldBash:
			TNT1 A 0 A_Jump(128, "IgnoreBash")
			UE09 E 5 Fast A_FaceTarget
			TNT1 A 0 A_ChangeFlag("NOBLOOD", 1)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_ISBLOCKING, -1, -1, -1)
			UE09 F 7 Fast Bright A_CustomMissile("HarkimondeBash", 32)
			TNT1 A 0 A_ChangeFlag("NOBLOOD", 0)
			UE09 F 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
		Goto See
		PainState:
			UE09 G 12 Fast A_Pain
			TNT1 A 0 A_ChangeFlag("NOBLOOD", 1)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_ISBLOCKING, -1, -1, -1)
			UE09 EEEEE 7 A_FaceTarget
			TNT1 A 0 A_ChangeFlag("NOBLOOD", 0)
			UE09 E 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low", 0, 0, 32, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			TNT1 A 0 A_TakeInventory("DND_Boolean", 1)
			UE09 L 4 A_Scream
			UE09 MN 4
			UE09 O 4 A_NoBlocking
			UE09 PQRS 4
			UE09 T -1
		Stop
	}
}

Actor MonsterLeapFinish : DnD_Boolean { }

Actor HarkimondeLand : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_PlaySound("PurpleDemon/Land", 6)
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Harkimonde Smoke FX")
			TNT1 A 0 A_SpawnItem("HarkimondeExp3")
		Stop
	}
}

Actor HarkimondeSmokeFXSpawner : DnD_Activator {
	States {
		Pickup:
			TNT1 AAAA 0 A_SpawnItemEx("RocketSmoke", frandom(-24, 24), frandom(-24, 24), frandom(24, 36), frandom(-3, 3), frandom(-3, 3), frandom(-1, 2))
		Stop
	}
}

Actor HarkimondeFlightDamager : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_CustomMissile("HarkimondeFlightAtk", 24, 0, 0, CMF_AIMDIRECTION)
		Stop
	}
}

Actor HarkimondeFlightAtk : DemonFlightAtk {
	Radius 8
	Height 16
	Damage (6 * random(4, 5))
	DamageType "Melee"
	Stamina 1
	Species "HK"
	States {
		Spawn:
			TNT1 A 1 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		Stop
		Death:
			TNT1 A 1
		Stop
	}
}

actor HarkimondeBash : PaladinBash {
	DamageType "Melee"
	Stamina 1
	damage (4 * random(2, 3))
	deathsound "weapons/vblhit"
	States {
		spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			TNT1 AA 1 A_SeekerMissile(90, 90, SMF_PRECISE)
		stop
		death:
			TNT1 A 0 A_Quake(4, 17, 0, 256)
			TNT1 A 1 ACS_NamedExecuteWithResult("DnD Projectile Push", 18)
			TNT1 A 1
		stop
	}
}

Actor HarkimondeSlash_Damager {
	PROJECTILE
	Speed 0
	Damage (5)
	Radius 8
	Height 16
	+THRUSPECIES
	+DONTBLAST
	+NODAMAGETHRUST
	States {
		Spawn:
			TNT1 A 1
		Stop
		XDeath:
			TNT1 A 1 A_PlaySound("jpcpfist/hit")
		Stop
		Death:
			TNT1 A 1
		Stop
	}
}

ACTOR HarkimondeSlash {
	PROJECTILE
	Radius 4
	Height 8
	Speed 25
	Damage 0
	RENDERSTYLE ADD
	ALPHA 0.75
	XScale 0.175
	YScale 0.35
	+RIPPER
	+EXTREMEDEATH
	+DONTBLAST
	+DONTREFLECT
	var int user_exprad;
	ReactionTime 20
	States {
		Spawn:
			VFX4 A 1 Bright A_SpawnItem("HarkimondeSlashTrail",0,0)
			VFX4 A 0 A_CustomMissile("HarkimondeSlash_Damager", 0, 0, 0, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			VFX4 A 0 A_CustomMissile("HarkimondeSlash_Damager", 16, -16, 0, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			VFX4 A 0 A_CustomMissile("HarkimondeSlash_Damager", -16, 16, 0, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			VFX4 A 0 A_Countdown
		Loop
		XDeath:
			"####" "#" 1 Bright A_FadeOut(0.0875)
		Wait
		Death:
			"####" "#" 0 A_Stop
			"####" "#" 0 A_ChangeVelocity(0, 0, 0, CVF_REPLACE)
			"####" "#" 1 Bright A_FadeOut(0.0875)
		Wait
	}
}

ACTOR HarkimondeSlashTrail {
	Radius 3
	Height 3
	RENDERSTYLE ADD
	ALPHA 0.80
	XScale 0.175
	YScale 0.35
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			TNT1 A 1
			VFX4 A 2 Bright A_FadeOut(0.10)
		Goto Spawn + 1
	}
}

Actor HarkimondeFlameTracer {
	Radius 5
	Height 16
	Speed 16
	ReactionTime 96
	Damage (4 * random(5, 8))
	DamageType "MagicalFire"
	Stamina 40
	RenderStyle Add
	Alpha 0.67
	Projectile
	MaxStepHeight 32
	+FLOORHUGGER
	+SeekerMissile
	+STEPMISSILE
	+ThruGhost
	+DONTBLAST
	-NoGravity
	Obituary "%o fell victim to Harkimonde the Tormentor."
	Seesound "weapons/diasht"
	DeathSound "weapons/firex3"   
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			TNT1 A 1 Bright A_SeekerMissile(12, 12)
			TNT1 A 0 A_Countdown
			TNT1 A 1 Bright A_CustomMissile("Harkimonde_BoomTrail", 0, 0, 0, CMF_TRACKOWNER)
			TNT1 A 0 A_Countdown
			TNT1 A 1 Bright A_CustomMissile("Harkimonde_BoomTrail", 0, 0, 0, CMF_TRACKOWNER)
			TNT1 A 0 A_Countdown
			TNT1 A 0 A_CustomMissile("Harkimonde_BoomTrail", 0, 0, 0, CMF_TRACKOWNER)
		Loop
		Death:
			TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 AAA 0 A_SpawnItemEx("ExplosionFX2", 0, 0, 0, frandom(-1, 1), frandom(-1, 1), frandom(-1, 1))
			TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
			FTRA K 4 Bright
			FTRA L 4 Bright A_SpawnItem("DiabloExp6")
			FTRA MNO 3 Bright
		Stop
	}
}

Actor Harkimonde_BoomTrail {
	Projectile
	var int user_count;
	Speed 0
	Radius 5
	Height 16
	Damage ((16 - user_count))
	DamageType "MagicalFire"
	Stamina 40
	RenderStyle Add
	Alpha 0.67
	+DONTBLAST
	States {
		Spawn:
			TNT1 A 0 NoDelay A_SetUserVar("user_count", 0)
			FTRA AB 3 Bright
			FTRA CDEFGHIJ 3 Bright A_SetUserVar("user_count", user_count + 2)
		stop
		Death:
			TNT1 AAA 0 A_SpawnItemEx("ExplosionFX2", 0, 0, 0, frandom(-1, 1), frandom(-1, 1), frandom(-1, 1))
			FTRA K 4 Bright A_SpawnItem("HarkimondeExp2")
			FTRA L 4 Bright
			FTRA MNO 3 Bright
		Stop
	}
}

Actor HarkimondeExp1 : BaseExplosionDamage {
	DamageType "ExplosiveFire"
	Stamina 36
	Obituary "%o fell victim to Harkimonde the Tormentor."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(64, 96, 0)
		Stop
	}
}

Actor HarkimondeExp2 : BaseExplosionDamage {
	DamageType "ExplosiveFire"
	Stamina 36
	Obituary "%o fell victim to Harkimonde the Tormentor."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(32, 64, 0)
		Stop
	}
}

Actor HarkimondeExp3 : BaseExplosionDamage {
	DamageType "ExplosiveFire"
	Stamina 36
	Obituary "%o fell victim to Harkimonde the Tormentor."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(60, 96, 0)
		Stop
	}
}

Actor Leshrac : DnD_BaseHybridMonster_NoRes {
	Health 0x7FFFFFFF
    GibHealth -10
	Radius 30
	Height 64
	Speed 9
	PainChance 64
	SeeSound "Leshrac/See"
	PainSound "Leshrac/pain"
	DeathSound "Leshrac/Die"
	ActiveSound "Leshrac/act"
	Obituary "%o fell victim to Leshrac the Vile."
	DamageFactor "BaronsPoisonPod", 0
	MeleeRange 108
	Mass 2048
	Tag "Leshrac the Vile"
	const float ms = 8.0;
	const float fire_z = 48.0;
	const int mine_limit = 20;
	Species "HK"
	+ISMONSTER
	-FLOORCLIP
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_LESHRAC)
		Goto SpawnSetup
		
		IdleState:
			UE11 A 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE11 B 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE11 C 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE11 D 5 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			UE11 ABCDEF 3 Fast A_Chase
			UE11 "#" 0 A_Jump(32, "PoisonMine")
		Goto See
		MeleeState:
			UE11 HHHH 4 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("torturedsoul/poison") 
			UE11 IIIIIIIIII 1 Fast Bright A_CustomMissile("LeshracPoisonMelee", 56, frandom(-3.75, 3.75), frandom(-20, 20))
		Goto See
		MissileState:
			TNT1 A 0 A_Jump(128, "LobbedMines")
		BallAttack:
			UE11 HHH 3 Fast A_FaceTarget
			TNT1 A 0 A_FaceTarget
			UE11 I 4 Bright A_CustomMissile("Leshrac_Ball", fire_z, 0, frandom(-9, 9), CMF_OFFSETPITCH, frandom(-2.5, 2.5))
			TNT1 A 0 A_FaceTarget
			UE11 I 4 Bright A_CustomMissile("Leshrac_Ball", fire_z, 0, frandom(-9, 9), CMF_OFFSETPITCH, frandom(-2.5, 2.5))
			TNT1 A 0 A_FaceTarget
			UE11 I 4 Bright A_CustomMissile("Leshrac_Ball", fire_z, 0, frandom(-9, 9), CMF_OFFSETPITCH, frandom(-2.5, 2.5))
			TNT1 A 0 A_FaceTarget
			UE11 I 4 Bright A_CustomMissile("Leshrac_Ball", fire_z, 0, frandom(-9, 9), CMF_OFFSETPITCH, frandom(-2.5, 2.5))
			TNT1 A 0 A_FaceTarget
			UE11 I 4 Bright A_CustomMissile("Leshrac_Ball", fire_z, 0, frandom(-9, 9), CMF_OFFSETPITCH, frandom(-2.5, 2.5))
			UE11 H 3 Fast A_FaceTarget
		Goto See
		LobbedMines:
			TNT1 A 0 A_JumpIfCloser(512, "ContinueLob")
		Goto BallAttack
		ContinueLob:
			UE11 HH 8 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("weapons/crabf2")
			UE11 I 7 Bright ACS_NamedExecuteWithResult("DnD Leshrac Lob", 0, fire_z)
		Goto See
		PoisonMine:
			UE11 "#" 0 A_JumpIfInventory("DnD_Info", mine_limit, "See")
			UE11 H 7 Fast
			TNT1 A 0 A_GiveInventory("DnD_Info", 1)
			UE11 I 9 Fast A_SpawnItemEx("LeshracPoisonMine", 24, 0, fire_z, ms * cos(angle), ms * sin(angle), 4, 0, SXF_ABSOLUTEVELOCITY | SXF_SETMASTER)
			UE11 H 4 Fast
		Goto See
		PainState:
			TNT1 A 0 A_GiveInventory("LeshracInterrupt", 1)
			UE11 G 9 Fast A_Pain
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low", 0, 0, 32, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			TNT1 A 0 A_TakeInventory("DnD_Info", 0)
			UE11 R 4 A_Scream
			TNT1 A 0 A_KillChildren("Perish")
			UE11 S 4 A_NoBlocking
			UE11 T 5
			UE11 UVWXY 5
			UE11 Z -1 A_KillMaster
		Stop
	}
}

Actor LeshracInterrupt : PowerDamage {
	damagefactor "normal", 1.0
	powerup.duration 6
}

actor LeshracPoisonMelee : TorturedSoulPoison { 
    Damage (random(1, 3)) 
	DamageType "Poison"
	Stamina 128
	Speed 7
}

ACTOR Leshrac_Ball : ShadowBeast_Ball1 {
	Speed 22
	Radius 10
	Height 18
	Damage (5 * random(5, 8))
	DamageType "Poison"
	Stamina 128
}

Actor LeshracPoisonMine : DnD_BaseMeleeMonster_NoRes {
	Health 0x7FFFFFFF
	Radius 16
	Height 54
	PainChance 255
	MeleeRange 64
	Mass 96
	BloodType "LeshracMine_Goo"
	Tag "Poisonous Mine"
	Species "HK"
	const int mine_timer = 35;
	var int user_count;
	+THRUSPECIES
	+SOLID
	+SHOOTABLE
	+DROPOFF
	+WINDTHRUST
	+PUSHABLE
	+SLIDESONWALLS
	-TELESTOMP
	+ISMONSTER
	+DONTMORPH
	+DONTGIB
	+LOOKALLAROUND
	+NOINFIGHTING
	+NOTARGET
	+QUICKTORETALIATE
	DeathSound "Leshrac/BigMineExp"
	DamageType "PoisonPod"
	Stamina 128
	DamageFactor "PoisonPod", 3.0
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_LESHRACPOD)
			TNT1 A 0 A_SetArg(1, DND_SUMMONED)
			TNT1 A 0 A_SetUserVar("user_count", 0)
		Goto SpawnSetup
		
		IdleState:
			UP11 IJKLMNOP 3
		IdleLoop:
			UP11 A 10 A_GiveInventory("DnD_SightChecker", 1)
			UP11 "#" 0 A_SetUserVar("user_count", user_count + 1)
			UP11 "#" 0 A_JumpIf(user_count == mine_timer, "TimesUp")
		Loop
		SeeState:
			UP11 "#" 0 A_JumpIfCloser(128, "Caution")
			UP11 A 10 A_JumpIfCloser(64, "BlowUp")
			UP11 "#" 0 A_SetUserVar("user_count", user_count + 1)
			UP11 "#" 0 A_JumpIf(user_count == mine_timer, "TimesUp")
			UP11 "#" 0 A_ClearTarget
		Goto IdleLoop
		Caution:
			UP11 Q 10 A_JumpIfCloser(64, "BlowUp")
			UP11 "#" 0 A_SetUserVar("user_count", user_count + 1)
			UP11 "#" 0 A_JumpIf(user_count == mine_timer, "TimesUp")
			UP11 "#" 0 A_ClearTarget
		Goto See
		MeleeState:
		BlowUp:
			TNT1 A 0 A_NoBlocking
			UP11 C 5 Bright A_ChangeFlag("SHOOTABLE", 0)
			TNT1 A 0 A_TakeInventory("DnD_Info", 1, AAPTR_MASTER)
			UP11 D 5 Bright A_Scream
			TNT1 A 0 A_Quake(4, 10, 0, 160)
			TNT1 AAAAA 0 A_SpawnItemEx("ExplosionFXMagicGreen", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128)
			TNT1 A 0 A_SpawnItemEx("GreenParticleSpawner")
			UP11 E 5 Bright A_SpawnItemEx("Leshrac_MineExplosion")
			UP11 F 10 Bright
		Stop
		TimesUp:
			UP11 "#" 10 Thing_Damage(0, 0x7FFFFFFF)
		Wait
		PainState:
			TNT1 A 0 A_SpawnItemEx("LeshracMine_Goo", frandom(-8, 8), frandom(-8, 8), frandom(20, 36), frandom(-2, 2), frandom(-2, 2), frandom(0.5, 2.5), 0, SXF_CLIENTSIDE, 224)
			UP11 B 14 A_SpawnItemEx("LeshracMine_Goo", frandom(-8, 8), frandom(-8, 8), frandom(20, 36), frandom(-2, 2), frandom(-2, 2), frandom(0.5, 2.5), 0, SXF_CLIENTSIDE, 128)
		Goto SeeState
		XDeathState:
		DeathState:
			UP11 C 5 Bright A_NoBlocking
			TNT1 A 0 A_TakeInventory("DnD_Info", 1, AAPTR_MASTER)
			UP11 D 5 Bright A_Scream
			TNT1 A 0 A_Quake(4, 10, 0, 160)
			TNT1 AAAAA 0 A_SpawnItemEx("ExplosionFXMagicGreen", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128)
			TNT1 A 0 A_SpawnItemEx("GreenParticleSpawner")
			UP11 E 5 Bright A_SpawnItemEx("Leshrac_MineExplosion")
			UP11 F 10 Bright
		Stop
	}
}

Actor Leshrac_MineExplosion : BaseExplosionDamage {
	DamageType "PoisonPod"
	Stamina 128
	Obituary "%o fell victim to Leshrac the Vile."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 5 A_Explode(160, 160)
		Stop
	}
}

Actor LeshracMine_Goo : PodGoo {
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 0 NoDelay A_ChangeVelocity(2 * cos(frandom(0, 360)), 2 * sin(frandom(0, 360)), frandom(0.5, 2.5), CVF_REPLACE)
		SpawnLoop:
			UP11 GH 8
		Loop
		Death:
			UP11 G 10
		Stop
	}
}

ACTOR Leshrac_LobbedMine {
	PROJECTILE
	Damage (0)
	DamageType "Poison"
	Stamina 128
	Radius 4
	Height 8
	Speed 28
	Gravity 0.5
	BounceType "Doom"
	BounceCount 8
	Alpha 0.8
	-NOGRAVITY
	+THRUGHOST
	+FORCEXYBILLBOARD
	+CANBOUNCEWATER
	BounceSound "weapons/wiggl2"
	States {
		Spawn:
			BNAD ABCD 3 Bright A_SpawnItemEx("AcidFX",0,0,0,0,0,0,0,8)
		loop
		Death:
			TNT1 A 5 A_CustomMissile("Leshrac_LobbedMineGround", 0, 0, 0, CMF_TRACKOWNER)
		stop
	}
}

Actor Leshrac_LobbedMineGround {
	PROJECTILE
	DamageType "Poison"
	Stamina 128
	Alpha 0.8
	Speed 0
	Radius 1
	Height 1
	+THRUACTORS
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 A_PlaySound("Leshrac/Mine", CHAN_WEAPON)
			BNAD A 48 Bright ACS_NamedExecuteAlways("DnD Random Shake", 0, 48, 1, 15)
			BNAD E 3 Bright A_SetTranslucent(0.75, 1)
			TNT1 A 0 A_PlaySound("weapons/crabx2", CHAN_WEAPON)
			TNT1 A 0 A_SpawnItemEx("GreenParticleSpawner")
			TNT1 A 0 A_Explode(36, 80, 0)
			BNAD F 3 Bright
			BNAD GHIJ 3 Bright
		Stop
	}
}

Actor Krull : DnD_BaseRangedMonster_NoRes {
	Health 0x7FFFFFFF
    GibHealth -10
	Radius 56
	Height 80
	Speed 8
	PainChance 56
	MeleeRange 128
	SeeSound "Krull/See"
	PainSound "Krull/pain"
	DeathSound "Krull/Die"
	ActiveSound "Krull/Act"
	Obituary "%o fell victim to Krull the Vicious."
	Mass 2048
	Tag "Krull the Vicious"
	Species "Fatso"
	Scale 0.85
	var int user_a;
	var int user_b;
	+ISMONSTER
	+NORADIUSDMG
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_KRULL)
		Goto SpawnSetup
		
		IdleState:
			UE12 A 4 A_GiveInventory("DnD_SightChecker", 1)
			TNT1 A 0 A_Wander
			UE12 A 4 A_GiveInventory("DnD_SightChecker", 1)
			TNT1 A 0 A_Wander
			UE12 B 4 A_GiveInventory("DnD_SightChecker", 1)
			TNT1 A 0 A_Wander
			UE12 B 4 A_GiveInventory("DnD_SightChecker", 1)
			TNT1 A 0 A_Wander
			UE12 C 4 A_GiveInventory("DnD_SightChecker", 1)
			TNT1 A 0 A_Wander
			UE12 C 4 A_GiveInventory("DnD_SightChecker", 1)
			TNT1 A 0 A_Wander
			UE12 D 4 A_GiveInventory("DnD_SightChecker", 1)
			TNT1 A 0 A_Wander
			UE12 D 4 A_GiveInventory("DnD_SightChecker", 1)
			TNT1 A 0 A_Wander
			UE12 E 4 A_GiveInventory("DnD_SightChecker", 1)
			TNT1 A 0 A_Wander
			UE12 E 4 A_GiveInventory("DnD_SightChecker", 1)
			TNT1 A 0 A_Wander
			UE12 F 4 A_GiveInventory("DnD_SightChecker", 1)
			TNT1 A 0 A_Wander
			UE12 F 4 A_GiveInventory("DnD_SightChecker", 1)
			UE12 F 0 A_Wander
		Loop
		SeeState:
			UE12 AABBCCDDEEFF 4 Fast A_Chase
		Goto See
		MissileState:
		MeleeState:
			TNT1 A 0 A_PlaySound("Krull/Attack", CHAN_VOICE)
			TNT1 A 0 A_TakeInventory("DND_Info", 0)
			UE12 GGG 4 Fast A_FaceTarget
		MissileLoop:
			"####" "#" 0 A_JumpIfInventory("DND_Info", 3, "MissileFinish")
			"####" "#" 1 A_Jump(128, "Triangular")
		Goto Spread
		MissileFinish:
			UE12 I 6 Fast
		Goto See
		Spread:
			TNT1 A 0 A_SetUserVar("user_a", random(1, 2))
			TNT1 A 0 A_SetUserVar("user_b", random(4, 8))
			TNT1 A 0 A_PlaySound("HellsMaw/Fire", CHAN_WEAPON)
			TNT1 A 0 A_CustomMissile("KrullRocket", 34, -47.6, 0)
			TNT1 A 0 A_CustomMissile("KrullRocket", 34, -47.6, -user_a * user_b)
			TNT1 A 0 A_CustomMissile("KrullRocket", 34, -47.6, user_a * user_b)
			TNT1 A 0 A_CustomMissile("KrullRocket", 34, 47.6, 0)
			TNT1 A 0 A_CustomMissile("KrullRocket", 34, 47.6, -user_a * user_b)
			UE12 H 9 Fast Bright A_CustomMissile("KrullRocket", 34, 47.6, user_a * user_b)
			TNT1 A 0 A_GiveInventory("DND_Info", 1)
			UE12 IG 6 Fast A_FaceTarget
		Goto MissileLoop
		Triangular:
			TNT1 A 0 A_SetUserVar("user_a", ACS_NamedExecuteWithResult("DnD Krull Angle", 48) - angle)
			TNT1 A 0 A_PlaySound("HellsMaw/Fire", CHAN_WEAPON)
			TNT1 A 0 A_CustomMissile("KrullRocket", 34, -35.6, -user_a, CMF_AIMOFFSET)
			TNT1 A 0 A_CustomMissile("KrullRocket", 46, -47.6, -user_a, CMF_AIMOFFSET)
			TNT1 A 0 A_CustomMissile("KrullRocket", 34, -59.6, -user_a, CMF_AIMOFFSET)
			TNT1 A 0 A_CustomMissile("KrullRocket", 34, 35.6, user_a, CMF_AIMOFFSET)
			TNT1 A 0 A_CustomMissile("KrullRocket", 46, 47.6, user_a, CMF_AIMOFFSET)
			UE12 H 9 Fast Bright A_CustomMissile("KrullRocket", 34, 59.6, user_a, CMF_AIMOFFSET)
			TNT1 A 0 A_GiveInventory("DND_Info", 1)
			UE12 IG 6 Fast A_FaceTarget
		Goto MissileLoop
		PainState:
			UE12 J 6 Fast
			UE12 J 6 Fast A_Pain
		Goto See
		XDeathState:
		DeathState:
			UE12 K 8 Bright
			UE12 L 8 Bright A_Scream
			UE12 M 8 Bright A_NoBlocking
			UE12 NOPQRS 8 Bright
			UE12 T -1 A_KillMaster
		Stop
	}
}

Actor KrullRocket {
	PROJECTILE
	Damage (5 * random(7, 8))
	DamageType "Explosive"
	Stamina 4
	Speed 30
	Radius 8
	Height 16
	Scale 1.15
	ReactionTime 20
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			HLML A 1 Bright A_SpawnItemEx("HellsMawRocketTrail", 0, 0, 0, 0, 0, 0, 0, 8)
			TNT1 A 0 A_CountDown
		loop
		Death:
			TNT1 A 0 A_JumpIf(reactiontime == 0, "Split")
			TNT1 A 0 A_PlaySound("weapons/heavyrlexp")
		ContinueDying:
			TNT1 AAAAA 0 A_CustomMissile("RocketSmoke_Small", 0, 0, random(0, 360), 2, random(0, 180))
			TNT1 A 0 A_Stop
			TNT1 A 0 A_SetTranslucent(0.85, 1)
			HLML B 3 Bright
			HLML CDEF 3 Bright
		stop
		Split:
			TNT1 A 0 A_PlaySound("weapons/grenadexpl")
			TNT1 AAAAAAA 0 A_CustomMissile("KrullMiniRocket_Split", 0, 0, frandom(-12, 12), CMF_TRACKOWNER | CMF_AIMDIRECTION, frandom(-6, 6))
		Goto ContinueDying
		XDeath:
			TNT1 A 0 A_SetTranslucent(0.85, 1)
			TNT1 A 0 A_PlaySound("Vindicator/FlakExp")
			TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSmall", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			TNT1 AAAAA 0 A_CustomMissile("RocketSmoke_Small", 0, 0, random(0, 360), 2, random(0, 180))
			TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random (0, 360), 2, random (0, 360))
			HLML B 3 Bright A_SpawnItem("KrullRocketExp")
			HLML CDEF 3 Bright
		stop
	}
}

Actor KrullRocketExp : BaseExplosionDamage {
	DamageType "Explosive"
	Stamina 4
	Obituary "%o fell victim to Krull the Vicious."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 4 A_Explode(36, 72, 0)
		Stop
	}
}

Actor KrullMiniRocket : KrullRocket {
	Damage (5 * random(2, 3))
	ReactionTime 20
	DamageType "Explosive"
	Stamina 4
	DeathSound "weapons/maceex"
	+THRUGHOST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			HLML G 1 Bright A_SpawnItemEx("HellsMawMiniRocketTrail", 0, 0, 0, 0, 0, 0, 0, 8)	  
			TNT1 A 0 A_CountDown
		loop
		Death:
			TNT1 A 0 A_Stop
			TNT1 A 0 A_SetTranslucent(0.8,1)
			TNT1 AAA 0 A_CustomMissile("RocketSmoke_Small", 0, 0, random(0, 360), 2, random(0, 180))
			TNT1 AAAAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random (0, 360), 2, random (0, 360))
			HLML L 3 Bright A_SpawnItem("KrullMiniRocketExp")
			HLML MNOPQR 3 Bright 
		stop
	}
}

Actor KrullMiniRocketExp : BaseExplosionDamage {
	DamageType "Explosive"
	Stamina 4
	Obituary "%o fell victim to Krull the Vicious."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 4 A_Explode(18, 36, 0)
		Stop
	}
}

Actor KrullMiniRocket_Split : HellsMawMiniRocket {
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 A_ChangeVelocity(35 * cos(angle), 35 * sin(angle), velz, CVF_REPLACE)
		SpawnLoop:
			HLML G 1 Bright A_SpawnItemEx("HellsMawMiniRocketTrail", 0, 0, 0, 0, 0, 0, 0, 8)	  
			TNT1 A 0 A_CountDown
		loop
	}
}

Actor Thorax : DnD_BaseRangedMonster_NoRes {
	Health 0x7FFFFFFF
    GibHealth -10
	Radius 48
	Height 64
	Speed 11
	PainChance 48
	SeeSound "Thorax/See"
	PainSound "Thorax/pain"
	DeathSound "Thorax/Die"
	ActiveSound "Thorax/Act"
	Obituary "%o fell victim to Thorax the Constrictor."
	Mass 1024
	Tag "Thorax the Constrictor"
	var int user_count;
	const float spd = 18.0;
	+ISMONSTER
	+MISSILEMORE
	+NODROPOFF
	-FLOORCLIP
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_THORAX)
		Goto SpawnSetup
		
		IdleState:
			UE14 A 15 A_GiveInventory("DnD_SightChecker", 1)
			UE14 A 0 A_SetAngle(angle + random(0, 360))
		Loop
		SeeState:
			UE14 BBCCDDEE 3 Fast A_Chase
			UE14 E 1 Fast A_Jump(32, "Dash")
		Goto See
		Dash:
			"####" "#" 0 A_SetUserVar("user_count", random(4, 6))
		DashPreset:
			"####" "#" 0 A_PlaySound("Thorax/Dash")
			"####" "#" 2 A_Stop
			"####" "#" 0 A_Jump(120, "Left")
			"####" "#" 0 A_Jump(130, "Right")
		Goto Straight
		Left:
			"####" "#" 0 A_ChangeVelocity(spd * cos(angle + 90), spd * sin(angle + 90), velz, CVF_REPLACE)
		Goto ContinueDash
		Right:
			"####" "#" 0 A_ChangeVelocity(spd * cos(angle - 90), spd * sin(angle - 90), velz, CVF_REPLACE)
		Goto ContinueDash
		Straight:
			"####" "#" 0 A_ChangeVelocity(spd * cos(angle), spd * sin(angle), velz, CVF_REPLACE)
		Goto ContinueDash
		ContinueDash:
			"####" "#" 0 A_JumpIf(!user_count, "FinishDash")
			"####" "#" 0 A_SetUserVar("user_count", user_count - 1)
			"####" "#" 4 A_SpawnItemEx("ThoraxDashBlur")
		Loop
		FinishDash:
			"####" "#" 0 A_Jump(97, "CheckSight")
			"####" "#" 1 A_Stop
		Goto See
		CheckSight:
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 2, "LobFire")
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 1, "Homingfire")
			"####" "#" 0 A_JumpIfTargetInLOS("Missile", 90)
		Goto See
		MissileState:
			UE14 E 0 A_Jump(128, "Combo")
			UE14 EEE 5 Fast A_FaceTarget
			UE14 E 0 A_Jump(96, "FastDash_Home")
		HomingfireGo:
			UE14 E 0 A_PlaySound("weapons/heavyrlfire", CHAN_WEAPON)
			UE14 F 6 Fast Bright A_CustomMissile("ThoraxMissile_Homing", 30, -19)
			UE14 G 4 Fast
		Goto See
		HomingFire:
			"####" "#" 2 A_FaceTarget
		Goto HomingFireGo
		FastDash_Home:
			"####" "#" 0 A_SetUserVar("user_count", 3)
			"####" "#" 0 A_TakeInventory("DnD_Info", 0)
			"####" "#" 0 A_GiveInventory("DnD_Info", 1)
		Goto DashPreset
		FastDash_Lob:
			"####" "#" 0 A_SetUserVar("user_count", 3)
			"####" "#" 0 A_TakeInventory("DnD_Info", 0)
			"####" "#" 0 A_GiveInventory("DnD_Info", 2)
		Goto DashPreset
		LobFire:
			"####" "#" 2 A_FaceTarget
		Goto LobFireGo
		Combo:
			UE14 E 5 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("weapons/heavyrlfire", CHAN_WEAPON)
			UE14 F 6 Fast Bright A_CustomMissile("ThoraxMissile", 30, -19)
			UE14 G 0 A_Jump(96, "FastDash_Lob")
			UE14 G 4 Fast A_FaceTarget
			UE14 E 5 Fast A_FaceTarget
		LobFireGo:
			TNT1 A 0 A_PlaySound("weapons/basiliskfire2", CHAN_7)
			UE14 H 6 Fast Bright ACS_NamedExecuteWithResult("DnD Thorax Lob", 15, 34)
		Goto See
		PainState:
			UE14 I 3 Fast
			UE14 I 4 Fast A_Pain
		Goto See
		XDeathState:
		DeathState:
			UE14 J 6 A_NoBlocking
			UE14 K 5 A_Scream
			UE14 LMNO 5
			UE14 P -1 A_KillMaster
		Stop
	}
}

Actor ThoraxDashBlur {
	Alpha 0.8
	Renderstyle Translucent
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			UE14 AAAAAAAAAAAAAAAA 2 A_FadeOut(0.04)
		Stop
	}
}

Actor ThoraxMissile {
	Projectile
	Damage (60)
	DamageType "Explosive"
	Stamina 4
	Speed 28
	Height 16
	Radius 8
	Translation "112:127=%[0.00,0.00,0.00]:[1.80,1.03,0.26]", "152:159=%[0.00,0.00,0.00]:[1.63,0.99,0.29]", "9:12=%[0.00,0.00,0.00]:[1.14,0.80,0.18]"
	DeathSound "weapons/heavyrlexp"
	+THRUGHOST
	+FORCEXYBILLBOARD
	+EXPLODEONWATER
	+DONTBLAST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			HMIS A 2 Bright A_SpawnItemEx("DnD_RocketTrail", -12, 0, 10)
		Loop
		Death:
			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 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 A 5 A_SpawnItem("ThoraxMissileExp")
		Stop
	}
}

Actor ThoraxMissile_Homing : ThoraxMissile {
	+SEEKERMISSILE
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			HMIS AA 2 Bright A_SpawnItemEx("DnD_RocketTrail", -12, 0, 10)
			TNT1 A 0 A_SeekerMissile(8, 16)
			TNT1 A 0 A_PlaySound("Weapons/HeatSeek", 7)
			HMIS AA 2 Bright A_SpawnItemEx("DnD_RocketTrail", -12, 0, 10)
			TNT1 A 0 A_SeekerMissile(8, 16)
		Loop
	}
}

Actor ThoraxMissileExp : BaseExplosionDamage {
	DamageType "Explosive"
	Stamina 4
	Obituary "%o fell victim to Thorax the Constrictor."
	Alpha 0.875
	Renderstyle Add
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			MACX A 2 Bright A_Explode(60, 108, 0)
			MACX BCDEFGHIJ 2 Bright
		Stop
	}
}

Actor ThoraxFireBall {
	Projectile
	Damage (25)
	DamageType "Fire"
	Stamina 32
	BounceSound "WeaponGL/40MMHHit"
	Deathsound "Weapons/grenadexpl2"
	Speed 32
	Radius 12
	Height 24
	BounceType "Doom"
	BounceCount 10
	Renderstyle Add
	+PIERCEARMOR
	+USEBOUNCESTATE
	+DONTBLAST
	+CANBOUNCEWATER
	-NOGRAVITY
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			UP12 A 3 Bright A_TakeInventory("DnD_Info", 0)
		B:
			UP12 B 3 Bright A_GiveInventory("DnD_Info", 1)
		C:
			UP12 C 3 Bright A_GiveInventory("DnD_Info", 1)
		D:
			UP12 D 3 Bright A_GiveInventory("DnD_Info", 1)
		E:
			UP12 E 3 Bright A_GiveInventory("DnD_Info", 1)
		Goto SpawnLoop
		Bounce:
			"####" "#" 1 Bright A_CustomMissile("ThoraxFireTrail", 8, 0, frandom(0, 360), CMF_TRACKOWNER | CMF_AIMDIRECTION)
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 1, "B")
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 1, "C")
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 1, "D")
			"####" "#" 0 A_JumpIfInventory("DnD_Info", 1, "E")
		Goto SpawnLoop
		Death:
			TNT1 A 0 A_ChangeFlag("NOGRAVITY", 1)
			TNT1 A 0 A_Stop
			TNT1 A 0 A_ChangeVelocity(0, 0, 0, CVF_REPLACE)
			TNT1 A 0 A_SpawnItem("ThoraxBigFireExp")
			UP12 Q 2 Bright A_CustomMissile("ThoraxFireTrail", 8, 0, frandom(0, 360), CMF_TRACKOWNER | CMF_AIMDIRECTION)
			UP12 Q 1 Bright A_CustomMissile("ThoraxFireTrail", 8, 0, frandom(0, 360), CMF_TRACKOWNER | CMF_AIMDIRECTION)
			UP12 R 2 Bright A_CustomMissile("ThoraxFireTrail", 8, 0, frandom(0, 360), CMF_TRACKOWNER | CMF_AIMDIRECTION)
			UP12 R 1 Bright A_CustomMissile("ThoraxFireTrail", 8, 0, frandom(0, 360), CMF_TRACKOWNER | CMF_AIMDIRECTION)
			UP12 S 2 Bright A_CustomMissile("ThoraxFireTrail", 8, 0, frandom(0, 360), CMF_TRACKOWNER | CMF_AIMDIRECTION)
			UP12 S 1 Bright A_CustomMissile("ThoraxFireTrail", 8, 0, frandom(0, 360), CMF_TRACKOWNER | CMF_AIMDIRECTION)
			UP12 T 2 Bright A_CustomMissile("ThoraxFireTrail", 8, 0, frandom(0, 360), CMF_TRACKOWNER | CMF_AIMDIRECTION)
			UP12 T 1 Bright A_CustomMissile("ThoraxFireTrail", 8, 0, frandom(0, 360), CMF_TRACKOWNER | CMF_AIMDIRECTION)
			UP12 U 3 A_SetTranslucent(0.75, 0)
			UP12 V 3
		Stop
	}
}

Actor ThoraxBigFireExp : BaseExplosionDamage {
	Obituary "%o fell victim to Thorax the Constrictor."
	DamageType "ExplosiveFire"
	Stamina 36
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 5 A_Explode(80, 96, 0)
		Stop
	}
}

Actor ThoraxFireTrail {
	PROJECTILE
	Radius 5
	Height 10
	Speed 6
	BounceType "Doom"
	BounceCount 6
	Damage (10)
	DamageType "Fire"
	Stamina 4
	+PIERCEARMOR
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			GRTL A 3 Bright ThrustThingZ(0, random(8,16), 0, 1)
			TNT1 A 0 A_SpawnItem("HEGrenadeTrailsTrail")
			GRTL B 3 Bright ThrustThingZ(0, random(8,16), 0, 1)
			TNT1 A 0 A_SpawnItem("HEGrenadeTrailsTrail")
			GRTL A 3 Bright ThrustThingZ(0, random(8,16), 0, 1)
			TNT1 A 0 A_SpawnItem("HEGrenadeTrailsTrail")
			GRTL B 3 Bright ThrustThingZ(0, random(8,16), 0, 1)
			TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
		SpawnLoop:
			GRTL AB 3 Bright A_SpawnItem("HEGrenadeTrailsTrail")
		Loop
		Death:
		    TNT1 A 0 A_PlaySound("WeaponGL/40MMHHit")
			TNT1 A 0 A_SpawnItem("ThoraxFireExp")
			GRTL EFGHI 2 Bright
		Stop
	}
}

Actor ThoraxFireExp : BaseExplosionDamage {
	Obituary "%o fell victim to Thorax the Constrictor."
	DamageType "ExplosiveFire"
	Stamina 36
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 5 A_Explode(20, 48, 0)
		Stop
	}
}

Actor Zravog : DnD_BaseRangedMonster_NoRes {
	Health 0x7FFFFFFF
    GibHealth -10
	Radius 20
	Height 64
	Speed 9
	PainChance 16
	SeeSound "Zravog/See"
	PainSound "Zravog/pain"
	DeathSound "Zravog/Die"
	ActiveSound "Zravog/Act"
	Obituary "%o fell victim to Zravog the Archbishop."
	Mass 1024
	Tag "Zravog the Archbishop"
	Bloodcolor "Purple"
	const int ab_tele = 24;
	const int ab_death_count = 13;
	var int user_count;
	+ISMONSTER
	+LOOKALLAROUND
	+MISSILEMORE
	+QUICKTORETALIATE
	+NOTARGET
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_ZRAVOG)
		Goto SpawnSetup
		
		IdleState:
			UE15 A 5 A_Wander
			UE15 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE15 B 5 A_Wander
			UE15 B 0 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			UE15 AAABBB 2 Fast A_Chase
			UE15 A 0 A_Jump(32, "Teleport")
		Goto See
		MissileState:
			TNT1 A 0 A_Jump(224, "Fire1", "Fire2", "Fire3")
		Goto Teleport
		Fire1:
			UE15 DDDD 4 Fast A_FaceTarget
			UE15 C 8 Fast Bright A_CustomMissile ("ZravogHomingBall", 48, 0, 0, 0)
			UE15 D 4 Fast A_FaceTarget
			UE15 C 8 Fast Bright A_CustomMissile ("ZravogHomingBall", 48, 0, 0, 0)
			UE15 D 4 Fast A_FaceTarget
			UE15 A 0 A_Jump(128, "More")
		Goto See
		More:
			UE15 C 8 Fast Bright A_CustomMissile ("ZravogHomingBall", 48, 0, 0, 0)
			UE15 D 4 Fast A_FaceTarget
			UE15 C 8 Fast Bright A_CustomMissile ("ZravogHomingBall", 48, 0, 0, 0)
			UE15 D 4 Fast A_FaceTarget
			UE15 C 8 Fast Bright A_CustomMissile ("ZravogHomingBall", 48, 0, 0, 0)
			UE15 D 4 Fast A_FaceTarget
		Goto See
		Fire2:
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Boolean Sync", true)
			TNT1 A 0 A_ChangeFlag("QUICKTORETALIATE", 0)
			UE15 D 1
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Zravog Slam", 3)
			UE15 DDDDDDDDDDDDDDD 7 A_FaceTarget
			TNT1 A 0 A_ChangeFlag("QUICKTORETALIATE", 1)
			UE15 C 9 Fast Bright
		Goto See
		Fire3:
			UE15 DDDD 4 Fast A_FaceTarget
			UE15 C 8 Fast Bright
			UE15 C 0 A_CustomMissile ("ZravogMissile", 48, 0, -6, 0)
			UE15 C 0 A_CustomMissile ("ZravogMissile", 48, 0, 0, 0)
			UE15 C 0 A_CustomMissile ("ZravogMissile", 48, 0, 6, 0)
			UE15 D 4 Fast A_FaceTarget
			UE15 C 8 Fast Bright
			UE15 C 0 A_CustomMissile ("ZravogMissile", 48, 0, -6, 0)
			UE15 C 0 A_CustomMissile ("ZravogMissile", 48, 0, 0, 0)
			UE15 C 0 A_CustomMissile ("ZravogMissile", 48, 0, 6, 0)
			UE15 D 4 Fast A_FaceTarget
			UE15 C 8 Fast Bright
			UE15 C 0 A_CustomMissile ("ZravogMissile", 48, 0, -6, 0)
			UE15 C 0 A_CustomMissile ("ZravogMissile", 48, 0, 0, 0)
			UE15 C 0 A_CustomMissile ("ZravogMissile", 48, 0, 6, 0)
			UE15 D 4 Fast A_FaceTarget
		Goto See
		Teleport:
			UE15 A 0 A_UnSetshootable
			UE15 A 0 A_FaceTarget
			UE15 A 1 A_PlaySound("misc/teleport")
			UE15 A 1 A_Stop
			UE15 A 1 A_SetTranslucent(0.90)
			UE15 A 1 A_SetTranslucent(0.80)
			UE15 A 1 A_SetTranslucent(0.70)
			UE15 A 1 A_SetTranslucent(0.60)
			UE15 A 1 A_SetTranslucent(0.50)
			UE15 A 1 A_SetTranslucent(0.40)
			UE15 A 1 A_SetTranslucent(0.30)
			UE15 A 1 A_SetTranslucent(0.20)
			UE15 A 1 A_SetTranslucent(0.10)
			TNT1 A 0 A_SetUserVar("user_count", 0)
		TeleportLoop:
			TNT1 A 0 A_JumpIf(user_count == ab_tele, "TeleportEnd")
			TNT1 AA 0 A_Wander
			TNT1 A 2 A_Wander
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, 22, 5)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, 22, 14)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, 22, 22)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, 22, 30)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, 22, 38)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, 22, 45)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, 22, 54)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, 26, 62)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, 23, 64)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, 19, 67)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, 15, 71)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, 11, 74)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, 8, 76)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, 0, 76)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, -22, 5)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, -22, 14)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, -22, 22)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, -22, 30)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, -22, 38)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, -22, 45)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, -22, 54)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, -26, 62)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, -23, 64)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, -19, 67)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, -15, 71)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, -11, 74)
			TNT1 A 0 A_SpawnItemEx("ZvarogTeleportFX", 32, -8, 76)
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
			Loop
		TeleportEnd:
			UE15 A 1 A_PlaySound("misc/teleport")
			UE15 A 1 A_SetTranslucent(0.10)
			UE15 A 1 A_SetTranslucent(0.20)
			UE15 A 1 A_SetTranslucent(0.30)
			UE15 A 1 A_SetTranslucent(0.40)
			UE15 A 1 A_SetTranslucent(0.50)
			UE15 A 1 A_SetTranslucent(0.60)
			UE15 A 1 A_SetTranslucent(0.70)
			UE15 A 1 A_SetTranslucent(0.80)
			UE15 A 1 A_SetTranslucent(0.90)
			UE15 A 1 A_SetTranslucent(1.0)
			UE15 A 0 A_SetShootable
			UE15 A 0 A_FaceTarget
			UE15 A 1 A_Stop
		Goto See
		PainState:
			TNT1 A 0 A_ChangeFlag("QUICKTORETALIATE", 1)
			UE15 A 2 Fast ACS_NamedExecuteWithResult("DnD Boolean Sync", false)
			UE15 A 2 Fast A_Pain
		Goto See
		XDeathState:
		DeathState:
			TNT1 A 0 A_SetUserVar("user_count", 0)
		DeathLoop:
			TNT1 A 0 A_JumpIf(user_count > ab_death_count, "DeathCont")
			UE15 E 1 A_SpawnItemEx ("ExplosionFXMagic", 0, 0,0,random(-9,9),random(-9,9),random(5,9), 48, 128)
			UE15 E 1 A_SpawnItemEx ("ExplosionFXMagicBlue", 0, 0,0,random(-9,9),random(-9,9),random(5,9), 48, 128)
			UE15 E 1 A_SpawnItemEx ("ExplosionFXMagicGreen", 0, 0,0,random(-9,9),random(-9,9),random(5,9), 48, 128)
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		DeathCont:
			UE15 E 4 A_SpawnItem ("ZravogSkeleton")
			UE15 F 4 A_Scream
			UE15 G 4
			UE15 H 4 A_NoBlocking
			UE15 IJ 4
			UE15 K -1
		Stop
	}
}

Actor ZravogSlamParticle {
	+CLIENTSIDEONLY
	+NOINTERACTION
	Renderstyle Add
	Scale 0.1
	States {
		Spawn:
			FLAR D 2 Bright
		Stop
	}
}

Actor ZravogSlamHitSoundPlayer {
	+NOINTERACTION
	States {
		Spawn:
			TNT1 A 10 NoDelay A_PlaySound("Zravog/SpellHit")
		Stop
	}
}

Actor ZravogSlamSmoke {
	+CLIENTSIDEONLY
	+NOINTERACTION
	Renderstyle Add
	Scale 0.75
	const float vz = 4.0;
	States {
		Spawn:
			TNT1 A 0 NoDelay A_ChangeVelocity(frandom(-vz, vz), frandom(-vz, vz), frandom(0.5, vz), CVF_REPLACE)
			TNT1 A 0 A_Jump(256, "1", "2", "3")
		1:
			VODS A 0
		Goto Fade
		2:
			VODS B 0
		Goto Fade
		3:
			VODS C 0
		Goto Fade
		Fade:
			"####" "#" 1 A_FadeOut(0.075)
		Wait
	}
}

Actor ZravogSlamDamager : BaseExplosionDamage {
	Obituary "%o fell victim to Zravog the Archbishop."
	DamageType "MagicalVoid"
	Stamina 8
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 4 A_Explode(128, 192, 0)
		Stop
	}
}

Actor ZravogSlamSoundPlayer {
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 0 NoDelay A_PlaySound("Zravog/SpellBegin")
		SpawnLoop:
			TNT1 A 1
		Loop
	}
}

ACTOR ZravogSkeleton {
	Radius 12
	Height 64
	-TELESTOMP
	+CLIENTSIDEONLY
	States {
		Spawn:
			UP20 A 32
			UP20 BCDEFGH 3
			UP20 I -1
		stop
	}
}

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

Actor ZravogHomingBall : MageStaffFX2 {
	Speed 20
	SeeSound "MageStaffFire"
	DeathSound "MageStaffExplode"
	DamageType "MagicalVoid"
	Stamina 8
	Damage (24)
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			BSBS A 0 Bright Light(DISCIPLEBALL) A_PlaySoundEx ("DarkLich/ballfly", "SoundSlot6", 1) 
			BSBS A 2 Bright Light(DISCIPLEBALL) A_MStaffTrack
			BSBS A 0 Bright Light(DISCIPLEBALL) A_SpawnItemEx ("ArchWSpark", random (-6, 6), random (-6, 6), random (-6, 6), 0, 0, 0, 0, 160)
			BSBS B 2 Bright Light(DISCIPLEBALL) A_MStaffTrack
			BSBS B 0 Bright Light(DISCIPLEBALL) A_SpawnItemEx ("ArchWSpark", random (-6, 6), random (-6, 6), random (-6, 6), 0, 0, 0, 0, 160)
			BSBS C 2 Bright Light(DISCIPLEBALL) A_MStaffTrack
			BSBS C 0 Bright Light(DISCIPLEBALL) A_SpawnItemEx ("ArchWSpark", random (-6, 6), random (-6, 6), random (-6, 6), 0, 0, 0, 0, 160)
			BSBS D 2 Bright Light(DISCIPLEBALL) A_MStaffTrack
			BSBS D 0 Bright Light(DISCIPLEBALL) A_SpawnItemEx ("ArchWSpark", random (-6, 6), random (-6, 6), random (-6, 6), 0, 0, 0, 0, 160)
		Loop
		Death:
			BSBS E 0 Bright Light(DISCIPLEBALL) A_StopSoundEx ("SoundSlot6")
			BSBS E 0 Bright Light(DISCIPLEBALL) A_SetTranslucent (1, 1) 
			BSBS E 3 Bright Light(DISCIPLEBALL)
			BSBS FGHIJKLM 3 Bright
		Stop
	}
}

Actor ZravogMissile : WizardFX1 {
	speed 27
	damage (18)
	DamageType "MagicalVoid"
	Stamina 8
	seesound "weapons/boltfi"
	deathsound "weapons/firex3"
	Renderstyle Add
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			UP22 AABB 2 Bright A_SpawnItemEx("ZravogMissileTrail", -8)
		Loop
		Death:
			UP22 CDEFG 3 Bright
		Stop
	}
}

Actor ZravogMissileTrail {
	Renderstyle Add
	Alpha 0.8
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			UP22 F 1 A_FadeOut(0.08)
		Loop
	}
}

Actor Eryxia : DnD_BaseRangedBoss {
	Health 0x7FFFFFFF
    GibHealth -10
	Radius 128
	Height 100
	Speed 12
	PainChance 24
	SeeSound "Eryxia/See"
	PainSound "Eryxia/pain"
	DeathSound "Eryxia/Die"
	ActiveSound "Eryxia/Act"
	Obituary "%o fell victim to Eryxia the Fatespinner."
	Mass 2048
	Tag "Eryxia the Fatespinner"
	const float fr_max = 14;
	const float fr_min = 3;
	+ISMONSTER
	+NOINFIGHTING
	+NOTARGET
	-FLOORCLIP
	+NOFEAR
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_ERYXIA)
		Goto SpawnSetup
		
		IdleState:
			UE13 A 3 A_PlaySound("Eryxia/walk",4,1,0,ATTN_IDLE)
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE13 ABB 3 A_Wander
			UE13 C 3 A_GiveInventory("DnD_SightChecker", 1)
			UE13 C 3 A_Wander
			TNT1 A 0 A_PlaySound("Eryxia/walk",4,1,0,ATTN_IDLE)
			UE13 DD 3 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE13 E 3 
			UE13 E 3 A_Wander
			TNT1 A 0 A_PlaySound("Eryxia/walk",4,1,0,ATTN_IDLE)
			UE13 FF 3 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			UE13 A 0 A_Jump(32, "Rush")
			UE13 A 3 Fast A_PlaySound("Eryxia/walk",4,1,0,ATTN_IDLE)
			UE13 ABB 3 Fast A_Chase
			UE13 C 3 Fast
			UE13 C 3 Fast A_Chase
			TNT1 A 0 A_PlaySound("Eryxia/walk",4,1,0,ATTN_IDLE)
			UE13 DD 3 Fast A_Chase
			UE13 E 3 Fast
			UE13 E 3 Fast A_Chase
			TNT1 A 0 A_PlaySound("Eryxia/walk",4,1,0,ATTN_IDLE)
			UE13 FF 3 Fast A_Chase
		Goto See
		Rush:
			UE13 A 2 Fast A_PlaySound("Eryxia/walk",4,1,0,ATTN_IDLE)
			UE13 ABB 2 Fast A_Chase
			UE13 C 2 Fast A_PlaySound("Eryxia/walk",4,1,0,ATTN_IDLE)
			UE13 CDD 2 Fast A_Chase
			UE13 E 2 Fast A_PlaySound("Eryxia/walk",4,1,0,ATTN_IDLE)
			UE13 EFF 2 Fast A_Chase
		Loop
		MissileState:
			TNT1 A 0 A_Jump(112, "Freezer", "Spikes")
			UE13 A 25 Fast Bright A_FaceTarget
		MissileLoopDecide:
			TNT1 A 0 A_JumpIfHealthLower (ACS_ExecuteWithResult(961, 7) / 2, "MissileLoop2")
		MissileLoop:
			TNT1 A 0 A_PlaySound("Weapons/NG2Fire", CHAN_WEAPON)
			UE13 H 1 Bright Fast A_CustomMissile("EryxiaBullet", 54, 0, frandom(-fr_max, -fr_min))
			UE13 H 1 Bright Fast A_CustomMissile("EryxiaBullet", 54, 0, frandom(fr_min, fr_max))
			UE13 H 1 Bright Fast A_CustomMissile("EryxiaBullet", 54, 0)
			UE13 H 1 Bright Fast A_CustomMissile("EryxiaBullet", 54, 0, frandom(-fr_max, fr_max))
			TNT1 A 0 A_PlaySound("Weapons/NG2Fire", CHAN_WEAPON)
			TNT1 A 0 A_FaceTarget
			UE13 G 1 Bright Fast A_CustomMissile("EryxiaBullet", 54, 0, frandom(-fr_max, -fr_min))
			UE13 G 1 Bright Fast A_CustomMissile("EryxiaBullet", 54, 0, frandom(fr_min, fr_max))
			UE13 G 1 Bright Fast A_CustomMissile("EryxiaBullet", 54, 0)
			UE13 G 1 Bright Fast A_CustomMissile("EryxiaBullet", 54, 0, frandom(-fr_max, fr_max))
			UE13 G 1 Bright Fast A_SpidRefire
		Loop
		MissileLoop2:
			TNT1 A 0 A_PlaySound("Weapons/NG2Fire", CHAN_WEAPON)
			TNT1 A 0 A_GiveInventory("EryxiaFreezerChecker", 1)
			UE13 H 1 Bright Fast A_CustomMissile("EryxiaBullet", 54, 0, frandom(-fr_max, -fr_min))
			UE13 H 1 Bright Fast A_CustomMissile("EryxiaBullet", 54, 0, frandom(fr_min, fr_max))
			UE13 H 1 Bright Fast A_CustomMissile("EryxiaBullet", 54, 0)
			UE13 H 1 Bright Fast A_CustomMissile("EryxiaBullet", 54, 0, frandom(-fr_max, fr_max))
			TNT1 A 0 A_PlaySound("Weapons/NG2Fire", CHAN_WEAPON)
			TNT1 A 0 A_FaceTarget
			UE13 G 1 Bright Fast A_CustomMissile("EryxiaBullet", 54, 0, frandom(-fr_max, -fr_min))
			UE13 G 1 Bright Fast A_CustomMissile("EryxiaBullet", 54, 0, frandom(fr_min, fr_max))
			UE13 G 1 Bright Fast A_CustomMissile("EryxiaBullet", 54, 0)
			UE13 G 1 Bright Fast A_CustomMissile("EryxiaBullet", 54, 0, frandom(-fr_max, fr_max))
			UE13 G 1 Bright Fast A_SpidRefire
		Loop
		Freezer:
			TNT1 A 0 A_JumpIfHealthLower (ACS_ExecuteWithResult(961, 7) / 2, "Spikes")
			UE13 A 10 Fast Bright A_FaceTarget
			TNT1 A 0 A_PlaySound("Weapons/FreezerFire", CHAN_WEAPON)
			UE13 H 6 Bright Fast A_CustomMissile("EryxiaFreezer", 54)
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_PlaySound("Weapons/FreezerFire", CHAN_WEAPON)
			UE13 G 6 Bright Fast A_CustomMissile("EryxiaFreezer", 54)
			UE13 G 1 Bright Fast A_JumpIfTargetInLOS("MissileLoopDecide")
		Goto See
		Spikes:
			UE13 A 5 Fast Bright A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Eryxia Lob", 0, 54)
			UE13 HGHGHG 4 Bright Fast
		Goto See
		PainRetaliate:
			TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
			UE13 I 15 Fast A_PlaySound("Eryxia/Retaliate", CHAN_7)
			TNT1 A 0 A_GiveInventory("EryxiaRetaliationCD", 1)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 32, 0, 0)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 32, 0, 30)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 32, 0, 60)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 32, 0, 90)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 32, 0, 120)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 32, 0, 150)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 32, 0, 180)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 32, 0, 210)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 32, 0, 240)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 32, 0, 270)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 32, 0, 300)
			UE13 I 5 Fast A_CustomMissile("EryxiaWind", 32, 0, 330)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 56, 0, 0)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 56, 0, 30)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 56, 0, 60)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 56, 0, 90)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 56, 0, 120)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 56, 0, 150)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 56, 0, 180)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 56, 0, 210)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 56, 0, 240)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 56, 0, 270)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 56, 0, 300)
			UE13 I 5 Fast A_CustomMissile("EryxiaWind", 56, 0, 330)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 80, 0, 0)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 80, 0, 30)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 80, 0, 60)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 80, 0, 90)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 80, 0, 120)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 80, 0, 150)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 80, 0, 180)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 80, 0, 210)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 80, 0, 240)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 80, 0, 270)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 80, 0, 300)
			UE13 I 5 Fast A_CustomMissile("EryxiaWind", 80, 0, 330)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 104, 0, 0)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 104, 0, 30)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 104, 0, 60)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 104, 0, 90)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 104, 0, 120)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 104, 0, 150)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 104, 0, 180)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 104, 0, 210)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 104, 0, 240)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 104, 0, 270)
			TNT1 A 0 A_CustomMissile("EryxiaWind", 104, 0, 300)
			UE13 I 5 Fast A_CustomMissile("EryxiaWind", 104, 0, 330)
			TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
			UE13 I 1 Fast A_JumpIfTargetInLOS("Missile")
		Goto Missile
		PainState:
			UE13 I 3 Fast A_GiveInventory("EryxiaInterrupt", 1)
			UE13 I 3 Fast A_Pain
			UE13 I 0 A_JumpIfInventory("EryxiaRetaliationCD", 1, "SkipRetaliate")
			UE13 I 1 Fast A_Jump(128, "PainRetaliate")
		SkipRetaliate:
			UE13 I 0
		Goto See
		XDeathState:
		DeathState:
			UE13 J 1 Bright 
			UE13 J 19 Bright A_Scream
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			UE13 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_Low", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			UE13 LLLL 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_Low", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			UE13 MMM 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_Low", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			UE13 NNN 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_Low", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			UE13 OOO 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_Low", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			UE13 PPP 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_Low", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			UE13 QQQ 2 Bright A_SpawnItemEx("ExplosionFX", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128)
			UE13 R 5 Bright
			UE13 S -1 A_KillMaster
		Stop
	}
}

Actor EryxiaInterrupt : PowerDamage {
	damagefactor "normal", 1.0
	powerup.duration 6
}

Actor EryxiaRetaliationCD : PowerDamage {
	damagefactor "normal", 1.0
	powerup.duration -6
}

Actor EryxiaWind {
	PROJECTILE
	Speed 20
	Radius 4
	Height 8
	Scale 1.75
	Alpha 0.9
	Damage (4)
	DamageType "Ice"
	Stamina 64
	Renderstyle Add
	BounceType "Hexen"
	+BLOODLESSIMPACT
	+CANBOUNCEWATER
	+HITTRACER
	+NODAMAGETHRUST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			RF34 JKLMNOPQRSTUVWX 5 A_FadeOut(0.05)
		Loop
		XDeath:
			TNT1 A 0 A_GiveInventory("EryxiaSlower", 1, AAPTR_TRACER)
		Death:
			TNT1 A 1
		Stop
	}
}

Actor EryxiaFreezer {
	Projectile
	Damage (15)
	DamageType "Ice"
	Stamina 64
	SeeSound "Freezer/Particle"
	DeathSound "Freezer/Hit"
	Height 20
	Radius 10
	Speed 24
	Renderstyle Add
	Alpha 1.0
	+VISIBILITYPULSE
	+DONTBLAST
	+SEEKERMISSILE
	+HITTRACER
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			UP14 A 2 Bright A_SpawnItemEx("EryxiaFreezer_Trail")
			TNT1 A 0 A_SeekerMissile(8, 8)
			UP14 A 2 Bright A_SpawnItemEx("EryxiaFreezer_Trail")
			TNT1 A 0 A_SeekerMissile(8, 8)
			UP14 B 2 Bright A_SpawnItemEx("EryxiaFreezer_Trail")
			TNT1 A 0 A_SeekerMissile(8, 8)
			UP14 B 2 Bright A_SpawnItemEx("EryxiaFreezer_Trail")
			TNT1 A 0 A_SeekerMissile(8, 8)
			UP14 C 2 Bright A_SpawnItemEx("EryxiaFreezer_Trail")
			TNT1 A 0 A_SeekerMissile(8, 8)
			UP14 C 2 Bright A_SpawnItemEx("EryxiaFreezer_Trail")
			TNT1 A 0 A_SeekerMissile(8, 8)
		Loop
		XDeath:
			TNT1 A 0 A_GiveInventory("EryxiaFreezeDebuff_Giver", 1, AAPTR_TRACER)
		Death:
			FXPB A 3 Bright
			TNT1 A 0 A_SpawnItemEx("BlueParticleSpawner")
			FXPB BCDEFGHIJKLM 2 Bright
		Stop
	}
}

Actor EryxiaFreezer_Trail {
	Renderstyle Add
	Alpha 1.0
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 3
			FX18 HIJKL 3 Bright
		Stop
	}
}

Actor EryxiaFreezeDebuff_Giver : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_GiveInventory("EryxiaFreezeDebuff", 1)
			TNT1 A 0 A_PlaySound("Lich/Ice", CHAN_7)
		Stop
	}
}

Actor EryxiaFreezeDebuff : PowerSpeed {
	Speed 0
	powerup.duration -3
	powerup.color "33 33 99"
}

Actor EryxiaFreezerChecker : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_GiveInventory("DnD_Info", 1)
			TNT1 A 0 A_JumpIfInventory("DnD_Info", 8, "Lob")
			TNT1 A 0 A_JumpIfInventory("DnD_Info", 5, "Nothing")
			TNT1 A 0 A_JumpIfInventory("DnD_Info", 4, "Freezer")
		Stop
		Nothing:
			TNT1 A 0
		Stop
		Freezer:
			TNT1 A 0 A_PlaySound("Weapons/FreezerFire", CHAN_7)
			TNT1 A 0 A_CustomMissile("EryxiaFreezer", 54)
		Stop
		Lob:
			TNT1 A 0 A_TakeInventory("DnD_Info", 0)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Eryxia Lob", 0, 54)
		Stop
	}	
}

Actor EryxiaBullet {
	Projectile
	var int user_count;
	Damage ((random(10, 12) - user_count))
	DamageType "IceEryxia"
	Stamina 64
	Deathsound "Weapons/NG2HitWall"
	Speed 32
	Height 12
	Radius 6
	Renderstyle Translucent
	+PIERCEARMOR
	+RIPPER
	+DONTBLAST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 A_SetUserVar("user_count", 0)
			UP13 ABCD 3 Bright
			TNT1 A 0 A_SetUserVar("user_count", 1)
			UP13 EFGH 3 Bright
			TNT1 A 0 A_SetUserVar("user_count", 1)
			UP13 IJKL 3 Bright
			TNT1 A 0 A_SetUserVar("user_count", 1)
			UP13 MNOP 3 Bright
			TNT1 A 0 A_SetUserVar("user_count", 1)
			TNT1 A 0 A_SetDamageType("Ice")
		SpawnLoop:
			UP13 QRST 3 Bright
		Loop
		Death:
			"####" "#" 1 A_FadeOut(0.0875)
		Wait
	}
}

Actor EryxiaLob {
	Projectile
	Damage (25)
	DamageType "IceEryxia"
	Stamina 64
	SeeSound "HFSpid/See"
	DeathSound "Freezer/Hit"
	Radius 12
	Height 24
	Speed 20
	Renderstyle Add
	+DONTBLAST
	-NOGRAVITY
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			UP17 ABC 3 Bright A_SpawnItem("EryxiaLobTrail")
		Loop
		Death:
			TNT1 A 0 A_JumpIf(z - floorz > (ceilingz - floorz) / 2, "FloorSpawn")
		CeilingSpawn:
			TNT1 A 0 A_CustomMissile("EryxiaFloorIcicleSpawner", 0, 0, 0)
			TNT1 A 0 A_CustomMissile("EryxiaFloorIcicleSpawner", 0, 0, frandom(-12, -4))
			TNT1 A 0 A_CustomMissile("EryxiaFloorIcicleSpawner", 0, 0, frandom(4, 12))
		FinishAnim:
			TNT1 A 0 A_SetScale(0.6)
			FXPB A 3 Bright
			TNT1 A 0 A_SpawnItemEx("BlueParticleSpawner")
			FXPB BCDEFGHIJKLM 2 Bright
		Stop
		FloorSpawn:
			TNT1 A 0 A_CustomMissile("EryxiaCeilingIcicleSpawner", 0, 0, 0)
			TNT1 A 0 A_CustomMissile("EryxiaCeilingIcicleSpawner", 0, 0, frandom(-12, -4))
			TNT1 A 0 A_CustomMissile("EryxiaCeilingIcicleSpawner", 0, 0, frandom(4, 12))
		goto FinishAnim
	}
}

Actor EryxiaFloorIcicleSpawner {
	Projectile
	Speed 18
	Damage 0
	Height 12
	Radius 4
	BounceType Hexen
	+THRUACTORS
	+DONTBLAST
	+FLOORHUGGER
	const float v = 6;
	States {
		Spawn:
			TNT1 A 1
			TNT1 AA 3 A_CustomMissile("EryxiaFloorIcicle")
			TNT1 A 0 A_ChangeVelocity(frandom(-v, v), frandom(-v, v), 0, CVF_RELATIVE)
			TNT1 AA 3 A_CustomMissile("EryxiaFloorIcicle")
			TNT1 A 0 A_ChangeVelocity(frandom(-v, v), frandom(-v, v), 0, CVF_RELATIVE)
			TNT1 AA 3 A_CustomMissile("EryxiaFloorIcicle")
			TNT1 A 0 A_ChangeVelocity(frandom(-v, v), frandom(-v, v), 0, CVF_RELATIVE)
			TNT1 AA 3 A_CustomMissile("EryxiaFloorIcicle")
			TNT1 A 0 A_ChangeVelocity(frandom(-v, v), frandom(-v, v), 0, CVF_RELATIVE)
			TNT1 AA 3 A_CustomMissile("EryxiaFloorIcicle")
		Stop
		Death:
			TNT1 A 1
		Stop
	}
}

Actor EryxiaCeilingIcicleSpawner : EryxiaFloorIcicleSpawner {
	-FLOORHUGGER
	+CEILINGHUGGER
	States {
		Spawn:
			TNT1 A 1
			TNT1 AA 3 A_CustomMissile("EryxiaCeilingIcicle")
			TNT1 A 0 A_ChangeVelocity(frandom(-v, v), frandom(-v, v), 0, CVF_RELATIVE)
			TNT1 AA 3 A_CustomMissile("EryxiaCeilingIcicle")
			TNT1 A 0 A_ChangeVelocity(frandom(-v, v), frandom(-v, v), 0, CVF_RELATIVE)
			TNT1 AA 3 A_CustomMissile("EryxiaCeilingIcicle")
			TNT1 A 0 A_ChangeVelocity(frandom(-v, v), frandom(-v, v), 0, CVF_RELATIVE)
			TNT1 AA 3 A_CustomMissile("EryxiaCeilingIcicle")
			TNT1 A 0 A_ChangeVelocity(frandom(-v, v), frandom(-v, v), 0, CVF_RELATIVE)
			TNT1 AA 3 A_CustomMissile("EryxiaCeilingIcicle")
		Stop
	}
}

Actor EryxiaFloorIcicle {
	Projectile
	Damage (10)
	DamageType "IceEryxia"
	Stamina 64
	DeathSound "FrostFang/Hit1"
	Speed 0
	Radius 4
	Height 12
	Renderstyle Add
	var int user_count;
	const int lim = 6;
	+THRUACTORS
	+DONTBLAST
	+FLOORHUGGER
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 A_SetUserVar("user_count", 0)
			UP15 NMLKJIHGFEDCB 1 Bright
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			// lim determines lifetime in seconds
		SpawnLoop:
			TNT1 A 0 A_JumpIf(user_count == lim, "Fade")
			UP15 AAAAAAAAAA 2 A_FadeOut(0.05)
			UP15 A 30
			UP15 AAAAAAAAAA 2 A_FadeIn(0.05)
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		Fade:
			UP15 BCDE 1 Bright
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 1)
			UP15 FGHIJKLMN 1 Bright
		Stop
		Death:
			FFSD DEFGH 2 Bright
		Stop
	}
}

Actor EryxiaCeilingIcicle : EryxiaFloorIcicle {
	-FLOORHUGGER
	+CEILINGHUGGER
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 A_SetUserVar("user_count", 0)
			UP16 NMLKJIHGFEDCB 1 Bright
			TNT1 A 0 A_ChangeFlag("THRUACTORS", 0)
			UP16 A 30 Bright
			TNT1 A 0 A_ChangeFlag("CEILINGHUGGER", 0)
			TNT1 A 0 A_ChangeVelocity(0, 0, -30)
		DropDown:
			UP16 A 1 Bright
		Loop
		Death:
			FFSD DEFGH 2 Bright
		Stop
	}
}

Actor EryxiaLobTrail {
	Renderstyle Add
	Alpha 0.8
	Scale 0.6
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 1 NoDelay Thing_ChangeTID(0, SPECIAL_FX_TID)
		SpawnLoop:
			SPRK T 1 A_FadeOut(0.075)
		Loop
	}
}

Actor Abaxoth : DnD_BaseHybridBoss {
	Health 0x7FFFFFFF
    GibHealth -10
	Radius 42
	Height 110
	ProjectilePassHeight 140
	Speed 16
	PainChance 8
	PainThreshold 200
	SeeSound "Abaxoth/See"
	PainSound "Abaxoth/pain"
	DeathSound "Abaxoth/Die"
	ActiveSound "Abaxoth/Act"
	Obituary "%o fell victim to Abaxoth the End of All That Is."
	Mass 3200
	Tag "Abaxoth the End of All That Is"
	MeleeRange 128
	Species "Cyber"
	const float r_a = 9.0;
	const float vel_charge = 28.0;
	const int laser_t = 60;
	var int user_count;
	+ISMONSTER
	+MISSILEMORE
	+MISSILEEVENMORE
	+QUICKTORETALIATE
	+BOSS
	+BOSSDEATH
	+NOFEAR
	+NODROPOFF
	+NOTARGET
	+NOINFIGHTING
	-FLOORCLIP
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_ABAXOTH)
		Goto SpawnSetup
		
		IdleState:
			UE16 A 4 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE16 B 4 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE16 C 4 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
			UE16 D 4 A_Wander
			TNT1 A 0 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
			UE16 A 3 Fast A_Chase
			TNT1 A 0 A_PlaySound("Abaxoth/Walk")
			UE16 A 3 Fast A_Chase
			UE16 BB 3 Fast A_Chase
			UE16 C 3 Fast A_Chase
			TNT1 A 0 A_PlaySound("Abaxoth/Walk")
			UE16 C 3 Fast A_Chase
			UE16 DD 3 Fast A_Chase
		Goto See
		MeleeState:
			TNT1 A 0 A_Jump(144, "Fissures", "TectonicSlam")
			TNT1 A 0 A_PlaySound("Abaxoth/MeleeEffort")
			UE16 L 5 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("Abaxoth/HammerSwing", CHAN_WEAPON)
			UE16 M 4 Fast A_FaceTarget
			TNT1 A 0 A_SpawnItem("AbaxothChargeExp")
			UE16 N 8 Fast A_CustomMeleeAttack(10 * random(16, 22), "Abaxoth/MeleeHit", "")
		Goto See
		MissileState:
			TNT1 A 0 A_JumpIfCloser(288, "DecideCloseRange")
			TNT1 A 0 A_Jump(128, "Charge", "Thunderbolt")
			TNT1 A 0 A_Jump(108, "Laser", "Fissures")
			// homing rockets
		Rockets:
			UE16 EEEEE 4 Fast A_FaceTarget
			TNT1 A 0 A_CustomMissile("AbaxothRocketL", 140, -32, random(-r_a, r_a), 0, random(-r_a, r_a))
			TNT1 A 0 A_CustomMissile("AbaxothRocketL", 120, -32, random(-r_a, r_a), 0, random(-r_a, r_a))
			TNT1 A 0 A_CustomMissile("AbaxothRocket", 140, 32, random(-r_a, r_a), 0, random(-r_a, r_a))
			TNT1 A 0 A_CustomMissile("AbaxothRocket", 120, 32, random(-r_a, r_a), 0, random(-r_a, r_a))
			UE16 F 4 Fast Bright
			UE16 G 4 Fast A_FaceTarget
			UE16 E 4 Fast A_FaceTarget
			TNT1 A 0 A_CustomMissile("AbaxothRocketL", 140, -32, random(-r_a, r_a), 0, random(-r_a, r_a))
			TNT1 A 0 A_CustomMissile("AbaxothRocketL", 120, -32, random(-r_a, r_a), 0, random(-r_a, r_a))
			TNT1 A 0 A_CustomMissile("AbaxothRocket", 140, 32, random(-r_a, r_a), 0, random(-r_a, r_a))
			TNT1 A 0 A_CustomMissile("AbaxothRocket", 120, 32, random(-r_a, r_a), 0, random(-r_a, r_a))
			UE16 F 4 Fast Bright
			UE16 G 4 Fast A_FaceTarget
			UE16 E 4 Fast A_FaceTarget
			TNT1 A 0 A_CustomMissile("AbaxothRocketL", 140, -32, random(-r_a, r_a), 0, random(-r_a, r_a))
			TNT1 A 0 A_CustomMissile("AbaxothRocketL", 120, -32, random(-r_a, r_a), 0, random(-r_a, r_a))
			TNT1 A 0 A_CustomMissile("AbaxothRocket", 140, 32, random(-r_a, r_a), 0, random(-r_a, r_a))
			TNT1 A 0 A_CustomMissile("AbaxothRocket", 120, 32, random(-r_a, r_a), 0, random(-r_a, r_a))
			UE16 F 4 Fast Bright
			UE16 G 4 Fast A_FaceTarget
			UE16 E 4 Fast A_FaceTarget
			TNT1 A 0 A_CustomMissile("AbaxothRocketL", 140, -32, random(-r_a, r_a), 0, random(-r_a, r_a))
			TNT1 A 0 A_CustomMissile("AbaxothRocketL", 120, -32, random(-r_a, r_a), 0, random(-r_a, r_a))
			TNT1 A 0 A_CustomMissile("AbaxothRocket", 140, 32, random(-r_a, r_a), 0, random(-r_a, r_a))
			TNT1 A 0 A_CustomMissile("AbaxothRocket", 120, 32, random(-r_a, r_a), 0, random(-r_a, r_a))
			UE16 F 4 Fast Bright
			UE16 G 4 Fast A_FaceTarget
			UE16 E 4 Fast A_FaceTarget
			TNT1 A 0 A_CustomMissile("AbaxothRocketL", 140, -32, random(-r_a, r_a), 0, random(-r_a, r_a))
			TNT1 A 0 A_CustomMissile("AbaxothRocketL", 120, -32, random(-r_a, r_a), 0, random(-r_a, r_a))
			TNT1 A 0 A_CustomMissile("AbaxothRocket", 140, 32, random(-r_a, r_a), 0, random(-r_a, r_a))
			TNT1 A 0 A_CustomMissile("AbaxothRocket", 120, 32, random(-r_a, r_a), 0, random(-r_a, r_a))
			UE16 F 4 Fast Bright
			UE16 E 4 A_FaceTarget
			TNT1 A 0 A_JumpIfTargetInLOS("DecideRanged")
			UE16 E 16 A_FaceTarget
		Goto See
		DecideRanged:
			UE16 E 16 A_Jump(128, "Thunderbolt", "Laser", "Charge", "Rockets")
		Goto See
		DecideRange_NoThunder:
			UE16 E 16 A_Jump(128, "Rockets", "Laser", "Charge")
		Goto See
		DecideCloseRange:
			TNT1 A 0 A_Jump(128, "TectonicSlam", "Charge")
		Goto Fissures
		Thunderbolt:
			TNT1 A 0 A_JumpIfInventory("AbaxothThunderCooldown", 1, "DecideRange_NoThunder")
			TNT1 A 0 A_GiveInventory("AbaxothThunderCooldown", 1)
			UE16 L 1 Light("AbaxothThunderLight") A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Boolean Sync", true)
			UE16 L 7 Light("AbaxothThunderLight") A_FaceTarget
			UE16 L 87 Light("AbaxothThunderLight") Bright ACS_NamedExecuteWithResult("DnD Abaxoth Thunderbolt")
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_PlaySound("Abaxoth/ThunderGo", CHAN_WEAPON)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Abaxoth Thunder Shield")
			UE16 M 4 Light("AbaxothThunderLight2") Bright A_CustomMissile("AbaxothThunderbolt", 104, 30)
			UE16 MM 4 Light("AbaxothThunderLight2") Bright A_CustomMissile("AbaxothThunderbolt", 104, 30, frandom(-12, 12), CMF_OFFSETPITCH, frandom(-5, 5))
			TNT1 A 0 A_FaceTarget
			UE16 M 4 Light("AbaxothThunderLight2") Bright A_CustomMissile("AbaxothThunderbolt", 104, 30)
			UE16 MM 4 Light("AbaxothThunderLight2") Bright A_CustomMissile("AbaxothThunderbolt", 104, 30, frandom(-12, 12), CMF_OFFSETPITCH, frandom(-5, 5))
			TNT1 A 0 A_FaceTarget
			UE16 M 4 Light("AbaxothThunderLight2") Bright A_CustomMissile("AbaxothThunderbolt", 104, 30)
			UE16 MM 4 Light("AbaxothThunderLight2") Bright A_CustomMissile("AbaxothThunderbolt", 104, 30, frandom(-12, 12), CMF_OFFSETPITCH, frandom(-5, 5))
			TNT1 A 0 A_FaceTarget
			UE16 M 4 Light("AbaxothThunderLight2") Bright A_CustomMissile("AbaxothThunderbolt", 104, 30)
			UE16 MM 4 Light("AbaxothThunderLight2") Bright A_CustomMissile("AbaxothThunderbolt", 104, 30, frandom(-12, 12), CMF_OFFSETPITCH, frandom(-5, 5))
		Goto See
		Laser:
			UE16 I 1 ACS_NamedExecuteWithResult("DnD Boolean Sync", true)
			TNT1 A 0 A_PlaySound("Abaxoth/LaserBegin", CHAN_WEAPON)
			TNT1 A 0 A_CustomMissile("AbaxothLaserMarker", 88, -28)
			UE16 IIIIIIIIIIIIIII 4 Fast A_FaceTarget
			TNT1 A 0 A_SetUserVar("user_count", 0)
			TNT1 A 0 A_SpawnItemEx("ExplosionFlare", 16, -28, 90)
			TNT1 A 0 A_PlaySound("Abaxoth/LaserLoop", CHAN_WEAPON, 1.0, true)
		LaserLoop:
			TNT1 A 0 A_JumpIf(user_count == laser_t, "LaserFinish")
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Abaxoth Laser Adjust", -24)
			UE16 J 2 Bright Fast A_CustomRailgun(random(20, 24), -24, none, none, RGF_SILENT | RGF_NOPIERCING, 0, 2, "AbaxothRailPuff", 0, 0, 4096, 0, 2.5, 0, "AbaxothRailTrail", 10)
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		LaserFinish:
			TNT1 A 0 A_StopSound(CHAN_WEAPON)
			UE16 J 2 Bright Fast A_PlaySound("Abaxoth/LaserEnd", CHAN_WEAPON)
			UE16 K 8 Fast
		Goto See
		Charge:
			TNT1 A 0 A_ChangeFlag("NOBLOOD", 1)
			TNT1 A 0 A_PlaySound("Abaxoth/Bullrush")
			TNT1 A 0 A_SetUserVar("user_count", 0)
			UE16 H 2 Fast ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_ISBLOCKING, -1, -1, -1)
			TNT1 A 0 A_SpawnItem("AbaxothChargeExp", -8, 55)
			TNT1 A 0 A_RadiusThrust(1024, 176, RTF_NOIMPACTDAMAGE | RTF_NOTMISSILE)
			TNT1 A 0 A_SpawnItemEx("AbaxothChargeAfterImage", -20)
			TNT1 A 0 A_SpawnItemEx("GrenadeSmoke", -16, 32, 0, frandom(-0.5, -2), frandom(1, 2.5), frandom(0.5, 2))
			TNT1 A 0 A_SpawnItemEx("GrenadeSmoke", -16, -32, 0, frandom(-0.5, -2), frandom(-1, -2.5), frandom(0.5, 2))
			TNT1 A 0 A_FaceTarget
		ChargeLoop:
			UE16 H 3 Fast A_ChangeVelocity(vel_charge * cos(angle), vel_charge * sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SpawnItem("AbaxothChargeExp", -8, 55)
			TNT1 A 0 A_RadiusThrust(1024, 176, RTF_NOIMPACTDAMAGE | RTF_NOTMISSILE)
			TNT1 A 0 A_SpawnItemEx("AbaxothChargeAfterImage", -20)
			TNT1 A 0 A_SpawnItemEx("GrenadeSmoke", -16, 32, 0, frandom(-0.5, -2), frandom(1, 2.5), frandom(0.5, 2))
			TNT1 A 0 A_SpawnItemEx("GrenadeSmoke", -16, -32, 0, frandom(-0.5, -2), frandom(-1, -2.5), frandom(0.5, 2))
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
			TNT1 A 0 A_JumpIf(user_count == 16, "FinishCharge")
			UE16 H 1 Fast A_JumpIfTargetInLOS("ChargeLoop")
		Goto FinishCharge
		FinishCharge:
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
			TNT1 A 0 A_ChangeFlag("NOBLOOD", 0)
			TNT1 A 0 A_Stop
			UE16 D 6 Fast A_ChangeVelocity(0, 0, velz, CVF_REPLACE)
			UE16 D 0 A_JumpIfCloser(256, "DecideCloseRange")
			UE16 D 2 Fast A_Jump(128, "DecideRanged")
		Goto See
		TectonicSlam:
			UE16 L 5 Fast A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Boolean Sync", true)
			TNT1 A 0 A_PlaySound("Abaxoth/HammerSwing", CHAN_WEAPON)
			UE16 M 5 Fast A_FaceTarget
			TNT1 A 0 A_SpawnItem("AbaxothChargeExp", 50)
			TNT1 A 0 A_SpawnItem("AbaxothTectonicSpawner", 32)
			TNT1 AAAAA 0 A_SpawnItemEx("AbaxothSlamSmoke", 50 + frandom(-8, 8), frandom(-8, 8), frandom(4, 16), frandom(-2, 2), frandom(-2, 2), frandom(0, 2))
			TNT1 A 0 A_Quake(6, 17, 0, 256)
			TNT1 A 0 A_PlaySound("Abaxoth/Slam1", CHAN_6)
			TNT1 A 0 A_PlaySound("Abaxoth/Slam2", CHAN_7)
			TNT1 A 0 A_SpawnItemEx("AbaxothSlamFX", 50)
			TNT1 A 0 A_SpawnItemEx("ExplosionFlare", 24)
			UE16 N 8 Fast A_SpawnItemEx("AbaxothSlamFXSpawner", 24)
			TNT1 A 0 A_PlaySound("Abaxoth/HammerSwing", CHAN_WEAPON)
			UE16 ML 3 Fast
			TNT1 A 0 A_SpawnItem("AbaxothChargeExp", 50)
			TNT1 AAAAA 0 A_SpawnItemEx("AbaxothSlamSmoke", 50 + frandom(-8, 8), frandom(-8, 8), frandom(4, 16), frandom(-2, 2), frandom(-2, 2), frandom(0, 2))
			TNT1 A 0 A_Quake(6, 17, 0, 288)
			TNT1 A 0 A_PlaySound("Abaxoth/Slam1", CHAN_6)
			TNT1 A 0 A_PlaySound("Abaxoth/Slam2", CHAN_7)
			TNT1 A 0 A_SpawnItemEx("AbaxothSlamFX", 50)
			TNT1 A 0 A_SpawnItemEx("ExplosionFlare", 24)
			UE16 N 8 Fast
			UE16 M 5 Fast
			UE16 L 4 Bright Fast
			UE16 L 4 Fast
			UE16 L 4 Bright Fast
			UE16 L 4 Fast
			UE16 L 4 Bright Fast
			TNT1 A 0 A_PlaySound("Abaxoth/HammerSwing", CHAN_WEAPON)
			UE16 M 3 Fast
			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("AbaxothSlamSmoke", 50 + frandom(-8, 8), frandom(-8, 8), frandom(4, 16), frandom(-2, 2), frandom(-2, 2), frandom(0, 2))
			TNT1 A 0 A_SpawnItem("AbaxothChargeExp", 50)
			TNT1 A 0 A_Quake(6, 35, 0, 384)
			TNT1 A 0 A_PlaySound("Abaxoth/Slam1", CHAN_6)
			TNT1 A 0 A_PlaySound("Abaxoth/Slam2", CHAN_7)
			TNT1 A 0 A_SpawnItemEx("AbaxothSlamFX", 50)
			TNT1 A 0 A_SpawnItemEx("ExplosionFlare", 24)
			UE16 N 8 Fast
			UE16 M 3 Fast
			UE16 L 9 Fast
		Goto See
		Fissures:
			TNT1 A 0 A_JumpIfInventory("AbaxothFissureCD", 1, "TectonicSlam")
			TNT1 A 0 A_GiveInventory("AbaxothFissureCD", 1)
			TNT1 A 0 A_PlaySound("Abaxoth/MeleeEffort")
			UE16 L 5 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("Abaxoth/HammerSwing", CHAN_WEAPON)
			UE16 M 5 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("Abaxoth/Slam1", CHAN_6)
			TNT1 A 0 A_PlaySound("Abaxoth/Slam2", CHAN_7)
			TNT1 A 0 A_SpawnItemEx("ExplosionFlare", 24)
			TNT1 A 0 A_SpawnItem("AbaxothChargeExp", 50)
			TNT1 AAAAAAAA 0 A_SpawnItemEx("AbaxothSlamSmoke", 24 + frandom(-8, 8), frandom(-8, 8), frandom(4, 16), frandom(-2, 2), frandom(-2, 2), frandom(0, 2))
			UE16 N 35 Fast A_CustomMissile("AbaxothFissureSpawner", 0, 30, 0, CMF_AIMDIRECTION)
		Goto See
		PainState:
			TNT1 A 0 A_ChangeFlag("NOBLOOD", 0)
			TNT1 A 0 A_StopSound(CHAN_WEAPON)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Pain Immune Toggle", 5)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
			UE16 O 4 Fast ACS_NamedExecuteWithResult("DnD Boolean Sync", false)
			UE16 O 5 Fast A_Pain
		Goto See
		XDeathState:
		DeathState:
			UP23 A 8 Bright A_StopSound(CHAN_WEAPON)
			TNT1 A 0 A_SpawnItemEx("AbaxothHammer", 50, 50, 110, 2, 2, 0, 25)
			UP23 B 8 Bright A_Scream
			UP23 C 8 Bright A_KillChildren("Perish")
			UP23 D 8 Bright A_NoBlocking
			TNT1 A 0 A_SpawnItemEx("AbaxothSlamFXSpawner", 0, 0, 40)
			UP23 EFGHIFGH 4 Bright A_SpawnItemEx("AbaxothTectonicBoom_Small", frandom(-48, 48), frandom(-48, 48), frandom(20, 72))
			TNT1 A 0 A_SpawnItemEx("AbaxothSlamFXSpawner", 0, 0, 40)
			UP23 IFGHIFIF 4 Bright A_SpawnItemEx("AbaxothTectonicBoom_Small", frandom(-48, 48), frandom(-48, 48), frandom(20, 72))
			TNT1 A 0 A_SpawnItemEx("AbaxothSlamFXSpawner", 0, 0, 40)
			UP23 HIFGHFHI 4 Bright A_SpawnItemEx("AbaxothTectonicBoom_Small", frandom(-48, 48), frandom(-48, 48), frandom(20, 72))
			TNT1 A 0 A_SpawnItemEx("AbaxothSlamFXSpawner", 0, 0, 40)
			UP23 GHIGHJKL 4 Bright
			UP23 M 4 Bright A_PlaySound("Abaxoth/DeathBody")
			UP23 NO 4 Bright
			UP23 PQRS 8 
			UP23 T -1  A_KillMaster
		Stop
	}
}

Actor AbaxothThunderShieldProc_CD : PowerProtection {
	damagefactor "normal", 1.0
	powerup.duration 10
}

Actor AbaxothThunderRetaliation {
	Translation "0:255=%[0.00,0.00,0.00]:[1.05,1.30,1.95]"
	PROJECTILE
	Speed 56
	Height 20
	Radius 8
	Damage (5 * random(24, 36))
	DamageType "Lightning"
	Stamina 256
	Scale 0.9
	+RIPPER
	+PIERCEARMOR
	+BLOODLESSIMPACT
	+NODAMAGETHRUST
	SeeSound "weapons/gaussbegin"
	DeathSound "DarkServant/LightningHit"
	Renderstyle Add
	Alpha 0.9
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			HSPL ABCDEFGHIJ 2 Bright A_FadeOut(0.05)
		Loop
		Death:
			HSP2 "#" 1 Bright A_FadeOut(0.075)
		Loop
	}
}

Actor AbaxothThunderShieldProc : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_GiveInventory("AbaxothThunderShieldProc_CD", 1)
			TNT1 A 0 A_CustomMissile("AbaxothThunderRetaliation", frandom(48, 72), frandom(-16 ,16), 0)
			TNT1 AAA 0 A_CustomMissile("AbaxothThunderRetaliation", frandom(48, 72), frandom(-16 ,16), frandom(-16, 16), CMF_OFFSETPITCH, frandom(-9, 9))
			TNT1 A 0 A_PlaySound("Abaxoth/ThunderProc", CHAN_5)
		Stop
	}
}

Actor AbaxothThunderProcFlare : PlasmaFlare {
	XScale 0.8
	YScale 0.4
}

Actor AbaxothThunderSparks : ElectDrSpark {
	Scale 0.4
}

Actor AbaxothThunderProcFX_Spawner {
	Height 2
	Radius 1
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			TNT1 A 0
			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("AbaxothThunderSparks", frandom(-32, 32), frandom(-32, 32), frandom(40, 80), frandom(-8, 8), frandom(-8, 8), frandom(-8, 8), 0, SXF_CLIENTSIDE)
			TNT1 A 10 A_SpawnItemEx("AbaxothThunderProcFlare", 16, 0, 72, 0, 0, 0, 0, SXF_CLIENTSIDE)
		Stop
	}
}

Actor AbaxothShieldFXTrail {
	Scale 0.75
	Renderstyle Add
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			DB21 AAAAAAAAAA 1 A_FadeOut(0.0875)
		Stop
	}
}

Actor AbaxothThunderShieldFX_1 {
	Renderstyle Add
	Height 4
	Radius 2
	Scale 0.75
	+FORCEXYBILLBOARD
	+NOINTERACTION
	+NOCLIP
	+CLIENTSIDEONLY
	const float r = 40.0;
	const float w = 48.0;
	const float h_b = 80.0;
	const int lim = 7 * 35; // 7 seconds
	var int user_count;
	
	States {
		Spawn:
			TNT1 A 0 NoDelay A_SetUserVar("user_count", 0)
		SpawnLoop:
			TNT1 A 0 A_JumpIf(user_count == lim, "Finish")
			DB21 A 1 A_Warp(AAPTR_TARGET, w, -w, h_b + r * sin((user_count * 4) % 360), 8, WARPF_USECALLERANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			TNT1 A 0 A_SpawnItemEx("AbaxothShieldFXTrail")
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		Finish:
			DB21 A 1 A_FadeOut(0.2)
		Stop
	}
}

Actor AbaxothThunderShieldFX_2 : AbaxothThunderShieldFX_1 {
	States {
		Spawn:
			TNT1 A 0 NoDelay A_SetUserVar("user_count", 0)
		SpawnLoop:
			TNT1 A 0 A_JumpIf(user_count == lim, "Finish")
			DB21 A 1 A_Warp(AAPTR_TARGET, w, w, h_b + r * sin((user_count * 4) % 360), 8, WARPF_USECALLERANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			TNT1 A 0 A_SpawnItemEx("AbaxothShieldFXTrail")
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
		Loop
	}
}

Actor AbaxothThunderShieldFX_3 : AbaxothThunderShieldFX_1 {
	States {
		Spawn:
			TNT1 A 0 NoDelay A_SetUserVar("user_count", 0)
		SpawnLoop:
			TNT1 A 0 A_JumpIf(user_count == lim, "Finish")
			DB21 A 1 A_Warp(AAPTR_TARGET, -w, 0, h_b + r * sin((user_count * 4) % 360), 8, WARPF_USECALLERANGLE | WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
			TNT1 A 0 A_SpawnItemEx("AbaxothShieldFXTrail")
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
		Loop
	}
}

Actor AbaxothThunderProcFX {
	Renderstyle Add
	Height 4
	Radius 2
	Scale 1.0
	+FORCEXYBILLBOARD
	+NOINTERACTION
	+NOCLIP
	+CLIENTSIDEONLY
	+RANDOMIZE
	
	States {
		Spawn:
			TXP1 ABCDEFGHIJKLMNOP 1 A_Warp(AAPTR_TARGET, 8, 0, 72, 0, WARPF_NOCHECKPOSITION | WARPF_INTERPOLATE)
		Stop
	}
}

Actor AbaxothSpike {
	PROJECTILE
	Health 1
	Speed 0
	Damage (15)
	Height 64
	Radius 18
	Scale 0.75
	Species "Cyber"
	+THRUSPECIES
	+RIPPER
	+FLOORHUGGER
	+NOBLOOD
	+THRUACTORS
	+DONTBLAST
	States {
		Spawn:
			TNT1 A 1
		Cont:
			UP28 C 2 A_ChangeFlag("THRUACTORS", 0)
			TNT1 A 0 A_PlaySound("ThrustSpikeLower")
			UP28 RQPONMLKJI 2
			TNT1 A 0 A_SpawnItemEx("AbaxothSpikeHitbox", 0, 0, 0)
			UP28 H 3
			UP28 G 4
			UP28 F 5
			UP28 E 6
			UP28 D 7
			UP28 A 105
			UP28 D 7 A_PlaySound("ThrustSpikeRaise")
			UP28 E 6
			UP28 F 5
			UP28 G 4
			UP28 H 3
			UP28 IJKLMNOPQR 2
		Stop
	}
}

Actor AbaxothSpikeHitbox {
	Height 64
	Radius 20
	Species "Cyber"
	+SOLID
	+SHOOTABLE
	+INVULNERABLE
	+DONTBLAST
	+THRUSPECIES
	States {
		Spawn:
			TNT1 A 142
		Stop
	}
}

Actor AbaxothSpikeSpawner_R {
	Radius 16
	Height 64
	Speed 32
	Damage 0
	PROJECTILE
	const float v = 32.0;
	const float rate = 8;
	const int lim = 25;
	var int user_a;
	+THRUACTORS
	+FLOORHUGGER
	+NOCLIP
	+DONTBLAST
	States {
		Spawn:
			TNT1 A 0 A_JumpIf(user_a == lim, "Finish")
			TNT1 A 2 A_CustomMissile("AbaxothSpike", 0, 0, 0, CMF_TRACKOWNER)
			TNT1 A 0 A_SetUserVar("user_a", user_a + 1)
			TNT1 A 0 A_ChangeVelocity(v * cos(angle + user_a * rate), v * sin(angle + user_a * rate), velz, CVF_REPLACE)
		Loop
		Finish:
			TNT1 A 1
		Stop
		Death:
			TNT1 A 1
		Stop
	}
}

Actor AbaxothSpikeSpawner_L : AbaxothSpikeSpawner_R {
	States {
		Spawn:
			TNT1 A 0 A_JumpIf(user_a == lim, "Finish")
			TNT1 A 2 A_CustomMissile("AbaxothSpike", 0, 0, 0, CMF_TRACKOWNER)
			TNT1 A 0 A_SetUserVar("user_a", user_a + 1)
			TNT1 A 0 A_ChangeVelocity(v * cos(angle - user_a * rate), v * sin(angle - user_a * rate), velz, CVF_REPLACE)
		Loop
	}
}

Actor AbaxothFissureCD : PowerDamage {
	damagefactor "normal", 1.0
	powerup.duration -4
}

Actor AbaxothSlamFX {
	Renderstyle Add
	Alpha 0.9
	XScale 1.33
	YScale 1.125
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			CJFX ABCDEF 3 Bright
			CJFX GHI 4 Bright
			CJFX JK 3 Bright
		Stop
	}
}

Actor AbaxothSlamSmoke : GrenadeSmoke {
	scale 0.6
	alpha 0.2275
	States {
		spawn:
			SMOK ABCDEFGHIJKLNOPQ 1
		stop
	}
}

Actor AbaxothSlamParticle {
	Scale 0.1
	Renderstyle Add
	Alpha 0.75
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			LEYS O 1 A_FadeOut(0.033)
		Wait
	}
}

Actor AbaxothSlamFXSpawner {
	var int user_count;
	const int lim = 19;
	+NOINTERACTION
	States {
		Spawn:
			TNT1 A 0 NoDelay A_SetUserVar("user_count", 0)
		SpawnLoop:
			TNT1 A 0 A_JumpIf(user_count == lim, "Finish")
			TNT1 AA 0 A_SpawnItemEx("AbaxothSlamSmoke", frandom(-8, 8), frandom(-8, 8), frandom(4, 16), frandom(-2, 2), frandom(-2, 2), frandom(0, 2))
			TNT1 AAA 1 A_SpawnItemEx("AbaxothSlamParticle", frandom(-8, 8), frandom(-8, 8), frandom(8, 16), frandom(-4, 4), frandom(-4, 4), frandom(1.5, 8))
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		Finish:
			TNT1 A 1
		Stop
	}
}

Actor AbaxothTectonicSpawner {
	PROJECTILE
	Damage 0
	Height 2
	Radius 1
	Speed 0
	+STEPMISSILE
	+NOCLIP
	+DONTBLAST
	+THRUACTORS
	States {
		Spawn:
			TNT1 AAAAAAAAAA 5 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Failed")
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Small", 12, 0, 0, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Small", 12, 0, 45, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Small", 12, 0, 90, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Small", 12, 0, 135, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Small", 12, 0, 180, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Small", 12, 0, 225, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Small", 12, 0, 270, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Small", 12, 0, 315, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 5
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Small2", 12, 0, 0, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Small2", 12, 0, 45, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Small2", 12, 0, 90, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Small2", 12, 0, 135, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Small2", 12, 0, 180, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Small2", 12, 0, 225, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Small2", 12, 0, 270, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Small2", 12, 0, 315, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 5
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Medium", 20, 0, 0, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Medium", 20, 0, 45, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Medium", 20, 0, 90, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Medium", 20, 0, 135, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Medium", 20, 0, 180, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Medium", 20, 0, 225, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Medium", 20, 0, 270, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Medium", 20, 0, 315, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 5
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Medium2", 20, 0, 0, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Medium2", 20, 0, 45, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Medium2", 20, 0, 90, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Medium2", 20, 0, 135, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Medium2", 20, 0, 180, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Medium2", 20, 0, 225, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Medium2", 20, 0, 270, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Medium2", 20, 0, 315, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 5
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Big", 32, 0, 0, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Big", 32, 0, 45, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Big", 32, 0, 90, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Big", 32, 0, 135, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Big", 32, 0, 180, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Big", 32, 0, 225, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Big", 32, 0, 270, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Big", 32, 0, 315, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 5
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Big2", 32, 0, 0, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Big2", 32, 0, 45, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Big2", 32, 0, 90, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Big2", 320, 0, 135, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Big2", 32, 0, 180, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Big2", 32, 0, 225, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Big2", 32, 0, 270, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothTectonicBoom_Big2", 32, 0, 315, CMF_TRACKOWNER | CMF_AIMDIRECTION)
		Failed:
			TNT1 A 5
		Stop
	}
}

Actor AbaxothTectonicBoom_Small : BaseExplosionDamage {
	Obituary "%o fell victim to Abaxoth the End of All That Is."
	DamageType "Explosive"
	Stamina 4
	Renderstyle Add
	const float v = 2.5;
	Scale 0.375
	Speed 60
	MaxStepHeight 64
	+THRUACTORS
	+STEPMISSILE
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 2
		Death:
			TNT1 A 0 A_Stop
			TNT1 A 0 A_ChangeVelocity(0, 0, 0, CVF_REPLACE)
			RPGX B 2 Bright A_PlaySound("Abaxoth/TectonicExp1")
			TNT1 A 0 A_Explode(72, 80, 0, 0, 30)
			RPGX CDEFGHIJKLMNOPQRSTUV 2 Bright
		Stop
	}
}

Actor AbaxothTectonicBoom_Small2 : AbaxothTectonicBoom_Small {
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 4
		Death:
			TNT1 A 0 A_Stop
			TNT1 A 0 A_ChangeVelocity(0, 0, 0, CVF_REPLACE)
			RPGX B 2 Bright A_PlaySound("Abaxoth/TectonicExp1")
			TNT1 A 0 A_Explode(72, 80, 0, 0, 30)
			RPGX CDEFGHIJKLMNOPQRSTUV 2 Bright
		Stop
	}
}

Actor AbaxothTectonicBoom_Medium : AbaxothTectonicBoom_Small {
	Scale 0.75
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 6
		Death:
			TNT1 A 0 A_Stop
			TNT1 A 0 A_ChangeVelocity(0, 0, 0, CVF_REPLACE)
			RPGX B 2 Bright A_PlaySound("Abaxoth/TectonicExp2")
			TNT1 A 0 A_Explode(144, 120, 0, 0, 60)
			RPGX CDEFGHIJKLMNOPQRSTUV 2 Bright
		Stop
	}
}

Actor AbaxothTectonicBoom_Medium2 : AbaxothTectonicBoom_Medium {
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 8
		Death:
			TNT1 A 0 A_Stop
			TNT1 A 0 A_ChangeVelocity(0, 0, 0, CVF_REPLACE)
			RPGX B 2 Bright A_PlaySound("Abaxoth/TectonicExp2")
			TNT1 A 0 A_Explode(144, 120, 0, 0, 60)
			RPGX CDEFGHIJKLMNOPQRSTUV 2 Bright
		Stop
	}
}

Actor AbaxothTectonicBoom_Big : AbaxothTectonicBoom_Small {
	Scale 1.125
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 11
		Death:
			TNT1 A 0 A_Stop
			TNT1 A 0 A_ChangeVelocity(0, 0, 0, CVF_REPLACE)
			RPGX B 2 Bright A_PlaySound("Abaxoth/TectonicExp3")
			TNT1 A 0 A_Explode(216, 160, 0, 0, 90)
			RPGX CDEFGHIJKLMNOPQRSTUV 2 Bright
		Stop
	}
}
Actor AbaxothTectonicBoom_Big2 : AbaxothTectonicBoom_Big {
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 14
		Death:
			TNT1 A 0 A_Stop
			TNT1 A 0 A_ChangeVelocity(0, 0, 0, CVF_REPLACE)
			RPGX B 2 Bright A_PlaySound("Abaxoth/TectonicExp3")
			TNT1 A 0 A_Explode(216, 160, 0, 0, 90)
			RPGX CDEFGHIJKLMNOPQRSTUV 2 Bright
		Stop
	}
}

Actor AbaxothFissureSpawner {
	Radius 16
	Height 28
	Speed 32
	MaxStepHeight 128
	Damage 0
	PROJECTILE
	+THRUACTORS
	+DONTBLAST
	+STEPMISSILE
	States {
		Spawn:
			TNT1 A 1
			TNT1 AAAAAAAAA 4 A_CustomMissile("AbaxothFissure", floorz - z, 0, 0, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_Stop
			TNT1 A 0 A_ChangeVelocity(0, 0, 0, CVF_REPLACE)
			TNT1 A 0 A_SpawnItem("AbaxothSpike", 36)
			TNT1 A 0 A_CustomMissile("AbaxothFissure", floorz - z, 0, 0, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("AbaxothSpikeSpawner_L", 0, 0, -60, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 10 A_CustomMissile("AbaxothSpikeSpawner_R", 0, 0, 60, CMF_TRACKOWNER | CMF_AIMDIRECTION)
		Stop
		Death:
			TNT1 A 0 A_SpawnItem("AbaxothSpike", 36)
			TNT1 A 0 A_CustomMissile("AbaxothFissure", floorz - z, 0, 0, CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("AbaxothSpikeSpawner_L", 0, 0, -60, CMF_TRACKOWNER | CMF_AIMDIRECTION)
			TNT1 A 10 A_CustomMissile("AbaxothSpikeSpawner_R", 0, 0, 60, CMF_TRACKOWNER | CMF_AIMDIRECTION)
		Stop
	}
}

Actor AbaxothFissure {
	Radius 16
	Height 28
	Scale 1.25
	Speed 0
	ReactionTime 12
	SeeSound "ThrustSpikeLower"
	// hack to make these spawn properly on changing floor heights while the spawner itself can climb steps
	BounceType "Hexen"
	BounceFactor 0
	+MISSILE
	+THRUACTORS
	+DONTBLAST
	+FLOORHUGGER
	States {
		Spawn:
			UP26 FGH 5
			UP26 A 105
		SpawnLoop:
			UP26 BC 3
			UP26 DB 2
			UP26 CDBCD 1
			TNT1 A 0 A_Jump(128, "Two", "Three")
			UP26 E 9 Bright A_CustomMissile("AbaxothLavaBall", 44, 0, frandom(0, 360), CMF_TRACKOWNER)
		ContinueCount:
			UP26 A 24 A_CountDown
		Goto SpawnLoop
		Two:
			TNT1 A 0 A_CustomMissile("AbaxothLavaBall", 44, 0, frandom(0, 360), CMF_TRACKOWNER)
			UP26 E 9 Bright A_CustomMissile("AbaxothLavaBall", 44, 0, frandom(0, 360), CMF_TRACKOWNER)
		Goto ContinueCount
		Three:
			TNT1 AA 0 A_CustomMissile("AbaxothLavaBall", 44, 0, frandom(0, 360), CMF_TRACKOWNER)
			UP26 E 9 Bright A_CustomMissile("AbaxothLavaBall", 44, 0, frandom(0, 360), CMF_TRACKOWNER)
		Goto ContinueCount
		Death:
			TNT1 A 0 A_PlaySound("ThrustSpikeRaise")
			UP26 HGF 5
		Stop
	}
}

Actor AbaxothLavaBall {
	PROJECTILE
	Damage (25)
	DamageType "Fire"
	Stamina 32
	SeeSound "RubyWand/Fire"
	DeathSound "weapons/phoenixhit"
	Speed 9
	Height 16
	Radius 8
	Gravity 0.5125
	-NOGRAVITY
	+DONTBLAST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 A_ChangeVelocity(0, 0, frandom(3, 8), CVF_RELATIVE)
		SpawnLoop:
			VFBL AABB 2 Bright A_SpawnItemEx("PaladinGrenadeTrail", random2[BeastPuff]()*0.015625, random2[BeastPuff]()*0.015625, random2[BeastPuff]()*0.015625, 0, 0, 0, 0, SXF_ABSOLUTEPOSITION, 64)
		Loop
		Death:
			TNT1 A 0 A_SpawnItem("AbaxothLavaBallExp")
			TNT1 A 0 A_ChangeFlag("NOGRAVITY", 1)
			TNT1 A 0 A_Stop
			TNT1 A 0 A_ChangeVelocity(0, 0, 0, CVF_REPLACE)
			XPL1 ABCDEF 3 Bright
		Stop
	}
}

Actor AbaxothLavaBallExp : BaseExplosionDamage {
	Obituary "%o fell victim to Abaxoth the End of All That Is."
	DamageType "ExplosiveFire"
	Stamina 36
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(40, 72, 0, 0, 24)
		Stop
	}
}

Actor AbaxothThunderCooldown : PowerDamage {
	powerup.duration -11
	damagefactor "normal", 1.0
}

Actor AbaxothThunderFX {
	Renderstyle Add
	Alpha 0.01
	+NOINTERACTION
	+CLIENTSIDEONLY
	Translation "0:255=%[0.00,0.00,0.00]:[1.17,1.49,2.00]"
	States {
		Spawn:
			TNT1 A 0 NoDelay A_Jump(128, "B")
			THND A 0
		Goto Anim
		B:
			THND B 0
		Goto Anim
		Anim:
			"####" "#" 0 A_PlaySound("Abaxoth/Thunder")
			"####" "####" 1 A_FadeIn(0.25)
			"####" "########" 1 A_FadeOut(0.125)
		Stop
	}
}

Actor AbaxothThunderFX_Thin : AbaxothThunderFX {
	States {
		Spawn:
			TNT1 A 0 NoDelay A_Jump(128, "B", "C", "D", "E", "F")
			UP27 A 0
		Goto Anim
		B:
			UP27 B 0
		Goto Anim
		C:
			UP27 C 0
		Goto Anim
		D:
			UP27 D 0
		Goto Anim
		E:
			UP27 E 0
		Goto Anim
		F:
			UP27 F 0
		Goto Anim
		Anim:
			"####" "####" 1 A_FadeIn(0.25)
			"####" "########" 1 A_FadeOut(0.125)
		Stop
	}
}

Actor AbaxothThunderbolt {
	PROJECTILE
	damage (250)
	DamageType "Lightning"
	Stamina 256
	SeeSound "Spell/LightningSpearCast"
	DeathSound "Spell/LightningSpearBounce"
	Radius 12
	Height 24
	Species "Cyber"
	speed 60
	Renderstyle Add
	Scale 1.15
	const float r = 12.0;
	const float v = 2.0;
	+THRUSPECIES
	+DONTBLAST
	+DONTREFLECT
	+SKYEXPLODE
	+PIERCEARMOR
	+DONTBLAST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			UP25 AAA 1 Bright Light("AbaxothLightning1") A_SpawnItemEx("AbaxothThunderSparkle", frandom(-r, r), frandom(-r, r), frandom(-r, r), frandom(-v, v), frandom(-v, v), frandom(-v, v))
			TNT1 A 0 A_SpawnItemEx("AbaxothThunderbolt_TrailA", -20)
			TNT1 A 0 A_SpawnItemEx("AbaxothThunderbolt_TrailA", -40)
			UP25 BBB 1 Bright Light("AbaxothLightning1") A_SpawnItemEx("AbaxothThunderSparkle", frandom(-r, r), frandom(-r, r), frandom(-r, r), frandom(-v, v), frandom(-v, v), frandom(-v, v))
			TNT1 A 0 A_SpawnItemEx("AbaxothThunderbolt_TrailB", -20)
			TNT1 A 0 A_SpawnItemEx("AbaxothThunderbolt_TrailB", -40)
			UP25 CCC 1 Bright Light("AbaxothLightning1") A_SpawnItemEx("AbaxothThunderSparkle", frandom(-r, r), frandom(-r, r), frandom(-r, r), frandom(-v, v), frandom(-v, v), frandom(-v, v))
			TNT1 A 0 A_SpawnItemEx("AbaxothThunderbolt_TrailC", -20)
			TNT1 A 0 A_SpawnItemEx("AbaxothThunderbolt_TrailC", -40)
		Loop
		Death:
			MORZ AAA 1 Light("AbaxothLightning2") A_SetScale(scalex - 0.06, scaley - 0.06)
			MORZ BBB 1 Light("AbaxothLightning2") A_SetScale(scalex - 0.06, scaley - 0.06)
			MORZ CCC 1 Light("AbaxothLightning2") A_SetScale(scalex - 0.06, scaley - 0.06)
			MORZ DDD 1 Light("AbaxothLightning2") A_SetScale(scalex - 0.06, scaley - 0.06)
			MORZ EEE 1 Light("AbaxothLightning2") A_SetScale(scalex - 0.06, scaley - 0.06)
		Stop
	}
}

Actor AbaxothThunderbolt_TrailA {
	Renderstyle Add
	Scale 1.15
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			UP25 A 1 Bright A_FadeOut(0.1)
		Wait
	}
}

Actor AbaxothThunderbolt_TrailB : AbaxothThunderbolt_TrailA {
	States {
		Spawn:
			UP25 B 1 Bright A_FadeOut(0.1)
		Wait
	}
}

Actor AbaxothThunderbolt_TrailC : AbaxothThunderbolt_TrailA {
	States {
		Spawn:
			UP25 C 1 Bright A_FadeOut(0.1)
		Wait
	}
}

Actor AbaxothThunderSparkle {
	Renderstyle Add
	+NOINTERACTION
	+CLIENTSIDEONLY
	+RANDOMIZE
	States {
		Spawn:
			MORZ PONMLK 2 Bright
		Stop
	}
}

Actor AbaxothThunderExp : BaseExplosionDamage {
	DamageType "ExplosiveLightning"
	Stamina 260
	Obituary "%o fell victim to Abaxoth the End of All That Is."
	+PIERCEARMOR
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(200, 192, 0, 0, 96)
		Stop
	}
}

Actor AbaxothThunderExploder : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_SpawnItem("AbaxothThunderExp")
		Stop
	}
}

Actor AbaxothChargeAfterImage {
	Renderstyle Translucent
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			UE16 H 1 A_FadeOut(0.075)
		Wait
	}
}

Actor AbaxothChargeExp : BaseExplosionDamage {
	Obituary "%o fell victim to Abaxoth the End of All That Is."
	DamageType "Melee"
	Stamina 1
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(128, 160, 0, 0, 80)
		Stop
	}
}

// waits 64 tics
Actor AbaxothLaserMarker {
	Renderstyle Add
	Translation "0:255=%[0.00,0.00,0.00]:[1.76,0.00,0.00]"
	const int t = 15;
	const float s = 1.0 / 32;
	var int user_count;
	+NOINTERACTION
	+FORCEXYBILLBOARD
	States {
		Spawn:
			TNT1 A 0 A_JumpIf(user_count >= t, "Finish")
			R075 P 2 Fast Bright A_Warp(AAPTR_TARGET, 16, -28, 88, 0, WARPF_INTERPOLATE)
			TNT1 A 0 A_SetScale(scalex - s, scaley - s)
			R075 P 2 Fast Bright A_Warp(AAPTR_TARGET, 16, -28, 88, 0, WARPF_INTERPOLATE)
			TNT1 A 0 A_SetScale(scalex - s, scaley - s)
			TNT1 A 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		Finish:
			TNT1 A 1
		Stop
		Fade:
			R075 P 1 Fast A_FadeOut(0.1)
		Wait
	}
}

Actor AbaxothRailPuff {
	Radius 8
	Height 16
	Renderstyle Add
	Alpha 0.875
	Scale 0.0875
	DamageType "Energy"
	Stamina 16
	+ALWAYSPUFF
	+PUFFONACTORS
	States {
		Spawn:
			TNT1 AAAA 0
			ERWE K 1 Bright A_FadeOut(0.125)
		Loop
	}
}

Actor AbaxothRailTrail {
	Renderstyle Add
	Alpha 0.875
	Scale 0.0875
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			OGLP C 1 Bright A_FadeOut(0.125)
		Loop
	}
}

Actor AbaxothRocketExp : BaseExplosionDamage {
	DamageType "Explosive"
	Stamina 4
	Obituary "%o fell victim to Abaxoth the End of All That Is."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 3 A_Explode(20, 64, 0, 0, 16)
		Stop
	}
}

Actor AbaxothRocket {
	PROJECTILE
	Speed 20
	Damage (20)
	DamageType "Explosive"
	Stamina 4
	SeeSound "weapons/tp_fire"
	DeathSound "weapons/heavyrlexp"
	Height 10
	Radius 5
	WeaveIndexXY 32
	+SEEKERMISSILE
	+THRUGHOST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			MICM A 2 Bright A_SpawnItemEx("DnD_RocketTrail", -12, 0, 5)
			TNT1 A 0 A_SeekerMissile(5, 5)
			TNT1 A 0 A_Weave(2, 2, 2, 2)
		Loop
		Death:
			TNT1 A 0 A_SpawnItem("AbaxothRocketExp")
			MACX ABCDEFGHIJ 3 Bright
		Stop
	}
}

Actor AbaxothRocketL : AbaxothRocket {
	WeaveIndexXY 0
}

ACTOR AbaxothHammer : CacodemonBall { 
	Damage (20)
	DamageType "Melee"
	Stamina 1
	Speed 0
	Obituary "%o fell victim to Abaxoth the End of All That Is."
	SeeSound ""
	DeathSound "Abaxoth/Walk"
	Renderstyle Normal
	+RIPPER
	-NOGRAVITY
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			UP24 ABC 3
		SpawnLoop:
			UP24 D 3 
		Loop
		Death:
		Crash:
			UP24 EFG 3  
			UP24 G -1
		stop
	}
}