//All the liquid gore stuff goes here.


//Hit puff actor

actor Yellow_Blood: Bolognese_Blood
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
	 states
	 {
	  Spawn:
			BSPR A 0
			TNT1 A 0 A_CustomMissile ("YellowSuperGoreMistTiny", 0, 0, random (0, 360), 2, random (0, 90))
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
			TNT1 A 0 
			TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckBloodIntensity")
			TNT1 A 0
			BSPR A 2
			TNT1 A 0 A_CustomMissile ("YellowWaterBloodCHecker", 7, 0, random (0, 360), 2, random (30, 60))
		Spawn2:
			TNT1 A 0 A_CustomMissile ("Yellow_FlyingBlood", 7, 0, random (0, 360), 2, random (30, 60))
			TNT1 A 0 A_CustomMissile ("Yellow_FlyingBloodTrail", 0, 0, random (0, 360), 2, random (20, 90))
			goto ChunkCheck 	
		Splash:
			BLOD A 0
			TNT1 AAA 0 A_CustomMissile ("YellowUnderblood1", 7, 0, random (0, 360), 2, random (30, 150))
			goto ChunkCheck 
		LotsOfBlood:
		   TNT1 A 0
		   TNT1 AAAA 0 A_CustomMissile ("YellowBloodMistSmall", 0, 0, random (0, 360), 2, random (0, 90))
		   TNT1 AAAAA 0 A_CustomMissile ("Yellow_FlyingBlood", 7, 0, random (0, 360), 2, random (30, 70))
		   TNT1 A 0 A_CustomMissile ("SuperWallYellowBlood", 0, 0, random (0, 360), 2, random (-15, 15))
		   TNT1 AAAA 0 A_CustomMissile ("Yellow_FlyingBloodTrail", 0, 0, random (0, 360), 2, random (0, 90))
		   goto ChunkCheck 
		AbsurdBlood:
		   TNT1 A 2
		   TNT1 AAAA 0 A_CustomMissile ("SuperWallYellowBlood", 0, 0, random (0, 360), 2, random (-15, 15))
		   TNT1 A 0 A_JumpIfInventory("AnimuGore", 1, "AnimuGore")
		   TNT1 AA 0 A_CustomMissile ("YellowBloodMist", 0, 0, random (0, 360), 2, random (0, 90))
		   TNT1 AAA 0 A_CustomMissile ("Yellow_FlyingBloodMuchFaster", 7, 0, random (0, 360), 2, random (10, 50))
		   TNT1 A 0 A_CustomMissile ("Yellow_FlyingBloodMuchFaster", 7, 0, random (0, 360), 2, random (40, 60))
		   TNT1 A 0 A_CustomMissile ("YellowBloodMistSmall", 7, 0, random (0, 360), 2, random (30, 90))
		   TNT1 A 0 A_CustomMissile ("YellowSuperGoreMist", 0, 0, random (0, 360), 2, random (10, 90))
		   TNT1 AAAAA 0 A_CustomMissile ("Yellow_FlyingBlood", 7, 0, random (0, 360), 2, random (30, 70))
		   TNT1 AAA 0 A_CustomMissile ("YellowBloodMistSpray", 0, 0, random (0, 360), 2, random (20, 90))
		   goto ChunkCheck 
		 AnimuGore:
		   TNT1 AAA 0 A_CustomMissile ("Yellow_FlyingBloodMuchFaster", 7, 0, random (0, 360), 2, random (10, 50))
		   TNT1 A 0 A_CustomMissile ("SuperWallYellowBlood", 0, 0, random (0, 360), 2, random (-15, 15))
		   TNT1 A 0 A_CustomMissile ("Yellow_FlyingBloodMuchFaster", 7, 0, random (0, 360), 2, random (40, 60))
		   TNT1 AAAAAAA 0 A_CustomMissile ("Yellow_FlyingBlood", 7, 0, random (0, 360), 2, random (30, 70))
		   TNT1 AAAAAAAAA 0 A_CustomMissile ("YellowXDeath1", 0, 0, random (0, 360), 2, random (40, 80))
		   TNT1 A 0 A_CustomMissile ("YellowSuperGoreSpawner", 0, 0, random (0, 360), 2, random (10, 90))
		   TNT1 AAAAA 0 A_CustomMissile ("YellowBloodMistSpray", 0, 0, random (0, 360), 2, random (20, 90))
		   goto ChunkCheck   
		 LowBlood:
			TNT1 A 0
			goto ChunkCheck
		
		ChunkCheck:
			TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckChunky")
			BSPR ABCDEFG 1
			BSPR HHHHHHH 1 A_FadeOut(0.1)
			Stop
			
		SpawnChunk:
			TNT1 A 0 A_Jump	(255, "Chunk1", "Chunk2", "Chunk3", "Chunk4")
		Chunk1:
			TNT1 A 1 A_CustomMissile ("YellowXDeath1", 3, 0, random (0, 360), 2, random (10, 40))
			goto EndAll
		Chunk2:
			TNT1 A 1 A_CustomMissile ("YellowXDeath2", 3, 0, random (0, 360), 2, random (10, 40))
			goto EndAll
		Chunk3:
			TNT1 A 1 A_CustomMissile ("YellowXDeath2b", 3, 0, random (0, 360), 2, random (10, 40))
			goto EndAll
		Chunk4:
			TNT1 A 1 A_CustomMissile ("YellowXDeath3b", 3, 0, random (0, 360), 2, random (10, 40))
			goto EndAll
			
		EndAll:
			BSPR ABCDEFG 1
			BSPR HHHHHHH 1 A_FadeOut(0.1)
			Stop
	 }
}


