Actor DreamingGod : DnD_BaseRangedBoss {
	tag "The Dreaming God"
	obituary "%o was disintegrated for gazing upon The Dreaming God."
	Health 0x7FFFFFFF
	radius 40
	height 110
	ProjectilePassHeight 160
	mass 2400
	speed 5
	painchance 4
	seesound "Dreamer/See"
	painsound "Dreamer/See"
	deathsound "Dreamer/Die"
	activesound "Dreamer/Act"
	Species "Cyber"
	Scale 1.0
	+ISMONSTER
	+BOSS
	+QUICKTORETALIATE
	+MISSILEMORE
	+NOINFIGHTING
	+NORADIUSDMG
	+NOTARGET
	-FLOORCLIP
	+LOOKALLAROUND
	+DONTRIP
	const int dreamer_burn = 3;
	RadiusDamageFactor 0.5
	states {
		SetInfo:
			TNT1 A 0 ACS_NamedExecuteAlways("DND Dreamer Burn", 0, dreamer_burn)
			TNT1 A 0 A_SetArg(4, DND_DREAMER)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", 10000)
		Goto SpawnSetup
			
		IdleState:
			TCHR A 10 A_GiveInventory("DnD_SightChecker", 1)
		loop
		SeeState:
			TCHR AAAAA 1 A_Chase("", "", CHF_NOPLAYACTIVE)
			TCHR BBBBB 1 A_Chase
			TCHR CCCCC 1 A_Chase("", "", CHF_NOPLAYACTIVE)
			TNT1 A 0 A_PlaySound("Dreamer/Hoof")
			TNT1 A 0 A_SpawnItemEx("DreamerStomp")
			TCHR DDDDD 1 A_Chase
			TCHR EEEEE 1 A_Chase("", "", CHF_NOPLAYACTIVE)
			TCHR FFFFF 1 A_Chase
			TCHR F 0 A_PlaySound("Dreamer/Hoof")
			TCHR F 0 A_SpawnItemEx("DreamerStomp")
		Goto See
		MissileState:
			TNT1 A 0 A_GiveInventory("TchernoLightningShooter", 1)
			TNT1 A 0 A_Jump(128, "Circle", "Portal", "LongRange")
		MissileRedecide:
			TNT1 A 0 A_Jump(128, "LongRange", "Portal")
		MissileNormal:
			TCHR G 5
			TNT1 A 0 A_VileTarget("DreamerDamager")
			TCHR H 3 Bright A_FaceTarget
			TCHR I 3 Bright A_FaceTarget
			TNT1 A 0 A_VileTarget("DreamerDamager")
			TCHR H 3 Bright A_FaceTarget
			TCHR I 3 Bright A_FaceTarget
			TNT1 A 0 A_CustomMissile("TchernobogMissile2", 108, 24)
			TNT1 A 0 A_CustomMissile("TchernobogMissile", 108, -24)
			TCHR J 6 Bright
			TCHR G 5
		Goto See
		LongRange:
			TNT1 A 0 A_JumpIfCloser(416, "MissileNormal")
			TCHR G 5
			TNT1 A 0 A_VileTarget("DreamerDamager")
			TCHR H 3 Bright A_FaceTarget
			TCHR I 3 Bright A_FaceTarget
			TNT1 A 0 A_VileTarget("DreamerDamager")
			TCHR H 3 Bright A_FaceTarget
			TCHR I 3 Bright A_FaceTarget
			TNT1 A 0 A_FaceTarget
			TCHR J 3 Bright A_CustomMissile("SplitParticle1", 108)
			TNT1 A 0 A_FaceTarget
			TCHR J 3 Bright A_CustomMissile("SplitParticle2", 108)
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_CustomMissile("SplitParticle3", 92, 0, -16)
			TNT1 A 0 A_CustomMissile("SplitParticle3", 92, 0, -12)
			TNT1 A 0 A_CustomMissile("SplitParticle3", 92, 0, -8)
			TNT1 A 0 A_CustomMissile("SplitParticle3", 92, 0, -4)
			TNT1 A 0 A_CustomMissile("SplitParticle3", 92, 0, 16)
			TNT1 A 0 A_CustomMissile("SplitParticle3", 92, 0, 12)
			TNT1 A 0 A_CustomMissile("SplitParticle3", 92, 0, 8)
			TNT1 A 0 A_CustomMissile("SplitParticle3", 92, 0, 4)
			TCHR J 3 Bright A_CustomMissile("SplitParticle3", 108)
			TNT1 A 0 A_FaceTarget
			TCHR J 3 Bright A_CustomMissile("SplitParticle4", 108)
			TNT1 A 0 A_FaceTarget
			TCHR J 3 Bright A_CustomMissile("SplitParticle5", 108)
			TCHR G 5
		Goto See
		Portal:
			TNT1 A 0 A_JumpIfInventory("TchernoPortalCooldown", 1, "MissileNormal")
			TNT1 AAA 0 A_PlaySoundEx("Dreamer/Cast", 7, 0, ATTN_NONE)
			TCHR G 5 
			TCHR HIHI 3 Bright
			TNT1 A 0 A_SpawnItem("TchernoPortal", 0, 192)
			TNT1 A 0 A_GiveInventory("TchernoPortalCooldown", 1)
			TCHR J 6 Bright A_CustomMissile("ActualTchernoPortal", 144)
			TCHR K 8
		Goto See
		Circle:
			TNT1 A 0 A_JumpIfCloser(484, "CircleContinue")
		Goto MissileRedecide
		CircleContinue:
			TNT1 AAA 0 A_PlaySoundEx("Dreamer/Cast", 7, 0, ATTN_NONE)
			TCHR G 5 
			TCHR HIHIHIHI 3 Bright A_FaceTarget
			TCHR J 6 Bright A_SpawnItem("TchernoExplosionCircle", 0, 128)
			TCHR G 8
		Goto See
		PainState:
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Pain Immune Toggle", 5)
			TNT1 A 0 A_JumpIfHealthLower(2 * ACS_ExecuteWithResult(961, 7) / 3, "PainX")
			TCHR L 11 A_Pain
		Goto See
		PainX:
			TNT1 A 0 A_CustomMissile("TchernoLightning", 0, 0, 0, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("TchernoLightning", 0, 0, 45, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("TchernoLightning", 0, 0, 90, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("TchernoLightning", 0, 0, 135, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("TchernoLightning", 0, 0, 180, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("TchernoLightning", 0, 0, 225, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("TchernoLightning", 0, 0, 270, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("TchernoLightning", 0, 0, 335, CMF_AIMDIRECTION)
			TNT1 A 0 Radius_quake(2,18,0,256,0)
			TCHR L 11 A_PlaySound("Dreamer/Pain")
		Goto See
		XDeathState:
		DeathState:
			TCHR M 7 A_Scream
			TNT1 A 0 A_NoBlocking
			TCHR NOPQ 7
			TCHR Q -1 A_KillMaster
		Stop
	}
}

Actor TchernoLightningShooter : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_JumpIfHealthLower(2 * ACS_ExecuteWithResult(961, 7) / 3, "Go")
		Stop
		Go:
			TNT1 A 0 A_CustomMissile("TchernoLightning", 0, 0, 0, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("TchernoLightning", 0, 0, 45, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("TchernoLightning", 0, 0, 90, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("TchernoLightning", 0, 0, 135, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("TchernoLightning", 0, 0, 180, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("TchernoLightning", 0, 0, 225, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("TchernoLightning", 0, 0, 270, CMF_AIMDIRECTION)
			TNT1 A 0 A_CustomMissile("TchernoLightning", 0, 0, 335, CMF_AIMDIRECTION)
		Stop
	}
}

actor TchernobogMissile {
	Decal Scorch
	radius 16
	height 9
	XScale 0.95
	YScale 0.675
	speed 24
	RENDERSTYLE ADD
	damage (32 * random(4, 5))
	PROJECTILE
	+DONTSPLASH
	+DONTBLAST
	+DONTREFLECT
	DamageType "MagicalBlue"
	Stamina 8
	deathsound "Cerberus/Explode"
    alpha 0.75
	states {
		Spawn:
			TROK A 1 bright A_SpawnItem ("TfireTrail",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK A 1 bright A_SpawnItem ("TfireTrail",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK A 1 bright A_SpawnItem ("TfireTrail",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK B 1 bright A_SpawnItem ("TfireTrail",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK B 1 bright A_SpawnItem ("TfireTrail",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK B 1 bright A_SpawnItem ("TfireTrail",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK C 1 bright A_SpawnItem ("TfireTrail",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK C 1 bright A_SpawnItem ("TfireTrail",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK C 1 bright A_SpawnItem ("TfireTrail",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK D 1 bright A_SpawnItem ("TfireTrail",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK D 1 bright A_SpawnItem ("TfireTrail",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK D 1 bright A_SpawnItem ("TfireTrail",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK E 1 bright A_SpawnItem ("TfireTrail",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK E 1 bright A_SpawnItem ("TfireTrail",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK E 1 bright A_SpawnItem ("TfireTrail",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
		loop
		Death:
			TNT1 A 0 A_SpawnItem("TchernobogExplosion")
			TNT1 A 0 Radius_quake(2,8,0,16,0)
			TEX2 ABC 3 bright    
			TNT1 A 0 Radius_Quake (1,10,0,16,0)
			TEX2 DEFG 3 bright
			TEX2 HIJ 2 bright
			TEX2 KL 2 bright
		stop
	}
}

Actor TchernobogMissile2 : TchernobogMissile {
	States {
		Spawn:
			TROK A 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK A 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK A 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK B 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK B 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK B 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK C 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK C 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK C 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK D 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK D 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK D 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK E 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK E 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
			TROK E 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX")
		Loop
	}
}

Actor TFlyFX {
	Renderstyle Add
	Alpha 0.85
	Scale 0.325
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			TNT1 A 2 NoDelay A_jump(128, "Other")
		SpawnLoop:
			TMIS A 1 A_FadeOut(0.0625)
		Loop
		Other:
			TMIS B 1 A_FadeOut(0.0625)
		Loop
	}
}

Actor TchernobogExplosion : BaseExplosionDamage {
	DamageType "MagicalBlue"
	Stamina 8
	States {
		Spawn:
			TNT1 A 8 NoDelay A_Explode(192, 160, 0)
			TNT1 AAAAAA 4 A_Explode(32, 160, 0)
		Stop
	}
}

Actor DreamerStomp {
	+DONTSPLASH
	+PAINLESS
	+NOTIMEFREEZE
	+BLOODLESSIMPACT
	+NODAMAGETHRUST
	+DONTBLAST
	Radius 1
	Height 1
	Damage 0
	DamageType "Physical"
	Stamina 1
	Obituary "%o got too close to The Dreaming God."
    States {
		Spawn:
			TNT1 A 1
			TNT1 A 1 A_Explode(128, 128, 0)
		Stop	
	}
}

Actor TFireTrail {
	radius 1
	height 1
	RENDERSTYLE ADD
	Scale 0.33
	alpha 0.9
	+NOINTERACTION
	+CLIENTSIDEONLY
	+RANDOMIZE
	States {
		Spawn:
			TNT1 A 0 NoDelay A_Jump(220,1,2,3,4,5,6,7)
			TFIR ABCDEFGH 4 bright A_FadeOut(0.0825)
		stop
	}
}

Actor TFireTrail2 : TFireTrail {
	States {
		Spawn:
		    TNT1 A 0 NoDelay A_Jump(220,1,2,3,4,5,6,7)
			TFIR IJKLMNOP 4 bright A_FadeOut(0.0825)
		Stop
	}
}

Actor DreamerDamager {
	Height 1
	Radius 1
	DamageType "FireDreamer"
	Stamina 32
	+NOGRAVITY
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(2, 36, 0, 0, 36)
		Stop
	}
}

Actor DreamerBurnFireSpawner {
	const int spawn_count = 8;
	var int user_counter;
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 1 NoDelay A_SetUserVar("user_counter", 0)
		SpawnLoop:
			TNT1 A 0 A_JumpIf(user_counter == spawn_count, "Finish")
			TNT1 A 0 A_Jump(128, "Other")
			TNT1 A 1 A_SpawnItemEx("TFireTrail", frandom(-30, 30), frandom(-30, 30), frandom(0, 30), 0, 0, frandom(1, 4))
			TNT1 A 0 A_SetUserVar("user_counter", user_counter + 1)
		Loop
		Other:
			TNT1 A 1 A_SpawnItemEx("TFireTrail2", frandom(-30, 30), frandom(-30, 30), frandom(0, 30), 0, 0, frandom(1, 4))
			TNT1 A 0 A_SetUserVar("user_counter", user_counter + 1)
		Goto SpawnLoop
		Finish:
			TNT1 A 0
		Stop
	}
}

Actor DreamerBurnFXStarter : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 ACS_NamedExecuteAlways("DND Dreamer Burn FX", 0, 17)
		Stop
	}
}

Actor TchernoExplosion  {
	Speed 40
	Radius 8
	Height 8
	Scale 0.85
	PROJECTILE
	Damage 0
	+RIPPER
	+FLOORHUGGER
	+BLOODLESSIMPACT
	+FORCERADIUSDMG
	DamageType "MagicalBlue"
	Stamina 8
	Obituary "%o was disemboweled by The Dreaming God."
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_PlaySound("Cerberus/Explode")
			TEX2 A 2 Bright A_Explode(24, 128, 0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX", 0, 32)
			TEX2 A 2 Bright A_Explode(24, 128, 0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX", 0, 32)
			TEX2 B 2 Bright A_Explode(48, 128, 0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX", 0, 32)
			TEX2 B 2 Bright A_Explode(48, 128, 0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX", 0, 32)
			TEX2 C 2 Bright A_Explode(96, 128, 0)
			TNT1 A 0 A_SpawnItemEx("TFlyFX", 0, 32)
			TEX2 C 2 Bright A_Explode(96, 128, 0)
		Death:
			TNT1 A 0 A_Stop
			TEX2 DEFGHIJKL 3 Bright A_Explode(128, 128, 0)
		Stop
	}
}

Actor TchernoCorpseExplosion : TchernoExplosion {
	-FLOORHUGGER
	Speed 0
	States {
		Spawn:
			TEX2 L 5
			TEX2 K 4
			TEX2 J 3
			TEX2 I 2
			TEX2 HGFEDCBA 1
			TNT1 A 13
			TNT1 A 0 A_PlaySound("Cerberus/Explode")
			TEX2 A 2 Bright A_Explode(24, 128, 0)
			TEX2 A 2 Bright A_Explode(24, 128, 0)
			TEX2 B 2 Bright A_Explode(48, 128, 0)
			TEX2 B 2 Bright A_Explode(48, 128, 0)
			TEX2 C 2 Bright A_Explode(96, 128, 0)
			TEX2 C 2 Bright A_Explode(96, 128, 0)
		Death:
			TNT1 A 0 A_Stop
			TEX2 DEFGHIJKL 3 Bright A_Explode(128, 128, 0)
		Stop
	}
}

Actor TchernoExplosionHigh : TchernoExplosion {
	-FLOORHUGGER
}

Actor TchernoExplosionCircle {
	Radius 1
	Height 1
	+MISSILE
	+NOGRAVITY
	+NOCLIP
	States {
		Spawn:
			TNT1 A 1
			TNT1 A 0 A_CustomMissile("TchernoExplosionHigh", 0, 0, 0, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("TchernoExplosion", 0, 0, 0, CMF_AIMDIRECTION | CMF_TRACKOWNER)			
			TNT1 A 0 A_CustomMissile("TchernoExplosionHigh", 0, 0, 30, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("TchernoExplosion", 0, 0, 30, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("TchernoExplosionHigh", 0, 0, 60, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("TchernoExplosion", 0, 0, 60, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("TchernoExplosionHigh", 0, 0, 90, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("TchernoExplosion", 0, 0, 90, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("TchernoExplosionHigh", 0, 0, 120, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("TchernoExplosion", 0, 0, 120, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("TchernoExplosionHigh", 0, 0, 150, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("TchernoExplosion", 0, 0, 150, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("TchernoExplosionHigh", 0, 0, 180, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("TchernoExplosion", 0, 0, 180, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("TchernoExplosionHigh", 0, 0, 210, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("TchernoExplosion", 0, 0, 210, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("TchernoExplosionHigh", 0, 0, 240, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("TchernoExplosion", 0, 0, 240, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("TchernoExplosionHigh", 0, 0, 270, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("TchernoExplosion", 0, 0, 270, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("TchernoExplosionHigh", 0, 0, 300, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("TchernoExplosion", 0, 0, 300, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("TchernoExplosionHigh", 0, 0, 330, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 2 A_CustomMissile("TchernoExplosion", 0, 0, 330, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		Stop
	}
}

actor SplitParticleFX {
	radius 1
	height 1
	Speed 10
	Scale 0.2
	PROJECTILE
	+NOBLOCKMAP
	+DONTSPLASH
	+RANDOMIZE
	-NOGRAVITY
	-SOLID
	+CLIENTSIDEONLY
	RENDERSTYLE ADD
	states {
		Spawn:
			EYEP A 0 bright
			EYEP A 10 bright
			EYEP A 200 bright A_LowGravity
		stop
			EYEP B 10 bright
			EYEP B 200 bright A_LowGravity
		stop
			EYEP C 10 bright
			EYEP C 200 bright A_LowGravity
		stop
			EYEP D 10 bright
			EYEP D 200 bright A_LowGravity
		stop
			EYEP E 10 bright
			EYEP E 200 bright A_LowGravity
		stop
			EYEP F 10 bright
			EYEP F 200 bright A_LowGravity
		stop
		Death:
			EYEP F 1
		stop
	}
}

actor SplitParticleAfterLight {
	Radius 8
	Height 8
	Scale 0.5
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			TNT1 A 4
			TNT1 A 1
		Stop
	}
}

Actor SplitParticleExplosion : BaseExplosionDamage {
	DamageType "MagicalBlue"
	Stamina 8
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(36, 96, 0)
		Stop
	}
}

Actor SplitTrail_A {
	+NOINTERACTION
	+CLIENTSIDEONLY
	Renderstyle Add
	Alpha 0.85
	Scale 0.65
	States {
		Spawn:
			TNT1 A 1
		SpawnLoop:
			EYEB A 1 A_FadeOut(0.075)
			TNT1 A 0 A_SetScale(scalex - 0.05, scaley - 0.05)
		Loop
	}
}

Actor SplitTrail_B : SplitTrail_A {
	States {
		SpawnLoop:
			EYEB B 1 A_FadeOut(0.075)
			TNT1 A 0 A_SetScale(scalex - 0.05, scaley - 0.05)
		Loop
	}
}

Actor SplitTrail_C : SplitTrail_A {
	States {
		SpawnLoop:
			EYEB C 1 A_FadeOut(0.075)
			TNT1 A 0 A_SetScale(scalex - 0.05, scaley - 0.05)
		Loop
	}
}

Actor SplitTrail_D : SplitTrail_A {
	States {
		SpawnLoop:
			EYEB D 1 A_FadeOut(0.075)
			TNT1 A 0 A_SetScale(scalex - 0.05, scaley - 0.05)
		Loop
	}
}

Actor SplitParticle1 {
	Height 12
	Radius 6
	PROJECTILE
	Damage (30)
	Speed 40
	seesound "Dreamer/Blast"
	deathsound "Dreamer/BlastExp"
	DamageType "MagicalBlue"
	Stamina 8
	Obituary "%o couldn't stand against the power of The Dreaming God."
	RenderStyle Add
	Alpha 0.8
	Scale 0.65
	+DONTBLAST
	+DONTSPLASH
	States {
		Spawn:
			EYEB A 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_A", 0, 0)
			EYEB A 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_A", 0, 0)
			EYEB B 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_B", 0, 0)
			EYEB B 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_B", 0, 0)
			EYEB C 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_C", 0, 0)
			EYEB C 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_C", 0, 0)
			EYEB D 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_D", 0, 0)
			EYEB D 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_D", 0, 0)
		Loop
		Death:
			TNT1 A 0 A_SpawnItem("SplitParticleExplosion")
			TNT1 EEEEEEEEEEEEEEEEEE 0 A_CustomMissile("SplitParticleFX", 0, 0, random(0,360), 2, random(-90,90))
			TNT1 A 0 A_SpawnItemEx("SplitParticleAfterLight")
			TNT1 A 1
		stop
	}
}

Actor SplitParticle2 : SplitParticle1 {
	States {
		Spawn:
			TNT1 AAAAAAAA 0 A_BishopMissileWeave
		SpawnLoop:
			EYEB A 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_A", 0, 0)
			EYEB A 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_A", 0, 0)
			EYEB B 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_B", 0, 0)
			EYEB B 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_B", 0, 0)
			EYEB C 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_C", 0, 0)
			EYEB C 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_C", 0, 0)
			EYEB D 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_D", 0, 0)
			EYEB D 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_D", 0, 0)
		Loop
	}
}

Actor SplitParticle3 : SplitParticle1 {
	Damage (10)
	States {
		Spawn:
			TNT1 AAAAAAAAAAAA 0 A_BishopMissileWeave
		SpawnLoop:
			EYEB A 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_A", 0, 0)
			EYEB A 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_A", 0, 0)
			EYEB B 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_B", 0, 0)
			EYEB B 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_B", 0, 0)
			EYEB C 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_C", 0, 0)
			EYEB C 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_C", 0, 0)
			EYEB D 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_D", 0, 0)
			EYEB D 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_D", 0, 0)
		Loop
	}
}

Actor SplitParticle4 : SplitParticle1 {
	States {
		Spawn:
			TNT1 AAAAAAAAAAAAAAAA 0 A_BishopMissileWeave
		SpawnLoop:
			EYEB A 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_A", 0, 0)
			EYEB A 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_A", 0, 0)
			EYEB B 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_B", 0, 0)
			EYEB B 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_B", 0, 0)
			EYEB C 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_C", 0, 0)
			EYEB C 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_C", 0, 0)
			EYEB D 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_D", 0, 0)
			EYEB D 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_D", 0, 0)
		Loop
	}
}

Actor SplitParticle5 : SplitParticle1 {
	States {
		Spawn:
			TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_BishopMissileWeave
		SpawnLoop:
			EYEB A 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_A", 0, 0)
			EYEB A 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_A", 0, 0)
			EYEB B 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_B", 0, 0)
			EYEB B 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_B", 0, 0)
			EYEB C 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_C", 0, 0)
			EYEB C 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_C", 0, 0)
			EYEB D 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_D", 0, 0)
			EYEB D 1 Bright A_Weave(1, 1, 2, 2)
			TNT1 A 0 A_SpawnItem("SplitTrail_D", 0, 0)
		Loop
	}
}

Actor ActualTchernoPortal {
	Radius 1
	Height 1
	+MISSILE
	+NOCLIP
	+NOGRAVITY
	var int user_count;
	States {
		Spawn:
			TNT1 A 150 NoDelay A_SetUserVar("user_count", 0)
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Tcherno Corpse Explode")
		SpawnLoop:
			TNT1 A 0 A_JumpIf(user_count == 24, "Finish")
			TNT1 A 5 A_CustomMissile("TchernoSoul", 0, 0, frandom(0, 360), CMF_AIMDIRECTION | CMF_TRACKOWNER, frandom(-90, 90))
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		Finish:
			TNT1 A 1
		Stop
	}
}

Actor TchernoCorpseExploder : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_SpawnItemEx("TchernoCorpseExplosion", 0, 0, 32, 0, 0, 0, 0, SXF_TRANSFERPOINTERS)
		Stop
	}
}

Actor TchernoCorpseExploder_Gibber : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 9.0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		Stop
	}
}

Actor TchernoPortal {
	Renderstyle Translucent
	Alpha 0.075
	Scale 0.0
	+NOINTERACTION
	+CLIENTSIDEONLY
	const int steps = 12;
	var int user_counter;
	var int user_scale;
	States {
		Spawn:
			TNT1 A 0 NoDelay A_SetUserVar("user_counter", 0)
			TNT1 A 0 A_SetUserVar("user_scale", 0.075)
			TNT1 AA 0 A_PlaySoundEx("Dreamer/Burn", CHAN_BODY)
		SpawnLoop:
			TNT1 A 0 A_JumpIf(user_counter == steps, "Stay")
			TNT1 A 0 A_SetScale(user_scale / 100.0, user_scale / 100.0)
			TNT1 A 0 A_SetTranslucent(alpha + 0.01)
			TPR1 A 2 Bright
			TNT1 A 0 A_SetUserVar("user_scale", user_scale + 1)
			TNT1 A 0 A_SetScale(user_scale / 100.0, user_scale / 100.0)
			TNT1 A 0 A_SetTranslucent(alpha + 0.01)
			TPR1 B 2 Bright
			TNT1 A 0 A_SetUserVar("user_scale", user_scale + 1)
			TNT1 A 0 A_SetScale(user_scale / 100.0, user_scale / 100.0)
			TNT1 A 0 A_SetTranslucent(alpha + 0.01)
			TPR1 C 2 Bright
			TNT1 A 0 A_SetUserVar("user_scale", user_scale + 1)
			TNT1 A 0 A_SetScale(user_scale / 100.0, user_scale / 100.0)
			TNT1 A 0 A_SetTranslucent(alpha + 0.01)
			TPR1 D 2 Bright
			TNT1 A 0 A_SetUserVar("user_scale", user_scale + 1)
			TNT1 A 0 A_SetScale(user_scale / 100.0, user_scale / 100.0)
			TNT1 A 0 A_SetTranslucent(alpha + 0.01)
			TPR1 E 2 Bright
			TNT1 A 0 A_SetUserVar("user_scale", user_scale + 1)
			TNT1 A 0 A_SetScale(user_scale / 100.0, user_scale / 100.0)
			TNT1 A 0 A_SetTranslucent(alpha + 0.01)
			TPR1 F 2 Bright A_SetUserVar("user_counter", user_counter + 1)
			TNT1 A 0 A_SetUserVar("user_scale", user_scale + 1)
		Loop
		Stay:
			TNT1 A 0 A_SetUserVar("user_counter", 0)
		StayLoop:
			TNT1 A 0 A_JumpIf(user_counter == steps, "Fade")
			TPR1 ABCDEF 2 Bright
			TNT1 A 0 A_SetUserVar("user_counter", user_counter + 1)
		Loop
		Fade:
			TNT1 A 0 A_JumpIf(user_counter == steps / 5, "Finish")
			TNT1 A 0 A_SetUserVar("user_scale", user_scale - 5)
			TNT1 A 0 A_SetScale(user_scale / 100.0, user_scale / 100.0)
			TNT1 A 0 A_SetTranslucent(alpha - 0.05)
			TPR1 A 2 Bright
			TNT1 A 0 A_SetUserVar("user_scale", user_scale - 5)
			TNT1 A 0 A_SetScale(user_scale / 100.0, user_scale / 100.0)
			TNT1 A 0 A_SetTranslucent(alpha - 0.05)
			TPR1 B 2 Bright
			TNT1 A 0 A_SetUserVar("user_scale", user_scale - 5)
			TNT1 A 0 A_SetScale(user_scale / 100.0, user_scale / 100.0)
			TNT1 A 0 A_SetTranslucent(alpha - 0.05)
			TPR1 C 2 Bright
			TNT1 A 0 A_SetUserVar("user_scale", user_scale - 5)
			TNT1 A 0 A_SetScale(user_scale / 100.0, user_scale / 100.0)
			TNT1 A 0 A_SetTranslucent(alpha - 0.05)
			TPR1 D 2 Bright
			TNT1 A 0 A_SetUserVar("user_scale", user_scale - 5)
			TNT1 A 0 A_SetScale(user_scale / 100.0, user_scale / 100.0)
			TNT1 A 0 A_SetTranslucent(alpha - 0.05)
			TPR1 E 2 Bright
			TNT1 A 0 A_SetUserVar("user_scale", user_scale - 5)
			TNT1 A 0 A_SetScale(user_scale / 100.0, user_scale / 100.0)
			TNT1 A 0 A_SetTranslucent(alpha - 0.05)
			TPR1 F 2 Bright A_SetUserVar("user_counter", user_counter + 1)
		Loop
		Finish:
			TNT1 AAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("SplitParticleFX", 0, 0, random(0,360), 2, random(-90,90))
			TNT1 A 4 A_PlaySound("Dreamer/BlastExp")
		Stop
	}
}

Actor TchernoSoulTrail {
	+NOINTERACTION
	+CLIENTSIDEONLY
	Renderstyle Add
	Alpha 0.85
	States {
		Spawn:
			TNT1 A 1
			TNT1 A 0 A_Jump(256, "A", "B", "C", "D", "E")
		A:
			PHAM A 0
		Goto Anim
		B:
			PHAM B 0
		Goto Anim
		C:
			PHAM C 0
		Goto Anim
		D:
			PHAM D 0
		Goto Anim
		E:
			PHAM E 0
		Goto Anim
		Anim:
			"####" "#" 1 A_FadeOut(0.1)
		Loop
	}
}

Actor TchernoSoul {
	PROJECTILE
	Height 8
	Radius 4
	Scale 0.9
	Renderstyle Add
	Alpha 0.1
	Speed 5
	Damage (40) 
	DamageType "MagicalBlue"
	Stamina 8
	BounceType Hexen
	BounceCount 6
	BounceFactor 0.9
	ActiveSound "Dreamer/Soul"
	DeathSound "whiteballbdeth"
	+SEEKERMISSILE
	+PIERCEARMOR
	+DONTREFLECT
	+DONTBLAST
	+LOOKALLAROUND
	+SKYEXPLODE
	+DONTBLAST
	States {
		Spawn:
			PHAM AAAAAAAAAAAAAAAAAAAA 1 A_SetTranslucent(alpha + 0.0375)
			TNT1 A 0 A_ScaleVelocity(4.0)
			TNT1 A 0 A_LoopActiveSound
		SpawnLoop:
			PHAM A 3 Bright A_SeekerMissile(8, 8, SMF_LOOK | SMF_CURSPEED)
			TNT1 A 0 A_SpawnItem("TchernoSoulTrail")
			PHAM B 3 Bright A_SeekerMissile(8, 8, SMF_LOOK | SMF_CURSPEED)
			TNT1 A 0 A_SpawnItem("TchernoSoulTrail")
			PHAM C 3 Bright A_SeekerMissile(8, 8, SMF_LOOK | SMF_CURSPEED)
			TNT1 A 0 A_SpawnItem("TchernoSoulTrail")
			PHAM D 3 Bright A_SeekerMissile(8, 8, SMF_LOOK | SMF_CURSPEED)
			TNT1 A 0 A_SpawnItem("TchernoSoulTrail")
			PHAM E 3 Bright A_SeekerMissile(8, 8, SMF_LOOK | SMF_CURSPEED)
			TNT1 A 0 A_SpawnItem("TchernoSoulTrail")
		Loop
		Death:
			TNT1 A 0 A_StopSound(CHAN_BODY)
			PHAM FGHI 3
		Stop
	}
}

Actor TchernoPortalCooldown : PowerDamage {
	damagefactor "normal", 1.0
	powerup.duration -20
}

Actor TchernoLightningExplosion : BaseExplosionDamage {
	DamageType "Lightning"
	Stamina 256
	+FORCERADIUSDMG
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(48, 64, 0, 0, 40)
		Stop
	}
}

Actor TchernoLightningFX {
	Renderstyle Translucent
	Alpha 1.0
	Yscale 1.5
	Xscale 1.15
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 0 NoDelay A_PlaySound("Dreamer/Thunder")
			TNT1 A 0 A_Jump(128, "Other")
			TLIG A 4
			TLIG AAAAAAAAAA 1 A_FadeOut(0.1)
		Stop
		Other:
			TLIG B 4
			TLIG BBBBBBBBBB 1 A_FadeOut(0.1)
		Stop
	}
}

Actor TchernoLightning {
	PROJECTILE
	Damage 0
	Speed 8
	ReactionTime 4
	const int vel = 10;
	Renderstyle Translucent
	Alpha 0.0
	var int user_phase;
	+THRUACTORS
	+FLOORHUGGER
	States {
		Spawn:
			TNT1 A 0 NoDelay A_SetUserVar("user_phase", 1)
		SpawnLoop:
			LLSS A 3 Bright A_ChangeVelocity(vel * cos(angle), vel * sin(angle), velz, CVF_REPLACE)
			TNT1 A 0 A_SetTranslucent(alpha + 0.125 * user_phase)
			TNT1 A 0 A_SetAngle(angle + 7.5)
			TNT1 A 0 A_JumpIf(alpha == 1.0, "DoDamage")
			TNT1 A 0 A_JumpIf(alpha == 0.0, "ShiftPhase")
		Goto SpawnLoop
		DoDamage:
			TNT1 A 0 A_SpawnItem("TchernoLightningExplosion")
			TNT1 A 0 A_SpawnItem("TchernoLightningFX")
			TNT1 A 0 A_CountDown
		ShiftPhase:
			TNT1 A 0 A_SetUserVar("user_phase", -user_phase - 2)
		Goto SpawnLoop
	}
}

Actor Torrasque : DnD_BaseHybridBoss {
	obituary "%o got smashed by the Torrasque."
	Health 0x7FFFFFFF
	radius 32
	height 96
	mass 1000
	speed 10
	painchance 32
	seesound "Torrasque/See"
	painsound "Torrasque/Pain"
	deathsound "Torrasque/Die"
	activesound "Torrasque/Act"
	meleerange 90
	Tag "Torrasque"
	Scale 1.35
	Species "Cyber"
	var int user_wait;
	var int user_charge;
	const int wait_count = 8;
	Damage (16)
	RadiusDamageFactor 0.5
	+ISMONSTER
	+NOBLOOD
	+DONTRIP
	+BOSS
	+DONTHURTSPECIES
	+NORADIUSDMG
	+NOTARGET
	+NOINFIGHTING
	+MISSILEMORE
	+QUICKTORETALIATE
	+LOOKALLAROUND
	-FLOORCLIP
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_TORRASQUE)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", 10000)
		Goto SpawnSetup

		IdleState:
			DNB2 A 5 A_GiveInventory("DnD_SightChecker", 1)
		loop
		SeeState:
			TNT1 A 0 A_ChangeFlag("SKULLFLY", 0)
			TNT1 A 0 A_GiveInventory("TakeReflectiveInvulnerable", 1)
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "SeeFast")
			TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(961, 7) / 2, "FastMode")
		SeeFast:
			DNB2 A 3 Fast A_Chase
			DNB2 A 2 Fast A_Chase
			DNB2 BB 2 Fast A_Chase
			TNT1 A 0 A_PlaySound("Torrasque/Step")
			DNB2 C 3 Fast A_Chase
			DNB2 C 2 Fast A_Chase
			DNB2 DD 2 Fast A_Chase
			DNB2 D 0 A_PlaySound("Torrasque/Step")
		Goto See
		FastMode:
			TNT1 A 0 A_ChangeFlag("ALWAYSFAST", 1)
			TNT1 A 0 A_GiveInventory("DnD_Boolean", 1)
		Goto SeeFast
		MeleeState:
			TNT1 A 0 A_Jump(128, "ShieldBash")
			DNB2 F 2 Fast A_FaceTarget
			TNT1 A 0 A_Recoil(-1.0)
			DNB2 F 3 Fast A_FaceTarget
			TNT1 A 0 A_Recoil(-1.6)
			DNB2 G 2 Fast A_FaceTarget
			TNT1 A 0 A_Recoil(-2.2)
			DNB2 G 3 Fast A_FaceTarget
			TNT1 A 0 A_Recoil(-2.8)
			TNT1 A 0 A_CustomMeleeAttack(80, "Torrasque/Melee", "Torrasque/Miss")
			DNB2 H 6 Fast A_FaceTarget
		Goto See
		ShieldBash:
			DNB2 E 4 Fast A_FaceTarget
			TNT1 A 0 A_CustomMissile("TorrasqueBash")
			DNB2 E 6 Fast A_CustomMeleeAttack(random(1, 10) * 3, "weapons/vblhit", "weapons/vblswg", "Knockback")
		Goto See
		MissileState:
			TNT1 A 0 A_Jump(160, "Charge", "Grab", "LotsofMace")
			TNT1 A 0 A_Jump(128, "Aim")
			DNB2 FG 5 Fast A_FaceTarget
			DNB2 H 4 Fast A_CustomMissile("TorrasqueMace", 48, -16)
		Goto See
		Aim:
			DNB2 FFFF 5 Fast A_FaceTarget
			DNB2 G 4 Fast A_FaceTarget
			DNB2 H 5 Fast ACS_NamedExecuteAlways("DND Monster Shoot", 0, DND_TORRASQUE, 0, 28)
		Goto See
		LotsofMace:
			DNB2 FG 5 Fast A_FaceTarget
			DNB2 H 4 Fast A_CustomMissile("TorrasqueMace", 48, -16, frandom(-8, 8))
			DNB2 FG 5 Fast A_FaceTarget
			DNB2 H 4 Fast A_CustomMissile("TorrasqueMace", 48, -16, frandom(-8, 8))
			DNB2 FFFF 5 Fast A_FaceTarget
			DNB2 G 4 Fast A_FaceTarget
			DNB2 H 5 Fast ACS_NamedExecuteAlways("DND Monster Shoot", 0, DND_TORRASQUE, 0, 28)
			DNB2 FG 5 Fast A_FaceTarget
			DNB2 H 4 Fast A_CustomMissile("TorrasqueMace", 48, -16, frandom(-8, 8))
			DNB2 FG 5 Fast A_FaceTarget
			DNB2 H 4 Fast A_CustomMissile("TorrasqueMace", 48, -16, frandom(-8, 8))
		Goto Aim
		ComboWait:
			TNT1 A 0 A_TakeInventory("TorrasqueGrabbed", 1)
			DNB2 H 10 A_FaceTarget
			DNB2 F 2 Fast A_FaceTarget
			TNT1 A 0 A_Recoil(-1.0)
			DNB2 F 3 Fast A_FaceTarget
			TNT1 A 0 A_Recoil(-1.6)
			DNB2 G 2 Fast A_FaceTarget
			TNT1 A 0 A_Recoil(-2.2)
			DNB2 G 3 Fast A_FaceTarget
			TNT1 A 0 A_Recoil(-2.8)
			TNT1 A 0 A_CustomMeleeAttack(80, "Torrasque/Melee", "Torrasque/Miss")
			DNB2 H 6 Fast A_FaceTarget
		Goto ShieldBash
		Grab:
			TNT1 A 0 A_PlaySound("Torrasque/Hook")
			DNB2 FG 5 Fast A_FaceTarget
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "MoreGrabber")
		GrabContinue:
			DNB2 H 4 Fast ACS_NamedExecuteAlways("DND Monster Shoot", 0, DND_TORRASQUE, 1, 28)
			TNT1 A 0 A_SetUserVar("user_wait", 0)
		GrabLoop:
			TNT1 A 0 A_JumpIf(user_wait == wait_count, "See")
			DNB2 H 4 A_FaceTarget
			TNT1 A 0 A_JumpIfInventory("TorrasqueGrabbed", 1, "ComboWait")
			DNB2 H 0 A_SetUserVar("user_wait", user_wait + 1)
		Loop
		MoreGrabber:
			TNT1 A 0 ACS_NamedExecuteAlways("DND Monster Shoot", 0, DND_TORRASQUE, 2, 28)
			TNT1 A 0 ACS_NamedExecuteAlways("DND Monster Shoot", 0, DND_TORRASQUE, 3, 28)
		Goto GrabContinue
		Charge:
			TNT1 A 0 A_SetUserVar("user_charge", 0)
			TNT1 A 0 A_PlaySound("Torrasque/See", 7)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Give", 0, DND_ISBLOCKING)
			DNB2 H 9 A_FaceTarget
			DNB2 GF 3 A_FaceTarget
			TNT1 A 0 ACS_ExecuteAlways(971, 0, 10 + user_charge)
			TNT1 A 0 A_ChangeFlag("SKULLFLY", 1)
		ChargeLoop:
			DNB2 A 4 A_FaceTarget
			TNT1 A 0 A_SpawnItemEx("TorrasqueAfterEffect_A")
			DNB2 B 4 A_FaceTarget
			TNT1 A 0 A_PlaySound("Torrasque/Step")
			TNT1 AAAAAA 0 A_SpawnItemEx("MeleeSmoke", 16, 0, 0, frandom(-6, 6), frandom(-6, 6), frandom(1, 4), random (0, 360))
			TNT1 A 0 A_SpawnItemEx("TorrasqueAfterEffect_B")
			TNT1 A 0 A_SetUserVar("user_charge", user_charge + 2)
			TNT1 A 0 ACS_ExecuteAlways(971, 0, 10 + user_charge)
			DNB2 C 4 A_FaceTarget
			TNT1 A 0 A_SpawnItemEx("TorrasqueAfterEffect_C")
			DNB2 D 4 A_FaceTarget
			TNT1 A 0 ACS_ExecuteAlways(971, 0, 10 + user_charge)
			TNT1 A 0 A_PlaySound("Torrasque/Step")
			TNT1 AAAAAA 0 A_SpawnItemEx("MeleeSmoke", 16, 0, 0, frandom(-6, 6), frandom(-6, 6), frandom(1, 4), random (0, 360))
			TNT1 A 0 A_SpawnItemEx("TorrasqueAfterEffect_D")
			DNB2 D 0 A_SetUserVar("user_charge", user_charge + 2)
		Loop
		PainState:
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Pain Immune Toggle", 5)
			TNT1 A 0 A_TakeInventory("TorrasqueGrabbed", 1)
			DNB2 E 4 Fast A_Pain
			TNT1 A 0 A_Jump(128, "Missile")
			DNB2 E 3 Fast A_GiveInventory("MakeReflectiveInvulnerable", 1)
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_SpawnItem("TorrasqueDeflectFX", 0, 48)
			DNB2 E 18 A_GiveInventory("MakeReflectiveInvulnerable", 1)
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_SpawnItem("TorrasqueDeflectFX", 0, 48)
			DNB2 E 18 A_GiveInventory("MakeReflectiveInvulnerable", 1)
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_SpawnItem("TorrasqueDeflectFX", 0, 48)
			DNB2 E 18 A_GiveInventory("MakeReflectiveInvulnerable", 1)
			DNB2 E 0 A_GiveInventory("TakeReflectiveInvulnerable", 1)
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			DNB2 R 24 Radius_quake(2,18,0,128,0)
			DNB2 I 4 A_Scream
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			TNT1 A 0 A_SpawnItemEx("TorrasqueMaceGib", 0, 0, 45, 1 + random[CentaurDrop](-128,127)*0.03125,1 + random[CentaurDrop](-128,127)*0.03125, 8 + random[CentaurDrop](0,255)*0.015625, 270)
			TNT1 A 0 A_SpawnItemEx("TorrasqueShield", 0, 0, 45, 1 + random[CentaurDrop](-128,127)*0.03125,1 + random[CentaurDrop](-128,127)*0.03125, 8 + random[CentaurDrop](0,255)*0.015625, 90)
			DNB2 J 5 A_NoBlocking
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			DNB2 KL 4
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			DNB2 MOP 3
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			DNB2 Q -1 A_KillMaster
		Stop
	}
}

actor TorrasqueBash : PaladinBash {
	radius 5
	height 5
	speed 28
	DamageType "Physical"
	Stamina 1
	damage (12 * random(2, 4))
	deathsound "weapons/vblhit"
	PROJECTILE
	+SEEKERMISSILE
	+DONTBLAST
	States {
		spawn:
			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", 24)
			TNT1 A 1
		stop
	}
}

Actor TorrasqueAfterEffect_A {
	Renderstyle Translucent
	Alpha 0.8
	Scale 1.35
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			DNB2 A 2 A_FadeOut(0.075)
		Loop
	}
}

Actor TorrasqueAfterEffect_B : TorrasqueAfterEffect_A {
	States {
		Spawn:
			DNB2 A 2 A_FadeOut(0.075)
		Loop
	}
}

Actor TorrasqueAfterEffect_C : TorrasqueAfterEffect_A {
	States {
		Spawn:
			DNB2 A 2 A_FadeOut(0.075)
		Loop
	}
}

Actor TorrasqueAfterEffect_D : TorrasqueAfterEffect_A {
	States {
		Spawn:
			DNB2 A 2 A_FadeOut(0.075)
		Loop
	}
}

Actor TorrasqueDeflectFX {
	+NOINTERACTION
	+CLIENTSIDEONLY
	Renderstyle Add
	Alpha 0.125
	Translation "112:127=80:111"
	States {
		Spawn:
			TNT1 A 0 NoDelay A_PlaySound("Torrasque/Deflect")
			R075 ABCDEFGH 1 BRIGHT A_FadeIn(0.075)
			R075 IJKLMNOP 1 BRIGHT A_FadeOut(0.05)
		Stop
	}
}

Actor TorrasqueMaceGround {
	Height 10
	Radius 5
	Renderstyle Translucent
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 0 NoDelay A_Jump(128, "Other")
			DNF2 B 35
		SpawnLoop:
			DNF2 B 3 A_FadeOut(0.05)
		Loop
		Other:
			DNF2 G 35
		OtherLoop:
			DNF2 G 3 A_FadeOut(0.05)
		Loop
	}
}

Actor TorrasqueMaceGib {
	Height 10
	Radius 5
	+DROPOFF
	+NOTELEPORT
	+FLOORCLIP
	+CLIENTSIDEONLY
	+CORPSE
	States {
		Spawn:
			DNF2 ABCDEFGM 3
		Loop
		Crash:
			"####" "#" 1 A_SpawnItem("TorrasqueMaceGround")
		Stop
	}
}

Actor TorrasqueShield {
	Renderstyle Translucent
	Height 10
	Radius 5
	+CLIENTSIDEONLY
	+DROPOFF
	+NOTELEPORT
	+CORPSE
	States {
		Spawn:
			DNF2 HIJI 4
		Loop
		Crash:
			TNT1 A 0 A_Jump(256, 1, 2)
			DNF2 K 0
			DNF2 L 0
			"####" "#" 35
		CrashLoop:
			"####" "#" 3 A_FadeOut(0.05)
		Loop
	}
}

Actor TorrasqueMace {
	PROJECTILE
	Damage (50)
	DamageType "Physical"
	Stamina 1
	Speed 28
	Height 10
	Radius 5
	ActiveSound "Torrasque/MaceSwing"
	DeathSound "Torrasque/MaceHit"
	+DONTBLAST
	States {
		Spawn:
			TNT1 A 0 NoDelay A_LoopActiveSound
		SpawnLoop:
			DNF2 ABCDEFGM 3
		Loop
		Death:
			"####" "#" 1 A_SpawnItem("TorrasqueMaceGround")
		Stop
	}
}

Actor TorrasqueGrabbed : DnD_Boolean { }

Actor TorrasqueGrabberTrail {
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			TNT1 A 1
			TEND A 20
		Stop
	}
}

Actor TorrasqueGrabber {
	Speed 36
	Height 14
	Radius 10
	PROJECTILE
	Damage (9 * random(3, 5))
	MaxStepHeight 4
	SeeSound "Torrasque/HookGo"
	DamageType "PhysicalSnare"
	Stamina 1
	States {
		Spawn:
			OCLW A 1 
			TNT1 A 0 A_SpawnItem("TorrasqueGrabberTrail", 0, 2)
		Loop
		XDeath:
			TNT1 A 0 A_PlaySound("Torrasque/HookHit")
			OCLW A 1 A_TransferPointer(AAPTR_TARGET, AAPTR_DEFAULT, AAPTR_TARGET, AAPTR_TRACER) 
			TNT1 A 0 A_GiveToTarget("TorrasqueGrabbed", 1)
			OCLW A 1 ACS_NamedExecuteAlways("DND Torrasque Pull", 0, 12)
			OCLW A 1 A_SpawnDebris("NashGore_FlyingBlood")
		Stop
		Death:
			OCLW A 6 A_ChangeFlag("NOGRAVITY", 0)
		DeathLoop:
			OCLW AAAAAAAAAAAAAAAA 1 A_FadeOut(0.05)
		Stop
	}
}

Actor Mordecqai : DnD_BaseRangedBoss {
	tag "Mordecqai"
	obituary "%o couldn't stand against the might of Mordecqai."
	Health 0x7FFFFFFF
	radius 40
	height 110
	ProjectilePassHeight 160
	mass 2400
	speed 4
	painchance 0
	seesound "Mordecqai/See"
	deathsound "Mordecqai/Die"
	activesound ""
	Species "Cyber"
	Scale 1.25
	const int flame_timer = 24;
	const int seeker_count = 12;
	const int spread_factor = 6;
	const int flame_dist = 820;
	const int ang_inc = 20;
	var int user_count;
	BloodColor "FF A5 00"
	RadiusDamageFactor 0.5
	+ISMONSTER
	+BOSS
	+QUICKTORETALIATE
	+MISSILEMORE
	+NOINFIGHTING
	+NORADIUSDMG
	+NOTARGET
	+NOPAIN
	+MISSILEMORE
	+LOOKALLAROUND
	+DONTRIP
	+BOSSDEATH
	-FLOORCLIP
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_MORDECQAI)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", 10000)
		Goto SpawnSetup

		IdleState:
			MORD A 10 A_GiveInventory("DnD_SightChecker", 1)
		loop
		SeeState:
			MORD AAAAAA 1 A_Chase("", "", CHF_NOPLAYACTIVE)
			MORD BBBBBB 1 A_Chase
			TNT1 A 0 A_PlaySound("Mordecqai/Step")
			TNT1 A 0 A_SpawnItemEx("MordecqaiStomp")
			MORD BBB 1
			MORD CCCCCC 1 A_Chase("", "", CHF_NOPLAYACTIVE)
			MORD DDDDDD 1 A_Chase
			TNT1 A 0 A_PlaySound("Mordecqai/Step")
			TNT1 A 0 A_SpawnItemEx("MordecqaiStomp")
			MORD DDD 1
		loop
		MissileState:
			TNT1 A 0 A_Jump(96, "Seekers")
			TNT1 A 0 A_JumpIfCloser(flame_dist, "Flame")
		Goto Seekers
		Flame:
			TNT1 A 0 A_SetUserVar("user_count", 0)
			TNT1 A 0 A_PlaySound("Mordecqai/FlameUp", 7)
			MORD FF 6 A_FaceTarget
			TNT1 A 0 A_Jump(128, "SpreadStartLeft", "SpreadStartRight", "Whiplash")
		FlameLoop1:
			TNT1 A 0 A_PlaySound("Mordecqai/FlameFire", CHAN_WEAPON, 1.0, 1, 0.65)
			MORD E 2 A_FaceTarget
			TNT1 A 0 A_CustomMissile("MordecqaiFlame", 48, -44, 0)
			TNT1 A 0 A_CustomMissile("MordecqaiFlame", 58, 20, 0)
			MORD F 2 A_FaceTarget
			TNT1 A 0 A_CustomMissile("MordecqaiFlame", 48, -44, 0)
			TNT1 A 0 A_CustomMissile("MordecqaiFlame", 56, 20, 0)
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
			TNT1 A 0 A_JumpIf(user_count == flame_timer, "FinishFlame")
			MORD F 1 A_JumpIfCloser(flame_dist, "FlameLoop1")
		Goto FinishFlame
		SpreadStartLeft:
		FlameLoop2: // spread left
			TNT1 A 0 A_PlaySound("Mordecqai/FlameFire", CHAN_WEAPON, 1.0, 1, 0.65)
			MORD E 2 A_FaceTarget
			TNT1 A 0 A_CustomMissile("MordecqaiFlame", 48, -44, 8 * spread_factor * cos(ang_inc * user_count))
			TNT1 A 0 A_CustomMissile("MordecqaiFlame", 58, 20, 8 * spread_factor * cos(ang_inc * user_count))
			MORD F 2 A_FaceTarget
			TNT1 A 0 A_CustomMissile("MordecqaiFlame", 48, -44, 8 * spread_factor * cos(ang_inc * user_count))
			TNT1 A 0 A_CustomMissile("MordecqaiFlame", 56, 20, 8 * spread_factor * cos(ang_inc * user_count))
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
			TNT1 A 0 A_JumpIf(user_count == flame_timer, "FinishFlame")
			MORD F 1 A_JumpIfCloser(flame_dist, "FlameLoop2")
		Goto FinishFlame
		SpreadStartRight:
		FlameLoop3: // spread right
			TNT1 A 0 A_PlaySound("Mordecqai/FlameFire", CHAN_WEAPON, 1.0, 1, 0.65)
			MORD E 2 A_FaceTarget
			TNT1 A 0 A_CustomMissile("MordecqaiFlame", 48, -44, -8 * spread_factor * cos(ang_inc * user_count))
			TNT1 A 0 A_CustomMissile("MordecqaiFlame", 58, 20, -8 * spread_factor * cos(ang_inc * user_count))
			MORD F 2 A_FaceTarget
			TNT1 A 0 A_CustomMissile("MordecqaiFlame", 48, -44, -8 * spread_factor * cos(ang_inc * user_count))
			TNT1 A 0 A_CustomMissile("MordecqaiFlame", 56, 20, -8 * spread_factor * cos(ang_inc * user_count))
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
			TNT1 A 0 A_JumpIf(user_count == flame_timer, "FinishFlame")
			MORD F 1 A_JumpIfCloser(flame_dist, "FlameLoop3")
		Goto FinishFlame
		Whiplash:
		FlameLoop4:
			TNT1 A 0 A_PlaySound("Mordecqai/FlameFire", CHAN_WEAPON, 1.0, 1, 0.65)
			MORD E 2 A_FaceTarget
			TNT1 A 0 A_CustomMissile("MordecqaiFlame", 48, -44, 8 * spread_factor * cos(ang_inc * user_count))
			TNT1 A 0 A_CustomMissile("MordecqaiFlame", 58, 20, -8 * spread_factor * cos(ang_inc * user_count))
			MORD F 2 A_FaceTarget
			TNT1 A 0 A_CustomMissile("MordecqaiFlame", 48, -44, 8 * spread_factor * cos(ang_inc * user_count))
			TNT1 A 0 A_CustomMissile("MordecqaiFlame", 56, 20, -8 * spread_factor * cos(ang_inc * user_count))
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
			TNT1 A 0 A_JumpIf(user_count == flame_timer, "FinishFlame")
			MORD F 1 A_JumpIfCloser(flame_dist, "FlameLoop4")
		Goto FinishFlame
		FinishFlame:
			TNT1 A 0 A_StopSound(CHAN_WEAPON)
			TNT1 A 0 A_PlaySound("Mordecqai/FlameEnd", 7)
			MORD EE 6 A_FaceTarget
		Goto See
		MaybeAttack:
			MORD A 0 A_Jump(128, "Seekers")
		Goto See
		Seekers:
			TNT1 A 0 A_PlaySound("Mordecqai/Belch")
			TNT1 A 0 A_Jump(128, "Lightning")
			MORD GGGGG 5 A_FaceTarget
			TNT1 A 0 A_SetUserVar("user_count", 0)
		SeekerLoop:
			MORD H 8 A_FaceTarget
			TNT1 AA 0 A_CustomMissile("MordecqaiSeeker", 80, 0, frandom(-16, 16), CMF_AIMDIRECTION, frandom(-5, 5))
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
			TNT1 A 0 A_JumpIf(user_count == seeker_count, "BelchFinish")
		Loop
		Lightning:
			MORD GGGGGGGG 5 A_FaceTarget
			MORD H 2 A_FaceTarget
			TNT1 A 0 A_PlaySound("Mordecqai/Lightning")
			TNT1 A 0 A_CustomMissile("MordecqaiLightning", 88, 0, 0, CMF_OFFSETPITCH, 8)
			TNT1 A 0 A_CustomMissile("MordecqaiLightning", 88, 0, -20, CMF_OFFSETPITCH, 8)
			TNT1 A 0 A_CustomMissile("MordecqaiLightning", 88, 0, 20, CMF_OFFSETPITCH, 8)
			MORD HG 7 A_FaceTarget
		Goto See
		BelchFinish:
			MORD H 6
			MORD G 10 A_FaceTarget
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			TNT1 A 0 A_StopSound(CHAN_WEAPON)
			MORD I 9 A_Scream
			TNT1 A 0 A_NoBlocking
			MORD J 5
			MORD K 18
			MORD L 15
			MORD KL 10
			MORD K 7
			MORD L 5
			MORD KLM 4
			TNT1 A 0 A_PlaySound("Mordecqai/HitFloor")
			TNT1 A 0 A_Quake(5, 17, 0, 384)
			MORD NOP 4
			MORD Q -1 A_KillMaster
		Stop
	}
}

Actor MordecqaiStomp {
	+DONTSPLASH
	+PAINLESS
	+NOTIMEFREEZE
	+BLOODLESSIMPACT
	+NODAMAGETHRUST
	+DONTBLAST
	Radius 1
	Height 1
	Damage 0
	DamageType "Physical"
	Stamina 1
	Obituary "%o got too close to Mordecqai."
    States {
		Spawn:
			TNT1 A 1
			TNT1 A 1 A_Explode(128, 128, 0)
		Stop	
	}
}

Actor MordecqaiFlameExplosion : BaseExplosionDamage {
	DamageType "Fire"
	Stamina 32
	+NODAMAGETHRUST
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(2, 128, 0, 0, 96)
		Stop
	}
}

Actor MordecqaiFlame {
	PROJECTILE
	+FORCEXYBILLBOARD
	+THRUACTORS
	+NODAMAGETHRUST
	+DONTBLAST
	obituary "%o was reduced to ashes by Mordecqai."
	renderstyle Add
	alpha 0.5
	Scale 0.41
	radius 4
	height 6
	speed 38
	damagetype "Fire"
	Stamina 32
	decal "FlameScorch"
	states {
		Spawn:
			MOFX B 2 bright
			MOFX CDEF 2 bright A_SpawnItem("MordecqaiFlameExplosion")
			MOFX GHIJK 2 bright A_SpawnItem("MordecqaiFlameExplosion")
			MOFX LMNO 2 bright A_FadeOut(0.16)
		stop
		Death:
			TNT1 AA 0 A_SpawnItem("MordecqaiFlameExplosion")
			TNT1 A 0 A_SpawnItemEx("OrangeParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 AAA 0 A_SpawnItemEx("ExplosionFX1", 0, 0, 0, frandom(-1, 1), frandom(-1, 1), frandom(-1, 1))
			TNT1 AAA 1 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
		stop
	}
}

Actor MordecqaiSeeker {
	PROJECTILE
	Damage (15)
	DamageType "MagicalGray"
	Stamina 8
	Speed 20
	Height 12
	Radius 6
	Scale 0.85
	Renderstyle Add
	Alpha 0.85
	SeeSound "harvester/scream"
	DeathSound "imp/shotx"
	+PIERCEARMOR
	+SEEKERMISSILE
	+DONTBLAST
	Decal DoomImpScorch
	States {
		Spawn:
			MDQB AB 4 Bright
		SpawnLoop:
			TNT1 A 0 A_SpawnItem("MordecqaiSeekerTrail")
			MDQB A 2 Bright A_SeekerMissile(15, 25, SMF_LOOK)
			TNT1 A 0 A_SpawnItem("MordecqaiSeekerTrail")
			MDQB A 2 Bright A_SeekerMissile(15, 25, SMF_LOOK)
			TNT1 A 0 A_SpawnItem("MordecqaiSeekerTrail")
			MDQB B 2 Bright A_SeekerMissile(15, 25, SMF_LOOK)
			TNT1 A 0 A_SpawnItem("MordecqaiSeekerTrail")
			MDQB B 2 Bright A_SeekerMissile(15, 25, SMF_LOOK)
		Loop
		Death:
			TNT1 A 0 A_SpawnItem("WhiteParticleSpawner")
			MDQB CDEFG 4 Bright
			MDQB HIJKL 3
		Stop
	}
}

Actor MordecqaiSeekerTrail {
	+CLIENTSIDEONLY
	+NOINTERACTION
	Renderstyle Add
	Alpha 0.85
	Scale 1.0
	States {
		Spawn:
			TNT1 A 1
			MDQT ABCDEFGH 3
		Stop
	}
}

Actor MordecqaiLightningExp : BaseExplosionDamage {
	DamageType "Lightning"
	Stamina 256
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(32, 96, 0, 0, 64)
		Stop
	}
}

Actor MordecqaiLightning {
	Projectile
	Damage (0)
	DamageType "Lightning"
	Stamina 256
	Speed 32
	Height 16
	Radius 8
	Renderstyle Add
	Alpha 0.875
	BounceType "Hexen"
	BounceCount 5
	+THRUACTORS
	+NODAMAGETHRUST
	+DONTBLAST
	ActiveSound "Mordecqai/Buzz"
	DeathSound "Mordecqai/BuzzHit"
	Scale 0.675
	const int mball_inc = 15;
	States {
		Spawn:
			MORZ A 2 Bright A_SpawnItem("MordecqaiLightningExp")
			TNT1 A 0 A_CustomMissile("MordecqaiSmallBall", 0, 0, frandom(1, 90), CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MordecqaiSmallBall", 0, 0, frandom(91, 180), CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MordecqaiSmallBall", 0, 0, frandom(181, 270), CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MordecqaiSmallBall", 0, 0, frandom(271, 360), CMF_AIMDIRECTION | CMF_TRACKOWNER)
			MORZ B 2 Bright A_SpawnItem("MordecqaiLightningExp")
			TNT1 A 0 A_CustomMissile("MordecqaiSmallBall", 0, 0, frandom(1, 90), CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MordecqaiSmallBall", 0, 0, frandom(91, 180), CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MordecqaiSmallBall", 0, 0, frandom(181, 270), CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MordecqaiSmallBall", 0, 0, frandom(271, 360), CMF_AIMDIRECTION | CMF_TRACKOWNER)
			MORZ C 2 Bright A_SpawnItem("MordecqaiLightningExp")
			TNT1 A 0 A_CustomMissile("MordecqaiSmallBall", 0, 0, frandom(1, 90), CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MordecqaiSmallBall", 0, 0, frandom(91, 180), CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MordecqaiSmallBall", 0, 0, frandom(181, 270), CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MordecqaiSmallBall", 0, 0, frandom(271, 360), CMF_AIMDIRECTION | CMF_TRACKOWNER)
			MORZ D 2 Bright A_SpawnItem("MordecqaiLightningExp")
			TNT1 A 0 A_CustomMissile("MordecqaiSmallBall", 0, 0, frandom(1, 90), CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MordecqaiSmallBall", 0, 0, frandom(91, 180), CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MordecqaiSmallBall", 0, 0, frandom(181, 270), CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MordecqaiSmallBall", 0, 0, frandom(271, 360), CMF_AIMDIRECTION | CMF_TRACKOWNER)
			MORZ E 2 Bright A_SpawnItem("MordecqaiLightningExp")
			TNT1 A 0 A_CustomMissile("MordecqaiSmallBall", 0, 0, frandom(1, 90), CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MordecqaiSmallBall", 0, 0, frandom(91, 180), CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MordecqaiSmallBall", 0, 0, frandom(181, 270), CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MordecqaiSmallBall", 0, 0, frandom(271, 360), CMF_AIMDIRECTION | CMF_TRACKOWNER)
		Loop
		Death:
			MORZ A 1 Bright
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 2, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 3, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 4, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 5, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 6, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 7, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 8, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 9, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 10, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 11, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 12, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 13, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 14, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 15, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 16, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 17, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 18, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 19, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 20, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 21, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 22, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 23, 6, random(0,64))
			TNT1 A 0 A_CustomMissile("MordecqaiLightningFX", 8, 0, mball_inc * 24, 6, random(0,64))
			MORZ AAAAAAAA 1 Bright A_FadeOut(0.1)
		Stop
	}
}

Actor MordecqaiSmallBall {
	Radius 4
	Height 8
	Speed 12
	Damage (15)
	DamageType "Lightning"
	Stamina 256
	PROJECTILE
	-NOGRAVITY
	+DONTBLAST
	Scale 0.425
	States {
		Spawn:
			MORZ FGHIJ 4 BRIGHT
		Loop
    	Death:
			TNT1 A 0 A_PlaySound ("Mordecqai/SmallHit")
        	MORZ KLMNOP 4 BRIGHT
		Stop
	}
}

Actor MordecqaiLightningFX : MordecqaiSmallBall {
	Damage (0)
	+CLIENTSIDEONLY
}

Actor GodSlayer : DnD_BaseRangedBoss {
	tag "God Slayer"
	obituary "%o saw UAC's biggest invention gone rogue and that was it."
	Health 0x7FFFFFFF
	radius 40
	height 110
	ProjectilePassHeight 160
	mass 0x7fffffff
	speed 10
	painchance 0
	seesound "GodSlayer/See"
	deathsound ""
	activesound "GodSlayer/Act"
	Species "Cyber"
	Scale 1.25
	var int user_attack;
	var int user_charge;
	var int user_chargerpt;
	const int attack_on_flight_dist = 224;
	RadiusDamageFactor 0.5
	+ISMONSTER
	+NOBLOOD
	+BOSS
	+QUICKTORETALIATE
	+MISSILEMORE
	+NOINFIGHTING
	+NORADIUSDMG
	+NOTARGET
	+DONTRIP
	+NOPAIN
	+MISSILEMORE
	+MISSILEEVENMORE
	+LOOKALLAROUND
	-FLOORCLIP
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_GODSLAYER)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", 10000)
		Goto SpawnSetup
	
		IdleState:
			ROB4 A 10 A_GiveInventory("DnD_SightChecker", 1)
		Loop
	    SeeState:
			ROB4 BB 4 A_Chase
			TNT1 A 0 A_JumpIf(z - floorz < 4, 2)
			TNT1 A 0 A_Jump(256, "SkipStepSound1")
			TNT1 A 0 A_SpawnItemEx("GodSlayerStomp")
			TNT1 A 0 A_PlaySound("GodSlayer/HardStep", CHAN_BODY)
		SkipStepSound1:
			ROB4 CCDD 4 A_Chase
			ROB4 E 4 A_Chase
			TNT1 A 0 A_JumpIf(ceilingz - z > 54, "JumpCheck")
		SeeAnimCont:
			ROB4 E 4 A_Chase
			TNT1 A 0 A_JumpIf(z - floorz < 4, 2)
			TNT1 A 0 A_Jump(256, "SkipStepSound2")
			TNT1 A 0 A_SpawnItemEx("GodSlayerStomp")
			TNT1 A 0 A_PlaySound("GodSlayer/HardStep", CHAN_BODY)
		SkipStepSound2:
			ROB4 DDCC 4 A_Chase
		Goto See
		JumpCheck:
			TNT1 A 0 A_JumpIf(1 == ACS_NamedExecuteWithResult("DnD Decide Flight"), "Jump")
			TNT1 A 0 A_Jump(96, "MissileNoJump_Check")
		Goto SeeAnimCont
		JumpCheck2:
			TNT1 A 0 A_JumpIf(1 == ACS_NamedExecuteWithResult("DnD Decide Flight"), "Jump")
		Goto MissileNoJump_Check
	    Jump:
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_PlaySound("GodSlayer/jump", CHAN_ITEM)
			TNT1 A 0 A_ChangeFlag("NOGRAVITY", 1)
			TNT1 A 0 A_ChangeFlag("FLOAT", 1)
			ROB4 HH 4 Bright ThrustThingZ(0, 28.0, 0, 0)
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Decide Land", 0, 0, 12)
			ROB4 H 2 Bright
		JumpLoop:
			TNT1 A 0 A_Jump(128, "MaybeShoot")
			ROB4 I 4 Bright A_JumpIfInventory("InquisitorLand", 1, "Land")
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Decide Land", 0, 1, 12)
			TNT1 A 0 A_PlaySound("GodSlayer/jump", CHAN_ITEM)
			ROB4 H 4 Bright A_JumpIfInventory("InquisitorLand", 1, "Land")
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Decide Land", 0, 1, 12)
		Loop
		MaybeShoot:
			TNT1 A 0 A_Jump(48, "MaybeShoot2")
			TNT1 A 0 A_JumpIfCloser(attack_on_flight_dist, "MaybeShoot2")
		Goto JumpLoop
		MaybeShoot2:
			TNT1 A 0 A_CheckSight("JumpLoop")
		Goto FastAttacks
		FastAttacks:
			TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
			TNT1 A 0 A_ChangeFlag("FLOAT", 0)
			TNT1 A 0 A_StopSound(CHAN_ITEM)
			TNT1 A 0 A_Jump(96, "FastGrenadeDo", "GrenadeDo")
		Goto Shotgun
		Land:
			TNT1 A 0 A_ChangeFlag("NOGRAVITY", 0)
			TNT1 A 0 A_ChangeFlag("FLOAT", 0)
			TNT1 A 0 A_StopSound(CHAN_ITEM)
			TNT1 A 0 A_GiveInventory("GSFlightCooldown", 1)
			ROB4 A 2 ACS_NamedExecuteAlways("DnD GodSlayer Land")
			ROB4 A 3
		Goto See
		MissileNoJump_Check:
			TNT1 A 0 A_CheckSight("SeeAnimCont")
		Goto MissileNoJump
		MissileState:
			TNT1 A 0 A_SetUserVar("user_attack", 0)
			TNT1 A 0 A_SetUserVar("user_charge", 0)
			TNT1 A 0 A_SetUserVar("user_chargerpt", 0)
			TNT1 A 0 A_TakeInventory("DnD_Boolean", 1)
			ROB4 A 2 A_JumpIf(ceilingz - z > 54, "JumpCheck2")
		MissileNoJump:
			ROB4 A 6 A_FaceTarget
			TNT1 A 0 A_Jump(160, "Think")
		Decided:
			TNT1 A 0 A_SetUserVar("user_attack", 0)
			TNT1 A 0 A_JumpIfTargetInLOS("Shotgun", 0, JLOSF_DEADNOJUMP, 288)
			ROB4 G 6 A_FaceTarget
		MissileLoop:
			TNT1 A 0 A_FaceTarget(9.25)
			TNT1 A 0 A_SetAngle(angle + 2*frandom(-1.75, 1.75))
			TNT1 A 0 A_PlaySound("GodSlayer/Fire", CHAN_WEAPON)
			ROB4 F 2 Bright A_CustomMissile("GodSlayerBullet", 88, -27, frandom(-1.0, 1.0), CMF_OFFSETPITCH, frandom(-1.0, 1.0))
			ROB4 G 2
			TNT1 A 0 A_SetUserVar("user_attack", user_attack + 1)
			TNT1 A 0 A_JumpIf(user_attack == 10, "See")
		Loop
		Think2:
			TNT1 A 0 A_TakeInventory("DnD_Boolean", 1)
			TNT1 A 0 A_Jump(160, "Grenade")
			TNT1 A 0 A_Jump(256, "Pulse", "Decided")
		Goto See
		Think:
			TNT1 A 0 A_Jump(160, "Grenade")
			TNT1 A 0 A_Jump(256, "Charge", "Pulse", "Decided")
		Goto See
		Think3:
			TNT1 A 0 A_Jump(160, "Pulse")
		Goto Charge
		Shotgun:
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_PlaySound("Godslayer/Fire", CHAN_WEAPON)
			TNT1 AAAAAAAAA 0 A_CustomMissile("GodSlayerBullet", 88, -27, frandom(-10.6, 10.6), CMF_OFFSETPITCH, frandom(-5.3, 5.3))
			ROB4 F 4 Bright A_CustomMissile("GodSlayerBullet", 88, -27, frandom(-10.6, 10.6), CMF_OFFSETPITCH, frandom(-5.3, 5.3))
			ROB4 G 8
		Goto See
		Grenade:
			ROB4 K 1 A_JumpIfTargetInLOS("GrenadeDo", 0, JLOSF_DEADNOJUMP, 864)
		Goto Think3
		GrenadeDo:
			ROB4 KKK 3 A_FaceTarget
			ROB4 K 1 A_FaceTarget
			ROB4 J 6 Bright ACS_NamedExecuteAlways("DND Monster Shoot", 0, DND_GODSLAYER, 0, 11)
			ROB4 K 12
		Goto See
		FastGrenadeDo:
			TNT1 A 0 A_JumpIfcloser(264, "ContinueFastNade")
		Goto GrenadeDo
		ContinueFastNade:
			ROB4 KKKK 3 A_FaceTarget
			TNT1 A 0 A_CustomMissile("InquisitorShot2", 116, 28, 0, CMF_AIMOFFSET)
			ROB4 J 6 Bright A_CustomMissile("InquisitorShot2", 116, -28, 0, CMF_AIMOFFSET)
			ROB4 K 12
		Goto See
		Pulse:
			TNT1 A 0 A_PlaySound("GodSlayer/Charge", CHAN_WEAPON)
			ROB4 GGGGGGGG 4 A_FaceTarget(15)
			TNT1 A 0 A_PlaySound("GodSlayer/PulseFire")
			ROB4 F 8 Bright A_CustomMissile("InquisitorPulse", 80, -48)
			ROB4 G 4
		Goto See
		Charge:
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_CustomMissile("InquisitorChargeSilent", 32, 0, 0, CMF_AIMDIRECTION, 0)
			ROB4 HHH 1 A_JumpIfInventory("DnD_Boolean", 1, "Think2")
			TNT1 A 0 A_PlaySound("GodSlayer/ChargeBegin", CHAN_ITEM)
			ROB4 H 4 Bright A_FaceTarget
			ROB4 H 4 A_FaceTarget
			ROB4 H 4 Bright A_FaceTarget
			ROB4 H 4 A_FaceTarget
			ROB4 H 4 Bright A_FaceTarget
			ROB4 H 4 A_FaceTarget
			TNT1 A 0 A_PlaySound("GodSlayer/ChargeGo", CHAN_ITEM)
		ChargeLoop:
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "StopCharge")
			TNT1 A 0 A_PlaySound("Inquisitor/Jump", "Item")
			TNT1 A 0 A_CustomMissile("InquisitorCharge", 32, 0, 0, CMF_AIMDIRECTION, 0)
			ROB4 H 2 Bright ThrustThing(angle*256/360, user_charge + 8, 0, 0)
			TNT1 A 0 A_PlaySound("GodSlayer/jump", CHAN_WEAPON)
			TNT1 A 0 A_FaceTarget(7.5)
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "StopCharge")
			TNT1 A 0 A_CustomMissile("InquisitorCharge", 32, 0, 0, CMF_AIMDIRECTION, 0)
			ROB4 H 2 Bright ThrustThing(angle*256/360, user_charge + 8, 0, 0)
			TNT1 A 0 A_PlaySound("GodSlayer/jump", CHAN_WEAPON)
			TNT1 A 0 A_FaceTarget(7.5)
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "StopCharge")
			TNT1 A 0 A_CustomMissile("InquisitorCharge", 32, 0, 0, CMF_AIMDIRECTION, 0)
			ROB4 I 2 Bright ThrustThing(angle*256/360, user_charge + 8, 0, 0)
			TNT1 A 0 A_PlaySound("GodSlayer/jump", CHAN_WEAPON)
			TNT1 A 0 A_FaceTarget(7.5)
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "StopCharge")
			TNT1 A 0 A_CustomMissile("InquisitorCharge", 32, 0, 0, CMF_AIMDIRECTION, 0)
			ROB4 I 2 Bright ThrustThing(angle*256/360, user_charge + 8, 0, 0)
			TNT1 A 0 A_PlaySound("GodSlayer/jump", CHAN_WEAPON)
			TNT1 A 0 A_FaceTarget(7.5)
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "StopCharge")
			TNT1 A 0 A_SetUserVar("user_charge", user_charge + 1)
			TNT1 A 0 A_JumpIf(user_charge == 6, "NoMoreVel")
		Loop
		NoMoreVel:		
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "StopCharge")
			TNT1 A 0 A_PlaySound("Inquisitor/Jump", "Item")
			TNT1 A 0 A_CustomMissile("InquisitorCharge", 32, 0, 0, CMF_AIMDIRECTION, 0)
			ROB4 H 2 Bright ThrustThing(angle*256/360, 30, 0, 0)
			TNT1 A 0 A_FaceTarget(7.5)
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "StopCharge")
			TNT1 A 0 A_CustomMissile("InquisitorCharge", 32, 0, 0, CMF_AIMDIRECTION, 0)
			ROB4 H 2 Bright ThrustThing(angle*256/360, 30, 0, 0)
			TNT1 A 0 A_FaceTarget(7.5)
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "StopCharge")
			TNT1 A 0 A_CustomMissile("InquisitorCharge", 32, 0, 0, CMF_AIMDIRECTION, 0)
			ROB4 I 2 Bright ThrustThing(angle*256/360, 30, 0, 0)
			TNT1 A 0 A_FaceTarget(7.5)
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "StopCharge")
			TNT1 A 0 A_CustomMissile("InquisitorCharge", 32, 0, 0, CMF_AIMDIRECTION, 0)
			ROB4 I 2 Bright ThrustThing(angle*256/360, 30, 0, 0)
			TNT1 A 0 A_FaceTarget(7.5)
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "StopCharge")
			TNT1 A 0 A_SetUserVar("user_chargerpt", user_chargerpt + 1)
			ROB4 I 0 A_JumpIf(user_chargerpt == 5, "StopCharge")
		Goto See
		StopCharge:
			TNT1 A 0 A_TakeInventory("DnD_Boolean", 1)
			ROB4 K 12
		Goto See
		XDeathState:
		DeathState:
			ROB4 A 0 A_ChangeFlag ("FLOAT", 0)
			ROB4 A 0 A_ChangeFlag ("NOGRAVITY", 0)
			ROB4 L 1 A_NoBlocking
			TNT1 A 0 Radius_Quake(6, 90, 0, 35, 0)
			ROB4 LLLLLLLLLLLLLLLLLLLLLLL 5 Bright A_CustomMissile("InquisitorDeathExplosion", random(32, 144), 16 * random(-6, 6),random(0,360),0)
			ROB4 L 1 A_Scream
			TNT1 AAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("InquisitorGibber",50,0,random(0,359))
			TNT1 AAAAAAAAAAAAAA 0 A_TossGib
			TNT1 A 0 A_CustomMissile("InquisitorBigExplosion", 0, 0, 0)
        Stop
	}
}

Actor GSFlightCooldown : PowerDamage {
	powerup.duration 25
	damagefactor "normal", 1.0
}

Actor GSLandToken : DnD_Boolean { }

Actor GodSlayerCollider {
	Radius 40
	Height 110
	Species "Cyber"
	+THRUSPECIES
	+NOGRAVITY
	States {
		Spawn:
			TNT1 A 1
		Stop
	}
}

Actor InquisitorQuaker : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_SpawnItem("InquisitorQuakeSpawner")
			TNT1 A 0 A_GiveInventory("DnD_Boolean", 1)
		Stop
	}
}

Actor InquisitorQuakeSpawner {
	Radius 2
	Height 4
	+NOCLIP
	+THRUACTORS
	+NOGRAVITY
	States {
		Spawn:
			TNT1 A 10 NoDelay A_Quake(6, 55, 0, 384, "")
		Stop
	}
}

Actor GodSlayerStomp {
	+DONTSPLASH
	+PAINLESS
	+NOTIMEFREEZE
	+BLOODLESSIMPACT
	+NODAMAGETHRUST
	+DONTBLAST
	Radius 1
	Height 1
	Damage 0
	DamageType "Physical"
	Stamina 1
	Obituary "%o got too close to God Slayer."
    States {
		Spawn:
			TNT1 A 1
			TNT1 A 1 A_Explode(128, 128, 0)
		Stop	
	}
}

Actor GodSlayerStomp2 : GodSlayerStomp {
	States {
		Spawn:
			TNT1 A 1
			TNT1 AAAAAAA 0 A_SpawnItemEx("RocketSmoke", random(-32, 32), random(-32, 32), frandom(-4, 4), frandom(-4, 4), frandom(0.5, 4))
			TNT1 A 0 A_Quake(6, 55, 0, 256, "")
			TNT1 A 1 A_Explode(160, 160, 0)
		Stop
	}
}

Actor GodSlayerLandStomper : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_SpawnItem("GodSlayerStomp2")
		Stop
	}
}

Actor InquisitorExplosion : BaseExplosionDamage {
	DamageType "Explosive"
	Stamina 4
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(64, 128, 0)
		Stop
	}
}

Actor InquisitorExplosion2 : BaseExplosionDamage {
	DamageType "Explosive"
	Stamina 4
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(128, 192, 0, 1, 64)
		Stop
	}
}

Actor InquisitorExplosion3 : BaseExplosionDamage {
	DamageType "Explosive"
	Stamina 4
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(64, 128, 0, 1, 32)
		Stop
	}
}

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

Actor GodSlayerBullet : ZombieBullet {
	Damage (random(3, 4) * 5)
	DamageType "PhysicalBullet"
	Stamina 1
	States {
		Death:
		XDeath:
			TNT1 A 0 A_SetScale(0.55, 0.55)
			TNT1 AA 0 A_SpawnItem("ExpShellSoundEmitter")
			TNT1 AA 0 A_SpawnDebris("ExplosiveSpark", 1)
			TNT1 A 0 A_Jump(128, "Flip")
			DKSX A 2
			TNT1 A 0 A_SpawnItem("GodSlayerBulletExp")
			DKSX BCDEFG 2
			DKSX HIJKL 1
		Stop
		Flip:
			DKSX M 2
			TNT1 A 0 A_SpawnItem("GodSlayerBulletExp")
			DKSX NOPQRS 2
			DKSX TUVWX 1
		Stop
	}
}

Actor InquisitorCharge {
	PROJECTILE
	Radius 40
	Height 96
	Speed 20
	Damage (5 * random(10, 20))
	DamageType "Physical"
	Stamina 1
	MaxStepHeight 28
	+BLOODLESSIMPACT
	+DONTBLAST
	+STEPMISSILE
	States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_Recoil(-6)
			TNT1 A 2
		Stop
		Death:
			TNT1 AA 0 A_PlaySound("GodSlayer/HardHit")
			TNT1 A 0 A_SpawnItem("InquisitorExplosion")
			TNT1 A 1 A_GiveToTarget("InquisitorQuaker", 1)
		Stop
	}
}

Actor InquisitorChargeSilent : InquisitorCharge {
	Damage 0
	States {
		Death:
			TNT1 A 0 A_GiveToTarget("DnD_Boolean", 1)
			TNT1 A 1
		Stop
	}
}

Actor InquisitorShot2 : InquisitorShot {
	Damage (75)
	DamageType "Explosive"
	Stamina 4
	Speed 28
	SeeSound "GodSlayer/Grenade"
	DeathSound "GodSlayer/GrenadeExp"
	Radius 8
	Height 16
	Gravity 2.0
	+DONTBLAST
	-STRIFEDAMAGE
	-NOGRAVITY
	States {
	    Death:
			TNT1 A 0 A_SetTranslucent(1, 1)
			TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSmall", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			TNT1 AAA 0 A_CustomMissile("RocketSmoke", 0, 0, random(0, 360), 2, random(0, 180))
			TNT1 AAAAA 0 A_CustomMissile("RocketSmoke", 0, 0, random(0, 360), 2, random(0, 360))
			TNT1 AAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 180))
			BNG2 A 5 Bright A_SpawnItem("InquisitorExplosion2")
			BNG2 BC 4 Bright
			BNG2 DEF 3 Bright
			BNG2 GHI 2 Bright
		Stop
	}
}

Actor InquisitorDeathExplosion {
	radius 10
	height 12
	damage 0
	speed 0
	renderstyle Add
	Alpha 0.90
	seesound "GodSlayer/deathexp"
	PROJECTILE
	+NOCLIP
	+DONTSPLASH
	+SPAWNSOUNDSOURCE
	+DONTBLAST
	States {
		Spawn:
			TNT1 A 0 A_SpawnItemEx ("Shrapnel1", 0, 0, random(0,42), random(2,6), random(2,6), 0, random(0,360), 160)
			TNT1 A 0 A_SpawnItemEx ("Shrapnel2", 0, 0, random(0,42), random(2,6), random(2,6), 0, random(0,360), 160)
			TNT1 A 0 A_SpawnItemEx ("Shrapnel3", 0, 0, random(0,42), random(2,6), random(2,6), 0, random(0,360), 160)
			R045 MNOPQ 3 bright A_SpawnItem("InquisitorExplosion3")
		stop
	}
}

Actor InquisitorBigExplosion {   
	Radius 2
	Height 2
	Damage 0
	+NOCLIP
	+DONTBLAST
	Speed 0
	PROJECTILE
	Renderstyle Add
	ALPHA 0.88
	Scale 2.0
	SeeSound "GodSlayer/bigdeathexp"
	States {
		Spawn:
			TNT1 A 0 A_SpawnItemEx("ShadowVaporSpawner",0,0,0,0,0,0,0,32)
			TNT1 A 0 Radius_Quake(8, 45, 0, 35, 0)
			RPGX B 2 Bright A_SpawnItem("InquisitorExplosion2")
			RPGX C 2 Bright
			RPGX DEFGHIJKLMNOPQRSTUV 2 Bright
		stop
	}
}

Actor ShadowVaporSpawner {
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			TNT1 A 0
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("ShadowVapor",0,0,0,random(4,-4),random(4,-4),random(4,-4),random(0,359),32)
			TNT1 A 1
		Stop
	}
}

Actor ShadowVapor : msxgen_smoke {
	Scale 0.85
}

actor InquisitorGibber {
    +NOINTERACTION
    states {
		Spawn:
			TNT1 A 0 NoDelay A_PlaySound("GodSlayer/gibbage")
			TNT1 A 1 A_SpawnItemEx ("Shrapnel1", 0, 0, random(0,42), random(2,6), random(2,6), 0, random(0,360), 160)
			TNT1 A 1 A_SpawnItemEx ("Shrapnel2", 0, 0, random(0,42), random(2,6), random(2,6), 0, random(0,360), 160)
			TNT1 A 1 A_SpawnItemEx ("Shrapnel3", 0, 0, random(0,42), random(2,6), random(2,6), 0, random(0,360), 160)
			TNT1 A 1 A_SpawnItemEx ("Shrapnel3", 0, 0, random(0,42), random(2,6), random(2,6), 0, random(0,360), 160)
			TNT1 A 1 A_SpawnItemEx ("Shrapnel2", 0, 0, random(0,42), random(2,6), random(2,6), 0, random(0,360), 160)
			TNT1 A 1 A_SpawnItemEx ("Shrapnel1", 0, 0, random(0,42), random(2,6), random(2,6), 0, random(0,360), 160)
		stop
    }
}

Actor InquisitorPulseTrail {
	+NOINTERACTION
	+CLIENTSIDEONLY
	Renderstyle Add
	Alpha 0.75
	States {
		Spawn:
			TORP ABCDABCDABCDAB 2 Bright A_SetScale(scalex - 0.075, scaley - 0.075)
		Stop
	}
}

Actor InquisitorPulse : MaulerTorpedo {
	Speed 48
	Damage (50 * random(2,3))
	+NODAMAGETHRUST
	+DONTBLAST
	DamageType "EnergyGreen"
	Stamina 16
	DeathSound "GodSlayer/Torpedo"
	States {
		Spawn:
			TORP AA 2 Bright A_SpawnItem("InquisitorPulseTrail")
			TNT1 AAAAA 0 A_SpawnDebris("BFGParticles")
			TORP BB 2 Bright A_SpawnItem("InquisitorPulseTrail")
			TNT1 AAAAA 0 A_SpawnDebris("BFGParticles")
			TORP CC 2 Bright A_SpawnItem("InquisitorPulseTrail")
			TNT1 AAAAA 0 A_SpawnDebris("BFGParticles")
			TORP DD 2 Bright A_SpawnItem("InquisitorPulseTrail")
			TNT1 AAAAA 0 A_SpawnDebris("BFGParticles")
		Loop
		Death:
			TWAV AB 8 Bright
			TNT1 A 0 A_JumpIf(ceilingz - z < 16, "MakeLower") // Ensure ring spawns even on ceiling hits
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 0, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 6, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 12, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 18, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 24, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 30, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 36, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 42, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 48, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 54, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 60, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 66, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 72, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 78, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 84, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 90, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 96, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 102, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 108, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 114, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 120, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 126, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 132, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 138, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 144, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 150, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 156, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 162, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 168, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 174, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 180, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 186, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 192, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 198, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 204, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 210, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 216, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 222, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 228, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 234, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 240, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 246, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 252, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 258, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 264, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 270, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 276, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 282, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 288, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 294, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 300, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 306, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 312, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 318, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 324, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 330, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 336, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 342, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 348, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, 354, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		Goto Cont
		MakeLower:
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 0, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 6, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 12, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 18, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 24, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 30, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 36, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 42, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 48, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 54, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 60, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 66, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 72, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 78, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 84, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 90, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 96, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 102, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 108, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 114, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 120, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 126, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 132, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 138, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 144, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 150, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 156, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 162, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 168, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 174, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 180, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 186, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 192, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 198, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 204, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 210, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 216, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 222, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 228, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 234, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 240, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 246, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 252, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 258, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 264, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 270, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 276, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 282, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 288, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 294, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 300, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 306, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 312, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 318, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 324, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 330, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 336, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 342, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 348, CMF_AIMDIRECTION | CMF_TRACKOWNER)
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, 354, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		Cont:
			TNT1 A 0 A_SpawnItem("BFGShockWave")
			TWAV BC 8 Bright
		Stop
	}
}

Actor MaulerTorpedoWaveInq : MaulerTorpedoWave {
	Speed 30
	+THRUGHOST
	-STRIFEDAMAGE
	+DONTSPLASH
	+DONTBLAST
	Damage (15 * random(2, 3))
	DamageType "EnergyGreen"
	Stamina 16
	DeathSound "GodSlayer/PulseHit"
}

actor Shrapnel1 {
    +DOOMBOUNCE
    PROJECTILE
    -NOGRAVITY
    +NOBLOCKMAP
    +CANNOTPUSH
    -NOTELEPORT
    -SOLID
	+GRENADETRAIL
	+DONTSPLASH
	+CLIENTSIDEONLY
	+THRUACTORS
    Radius 2
    mass 5
    bouncefactor 0.5
    SeeSound "Shrapnel"
    Speed 25
    States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_Jump(64,"Alt") 
			TNT1 A 0 ThrustThingZ (0, (Random (20, 100)), 0, 1)
        goto See
		Alt:
			SHRP M 0 ThrustThingZ (0, (Random (40, 130)), 0, 1)
    	Stop 
		See:
			SHRP L 5
			SHRP L 5 ThrustThingZ(0,(Random (6, 20)),1,1)
			SHRP L 10 A_FadeOut(0.05)
        loop
		Death:
			SHRP L 70
        Stop
    }
}

actor Shrapnel2 : Shrapnel1 {
    bouncefactor 0.4
    Speed 20
    States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_Jump(64,"Alt") 
			TNT1 A 0 ThrustThingZ (0, (Random (20, 100)), 0, 1)
        goto See
		Alt:
			TNT1 A 0 ThrustThingZ (0, (Random (40, 130)), 0, 1)
    	Stop 
		See:
			SHRP M 5
			SHRP M 5 ThrustThingZ(0,(Random (6, 20)),1,1)
			SHRP M 10 A_FadeOut(0.05)
        loop
		Death:
			SHRP M 70
        Stop
    }
}

actor Shrapnel3 {
    bouncefactor 0.6
    Speed 23
    States {
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_Jump(64,"Alt") 
			TNT1 A 0 ThrustThingZ (0, (Random (20, 100)), 0, 1)
        goto See
		Alt:
			SHRP L 0 ThrustThingZ (0, (Random (40, 130)), 0, 1)
    	Stop 
		See:
			SHRP N 5
			SHRP N 5 ThrustThingZ(0,(Random (6, 20)),1,1)
			SHRP N 10 A_FadeOut(0.05)
        loop
		Death:
			SHRP N 70
        Stop
    }
}

Actor InquisitorLand : DnD_Boolean { }

Actor InquisitorSoundPlayer : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_PlaySound("GodSlayer/jump", CHAN_ITEM)
		Stop
	}
}

Actor InquisitorCounter : Inventory {
	inventory.maxamount 45 // max flight is x4 tics
}

Actor Golgoth : DnD_BaseHybridBoss {
	tag "Golgoth"
	obituary "%o was removed from existence by Golgoth."
	Health 0x7FFFFFFF
	radius 40
	height 110
	ProjectilePassHeight 160
	mass 16384
	speed 4
	painchance 6
	seesound "Golgoth/See"
	painsound "Golgoth/Pain"
	deathsound "Golgoth/Die"
	activesound "Golgoth/Act"
	Species "Cyber"
	Scale 1.15
	var int user_count;
	const int trace_count = 60;
	const int dash_speedmin = 12;
	const int dash_speedmax = 16;
	const int arc_count = 20;
	const int arc_inc = 8;
	+ISMONSTER
	+BOSS
	+QUICKTORETALIATE
	+MISSILEMORE
	+MISSILEEVENMORE
	+NOINFIGHTING
	+NORADIUSDMG
	+NOTARGET
	+LOOKALLAROUND
	+PIERCEARMOR
	+NODROPOFF
	+DONTRIP
	-FLOORCLIP
	RadiusDamageFactor 0
	states {
		SetInfo:
			TNT1 A 1
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Golgoth Health Check")
			TNT1 A 0 A_SetArg(4, DND_GOLGOTH)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", 10000)
		Goto SpawnSetup

		IdleState:
			MOMD A 10 A_GiveInventory("DnD_SightChecker", 1)
		loop
		SeeState:
			MOMD AAAAAA 1 A_Chase("", "", CHF_NOPLAYACTIVE)
			MOMD AAAAAA 1 A_Chase
		Goto See
		FromMelee:
			MOMD A 0 A_Jump(96, "Forget")
		Goto Missile
		Forget:
			MOMD A 3
		Goto See
		MeleeState:
		MissileState:
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "Less50Decide")
		MissileDecide:
			TNT1 A 0 A_Jump(144, "DarkLance", "MeteorDash")
		Meteor:
			MOMD E 6 A_FaceTarget
			MOMD F 5 A_FaceTarget
			TNT1 A 0 A_CustomMissile("GolgothMeteor", 82.8, 27.6, 0, CMF_AIMOFFSET)
			MOMD G 6 A_CustomMissile("GolgothMeteor", 82.8, -27.6, 0, CMF_AIMOFFSET)
			TNT1 A 0 A_FaceTarget
			MOMD G 6 ACS_NamedExecuteAlways("DND Monster Shoot", 0, DND_GOLGOTH, 1)
			MOMD FE 2 A_FaceTarget
		Goto See
		DarkLance:
			TNT1 A 0 A_JumpIfCloser(3200, "ContinueLance")
		Goto Meteor
		ContinueLance:
			TNT1 A 0 A_SetUserVar("user_count", 0)
			MOMD E 6 A_FaceTarget
			TNT1 A 0 A_PlaySound("Golgoth/RailLoop", 7)
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "FastLance")
			MOMD F 5 A_FaceTarget
		LanceLoop:
			TNT1 A 0 A_JumpIf(user_count == trace_count, "LanceShoot")
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_CustomBulletAttack(0, 0, 1, 0, "GolgothPuff_LaserFX", 1576)
			MOMD G 1 Light("GOLGOTHPINKLIGHT2") A_CustomBulletAttack(0, 0, 1, 1, "GolgothPuff", 4096)
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		FastLance:
			MOMD F 5 A_FaceTarget
		FastLanceLoop:
			TNT1 A 0 A_JumpIf(user_count == trace_count / 2, "LanceShoot")
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_CustomBulletAttack(0, 0, 1, 0, "GolgothPuff_LaserFX", 1576)
			MOMD G 1 Light("GOLGOTHPINKLIGHT2") A_CustomBulletAttack(0, 0, 1, 1, "GolgothPuff", 4096)
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		LanceShoot:
			TNT1 A 0 A_StopSound(7)
			TNT1 A 0 A_PlaySound("Golgoth/Rail", 5)
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_CustomBulletAttack(0, 0, 1, 0, "GolgothPuff_LaserFX2", 1576)
			MOMD G 1 Light("GOLGOTHPINKLIGHT2") A_CustomBulletAttack(0, 0, 1, 8, "GolgothPuff2", 4096)
			MOMD G 8
		Goto See
		MeteorDash:
			TNT1 A 0 A_PlaySound("monster/blur")
			TNT1 A 0 A_Jump(128, "DashLeft")
		Goto DashRight
		MeteorDashCont:
			MOMD E 5 A_FaceTarget
			MOMD F 4 A_FaceTarget
			MOMD G 5 ACS_NamedExecuteAlways("DND Monster Shoot", 0, DND_GOLGOTH, 2)
			TNT1 A 0 A_Jump(96, "MeteorDash")
		Goto See
		DashLeft:
			TNT1 A 0 A_SetUserVar("user_count", random(dash_speedmin, dash_speedmax))
			MOMD D 1 A_FaceTarget
			TNT1 A 0 A_ChangeVelocity(user_count * cos(angle - 45), user_count * sin(angle - 45), velz, CVF_REPLACE)
			MOMD DDDDDDDDDDDDD 1 A_SpawnItemEx("GolgothDashTrail_Left")
		Goto MeteorDashCont
		DashRight:
			TNT1 A 0 A_SetUserVar("user_count", random(dash_speedmin, dash_speedmax))
			MOMD B 1 A_FaceTarget
			TNT1 A 0 A_ChangeVelocity(user_count * cos(angle + 45), user_count * sin(angle + 45), velz, CVF_REPLACE)
			MOMD BBBBBBBBBBBBB 1 A_SpawnItemEx("GolgothDashTrail_Right")
		Goto MeteorDashCont
		Less50Decide:
			TNT1 A 0 A_Jump(160, "FireArc", "OrangeSoul")
		Goto MissileDecide
		OrangeSoul:
			MOMD H 5 A_FaceTarget
			MOMD I 4 A_FaceTarget
			TNT1 A 0 A_SetAngle(angle + frandom(-10.0, 10.0))
			MOMD J 8 A_CustomMissile("GolgothOrangeSoul", 55.2)
			MOMD IH 2
		Goto See
		FireArc:
			TNT1 A 0 A_JumpIfCloser(640, "FireArcGo")
		Goto MissileDecide
		FireArcGo:
			TNT1 A 0 A_SetUserVar("user_count", 0)
			MOMD H 5 A_FaceTarget
			TNT1 A 0 A_PlaySound("Golgoth/FireCircle", 5)
			MOMD I 4 A_FaceTarget
			TNT1 A 0 A_PlaySound("Golgoth/FireCircleGo")
		FireArcLoop1:
			MOMD J 0 A_JumpIf(user_count == arc_count, "FireArc1Finish")
			MOMD J 1 A_CustomMissile("GolgothFlames", 96, 0, user_count * arc_inc, CMF_ABSOLUTEANGLE)
			MOMD J 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		FireArc1Finish:
			TNT1 A 0 A_SetUserVar("user_count", 0)
			MOMD J 24
			TNT1 A 0 A_PlaySound("Golgoth/FireCircleGo")
		FireArcLoop2:
			MOMD J 0 A_JumpIf(user_count == arc_count, "FireArc2Finish")
			MOMD J 1 A_CustomMissile("GolgothFlames", 32, 0, 120 + user_count * arc_inc, CMF_ABSOLUTEANGLE)
			MOMD J 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		FireArc2Finish:
			MOMD J 0 A_SetUserVar("user_count", 0)
			MOMD J 24
			MOMD J 0 A_PlaySound("Golgoth/FireCircleGo")
		FireArcLoop3:
			MOMD J 0 A_JumpIf(user_count == arc_count, "FireArc3Finish")
			MOMD J 1 A_CustomMissile("GolgothFlames", 64, 0, 240 + user_count * arc_inc, CMF_ABSOLUTEANGLE)
			MOMD J 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		FireArc3Finish:
			MOMD JIH 5
		Goto See
		PainState:
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Pain Immune Toggle", 5)
			TNT1 A 0 A_StopSound(7)
			MOMD K 4 A_Pain
			MOMD K 4
		Goto See
		XDeathState:
		DeathState:
			TNT1 A 0 A_StopSound(7)
			MOMD L 16 A_Scream
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			MOMD M 6
			TNT1 A 0 A_PlaySound("Golgoth/Explode", CHAN_BODY)
			MOMD MMMMMNNNNN 1 A_SpawnItemEx("GenericGibber_Low", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			TNT1 A 0 A_NoBlocking
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			MOMD OOOOPPPPQQQQRRRR 1 A_SpawnItemEx("GenericGibber_Low", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			MOMD T -1 A_KillMaster
		Stop
	}
}

Actor GolgothRailFX {
	XScale 0.8
	Renderstyle Add
	Alpha 1.0
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			MOMP I 1 Bright A_FadeOut(0.075)
		Loop
	}
}

Actor GolgothRailFX_Tracer : GolgothRailFX {
	XScale 0.6
	YScale 0.8
	States {
		Spawn:
			MOMP I 1 Bright A_FadeOut(0.33)
		Loop
	}
}

Actor GolgothPuff {
	+PUFFGETSOWNER
	+ALWAYSPUFF
	+BLOODLESSIMPACT
	-ALLOWPARTICLES
	+PUFFONACTORS
	+NOGRAVITY
	+NOBLOCKMAP
	DamageType "MagicalSlow50"
	Stamina 8
	States {
		Spawn:
			TNT1 A 4
		Stop
	}
}

Actor GolgothPuff_LaserFX : GolgothPuff {
	States {
		Spawn:
			TNT1 A 1 NoDelay ACS_NamedExecuteAlways("DnD Golgoth Laser Trail Fake", 0, ACS_NamedExecuteWithResult("DnD Get Target"))
			TNT1 A 3
		Stop
	}
}

Actor GolgothPuff2 : GolgothPuff {
	DamageType "MagicalWeaken75"
	Stamina 8
	States {
		Spawn:
			TNT1 A 4
		Stop
	}
}

Actor GolgothPuff_LaserFX2 : GolgothPuff2 {
	States {
		Spawn:
			TNT1 A 1 NoDelay ACS_NamedExecuteAlways("DnD Golgoth Laser Trail", 0, ACS_NamedExecuteWithResult("DnD Get Target"))
			TNT1 A 3
		Stop
	}
}


Actor GolgothDashTrail_Left {
	Renderstyle Translucent
	Alpha 1.0
	Scale 1.15
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			MOMD D 1 A_FadeOut(0.075)
		Loop
	}
}

Actor GolgothDashTrail_Right : GolgothDashTrail_Left {
	States {
		Spawn:
			MOMD B 1 A_FadeOut(0.075)
		Loop
	}
}

Actor GolgothMeteorExp : BaseExplosionDamage {
	DamageType "ExplosiveFire"
	Stamina 36
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(80, 144)
		Stop
	}
}

Actor GolgothPuffy : PuffyC {
	Scale 1.15
}

Actor GolgothMeteor {
	Projectile
	Speed 28
	Height 16
	Radius 8
	Damage(80)
	DamageType "Fire"
	Stamina 32
	seesound "lavdatk"
	DeathSound "Golgoth/MeteorExplode"
	+DONTBLAST
	States {
		Spawn:
			MOMP AAABBBCCC 1 Bright A_SpawnItemEx("GolgothPuffy", random2[BeastPuff]()*0.015625, random2[BeastPuff]()*0.015625, random2[BeastPuff]()*0.015625, frandom(-1, 1), frandom(-1, 1), frandom(-1, 1),0,SXF_ABSOLUTEPOSITION, 64)
		Loop
		Death:
			TNT1 A 0 A_SpawnItem("GolgothMeteorExp")
			MOMP DEFGH 3 Bright
		Stop
	}
}

Actor GolgothOrangeSoul {
	Projectile
	Speed 10
	Height 20
	Radius 10
	Renderstyle Add
	Alpha 1.0
	Damage(100)
	DamageType "MagicalOrange"
	Stamina 8
	SeeSound "H2SkullWizard/Fire"
    DeathSound "H2SkullWizard/Hit"
	const int fspeed = 20;
	const int sprd = 3;
	const int circle1_count = 5;
	const int circle2_count = 8;
	const int circle3_count = 12;
	+DONTBLAST
	States {
		Spawn:
			TNT1 A 0
			MOMP JJJJJJJJJJJJJJJ 1 Bright A_SpawnItem("GolgothOrangeSoulTrail")
		Circle1:
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 2 * sprd * sin(0), sprd * cos(0), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 2 * sprd * sin(360 / circle1_count), sprd * cos(360 / circle1_count), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 2 * sprd * sin(360 * 2 / circle1_count), sprd * cos(360 * 2 / circle1_count), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 2 * sprd * sin(360 * 3 / circle1_count), sprd * cos(360 * 3 / circle1_count), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 2 * sprd * sin(360 * 4 / circle1_count), sprd * cos(360 * 4 / circle1_count), 0, SXF_TRANSFERPOINTERS)
		C1Finish:
			MOMP JJJJJJJJJJJJJJJ 1 Bright A_SpawnItem("GolgothOrangeSoulTrail")
		Circle2:
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 4 * sprd * sin(0), 1.5 * sprd * cos(0), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 4 * sprd * sin(360 / circle2_count), 1.5 * sprd * cos(360 / circle2_count), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 4 * sprd * sin(360 * 2 / circle2_count), 1.5 * sprd * cos(360 * 2 / circle2_count), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 4 * sprd * sin(360 * 3 / circle2_count), 1.5 * sprd * cos(360 * 3 / circle2_count), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 4 * sprd * sin(360 * 4 / circle2_count), 1.5 * sprd * cos(360 * 4 / circle2_count), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 4 * sprd * sin(360 * 5 / circle2_count), 1.5 * sprd * cos(360 * 5 / circle2_count), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 4 * sprd * sin(360 * 6 / circle2_count), 1.5 * sprd * cos(360 * 6 / circle2_count), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 4 * sprd * sin(360 * 7 / circle2_count), 1.5 * sprd * cos(360 * 7 / circle2_count), 0, SXF_TRANSFERPOINTERS)
		C2Finish:
			MOMP JJJJJJJJJJJJJJJ 1 Bright A_SpawnItem("GolgothOrangeSoulTrail")
		Circle3:
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 6 * sprd * sin(0), 3 * sprd * cos(0), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 6 * sprd * sin(360 / circle3_count), 3 * sprd * cos(360 / circle3_count), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 6 * sprd * sin(360 * 2 / circle3_count), 3 * sprd * cos(360 * 2 / circle3_count), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 6 * sprd * sin(360 * 3 / circle3_count), 3 * sprd * cos(360 * 3 / circle3_count), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 6 * sprd * sin(360 * 4 / circle3_count), 3 * sprd * cos(360 * 4 / circle3_count), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 6 * sprd * sin(360 * 5 / circle3_count), 3 * sprd * cos(360 * 5 / circle3_count), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 6 * sprd * sin(360 * 6 / circle3_count), 3 * sprd * cos(360 * 6 / circle3_count), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 6 * sprd * sin(360 * 7 / circle3_count), 3 * sprd * cos(360 * 7 / circle3_count), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 6 * sprd * sin(360 * 8 / circle3_count), 3 * sprd * cos(360 * 8 / circle3_count), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 6 * sprd * sin(360 * 9 / circle3_count), 3 * sprd * cos(360 * 9 / circle3_count), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 6 * sprd * sin(360 * 10 / circle3_count), 3 * sprd * cos(360 * 10 / circle3_count), 0, SXF_TRANSFERPOINTERS)
			TNT1 A 0 A_SpawnItemEx("GolgothFireBall", 0, 0, 0, fspeed, 6 * sprd * sin(360 * 11 / circle3_count), 3 * sprd * cos(360 * 11 / circle3_count), 0, SXF_TRANSFERPOINTERS)
		C3Finish:
			MOMP J 1 Bright A_SpawnItem("GolgothOrangeSoulTrail")
		Loop
		Death:
			MOMP KL 3 Bright
			MOMP M 5 Bright A_ChangeVelocity(0, 0, 2, CVF_REPLACE)
			MOMP N 6 Bright
			MOMP O 7 Bright
		Stop
	}
}

