ACtor GreenBlood: Blood
{
Speed 10
-ALLOWPARTICLES
translation "168:191=112:127", "16:47=123:127"
States
{
	Spawn:
	TNT1 A 0
	TNT1 A 0 A_CustomMissile("FlyingBloodParticleGreen", 0,  0, random(0, 360), 2, random(0, 90))
	TNT1 A 0 A_CustomMissile("FlyingBloodParticleFastGreen", 0,  0, random(0, 360), 2, random(0, 90))
	Stop
}}

Actor FlyingBloodParticleGreen: FlyingBloodParticle
{
translation "168:191=112:127", "16:47=123:127"
Decal "GreenBloodSplat"
}


Actor FlyingBloodParticleFastGreen: FlyingBloodParticleFast
{
translation "168:191=112:127", "16:47=123:127"translation "168:191=112:127", "16:47=123:127"
Decal "GreenBloodSplat"
}

Actor FlyingBloodParticleBigGreen: FlyingBloodParticleBig
{
translation "168:191=112:127", "16:47=123:127"
Decal "GreenBloodSplat"
}


Actor FlyingBloodParticleHugeGreen: FlyingBloodParticleHuge
{
translation "168:191=112:127", "16:47=123:127"
}

Actor FlyingBloodParticleCrushedGreen: FlyingBloodParticleCrushed
{
translation "168:191=112:127", "16:47=123:127"
}

ACTOR XDeath1Green
{
    Radius 1
    Height 1
    Speed 0
    Scale 0.6
	Mass 1
	translation "168:191=112:127", "16:47=123:127"
	Decal "GreenBloodSplat"
    +NOBLOCKMAP
	+MISSILE
    +NOTELEPORT
    +MOVEWITHSECTOR
    +CLIENTSIDEONLY
	-DONTSPLASH
	+THRUGHOST
	+THRUACTORS
	+FLOORCLIP
	Mass 1
    States
    {
    Spawn:
	    BLHT ABCDEFGHI 2
        Stop
    Death:
		XDT1 EF 3
		TNT1 A 0 A_SpawnItem("GreatBloodSpotGreen")
		Stop
	Splash:
	NoSpawn:
		TNT1 A 0
		Stop
    }
}

ACTOR XDeath1bGreen: XDeath1
{
translation "168:191=112:127", "16:47=123:127"
    Speed 5
	+BOUNCEONWALLS
	States
	{
    Death:
		XDT1 EF 3
		TNT1 A 0 A_SpawnItem("GreatBloodSpot2Green")
		Stop
    }
}


ACTOR CeilingBloodCheckerGreen: FlyingBloodParticle
{
    Speed 12
	Mass 1
translation "168:191=112:127", "16:47=123:127"
	-BOUNCEONCEILINGS
    States
    {
    Spawn:
	    TNT1 A 5
        Stop
    Death:
		TNT1 A 0
		TNT1 A 0 A_CheckCeiling("Ceiling")
		Stop
	Splash:
	NoSpawn:
		TNT1 A 0
		Stop
	Ceiling:
		TNT1 A 0
		TNT1 A 0 A_SpawnItem("CeilBloodTinyBloodSpawnerSmallGreen")
		TNT1 A 0 A_SpawnItem("CeilBloodSpotGreen")
		Stop
    }
}



Actor GreatBloodSpotGreen: GreatBloodSpot
{
translation "168:191=112:127", "16:47=123:127"
}




Actor GreatBloodSpot2Green: GreatBloodSpot2
{
translation "168:191=112:127", "16:47=123:127"
}


Actor CeilBloodSpotGreen: GreatBloodSpot2
{
+NOGRAVITY
XScale 0.6
YScale 0.15
Radius 1
Gravity 0.0
Height 1
translation "168:191=112:127", "16:47=123:127"
States
{
	Spawn:
	BSPR C 1
	TNT1 A 0 A_SetAngle(random (0, 360))
	BSPR C 1 A_QueueCorpse
	TNT1 A 0 A_SpawnItem ("CeilBloodSpawnerGreen")
	Live:
	BSPR C 10 ThrustThingZ(0, 20, 0, 1)
	Loop
}
}