//Dummy actor just to replace the bloodpuff made by Hexen axe
actor YellowSawBlood : SawBlood
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
 states
 {
  Spawn:
        TNT1 A 0
		TNT1 AA 0 A_CustomMissile ("YellowBloodMistSmall", 0, 0, random (0, 360), 2, random (0, 90))
		TNT1 AA 0 A_CustomMissile ("YellowXDeath1", 0, 0, random (0, 360), 2, random (40, 80))
		TNT1 AAA 0 A_CustomMissile ("Yellow_FlyingBlood", 0, 0, random (0, 360), 2, random (30, 60))
		TNT1 A 0 Radius_Quake (2, 2, 0, 2, 0)
		TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckBloodIntensity")
		TNT1 A 0 A_Stop
		TNT1 A 2
		Goto Spawn2
 }
}

//Base flying blood actor. Leaves bloodspots on the floor
ACTOR Yellow_FlyingBlood: Brutal_FlyingBlood 
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
    States
    {
     Spawn:
			TNT1 A 0
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
			TNT1 A 0 A_Jump(255, "Spawn1", "Spawn2", "Spawn3", "Live")
	 Spawn1:
			TNT1 A 0
			TNT1 A 0 A_SetScale(-0.4, 0.4)
			Goto live
	
	Spawn2:
			TNT1 A 0
			TNT1 A 0 A_SetScale(-0.45, -0.45)
			Goto live
			
	Spawn3:
			TNT1 A 0
			TNT1 A 0 A_SetScale(0.5, -0.5)
			Goto live		
			
	 Live:
			BLHT BCDEFG 1
			TNT1 A 0 
			BLHT HHHHH 100 A_JumpIf(waterlevel > 1, "Splash")
			Stop	
	
	Splash:
			BLOD A 0
			TNT1 A 0 A_SpawnItem ("YellowUnderblood2")
			stop
		
     Death:
			TNT1 A 0
			TNT1 A 0 A_PlaySound("blooddrop2")
			TNT1 A 0 A_CheckFloor("DeathFloor")
			TNT1 A 1
			Stop
  
		DeathFloor:
			TNT1 A 0
			TNT1 A 0 A_SpawnItemEx ("Yellow_BloodSpot",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION |  SXF_TRANSFERTRANSLATION,0)
			TNT1 A 0 A_PlaySound("blooddrop2")
		    XDT1 EFGHIJKL 2
			Stop
			
		NoSpawn:
			TNT1 A 0
			Stop
			
    }
}


//Faster version used in some specific cases
ACTOR Yellow_FlyingBloodMuchFaster: Yellow_FlyingBlood
{
	 Scale 1.0
	 Speed 8
}


actor Yellow_FlyingBloodTrail: Brutal_FlyingBloodTrail 
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
	states
	{
	  Spawn:
		  TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
		  BLHT BCDEFG 1
		  BLHT HHHHHHHHH 1 A_FadeOut(0.02)
		  stop
	  
	Death:
		TNT1 A 0
		Stop

	Splash:
        BLOD A 0
		TNT1 A 0 A_SpawnItem ("YellowUnderblood2")
        stop

 }
}


actor Yellow_FlyingBloodFaster: Yellow_FlyingBloodTrail
{
Speed 4
 states
 {
  Spawn:
	  TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
	  BLOD ABCDEFFFFFF 3
	  stop
 }
}


ACTOR Yellow_FlyingBloodFake: Brutal_FlyingBloodFake 
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
    States
    {
     Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
		BLOD KKKKKKKKKKKK 1 A_FadeOut(0.05)
        Stop
	Splash:
        BLOD A 0
		TNT1 A 0 A_SpawnItem ("YellowUnderblood2")
        stop
	Death:
	    TNT1 A 10
		Stop
    }
}

ACTOR Yellow_FlyingBloodFakeNoDecal: Yellow_FlyingBloodFake { decal "none"}



actor YellowBloodMist : BloodMist
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
}


actor YellowBloodMistBig : BloodMistBig
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
}

actor YellowBloodMistSmall : BloodMistSmall
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
}

actor YellowBloodMistExtraBig :BloodMistExtraBig
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
}

//More wattery version
actor YellowBloodMistSpray : BloodMistSpray
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
}



/////////////////////// BLOOD SPOTS //////////////////////////

//base bloodspot actor
ACTOR Yellow_BloodSpot: Bolognese_Bloodspot
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
}


//a special flying blood actor that spawns muddy water pools over liquids
ACTOR YellowWaterBloodCHecker: WaterBloodCHecker
{

	Decal none
	States
    {
    Spawn:
	    TNT1 A 5
        Loop
    Death:
        TNT1 A 0
		TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckIfOverLiquid")
		TNT1 A 5
		TNT1 A 0 A_JumpIfInventory("IsOverWater", 1, "IsOverLiquid")
		TNT1 A 0 A_JumpIfInventory("IsOverSlime", 1, "IsOverLiquid")
		TNT1 A 0 A_JumpIfInventory("IsOverNukage", 1, "IsOverLiquid")
        TNT1 A 10
        Stop
        
	IsOverLiquid:
		TNT1 A 1
		TNT1 A 0 A_CheckFloor("SpawnOnWater")
		TNT1 A 2
		Stop
		
	SpawnOnWater:
		TNT1 A 1
		TNT1 A 0 A_SpawnItem ("YellowWaterBloodSpot", 5)
		Stop
    }
}

