ACTOR FusionSpider : DnD_BaseRangedMonster {
	OBITUARY "%o was vaporized by a fusion cannon Arachnotron."
	Health 0x7FFFFFFF
	Radius 64
	Height 64
	Mass 600
	Speed 12
	PainChance 128   
	SEESOUND "baby/sight"
	PainSound "Arachnotron/Pain"
	DEATHSOUND "baby/death"
	ACTIVESOUND "baby/active"
	Species "Spider"
	Tag "Fusion Spider"
	+ISMONSTER
	+DONTHURTSPECIES
	+MissileMore
	+MissileEvenMore
	states {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_FUSIONSPIDER)
		Goto SpawnSetup
	
		IdleState:
			FSPI AB 10 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "SeeSkip")
			FSPI A 20 Fast A_GiveInventory("DnD_Boolean", 1)
		SeeSkip:
			FSPI A 3 Fast A_BabyMetal
			FSPI ABBCC 3 Fast A_Chase
			FSPI D 3 Fast A_BabyMetal
			FSPI DEEFF 3 Fast A_Chase
		Goto See
		MissileState:
			FSPI A 16 Fast BRIGHT A_FaceTarget
			FSPI A 0 A_FaceTarget
			FSPI G 3 Fast BRIGHT A_CustomMissile("FusionShot",24,0,0)
			FSPI H 3 Fast BRIGHT A_CustomMissile("FusionShot",24,0,5)
			FSPI A 0 A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			FSPI G 3 Fast BRIGHT A_CustomMissile("FusionShot",24,0,2)
			FSPI H 3 Fast BRIGHT A_CustomMissile("FusionShot",24,0,-5)
			FSPI A 0 A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			FSPI G 3 Fast BRIGHT A_CustomMissile("FusionShot",24,0,-2)
			FSPI H 0 BRIGHT A_CustomMissile("FusionShot",24,0,10)
			FSPI H 3 Fast BRIGHT A_CustomMissile("FusionShot",24,0,-10)
			FSPI H 1 BRIGHT A_SpidRefire
		Goto MissileState + 1
		PainState:
			FSPI I 3 Fast
			FSPI I 3 Fast A_Pain
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnDebris("MetalScrap_More")
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			FSPI J 20 A_Scream
			FSPI K 7 A_NoBlocking
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			FSPI LMNO 7
			FSPI P -1 A_KillMaster
		Stop
		RaiseState:
			TNT1 A 0 A_TakeInventory("DnD_Boolean", 1)
			FSPI PONMLKJ 5
		Goto See
	}
}

ACTOR FusionShot {
	Radius 10
	Height 10
	Speed 18
	Damage (5 * random(1, 8))  
	DamageType "EnergyVoid"
	Stamina 16
	Scale 1.0
	RENDERSTYLE Add
	SEESOUND "fusionspid/see" 
	DEATHSOUND "Enforcer/Hit"
	PROJECTILE
	Decal PlasmaScorchLower
	Scale 0.75
	+DONTBLAST
	states {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			FPLS AAABBB 1 BRIGHT A_SpawnItemEx("FusionTrail", -(MomX/1.6), -(MomY/1.6), (MomZ/1.6*-1), (MomX/1.6), (MomY/1.6), (MomZ/1.6), -Angle, 138)
		Loop
		Death:
			TNT1 A 0 A_SpawnItemEx("PurpleParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 AAA 0 A_SpawnItemEx("ExplosionFX3", 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))
			FPLS CDEFG 3 BRIGHT
		Stop
	}
}

ACTOR FusionTrail {
	Scale 0.75
	Radius 8
	Height 6
	Damage 0
	Projectile
	+NoBlockMap
	+DONTSPLASH
	RenderStyle Add
	Alpha 0.5
	+CLIENTSIDEONLY
	States {
		Spawn:
			FPLS A 0
			FPLS A 0 A_Jump(128, 4)
			FPLS AAABBB 2 Bright A_FadeOut(0.12)
		Loop
	}
}

ACTOR HellforgeSpider : DnD_BaseRangedMonster {
	OBITUARY "%o was charred to smithereens by a Hellforge Spider."
	Health 0x7FFFFFFF
	Radius 64
	Height 64
	Mass 600
	Scale 1.1
	Speed 12
	PainChance 128   
	SEESOUND "baby/sight"
	PAINSOUND "demon/pain2"
	DEATHSOUND "baby/death"
	ACTIVESOUND "baby/active"
	+ISMONSTER
	+MissileMore
	+MissileEvenMore
	Species "Spider"
	+DONTHURTSPECIES
	Tag "Hellforge Spider"
	+QUICKTORETALIATE
	states {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_HELLFORGESPIDER)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_UNCOMMON)
		Goto SpawnSetup
		
		IdleState:
			TNT1 A 0 A_TakeInventory("MultiShot", 99)
			ESPD AB 10 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			TNT1 A 0 A_TakeInventory("MultiShot", 99)
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "SeeSkip")
			ESPD A 20 Fast A_GiveInventory("DnD_Boolean", 1)
		SeeSkip:
			ESPD A 3 Fast A_BabyMetal
			ESPD ABBCC 3 Fast A_Chase
			ESPD D 3 Fast A_BabyMetal
			ESPD DEEFF 3 Fast A_Chase
		Goto See
		MissileState:
			ESPD A 16 Fast A_FaceTarget
			ESPD G 3 Fast BRIGHT
			TNT1 A 0 A_JumpIfInventory("MultiShot", 4, "Multi")
			TNT1 A 0 A_FaceTarget
			ESPD H 3 Fast BRIGHT A_CustomMissile("HFSpiderShot",24)
			TNT1 A 0 A_GiveInventory("MultiShot", 1)
			ESPD G 3 Fast BRIGHT
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			ESPD H 3 Fast BRIGHT A_CustomMissile("HFSpiderShot",24)
			TNT1 A 0 A_GiveInventory("MultiShot", 1)
			ESPD G 3 Fast BRIGHT
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			ESPD H 3 Fast BRIGHT A_CustomMissile("HFSpiderShot",24)
			TNT1 A 0 A_GiveInventory("MultiShot", 1)
			ESPD H 1 BRIGHT A_SpidRefire
		Goto MissileState + 1
		Multi:
			ESPD G 3 Fast BRIGHT
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 A_CustomMissile("HFSpiderShot",24,0, -5)
			TNT1 A 0 A_CustomMissile("HFSpiderShot",24,0, -10)
			TNT1 A 0 A_CustomMissile("HFSpiderShot",24,0, 5)
			TNT1 A 0 A_CustomMissile("HFSpiderShot",24,0, 10)	
			ESPD H 3 Fast BRIGHT A_CustomMissile("HFSpiderShot",24)  
			TNT1 A 0 A_TakeInventory("MultiShot", 99)
		Goto MissileState + 1
		PainState:
			TNT1 A 0 A_TakeInventory("MultiShot", 99)
			ESPD I 3 Fast
			ESPD I 3 Fast A_Pain
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState: 
			ESPD J 20 A_Scream
			ESPD K 7 A_NoBlocking
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			ESPD LMNO 7
			ESPD P -1 A_KillMaster
		Stop
		RaiseState:
			ESPD PONMLKJ 5
		Goto See
	}
}

