Actor Corpulent : DnD_BaseRangedMonster {
	Health 0x7FFFFFFF
	Radius 48
	Height 64
	Speed 12
	Scale 1.1
	PainChance 48
	Mass 1500
	SeeSound "Hectebus/Sight"
	PainSound "Hectebus/Pain"
	DeathSound "Hectebus/Death"
	ActiveSound "Hectebus/Active"
	+ISMONSTER
	+MissileMore
	Species "Fatso"
	+DONTHURTSPECIES
	+NOINFIGHTING
	Obituary "%o was cremated by a Corpulent."
	Tag "Corpulent"
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_CORPULENT)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_RARE1)
		Goto SpawnSetup
	
		IdleState:
			FAT2 AB 8 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			FAT2 ABCDEF 6 Fast A_Chase
		Goto See
		MissileState:
			TNT1 A 0 A_JumpIfCloser(384, "Missile2")
			FAT2 G 0 A_PlaySoundEx("Hectebus/Attack", "SoundSlot6", 0)
			FAT2 GGGG 3 Fast A_FaceTarget
			FAT2 V 4 Fast Bright A_CustomMissile("Ripper1Corpulent", 24, 41, 0)
			FAT2 IGG 3 Fast A_FaceTarget
			FAT2 K 0 A_SpidReFire
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			FAT2 U 4 Fast Bright A_CustomMissile("Ripper1Corpulent", 24, -41, 0)
			FAT2 GI 3 Fast A_FaceTarget
			FAT2 I 0 A_Jump(96, 2)
			FAT2 I 0 A_SpidReFire
		Goto MissileState + 7
			FAT2 I 0
		Goto See
		Missile2:
			FAT2 GGGG 3 Fast A_FaceTarget
			FAT2 H 0 Bright A_CustomMissile("Ripper1Corpulent", 24, 41, Random(-4, 2))
			FAT2 H 4 Fast Bright A_CustomMissile("Ripper1Corpulent", 24, -41, Random(-2, 4))
			FAT2 IGG 4 Fast A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			FAT2 H 0 Bright A_CustomMissile("Ripper1Corpulent", 24, 41, Random(-4, 2))
			FAT2 H 4 Fast Bright A_CustomMissile("Ripper1Corpulent", 24, -41, Random(-2, 4))
			FAT2 IGG 4 Fast A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			FAT2 H 0 Bright A_CustomMissile("Ripper1Corpulent", 24, 41, Random(-4, 2))
			FAT2 H 4 Fast Bright A_CustomMissile("Ripper1Corpulent", 24, -41, Random(-2, 4))
			FAT2 GI 4 Fast A_FaceTarget
			FAT2 I 0 A_Jump(200, 2)
			FAT2 I 0 A_SpidReFire
		Goto Missile2
			FAT2 I 0
		Goto See
		PainState:
			FAT2 J 10 Fast A_Pain
			FAT2 J 0 A_Jump(64, "PainFast")
		Goto See
		PainFast:
			FAT2 J 4 Fast
		Goto Missile
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			FAT2 K 6 A_Scream
			FAT2 L 6
			FAT2 M 6
			FAT2 N 6
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Medium_Delayed", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			FAT2 O 6
			FAT2 P 6 A_Fall
			FAT2 Q 6
			FAT2 R 6
			FAT2 S 6
			FAT2 T -1 A_KillMaster
		Stop
		RaiseState:
			FAT2 SRQPONMLK 6
		Goto See
	}
}

Actor CorpulentExp : BaseExplosionDamage {
	DamageType "Explosive"
	Stamina 4
	Obituary "%o was cremated by a Corpulent."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(12, 84, 0)
		Stop
	}
}

ACTOR Ripper1Corpulent {
	Radius 8
	Height 8
	Speed 28
	Damage (8*random(2,4))
	DamageType "Physical"
	Stamina 1
	PROJECTILE
	+FORCEXYBILLBOARD
	+FORCERADIUSDMG
	+FOILINVUL
	+THRUGHOST
	Seesound "weapons/macefi"
	DeathSound "weapons/maceex"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			RIP1 AAABBBCCC 1 Bright A_SpawnItemEx("RedPuff",0,0,0,0,0,0,0,8)
		Loop
		Death:
			RIP1 D 0 Bright A_SetTranslucent (0.75,1)
			RIP1 D 1 Bright A_SpawnItem("CorpulentExp")
			RIP1 D 0 Bright A_SpawnItemEx("Ripper2Corpulent",0,0,0,32,0,0,0,SXF_TRANSFERPOINTERS,0)
			RIP1 D 0 Bright A_SpawnItemEx("Ripper2Corpulent",0,0,0,32,0,0,60,SXF_TRANSFERPOINTERS,0)
			RIP1 D 0 Bright A_SpawnItemEx("Ripper2Corpulent",0,0,0,32,0,0,120,SXF_TRANSFERPOINTERS,0)
			RIP1 D 0 Bright A_SpawnItemEx("Ripper2Corpulent",0,0,0,32,0,0,180,SXF_TRANSFERPOINTERS,0)
			RIP1 D 0 Bright A_SpawnItemEx("Ripper2Corpulent",0,0,0,32,0,0,240,SXF_TRANSFERPOINTERS,0)
			RIP1 D 0 Bright A_SpawnItemEx("Ripper2Corpulent",0,0,0,32,0,0,300,SXF_TRANSFERPOINTERS,0)
			RIP1 DEFGH 3 Bright
		stop
	}
}

ACTOR Ripper2Corpulent {
	Radius 5
	Height 5
	Speed 24
	Damage (2)
	DeathSound "weapons/firex2"
	DamageType "Physical"
	Stamina 1
	PROJECTILE
	+RIPPER
	+FORCEXYBILLBOARD
	+FOILINVUL
	+THRUGHOST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			RIP2 AAABBB 1 Bright A_SpawnItemEx("Ripper2Trail")
		Loop
		Death:
			RIP2 C 0 Bright A_SetTranslucent (0.67,1)
			RIP2 CDEFG 3 Bright
		stop
	}
}

Actor Daedabus : DnD_BaseRangedMonster {
	Health 0x7FFFFFFF
	Radius 48
	Height 64
	Mass 1000
	Speed 8
	PainChance 64
	Scale 1.07
	BloodColor "73 00 00"
	SeeSound "Daedabus/Sight"
	PainSound "Daedabus/Pain"
	DeathSound "Daedabus/Death"
	ActiveSound "Daedabus/Active"
	Species "Fatso"
	+ISMONSTER
	+DONTHURTSPECIES
	Obituary "%o was torched by a Daedabus."
	Tag "Daedabus"
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_DAEDABUS)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_UNCOMMON)
		Goto SpawnSetup
	
		IdleState:
			DAED AB 15 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			DAED AABBCCDDEEFF 4 Fast A_Chase
		Goto See
		PainState:
			DAED J 3 Fast
			DAED J 3 Fast A_Pain
		Goto See
		MissileState:
			DAED G 0 A_PlaySound("Daedabus/Attack")
			DAED G 20 Fast A_FaceTarget
			DAED H 0 A_CustomMissile("DaedFire",28,0,5.625)
			DAED H 0 A_CustomMissile("DaedFire",28,0,0)
			DAED H 0 A_CustomMissile("DaedFire",28,0,-5.625)
			DAED H 10 Fast BRIGHT
			DAED IG 5 Fast A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			DAED H 0 A_CustomMissile("DaedFire",28,0,5.625)
			DAED H 0 A_CustomMissile("DaedFire",28,0,0)
			DAED H 0 A_CustomMissile("DaedFire",28,0,-5.625)
			DAED H 10 Fast BRIGHT
			DAED IG 5 Fast A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			DAED H 0 A_CustomMissile("DaedFire",28,0,11.25)
			DAED H 0 A_CustomMissile("DaedFire",28,0,5.625)
			DAED H 0 A_CustomMissile("DaedFire",28,0,0)
			DAED H 0 A_CustomMissile("DaedFire",28,0,-5.625)
			DAED H 0 A_CustomMissile("DaedFire",28,0,-11.25)
			DAED H 10 Fast BRIGHT
			DAED IG 5 Fast A_FaceTarget
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState: 
			DAED K 6
			DAED L 6 A_Scream
			DAED M 6 A_NoBlocking
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Medium_Delayed", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			DAED NOPQRS 6
			DAED T -1 A_KillMaster
		Stop
		RaiseState:
			DAED RQPONMLK 5
		Goto See
	}
}