//muddy water bloodspot actor
ACTOR YellowWaterBloodSpot: WaterBloodSpot
{
Renderstyle Shaded
StencilColor "55 55 00"
Decal YellowBloodSplat
 states
 {
	Spawn:
		BPDL E 1 A_FadeOut(0.9)
		BPDL EEEEEEEEEEEEEEEEEEEE 4 A_FadeIn(0.02)
		BPDL E 100
		BPDL EEEEEEEEEEEEEEEEEEEE 4 A_FadeOut(0.02)
		Stop
 }
}

//bigger bloodsplat 
actor YellowGiantBloodSpot: GiantBloodSpot
{
Scale 1.1
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
}


actor YellowMinuscleBloodSpot: Yellow_BloodSpot {Scale 0.25}
actor YellowBigBloodSpot: YellowGiantBloodSpot { Scale 0.7}
actor YellowMediumBloodSpot: YellowGiantBloodSpot { Scale 0.4}
actor YellowMediumBloodSpot2: YellowGiantBloodSpot{ Scale 0.4}


//Big version spawned by XDeath animations
ACTOR SplatteredYellowSmall: Yellow_BloodSpot
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
}

//Big version spawned by XDeath animations of bigger enemies
ACTOR SplatteredYellowLarge: Yellow_BloodSpot
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
 states
 {
 Spawn:
   TNT1 A 0
   TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
   TNT1 A 0 A_CheckFloor("Live")
   Goto Splash
   
  Live: 
    TNT1 A 0
    TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckIfOverLiquid")//Check if is under a liquid
	TNT1 A 4
    TNT1 A 0 A_JumpIfInventory("IsOverWater", 1, "YellowWaterBloodSpot")
	TNT1 A 0 A_JumpIfInventory("IsOverSlime", 1, "YellowWaterBloodSpot")
	TNT1 A 0 A_JumpIfInventory("IsOverlava", 1, "YellowWaterBloodSpot")
	TNT1 A 0 A_QueueCorpse
	TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckJanitor")
	BPDL A -1
	Stop
	
 YellowWaterBloodSpot:
	TNT1 A 0
	TNT1 A 0 A_SpawnItem("YellowWaterBloodSpot")
	Stop
 }
}



//A blood pool spawned by regular enemy deaths.

actor YellowGrowingBloodPool: GrowingBloodPool
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
}




//A decorative kind of flying blood spawned by arterial blood
ACTOR Yellow_LiquidBlood: Brutal_LiquidBlood 
{
 decal "YellowBloodSmearSmall"
 translation "168:191=160:167","16:47=160:167"
}

//Faster version, leaves no decals. Used to prevent decal overflow
ACTOR Yellow_LiquidBlood2: Yellow_LiquidBlood 
{
 speed 4
 scale 0.4
 gravity 0.6
 decal "None"
}

//Very fast version
ACTOR Yellow_LiquidBloodFast: Yellow_LiquidBlood2
{
 speed 8
}

//This version leaves a bloodspot
ACTOR Yellow_LiquidBlood3: Yellow_FlyingBlood 
{
Speed 3
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
    States
    {
	 Death:
  	   TNT1 A 0 A_PlaySound("blooddrop2")
	   TNT1 A 0 A_CheckFloor("SpawnFloor")
	   TNT1 A 4
	   Stop
	  
	 SpawnFloor:
	   tnt1 a 0 A_SPawnItem("Yellow_BloodSpot")
	   XDT1 FGHIJKL 2
	   TNT1 A 0
       Stop
    }
}


//Decorative trails
ACTOR Yellow_LiquidBloodTrail: Brutal_LiquidBloodTrail 
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
}

//An actor that will spawn multiple arterial blood actors
ACTOR YellowArterialBloodSpray
{
 Speed 0
 +CLIENTSIDEONLY
 +NOINTERACTION
    States
    {
     Spawn:
	 TNT1 A 0
	 TNT1 A 0 A_stop
		TNT1 AAAA 2 A_CustomMissile ("Yellow_LiquidBlood2", 0, 0, 0, 2, random (0, 60))
		TNT1 A 6
		TNT1 A 2 A_CustomMissile ("Yellow_LiquidBlood2", 0, 0, 0, 2, random (0, 60))
		TNT1 A 6
		TNT1 A 2 A_CustomMissile ("Yellow_LiquidBlood2", 0, 0, 0, 2, random (0, 60))
		TNT1 A 6
		TNT1 A 2 A_CustomMissile ("Yellow_LiquidBlood2", 0, 0, 0, 2, random (0, 60))
		TNT1 A 6
		TNT1 A 2 A_CustomMissile ("Yellow_LiquidBlood2", 0, 0, 0, 2, random (0, 60))
		TNT1 A 9
		TNT1 A 2 A_CustomMissile ("Yellow_LiquidBlood2", 0, 0, 0, 2, random (0, 60))
		TNT1 A 9
		TNT1 A 2 A_CustomMissile ("Yellow_LiquidBlood2", 0, 0, 0, 2, random (0, 60))
		TNT1 A 9
		TNT1 A 2 A_CustomMissile ("Yellow_LiquidBlood2", 0, 0, 0, 2, random (0, 60))
		TNT1 A 9
		TNT1 A 2 A_CustomMissile ("Yellow_LiquidBlood2", 0, 0, 0, 2, random (0, 60))
		TNT1 A 12
		TNT1 A 2 A_CustomMissile ("Yellow_LiquidBlood2", 0, 0, 0, 2, random (0, 60))
		TNT1 A 12
		TNT1 A 2 A_CustomMissile ("Yellow_LiquidBlood2", 0, 0, 0, 2, random (0, 60))
		TNT1 A 16
		TNT1 A 2 A_CustomMissile ("Yellow_LiquidBlood2", 0, 0, 0, 2, random (0, 60))
		TNT1 A 19
		TNT1 A 2 A_CustomMissile ("Yellow_LiquidBlood2", 0, 0, 0, 2, random (0, 60))
       Stop
    }
}


