ACTOR ZTBloodDrop
{
	+CLIENTSIDEONLY
	-SOLID
	+THRUACTORS
	States
	{
	Spawn:
	FDRP A 0
	FDRP A 1 A_CheckFloor("Drip")
	Loop
	
	Drip:
	FDRP A 0
	Stop
	}
}

ACTOR FloorGibLeaver
{
	BounceType "Doom"
	BounceFactor 0.2
	WallBounceFactor 0.2
	BounceSound "gore/splat"
	Radius 2
	Height 2
	Projectile
	-NOGRAVITY
	-SOLID
	+CLIENTSIDEONLY
	+MOVEWITHSECTOR
	+MISSILE
	Decal BrutalBloodSplat
	States
	{
	Spawn:
	BRTL A 0 A_CheckCeiling("TouchCeiling")
	BRTL A 1 A_SpawnItemEx("QuakeBloodPuffSmall",0,0,0)
	BRTL A 0 A_CheckCeiling("TouchCeiling")
	BRTL B 1 A_SpawnItemEx("QuakeBloodPuffSmall",0,0,0)
	BRTL A 0 A_CheckCeiling("TouchCeiling")
	BRTL D 1 A_SpawnItemEx("QuakeBloodPuffSmall",0,0,0)
	BLUD B 0 A_SpawnItemEx("ZTDecalLeaver",0,0,0,momx*1.1)
	Loop
	Death:
	SPGR A 0 A_Jump(255,"Ground1","Ground2","Ground3","Ground4")
	Goto Ground1
	
	Ground1:
	FGUT AAA 300
	FGUT AAAAAAAAAA 1 A_FadeOut(0.1)
	Stop
	
	Ground2:
	FGUT BBB 300
	FGUT BBBBBBBBBB 1 A_FadeOut(0.1)
	Stop
	
	Ground3:
	FGUT CCC 300
	FGUT CCCCCCCCCC 1 A_FadeOut(0.1)
	Stop
	
	Ground4:
	FGUT DDD 300
	FGUT DDDDDDDDDD 1 A_FadeOut(0.1)
	Stop
	
	// CEILING //
	TouchCeiling:
	TNT1 A 0 A_Stop
	TNT1 A 0 A_NoGravity
	TNT1 A 0 A_ChangeFlag("SPAWNCEILING",true)
	TNT1 A 0 A_Jump(255,"Ceiling1","Ceiling2")
	Goto Ceiling1
	
	Ceiling1:
	FGUT EEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 30 A_SpawnItemEx("ZTBloodDrop",0,0,0)
	FGUT EEEEEEEEEE 1 A_FadeOut(0.1)
	Stop
	
	Ceiling2:
	FGUT FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 30 A_SpawnItemEx("ZTBloodDrop",0,0,0)
	FGUT FFFFFFFFFF 1 A_FadeOut(0.1)
	Stop
	
	Ceiling3:
	FGUT GGGGGGGGGGGGGGGGGGGGGGGGGGGGGG 30 A_SpawnItemEx("ZTBloodDrop",0,0,0)
	FGUT GGGGGGGGGG 1 A_FadeOut(0.1)
	Stop
	
	}
}

ACTOR QuakeBloodPuff
{
	+NOBLOCKMAP
	+NOCLIP
	+CLIENTSIDEONLY
	-SOLID
	Gravity 0.75
	Scale 0.6
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_Jump(255,"Bloody1","Bloody2","Bloody3")
	Goto Bloody1
	
	Bloody1:
	QBLD AAAAAAAAAA 1 A_FadeOut(0.1)
	Stop
	
	Bloody2:
	QBLD BBBBBBBBBB 1 A_FadeOut(0.1)
	Stop
	
	Bloody3:
	QBLD CCCCCCCCCC 1 A_FadeOut(0.1)
	Stop
	}
}

ACTOR QuakeBloodPuffHuge : QuakeBloodPuff
{
	Scale 1.0
}

ACTOR QuakeBloodPuffMed : QuakeBloodPuff
{
	Scale 0.4
}

ACTOR QuakeBloodPuffSmall : QuakeBloodPuff
{
	Scale 0.25
}