Actor DaedExp : BaseExplosionDamage {
	DamageType "Fire"
	Stamina 32
	Obituary "%o was torched by a Daedabus."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(8, 72, 0)
		Stop
	}
}

ACTOR DaedFire : FatShot {
	Speed 22
	Damage (random(48, 96))
	DamageType "Fire"
	Stamina 32
	PROJECTILE
	RENDERSTYLE ADD
	ALPHA 0.96
	Decal Scorch
	+THRUGHOST
	+DONTBLAST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			DAEF AAAA 1 BRIGHT A_SpawnItemEx("DaedTrail", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 A 0 A_SpawnItem("DaedExp")
			DAEF BBBB 1 BRIGHT A_SpawnItemEx("DaedTrail", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 A 0 A_SpawnItem("DaedExp")
		Loop
		Death:
			TNT1 A 0 A_SpawnItemEx("OrangeParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 AAA 0 A_SpawnItemEx("ExplosionFX2", 0, 0, 0, frandom(-1, 1), frandom(-1, 1), frandom(-1, 1))
			TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
			DAEF C 8
			DAEF D 6
			DAEF E 4
		Stop
	}
}

Actor DaedTrail {
	Scale 0.65
	RenderStyle Add
	Alpha 0.5
	+NoInteraction
	+CLIENTSIDEONLY
	States {
		Spawn:
			DAET ABCDE 2 Bright
		Stop
	}
}

actor IceFatso : DnD_BaseRangedMonster {
	obituary "%o was shatterred by an Ice Mancubus."
	Health 0x7FFFFFFF
	radius 48
	height 64
	mass 1000
	speed 8
	painchance 80
	seesound "fatso/sight"
	painsound "fatso/pain"
	deathsound "fatso/death"
	activesound "fatso/active"
	Tag "Ice Mancubus"
	Species "Fatso"
	+ISMONSTER
	+DONTHURTSPECIES
	Translation "1:2=109:110", "13:15=107:109", "17:18=87:88", "48:53=4:4", "53:79=80:106", "112:125=192:202", "128:143=90:111", "144:151=100:107", "209:213=81:89", "236:239=107:109"
	states {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_ICEFATSO)
		Goto SpawnSetup
	
		IdleState:
			FATT AB 15 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			FATT AABBCCDDEEFF 4 A_Chase
		Goto See
		MissileState:
			FATT G 20 Fast A_FatRaise
			FATI H 0 bright A_CustomMissile("IceFatBall" ,20,20 ,-10,1,0)
			FATT H 10 Fast bright A_CustomMissile("IceFatBall",20,-20,0  ,1,0)
			FATT IG 5 Fast A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			FATI H 0 bright A_CustomMissile("IceFatBall" ,20,20 ,0  ,1,0)
			FATT H 10 Fast bright A_CustomMissile("IceFatBall",20,-20,10 ,1,0)
			FATT IG 5 Fast A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			FATI H 0 bright A_CustomMissile("IceFatBall" ,20 ,20,-10,1,0)
			FATT H 10 Fast bright A_CustomMissile("IceFatBall",20,-20 ,10,1,0)
			FATT IG 5 Fast A_FaceTarget
		goto See
		PainState:
			FATT J 3
			FATT J 3 A_Pain
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			FATT K 6
			FATT L 6 A_Scream
			FATT M 6 A_NoBlocking
			FATT N 6
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Medium_Delayed", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			FATT OPQRS 6
			FATT T -1 A_KillMaster
		Stop
		RaiseState:
			FATT R 5
			FATT QPONMLK 5
		Goto See
	}
}


actor IceFatBall {
	Radius 6
	Height 8
	Speed 20
	Damage (random(30,60))
	+DONTBLAST
	+THRUGHOST
	DamageType "Ice"
	Stamina 64
	RenderStyle Add
	Alpha 1
	Projectile
	SeeSound "fatso/attack"
	DeathSound "fatso/shotx"
	states {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			TNFX AB 2 bright A_SpawnItemEx("IceFatBallTrail",0,0,0,0,0,0,0,128)
			TNFX CD 2 bright A_SpawnItemEx("IceFatBallTrail",0,0,0,0,0,0,0,128)
		loop
		Death:
			TNT1 A 0 A_SpawnItemEx("BlueParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
			TNFX EFGHIJK 4 bright
		stop
	}
}

actor IceFatBallTrail {
	Radius 6
	Height 8
	RenderStyle Add
	Projectile
	-ACTIVATEPCROSS
	-ACTIVATEIMPACT
	+SPAWNSOUNDSOURCE
	+CLIENTSIDEONLY
	states {
		Spawn:
			TNFX ABCD 3 bright
		goto death
		Death:
			TNFX D 1 bright A_SetTranslucent(0.5)
			TNFX A 1 bright A_SetTranslucent(0.4)
			TNFX B 1 bright A_SetTranslucent(0.3)
			TNFX C 1 bright A_SetTranslucent(0.2)
			TNFX D 1 bright A_SetTranslucent(0.1)
		stop
	}
}

Actor Mafibus : DnD_BaseRangedMonster {
	Health 0x7FFFFFFF
	Radius 48
	Height 64
	Mass 1000
	Speed 8
	PainChance 20
	Scale 1.15
	SeeSound "Mafibus/See"
	PainSound "Mafibus/Pain"
	DeathSound "Mafibus/Death"
	ActiveSound "Mafibus/Act"
	+ISMONSTER
	+DontHurtSpecies
	Species "Fatso"
	+MissileMore
	+NORADIUSDMG
	Obituary "%o was melted to slag by a Mafibus!"
	Tag "Mafibus"
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_MAFIBUS)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_RARE1)
		Goto SpawnSetup
	
		IdleState:
			MFBS AAAAAAAAAAAAAAABBBBBBBBBBBBBBB 1 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			MFBS A 0 A_TakeInventory("MafibusChecker", 3)
			MFBS AABBCCDDEEFF 4 Fast A_Chase
		Goto See
		PainState:
			MFBS J 3 Fast
			MFBS J 3 Fast A_Pain
		Goto See
		MissileState:
			MFBS G 0 A_PlaySound("Daedabus/Attack")
			MFBS GGGG 5 Fast A_FaceTarget
			MFBS G 0 A_Jump(256, "Fire4", "Fire5", "Fire6")
		Fire4:
			MFBS G 0 A_JumpIfInventory("MafibusChecker", 3, "See")
			MFBS H 0 A_GiveInventory("MafibusChecker", 1)
			MFBS H 0 A_PlayWeaponSound("Mafibus/Fire")
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			MFBS H 0 A_CustomMissile("MafibusBall", 24, 29, 0)
			MFBS H 0 A_CustomMissile("MafibusBall", 24, 29, -5.635)
			MFBS H 0 A_CustomMissile("MafibusBall", 24, -29, 5.635)
			MFBS H 10 Fast A_CustomMissile("MafibusBall", 24, -29, 0)
			MFBS IG 5 Fast A_FaceTarget
		Goto MissileState + 5
		Fire5:
			MFBS G 0 A_JumpIfInventory("MafibusChecker", 3, "See")
			MFBS H 0 A_GiveInventory("MafibusChecker", 1)
			MFBS H 0 A_Jump(128, "Fire52")
			MFBS H 0 A_PlayWeaponSound("Mafibus/Fire")
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			MFBS H 0 A_CustomMissile("MafibusBall", 28, -29, 11.25)
			MFBS H 0 A_CustomMissile("MafibusBall", 28, -29, 5.625)
			MFBS H 0 A_CustomMissile("MafibusBall", 28, 29, 0)
			MFBS H 0 A_CustomMissile("MafibusBall", 28, 29, -5.625)
			MFBS H 10 Fast A_CustomMissile("MafibusBall", 28, 29, -11.25)
			MFBS IG 5 Fast A_FaceTarget
		Goto MissileState + 5
		Fire52:
			MFBS H 0 A_PlayWeaponSound("Mafibus/Fire")
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			MFBS H 0 A_CustomMissile("MafibusBall", 28, -29, 11.25)
			MFBS H 0 A_CustomMissile("MafibusBall", 28, -29, 5.625)
			MFBS H 0 A_CustomMissile("MafibusBall", 28, -29, 0)
			MFBS H 0 A_CustomMissile("MafibusBall", 28, 29, -5.625)
			MFBS H 10 Fast A_CustomMissile("MafibusBall", 28, 29, -11.25)
			MFBS IG 5 Fast A_FaceTarget
		Goto MissileState + 5
		Fire6:
			MFBS G 0 A_JumpIfInventory("MafibusChecker", 3, "See")
			MFBS H 0 A_GiveInventory("MafibusChecker", 1)
			MFBS H 0 A_PlayWeaponSound("Mafibus/Fire")
			MFBS H 0 A_CustomMissile("MafibusBall", 28, 29, 0)
			MFBS H 0 A_CustomMissile("MafibusBall", 28, 29, -5.635)
			MFBS H 0 A_CustomMissile("MafibusBall", 28, 29, -11.25)
			MFBS H 0 A_CustomMissile("MafibusBall", 28, -29, 5.635)
			MFBS H 0 A_CustomMissile("MafibusBall", 28, -29, 11.25)
			MFBS H 10 Fast A_CustomMissile("MafibusBall", 28, -29, 0)
			MFBS IG 5 Fast A_FaceTarget
		Goto MissileState + 5
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			MFBS K 6
			MFBS L 6 A_Scream
			TNT1 A 0 A_NoBlocking
			MFBS M 6
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Medium_Delayed", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			MFBS NOPQRS 6
			MFBS T -1 A_KillMaster
		Stop  
		RaiseState:
			MFBS TSRQPONMLK 5
		Goto See
   }
}