/////////////////// CEILING BLOOD //////////////////////////

//Launches bloodspots on the ceiling
ACTOR YellowCeilBloodLauncher: CeilBloodLauncher
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
    States
		{
		 Death:
			TNT1 A 0
			TNT1 A 0 A_CheckCeiling("IsOnCeil")
			TNT1 A 0
			stop
			
		 IsOnCeil:
			TNT1 A 0
			TNT1 A 1 A_SpawnItem("YellowCeilBloodSpot",0,0,0,1)
			Stop
		}
}

//Longer version (for extreme deaths)
ACTOR YellowCeilBloodLauncherLong: YellowCeilBloodLauncher
{
    States
    {
		 Spawn:
			TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
			TNT1 A 12
			Stop
    }
}

// The Ceil Blood Spot
actor YellowCeilBloodSpot: CeilBloodSpot
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
	states
	{
		Spawn:
		  BPDL A 1
		  TNT1 A 0 A_QueueCorpse
		  TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckJanitor")
		  TNT1 A 0 A_SpawnItem ("DripingYellowBloodLeavesSmallPool")
		  TNT1 A 0 A_SpawnItem ("YellowCeilBloodTinyBloodSpawner")
		Live:	
		  BPDL A 5 ThrustThingZ(0, 20, 0, 1)
		  Loop
			}
}

//Bigger version of a ceil blood spot, usually left by sticky gibs.
actor YellowCeilBloodSpotLarge: YellowCeilBloodSpot
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
}

//These are the actors that spawns blood drips. They are separate from the bloodspots so the sticky gibs can spawn them separately.

//Small blood drips spawner, usually caused by regular blood touching the ceiling.
ACTOR YellowCeilBloodTinyBloodSpawner: CeilBloodTinyBloodSpawner
{
	 States
		{
		 Spawn:
			  TNT1 A 0
			  TNT1 A 1 A_SpawnItemEx ("DripingYellowBloodLeavesSmallPool", random (-5, 5), random (-5, 5), 0, 0, 0, -5)
			  TNT1 AAAAAAAAAAAAAA 5 A_SpawnItemEx ("YellowBloodDripingFromCeiling", random (-5, 5), random (-5, 5), 0, 0, 0, -5)
			  TNT1 AAAAAAAAAAAAAA 10 A_SpawnItemEx ("YellowBloodDripingFromCeiling", random (-5, 5), random (-5, 5), 0, 0, 0, -5)
			  TNT1 AAAAAAAAAAAAAA 16 A_SpawnItemEx ("YellowBloodDripingFromCeiling", random (-5, 5), random (-5, 5), 0, 0, 0, -5)
			  TNT1 AAAAAAAAAAAAAA 24 A_SpawnItem ("YellowBloodDripingFromCeiling")
			  stop
		}
}

//Large blood drips spawner, usually caused by huge chunks of meat getting stuck on the ceiling.
ACTOR YellowCeilBloodLargeBloodSpawner: Yellow_FlyingBlood
{
	+NOGRAVITY
	+THRUACTORS
	+NOCLIP
	Scale 0.5
	 States
		{
		 Spawn:
			  TNT1 A 0
			  TNT1 A 1 A_SpawnItemEx ("DripingYellowBloodLeavesSmallPool", random (-5, 5), random (-5, 5), 0, 0, 0, -5)
			  TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 3 A_SpawnItemEx ("YellowBloodDripingFromCeilingBig", random (-5, 5), random (-5, 5), 0, 0, 0, -5)
			  TNT1 AAAAAAAAAAAAAA 10 A_SpawnItemEx ("YellowBloodDripingFromCeilingBig", random (-5, 5), random (-5, 5), 0, 0, 0, -5)
			  TNT1 AAAAAAAAAAAAAA 15 A_SpawnItemEx ("YellowBloodDripingFromCeiling", random (-5, 5), random (-5, 5), 0, 0, 0, -5)
			  TNT1 AAAAAAAAAAAAAA 20 A_SpawnItemEx ("YellowBloodDripingFromCeiling", random (-5, 5), random (-5, 5), 0, 0, 0, -5)
			  stop 
		}
}

//This is the actual blood driping from the ceiling actor
ACTOR YellowBloodDripingFromCeiling: BloodDripingFromCeiling
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
}

//This is a bigger and denser version of the blood drip, droped by sticky gibs
ACTOR YellowBloodDripingFromCeilingBig: BloodDripingFromCeiling
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
}

//This is the first drip spawned by the drip spawners, which leaves a small blood pool
ACTOR DripingYellowBloodLeavesPool: DripingBloodLeavesPool
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
    States
    {
     Spawn:
       TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
        BLUD Z 4
        loop
     Death:
	    TNT1 A 0
		TNT1 A 0 A_SpawnItem("YellowMediumBloodSpot")
		TNT1 A 0 A_PlaySound("blooddrop2")
        XDT1 EFGHIJKL 2
        stop
    }
}

