//////////////////////////////////////
// UNIVERSAL GIBS FOR MONSTERS		//
//////////////////////////////////////

//////////////////////////////////////
ACTOR TorsoFlying: UniversalBloodSlatter
{
	Scale 0.5
	BounceCount 2
	SeeSound "LILGORE"
	DeathSound "LILGORE3"
	+BOUNCEONWALLS
	+MOVEWITHSECTOR
	+SKYEXPLODE
	States
{
	Spawn:
		TRSO ABCD 4
	Loop

	Death:
		TRSO ABCD 1
		TNT1 AAA 0 A_CustomMissile("FlyingBlood", 20,  0, random(0, 360), 2, random(0, 90))
		TNT1 AAA 0 A_CustomMissile("FlyingBlood", 20,  0, random(0, 360), 2, random(0, 90))
		TNT1 AAA 0 A_CustomMissile("FlyingBlood", 20,  0, random(0, 360), 2, random(0, 90))
		TRSO A -1
		TNT1 A 0 A_SpawnItem ("BloodPoolsz")
	Stop
	}
}

//////////////////////////////////////
ACTOR IntestinalGutsFlying: UniversalBloodSlatter
{
	Scale 0.5
	BounceCount 3
	DeathSound "LILGORE6"
	+BOUNCEONWALLS
	+MOVEWITHSECTOR
	States
{
	Spawn:
		GUTS ABCDEFGHIJ 4
	Loop

	Death:
		GUTS J 1
		TNT1 AAA 0 A_CustomMissile("FlyingBlood", 20,  0, random(0, 360), 2, random(0, 90))
		GUTS K -1
		TNT1 A 0 A_SpawnItem ("BloodPoolsz")
	Stop
	}
}

//////////////////////////////////////
ACTOR OrgansFlying: UniversalBloodSlatter
{
	Scale 0.8
	BounceCount 3
	+BOUNCEONWALLS
	+BOUNCEONCEILINGS
	+MOVEWITHSECTOR
	Decal ZedekBloodSauce
	States
{
	Spawn:
        ORGN ABCD 3 A_CustomMissile ("FlyingBloodTrail", 0, 0, random (0, 360), 2, random (0, 360))
		XME8 A 3
	Loop

	Death:
		ORGN ABCD 1
		XME8 A -1
		TNT1 AAA 0 A_CustomMissile("FlyingBlood", 20,  0, random(0, 360), 2, random(0, 90))
		TNT1 AAA 0 A_CustomMissile("FlyingBlood", 20,  0, random(0, 360), 2, random(0, 90))
		ORGN B 1000
	Stop
	}
}

//////////////////////////////////////
ACTOR RibsFlying: UniversalBloodSlatter
{
	Scale 0.8
	BounceCount 3
	DeathSound "LILGORE5"
	+BOUNCEONWALLS
	+MOVEWITHSECTOR
	States
{
	Spawn:
		RIBC ABCD 3
	Loop

	Death:
		RIBC ABCD 1
		TNT1 A 0 A_Playsound ("LILGORE", CHAN_BODY)
		TNT1 AAA 0 A_CustomMissile("FlyingBlood", 20,  0, random(0, 360), 2, random(0, 90))
		TNT1 AAA 0 A_CustomMissile("FlyingBlood", 20,  0, random(0, 360), 2, random(0, 90))
		TNT1 AAA 0 A_CustomMissile("FlyingBlood", 20,  0, random(0, 360), 2, random(0, 90))
		TNT1 AAA 0 A_CustomMissile("FlyingBloodTrail", 20,  0, random(0, 360), 2, random(0, 90))
		TNT1 AAA 0 A_CustomMissile("FlyingBlood", 20,  0, random(0, 360), 2, random(0, 90))
		TNT1 AAA 0 A_CustomMissile("FlyingBloodTrail", 20,  0, random(0, 360), 2, random(0, 90))
		TNT1 A 0 A_SpawnItem ("BloodPoolsz")
		RIBC A 2000
	Stop
	}
}