Actor MafibusChecker : Inventory { Inventory.MaxAmount 3 }

Actor MafibusBall {
	Radius 6
	Height 8
	Speed 22
	Damage (12 * random(1, 8))
	Scale 0.65
	Projectile
	DeathSound "Mafibus/Hit"
	Decal Scorch
	damagetype "Fire"
	Stamina 32
	+DONTBLAST
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			MFBL A 0 A_PlaySoundEx("Mafibus/Loop", "SoundSlot7", 1, -1)
			MFBL AAAABBBBCCCC 1 Bright A_SpawnItemEx("MafibusBallTrail", 0, 0, 0, 0, 0, 0, 0, 128)
		Loop
		Death:
			TNT1 A 0 A_SpawnItemEx("OrangeParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 AAAA 0 A_SpawnItemEx("ExplosionFX2", 0, 0, 0, frandom(-1, 1), frandom(-1, 1), frandom(-1, 1))
			TNT1 AAAAAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
			MFBL A 0 A_StopSoundEx("SoundSlot7")
			MFBL DE 4 Bright
			MFBL F 4 Bright A_SetTranslucent(0.7, 1)
			MFBL G 4 Bright A_SetTranslucent(0.4, 1)
			MFBL HI 4 Bright
		Stop
	}
}

Actor MafibusBallTrail {
	Projectile
	RenderStyle Add
	Alpha 0.2
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 1
			MFBT ABCDEFGHI 1 Bright
		Stop
	}
}

ACTOR Paladin : DnD_BaseHybridMonster {
	Health 0x7FFFFFFF
	Scale 1.15
	Radius 32
	Height 64
	Mass 1200 
	Speed 8
	PainChance 80
	Species "Fatso"
	+ISMONSTER
	+DontHarmClass
	+DontHarmSpecies
	+DontHurtSpecies
	+NOBLOOD
	Obituary "%o played dodgeball with a paladin and lost."
	HitObituary "A Paladin blew %o away."
	SeeSound "Paladin/Sight" 
	PainSound "Paladin/Pain" 
	DeathSound "Paladin/Death" 
	ActiveSound "Paladin/Active" 
	Tag "Paladin"
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_PALADIN)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_RARE2)
		Goto SpawnSetup

		IdleState:
			HPAL AB 10 A_GiveInventory("DnD_SightChecker", 1) 
        Loop 
		SeeState:
		   TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
		   HPAL AABB 3 Fast A_Chase
		   TNT1 A 0 A_PlaySound("monster/bruwlk")
		   HPAL CCDD 3 Fast A_Chase
		   TNT1 A 0 A_PlaySound("monster/bruwlk")
		   HPAL D 0 A_Jump(32, "SeeShield")
	    Goto See
		SeeShield:
		   TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_ISBLOCKING, -1, -1, -1)
		   HPAL EEFF 4 Fast A_Chase
		   TNT1 A 0 A_PlaySound("monster/bruwlk")
		   HPAL GGHH 4 Fast A_Chase
		   TNT1 A 0 A_PlaySound("monster/bruwlk")
		   HPAL H 0 A_Jump (64, "See")
	    Goto SeeShield
		MeleeState:
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
			HPAL MN 6 Fast A_FaceTarget
			TNT1 A 0 A_CustomMissile("PaladinBash")
			HPAL O 6 Fast A_CustomMeleeAttack(random(1, 10) * 4, "weapons/vblhit", "weapons/vblswg", "Knockback")
			HPAL O 0 A_Jump(128, "Missile")
		Goto See
		MissileState: //Shield attack; used if outside 720 map units
			TNT1 A 0 A_Jump(64, "Missile2")
			TNT1 A 0 A_JumpIfCloser(720, "Missile1")
		Goto Missile2
		Missile1: //Grenade used if target is within 768 map units
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
			TNT1 A 0 A_Jump(32, "Missile2") //Use shield attack anyway
			HPAL I 5 Fast A_FaceTarget
			TNT1 A 0 A_JumpIfCloser(360, "MissileLow")	//Don't lob the grenade if closer
			HPAL I 5 Fast A_FaceTarget						//than 360 map units
			TNT1 A 0 A_PlaySound("weapons/glauncherfiren", CHAN_WEAPON)
			HPAL J 4 Fast Bright A_CustomMissile("PaladinGrenadeThrust", 30, 16, 0)
			HPAL J 4 Fast Bright A_FaceTarget
			HPAL II 5 Fast A_FaceTarget
		Goto See
		MissileLow: //Low lob grenade for close targets
			HPAL I 5 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("weapons/glauncherfiren", CHAN_WEAPON)
			HPAL J 4 Fast Bright A_CustomMissile("PaladinGrenade", 30, 16, 0)
			HPAL J 4 Fast Bright A_FaceTarget
			HPAL II 5 Fast A_FaceTarget
		Goto See
		Missile2: //Shield attack
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_ISBLOCKING, -1, -1, -1)
			HPAL KK 5 Fast A_FaceTarget      
			HPAL L 4 Fast Bright A_CustomMissile("PaladinBall",32,0,0,0)
			HPAL KK 4 Fast A_FaceTarget      
			HPAL L 4 Fast Bright A_CustomMissile("PaladinBall",32,0,0,0)
			HPAL KK 4 Fast A_FaceTarget      
			HPAL L 4 Fast Bright A_CustomMissile("PaladinBall",32,0,0,0)
			HPAL KK 4 Fast A_FaceTarget      
			HPAL L 4 Fast Bright A_CustomMissile("PaladinBall",32,0,0,0)
			HPAL KK 4 Fast A_FaceTarget      
			HPAL L 4 Fast Bright A_CustomMissile("PaladinBall",32,0,0,0)
			HPAL KK 4 Fast A_FaceTarget  
			HPAL K 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
		Goto See
		PainState:
			HPAL P 3 Fast A_Pain
			TNT1 A 0 A_JumpIfCloser (512, "ClosePain")
			HPAL P 3 Fast
			TNT1 A 0 A_Jump (96, "See")
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_ISBLOCKING, -1, -1, -1)
			HPAL KKKKKKKKKKKKKKKKKKKK 3 A_FaceTarget
			HPAL K 0 A_Jump (160, "SeeShield")
			HPAL K 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
		Goto See
		ClosePain: //Less likely to raise shield when in grenading-range
			HPAL P 3
			TNT1 A 0 A_Jump (184, "See")
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_ISBLOCKING, -1, -1, -1)
			HPAL KKKKKKKKKKKKKKKKKKKK 3 A_FaceTarget
			HPAL K 0 A_Jump (48, "SeeShield")
			HPAL K 0 ACS_NamedExecuteWithResult("DnD Monster Trait Take", DND_ISBLOCKING, -1, -1, -1)
		Goto See
		DeathState:
			HPAL Q 7 A_Scream
			HPAL R 7 A_SpawnItemEx("PaladinShield", 0, 0, 25, 6, 0, 0, 60, SXF_SETMASTER|SXF_CLIENTSIDE)
			HPAL S 7
			HPAL T 7 A_NoBlocking
			HPAL UV 7
			HPAL W -1 A_KillMaster
		Stop
		XDeathState:
			HPLX A 6 A_Scream
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			TNT1 A 0 A_SpawnItemEx("PaladinShield", 0, 0, 25, 6, 0, 0, 60, SXF_SETMASTER|SXF_CLIENTSIDE)
			HPLX BBBCCCDDD 2 Bright A_SpawnItemEx("ExplosionFXSmall", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128)
			TNT1 A 0 A_NoBlocking
			HPLX EEE 2 Bright A_SpawnItemEx("ExplosionFXSmall", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128)
			HPLX FGH 6 Bright
			HPLX I 6
			HPLX J -1 A_KillMaster
		Stop 
		RaiseState: 
			HPAL W 5 A_KillChildren("Perish")
			HPAL VUTSRQ 5
		Goto See
	} 
}