//Just like above, but leaves a smaller pool
ACTOR DripingYellowBloodLeavesSmallPool: DripingBloodLeavesSmallPool
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
States
{
     Death:
	    TNT1 A 0
		TNT1 A 0 A_SpawnItem("YellowMinuscleBloodSpot")
		TNT1 A 0 A_PlaySound("blooddrop2")
        XDT1 EFGHIJKL 2
        stop
    }
}

//An invisible projectile only used to spawn bloodsplats on the walls, usually spawned by extreme deaths.
ACTOR WallYellowBlood: WallRedBlood
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSmearer
    States
    {
		Spawn:
		   TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
			TNT1 ABCD 4
			loop
		Splash:
			BLOD A 0
			stop
		 Death:
			TNT1 A 3
			stop
    }
}

//This one spawns an even bigger decal
ACTOR SuperWallYellowBlood: WallRedBlood
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSuper
}


//This one spawns a ridiculously bigger decal, used by BFG extreme deaths
ACTOR GiantWallYellowBlood: WallYellowBlood
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodGiant
}

//Spawns giant blood decals all around the area. Used in Yellow Doom's BFG deaths.
Actor YellowBloodSplinter
{
	+THRUACTORS
	+CLIENTSIDEONLY
	States
		{
			 Spawn:
			   TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
			   TNT1 A 0 A_CustomMissile ("GiantWallYellowBlood", 40, 0, 0, 2, random (0, 35))
			   TNT1 A 0 A_CustomMissile ("GiantWallYellowBlood", 40, 0, 45, 2, random (0, 35))
			   TNT1 A 0 A_CustomMissile ("GiantWallYellowBlood", 40, 0, 90, 2, random (0, 35))
			   TNT1 A 0 A_CustomMissile ("GiantWallYellowBlood", 40, 0, 135, 2, random (0, 35))
			   TNT1 A 0 A_CustomMissile ("GiantWallYellowBlood", 40, 0, 180, 2, random (0, 35))
			   TNT1 A 0 A_CustomMissile ("GiantWallYellowBlood", 40, 0, 225, 2, random (0, 35))
			   TNT1 A 0 A_CustomMissile ("GiantWallYellowBlood", 40, 0, 270, 2, random (0, 35))
			   TNT1 A 0 A_CustomMissile ("GiantWallYellowBlood", 40, 0, 315, 2, random (0, 35))
			   Stop
			
			Splash:
				BLOD A 0
				stop
		}
}


//Spawned by BD's kicked heads  to spawn blood decals and make the head bounce sound.
ACTOR ShortWallYellowBlood: WallYellowBlood
{
 speed 2
 Gravity 1
 Radius 24
 Height 12
    States
    {
     Spawn:
       TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
        TNT1 A 3
        Stop
	Death:
	    TNT1 AAAAAAAAAAAAAAAAAA 0 A_CustomMissile ("Yellow_FlyingBloodFakeNoDecal", 0, 0, random (0, 360), 2, random (0, 90))
		TNT1 A 0 A_SpawnItem("Yellow_BloodSpot",0,0,0,1)
		TNT1 A 0 A_PlaySound("HEDBON")
	    TNT1 A 20
		Stop
	}
}





//Blood actors spawned underwater
ACTOR YellowUnderblood1: Underblood1
{
translation "168:191=160:167","16:47=160:167"
}

//Shorter version
ACTOR YellowUnderblood2: YellowUnderblood1
{
 scale 0.7
 speed 0
}
//Bigger version that moves, used for gibbing.
ACTOR YellowUnderblood3: YellowUnderblood1
{
 scale 2.2
 speed 2
 Alpha 0.3
}


//Big blood mists


actor YellowSuperGore: SuperGore
{
	translation "168:191=160:167","16:47=160:167"
	Decal YellowBloodSplat
}

actor YellowBigSuperGore: YellowSuperGore
{
Scale 2.0
Speed 4
}

Actor YellowSuperGoreMist: SuperGoreMist
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
}


//Used on bullet hit impacts
Actor YellowSuperGoreMistTiny: SuperGoreMistTiny
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
}

actor BigYellowSuperGore: BigSuperGore
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
}


actor GiantYellowSuperGore: GiantSuperGore
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
}


//Spawners for the YellowSuperGore thing
Actor YellowSuperGoreSpawner: SuperGoreSpawner
{
	states
	{
	Spawn:
		TNT1 A 3
		TNT1 AAA 3 A_CustomMissile("YellowSuperGore", 7, 0, random (0, 360), 2, random (30, 60))
		Stop
	}
}



//Bloody footprints still requires the player to be edited to work.
//Gives the player an inventory item to indicate the feet are smeaYellow.
ACTOR BootSmearerYellow: GrowingBloodPool
{
	MONSTER
	-SOLID
	+NOCLIP
	+THRUACTORS
	-COUNTKILL
	+LOOKALLAROUND
	-FRIENDLY
	Radius 0
	Height 0
	 states
	 {
	 Spawn:
		 TNT1 A 0
		 TNT1 A 1 A_Look
		 Goto See
	  
	 See:
		 TNT1 A 1 A_Chase("","")
		 TNT1 A 0 A_Die("LookForPlayer")
	 Death:	
	 Death.LookForPlayer:
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 8 A_JumpIfCloser(60, "SmearBootsWithYellowBlood")
		Stop
	SmearBootsWithYellowBlood:
		//TNT1 A 0 A_GiveToTarget("BootsSmeaYellowWithYellowBlood", 8)
		BPDL A 0
		Stop
	}
}