ACTOR CeilBloodSpawnerGreen
{
	+NOGRAVITY
	+THRUACTORS
	+NOCLIP
	Scale 0.5
	translation "168:191=112:127", "16:47=123:127"
	 States
		{
		 Spawn:
			  TNT1 A 0
			  TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 3 A_SpawnItemEx ("BloodDripingFromCeilingBigGreen", random (-10, 10), random (-10, 10), 0, 0, 0, -5)
			  TNT1 AAAAAAAAAAAAAA 10 A_SpawnItemEx ("BloodDripingFromCeilingBigGreen", random (-10, 10), random (-10, 10), 0, 0, 0, -5)
			  TNT1 AAAAAAAAAAAAAA 15 A_SpawnItemEx ("BloodDripingFromCeilingGreen", random (-10, 10), random (-10, 10), 0, 0, 0, -5)
			  TNT1 AAAAAAAAAAAAAA 20 A_SpawnItemEx ("BloodDripingFromCeilingGreen", random (-10, 10), random (-10, 10), 0, 0, 0, -5)
			  stop 
		}
}

ACTOR CeilBloodTinyBloodSpawnerSmallGreen: CeilBloodSpawner
{
translation "168:191=112:127", "16:47=123:127"
	 States
		{
		 Spawn:
			  TNT1 A 0
			  TNT1 AAAAAAAAAAAAAA 5 A_SpawnItemEx ("BloodDripingFromCeilingGreen", random (-5, 5), random (-5, 5), 0, 0, 0, -5)
			  TNT1 AAAAAAAAAAAAAA 10 A_SpawnItemEx ("BloodDripingFromCeilingGreen", random (-5, 5), random (-5, 5), 0, 0, 0, -5)
			  TNT1 AAAAAAAAAAAAAA 16 A_SpawnItemEx ("BloodDripingFromCeilingGreen", random (-5, 5), random (-5, 5), 0, 0, 0, -5)
			  TNT1 AAAAAAAAAAAAAA 26 A_SpawnItem ("BloodDripingFromCeilingGreen")
			  stop
		}
}


//This is the actual blood driping from the ceiling actor
ACTOR BloodDripingFromCeilingGreen: BloodDripingFromCeiling
{
translation "168:191=112:127", "16:47=123:127"
}


//This is a bigger and denser version of the blood drip, droped by sticky gibs
ACTOR BloodDripingFromCeilingBigGreen: BloodDripingFromCeilingBig
{
translation "168:191=112:127", "16:47=123:127"
}


//A flying piece of meat
ACTOR XDeath2Green: XDeath1Green
{
    +CLIENTSIDEONLY
	+DONTSPLASH
	Radius 2
	Height 2
	Gravity 0.4
    DeathSound "misc/xdeath2"
	SeeSound "misc/xdeath4"
	Decal GreenBloodSuper
	translation "168:191=112:127", "16:47=123:127"
    Scale 1.1
	Speed 8
    States
    {
    Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
        XMT1 ABCDEFGH 2
        Loop
    Death:
		TNT1 A 0 A_CheckFloor("SpawnFloor")
		TNT1 A 0 A_CheckCeiling("SpawnCeiling")
		TNT1 A 0 A_SpawnItem("SmearingXDeath2Green")
		Stop
		
	SpawnFloor:
	    XMT1 M 1
		TNT1 A 0 A_QueueCorpse
		XMT1 M -1
		Stop
		
	SpawnCeiling:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("CeilXDeath2Green", 0, 0, 8)
		TNT1 A 0 A_SpawnItemEx ("CeilBloodSpotGreen", 0, 0, 1)
		Stop	
		
	Vanish:
	    TNT1 A 5
		Stop
    }
}


ACTOR XDeath2bGreen: XDeath2Green {	Speed 4 } //Low-range version.


//A piece of meat that has hit the wall, and now is slowly smearing
ACTOR SmearingXDeath2Green
{
    Radius 1
    Height 1
	Mass 1
	Scale 1.0
    +NOBLOCKMAP
    +NOTELEPORT
	+THRUGHOST
	+CLIENTSIDEONLY
    +DONTSPLASH
    +MOVEWITHSECTOR
	+FORCEXYBILLBOARD
	+NOGRAVITY
	translation "168:191=112:127", "16:47=123:127"
    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
	    TNT1 A 0 A_SpawnItem("XDeath2NoStickGreen")
        Stop
		
	Rest:
		XMT1 M 1
		TNT1 A 0 A_QueueCorpse
		XMT1 M -1
		Stop
		
	Vanish:
	    TNT1 A 5
		Stop
    }
}