ACTOR ZTDecalLeaver
{
	Projectile
	+NOGRAVITY
	Speed 20
	-SOLID
	+MISSILE
	+CLIENTSIDEONLY
	Decal BrutalBloodSplat
	Scale 2
	States
	{
	Spawn:
	TNT1 A 15
	Goto Death
	
	Death:
	TNT1 A 1
	Stop
	}
}

//===================================================
// SPLIT SPAWNER
//===================================================

ACTOR GibSpawn_Splitter
{
	+CLIENTSIDEONLY
	+NOBLOCKMAP
	-SOLID
	+THRUACTORS
	States
	{
	Spawn:
	TNT1 A 0
	TNT1 AA 0 A_SpawnItemEx("Giblet_Small1",random(-2,2),random(-2,2),random(-2,2),random(-10,10),random(-10,10),random(-2,2))
	TNT1 AA 0 A_SpawnItemEx("Giblet_Small2",random(-2,2),random(-2,2),random(-2,2),random(-10,10),random(-10,10),random(-2,2))
	TNT1 AA 0 A_SpawnItemEx("Giblet_Small3",random(-2,2),random(-2,2),random(-2,2),random(-10,10),random(-10,10),random(-2,2))
	Stop
	}
}

//===================================================
// SMALL BIT 1
//===================================================

ACTOR Giblet_Small1
{
	BounceType "Doom"
	BounceFactor 0.6
	WallBounceFactor 0.6
	BounceSound "gore/splat"
	Projectile
	-NOGRAVITY
	-SOLID
	+CLIENTSIDEONLY
	+MOVEWITHSECTOR
	+MISSILE
	Decal BrutalBloodSplat
	States
	{
	Spawn:
	SPGR AAAAA 1 A_SpawnItemEx("QuakeBloodPuffSmall",0,0,0)
	BLUD B 0 A_SpawnItemEx("ZTDecalLeaver",0,0,0,momx*1.1)
	Loop
	Death:
	SPGR AAA 300
	Stop
	}
}

//===================================================
// SMALL BIT 2
//===================================================

ACTOR Giblet_Small2 : Giblet_Small1
{
	States
	{
	Spawn:
	SPGR BBBBB 1 A_SpawnItemEx("QuakeBloodPuffSmall",0,0,0)
	BLUD B 0 A_SpawnItemEx("ZTDecalLeaver",0,0,0,momx*1.1)
	Loop
	Death:
	SPGR BBB 300
	Stop
	}
}

//===================================================
// SMALL BIT 3
//===================================================

ACTOR Giblet_Small3 : Giblet_Small1
{
	States
	{
	Spawn:
	SPGR CCCCC 1 A_SpawnItemEx("QuakeBloodPuffSmall",0,0,0)
	BLUD B 0 A_SpawnItemEx("ZTDecalLeaver",0,0,0,momx*1.1)
	Loop
	Death:
	SPGR CCC 300
	Stop
	}
}

//===================================================
// TORSO: BASE ZOMBIE
//===================================================

ACTOR Torso_BaseZombie
{
	Gravity 0.85
	-NOGRAVITY
	+THRUACTORS
	+CLIENTSIDEONLY
	-SOLID
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 A 0 A_JumpIf(momz < 0,"StartFall")
		BZSP A 1
		Loop
		
		StartFall:
		BZSP BC 2
		Goto Falling
		
		Falling:
		BZSP C 1 A_CheckFloor("Fell")
		Loop
		
		Fell:
		BZSP D 0 A_PlaySoundEx("quake/gibsplat","Body")
		BZSP DDDDDDD 100
		BZSP DDDDDDDDDD 1 A_FadeOut(0.1)
		Stop
	}
}

//===================================================
// TORSO: VAGINA ZOMBIE
//===================================================

ACTOR Torso_VaginaZombie
{
	Gravity 0.85
	-NOGRAVITY
	+THRUACTORS
	+CLIENTSIDEONLY
	-SOLID
	States
	{
		Spawn:
		TNT1 A 0
		TNT1 A 0 A_JumpIf(momz < 0,"StartFall")
		SPFL A 1
		Loop
		
		StartFall:
		SPFL BC 2
		Goto Falling
		
		Falling:
		SPFL C 1 A_CheckFloor("Fell")
		Loop
		
		Fell:
		SPFL D 0 A_PlaySoundEx("quake/gibsplat","Body")
		SPFL DDDDDDD 100
		SPFL DDDDDDDDDD 1 A_FadeOut(0.1)
		Stop
	}
}