///////////////////////////////////////
ACTOR GoreChunk1
{
	Radius 8
	Height 8
	Mass 1
	Speed 10
	Scale 0.5
	+NOBLOCKMAP
	+MISSILE
	+BOUNCEONWALLS
	+NOTELEPORT
	+MOVEWITHSECTOR
	+CLIENTSIDEONLY
	+RIPPER
	+BLOODLESSIMPACT 
	-DONTSPLASH
	+SKYEXPLODE
	+THRUGHOST
	DamageType Blood
	DeathSound "LILGORE4"
	Decal BloodSuperSplatter
	States
{
	Spawn:
		CHN2 ABCD 3 A_CustomMissile ("FlyingBloodTrail", 0, 0, random (0, 360), 2, random (0, 360))
	Loop
	
	Death:
		TNT1 A 0 A_SpawnItem("BloodSpot",0,0,0,1)
		CHNK A 2000
	Stop
		
	Splash:
		TNT1 A 0
	Stop
	}
}

///////////////////////////////////////
ACTOR GoreChunk2
{
	Radius 8
	Height 8
	Mass 1
	Speed 10
	Mass 1
	Scale 0.7
	+BOUNCEONWALLS
	+NOBLOCKMAP
	+MISSILE
	+NOTELEPORT
	+MOVEWITHSECTOR
	+CLIENTSIDEONLY
	+RIPPER
	+SKYEXPLODE
	+BLOODLESSIMPACT 
	-DONTSPLASH
	+THRUGHOST
	DamageType Blood
	DeathSound "LILGORE2"
	Decal ZedekBloodSauce
	States
{
	Spawn:
		CHN3 ABCD 3 A_CustomMissile ("FlyingBloodTrail", 0, 0, random (0, 360), 2, random (0, 360))
	Loop
	
	Death:
		TNT1 A 0 A_SpawnItem("BloodSpot",0,0,0,1)
		CHNK C 1000
	Stop
		
	Splash:
		TNT1 A 0
	Stop
	}
}

///////////////////////////////////////
ACTOR GoreChunk3
{
	Radius 8
	Height 8
	Mass 1
	Speed 10
	Mass 1
	Scale 0.5
	+NOBLOCKMAP
	+MISSILE
	+SKYEXPLODE
	+NOTELEPORT
	+MOVEWITHSECTOR
	+CLIENTSIDEONLY
	+BOUNCEONWALLS
	+RIPPER
	+BLOODLESSIMPACT 
	-DONTSPLASH
	+THRUGHOST
	DamageType Blood
	DeathSound "LILGORE3"
	Decal ZedekBloodSauce
	States
{
	Spawn:
		CHN4 ABCD 3 A_CustomMissile ("FlyingBloodTrail", 0, 0, random (0, 360), 2, random (0, 360))
	Loop
	
	Death:
		TNT1 A 0 A_SpawnItem("BloodSpot",0,0,0,1)
		CHNK D 1000
	Stop
		
	Splash:
		TNT1 A 0
	Stop
	}
}

///////////////////////////////////////
ACTOR GoreChunkSuper
{
	Radius 8
	Height 8
	Mass 1
	Speed 10
	Mass 1
	Scale 0.8
	+NOBLOCKMAP
	+MISSILE
	+SKYEXPLODE
	+NOTELEPORT
	+MOVEWITHSECTOR
	+BOUNCEONWALLS
	+CLIENTSIDEONLY
	+RIPPER
	+BLOODLESSIMPACT 
	-DONTSPLASH
	+THRUGHOST
	DamageType Blood
	DeathSound "LILGORE6"
	Decal NormalBloodSplatter
	States
{
	Spawn:
		CHN1 ABCD 3 A_CustomMissile ("FlyingBloodTrail", 0, 0, random (0, 360), 2, random (0, 360))
	Loop
	
	Death:
		TNT1 A 0 A_SpawnItem("BloodSpot",0,0,0,1)
		CHNK B 1000
	Stop
		
	Splash:
		TNT1 A 0
	Stop
	}
}