Actor Multishot : Inventory { inventory.maxamount 4 }

Actor HellForgeSpiderExp : BaseExplosionDamage {
	DamageType "MagicalVoid"
	Stamina 8
	Obituary "%o was charred to smithereens by a Hellforge Spider"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(16, 96, 0)
		Stop
	}
}

ACTOR HFSpiderShot {
	Radius 8
	Height 10
	Speed 36
	Damage (random(15,30))
	DamageType "MagicalVoid"
	Stamina 8
	Scale 1.0   
	RENDERSTYLE Add
	SEESOUND "HFSpid/See" 
	DEATHSOUND "HFSpid/Die"
	PROJECTILE
	Decal PlasmaScorchLower
	Scale 0.825
	+DONTBLAST
	states {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			ESPJ AB 3 Bright
		Loop
		Death:
			TNT1 A 0 A_SpawnItemEx("PurpleParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 AAA 0 A_SpawnItemEx("ExplosionFX3", 0, 0, 0, frandom(-1, 1), frandom(-1, 1), frandom(-1, 1))
			TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
			TNT1 A 0 A_SpawnItem("HellForgeSpiderExp")
			ESPJ CDEFGHI 2 Bright
		Stop
	}
}

ACTOR RailArachnotron : DnD_BaseRangedMonster {
	//$Category "ZDoom Monster pack"
	Health 0x7FFFFFFF
	Radius 64
	Height 64
	Mass 600
	Speed 12
	PainChance 192
	Species "Spider"
	+ISMONSTER
	+DONTHURTSPECIES
	SeeSound "baby/sight"
	PainSound "Arachnotron/Pain"
	DeathSound "baby/death"
	ActiveSound "baby/active"
	Obituary "%o was railed by an arachnotron."
	Tag "Rail Arachnotron"
	Decal RedRailScorch
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_RAILARACHNOTRON)
		Goto SpawnSetup
		
		IdleState:
			RSPI AB 10 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			TNT1 A 0 A_JumpIfInventory("DnD_Boolean", 1, "SeeSkip")
			RSPI A 20 Fast A_GiveInventory("DnD_Boolean", 1)
		SeeSkip:
			RSPI A 3 Fast A_BabyMetal
			RSPI ABBCC 3 Fast A_Chase
			RSPI D 3 Fast A_BabyMetal
			RSPI DEEFF 3 Fast A_Chase
		Goto See
		MissileState:
			RSPI A 0 A_PlaySound ("baby/chargerailgun")
			RSPI A 16 Fast A_FaceTarget
			RSPI G 16 Fast A_FaceTarget
			RSPI H 4 Fast A_CustomRailgun (25, 0, AA0000, FF0000, 0, 1, 0, "ArachnoPuff")
			RSPI G 8 Fast
		Goto See
		PainState:
			RSPI I 3 Fast
			TNT1 A 0 A_SpawnDebris("MetalScrap")
			RSPI I 3 Fast A_Pain
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnDebris("MetalScrap_More")
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			RSPI J 20 A_Scream
			RSPI K 7 A_NoBlocking
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			RSPI LMNO 7
			RSPI P -1 A_KillMaster
		Stop	
		RaiseState:
			TNT1 A 0 A_TakeInventory("DnD_Boolean", 1)
			RSPI P 5
			RSPI ONMLKJ 5
		Goto See
	}
}

Actor ArachnoPuff : BulletPuff {	
	Obituary "%o was railed by an arachnotron."
	DamageType "Physical"
	Stamina 1
    States {
		Spawn:
			TNT1 A 1
		Goto Melee
		Melee:
			TNT1 A 1
		Stop
	}
}

Actor ArachnoBullet : ZombieBullet {
	Damage (random(1, 4) * 3)
	DamageType "Physical"
	Stamina 1
}

