Actor DreamingGod : DnD_BaseEnemy {
	tag "The Dreaming God"
	obituary "%o was disintegrated for gazing upon The Dreaming God."
	health 12500
	radius 40
	height 110
	ProjectilePassHeight 160
	mass 2400
	speed 5
	painchance 4
	seesound "Dreamer/See"
	painsound "Dreamer/See"
	deathsound "Dreamer/Die"
	activesound "Dreamer/Act"
	DropItem "SoulAmmoSpawner", 128
	Species "Cyber"
	DamageFactor "Cyber", 0.0
	DamageFactor "CyberEnergy", 0.0
	DamageFactor "CyberExp", 0.0
	DamageFactor "CyberBullet", 0.0
	DamageFactor "CyberFire", 0.0
	DamageFactor "CyberLightning", 0.0
	DamageFactor "CyberIce", 0.0
	DamageFactor "CyberSlow", 0.0
	DamageFactor "CyberGreen", 0.0
	DamageFactor "CyberGreenExp", 0.0
	Scale 1.0
	MONSTER
	+FLOORCLIP
	+BOSS
	+QUICKTORETALIATE
	+MISSILEMORE
	+NOINFIGHTING
	+USEKILLSCRIPTS
	+NORADIUSDMG
	+NOTARGET
	+DONTBLAST
	+LOOKALLAROUND
	const int dreamer_burn = 3;
	RadiusDamageFactor 0.5
	states {
		Spawn:
			TNT1 A 0 NoDelay A_GiveInventory("MakeMagicImmune", 1)
			TNT1 A 0 A_GiveInventory("MakeElementalImmune", 1)
			TNT1 A 0 A_GiveInventory("MakeHardenedSkin", 1)
			TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_DREAMER, 0, DND_LEGENDARY)
			TNT1 A 0 ACS_NamedExecuteAlways("DND Dreamer Burn", 0, dreamer_burn * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale")))
		Idle:
			TCHR A 10 A_Look
		loop
		See:
			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
			TNT1 A 0 A_PlaySound("Dreamer/Hoof")
			TNT1 A 0 A_SpawnItemEx("DreamerStomp")
		loop
		Missile:
			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
			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
		Pain:
			TNT1 A 0 A_JumpIfHealthLower(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
		Death:
			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(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 20
	RENDERSTYLE ADD
	damage (32 * random(4, 5) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	PROJECTILE
	+DONTSPLASH
	+DONTBLAST
	+DONTREFLECT
	DamageType "Explosives"
	deathsound "Cerberus/Explode"
    alpha 0.75
	states {
		Spawn:
			TROK AAAA 1 bright A_SpawnItem ("TfireTrail",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItem("TFlyFX")
			TROK BBBB 1 bright A_SpawnItem ("TfireTrail",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItem("TFlyFX")
			TROK CCCC 1 bright A_SpawnItem ("TfireTrail",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItem("TFlyFX")
			TROK DDDD 1 bright A_SpawnItem ("TfireTrail",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItem("TFlyFX")
			TROK EEEE 1 bright A_SpawnItem ("TfireTrail",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItem("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 AA 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItem("TFlyFX")
			TROK AA 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItem("TFlyFX")
			TROK BB 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItem("TFlyFX")
			TROK BB 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItem("TFlyFX")
			TROK CC 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItem("TFlyFX")
			TROK CC 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItem("TFlyFX")
			TROK DD 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItem("TFlyFX")
			TROK DD 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItem("TFlyFX")
			TROK EE 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItem("TFlyFX")
			TROK EE 1 bright A_SpawnItem ("TfireTrail2",random(-2,-1),0+random(-1,1),0,0)
			TNT1 A 0 A_SpawnItem("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.075)
		Loop
		Other:
			TMIS B 1 A_FadeOut(0.075)
		Loop
	}
}

Actor TchernobogExplosion : BaseExplosionDamage {
	DamageType "Explosives"
	States {
		Spawn:
			TNT1 A 8 NoDelay A_Explode(192 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 160, 0)
			TNT1 AAAAAA 4 A_Explode(32 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 160, 0)
		Stop
	}
}

Actor DreamerStomp {
	+DONTSPLASH
	+PAINLESS
	+NOTIMEFREEZE
	+BLOODLESSIMPACT
	+NODAMAGETHRUST
	+DONTBLAST
	Radius 1
	Height 1
	Damage 0
	DamageType "Physical"
	Obituary "%o got too close to The Dreaming God."
    States {
		Spawn:
			TNT1 A 1
			TNT1 A 1 A_Explode(128 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 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
		stop
	}
}

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

Actor DreamerDamager {
	Height 1
	Radius 1
	DamageType "DreamerBurner"
	+NOGRAVITY
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(2 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 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 "CyberExp"
	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 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 128, 0)
			TNT1 A 0 A_SpawnItem("TFlyFX", 0, 32)
			TEX2 A 2 Bright A_Explode(24 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 128, 0)
			TNT1 A 0 A_SpawnItem("TFlyFX", 0, 32)
			TEX2 B 2 Bright A_Explode(48 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 128, 0)
			TNT1 A 0 A_SpawnItem("TFlyFX", 0, 32)
			TEX2 B 2 Bright A_Explode(48 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 128, 0)
			TNT1 A 0 A_SpawnItem("TFlyFX", 0, 32)
			TEX2 C 2 Bright A_Explode(96 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 128, 0)
			TNT1 A 0 A_SpawnItem("TFlyFX", 0, 32)
			TEX2 C 2 Bright A_Explode(96 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 128, 0)
		Death:
			TNT1 A 0 A_Stop
			TEX2 DEFGHIJKL 3 Bright A_Explode(128 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 128, 0)
		Stop
	}
}

Actor TchernoCorpseExplosion : TchernoExplosion {
	-FLOORHUGGER
	Speed 0
}

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 "Magic"
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(36 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 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 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	Speed 40
	seesound "Dreamer/Blast"
	deathsound "Dreamer/BlastExp"
	DamageType "Magic"
	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 2 Bright A_BishopMissileWeave
			TNT1 A 0 A_SpawnItem("SplitTrail_A", 0, 16)
			TNT1 AA 0 A_BishopMissileWeave
			EYEB B 2 Bright A_BishopMissileWeave
			TNT1 A 0 A_SpawnItem("SplitTrail_B", 0, 16)
			TNT1 AA 0 A_BishopMissileWeave
			EYEB C 2 Bright A_BishopMissileWeave
			TNT1 A 0 A_SpawnItem("SplitTrail_C", 0, 16)
			TNT1 AA 0 A_BishopMissileWeave			
			EYEB D 2 Bright A_BishopMissileWeave
			TNT1 A 0 A_SpawnItem("SplitTrail_D", 0, 16)
			TNT1 AA 0 A_BishopMissileWeave
		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 2 Bright A_BishopMissileWeave
			TNT1 A 0 A_SpawnItem("SplitTrail_A", 0, 16)
			TNT1 AA 0 A_BishopMissileWeave
			EYEB B 2 Bright A_BishopMissileWeave
			TNT1 A 0 A_SpawnItem("SplitTrail_B", 0, 16)
			TNT1 AA 0 A_BishopMissileWeave
			EYEB C 2 Bright A_BishopMissileWeave
			TNT1 A 0 A_SpawnItem("SplitTrail_C", 0, 16)
			TNT1 AA 0 A_BishopMissileWeave			
			EYEB D 2 Bright A_BishopMissileWeave
			TNT1 A 0 A_SpawnItem("SplitTrail_D", 0, 16)
			TNT1 AA 0 A_BishopMissileWeave
		Loop
	}
}

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

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

Actor SplitParticle5 : SplitParticle1
{
	States
	{
		Spawn:
			TNT1 AAAAAAAAAAAAAAAAAAAA 0 A_BishopMissileWeave
		SpawnLoop:
			EYEB A 2 Bright A_BishopMissileWeave
			TNT1 A 0 A_SpawnItem("SplitTrail_A", 0, 16)
			TNT1 AA 0 A_BishopMissileWeave
			EYEB B 2 Bright A_BishopMissileWeave
			TNT1 A 0 A_SpawnItem("SplitTrail_B", 0, 16)
			TNT1 AA 0 A_BishopMissileWeave
			EYEB C 2 Bright A_BishopMissileWeave
			TNT1 A 0 A_SpawnItem("SplitTrail_C", 0, 16)
			TNT1 AA 0 A_BishopMissileWeave			
			EYEB D 2 Bright A_BishopMissileWeave
			TNT1 A 0 A_SpawnItem("SplitTrail_D", 0, 16)
			TNT1 AA 0 A_BishopMissileWeave
		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 A_RadiusGive("CorpseExploder", 512, RGF_CORPSES, 1)
		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 CorpseExploder : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_CustomMissile("TchernoCorpseExplosion")
		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 (5 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET))) 
	DamageType "Magic"
	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 "Magic"
	+FORCERADIUSDMG
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(48 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 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 5 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)
			LLSS A 5 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)
			LLSS A 5 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)
			LLSS A 5 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)
			LLSS A 5 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)
			LLSS A 5 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)
			LLSS A 5 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_SpawnItem("TchernoLightningExplosion")
			TNT1 A 0 A_SpawnItem("TchernoLightningFX")
			TNT1 A 0 A_CountDown
			TNT1 A 0 A_SetUserVar("user_phase", -user_phase)
		Loop
	}
}

Actor Torrasque : DnD_BaseEnemy {
	obituary "%o got smashed by the Torrasque."
	health 9500
	radius 32
	height 96
	mass 1000
	speed 10
	painchance 32
	seesound "Torrasque/See"
	painsound "Torrasque/Pain"
	deathsound "Torrasque/Die"
	activesound "Torrasque/Act"
	meleerange 90
	DamageFactor "Cyber", 0.0
	DamageFactor "CyberEnergy", 0.0
	DamageFactor "CyberExp", 0.0
	DamageFactor "CyberBullet", 0.0
	DamageFactor "CyberFire", 0.0
	DamageFactor "CyberLightning", 0.0
	DamageFactor "CyberIce", 0.0
	DamageFactor "CyberSlow", 0.0
	DamageFactor "CyberGreen", 0.0
	DamageFactor "CyberGreenExp", 0.0
	Tag "Torrasque"
	Scale 1.35
	MONSTER
	Species "HK"
	var int user_wait;
	var int user_charge;
	const int wait_count = 8;
	Damage (16 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale")))
	RadiusDamageFactor 0.5
	+NOBLOOD
	+DONTRIP
	+BOSS
	+DONTHURTSPECIES
	+NORADIUSDMG
	+DONTBLAST
	+USEKILLSCRIPTS
	+DONTBLAST
	+NOTARGET
	+NOINFIGHTING
	+MISSILEMORE
	+QUICKTORETALIATE
	+LOOKALLAROUND
	States {
		Spawn:
			TNT1 A 0 NoDelay Thing_ChangeTID(0, DND_TORRASQUE_TID)
			TNT1 A 0 A_GiveInventory("MakePhysicalResist", 1)
			TNT1 A 0 A_GiveInventory("ExplosiveResist", 1)
			TNT1 A 0 A_GiveInventory("MakeEnergyResist", 1)
			TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_TORRASQUE, 0, DND_LEGENDARY)
		Idle:
			DNB2 A 5 A_Look
		loop
		See:
			TNT1 A 0 A_ChangeFlag("SKULLFLY", 0)
			TNT1 A 0 A_UnsetReflectiveInvulnerable
			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
			TNT1 A 0 A_PlaySound("Torrasque/Step")
		loop
		FastMode:
			TNT1 A 0 A_ChangeFlag("ALWAYSFAST", 1)
			TNT1 A 0 A_GiveInventory("DnD_Boolean", 1)
		Goto SeeFast
		Melee:
			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 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale")), "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 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale")), "weapons/vblhit", "weapons/vblswg", "Knockback")
		Goto See
		Missile:
			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 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale")), "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")
			TNT1 A 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 A_SetInvulnerable
			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")
			TNT1 A 0 A_SetUserVar("user_charge", user_charge + 2)
		Loop
		Pain:
			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_SetReflectiveInvulnerable
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_SpawnItem("TorrasqueDeflectFX", 0, 48)
			DNB2 E 18 A_SetReflectiveInvulnerable
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_SpawnItem("TorrasqueDeflectFX", 0, 48)
			DNB2 E 18 A_SetReflectiveInvulnerable
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_SpawnItem("TorrasqueDeflectFX", 0, 48)
			DNB2 E 18 A_SetReflectiveInvulnerable
			TNT1 A 0 A_UnsetReflectiveInvulnerable
		Goto See
		Death:
			DNB2 R 24 Radius_quake(2,18,0,128,0)
			DNB2 I 4 A_Scream
			TNT1 AA 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
			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 AA 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
			DNB2 KL 4
			TNT1 AA 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
			DNB2 MOP 3
			TNT1 AA 0 A_SpawnItem("NashGore_GibGenerator",0,0,0,0)
			DNB2 Q -1 A_KillMaster
		Stop
	}
}

actor TorrasqueBash : PaladinBash {
	radius 5
	height 5
	speed 28
	DamageType "Physical"
	damage (12 * random(2, 4) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	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 A_Blast(0, 4, 48, 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 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	DamageType "Physical"
	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 2
			TEND A 20
		Stop
	}
}

Actor TorrasqueGrabber {
	Speed 36
	Height 14
	Radius 10
	PROJECTILE
	Damage (9 * random(3, 5) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	MaxStepHeight 4
	SeeSound "Torrasque/HookGo"
	DamageType "LegendaryPhysicalSnare"
	States {
		Spawn:
			OCLW A 1 
			TNT1 A 0 A_SpawnItem("TorrasqueGrabberTrail", -8, 2)
			TNT1 A 0 A_SpawnItem("TorrasqueGrabberTrail", 0, 2)
			TNT1 A 0 A_SpawnItem("TorrasqueGrabberTrail", -16, 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_BaseEnemy {
	tag "Mordecqai"
	obituary "%o couldn't stand against the might of Mordecqai."
	health 10000
	radius 40
	height 110
	ProjectilePassHeight 160
	mass 2400
	speed 4
	painchance 0
	seesound "Mordecqai/See"
	deathsound "Mordecqai/Die"
	activesound ""
	DropItem "SoulAmmoSpawner", 128
	Species "Cyber"
	DamageFactor "Cyber", 0.0
	DamageFactor "CyberEnergy", 0.0
	DamageFactor "CyberExp", 0.0
	DamageFactor "CyberBullet", 0.0
	DamageFactor "CyberFire", 0.0
	DamageFactor "CyberLightning", 0.0
	DamageFactor "CyberIce", 0.0
	DamageFactor "CyberSlow", 0.0
	DamageFactor "CyberGreen", 0.0
	DamageFactor "CyberGreenExp", 0.0
	Scale 1.25
	MONSTER
	const int flame_timer = 24;
	const int seeker_count = 12;
	const int spread_factor = 6;
	const int flame_dist = 768;
	const int ang_inc = 20;
	var int user_count;
	BloodColor "FF A5 00"
	RadiusDamageFactor 0.5
	+FLOORCLIP
	+BOSS
	+QUICKTORETALIATE
	+MISSILEMORE
	+NOINFIGHTING
	+USEKILLSCRIPTS
	+NORADIUSDMG
	+NOTARGET
	+NOPAIN
	+DONTBLAST
	+MISSILEMORE
	+LOOKALLAROUND
	States {
		Spawn:
			TNT1 A 0 NoDelay A_GiveInventory("MakeFireImmune", 1)
			TNT1 A 0 A_GiveInventory("MakeHardenedSkin", 1)
			TNT1 A 0 A_GiveInventory("MakeExplosiveFullImmune", 1)
			TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_MORDECQAI, 0, DND_LEGENDARY)
		Idle:
			MORD A 10 A_Look
		loop
		See:
			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
		Missile:
			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:
			TNT1 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
		Death:
			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 "LegendaryPhysical"
	Obituary "%o got too close to Mordecqai."
    States {
		Spawn:
			TNT1 A 1
			TNT1 A 1 A_Explode(128 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 128, 0)
		Stop	
	}
}

Actor MordecqaiFlameExplosion : BaseExplosionDamage {
	DamageType "Fire"
	+NODAMAGETHRUST
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(2 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 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 34
	damagetype "Fire"
	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_CustomMissile("ExplosionFX1", 0, 0, random(0,360), 2, random(0,360))
			TNT1 AAA 1 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
		stop
	}
}

Actor MordecqaiSeeker {
	PROJECTILE
	Damage (15 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	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 ABAB 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"
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(32 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 96, 0, 0, 64)
		Stop
	}
}

Actor MordecqaiLightning {
	Projectile
	Damage (0)
	DamageType "Lightning"
	Speed 24
	Height 16
	Radius 8
	Renderstyle Add
	Alpha 0.875
	+THRUACTORS
	+NODAMAGETHRUST
	+DONTBLAST
	ActiveSound "Mordecqai/Buzz"
	DeathSound "Mordecqai/BuzzHit"
	Scale 0.675
	const int mball_inc = 15;
	States {
		Spawn:
			MORZ A 3 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 3 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 3 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 3 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 3 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 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	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 : MechanicalEnemy {
	tag "God Slayer"
	obituary "%o saw UAC's biggest invention gone rogue and that was it."
	health 9000
	radius 40
	height 110
	ProjectilePassHeight 160
	mass 0x7fffffff
	speed 10
	painchance 0
	seesound "GodSlayer/See"
	deathsound ""
	activesound "GodSlayer/Act"
	Species "Cyber"
	DamageFactor "Cyber", 0.0
	DamageFactor "CyberEnergy", 0.0
	DamageFactor "CyberExp", 0.0
	DamageFactor "CyberBullet", 0.0
	DamageFactor "CyberFire", 0.0
	DamageFactor "CyberLightning", 0.0
	DamageFactor "CyberIce", 0.0
	DamageFactor "CyberSlow", 0.0
	DamageFactor "CyberGreen", 0.0
	DamageFactor "CyberGreenExp", 0.0
	Scale 1.25
	MONSTER
	var int user_attack;
	var int user_charge;
	var int user_chargerpt;
	const int attack_on_flight_dist = 224;
	RadiusDamageFactor 0.5
	+NOBLOOD
	+FLOORCLIP
	+BOSS
	+QUICKTORETALIATE
	+MISSILEMORE
	+NOINFIGHTING
	+USEKILLSCRIPTS
	+NORADIUSDMG
	+NOTARGET
	+NOPAIN
	+DONTBLAST
	+MISSILEMORE
	+MISSILEEVENMORE
	+LOOKALLAROUND
	States {
		Spawn:
			TNT1 A 0 NoDelay A_GiveInventory("MakePhysicalImmune", 1)
			TNT1 A 0 A_GiveInventory("MakeHardenedSkin", 1)
			TNT1 A 0 A_GiveInventory("MakeExplosiveHighResist", 1)
			TNT1 A 0 ACS_ExecuteAlways(DND_MONSTERSCALESCRIPT, 0, DND_GODSLAYER, 0, DND_LEGENDARY)
		Idle:
			ROB4 A 10 A_Look
		Loop
	    See:
			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
		Missile:
			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)
			TNT1 A 0 A_JumpIf(user_chargerpt == 5, "StopCharge")
		Goto See
		StopCharge:
			TNT1 A 0 A_TakeInventory("DnD_Boolean", 1)
			ROB4 K 12
		Goto See
		Death:
			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"
	Obituary "%o got too close to God Slayer."
    States {
		Spawn:
			TNT1 A 1
			TNT1 A 1 A_Explode(128 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 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 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 160, 0)
		Stop
	}
}

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

Actor InquisitorExplosion : BaseExplosionDamage {
	DamageType "Physical"
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(64 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 128, 0)
		Stop
	}
}

Actor InquisitorExplosion2 : BaseExplosionDamage {
	DamageType "CyberExp"
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(128 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 192, 0, 1, 64)
		Stop
	}
}

Actor InquisitorExplosion3 : BaseExplosionDamage {
	DamageType "CyberExp"
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(192 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 256, 0, 1, 128)
		Stop
	}
}

Actor GodSlayerBulletExp : BaseExplosionDamage {
	DamageType "CyberExp"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(28 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)), 96, 0)
		Stop
	}
}

Actor GodSlayerBullet : ZombieBullet {
	Damage (random(3, 4) * 5 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	DamageType "Cyber"
	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) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	DamageType "Physical"
	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 * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	DamageType "CyberExp"
	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("InquisitorExplosion3")
			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) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	+NODAMAGETHRUST
	+DONTBLAST
	var int user_counter;
	DamageType "CyberEnergy"
	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:
			TNT1 A 0 A_SetUserVar("user_counter", 0)
			TWAV AB 8 Bright
		Iterate:
			TNT1 A 0 A_JumpIf(ceilingz - z < 16, "MakeLower") // Ensure ring spawns even on ceiling hits
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", 0, 0, user_counter  * 3.0, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		Skip:
			TNT1 A 0 A_SetUserVar("user_counter", user_counter + 1)
			TNT1 A 0 A_JumpIf(user_counter == 120, "Continue")
		Goto Iterate
		MakeLower:
			TNT1 A 0 A_CustomMissile("MaulerTorpedoWaveInq", -16, 0, user_counter  * 3.0, CMF_AIMDIRECTION | CMF_TRACKOWNER)
		Goto Skip
		Continue:
			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) * (1.0 + ACS_NamedExecuteWithResult("DND Monster Damage Scale", DND_USETARGET)))
	DamageType "CyberEnergy"
	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
}