//////////////////////////////////////
ACTOR XDeathMonster
{
    Radius 1
    Height 1
    Speed 0
    Scale 0.6
	Mass 1
	Scale 0.7
    +NOBLOCKMAP
	+MISSILE
	+SKYEXPLODE
    +NOTELEPORT
    +MOVEWITHSECTOR
    +CLIENTSIDEONLY
	-DONTSPLASH
	+THRUGHOST
	+THRUACTORS
	+FLOORCLIP
	Mass 1
	Decal NormalBloodSplatter
    States
    {
    Spawn:
	    BLHT ABCDEFGHI 2
	Loop
	
	Death:
		XDT3 G 2000
	Stop
		
	Splash:
	
	NoSpawn:
		TNT1 A 0
	Stop
    }
}

//////////////////////////////////////
ACTOR XDeathMonster2: XDeathMonster
{
	Speed 8
	Radius 2
	Height 2
	Gravity 0.4
	Scale 0.7
	+CLIENTSIDEONLY
	+SKYEXPLODE
	+DONTSPLASH
	Decal BloodSuperSplatter
	DeathSound "misc/xdeath2"
	SeeSound "misc/xdeath4"
	States
{
	Spawn:
		XMT1 ABCDEFGH 2
	Loop
	
	Death:
		TNT1 A 0 A_CheckFloor("SpawnFloor")
		TNT1 A 0 A_CheckCeiling("SpawnCeiling")
		TNT1 A 0 A_SpawnItem("SmearingXDeath2")
	Stop

	SpawnFloor:
		XMT1 M 1
		TNT1 A 0 A_QueueCorpse
		XMT1 M -1
	Stop

	SpawnCeiling:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("CeilXDeath2", 0, 0, 8)
		TNT1 A 0 A_SpawnItemEx ("CeilBloodSpot", 0, 0, 1)
	Stop	

	Vanish:
		TNT1 A 5
	Stop
	}
}

//////////////////////////////////////
ACTOR XDeathMonster3: XDeathMonster2
{
	DeathSound "LILGORE4"
	SeeSound "LILGORE"
	Decal BloodSuperSplatter
	Scale 0.7
	States
	{
	Spawn:
		XMT2 ABCDEFGH 2 
	Loop

	Death:
		TNT1 A 0
		TNT1 A 0 A_CheckFloor("SpawnFloor")
		TNT1 A 0 A_CheckCeiling("SpawnCeiling")
		TNT1 A 0 A_SpawnItem("SmearingXDeath3")
	Stop

	SpawnFloor:
		XMT2 I 1
		TNT1 A 0 A_QueueCorpse
		XMT2 I -1
	Stop

	SpawnCeiling:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("CeilXDeath3", 0, 0, 8)
		TNT1 A 0 A_SpawnItemEx ("CeilBloodSpot", 0, 0, 1)
	Stop

	Vanish:
		TNT2 A 5
	Stop
	}
}

//////////////////////////////////////
ACTOR GreatBloodSpot
{
	XScale 1.0
	YScale 0.3
	Radius 1
	Height 1
	Scale 1.1
	+THRUACTORS
	+DONTGIB
	+CLIENTSIDEONLY
	+NOCLIP
	Decal NormalBloodSplatter
	States
{
	Spawn:
		BSPR C 1
		TNT1 A 0 A_SetAngle(random (0, 360))
		BSPR C 1 A_QueueCorpse
		BSPR C -1
	Stop
	
	Death:
		XDT3 G -1
	Stop
	}
}

//////////////////////////////////////
ACTOR GreatBloodSpot2: GreatBloodSpot
{
	States
	{
	Spawn:
		BSPR D 1
		BSPR D 1 A_QueueCorpse
		BSPR D -1
	Stop
	
	Death:
		XDT3 G -1
	Stop
	}
}

//////////////////////////////////////
ACTOR CeilBloodSpot: GreatBloodSpot2
{
	XScale 0.6
	YScale 0.15
	Radius 1
	Gravity 0.0
	Height 1
	+NOGRAVITY
	States
{
	Spawn:
		BSPR C 1
		TNT1 A 0 A_SetAngle(random (0, 360))
		BSPR C 1 A_QueueCorpse
		TNT1 A 0 A_SpawnItem ("CeilBloodSpawner")
		
	Live:
		BSPR C 10 ThrustThingZ(0, 20, 0, 1)
	Loop
	}
}