Actor PaladinExplosion : BaseExplosionDamage {
	DamageType "Explosive"
	Stamina 4
	Obituary "A Paladin blew %o away."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(64, 96, 0)
		Stop
	}
}

ACTOR PaladinGrenade {
	Radius 8
	Height 8
	Speed 25
	Damage (5 * random(4, 6))
	Projectile
	-NOGRAVITY
	+GRENADETRAIL
	+THRUGHOST
	+FORCEXYBILLBOARD
	+DONTBLAST
	BounceType "Doom"
	Gravity 0.625
	DeathSound "weapons/ebonyexplode"
	BounceSound "weapons/grenadebounce"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			PGRN A 1 Bright A_SpawnItem("PaladinGrenadeTrail")
		Loop
		Death:
			TNT1 A 0 A_ChangeFlag ("NoGravity", 1)
			TNT1 A 0 A_Stop
			TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSmall", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			TNT1 AAAAA 0 A_CustomMissile("RocketSmoke", 0, 0, random(0, 360), 2, random(0, 180))
			TNT1 AAAAAAAA 0 A_CustomMissile("RocketSmoke", 0, 0, random(0, 360), 2, random(0, 360))
			TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 180))
			TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 AAAAAAAAA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random (0, 360), 2, random (0, 360))
			BAXP A 6 Bright A_SpawnItem("PaladinExplosion")
			BAXP BCDEF 2 Bright
		Stop
	}
}

Actor PaladinGrenadeThrust : PaladinGrenade {
	States {
		Spawn:
			TNT1 AA 0 ThrustThingZ(0, 16, 0, 0)
		Goto Super::Spawn
	}
}

Actor PaladinGrenadeTrail {
	Height 1
	Radius 1
	Renderstyle Add
	Alpha 0.67
	Speed 0
	+NOGRAVITY
	+NOTELEPORT
	+CLIENTSIDEONLY
	
	States {
		Spawn:
			TNT1 A 2
			FRB1 DEHG 2 Bright
		Stop
	}
}

ACTOR PaladinBall {
	Radius 6
	Height 8
	Speed 18
	Damage (8 * random(2, 4))
	DamageType "MagicalArmorCorrupt"
	Stamina 8
	Projectile
	RenderStyle Add
	Alpha 0.67
	+SeekerMissile
	+FORCEXYBILLBOARD
	+DONTBLAST
	SeeSound "weapons/boltfi"
	DeathSound "weapons/glahit"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			HPLB A 2 Bright A_SeekerMissile(2, 2)
			HPLB A 0 Bright A_SpawnItemEx("PaladinBallTrail",0,0,0,0,0,0,0,128)
			HPLB B 2 Bright A_SeekerMissile(2, 2)
			HPLB B 0 Bright A_SpawnItemEx("PaladinBallTrail",0,0,0,0,0,0,0,128)
			HPLB C 2 Bright A_SeekerMissile(2, 2)
			HPLB C 0 Bright A_SpawnItemEx("PaladinBallTrail",0,0,0,0,0,0,0,128)
			HPLB D 2 Bright A_SeekerMissile(2, 2)
			HPLB D 0 Bright A_SpawnItemEx("PaladinBallTrail",0,0,0,0,0,0,0,128)
		Loop
		Death:
			HPLB EFHIJ 3 Bright
		Stop
	}
}

actor PaladinBash {
	radius 5
	height 5
	speed 28
	DamageType "Physical"
	Stamina 1
	damage (5 * random(1, 2))
	deathsound "weapons/vblhit"
	PROJECTILE
	+HITTRACER
	+SEEKERMISSILE
	+DONTBLAST
	States {
		spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			TNT1 AA 1 A_SeekerMissile(90, 90, SMF_PRECISE)
			stop
		death:
			TNT1 A 0 A_Quake(4, 17, 0, 256)
			TNT1 A 1 ACS_NamedExecuteWithResult("DnD Projectile Push", 20)
			TNT1 A 1
		stop
	}
}

Actor PaladinBallTrail {   
	Radius 3
	Height 3
	Scale 1
	Speed 0
	+NOGRAVITY
	+FORCEXYBILLBOARD
	RenderStyle Add
	Alpha 0.67
	+CLIENTSIDEONLY
	States {
		Spawn:
		TNT1 A 2 Bright
		HPLB KLMNOP 2 Bright
		Stop 
	}
}

ACTOR PaladinShield {
	Radius 8
	Height 8
	+CLIENTSIDEONLY
	States {
		Spawn:
			HPLS ABCDEFGH 3 A_CheckFloor("Ground")
		Loop
		Ground:
			HPLS I 2100 A_SetFloorClip
			HPLS I 5 A_FadeOut(0.1)
		Wait
		Death:
			TNT1 A 0 A_SpawnItemEx("PaladinShieldFade")
		Stop
	}
}

Actor PaladinShieldFade {
	Radius 8
	Height 8
	+CLIENTSIDEONLY
	States {
		Spawn:
			HPLS I 1
			HPLS I 1 A_FadeOut(0.01) 
		Wait
	}
}