Actor GolgothOrangeSoulTrail {
	Renderstyle Add
	Alpha 1.0
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			TNT1 A 1
		SpawnLoop:
			MOMP J 1 Bright A_FadeOut(0.075)
			TNT1 A 0 A_SetScale(scalex - 0.075, scaley - 0.075)
		Loop
	}
}

Actor GolgothFireExp1 : BaseExplosionDamage {
	Damagetype "Fire"
	Stamina 32
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(12, 20)
		Stop
	}
}

Actor GolgothFireExp2 : BaseExplosionDamage {
	Damagetype "Fire"
	Stamina 32
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(14, 32)
		Stop
	}
}

Actor GolgothFireExp3 : BaseExplosionDamage {
	Damagetype "Fire"
	Stamina 32
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(16, 44)
		Stop
	}
}

Actor GolgothFireExp4 : BaseExplosionDamage {
	Damagetype "Fire"
	Stamina 32
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(20, 56)
		Stop
	}
}

Actor GolgothFlames {
	PROJECTILE
	Speed 45
	Height 12
	Radius 6
	Renderstyle Add
	Alpha 1.0
	Damage(8)
	DamageType "Fire"
	Stamina 32
	SeeSound "Flamethrower/Fire"
	DeathSound "Flamethrower/Hit"
	+RIPPER
	+BLOODLESSIMPACT
	+DONTBLAST
	States {
		Spawn:
			TNT1 A 2
			FRFX ABCD 2 bright A_SpawnItem("GolgothFireExp1")
			FRFX EFG 2 bright A_SpawnItem("GolgothFireExp2")
			FRFX HIJ 2 bright A_SpawnItem("GolgothFireExp3")
			FRFX KLM 2 bright A_SpawnItem("GolgothFireExp4")
			FRFX NO 2 bright
		Stop
		Death:
			FRFX HIJ 2 bright A_SpawnItem("GolgothFireExp3")
			FRFX KLM 2 bright A_SpawnItem("GolgothFireExp4")
			FRFX NO 2 bright
		Stop
	}
}

ACTOR GolgothFireBall {
	Speed 20
	Alpha 1
	Radius 8
	Height 16
	Damage (16)
	DamageType "Fire"
	Stamina 32
	SeeSound "weapons/basiliskfire2"
	DeathSound "weapons/basiliskexpl2"
	Species "Player"
	PROJECTILE
	const int fspeed = 20;
	+DONTBLAST
	+FORCERADIUSDMG
	States {
		Spawn:
			HIB1 AB 3 Bright
			TNT1 A 0 A_ChangeVelocity(fspeed * cos(angle), fspeed * sin(angle), velz, CVF_REPLACE)
		SpawnLoop:
			HIB1 AB 3 Bright
		Loop
		Death:
			TNT1 A 0 A_SetTranslucent(0.75, 1)
			TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
			TNT1 A 0 A_SpawnItemEx("YellowParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 A 0 A_SpawnItemEx ("SunFlare", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			HIB1 C 3 Bright
			HIB1 DEFG 3 Bright
		stop
	}
}