ACTOR BabyDemolisher : DnD_BaseRangedMonster {
	Health 0x7FFFFFFF
	PainChance 64
	Scale 1.2
	Height 64
	Radius 64
	Mass 600
	Speed 8
	SeeSound "minidemo/sight"
	ActiveSound "minidemo/active"
	Painsound "monsters/fusionitepain"
	DeathSound "minidemo/death"
	AttackSound ""
	Tag "Baby Demolisher"
	Species "Arachno"
	+ISMONSTER
	+MISSILEMORE
	+MISSILEEVENMORE
	+DONTHURTSPECIES
	Obituary "%o didn't expect demons to create this kind of a spider."
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_BABYDEMOLISHER)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_RARE2)
		Goto SpawnSetup

		IdleState:
			MSPI A 10 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			TNT1 A 0 A_Jump(64, "Rush")
			MSPI A 2 Fast A_BabyMetal
			MSPI ABBCC 2 Fast A_Chase
			MSPI D 2 Fast A_BabyMetal
			MSPI DEEFF 2 Fast A_Chase
		Goto See
		Rush:
			TNT1 A 0 A_BabyMetal
			TNT1 A 0 A_SpawnItemEx("BabyDemoGhostA",0,0,0,0,0,0,0,128)		
			MSPI A 1 A_Chase
			TNT1 A 0 A_SpawnItemEx("BabyDemoGhostA",0,0,0,0,0,0,0,128)		
			MSPI A 1 A_Chase
			TNT1 A 0 A_SpawnItemEx("BabyDemoGhostB",0,0,0,0,0,0,0,128)
			MSPI B 1 A_Chase
			TNT1 A 0 A_SpawnItemEx("BabyDemoGhostB",0,0,0,0,0,0,0,128)
			MSPI B 1 A_Chase	
			TNT1 A 0 A_SpawnItemEx("BabyDemoGhostC",0,0,0,0,0,0,0,128)
			MSPI C 1 A_Chase
			TNT1 A 0 A_SpawnItemEx("BabyDemoGhostC",0,0,0,0,0,0,0,128)
			MSPI C 1 A_Chase
			TNT1 A 0 A_BabyMetal	
			TNT1 A 0 A_SpawnItemEx("BabyDemoGhostD",0,0,0,0,0,0,0,128)
			MSPI D 1 A_Chase
			TNT1 A 0 A_SpawnItemEx("BabyDemoGhostD",0,0,0,0,0,0,0,128)
			MSPI D 1 A_Chase	
			TNT1 A 0 A_SpawnItemEx("BabyDemoGhostE",0,0,0,0,0,0,0,128)
			MSPI E 1 A_Chase
			TNT1 A 0 A_SpawnItemEx("BabyDemoGhostE",0,0,0,0,0,0,0,128)
			MSPI E 1 A_Chase
			TNT1 A 0 A_SpawnItemEx("BabyDemoGhostF",0,0,0,0,0,0,0,128)
			MSPI F 1 A_Chase
			TNT1 A 0 A_SpawnItemEx("BabyDemoGhostF",0,0,0,0,0,0,0,128)
			MSPI F 1 A_Chase	
			TNT1 A 0 A_Jump(192, "See")		
		Loop
		MissileState:
			TNT1 A 0 A_Jump(128,"Plasma")
		Normal:
			TNT1 A 0 A_PlaySound("monsters/darkmasterwind")
			MSPI A 10 Fast A_FaceTarget
			TNT1 A 0 Bright A_PlaySoundEx("weapons/minigunfire","Weapon")
			TNT1 AA 0 A_CustomMissile("ArachnoBullet", 28, 0, frandom(-25.0, 25.0), 0, 0)
			MSPI Q 2 Fast Bright
			MSPI R 2 Fast Bright A_PlaySound("monsters/darkmasterwind2")
			TNT1 A 0 A_Jump(8,"See")
			TNT1 A 0 A_SpidRefire
		Goto Normal + 2
		Plasma:	
			TNT1 A 0 A_PlaySound("weapons/plasmacharge")
			MSPI A 10 Fast A_FaceTarget
			MSPI H 3 Fast Bright A_CustomMissile("BabyDemoBall",20,0,Random(-16,16))
			MSPI G 3 Fast Bright A_CustomMissile("BabyDemoBall",20,0,Random(-16,16))
			TNT1 A 0 A_Jump(8,"See")
			TNT1 A 0 A_SpidRefire
		Goto Plasma + 2
		PainState:
			TNT1 A 0 A_Jump(128,"PainMissile")
			MSPI I 12 Fast A_Pain
		Goto See
		PainMissile:
			MSPI I 12 Fast A_Pain
		Goto Missile
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			MSPI I 25 A_Scream
			MSPI J 6
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Medium", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			MSP2 KKKKKKKK 3 Bright A_CustomMissile("ExplosionFX", random(20,40), random(10,-10), random(0,360), 2, random(0,360))
			MSPI L 6 A_NoBlocking
			MSPI MN 6
			MSPI O 6
			MSPI P -1 A_KillMaster
		Stop
		RaiseState:
			MSPI PONMLKJ 5
		Goto See
	}
}

ACTOR BabyDemoGhostA {
	Alpha 0.7
	Scale 1.2
	RENDERSTYLE Translucent
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			TNT1 A 3
			MSPI A 2 A_FadeOut(0.10)
		Goto Spawn + 1
	}
}

ACTOR BabyDemoGhostB : BabyDemoGhostA {   
	States {
		Spawn:
			TNT1 A 3
			MSPI B 2 A_FadeOut(0.10)
		Goto Spawn + 1
	}
}

ACTOR BabyDemoGhostC : BabyDemoGhostA {   
	States {
		Spawn:
			TNT1 A 3
			MSPI C 2 A_FadeOut(0.10)
		Goto Spawn + 1
	}
}

ACTOR BabyDemoGhostD : BabyDemoGhostA {   
	States {
		Spawn:
			TNT1 A 3
			MSPI D 2 A_FadeOut(0.10)
		Goto Spawn + 1
	}
}

ACTOR BabyDemoGhostE : BabyDemoGhostA {   
	States {
		Spawn:
		TNT1 A 3
		MSPI D 2 A_FadeOut(0.10)
		Goto Spawn + 1
	}
}

ACTOR BabyDemoGhostF : BabyDemoGhostA {
	States {
		Spawn:
			TNT1 A 3
			MSPI D 2 A_FadeOut(0.10)
		Goto Spawn + 1
	}
}

ACTOR BabyDemoBall : FusionShot {
	Speed 25
	Damage (4 * random(1, 8))
	DamageType "EnergyGreen"
	Stamina 16
	SeeSound "weapons/plasmaf"
	DeathSound "weapons/plasmax"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			CFX6 A 1 Bright A_SpawnItemEx("BabyDemoTrail",0,0,0,0,0,0,0,128,0)
		Loop
		Death:
			TNT1 A 0 A_SpawnItemEx("GreenParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 AAA 0 A_SpawnItemEx("ExplosionFX4", 0, 0, 0, frandom(-1, 1), frandom(-1, 1), frandom(-1, 1))
			TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
			TNT1 A 0 A_SpawnDebris("GreenSparkFX")
			CFX6 BCDE 3 Bright
		Stop
	}
}

ACTOR BabyDemoTrail {
	Scale 0.75
	Radius 2
	Height 2
	+NOGRAVITY
	+NOBLOCKMAP
	+CLIENTSIDEONLY
	States {
		Spawn:
			TNT1 A 1
			CFX6 A 1 Bright A_FadeOut(0.15)
		Goto Spawn + 1
	}
}