actor Gamon : DnD_BaseHybridMonster {
	obituary "%o was shocked by a Gamon."
	Health 0x7FFFFFFF
	radius 28
	height 64
	mass 2048
	speed 8
	painchance 64
	Scale 1.12
	Renderstyle Translucent
	Alpha 1.0
	seesound "Veste/See"
	painsound "Veste/Pain"
	deathsound "Veste/Die"
	activesound "Veste/Act"
	Species "Fatso"
	var int user_count;
	Tag "Gamon"
	+ISMONSTER
	+NOBLOOD
	+DONTHURTSPECIES
	+DONTRIP
	+MISSILEMORE
	states {
		SetInfo:
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Gamon Shifter")
			TNT1 A 0 A_SetArg(4, DND_GAMON)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_VERYRARE)
		Goto SpawnSetup
		
		IdleState:
			VEST AB 10 A_GiveInventory("DnD_SightChecker", 1)
		loop
		SeeState:
			TNT1 A 0 A_ChangeFlag("NOPAIN", 0)
			TNT1 A 0 A_GiveInventory("GamonChecker", 1)
			VEST AABBCCDD 3 Fast A_Chase
		Goto See
		MeleeState:
		MissileState:
			TNT1 A 0 A_GiveInventory("GamonChecker", 1)
			TNT1 A 0 A_SetUserVar("user_count", 0)
		MissileLoop:
			TNT1 A 0 A_JumpIfInventory("GamonGhost", 1, "MissileLoop2")
			TNT1 A 0 A_JumpIf(user_count == 3, "See")
			VEST EE 4 Fast A_FaceTarget
			VEST F 0 A_playsound("MageLightningFire")
			TNT1 A 0 A_custommissile("GamonBolt", 32, 12, 0)    
			VEST F 8 Fast bright A_custommissile("GamonBolt", 32, -12, 0)
			VEST E 8 Fast A_FaceTarget
			VEST E 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		MissileLoop2:
			TNT1 A 0 A_ChangeFlag("NOPAIN", 1)
			TNT1 A 0 A_JumpIf(user_count == 3, "ComboFinish")
			VEST EE 4 Fast A_FaceTarget
			VEST F 0 A_playsound("MageLightningFire")
			TNT1 A 0 A_custommissile("GamonBoltFast", 32, 12, 0)    
			VEST F 8 Fast bright A_custommissile("GamonBoltFast", 32, -12, 0)
			VEST E 8 Fast A_FaceTarget
			VEST E 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		ComboFinish:
			VEST EE 4 Fast A_FaceTarget
			VEST F 0 A_playsound("MageLightningFire")
			TNT1 A 0 A_custommissile("GamonBoltFast", 48, -12, 0, CMF_AIMOFFSET)
			TNT1 A 0 A_custommissile("GamonBoltFast", 48, 12, 0, CMF_AIMOFFSET)
			TNT1 A 0 A_custommissile("GamonBoltFast", 32, 12, 0, CMF_AIMOFFSET)
			VEST F 8 Fast bright A_custommissile("GamonBoltFast", 32, -12, 0, CMF_AIMOFFSET)
			VEST E 8 Fast A_FaceTarget
		Goto See
		PainState:
			TNT1 A 0 A_GiveInventory("GamonChecker", 1)
			VEST A 3 Fast
			VEST A 3 Fast A_Pain
		goto See
		XDeathState:
		DeathState:
			VEST G 8 A_Scream
			VEST H 8 
			VEST I 8 A_NoBlocking
			VEST J 8
			VEST K -1 A_KillMaster
		stop
		RaiseState:
			TNT1 A 0 A_TakeInventory("GamonShift", 1)
			TNT1 A 0 A_TakeInventory("GamonGhost", 1)
			TNT1 A 0 A_SetTranslucent(1.0, 0)
			TNT1 A 0 A_ChangeFlag("GHOST", 0)
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Gamon Shifter")
			VEST JIHG 8
		goto See
	}
}

Actor GamonGhost : DnD_Boolean { }
Actor GamonShift : DnD_Boolean { }

Actor GamonChecker : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_JumpIfInventory("GamonGhost", 1, "Failed")
			TNT1 A 0 A_JumpIfHealthLower(ACS_ExecuteWithResult(961, 7) / 2, "TurnGhost")
		Stop
		TurnGhost:
			TNT1 A 0 A_GiveInventory("GamonShift", 1)
			TNT1 A 0 A_ChangeFlag("GHOST", 1)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Monster Trait Give", DND_GHOST, -1, -1, -1)
			TNT1 A 0 A_GiveInventory("GamonGhost", 1)
		Stop
		Failed:
			TNT1 A 0
		Stop
	}
}

actor GamonBolt {
	Radius 6
	Height 16
	Speed 20
	Damage (4 * random(3, 5))
	DamageType "MagicalBlue"
	Stamina 264
	RenderStyle Add
	Alpha 0.9
	DeathSound "Veste/Hit"
	Decal "BaronScorch"
	Projectile
	+PIERCEARMOR
	states {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			VPRJ A 2 Bright A_CustomMissile("Sorcerer2FXSpark2",0,0,0,0)
			TNT1 A 0 A_Weave(3, 2, 1.0, 1.0)
			VPRJ B 2 Bright A_CustomMissile("Sorcerer2FXSpark2",0,0,0,0)
			TNT1 A 0 A_Weave(3, 2, 1.0, 1.0)
			VPRJ C 2 Bright A_CustomMissile("Sorcerer2FXSpark2",0,0,0,0)
			TNT1 A 0 A_Weave(3, 2, 1.0, 1.0)
		loop
		Death:
			TNT1 A 0 A_SpawnItemEx("BlueParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			VPRJ DEF 6 bright
		stop
	}
}

Actor GamonBoltFast : GamonBolt {
	Speed 36
}

Actor GamonPuff : BlasterPuff {
	DamageType "MagicalBlue"
	Stamina 264
    +CLIENTSIDEONLY
    +ALWAYSPUFF
	States {
		Spawn:
			VPRJ JKLMNOP 3 Bright
		Stop
	}
}

ACTOR Sorcerer2FXSpark2 : Sorcerer2FXSpark {
	scale 0.7
	+FLOATBOB
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 2
			VPRJ GHI 8 BRIGHT 
		Stop
	}
}

Actor MephistoBullet : ZombieBullet {
	Damage (random(3,5) * 2)
}

Actor Mephisto : DnD_BaseRangedMonster {
	Health 0x7FFFFFFF
	Radius 48
	Height 64
	Speed 10
	Scale 0.8
	PainChance 32
	Mass 1500
	SeeSound "Mephisto/See"
	PainSound "Mephisto/pain"
	DeathSound "Mephisto/Die"
	ActiveSound "Mephisto/See"
	+ISMONSTER
	+MissileMore
	Species "Fatso"
	+DONTHURTSPECIES
	+NOINFIGHTING
	+DONTRIP
	Obituary "%o vanquished by a Mephisto."
	Tag "Mephisto"
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_MEPHISTO)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_VERYRARE)
		Goto SpawnSetup
		
		IdleState:
			MMDR A 6 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			MMDR ABCD 4 Fast A_Chase
		Goto See
		MissileState:
			TNT1 A 0 A_StopSound(7)
			TNT1 A 0 A_JumpIfCloser(320, "Plasma")
		Goto Chaingun
		Plasma:
			TNT1 A 0 A_Jump(72, "Chaingun")
			MMDR E 5 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("Weapons/newplasmafire")
			TNT1 A 0 A_CustomMissile("MephistoPlasma", 42, -28)
			MMDR F 7 Fast Bright A_CustomMissile("MephistoPlasma", 42, 28)
			MMDR G 3 Fast Bright
			MMDR E 8 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("Weapons/newplasmafire")
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			TNT1 A 0 A_CustomMissile("MephistoPlasma", 42, -28)
			MMDR F 7 Fast Bright A_CustomMissile("MephistoPlasma", 42, 28)
			MMDR G 3 Fast Bright
			MMDR E 8 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("Weapons/newplasmafire")
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			TNT1 A 0 A_CustomMissile("MephistoPlasma", 42, -28)
			MMDR F 7 Fast Bright A_CustomMissile("MephistoPlasma", 42, 28)
			MMDR G 3 Fast Bright
			MMDR E 8 Fast A_FaceTarget
		Goto See
		Chaingun:
			MMDR E 7 Fast A_FaceTarget
		ChaingunLoop:
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_PlaySound("Mephisto/Chaingun", CHAN_WEAPON)
			TNT1 A 0 A_SpawnItemEx ("bulletcasing", -8, 7, 80, -4, 0, frandom(3.0, 5.0), random(-80, -90))
			MMDR H 4 Fast Bright A_CustomMissile("MephistoBullet", 84, -8, frandom(-8.4, 8.4), 0, frandom(-4.8, 4.8))
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			TNT1 A 0 A_SpawnItemEx ("bulletcasing", -8, 7, 80, -4, 0, frandom(3.0, 5.0), random(-80, -90))
			MMDR I 4 Fast Bright A_CustomMissile("MephistoBullet", 84, -8, frandom(-8.4, 8.4), 0, frandom(-4.8, 4.8))
			MMDR I 0 Bright A_CposRefire
		Loop
		PainState:
			TNT1 A 0 A_StopSound(7)
			MMDR E 8 Fast A_Pain
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			MMDR P 6 A_Scream
			TNT1 A 0 A_Fall
			MMDR QR 5 Bright
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Medium", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			MMDR SSTTUUVV 2 A_SpawnItemEx("ExplosionFX", 0, 0, random(0, 32),random(-9,9),random(-9,9),random(5,9), 48, 128)
			MMDR W -1 A_KillMaster
		Stop
		RaiseState:
			FAT2 SRQPONMLK 5
		Goto See
	}
}