//piece of meat that got stuck in the ceiling
actor CeilXDeath2Green: GreatBloodSpot
{
	PROJECTILE
	+MISSILE
	+SPAWNCEILING
	+MOVEWITHSECTOR
	+NOGRAVITY
	+DontSplash
	+CEILINGHUGGER
	Renderstyle Normal 
	Scale 1.1
	translation "168:191=112:127", "16:47=123:127"
	states
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_JUmp (255, "Live1", "Live2", "Live3")
			Goto Live1

		  Live1:
			  XMT1 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 5 ThrustThingZ(0, 20, 0, 1)
			  Goto Fall
		  
		  Live2:
			  XMT1 IIIIIIIIIIIIIIIIIIIIIIIII 5 ThrustThingZ(0, 20, 0, 1)
			  Goto Fall
		  
		  Live3:
			  XMT1 IIIIIIIIIIIIIIIII 5 ThrustThingZ(0, 20, 0, 1)
			  Goto Fall
		  
		 Fall:
			  XMT1 F 0
			  XMT1 JJJKKLL 2
			  TNT1 A 0 A_SpawnItemEx("XDeath2NoStickGreen", 0, 0, 0, 0, 0, -1)
			  stop
		 Splash:
			  BLOD A 0
			  stop
		}
}

//piece of meat that got stuck on the ceiling/wall and now is falling
ACTOR XDeath2NoStickGreen: XDeath2NoStick
{
	translation "168:191=112:127", "16:47=123:127"
}




//Variation of XDeath2
ACTOR XDeath3Green: XDeath2Green
{
    DeathSound "misc/xdeath2"
	SeeSound "misc/xdeath4"
	Decal GreenBloodSuper
	Scale 1.1
	translation "168:191=112:127", "16:47=123:127"
    States
    {
    Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
        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("SmearingXDeath3Green")
		Stop
		
	SpawnFloor:
	    XMT2 I 1
		TNT1 A 0 A_QueueCorpse
		XMT2 I -1
		Stop
		
	SpawnCeiling:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("CeilXDeath3Green", 0, 0, 8)
		TNT1 A 0 A_SpawnItemEx ("CeilBloodSpotGreen", 0, 0, 1)
		Stop	
		
	Vanish:
	    TNT2 A 5
		Stop
    }
}


ACTOR XDeath3bGreen: XDeath3Green {	Speed 4 } //Low-range version.


//A piece of meat that has hit the wall, and now is slowly smearing
ACTOR SmearingXDeath3Green: SmearingXDeath2
{
	translation "168:191=112:127", "16:47=123:127"
    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("XDeath3NoStickGreen")
        Stop
		
	Rest:
		XMT2 I 1
		TNT1 A 0 A_QueueCorpse
		XMT2 I -1
		Stop
		
	Vanish:
	    TNT1 A 5
		Stop
    }
}

//piece of meat that got stuck in the ceiling
actor CeilXDeath3Green: CeilXDeath2Green
{
	translation "168:191=112:127", "16:47=123:127"
	states
	{
		Spawn:
			Goto Crash
			Death:
			Crash:
			TNT1 A 0
			TNT1 A 0 A_JUmp (255, "Live1", "Live2", "Live3")
			Goto Live1

		  Live1:
			  XMT2 JJJJJJJJJJJJJJJJJ 4 ThrustThingZ(0, 20, 0, 1)
			  Goto Fall
		  
		  Live2:
			  XMT2 JJJJJJJJJJJJJJJJJJJJJJJJJJJ 4 ThrustThingZ(0, 20, 0, 1)
			  Goto Fall
		  
		  Live3:
			  XMT2 JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ 4 ThrustThingZ(0, 20, 0, 1)
			  Goto Fall
		  
		 Fall:
			  XMT2 JJJJKKKLLM 2
			  TNT1 A 0 A_SpawnItemEx("XDeath3NoStickGreen", 0, 0, 0, 0, 0, -1)
			  XMT2 MMN 2
			  stop
		 Splash:
			  BLOD A 0
			  stop
		}
}

//piece of meat that got stuck on the ceiling/wall and now is falling
ACTOR XDeath3NoStickGreen: XDeath3NoStick
{
translation "168:191=112:127", "16:47=123:127"
}