actor GreenSparkFX : ExplosiveSpark {
	Renderstyle Add
	Alpha 0.8
	States {
		Spawn:
			DXSK C 1 BRIGHT A_FadeOut(0.01)
		loop
	}
}

Actor Vore : DnD_BaseHybridMonster {
	//$Category Monsters
	Health 0x7FFFFFFF
	Speed 6
	Radius 48
	Height 64
	XSCale 1.3
	YScale 1.2
	Mass 1000
	PainChance 40
	+ISMONSTER
	+NoTarget
	Obituary "%o couldn't escape a vore."
	SeeSound "Vore/Sight"
	ActiveSound "Vore/Active"
	PainSound "Vore/Pain"
	DeathSound "Vore/Death"
	Species "Arachno"
	Tag "Vore"
	+DONTHURTSPECIES
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_VORE)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_RARE1)
		Goto SpawnSetup
		
		IdleState:
			VORE D 10 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			VORE AA 3 Fast A_Chase
			VORE B 7 Fast A_Chase
			VORE CC 3 Fast A_Chase
			VORE D 7 Fast A_Chase
			VORE EE 3 Fast A_Chase
			VORE F 7 Fast A_Chase
		Loop
		MeleeState:
		MissileState:
			TNT1 A 0 A_PlaySoundEx("Vore/Attack", "Body")
			VORE GHHHH 4 Fast Bright A_FaceTarget
			VORE II 4 Fast Bright A_FaceTarget
			VORE J 8 Fast Bright A_CustomMissile("VoreFirepod", 32, 0, 0)
			VORE JJ 4 Fast Bright A_FaceTarget
		Goto See
		PainState:
			VORE K 4 Fast
			VORE K 4 Fast A_Pain
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			VORE L 6
			VORE M 6 A_Scream
			VORE N 6	
			VORE O 6 A_NoBlocking
			VORE P 8
			VORE Q -1 A_KillMaster
		Stop
		RaiseState:
			VORE QPONML 6
		Goto See
	}
}

Actor VoreExp : BaseExplosionDamage {
	DamageType "MagicalVoid"
	Stamina 8
	Obituary "%o was no match for an archon of hell."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(32, 90)
		Stop
	}
}

Actor VoreFirepod {
	Radius 6
	Height 8
	Speed 16
	FastSpeed 24
	Damage (Random(20, 40))
	DamageType "MagicalVoid"
	Stamina 8
	Projectile
	+SeekerMissile
	+DONTBLAST
	RenderStyle Add
	Alpha 0.85
	SeeSound "Vore/Throw"
	DeathSound "Vore/Hit"
	Decal "RevenantScorch"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			TNT1 A 0 A_SpawnItemEx("VoreFirepodTrail", random(5, -5), 0, random(5, -1), 0, 0, 0, 180)
			VOBA A 1 Bright A_SpawnItemEx("VoreFirepodTrail", random(5, -5), 0, random(5, -1), 0, 0, 0, 180)
			TNT1 A 0 A_SpawnItemEx("VoreFirepodTrail", random(5, -5), 0, random(5, -1), 0, 0, 0, 180)
			VOBA A 1 Bright A_SpawnItemEx("VoreFirepodTrail", random(5, -5), 0, random(5, -1), 0, 0, 0, 180)
			TNT1 A 0 A_SpawnItemEx("VoreFirepodTrail", random(5, -5), 0, random(5, -1), 0, 0, 0, 180)
			VOBA B 1 Bright A_SpawnItemEx("VoreFirepodTrail", random(5, -5), 0, random(5, -1), 0, 0, 0, 180)
			TNT1 A 0 A_SpawnItemEx("VoreFirepodTrail", random(5, -5), 0, random(5, -1), 0, 0, 0, 180)
			VOBA B 1 Bright A_SpawnItemEx("VoreFirepodTrail", random(5, -5), 0, random(5, -1), 0, 0, 0, 180)
			TNT1 A 0 A_SpawnItemEx("VoreFirepodTrail", random(5, -5), 0, random(5, -1), 0, 0, 0, 180)
			VOBA C 1 Bright A_SpawnItemEx("VoreFirepodTrail", random(5, -5), 0, random(5, -1), 0, 0, 0, 180)
			TNT1 A 0 A_SpawnItemEx("VoreFirepodTrail", random(5, -5), 0, random(5, -1), 0, 0, 0, 180)
			VOBA C 1 Bright A_SpawnItemEx("VoreFirepodTrail", random(5, -5), 0, random(5, -1), 0, 0, 0, 180)
			TNT1 A 0 A_JumpIfTargetInLOS(1, 360, 1)
		Loop
			TNT1 A 0 A_SpawnItemEx("VoreFirepodTrail", random(5, -5), 0, random(5, -1), 0, 0, 0, 180)
			VOBA A 1 Bright A_SpawnItemEx("VoreFirepodTrail", random(5, -5), 0, random(5, -1), 0, 0, 0, 180)
			TNT1 A 0 A_SpawnItemEx("VoreFirepodTrail", random(5, -5), 0, random(5, -1), 0, 0, 0, 180)
			VOBA A 1 Bright A_SpawnItemEx("VoreFirepodTrail", random(5, -5), 0, random(5, -1), 0, 0, 0, 180)
			TNT1 A 0 A_JumpIfTargetInLOS(1, 360, 1)
		Goto Spawn+5
			TNT1 AAA 0 Bright A_SeekerMissile(90, 90, SMF_PRECISE)
		Goto Spawn+5
		Death:
			TNT1 A 0 A_SpawnItemEx("PurpleParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
			TNT1 AAA 0 A_SpawnItemEx("ExplosionFX3", 0, 0, 0, frandom(-1, 1), frandom(-1, 1), frandom(-1, 1))
			TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
			TNT1 A 0 A_SpawnItem("VoreExp")
			VOBA DEFGHI 4 Bright
		Stop
	}
}


Actor VoreFirepodTrail {
	Radius 1
	Height 1
	Speed 0
	Projectile
	RenderStyle Add
	Alpha 0.9
	+NoClip
	+CLIENTSIDEONLY
	States {
		Spawn:
		Death:
			TNT1 A 3
			VOBT ABCDE 3 Bright
		Stop
	}
}