Actor MephistoExp1 : BaseExplosionDamage {
	DamageType "Energy"
	Stamina 16
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(24, 48, 0)
		Stop
	}
}

Actor MephistoPlasma {
	PROJECTILE
	Speed 32
	Height 12
	Radius 8
	Renderstyle Add
	Alpha 0.9
	Damage (6 * random(1, 8))
	DamageType "Energy"
	Stamina 16
	Scale 0.9
	DeathSound "Mephisto/PlasmaHit"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			CTFX A 3 Bright A_SpawnItemEx("MephistoPlasmaTrail")
		Loop
		Death:
			TNT1 A 0 A_SpawnItemEx("BlueParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 AAAA 0 A_SpawnItemEx("ExplosionFX5", 0, 0, 0, frandom(-1, 1), frandom(-1, 1), frandom(-1, 1))
			TNT1 AAAAAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
			CTFX BC 3 Bright
			TNT1 A 0 A_SpawnItem("MephistoExp1")
			CTFX DEF 3 Bright
		Stop
	}
}

actor MephistoPlasmaTrail {
	scale 0.9
	renderstyle add
	alpha 0.9
	radius 1
	height 1
	+NOGRAVITY
	+NOINTERACTION
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 1
		SpawnLoop:
			CTFX A 1 A_FadeOut(0.1)
		Loop
		Death:
			TNT1 A 1
		Stop
	}
}

Actor Abomination : DnD_BaseRangedMonster {
	Health 0x7FFFFFFF
	Radius 48
	Height 64
	Mass 1536
	Speed 8
	PainChance 72
	SeeSound "Abomination/See"
	PainSound "Abomination/Pain"
	DeathSound "Abomination/Die"
	ActiveSound "Abomination/Act"
	Species "Fatso"
	+ISMONSTER
	+DONTHURTSPECIES
	+DONTRIP
	Obituary "%o was corrupted by an Abomination."
	Tag "Abomination"
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_ABOMINATION)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_RARE2)
		Goto SpawnSetup

		IdleState:
			HFAT AB 15 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			HFAT AABBCCDDEEFF 4 Fast A_Chase
		Goto See
		PainState:
			HFAT J 3 Fast
			HFAT J 3 Fast A_Pain
		Goto See
		MissileState:
			HFAT G 0 A_PlaySound("Abomination/Attack")
			HFAT G 20 Fast A_FaceTarget
			HFAT H 0 A_CustomMissile("AbominationShot2", 16, 28, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot2", 16, 52, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot2", 40, 28, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot2", 40, 52, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot1", 28, 40)
			HFAT H 0 A_CustomMissile("AbominationShot2", 16, -28, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot2", 16, -52, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot2", 40, -28, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot2", 40, -52, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot1", 28, -40)
			HFAT G 0 A_PlaySound("Abomination/Attack")
			HFAT H 10 Fast BRIGHT
			HFAT IG 5 Fast A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			HFAT H 0 A_CustomMissile("AbominationShot2", 16, 28, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot2", 16, 52, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot2", 40, 28, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot2", 40, 52, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot1", 28, 40)
			HFAT H 0 A_CustomMissile("AbominationShot2", 16, -28, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot2", 16, -52, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot2", 40, -28, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot2", 40, -52, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot1", 28, -40)
			HFAT G 0 A_PlaySound("Abomination/Attack")
			HFAT H 10 Fast BRIGHT
			HFAT IG 5 Fast A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			HFAT H 0 A_CustomMissile("AbominationShot2", 16, 28, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot2", 16, 52, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot2", 40, 28, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot2", 40, 52, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot1", 28, 40)
			HFAT H 0 A_CustomMissile("AbominationShot2", 16, -28, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot2", 16, -52, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot2", 40, -28, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot2", 40, -52, 0, CMF_AIMOFFSET)
			HFAT H 0 A_CustomMissile("AbominationShot1", 28, -40)
			HFAT H 10 Fast BRIGHT
			HFAT IG 5 Fast 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_Jump(128, "OtherWay")
			DA7D A 6
			TNT1 A 0 A_TakeInventory("DnD_Boolean", 1)
			DA7D B 6 A_Scream
			DA7D C 6 A_NoBlocking
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Medium_Delayed", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			DA7D DEFGH 6
			DA7D I -1 A_KillMaster
		Stop
		OtherWay:
			TNT1 A 0 A_GiveInventory("DnD_Boolean", 1)
			DA7D J 6
			DA7D K 6 A_Scream
			DA7D L 6 A_NoBlocking
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Medium_Delayed", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			DA7D MNOPQ 6
			DA7D R -1 A_KillMaster
		Stop
		RaiseState:
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "Raise2")
			DA7D IHGFEDCBA 4
		Goto See
		Raise2:
			TNT1 A 0 A_TakeInventory("DnD_Boolean", 1)
			DA7D RQPONMLKJ 4
		Goto See
   }
}

Actor AbominationExp : BaseExplosionDamage {
	DamageType "MagicalVoid"
	Stamina 8
	+PIERCEARMOR
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(30, 84, 0)
		Stop
	}
}

Actor AbominationShot1 {
	Translation "0:255=%[0.00,0.00,0.00]:[1.57,1.11,1.60]"
	RenderStyle Add
	PROJECTILE
	Speed 28
	Radius 5
	Height 10
	Damage (5 * random(4, 6))
	DamageType "MagicalVoid"
	Stamina 8
	DeathSound "weapons/basiliskexpl3"
	+DONTBLAST
	+PIERCEARMOR
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		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("PurpleParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 A 0 A_SpawnItemEx ("SmallPurpleFlare", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			HIB1 C 3 Bright A_SpawnItem("AbominationExp")
			HIB1 DEFG 3 Bright
		stop
	}
}

ACTOR AbominationShot2 {
	Translation "0:255=%[0.00,0.00,0.00]:[1.57,1.11,1.60]"
	Radius 5
	Height 8
	Speed 36
	Damage (5 * random(1, 2))
	RenderStyle ADD
	Damagetype "MagicalVoid"
	Stamina 8
	PROJECTILE
	+PIERCEARMOR
	+THRUGHOST
	+FORCEXYBILLBOARD
	+DONTBLAST
	SeeSound "weapons/magic1"
	DeathSound "weapons/firex5"
	States {
		Spawn: 
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			BMIS A -1 Bright 
		Stop
		Death:
			TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
			IMFX QRSTUVW 3 Bright
		stop
	}
}