//////////////////////////////////////
ACTOR XDeath2NoStick: XDeathMonster2
{
	Speed 0
	Gravity 0.4
	Radius 1
	Height 0
	Scale 0.7
	DeathSound "misc/xdeath2"
	SeeSound "none"
	States
{
	Spawn:
		XMT1 FFFGGH 2
		
	Live:
		TNT1 A 0 A_CheckFloor("Death")
		XMT1 ABCDEFGH 2
	Loop

	Death:
		XMT1 M 1
		TNT1 A 0 A_QueueCorpse
		XMT1 M 3
		TNT1 A 1 A_Playsound ("LILGORE", CHAN_5)
		XMT1 M -1
	Stop
	}
}

//////////////////////////////////////
ACTOR XDeath3NoStick: XDeath2NoStick
{

	States
	{
	Spawn:
		TNT1 A 0 A_CheckFloor("Death")
		XMT2 O 3
	Loop
	
    Death:
		XMT2 I 1
		TNT1 A 0 A_QueueCorpse
		XMT2 I 3
		XMT2 I -1
	Stop
    }
}

//////////////////////////////////////
ACTOR SmearingXDeath2
{
    Radius 1
    Height 1
	Mass 1
	Scale 0.8
    +NOBLOCKMAP
    +NOTELEPORT
	+THRUGHOST
	+CLIENTSIDEONLY
	+DONTSPLASH
	+MOVEWITHSECTOR
	+FORCEXYBILLBOARD
	+NOGRAVITY
	States
{
	Spawn:
		XMT1 N 10
		TNT1 A 0 ThrustThingZ(0, 1, 1, 1)
		TNT1 A 0 A_Jump(255, "Spawn1", "Spawn2", "Spawn3", "Spawn4")

	Spawn1:
		XMT1 NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 2 A_CheckFloor("Rest")
	Goto Death

	Spawn2:
		XMT1 NNNNNNNNNNNNNNNNNNNNNNNN 2 A_CheckFloor("Rest")
	Goto Death

	Spawn3:
		XMT1 NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 2 A_CheckFloor("Rest")
	Goto Death

	Spawn4:
		XMT1 NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN 2 A_CheckFloor("Rest")
	Goto Death

	Death:
		TNT1 A 0
	Stop

	Rest:
		XMT1 M 1
		TNT1 A 0 A_QueueCorpse
		XMT1 M -1
	Stop

	Vanish:
		TNT1 A 5
	Stop
	}
}

//////////////////////////////////////
ACTOR SmearingXDeath3: SmearingXDeath2
{

	States
    {
	Spawn:
		XME2 G 10
		TNT1 A 0 ThrustThingZ(0, 1, 1, 1)
		TNT1 A 0 A_Jump(255, "Spawn1", "Spawn2", "Spawn3", "Spawn4")

	Spawn1:
		XMT2 OOOOOOOOOOOOOOOO 2 A_CheckFloor("Rest")
		Goto Death
	
	Spawn2:
		XMT2 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 2 A_CheckFloor("Rest")
		Goto Death
	
	Spawn3:
		XMT2 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 2 A_CheckFloor("Rest")
		Goto Death
	
	Spawn4:
		XMT2 OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO 2 A_CheckFloor("Rest")
		Goto Death
	
	Death:
		TNT1 A 0
		TNT1 A 0 A_SpawnItem("XDeath3NoStick")
        Stop
		
	Rest:
		XMT2 I 1
		TNT1 A 0 A_QueueCorpse
		XMT2 I -1
		Stop
		
	Vanish:
	    TNT1 A 5
		Stop
    }
}