Actor CommandoBullet1 : ZombieBullet {
	Damage (random(1, 5) * 3)
	DamageType "Physical"
	Stamina 1
}

Actor CommandoExplosion : BaseExplosionDamage {
	Obituary "%o was torn to shreds by the chaingun commando."
	DamageType "Explosive"
	Stamina 4
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(2 * random(4,5), 96, 0)
		Stop
	}
}

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

Actor ChaingunCommando : DnD_BaseRangedMonster {
	Health 0x7FFFFFFF
	PainChance 64
	Speed 10
	Scale 1.1
	Obituary "%o was torn to shreds by the chaingun commando."
    SeeSound "ChaingunCommando/See"
    PainSound "ChaingunCommando/Pain"
    DeathSound "ChaingunCommando/Die"
	AttackSound "weapons/minigunfire"
	ActiveSound "chainguy/active"
    DropItem "Clip"	
	DropItem "Clip"
	+ISMONSTER
	+NODROPOFF
	Species "Spider"
	+DONTHURTSPECIES
	Tag "Chaingun Commando"
	Radius 24
	Height 64
	Decal Bulletchip
	Mass 512
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_CHAINGUNCOMMANDO)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_RARE1)
		Goto SpawnSetup
	
		IdleState:
			CPSX AB 10 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			CPSX ABCD 4 Fast A_Chase
		Goto See
		MissileState:
			TNT1 A 0 A_Jump(96, "ShockFire")
			CPSX E 8 Fast Bright A_FaceTarget
			TNT1 A 0 A_SpawnItemEx ("bulletcasing", -8, 7, 26, 4, 0, frandom(3.0, 5.0), random(-80, -90))
			TNT1 A 0 A_PlaySound("weapons/minigunfire", CHAN_WEAPON)
			CPSX F 3 Fast Bright A_CustomMissile("CommandoBullet1", 32, 8, frandom(-22.5, 22.5))
			TNT1 A 0 A_SpawnItemEx ("bulletcasing", -8, 7, 26, 4, 0, frandom(3.0, 5.0), random(-80, -90))
			TNT1 A 0 A_PlaySound("weapons/minigunfire", CHAN_WEAPON)
			CPSX E 3 Fast Bright A_CustomMissile("CommandoBullet1", 32, 8, frandom(-22.5, 22.5))
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			CPSX F 1 Bright A_CPosRefire
		Goto MissileState + 2
		ShockFire:
			TNT1 A 0 A_PlaySound("weapons/minigunup", CHAN_WEAPON)
			CPSX Q 24 Fast A_FaceTarget
			CPSX E 8 Fast Bright A_FaceTarget
			TNT1 A 0 A_SpawnItemEx ("exshotguncasing", -8, 7, 26, 4, 0, frandom(3.0, 5.0), random(-80, -90))
			TNT1 A 0 A_PlaySound("weapons/minigunfire", CHAN_WEAPON)
			CPSX F 3 Fast Bright A_CustomMissile("CommandoBullet2", 32, 8, frandom(-22.5, 22.5))
			TNT1 A 0 A_SpawnItemEx ("exshotguncasing", -8, 7, 26, 4, 0, frandom(3.0, 5.0), random(-80, -90))
			TNT1 A 0 A_PlaySound("weapons/minigunfire", CHAN_WEAPON)
			CPSX E 3 Fast Bright A_CustomMissile("CommandoBullet2", 32, 8, frandom(-22.5, 22.5))
			CPSX F 1 Bright A_CPosRefire
		Goto ShockFire + 3
		PainState:
			CPSX G 3 Fast
			CPSX G 3 Fast A_Pain
			CPSX G 0 A_Jump(128, "Dash")
		Goto See
		Dash:
			CPSX E 0 A_FaceTarget
			CPSX E 0 A_Jump(128, "OtherSide")
			CPSX E 0 ThrustThing(angle*256/360 + 64, 10, 0, 0)
		Goto Missile
		OtherSide:
			CPSX E 0 ThrustThing(angle*256/360 + 192, 10, 0, 0)
		Goto Missile
		DeathState:
			CPSX H 5 A_StopSound(CHAN_WEAPON)
			CPSX I 5 A_Scream
			CPSX J 5 A_Fall
			CPSX KLMNO 5
			CPSX P -1 A_KillMaster
		Stop
		XDeathState:
			TNT1 A 0 A_StopSound(CHAN_WEAPON)
			TNT1 A 0 A_SpawnDebris("NashGore_Gib9",0)
			TNT1 A 0 A_SpawnDebris("NashGore_Gib10",0)
			TNT1 A 0 A_SpawnDebris("NashGore_Gib11",0)
			TNT1 A 0 A_SpawnDebris("NashGore_Gib11",0)
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low_Delayed", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			CPSX G 2 A_XSCream
			CPSX G 1 A_NoBlocking
			TNT1 A -1 A_KillMaster
		Stop
		RaiseState:
			CPSX P 5
			CPSX ONMLKJIH 5
		Goto See
	}	
}

Actor ChaingunGeneral : DnD_BaseRangedMonster {
	Health 0x7FFFFFFF
	PainChance 64
	Speed 11
	Scale 1.1
	Radius 24
	Height 64
	Mass 512
	Obituary "%o was pinned to the wall by the chaingun general."
    SeeSound "BChaingunner/See"
    PainSound "BChaingunner/Pain"
    DeathSound "BChaingunner/Die"
	ActiveSound "BChaingunner/Act"
	+ISMONSTER
	+NODROPOFF
	Species "Spider"
	+DONTHURTSPECIES
	Tag "Chaingun General"
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_CHAINGUNGENERAL)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_RARE1)
		Goto SpawnSetup
		
		IdleState:
			ECMI AB 10 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			ECMI ABCD 5 Fast A_Chase
		Goto See
		MissileState:
			ECMI U 8 Fast A_FaceTarget
		MissileLoop:
			TNT1 A 0 A_PlaySound("weapons/NG2Fire", 5)
			ECMI F 3 Fast Bright A_CustomMissile("NailProjectileWeak", 36, 14)
			TNT1 A 0 A_PlaySound("weapons/NG2Fire", 5)
			ECMI E 3 Fast Bright A_CustomMissile("NailProjectileWeak", 36, 14)
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			ECMI F 1 Bright A_CPosRefire
		Loop
		PainState:
			ECMI G 3 Fast
			ECMI G 3 Fast A_Pain
		Goto See
		DeathState:
			ECMI H 5 A_GiveToTarget("DnD_ShotUndead", 1)
			ECMI I 5 A_Scream
			ECMI J 5 A_Fall
			ECMI KL 5
			ECMI M -1 A_KillMaster
		Stop
		XDeathState:
			TNT1 A 0 A_SpawnDebris("NashGore_Gib9",0)
			TNT1 A 0 A_SpawnDebris("NashGore_Gib10",0)
			TNT1 A 0 A_SpawnDebris("NashGore_Gib11",0)
			TNT1 A 0 A_SpawnDebris("NashGore_Gib11",0)
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low_Delayed", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			ECMI N 2 A_XSCream
			ECMI N 1 A_NoBlocking
			ECMI OPQR 3
			ECMI S -1 A_KillMaster
		Stop
		RaiseState:
			ECMI LKJIH 5
		Goto See
	}	
}