Actor GoldGolem : DnD_BaseHybridMonster {
	Obituary "%o's head was taken as a trophy for a Gold Golem."
	HitObituary "%o was smashed like an insect by a Gold Golem."
	Health 0x7FFFFFFF
	Radius 36
	Height 64
	ProjectilePassHeight 80
	Mass 2000
	Scale 1.45
	Speed 4
	PainChance 32
	MeleeRange 76
	MaxTargetRange 360
	DeathSound "GoldGolem/Die"
	PainSound "GoldGolem/Pain"
	SeeSound "GoldGolem/See"
	ActiveSound "EarthGolem/Act"
	+ISMONSTER
	+MISSILEMORE
	+MISSILEEVENMORE
	+DONTHARMSPECIES
	+NoBlood
	+NoIceDeath
	+DONTRIP
	+NODAMAGETHRUST
	+DONTMORPH
	Tag "Gold Golem"
	Species "Fatso"
	var int user_count;
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_GOLDGOLEM)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_VERYRARE)
		Goto SpawnSetup

		IdleState:
			GOL4 A 10 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			GOL4 AA 2 Fast A_Chase
			GOL4 BB 3 Fast A_Chase
			TNT1 A 0 A_PlaySound("GoldGolem/Step")
			GOL4 CC 2 Fast A_Chase
			GOL4 DD 3 Fast A_Chase
			GOL4 D 0 A_PlaySound("GoldGolem/Step")
		Goto See
		PainState:
			GOL4 I 5 A_Pain
			GOL4 I 5
		Goto See
		MeleeState:
			GOL4 E 6 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("GoldGolem/Swing")
			GOL4 F 5 Fast A_FaceTarget
			GOL4 G 8 Fast A_CustomMeleeAttack(5 * random(12, 16), "GoldGolem/melee")
		Goto See
		MissileState:
			TNT1 A 0 A_Jump(128, "Dash")
		MissileCont:
			GOL4 H 2 Fast A_FaceTarget
			TNT1 A 0 A_SetUserVar("user_count", 0)
			TNT1 A 0 A_PlaySound("GoldGolem/LaserCharge", 7)
			GOL4 H 2 Fast
			GOL4 H 4 Fast Bright A_FaceTarget
			GOL4 H 4 Fast A_FaceTarget
			GOL4 H 4 Fast Bright A_FaceTarget
			GOL4 H 4 Fast A_FaceTarget
			GOL4 H 4 Fast Bright A_FaceTarget
			GOL4 H 4 Fast A_FaceTarget
			TNT1 A 0 A_StopSound(7)
		MissileLoop:
			GOL4 H 0 A_JumpIf(user_count == 32, "See")
			GOL4 H 2 BRIGHT A_CustomMissile("GoldGolemLaser", 72, 0, -21 * cos(user_count * 22.5))
			TNT1 A 0 A_FaceTarget
			GOL4 H 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		Dash:
			TNT1 A 0 A_JumpIfCloser(320, "ContinueDash")
		Goto MissileCont
		ContinueDash:
			GOL4 G 1 A_FaceTarget
			TNT1 A 0 A_PlaySound("Golem/Slide")
			TNT1 A 0 ACS_ExecuteAlways(971, 0, 25) // script sets velocity
			GOL4 G 3 A_JumpIfTargetInLos("DashFinish", 90, JLOSF_DEADNOJUMP, 80)
			TNT1 A 0 A_SpawnItemEx("GrenadeSmoke", -8, -12, 0, 0, -2.5, 1)
			TNT1 A 0 A_SpawnItemEx("GrenadeSmoke", -8, 12, 0, 0, 2.5, 1)
			GOL4 G 3 A_JumpIfTargetInLos("DashFinish", 90, JLOSF_DEADNOJUMP, 80)
			TNT1 A 0 A_SpawnItemEx("GrenadeSmoke", -8, -12, 0, 0, -2.5, 1)
			TNT1 A 0 A_SpawnItemEx("GrenadeSmoke", -8, 12, 0, 0, 2.5, 1)
			GOL4 G 3 A_JumpIfTargetInLos("DashFinish", 90, JLOSF_DEADNOJUMP, 80)
			TNT1 A 0 A_SpawnItemEx("GrenadeSmoke", -8, -12, 0, 0, -2.5, 1)
			TNT1 A 0 A_SpawnItemEx("GrenadeSmoke", -8, 12, 0, 0, 2.5, 1)
			TNT1 A 0 A_JumpIf(velx == 0 || vely == 0, "See")
			GOL4 G 3 A_JumpIfTargetInLos("DashFinish", 90, JLOSF_DEADNOJUMP, 80)
			TNT1 A 0 A_SpawnItemEx("GrenadeSmoke", -8, -12, 0, 0, -2.5, 1)
			TNT1 A 0 A_SpawnItemEx("GrenadeSmoke", -8, 12, 0, 0, 2.5, 1)
			GOL4 G 3 A_JumpIfTargetInLos("DashFinish", 90, JLOSF_DEADNOJUMP, 80)
			TNT1 A 0 A_SpawnItemEx("GrenadeSmoke", -8, -12, 0, 0, -2.5, 1)
			TNT1 A 0 A_SpawnItemEx("GrenadeSmoke", -8, 12, 0, 0, 2.5, 1)
			GOL4 G 3 A_JumpIfTargetInLos("DashFinish", 90, JLOSF_DEADNOJUMP, 80)
			TNT1 A 0 A_SpawnItemEx("GrenadeSmoke", -8, -12, 0, 0, -2.5, 1)
			TNT1 A 0 A_SpawnItemEx("GrenadeSmoke", -8, 12, 0, 0, 2.5, 1)
			GOL4 G 3 A_JumpIfTargetInLos("DashFinish", 90, JLOSF_DEADNOJUMP, 80)
			TNT1 A 0 A_SpawnItemEx("GrenadeSmoke", -8, -12, 0, 0, -2.5, 1)
			GOL4 G 0 A_SpawnItemEx("GrenadeSmoke", -8, 12, 0, 0, 2.5, 1)
		Goto See
		DashFinish:
			GOL4 F 3 Fast A_FaceTarget
			TNT1 A 0 A_CustomMeleeAttack(5 * random(12, 16), "Golem/Hit")
			GOL4 F 3 Fast A_FaceTarget
			TNT1 A 0 A_CustomMissile("GoldGolemBash")
			GOL4 E 5 Fast
			GOL4 E 1 Fast A_Jump(128, "MissileCont")
		Goto See
		MissileFinish:
			GOL4 H 6 BRIGHT A_FaceTarget
			GOL4 H 6 A_FaceTarget
		Goto See
		XDeathState:
		DeathState:
			GOL4 I 35 A_Scream
			GOL4 J 3 A_Die
			GOL4 KL 3
			GOL4 M 3 A_NoBlocking
			GOL4 NOPQRST 3
			TNT1 A 0 A_PlaySound("GoldGolem/Fall")
			GOL4 UVW 3
			GOL4 X -1 A_KillMaster
		Stop
		RaiseState:
			GOL4 WVUTSRQPONMLKJ 3
			GOL4 I 5
		Goto See
	}
}

Actor GoldGolemLaser {
	Radius 3
	Height 6
	Speed 36
	Damage (random(5, 12))
	RenderStyle Add
	Alpha 0.5
	Scale 0.6
	Projectile
	DeathSound "GoldGolem/LaserHit"
	+DontReflect
	+Ripper
	+DONTBLAST
	+NODAMAGETHRUST
	Damagetype "MagicalGreen"
	Stamina 8
	States {
		Spawn:
			G3PJ A 0
			G3PJ A 0 A_PlaySoundEx("GoldGolem/LaserFire", "SoundSlot7", 1)
			G3PJ AAABBB 1 Bright A_SpawnItemEx("GolemLaserTrail", -32, 0, (velz / 1.2 * (-1)), 28, 0, (velz / 1.2), 0)
			G3PJ AAABBB 1 Bright A_SpawnItemEx("GolemLaserTrail", -32, 0, (velz / 1.2 * (-1)), 28, 0, (velz / 1.2), 0)
			G3PJ AAABBB 1 Bright A_SpawnItemEx("GolemLaserTrail", -32, 0, (velz / 1.2 * (-1)), 28, 0, (velz / 1.2), 0)
		Death:
			TNT1 A 1
		Stop
	}
}

Actor GolemLaserTrail {
	Height 4
	Radius 2
	+NOINTERACTION
	+CLIENTSIDEONLY
	RenderStyle Add
	Alpha 0.5
	Scale 0.6
	States {
		Spawn:
			G3PJ ABC 1 Bright A_FadeOut(0.04)
		Loop
		Death:
			TNT1 A 1
		Stop
	}
}

Actor GoldGolemBash : CrystalGolemBash {
	Speed 40
	damage (20 * random(1, 2))
}