ACTOR YellowBloodFootPrintLeft: GrowingBloodPool
{
	Scale 0.09
	+CLIENTSIDEONLY
	Renderstyle Shaded
	StencilColor "55 55 00"
	 states
	 {
	 Spawn:
	 Death:
	 Crash:
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
		TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckIfOverLiquid")//Check if is under a liquid
		TNT1 A 4
		
		TNT1 A 0 A_JumpIfInventory("IsOverWater", 1, "Splash")
		TNT1 A 0 A_JumpIfInventory("IsOverSlime", 1, "Splash")
		TNT1 A 0 A_JumpIfInventory("IsOverlava", 1, "Splash")
		TNT1 A 0 A_CheckFloor("ShowUp")
		Goto Splash
	ShowUp:
		TNT1 A 0
		TNT1 A 0 A_QueueCorpse
		TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckJanitor")
		BPDL A 200
		TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Splash")
		BPDL A -1
		Stop
	Splash:
		TNT1 A 0
		Stop	
	 }
}


ACTOR YellowBloodFootPrintRight: GrowingBloodPool
{
Scale 0.09
+CLIENTSIDEONLY
Renderstyle Shaded
StencilColor "55 55 00"
 states
 {
	 Spawn:
	 Death:
	 Crash:
		TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
		TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckIfOverLiquid")//Check if is under a liquid
		TNT1 A 4
		
		TNT1 A 0 A_JumpIfInventory("IsOverWater", 1, "Splash")
		TNT1 A 0 A_JumpIfInventory("IsOverSlime", 1, "Splash")
		TNT1 A 0 A_JumpIfInventory("IsOverlava", 1, "Splash")
		TNT1 A 0 A_CheckFloor("ShowUp")
		Goto Splash
		ShowUp:
		TNT1 A 0
		TNT1 A 0 A_QueueCorpse
		TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckJanitor")
		BPDL A 200
		TNT1 A 0 A_JumpIfInventory("LowGraphicsMode", 1, "Splash")
		BPDL A -1
		Stop
	Splash:
		TNT1 A 0
		Stop
 }
}




//Gib actors

ACTOR YellowXDeath1: XDeath1
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSuper
    States
    {
    Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "Underwater")
		BLOD AAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItem("Yellow_LiquidBloodTrail")
        Stop
    Death:
        TNT1 A 0 A_SpawnItemEx ("Yellow_BloodSpot", 0, 0, 1)
		TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckIfOverLiquid")
		XDT1 EF 3
		TNT1 A 0 A_JumpIfInventory("IsOverWater", 1, "IsOverLiquid")
		TNT1 A 0 A_JumpIfInventory("IsOverSlime", 1, "IsOverLiquid")
        XDT1 GHIJKL 3
        Stop
        TNT1 A 1
     Underwater:
	 Splash:
	    BLUD C 0 ThrustThingZ (0,35,1,0)
        XDT1 AB 3 A_CustomMissile ("Yellow_FlyingBloodTrail", 0, 0, random (0, 360), 2, random (0, 360))
		BLUD C 0 ThrustThingZ (0,35,1,0)
		XDT1 CD 3 A_CustomMissile ("Yellow_FlyingBloodTrail", 0, 0, random (0, 360), 2, random (0, 360))
        Loop
		
	IsOverLiquid:
		TNT1 A 1
		TNT1 A 0 A_CheckFloor("SpawnOnWater")
		
	SpawnOnWater:
		TNT1 A 1
		TNT1 A 0 A_SpawnItem ("YellowWaterBloodSpot", 5)
		Stop
    }
}

//A flying piece of meat
ACTOR YellowXDeath2: XDeath2
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSuper
    States
    {
    Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
        XMT1 ABCDEFGH 2 A_CustomMissile ("Yellow_FlyingBloodTrail", 0, 0, random (0, 360), 2, random (0, 360))
        Loop
    Death:
        TNT1 AAAAAAA 0 A_CustomMissile ("Yellow_FlyingBloodTrail", 0, 0, random (0, 180), 2, random (0, 180))
	    TNT1 A 0 A_CheckFloor("SpawnFloor")
		TNT1 A 0 A_CheckCeiling("SpawnCeiling")
		TNT1 A 0 A_SpawnItem("SmearingYellowXDeath2")
		Stop
		
	SpawnFloor:
	    XMT1 M 1
		TNT1 A 0 A_QueueCorpse
		TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckJanitor")
		TNT1 A 0 A_SpawnItemEx ("Yellow_BloodSpot", 0, 0, 1)
		XMT1 M -1
		Stop
		
	SpawnCeiling:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("CeilYellowXDeath2", 0, 0, 1)
		TNT1 A 0 A_SpawnItemEx ("YellowCeilBloodSpotLarge", 0, 0, 1)
		Stop	
		
	Vanish:
	    TNT1 A 5
		Stop
    }
}


ACTOR YellowXDeath2b: YellowXDeath2 {	Speed 4 } //Low-range version.