Actor NailProjectileWeak {
	Damage (7)
	Speed 36
	DamageType "Physical"
	Stamina 1
	Radius 3
	Height 4
	Speed 40
	Scale 0.5
	PROJECTILE
	+RIPPER
	+MTHRUSPECIES
	+BloodSplatter
	+DONTREFLECT
	+NODAMAGETHRUST
	+THRUGHOST
	SeeSound ""
	DeathSound ""
	Decal "BulletChip"
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			NAI2 AAAAA 1 Bright A_SpawnItemEx("NailBlur2", 0, 0, 0, 1, 0, 0, 180, 128)
			TNT1 A 0 A_PlaySound("Weapons/NailFlight")
		Loop
		Death:
			TNT1 AAA 0 A_CustomMissile("FireballSmoke", 0, 0, random(0,360), 2, random(0,360))
			NLPJ A 0 A_PlaySound("Weapons/NailRic")
			NLPJ BCDEFG 2
		Stop
	}
}

Actor Legionnaire : DnD_BaseHybridMonster {
	Health 0x7FFFFFFF
	PainChance 48
	Speed 14
	Height 64
	Radius 32
	Mass 512
	Obituary "%o didn't expect to fight against well trained Legionnaires."
    SeeSound "Legionnaire/See"
    PainSound "Legionnaire/Pain"
    DeathSound "Legionnaire/Die"
	ActiveSound "Legionnaire/Act"
	DropItem "Cell", 128
	Species "Spider"
	+ISMONSTER
	+NODROPOFF
	+DONTHURTSPECIES
	Tag "Legionnaire"
	MeleeRange 84
	States {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_LEGIONNAIRE)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_RARE2)
		Goto SpawnSetup

		IdleState:
			LEGN A 10 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			LEGN BC 3 Fast A_Chase
			LEGN D 5 Fast A_Chase
			LEGN EF 3 Fast A_Chase
			LEGN G 5 Fast A_Chase
		Goto See
		MeleeState:
			LEGN H 5 Fast A_PlaySound("Weapons/KickSwing")
			LEGN I 5 Fast A_FaceTarget
			TNT1 A 0 A_CustomMissile("LegionnaireBash")
			LEGN J 4 Fast A_CustomMeleeAttack(random(5, 10) * 2, "weapons/vblhit", "", "Knockback")
			LEGN IH 3 Fast
			LEGN H 0 A_Jump(192, "Missile")
		Goto See
		MissileState:
			LEGN A 6 Fast A_FaceTarget
			LEGN L 3 Fast Bright A_CustomMissile("LegionnaireMissile", 60, 16, 0)
			TNT1 A 0 A_FaceTarget
			LEGN A 4 Fast A_JumpIfCloser(84, "Melee")
			LEGN L 3 Fast Bright A_CustomMissile("LegionnaireMissile", 60, 16, 0)
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			TNT1 A 0 A_FaceTarget
			LEGN A 4 Fast A_JumpIfCloser(84, "Melee")
			LEGN L 3 Fast Bright A_CustomMissile("LegionnaireMissile2", 60, 16, 0)
			TNT1 A 0 A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			LEGN A 4 Fast A_MonsterRefire(64, "See")
		Goto MissileState + 1
		Dash:
			LEGN A 0 A_FaceTarget
			LEGN A 0 A_Jump(128, "OtherSide")
			LEGN A 0 ThrustThing(angle*256/360 + 64, 10, 0, 0)
		Goto Missile
		OtherSide:
			LEGN A 0 ThrustThing(angle*256/360 + 192, 10, 0, 0)
		Goto Missile
		PainState:
			LEGN K 3 Fast
			LEGN K 3 Fast A_Pain
			LEGN K 0 A_Jump(128, "Dash")
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Medium", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			LEGN M 7 A_Scream
			LEGN N 6 A_NoBlocking
			LEGN OPQ 4
			LEGN R -1 A_KillMaster
		Stop
		RaiseState:
			LEGN QPONM 4
		Goto See
	}	
}

Actor LegionnaireBash {
	radius 5
	height 5
	speed 28
	DamageType "Melee"
	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 LegionnaireTrail1 {
	+NOINTERACTION
	+CLIENTSIDEONLY
	Renderstyle Add
	Alpha 0.75
	Scale 0.4
	States {
		Spawn:
			LEGN S 1 Bright A_FadeOut(0.025)
		Loop
	}
}

Actor LegionnaireMissile {
	Speed 30
	Radius 6
	Height 12
	Damage (5 * random(2, 6))
	DamageType "EnergyRed"
	Stamina 16
	SeeSound "Legionnaire/Fire"
	DeathSound "Legionnaire/Hit"
	Renderstyle Add
	Alpha 0.9
	Scale 0.4
	PROJECTILE
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			LEGN S -1 Bright
		Stop
		Death:
			LGP0 A 3 Bright
			TNT1 A 0 A_SpawnItem("RedParticleSpawner")
			LGP0 BCDEFGH 3 Bright
		Stop
	}
}

ACTOR LegionnaireTrail2 {
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			TNT1 A 1
			KN2M FGFG 7 BRIGHT
		Stop
	}
}