ACTOR Redeemer : DnD_BaseHybridMonster {
	Health 0x7FFFFFFF
	Speed 8
	Radius 48
	Height 64
	Mass 640
	MinMissileChance 120
	MaxDropoffHeight 32
	SeeSound "Redeemer/sight"
	DeathSound "Redeemer/death"
	Obituary "%o was destroyed by a Redeemer."
	MeleeRange 264
	+ISMONSTER
	+MissileMore
	+FLOORCLIP
	+NOBLOOD
	+NOPAIN
	Species "Fatso"
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_REDEEMER)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_RARE2)
		Goto SpawnSetup
	
		IdleState:
			TNT1 A 0 A_StopSound(CHAN_WEAPON)
		IdleLoop:
			13RF Q 10 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			TNT1 A 0 A_StopSound(CHAN_WEAPON)
		SeeStateLoop:
			13RF A 3 Fast A_Chase
			TNT1 A 0 A_PlaySound("Redeemer/active", CHAN_VOICE)
			13RF A 3 Fast A_Chase
			13RF BB 4 Fast A_Chase
			13RF CC 3 Fast A_Chase
			13RF DD 4 Fast A_Chase
		Loop
		MissileState:
			TNT1 A 0 A_StopSound(CHAN_WEAPON)
			TNT1 A 0 A_Jump(128, "OtherStyle")
			13RF E 3 Fast A_FaceTarget
			TNT1 A 0 A_CustomMissile("RedeemerRocket", 56, -22)
			TNT1 A 0 A_CustomMissile("RedeemerRocket", 40, -22, 1.4, 0, -1)
			TNT1 A 0 A_CustomMissile("RedeemerRocket", 40, -22, -1.4, 0, -1)
			13RF F 2 Fast Bright
			13RF E 8 Fast
		Goto See
		OtherStyle:
			13RF E 3 Fast A_FaceTarget
			TNT1 A 0 A_CustomMissile("RedeemerRocket", 56, -22, 0, CMF_AIMOFFSET)
			TNT1 A 0 A_CustomMissile("RedeemerRocket", 40, -14, 0, CMF_AIMOFFSET)
			TNT1 A 0 A_CustomMissile("RedeemerRocket", 40, -30, 0, CMF_AIMOFFSET)
			13RF F 2 Fast Bright
			13RF E 8 Fast
		Goto See
		MeleeState:
			TNT1 A 0 A_PlaySound("Mordecqai/FlameUp", 7)
			13RF E 3 Fast A_FaceTarget
			TNT1 A 0 A_SetAngle(angle + 5.6)
			TNT1 A 0 A_PlaySound("Mordecqai/FlameFire", CHAN_WEAPON, 1.0, 1, 0.65)
		MeleeLoop:
			TNT1 A 0 A_TakeInventory("RedeemerLooper", 1)
			TNT1 A 0 A_CustomMissile("RedeemerFlame", 48, -25, 0, 0, -1)
			13RF F 2 Fast Bright
			TNT1 A 0 A_SetAngle(angle - 5.6)
			TNT1 A 0 A_CustomMissile("RedeemerFlame", 48, -25, 0, 0, -1)
			13RF E 2 Fast Bright
			TNT1 A 0 A_SetAngle(angle - 5.6)
			TNT1 A 0 A_CustomMissile("RedeemerFlame", 48, -25, 0, 0, -1)
			13RF F 3 Fast Bright
			TNT1 A 0 A_SetAngle(angle - 5.6)
			TNT1 A 0 A_CustomMissile("RedeemerFlame", 48, -25, 0, 0, -1)
			13RF E 2 Fast Bright
			TNT1 A 0 A_SetAngle(angle + 5.6)
			TNT1 A 0 A_CustomMissile("RedeemerFlame", 48, -25, 0, 0, -1)
			13RF F 2 Fast Bright
			TNT1 A 0 A_SetAngle(angle + 5.6)
			TNT1 A 0 A_CustomMissile("RedeemerFlame", 48, -25, 0, 0, -1)
			13RF E 2 Fast Bright
			TNT1 A 0 A_SetAngle(angle + 5.6)
			TNT1 A 0 A_CustomMissile("RedeemerFlame", 48, -25, 0, 0, -1)
			13RF F 2 Fast Bright
			TNT1 A 0 A_SetAngle(angle + 5.6)
			TNT1 A 0 A_CustomMissile("RedeemerFlame", 48, -25, 0, 0, -1)
			13RF E 2 Fast Bright A_GiveInventory("RedeemerCheck", 1)
			TNT1 A 0 A_JumpIfInventory("RedeemerLooper", 1, "MeleeLoop")
			13RF F 2 Fast A_MonsterRefire(0, "See")
		Goto See
		XdeathState:
		DeathState:
			TNT1 A 0 A_StopSound(CHAN_WEAPON)
			13RF G 3 A_Scream
			13RF H 5 A_SpawnItemEx("MetalScrap_More")
			13RF I 4 Bright
			13RF J 4 Bright A_SpawnItemEx("RedeemerExplosion", frandom(-16, 16), frandom(-16, 16), frandom(18, 56), 0, 0, 0, SXF_NOCHECKPOSITION)
			13RF K 4 Bright A_Fall
			TNT1 A 0 A_SpawnItemEx("MetalScrap_More")
			13RF L 4 A_SpawnItemEx("RedeemerExplosion", frandom(-16, 16), frandom(-16, 16), frandom(18, 56), 0, 0, 0, SXF_NOCHECKPOSITION)
			13RF MN 4 A_SpawnItemEx("MetalScrap_More")
			13RF O 4 A_SpawnItemEx("RedeemerExplosion", frandom(-16, 16), frandom(-16, 16), frandom(18, 56), 0, 0, 0, SXF_NOCHECKPOSITION)
			13RF P -1 A_KillMaster
		Stop
		RaiseState:
			13RF ONMLKJI 4
			13RF H 5
			13RF G 3
		Goto See
	}
}

Actor RedeemerLooper : DnD_Boolean { }

Actor RedeemerCheck : DnD_Activator {
	States {
		Pickup:
			TNT1 A 0 A_JumpIfTargetInLOS("Check", 90, JLOSF_DEADNOJUMP, 264)
		Stop
		Check:
			TNT1 A 0 A_JumpIfCloser(264, "Confirm")
		Stop
		Confirm:
			TNT1 A 0 A_GiveInventory("RedeemerLooper", 1)
		Stop
	}
}

Actor RedeemerRocketPuff {
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			MPUF A 4 Bright
			MPUF BCD 4
		Stop
	}
}

Actor RedeemerRocketTrail {
	RenderStyle Translucent
	Alpha 0.25
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			TNT1 A 1
			MPUF BCBCD 4
		Stop
	}
}

ACTOR RedeemerRocket {
	PROJECTILE
	Damage (5 * random(3, 5))
	Speed 28
	Height 16
	Radius 8
	Decal "Scorch"
	SeeSound "Redeemer/misl"
	Deathsound "Redeemer/mislx"
	+DONTBLAST
	States {
		Spawn:
			TNT1 A 0 A_PlaySound("Redeemer/missileinflight", CHAN_BODY)
			TNT1 A 0 A_SpawnItemEx("RedeemerRocketPuff", -velx, 0, 0, 0, 0, 1)
			12PF AA 3 Bright A_SpawnItemEx("RedeemerRocketTrail", 0, 0, 0, 0, 0, 0, 180)
		Loop
		Death:
			TNT1 A 0 A_SetTranslucent(1, 1)
			TNT1 A 0 A_StopSound(CHAN_BODY)
			9PRF A 5 Bright
			9PRF B 5 Bright
			9PRF C 4 Bright
			9PRF DEFG 2 Bright
		Stop
	}
}

ACTOR RedeemerFlame {
	PROJECTILE
	+FORCEXYBILLBOARD
	+THRUACTORS
	+NODAMAGETHRUST
	+DONTBLAST
	obituary "%o was reduced to ashes by a Redeemer."
	renderstyle Add
	alpha 0.5
	Scale 0.15
	radius 4
	height 6
	speed 25
	damagetype "Fire"
	Stamina 32
	decal "FlameScorch"
	states {
		Spawn:
			MOFX B 2 bright
			MOFX CDEF 2 bright A_SpawnItem("RedeemerFlameExplosion")
			MOFX GHIJK 2 bright A_SpawnItem("RedeemerFlameExplosion")
			MOFX LMNO 2 bright A_FadeOut(0.16)
		stop
		Death:
			TNT1 AA 0 A_SpawnItem("RedeemerFlameExplosion")
			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 RedeemerFlameExplosion : BaseExplosionDamage {
	DamageType "Fire"
	Stamina 32
	+NODAMAGETHRUST
	States {
		Spawn:
			TNT1 A 1 NoDelay A_Explode(2, 64, 0, 0, 32)
		Stop
	}
}

Actor RedeemerExplosion : ReaverExplosion {
	Scale 1.0
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 0 A_Explode(12, 72, 0)
			11PF ABCDE 5 Bright
		Stop
	}
}