//A piece of meat that has hit the wall, and now is slowly smearing
ACTOR SmearingYellowXDeath2: SmearingXDeath2
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSuper
    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("YellowXDeath2NoStick")
        Stop
		
	Rest:
		XMT1 M 1
		TNT1 A 0 A_QueueCorpse
		TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckJanitor")
		TNT1 A 0 A_SpawnItem("Yellow_BloodSpot",0,0,0,1)
		XMT1 M -1
		Stop
		
	Vanish:
	    TNT1 A 5
		Stop
    }
}

//piece of meat that got stuck in the ceiling
actor CeilYellowXDeath2: CeilXdeath2
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSuper
	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("YellowXDeath2NoStick", 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 YellowXDeath2NoStick: XDeath2NoStick
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
    States
    {
    Spawn:
		XMT1 FFFGGH 2
	Live:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
		TNT1 A 0 A_CheckFloor("Death")
		XMT1 ABCDEFGH 3 A_CustomMissile ("Yellow_FlyingBloodTrail", 0, 0, random (0, 360), 2, random (0, 360))
        Loop
    Death:
        TNT1 AAAAAAA 0 A_CustomMissile ("Yellow_FlyingBloodTrail", 0, 0, random (0, 360), 2, random (20, 70))
        XMT1 M 1
		TNT1 A 0 A_QueueCorpse
		TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckJanitor")
		XMT1 M 3
		TNT1 A 0 A_SpawnItem("Yellow_BloodSpot",0,0,0,1)
		XMT1 M -1
		Stop
    }
}




//Variation of YellowXDeath2
ACTOR YellowXDeath3: XDeath3
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSuper
    States
    {
    Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
        XMT2 ABCDEFGH 3 A_CustomMissile ("Yellow_FlyingBloodTrail", 0, 0, random (0, 360), 2, random (0, 360))
        Loop
    Death:
        TNT1 AAAAAAA 0 A_CustomMissile ("Yellow_FlyingBloodTrail", 0, 0, random (0, 180), 2, random (0, 180))
	    TNT1 A 0 A_CheckFloor("SpawnFloor")
		TNT1 A 0 A_CheckCeiling("SpawnCeiling")
		TNT1 A 0 A_SpawnItem("SmearingYellowXDeath3")
		Stop
		
	SpawnFloor:
	    XMT2 I 1
		TNT1 A 0 A_QueueCorpse
		TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckJanitor")
		TNT1 A 0 A_SpawnItemEx ("Yellow_BloodSpot", 0, 0, 1)
		XMT2 I -1
		Stop
		
	SpawnCeiling:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx ("CeilYellowXDeath3", 0, 0, 1)
		TNT1 A 0 A_SpawnItemEx ("YellowCeilBloodSpotLarge", 0, 0, 1)
		Stop	
    }
}


ACTOR YellowXDeath3b: YellowXDeath3 {	Speed 4 } //Low-range version.


//A piece of meat that has hit the wall, and now is slowly smearing
ACTOR SmearingYellowXDeath3: SmearingXDeath3
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSuper
    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("YellowXDeath3NoStick")
        Stop
		
	Rest:
		XMT2 I 1
		TNT1 A 0 A_QueueCorpse
		TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckJanitor")
		TNT1 A 0 A_SpawnItem("Yellow_BloodSpot",0,0,0,1)
		XMT2 I -1
		Stop
		
	Vanish:
	    TNT1 A 5
		Stop
    }
}

//piece of meat that got stuck in the ceiling
actor CeilYellowXDeath3: CeilXDeath3
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSuper
	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("YellowXDeath3NoStick", 0, 0, 0, 0, 0, -1)
			  XMT2 MMN 2
			  stop
		}
}

//piece of meat that got stuck on the ceiling/wall and now is falling
ACTOR YellowXDeath3NoStick: XDeath3NoStick
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSuper
    States
    {
	 Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
		TNT1 A 0 A_CheckFloor("Death")
        XMT2 O 3
        Loop
    Death:
        TNT1 AAAAAAA 0 A_CustomMissile ("Yellow_FlyingBloodTrail", 0, 0, random (0, 360), 2, random (20, 70))
        XMT2 I 1
		TNT1 A 0 A_QueueCorpse
		TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckJanitor")
		XMT2 I 3
		TNT1 A 0 A_SpawnItem("Yellow_BloodSpot",0,0,0,1)
		XMT2 I -1
		Stop
    }
}

//Big piece of ribcage
ACTOR YellowXDeath4: XDeath4
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
    States
    {
    Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
        XDB6 AAAAAA 3 A_CustomMissile ("Yellow_FlyingBloodTrail", 0, 0, random (0, 360), 2, random (0, 360))
        Loop
    Death:
		XDB6 B 1
		TNT1 A 0 A_QueueCorpse
		TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckJanitor")
		XDB6 B -1
		Stop
    }
}