Actor LegionnaireMissile2 : LegionnaireMissile {
	Speed 20
	const int dx = 8;
	var int user_count;
	+SEEKERMISSILE
	States {
		Spawn:
			TNT1 A 0 NoDelay A_SetUserVar("user_count", 0)
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Pierce Check")
		SpawnLoop:
			LEGN S 2 Bright A_SeekerMissile(25, 10, SMF_CURSPEED)
			TNT1 A 0 A_SpawnItemEx("LegionnaireTrail2", 0, dx + dx * sin(user_count * 30), dx * cos(user_count * 30))
			TNT1 A 0 A_SpawnItemEx("LegionnaireTrail2", 0, -dx + dx * sin(user_count * 30), dx * cos(user_count * 30))
			TNT1 A 0 A_SpawnItemEx("LegionnaireTrail2", 0, dx * sin(user_count * 30), dx + dx * cos(user_count * 30))
			TNT1 A 0 A_SetUserVar("user_count", (user_count + 1) % 12)
		Loop
	}
}

ACTOR Manticore : DnD_BaseRangedMonster {
	OBITUARY "%o was blown away by a Manticore."
	Health 0x7FFFFFFF
	Radius 64
	Height 64
	Mass 2048
	Speed 12
	PainChance 96   
	SEESOUND "Manticore/See"
	PainSound "Manticore/Pain"
	DEATHSOUND "Manticore/death"
	ACTIVESOUND "Manticore/Act"
	Species "Spider"
	Tag "Manticore"
	+ISMONSTER
	Scale 0.825
	+DONTHURTSPECIES
	+MissileMore
	+MissileEvenMore
	+NORADIUSDMG
	+DONTRIP
	states {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_MANTICORE)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_VERYRARE)
		Goto SpawnSetup

		IdleState:
			DNET AB 10 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			DNET AABB 4 A_Chase
			TNT1 A 0 A_PlaySound("hectebus/step")
			DNET CCDD 4 A_Chase
			DNET D 0 A_PlaySound("hectebus/step")
		Goto See
		MissileState:
			DNET EF 9 A_FaceTarget
			TNT1 A 0 A_Jump(128, "Repeated")
			DNET G 8 A_FaceTarget
			TNT1 A 0 A_CustomMissile("ManticoreRocket", 82, -16, 0, CMF_AIMOFFSET)
			DNET H 5 bright A_CustomMissile("ManticoreRocket", 82, 17, 0, CMF_AIMOFFSET)
			DNET G 8 A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			TNT1 A 0 A_CustomMissile("ManticoreRocket", 82, -16, 0, CMF_AIMOFFSET)
			DNET H 5 bright A_CustomMissile("ManticoreRocket", 82, 17, 0, CMF_AIMOFFSET)
			DNET G 8 A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			TNT1 A 0 A_CustomMissile("ManticoreRocket", 82, -16, 0, CMF_AIMOFFSET)
			DNET H 5 bright A_CustomMissile("ManticoreRocket", 82, 17, 0, CMF_AIMOFFSET)
			DNET G 8 A_FaceTarget
			TNT1 A 0 ACS_NamedExecuteAlways("DnD On Monster Attack", 0)
			TNT1 A 0 A_CustomMissile("ManticoreRocket", 82, -16, 0, CMF_AIMOFFSET)
			DNET H 5 bright A_CustomMissile("ManticoreRocket", 82, 17, 0, CMF_AIMOFFSET)
			DNET G 5
		Goto See
		Repeated:
			DNET G 8 A_FaceTarget
			TNT1 A 0 A_CustomMissile("ManticoreRocket", 82, -16, 0, CMF_AIMOFFSET)
			DNET H 5 bright A_CustomMissile("ManticoreRocket", 82, 17, 0, CMF_AIMOFFSET)
			DNET G 1 A_SpidRefire
		Loop
		PainState:
			DNET E 3 Fast
			TNT1 A 0 A_SpawnDebris("MetalScrap")
			DNET E 3 Fast A_Pain
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			DNET I 8 A_Scream
			DNET J 6 A_NoBlocking
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low_Delayed", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			DNET KLM 5
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low_Delayed", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			DNET NOPQ 5
			DNET R -1 A_KillMaster
		Stop
		RaiseState:
			DNET QPONMLKJI 5
		Goto See
	}
}

Actor ManticoreRocketSmoke {
	Renderstyle Translucent
	Alpha 0.8
	+CLIENTSIDEONLY
	+NOINTERACTION
	States {
		Spawn:
			MPU9 AAABBBCCCDDDEEE 1 A_FadeOut(0.05)
		Stop
	}
}

Actor ManticoreRocket {
	PROJECTILE
	Damage (4 * random(4, 5))
	DamageType "Explosive"
	Stamina 4
	SeeSound "weapons/devastatorfire"
	Deathsound "Weapons/DevastatorExpl"
	Speed 28
	Height 12
	Radius 6
	+DONTREFLECT
	+THRUGHOST
	States {
		Spawn:
			DEVM A 2 A_SpawnItemEx("ManticoreRocketSmoke", 0, 0, 0, frandom(-1, 1), frandom(-1, 1), frandom(-1, 1))
		Loop
		Death:
			TNT1 A 0 A_SpawnItemEx ("ExplosionFlareSmall", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			TNT1 A 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 180))
			TNT1 AA 0 A_CustomMissile ("ExplosionParticleHeavy", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 AA 0 A_CustomMissile ("ExplosionParticleVeryFast", 0, 0, random (0, 360), 2, random (0, 360))
			TNT1 AAA 0 A_CustomMissile("DevastatorSmoke", 0, 0, random(0, 360), 2, random(0, 180))
			TNT1 A 1 A_SpawnItem("ManticoreExp")
			TNT1 A 1 A_SpawnItem("DevastatorExplosion")
		Stop
	}
}

Actor ManticoreExp : BaseExplosionDamage {
	DamageType "Explosive"
	Stamina 4
	Obituary "%o was blown away by a Manticore."
	States {
		Spawn:
			TNT1 A 0 NoDelay ACS_NamedExecuteAlways("DnD Pierce Check")
			TNT1 A 1 A_Explode(20, 96, 0)
		Stop
	}
}