//////////////////////////////////////
ACTOR CeilXDeath2
{
	Scale 0.8
	Renderstyle Normal 
	PROJECTILE
	DeathSound "LILGORE3"
	+MISSILE
	+SPAWNCEILING
	+MOVEWITHSECTOR
	+NOGRAVITY
	+DONTSPLASH
	+CEILINGHUGGER
	States
{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_JUmp (255, "Live1", "Live2", "Live3")
	Goto Live1

	Live1:
		XMT1 IIIIIIIIIIIIII 2 ThrustThingZ(0, 20, 0, 1)
	Goto Fall

	Live2:
		XMT1 IIIIIIIIIIIIII 2 ThrustThingZ(0, 20, 0, 1)
	Goto Fall

	Live3:
		XMT1 IIIIIIIIIIIIII 2 ThrustThingZ(0, 20, 0, 1)
	Goto Fall

	Fall:
		XMT1 F 0
		XMT1 JJJKKLL 2
		TNT1 A 0 A_SpawnItemEx("XDeath2NoStick", 0, 0, 0, 0, 0, -1)
	Stop
	
	Splash:
		BLOD A 0
	Stop
	}
}

//////////////////////////////////////
ACTOR CeilXDeath3: CeilXDeath2
{
	States
	{
	Spawn:
	Goto Crash
	
	Death:
	
	Crash:
		TNT1 A 0
		TNT1 A 0 A_JUmp (255, "Live1", "Live2", "Live3")
	Goto Live1

	Live1:
		XMT2 JJJJJJJJJJJJJJJJJ 50 ThrustThingZ(0, 20, 0, 1)
	Goto Fall

	Live2:
		XMT2 JJJJJJJJJJJJJJJJJJJJJJJJJJJ 50 ThrustThingZ(0, 20, 0, 1)
	Goto Fall

	Live3:
		XMT2 JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ 50 ThrustThingZ(0, 20, 0, 1)
	Goto Fall

	Fall:
		XMT2 JJJJKKKLLM 2
		TNT1 A 0 A_SpawnItemEx("XDeath3NoStick", 0, 0, 0, 0, 0, -1)
		XMT2 MMN 2
	Stop
	
	Splash:
		BLOD A 0
	Stop
	}
}

//////////////////////////////////////
ACTOR CeilBloodSpawner
{
	+NOGRAVITY
	+THRUACTORS
	+NOCLIP
	Scale 0.5
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 3 A_SpawnItemEx ("BloodDripingFromCeiling2", random (-10, 10), random (-10, 10), 0, 0, 0, -5)
		TNT1 AAAAAAAAAAAAAA 10 A_SpawnItemEx ("BloodDripingFromCeiling2", random (-10, 10), random (-10, 10), 0, 0, 0, -5)
		TNT1 AAAAAAAAAAAAAA 15 A_SpawnItemEx ("BloodDripingFromCeiling", random (-10, 10), random (-10, 10), 0, 0, 0, -5)
		TNT1 AAAAAAAAAAAAAA 20 A_SpawnItemEx ("BloodDripingFromCeiling", random (-10, 10), random (-10, 10), 0, 0, 0, -5)
	Stop 
	}
}

//////////////////////////////////////
ACTOR BloodDripingFromCeiling: FlyingBlood
{
	Gravity 0.6
	Radius 2
	Height 1
	XScale 0.2
	YScale 0.2
	+CLIENTSIDEONLY
	-FORCEXYBILLBOARD
	+THRUACTORS
	+FORCEYBILLBOARD
	+TOUCHY
	States
	{
	Spawn:
		TNT1 A 0
		BLUD Z 500
	Stop

	Death:
		TNT1 A 0
		TNT1 A 0 A_SetScale(1.0, 1.0)
		XDT1 EFGHIJKL 2
	Stop 
	}
}

//////////////////////////////////////
ACTOR BloodDripingFromCeiling2: BloodDripingFromCeiling
{
	XScale 0.4
	YScale 1.0
	Gravity 0.8
	States
{
	Spawn:
		TNT1 A 0
		BLUD Z 50
	Stop
	
	Death:
		TNT1 A 0
		TNT1 A 0 A_PlaySound("BLODDROP")
		TNT1 A 0 A_SetScale(1.0, 1.0)
		XDT1 EFGHIJKL 2
	Stop 
	}
}