//Big piece of ribcage 2
ACTOR YellowXDeath5: XDeath5
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
    States
    {
    Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
        XME5 A 3 A_CustomMissile ("Yellow_FlyingBloodTrail", 0, 0, random (0, 360), 2, random (0, 360))
        Loop
    Death:
        TNT1 AAAAAAA 0 A_CustomMissile ("Yellow_FlyingBloodTrail", 0, 0, random (0, 180), 2, random (0, 180))
        TNT1 A 0 A_SpawnItemEx ("Yellow_BloodSpot", 0, 0, 1)
		XME5 B 1
		TNT1 A 0 A_QueueCorpse
		TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckJanitor")
		XME5 B -1
		TNT1 A 0 
        XME5 B 3
    Living:	
		XME5 B 800//duration
		TNT1 A 0 A_JumpIfInventory("lowgraphicsmode", 1, "Vanish")
        Loop
	Vanish:
	    TNT1 A 1
	    Stop
		
    }
}
//Big piece of ribcage 3
ACTOR YellowXDeath6: XDeath6
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
    States
    {
    Spawn:
	    TNT1 A 0 A_JumpIf(waterlevel > 1, "Splash")
        XME5 C 3 A_CustomMissile ("Yellow_FlyingBloodTrail", 0, 0, random (0, 360), 2, random (0, 360))
        Loop
    Death:
        TNT1 AAAAAAA 0 A_CustomMissile ("Yellow_FlyingBloodTrail", 0, 0, random (0, 180), 2, random (0, 180))
        TNT1 A 0 A_SpawnItemEx ("Yellow_BloodSpot", 0, 0, 1)
		XME5 D 1
		TNT1 A 0 A_QueueCorpse
		TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckJanitor")
		XME5 D -1
		TNT1 A 0 
        XME5 D 3
    Living:	
		XME5 D 800//duration
		TNT1 A 0 A_JumpIfInventory("lowgraphicsmode", 1, "Vanish")
        Loop
	Vanish:
	    TNT1 A 1
	    Stop
		
    }
}


ACTOR YellowXDeath5Big: YellowXDeath5
{
	XScale -1.5
	YScale 1.5
	Speed 6
}

ACTOR YellowXDeath6Big: YellowXDeath6
{
	XScale -1.5
	YScale 1.5
	Speed 6
}

//Generic organ
ACTOR YellowXDeathOrgan1: XDeathOrgan1
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
    States
    {
    Spawn:
	    XME8 A 4 A_CustomMissile ("Yellow_FlyingBloodTrail", 0, 0, random (0, 360), 2, random (0, 360))
        Loop
    }
}

ACTOR YellowXDeathOrgan1b: XDeathOrgan1b
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
}

ACTOR YellowXDeathOrgan2: YellowXDeathOrgan1
{
States
{
    Spawn:
	    XME8 B 4 A_CustomMissile ("Yellow_FlyingBloodTrail", 0, 0, random (0, 360), 2, random (0, 360))
        Loop
    Death:
        XME8 B 1
		TNT1 A 0 A_QueueCorpse
		TNT1 A 0 ACS_NamedExecuteAlways("BD_CheckJanitor")
		XME8 B -1
        Stop
    }
}




ACTOR YellowGuts: Guts
{
translation "168:191=160:167","16:47=160:167"
Decal YellowBloodSplat
}

ACTOR YellowGuts2: YellowGuts
{
    Speed 3
}


ACTOR SmallYellowBrainPiece: SmallBrainPiece
{
translation "16:31=166:166", "32:47=163:166", "176:191=163:166"
    States
    {
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_Jump(255, "Spawn1", "Spawn2", "Spawn3", "Spawn4", "Fly")
	Spawn1:
		TNT1 A 0
		TNT1 A 0 A_SetScale(0.2, 0.2)
		Goto Fly
	Spawn2:
		TNT1 A 0
		TNT1 A 0 A_SetScale(-0.5, 0.5)
		Goto Fly	
	Spawn3:
		TNT1 A 0
		TNT1 A 0 A_SetScale(-0.3, 0.3)
		Goto Fly	
	Spawn4:
		TNT1 A 0
		TNT1 A 0 A_SetScale(-0.2, 0.2)
		Goto Fly	
	Fly:	
		XDB5 ABCDEFGH 2
		Loop
	Death:
		TNT1 A 0
		TNT1 A 0 A_CheckFloor("Rest")
		TNT1 A 0 A_CheckCeiling("SpawnCeil")
		TNT1 A 0 A_SpawnItemEx("SmearingYellowBrain", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERSCALE)
		Stop
	SpawnCeil:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("SmallYellowBrainPieceCeil", 0, 0, 0, 0, 0, 0, 0, SXF_TRANSFERSCALE)
		Stop
		
    }
}

ACTOR SmallYellowBrainPieceFast: SmallYellowBrainPiece {  Speed 14 }


Actor SmallYellowBrainPieceCeil: SmallBrainPieceCeil
{
translation "16:31=166:166", "32:47=163:166", "176:191=163:166"
	States
	{
		Spawn:
			TNT1 A 0
			TNT1 A 0 A_JUmp (255, "Live1", "Live2", "Live3")
			Goto Live1

		  Live1:
			  XDB5 JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ 4 ThrustThingZ(0, 20, 0, 1)
			  Goto Fall
		  
		  Live2:
			  XDB5 JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ 4 ThrustThingZ(0, 20, 0, 1)
			  Goto Fall
		  
		  Live3:
			  XDB5 JJJJJJJJJJJJJJJ 4 ThrustThingZ(0, 20, 0, 1)
			  Goto Fall
		  
		 Fall:
			  TNT1 A 0 A_SpawnItemEx("SmallYellowBrainPieceFalling", 0, 0, 0, 0, 0, -2, SXF_TRANSFERSCALE)
			  stop
			  }
}

ACTOR SmallYellowBrainPieceFalling: SmallBrainPieceFalling
{
	translation "16:31=166:166", "32:47=163:166", "176:191=163:166"
}

ACTOR SmearingYellowBrain: SmearingBrain
{
	translation "16:31=166:166", "32:47=163:166", "176:191=163:166"
}