ACTOR Ophidian : DnD_BaseRangedMonster {
	OBITUARY "%o was rattled by an Ophidian."
	Health 0x7FFFFFFF
	Radius 32
	Height 64
	Mass 768
	Speed 9
	Scale 1.125
	PainChance 64
	SEESOUND "Ophidian/See"
	PainSound "Ophidian/Pain"
	DEATHSOUND "Ophidian/Die"
	ACTIVESOUND "Ophidian/Act"
	Species "Spider"
	Tag "Ophidian"
	+ISMONSTER
	+DONTRIP
	+DONTHURTSPECIES
	+MissileMore
	states {
		SetInfo:
			TNT1 A 0 A_SetArg(4, DND_OPHIDIAN)
			TNT1 A 0 ACS_NamedExecuteWithResult("DnD Init Monster Data", DND_MWEIGHT_RARE1)
		Goto SpawnSetup

		IdleState:
			OPHI AB 10 A_GiveInventory("DnD_SightChecker", 1)
		Loop
		SeeState:
			OPHI AABBCCDD 2 Fast A_Chase
		Goto See
		MissileState:
			TNT1 A 0 A_JumpIfInventory("DnD_BlindCastCooldown", 1, "MissileGo")
			TNT1 A 0 A_Jump(72, "Blind")
		MissileGo:
			TNT1 A 0 A_PlaySound("Weapons/SunStaffCharge", CHAN_5)
			TNT1 A 0 A_CustomMissile("OphidianDamageMarker", 44, -8)
			OPHI FFFFF 5 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("Weapons/SunStaffFire", CHAN_5)
			OPHI F 8 Fast A_CustomMissile("OphidianBeam", 40, -8)
			TNT1 A 0 A_Jump(128, "Finish")
			OPHI F 5 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("Weapons/SunStaffFire", CHAN_5)
			OPHI F 8 Fast A_CustomMissile("OphidianBeam", 40, -8)
			TNT1 A 0 A_Jump(128, "Finish")
			OPHI F 5 Fast A_FaceTarget
			TNT1 A 0 A_PlaySound("Weapons/SunStaffFire", CHAN_5)
			OPHI F 8 Fast A_CustomMissile("OphidianBeam", 40, -8)
		Goto See
		Finish:
			OPHI F 2 Fast
		Goto See
		Blind:
			TNT1 A 0 A_JumpIfCloser(480, "BlindCont")
		Goto MissileGo
		BlindCont:
			TNT1 A 0 ACS_NamedExecuteAlways("DnD Create Blind FX", 0, DND_BLIND_HEAVY, 480)
			OPHI F 32 Fast Bright A_FaceTarget
			TNT1 A 0 A_GiveInventory("DnD_BlindCastCooldown", 1)
			OPHI F 8 Fast Bright ACS_NamedExecuteWithResult("DnD Monster Blind Cast", 105 | (DND_BLIND_HEAVY << 16), 8 | (96 << 8) | (108 << 16), 100, 480)
		Goto MissileGo
		PainState:
			OPHI E 3 Fast ACS_NamedExecuteWithResult("DnD Monster Blind Cancel CS")
			OPHI E 3 Fast A_Pain
		Goto See
		XDeathState:
			TNT1 A 0 A_SpawnItemEx("GenericGibber_High", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
		DeathState:
			OPHI G 5 A_Scream
			OPHI H 5 A_NoBlocking
			TNT1 A 0 A_SpawnItemEx("GenericGibber_Low", 0, 0, 0, 0, 0, 0, 0, SXF_USEBLOODCOLOR)
			OPHI IJKLMNO 5
			OPHI P -1 A_KillMaster
		Stop
		RaiseState:
			OPHI PONMLKJIHG 4
		Goto See
	}
}

Actor OphidianDamageMarker {
	Renderstyle Add
	Scale 0.5
	Translation "112:127=%[0.00,0.00,0.00]:[1.73,1.14,0.54]"
	const int t = 6;
	const float s = 0.5 / 12;
	var int user_count;
	+NOINTERACTION
	+FORCEXYBILLBOARD
	States {
		Spawn:
			TNT1 A 0 NoDelay A_SetUserVar("user_count", 0)
		SpawnLoop:
			TNT1 A 0 A_JumpIf(user_count >= t, "Finish")
			R075 P 2 Fast Bright A_Warp(AAPTR_TARGET, 16, -8, 44, 0, WARPF_INTERPOLATE)
			TNT1 A 0 A_JumpIfInTargetInventory("BlindCancelledSignal", 1, "Finish")
			TNT1 A 0 A_SetScale(scalex - s, scaley - s)
			R075 P 2 Fast Bright A_Warp(AAPTR_TARGET, 16, -8, 44, 0, WARPF_INTERPOLATE)
			TNT1 A 0 A_JumpIfInTargetInventory("BlindCancelledSignal", 1, "Finish")
			TNT1 A 0 A_SetScale(scalex - s, scaley - s)
			TNT1 A 0 A_JumpIfInTargetInventory("DnD_Boolean", 1, "Fade")
			TNT1 A 0 A_SetUserVar("user_count", user_count + 1)
		Loop
		Finish:
			TNT1 A 1
		Stop
		Fade:
			R075 P 1 Fast A_FadeOut(0.1)
		Wait
	}
}

Actor OphidianBeam : DnD_BaseProjectile {
	Radius 4
	Height 8
	Speed 40
	Damage (24)
	Decal "PlasmaScorchLower"
	+FORCEXYBILLBOARD
	+BLOODSPLATTER
	Renderstyle Add
	Alpha 0.90
	Scale 0.875
	DeathSound "Weapons/SunbeamHit"
	DamageType "MagicalFire"
	Stamina 40
	States {
		SpawnState:
			FX01 A 1 Bright A_SpawnItemEx("SunBeamDamagerTrailSpawner", 0, 0, 8)
		Loop
		Death:
			TNT1 A 0 A_SpawnItemEx ("SunFlare", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE | SXF_NOCHECKPOSITION, 0)
			TNT1 AA 0 A_SpawnItemEx("SunRay", 0, 0, 15, 8, 0, Random(4, 16), Random(0, 360), 160, 0)
			TNT1 A 0 A_Explode(32, 64, 0)
			TNT1 A 8 A_SpawnItem("SunBeamExplosionFX")
		Stop
	}
}