#library "ACSGORE"
#include "zcommon.acs"



script "BBGORE_CheckKill" KILL
{
		
	//First we check if it's actually a monster
	if (CheckFlag(0, "ISMONSTER"))
	{
		//To make an enemy spawn green blood, set it's "accuracy" 999, or 998 for blue.
		//"Accuracy" has nothing to do with the monster's actual accuracy, it's a compatibility
		//script only used in Strife that has no actual practical use, but can be used to track a
		//generic thing type with GetActorProperty. It's a way to tell the engine that anything with
		//the "Accuracy" property set to 999 should spawn green gibs.
		//A simpler solution would be checking APROP_NameTag to check if its a Baron or a Cacodemon, but
		//this wouldn't solve the issue with blood hit actors, since it's impossible to change the
		//BloodColor property of a monster without changing it's DECORATE script directly (wish the
		//GZDoom and Zandro devs could had fixed the monster blood bug by default) <-- mark is a poopoo
		//This section of the script is entirely irrelevant if you are porting the system to your mod.

		//Green Blood
		if (GetActorProperty(0, APROP_Accuracy) == 999) 
		{	
			if (GetActorProperty(0, APROP_Health) < (GetCvar("bd_mingibhealth")))
			{
				if ((CheckFlag(0, "NOBLOOD") == TRUE) || (CheckFlag(0, "NOBLOODDECALS") == TRUE) && ((GetCVar("bd_allgib") == 0 || GetCVar("bd_allgib") == 2)))
				{
					terminate;
				}
				
				if ((GetCVar("bd_keepcorpse") == 0) && !(GetActorProperty(0, APROP_RenderStyle) != STYLE_Normal && !(GetCVar("bd_allgib") == 1 || GetCVar("bd_allgib") == 3)))
				{
					ACS_NamedExecuteAlways("BD_RemoveCorpse", 0);
				}
				
				if (GetActorProperty(0, APROP_RenderStyle) != STYLE_Normal)
				{	
					if (GetActorProperty(0, APROP_RenderStyle) != STYLE_Normal && !(GetCVar("bd_allgib") == 1 || GetCVar("bd_allgib") == 3))
					{
						terminate;
					}
				}	
				
				if (GetCVar("bd_healthgib") == 1)
				{
					if (GetActorProperty(0, APROP_SpawnHealth) < 100)
					{
						Spawn("GreenMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (100 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 300)
					{
						Spawn("GreenMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (300 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 750)
					{
						Spawn("GreenMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (750 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 2000)
					{
						Spawn("GreenMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (2000 <= GetActorProperty(0, APROP_SpawnHealth) < 4000)
					{
						Spawn("GreenMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						Spawn("GreenMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						Spawn("GreenMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
					}
					else if (4000 <= GetActorProperty(0, APROP_SpawnHealth))
					{
						Spawn("GreenMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("GreenMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Delay(3);
						Spawn("GreenMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("GreenMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Delay(3);
						Spawn("GreenMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("GreenMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
					}
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						if (GetActorProperty(0, APROP_SpawnHealth) < 100)
							{
								Spawn("GreenMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
							}
						else if (100 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 300)
							{
								Spawn("GreenMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0)); 
							}
						else if (300 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 750)
							{
								Spawn("GreenMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0)); 
							}
						else if (750 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 2000)
							{
								Spawn("GreenMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
							}
						else if (2000 <= GetActorProperty(0, APROP_SpawnHealth) < 4000)
							{
								Spawn("GreenMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
								Spawn("GreenMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
								Spawn("GreenMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
							}
						else if (4000 <= GetActorProperty(0, APROP_SpawnHealth))
							{
								Spawn("GreenMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
								Spawn("GreenMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
								Delay(3);
								Spawn("GreenMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
								Spawn("GreenMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
								Delay(3);
								Spawn("GreenMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
								Spawn("GreenMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							}
					}
				}
				
				if (GetActorProperty(0, APROP_Height) < 9.0) 
				{	
					Spawn("GreenMeatDeathTiny", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						Delay(3);
						Spawn("GreenMeatDeathTiny", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
						
					terminate;
				}	
				
				if (GetActorProperty(0, APROP_Height) < 38.0) 
				{	
					Spawn("GreenMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						Delay(3);
						Spawn("GreenMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
					
					terminate;
				}	
							
				Spawn("GreenMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				
				if (GetCVar("bd_ludicrousgibs") == 1)
				{
					Delay(3);
					Spawn("GreenMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				}
						
				if (GetActorProperty(0, APROP_Radius) > 30.0) 
				{
					Spawn("GreenMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0));
						
					if (GetCVar("bd_ludicrousgibs") == 1) 
					{
						Delay(3);
						Spawn("GreenMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
				}
				
				if (GetActorProperty(0, APROP_Height) > 100.0)
				{
					Spawn("GreenMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						Delay(3);
						Spawn("GreenMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
				}
				
				terminate;
			}
			
			ACS_NamedExecuteAlways("BB_MonsterNormalDeath", 0);
		}	
	
		//Blue Blood
		if (GetActorProperty(0, APROP_Accuracy) == 998) 
		{
			if (GetActorProperty(0, APROP_Health) < (GetCvar("bd_mingibhealth")))
			{
				if ((CheckFlag(0, "NOBLOOD") == TRUE) || (CheckFlag(0, "NOBLOODDECALS") == TRUE) && ((GetCVar("bd_allgib") == 0 || GetCVar("bd_allgib") == 2)))
				{
					terminate;
				}
				
				if ((GetCVar("bd_keepcorpse") == 0) && !(GetActorProperty(0, APROP_RenderStyle) != STYLE_Normal && !(GetCVar("bd_allgib") == 1 || GetCVar("bd_allgib") == 3)))
				{
					ACS_NamedExecuteAlways("BD_RemoveCorpse", 0);
				}
				
				if (GetActorProperty(0, APROP_RenderStyle) != STYLE_Normal && !(GetCVar("bd_allgib") == 1 || GetCVar("bd_allgib") == 3))
				{
					terminate;
				}
						
				if (GetCVar("bd_healthgib") == 1)
				{
					if (GetActorProperty(0, APROP_SpawnHealth) < 100)
					{
						Spawn("BlueMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (100 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 300)
					{
						Spawn("BlueMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (300 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 750)
					{
						Spawn("BlueMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (750 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 2000)
					{
						Spawn("BlueMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (2000 <= GetActorProperty(0, APROP_SpawnHealth))
					{
						Spawn("BlueMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						Spawn("BlueMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						Spawn("BlueMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
					}
					else if (4000 <= GetActorProperty(0, APROP_SpawnHealth))
					{
						Spawn("BlueMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("BlueMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Delay(3);
						Spawn("BlueMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("BlueMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Delay(3);
						Spawn("BlueMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("BlueMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
					}
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						if (GetActorProperty(0, APROP_SpawnHealth) < 100)
						{
							Spawn("BlueMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (100 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 300)
						{
							Spawn("BlueMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (300 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 750)
						{
							Spawn("BlueMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (750 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 2000)
						{
							Spawn("BlueMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (2000 <= GetActorProperty(0, APROP_SpawnHealth))
						{
							Spawn("BlueMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
							Spawn("BlueMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
							Spawn("BlueMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						}
						else if (4000 <= GetActorProperty(0, APROP_SpawnHealth))
						{
							Spawn("BlueMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("BlueMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Delay(3);
							Spawn("BlueMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("BlueMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Delay(3);
							Spawn("BlueMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("BlueMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						}
					}
				}
				
				if (GetActorProperty(0, APROP_Height) < 9.0) 
				{	
					Spawn("BlueMeatDeathTiny", GetActorX(0), GetActorY(0), GetActorZ(0));
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{	
						Delay(3);
						Spawn("BlueMeatDeathTiny", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
						
					terminate;
				}	
				
				if (GetActorProperty(0, APROP_Height) < 38.0) 
				{	
					Spawn("BlueMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						Delay(3);
						Spawn("BlueMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
					
					terminate;
				}	
							
				Spawn("BlueMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				
				if (GetCVar("bd_ludicrousgibs") == 1)
				{
					Delay(3);
					Spawn("BlueMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				}
							
				if (GetActorProperty(0, APROP_Radius) > 30.0) 
				{
					Spawn("BlueMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0));
					
					if (GetCVar("bd_ludicrousgibs") == 1) 
					{
						Delay(3);
						Spawn("BlueMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
				}	

				if (GetActorProperty(0, APROP_Height) > 100.0)
				{
					Spawn("BlueMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						Delay(3);
						Spawn("BlueMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
				}
				
				terminate;
			}
			
			ACS_NamedExecuteAlways("BB_MonsterNormalDeath", 0);
		}	
	
		//Orange Blood
		if (GetActorProperty(0, APROP_Accuracy) == 997) 
		{
			if (GetActorProperty(0, APROP_Health) < (GetCvar("bd_mingibhealth")))
			{
				if ((CheckFlag(0, "NOBLOOD") == TRUE) || (CheckFlag(0, "NOBLOODDECALS") == TRUE) && ((GetCVar("bd_allgib") == 0 || GetCVar("bd_allgib") == 2)))
				{
					terminate;
				}
				
				if ((GetCVar("bd_keepcorpse") == 0) && !(GetActorProperty(0, APROP_RenderStyle) != STYLE_Normal && !(GetCVar("bd_allgib") == 1 || GetCVar("bd_allgib") == 3)))
				{
					ACS_NamedExecuteAlways("BD_RemoveCorpse", 0);
				}
				
				if (GetActorProperty(0, APROP_RenderStyle) != STYLE_Normal && !(GetCVar("bd_allgib") == 1 || GetCVar("bd_allgib") == 3))
				{
					terminate;
				}
				
				if (GetCVar("bd_healthgib") == 1)
				{
					if (GetActorProperty(0, APROP_SpawnHealth) < 100)
					{
						Spawn("OrangeMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (100 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 300)
					{
						Spawn("OrangeMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (300 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 750)
					{
						Spawn("OrangeMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (750 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 2000)
					{
						Spawn("OrangeMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (2000 <= GetActorProperty(0, APROP_SpawnHealth))
					{
						Spawn("OrangeMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						Spawn("OrangeMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						Spawn("OrangeMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
					}
					else if (4000 <= GetActorProperty(0, APROP_SpawnHealth))
					{
						Spawn("OrangeMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("OrangeMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Delay(3);
						Spawn("OrangeMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("OrangeMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Delay(3);
						Spawn("OrangeMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("OrangeMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
					}
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						if (GetActorProperty(0, APROP_SpawnHealth) < 100)
						{
							Spawn("OrangeMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (100 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 300)
						{
							Spawn("OrangeMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (300 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 750)
						{
							Spawn("OrangeMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (750 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 2000)
						{
							Spawn("OrangeMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (2000 <= GetActorProperty(0, APROP_SpawnHealth))
						{
							Spawn("OrangeMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
							Spawn("OrangeMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
							Spawn("OrangeMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						}
						else if (4000 <= GetActorProperty(0, APROP_SpawnHealth))
						{
							Spawn("OrangeMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("OrangeMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Delay(3);
							Spawn("OrangeMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("OrangeMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Delay(3);
							Spawn("OrangeMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("OrangeMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						} 
					}
				}
							
				if (GetActorProperty(0, APROP_Height) < 9.0) 
				{	
					Spawn("OrangeMeatDeathTiny", GetActorX(0), GetActorY(0), GetActorZ(0));
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{	
						Delay(3);
						Spawn("OrangeMeatDeathTiny", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
						
					terminate;
				}	
				
				if (GetActorProperty(0, APROP_Height) < 38.0) 
				{	
					Spawn("OrangeMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						Delay(3);
						Spawn("OrangeMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
					
					terminate;
				}	
							
				Spawn("OrangeMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				
				if (GetCVar("bd_ludicrousgibs") == 1)
				{
					Delay(3);
					Spawn("OrangeMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				}
							
				if (GetActorProperty(0, APROP_Radius) > 30.0) 
				{
					Spawn("OrangeMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0));
					
					if (GetCVar("bd_ludicrousgibs") == 1) 
					{
						Delay(3);
						Spawn("OrangeMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
				}	

				if (GetActorProperty(0, APROP_Height) > 100.0)
				{
					Spawn("OrangeMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						Delay(3);
						Spawn("OrangeMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
				}
				
				terminate;
			}
			
			ACS_NamedExecuteAlways("BB_MonsterNormalDeath", 0);
		}	
	
		//Yellow Blood
		if (GetActorProperty(0, APROP_Accuracy) == 996) 
		{
			if (GetActorProperty(0, APROP_Health) < (GetCvar("bd_mingibhealth")))
			{
				if ((CheckFlag(0, "NOBLOOD") == TRUE) || (CheckFlag(0, "NOBLOODDECALS") == TRUE) && ((GetCVar("bd_allgib") == 0 || GetCVar("bd_allgib") == 2)))
				{
					terminate;
				}
				
				if ((GetCVar("bd_keepcorpse") == 0) && !(GetActorProperty(0, APROP_RenderStyle) != STYLE_Normal))
				{
					ACS_NamedExecuteAlways("BD_RemoveCorpse", 0);
				}
				
				if (GetActorProperty(0, APROP_RenderStyle) != STYLE_Normal)
				{
					terminate;
				}	
					
				if (GetCVar("bd_healthgib") == 1)
				{
					if (GetActorProperty(0, APROP_SpawnHealth) < 100)
					{
						Spawn("YellowMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (100 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 300)
					{
						Spawn("YellowMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (300 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 750)
					{
						Spawn("YellowMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (750 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 2000)
					{
						Spawn("YellowMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (2000 <= GetActorProperty(0, APROP_SpawnHealth))
					{
						Spawn("YellowMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						Spawn("YellowMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						Spawn("YellowMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
					}
					else if (4000 <= GetActorProperty(0, APROP_SpawnHealth))
					{
						Spawn("YellowMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("YellowMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Delay(3);
						Spawn("YellowMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("YellowMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Delay(3);
						Spawn("YellowMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("YellowMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
					}
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{	
						if (GetActorProperty(0, APROP_SpawnHealth) < 100)
						{
							Spawn("YellowMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (100 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 300)
						{
							Spawn("YellowMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (300 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 750)
						{
							Spawn("YellowMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (750 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 2000)
						{
							Spawn("YellowMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (2000 <= GetActorProperty(0, APROP_SpawnHealth))
						{
							Spawn("YellowMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
							Spawn("YellowMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
							Spawn("YellowMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						}
						else if (4000 <= GetActorProperty(0, APROP_SpawnHealth))
						{
							Spawn("YellowMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("YellowMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Delay(3);
							Spawn("YellowMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("YellowMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Delay(3);
							Spawn("YellowMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("YellowMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						}
					}
				} 
				
				if (GetActorProperty(0, APROP_Height) < 9.0) 
				{	
					Spawn("YellowMeatDeathTiny", GetActorX(0), GetActorY(0), GetActorZ(0));
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{	
						Delay(3);
						Spawn("YellowMeatDeathTiny", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
						
					terminate;
				}	
				
				if (GetActorProperty(0, APROP_Height) < 38.0) 
				{	
					Spawn("YellowMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						Delay(3);
						Spawn("YellowMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
					
					terminate;
				}	
							
				Spawn("YellowMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				
				if (GetCVar("bd_ludicrousgibs") == 1)
				{
					Delay(3);
					Spawn("YellowMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				}
							
				if (GetActorProperty(0, APROP_Radius) > 30.0) 
				{
					Spawn("YellowMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0));
					
					if (GetCVar("bd_ludicrousgibs") == 1) 
					{
						Delay(3);
						Spawn("YellowMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
				}	

				if (GetActorProperty(0, APROP_Height) > 100.0)
				{
					Spawn("YellowMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						Delay(3);
						Spawn("YellowMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
				}
				
				terminate;
			}
			
			ACS_NamedExecuteAlways("BB_MonsterNormalDeath", 0);
		}	
	
		//Purple Blood
		if (GetActorProperty(0, APROP_Accuracy) == 995) 
		{
			if (GetActorProperty(0, APROP_Health) < (GetCvar("bd_mingibhealth")))
			{
				if ((CheckFlag(0, "NOBLOOD") == TRUE) || (CheckFlag(0, "NOBLOODDECALS") == TRUE) && ((GetCVar("bd_allgib") == 0 || GetCVar("bd_allgib") == 2)))
				{
					terminate;
				}
				
				if ((GetCVar("bd_keepcorpse") == 0) && !(GetActorProperty(0, APROP_RenderStyle) != STYLE_Normal && !(GetCVar("bd_allgib") == 1 || GetCVar("bd_allgib") == 3)))
				{
					ACS_NamedExecuteAlways("BD_RemoveCorpse", 0);
				}
				
				if (GetActorProperty(0, APROP_RenderStyle) != STYLE_Normal && !(GetCVar("bd_allgib") == 1 || GetCVar("bd_allgib") == 3))
				{
					terminate;
				}	
						
				if (GetCVar("bd_healthgib") == 1)
				{
					if (GetActorProperty(0, APROP_SpawnHealth) < 100)
					{
						Spawn("PurpleMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (100 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 300)
					{
						Spawn("PurpleMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (300 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 750)
					{
						Spawn("PurpleMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (750 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 2000)
					{
						Spawn("PurpleMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (2000 <= GetActorProperty(0, APROP_SpawnHealth))
					{
						Spawn("PurpleMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						Spawn("PurpleMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						Spawn("PurpleMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
					}
					else if (4000 <= GetActorProperty(0, APROP_SpawnHealth))
					{
						Spawn("PurpleMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("PurpleMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Delay(3);
						Spawn("PurpleMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("PurpleMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Delay(3);
						Spawn("PurpleMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("PurpleMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
					}
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{	
						if (GetActorProperty(0, APROP_SpawnHealth) < 100)
						{
							Spawn("PurpleMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (100 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 300)
						{
							Spawn("PurpleMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (300 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 750)
						{
							Spawn("PurpleMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (750 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 2000)
						{
							Spawn("PurpleMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (2000 <= GetActorProperty(0, APROP_SpawnHealth))
						{
							Spawn("PurpleMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
							Spawn("PurpleMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
							Spawn("PurpleMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						}
						else if (4000 <= GetActorProperty(0, APROP_SpawnHealth))
						{
							Spawn("PurpleMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("PurpleMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Delay(3);
							Spawn("PurpleMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("PurpleMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Delay(3);
							Spawn("PurpleMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("PurpleMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						}
					}
				}
				
				if (GetActorProperty(0, APROP_Height) < 9.0) 
				{	
					Spawn("PurpleMeatDeathTiny", GetActorX(0), GetActorY(0), GetActorZ(0));
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{	
						Delay(3);
						Spawn("PurpleMeatDeathTiny", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
						
					terminate;
				}	
				
				if (GetActorProperty(0, APROP_Height) < 38.0) 
				{	
					Spawn("PurpleMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						Delay(3);
						Spawn("PurpleMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
					
					terminate;
				}	
							
				Spawn("PurpleMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				
				if (GetCVar("bd_ludicrousgibs") == 1)
				{
					Delay(3);
					Spawn("PurpleMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				}
							
				if (GetActorProperty(0, APROP_Radius) > 30.0) 
				{
					Spawn("PurpleMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0));
					
					if (GetCVar("bd_ludicrousgibs") == 1) 
					{
						Delay(3);
						Spawn("PurpleMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
				}	

				if (GetActorProperty(0, APROP_Height) > 100.0)
				{
					Spawn("PurpleMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						Delay(3);
						Spawn("PurpleMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
				}
				
				terminate;
			}
			
			ACS_NamedExecuteAlways("BB_MonsterNormalDeath", 0);
		}	
	
		//Black Blood
		if (GetActorProperty(0, APROP_Accuracy) == 994) 
		{
			if (GetActorProperty(0, APROP_Health) < (GetCvar("bd_mingibhealth")))
			{
				if ((CheckFlag(0, "NOBLOOD") == TRUE) || (CheckFlag(0, "NOBLOODDECALS") == TRUE) && ((GetCVar("bd_allgib") == 0 || GetCVar("bd_allgib") == 2)))
				{
					terminate;
				}
				
				if ((GetCVar("bd_keepcorpse") == 0) && !(GetActorProperty(0, APROP_RenderStyle) != STYLE_Normal && !(GetCVar("bd_allgib") == 1 || GetCVar("bd_allgib") == 3)))
				{
					ACS_NamedExecuteAlways("BD_RemoveCorpse", 0);
				}
				
				if (GetActorProperty(0, APROP_RenderStyle) != STYLE_Normal && !(GetCVar("bd_allgib") == 1 || GetCVar("bd_allgib") == 3))
				{
					terminate;
				}
					
				if (GetCVar("bd_healthgib") == 1)
				{
					if (GetActorProperty(0, APROP_SpawnHealth) < 100)
					{
						Spawn("BlackMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (100 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 300)
					{
						Spawn("BlackMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (300 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 750)
					{
						Spawn("BlackMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (750 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 2000)
					{
						Spawn("BlackMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (2000 <= GetActorProperty(0, APROP_SpawnHealth))
					{
						Spawn("BlackMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						Spawn("BlackMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						Spawn("BlackMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
					}
					else if (4000 <= GetActorProperty(0, APROP_SpawnHealth))
					{
						Spawn("BlackMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("BlackMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Delay(3);
						Spawn("BlackMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("BlackMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Delay(3);
						Spawn("BlackMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("BlackMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
					}
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{	
						if (GetActorProperty(0, APROP_SpawnHealth) < 100)
						{
							Spawn("BlackMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (100 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 300)
						{
							Spawn("BlackMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (300 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 750)
						{
							Spawn("BlackMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (750 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 2000)
						{
							Spawn("BlackMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (2000 <= GetActorProperty(0, APROP_SpawnHealth))
						{
							Spawn("BlackMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
							Spawn("BlackMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
							Spawn("BlackMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						}
						else if (4000 <= GetActorProperty(0, APROP_SpawnHealth))
						{
							Spawn("BlackMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("BlackMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Delay(3);
							Spawn("BlackMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("BlackMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Delay(3);
							Spawn("BlackMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("BlackMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						}
					}
				}
				
				if (GetActorProperty(0, APROP_Height) < 9.0) 
				{	
					Spawn("BlackMeatDeathTiny", GetActorX(0), GetActorY(0), GetActorZ(0));
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{	
						Delay(3);
						Spawn("BlackMeatDeathTiny", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					
						
					terminate;
				}	
				
				if (GetActorProperty(0, APROP_Height) < 38.0) 
				{	
					Spawn("BlackMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						Delay(3);
						Spawn("BlackMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
					
					terminate;
				}	
							
				Spawn("BlackMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				
				if (GetCVar("bd_ludicrousgibs") == 1)
				{
					Delay(3);
					Spawn("BlackMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				}
							
				if (GetActorProperty(0, APROP_Radius) > 30.0) 
				{
					Spawn("BlackMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0));
					
					if (GetCVar("bd_ludicrousgibs") == 1) 
					{
						Delay(3);
						Spawn("BlackMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
				}	

				if (GetActorProperty(0, APROP_Height) > 100.0)
				{
					Spawn("BlackMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						Delay(3);
						Spawn("BlackMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
				}
				
				terminate;
			}
			
			ACS_NamedExecuteAlways("BB_MonsterNormalDeath", 0);
		}	
	
		//White Blood
		if (GetActorProperty(0, APROP_Accuracy) == 993) 
		{
			if (GetActorProperty(0, APROP_Health) < (GetCvar("bd_mingibhealth")))
			{
				if ((CheckFlag(0, "NOBLOOD") == TRUE) || (CheckFlag(0, "NOBLOODDECALS") == TRUE) && ((GetCVar("bd_allgib") == 0 || GetCVar("bd_allgib") == 2)))
				{
					terminate;
				}
				
				if ((GetCVar("bd_keepcorpse") == 0) && !(GetActorProperty(0, APROP_RenderStyle) != STYLE_Normal && !(GetCVar("bd_allgib") == 1 || GetCVar("bd_allgib") == 3)))
				{
					ACS_NamedExecuteAlways("BD_RemoveCorpse", 0);
				}
				
				if (GetActorProperty(0, APROP_RenderStyle) != STYLE_Normal && !(GetCVar("bd_allgib") == 1 || GetCVar("bd_allgib") == 3))
				{
					terminate;
				}
						
				if (GetCVar("bd_healthgib") == 1)
				{
					if (GetActorProperty(0, APROP_SpawnHealth) < 100)
					{
						Spawn("WhiteMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (100 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 300)
					{
						Spawn("WhiteMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (300 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 750)
					{
						Spawn("WhiteMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (750 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 2000)
					{
						Spawn("WhiteMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (2000 <= GetActorProperty(0, APROP_SpawnHealth))
					{
						Spawn("WhiteMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						Spawn("WhiteMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						Spawn("WhiteMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
					}
					else if (4000 <= GetActorProperty(0, APROP_SpawnHealth))
					{
						Spawn("WhiteMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("WhiteMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Delay(3);
						Spawn("WhiteMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("WhiteMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Delay(3);
						Spawn("WhiteMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("WhiteMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
					}
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{	
						if (GetActorProperty(0, APROP_SpawnHealth) < 100)
						{
							Spawn("WhiteMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (100 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 300)
						{
							Spawn("WhiteMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (300 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 750)
						{
							Spawn("WhiteMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (750 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 2000)
						{
							Spawn("WhiteMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (2000 <= GetActorProperty(0, APROP_SpawnHealth))
						{
							Spawn("WhiteMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
							Spawn("WhiteMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
							Spawn("WhiteMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						}
						else if (4000 <= GetActorProperty(0, APROP_SpawnHealth))
						{
							Spawn("WhiteMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("WhiteMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Delay(3);
							Spawn("WhiteMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("WhiteMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Delay(3);
							Spawn("WhiteMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("WhiteMeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						}
					}
				}
				
				if (GetActorProperty(0, APROP_Height) < 9.0) 
				{	
					Spawn("WhiteMeatDeathTiny", GetActorX(0), GetActorY(0), GetActorZ(0));
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{	
						Delay(3);
						Spawn("WhiteMeatDeathTiny", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					
					terminate;
				}	
				
				if (GetActorProperty(0, APROP_Height) < 38.0) 
				{	
					Spawn("WhiteMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						Delay(3);
						Spawn("WhiteMeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
					
					terminate;
				}	
							
				Spawn("WhiteMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				
				if (GetCVar("bd_ludicrousgibs") == 1)
				{
					Delay(3);
					Spawn("WhiteMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				}
							
				if (GetActorProperty(0, APROP_Radius) > 30.0) 
				{
					Spawn("WhiteMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0));
					
					if (GetCVar("bd_ludicrousgibs") == 1) 
					{
						Delay(3);
						Spawn("WhiteMeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
				}	

				if (GetActorProperty(0, APROP_Height) > 100.0)
				{
					Spawn("WhiteMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						Delay(3);
						Spawn("WhiteMeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
				}
				
				terminate;
			}
			
			ACS_NamedExecuteAlways("BB_MonsterNormalDeath", 0);
		}	
	
		//Now that the issue with colored blood monsters is solved, let's spawn the regular red blood.			
		//Minimal health for gibbing.
		if (GetActorProperty(0, APROP_Health) < (GetCvar("bd_mingibhealth")))
		{
			//Possibly a Lost Soul or something similar, don't spawn anything.
			if ((CheckFlag(0, "NOBLOOD") == TRUE) || (CheckFlag(0, "NOBLOODDECALS") == TRUE) && ((GetCVar("bd_allgib") == 0 || GetCVar("bd_allgib") == 2)))
			{
				terminate;
			}
			
			if ((GetCVar("bd_keepcorpse") == 0) && !(GetActorProperty(0, APROP_RenderStyle) != STYLE_Normal && !(GetCVar("bd_allgib") == 1 || GetCVar("bd_allgib") == 3)))
			{
				ACS_NamedExecuteAlways("BD_RemoveCorpse", 0);
			}
			
			if (GetActorProperty(0, APROP_RenderStyle) != STYLE_Normal && !(GetCVar("bd_allgib") == 1 || GetCVar("bd_allgib") == 3))
			{
				terminate;
			}
			else
			{
				if (GetCVar("bd_healthgib") == 1)
				{
					if (GetActorProperty(0, APROP_SpawnHealth) < 100)
					{
						Spawn("MeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (100 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 300)
					{
						Spawn("MeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (300 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 750)
					{
						Spawn("MeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (750 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 2000)
					{
						Spawn("MeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
					else if (2000 <= GetActorProperty(0, APROP_SpawnHealth))
					{
						Spawn("MeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						Spawn("MeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						Spawn("MeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
					}
					else if (4000 <= GetActorProperty(0, APROP_SpawnHealth))
					{
						Spawn("MeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("MeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Delay(3);
						Spawn("MeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("MeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Delay(3);
						Spawn("MeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						Spawn("MeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
					}
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						if (GetActorProperty(0, APROP_SpawnHealth) < 100)
						{
							Spawn("MeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (100 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 300)
						{
							Spawn("MeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (300 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 750)
						{
							Spawn("MeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (750 <= GetActorProperty(0, APROP_SpawnHealth) && GetActorProperty(0, APROP_SpawnHealth) < 2000)
						{
							Spawn("MeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
						}
						else if (2000 <= GetActorProperty(0, APROP_SpawnHealth))
						{
							Spawn("MeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
							Spawn("MeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
							Spawn("MeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25)); 
						}
						else if (4000 <= GetActorProperty(0, APROP_SpawnHealth))
						{
							Spawn("MeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("MeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Delay(3);
							Spawn("MeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("MeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Delay(3);
							Spawn("MeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
							Spawn("MeatDeathGiant", GetActorX(0) + Random(-25, 25), GetActorY(0) + Random(-25, 25), GetActorZ(0) + Random(-25, 25));
						}
					}
				}
				
				//Possibly a tiny thing like a rat or a spider.
				if (GetActorProperty(0, APROP_Height) < 9.0) 
				{	
					Spawn("MeatDeathTiny", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						Delay(3);
						Spawn("MeatDeathTiny", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					}
							
					terminate;
				}	
							
				//Possibly a medium thing like a dog.
				if (GetActorProperty(0, APROP_Height) < 38.0) 
				{	
					Spawn("MeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0)); 
					
					if (GetCVar("bd_ludicrousgibs") == 1)
					{
						Delay(3);
						Spawn("MeatDeathSmall", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
					
					terminate;
				}	
							
				//Normal gibs
				Spawn("MeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				
				if (GetCVar("bd_ludicrousgibs") == 1) 
				{
					Delay(3);
					Spawn("MeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				}
				
				//Might be a large enemy, like a Cacodemon or a Mancubus, spawn extra gibs.
				if (GetActorProperty(0, APROP_Radius) > 30.0) 
				{
					Spawn("MeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0));
					if (GetCVar("bd_ludicrousgibs") == 1) 
					{
						Delay(3);
						Spawn("MeatDeathFat", GetActorX(0), GetActorY(0), GetActorZ(0));
					}
				}
			}
			//Might be a huge enemy, like a Cyberdemon, spawn extra gibs.
			if (GetActorProperty(0, APROP_Height) > 100.0)
			{
				Spawn("MeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0)); 
				if (GetCVar("bd_ludicrousgibs") == 1)
				{
					Delay(3);
					Spawn("MeatDeathGiant", GetActorX(0), GetActorY(0), GetActorZ(0));
				}
			}
			
			terminate;
		}
		
	ACS_NamedExecuteAlways("BB_MonsterNormalDeath", 0);
  }	
}

Script "BB_PlayerDeath" DEATH
{
	if (GetActorProperty(0, APROP_Accuracy) == FALSE)
	{
		if ((CheckFlag(0, "NOBLOOD") == FALSE) && (CheckFlag(0, "NOBLOODDECALS") == FALSE))
		{
			if (GetActorProperty(0, APROP_Health) < (GetCvar("bd_mingibhealth")))
			{
				Spawn("MeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				SetActorState(0, "Xdeath");
				terminate;
			}	
			delay(35);
			Spawn("GrowingBloodPool", GetACtorX(0), GetACtorY(0), GetActorZ(0));
			terminate;
			}
		else if ((CheckFlag(0, "NOBLOOD") == TRUE) && (CheckFlag(0, "NOBLOODDECALS") == TRUE))
		{
			terminate;
		}
	}

	if (GetActorProperty(0, APROP_Accuracy) == 999)
	{
		if ((CheckFlag(0, "NOBLOOD") == FALSE) && (CheckFlag(0, "NOBLOODDECALS") == FALSE))
		{
			if (GetActorProperty(0, APROP_Health) < (GetCvar("bd_mingibhealth")))
			{
				Spawn("GreenMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				SetActorState(0, "Xdeath");
				terminate;
			}	
			delay(35);
			Spawn("GreenGrowingBloodPool", GetACtorX(0), GetACtorY(0), GetActorZ(0));
			terminate;
			}
		else if ((CheckFlag(0, "NOBLOOD") == TRUE) && (CheckFlag(0, "NOBLOODDECALS") == TRUE))
		{
			terminate;
		}
	}
	
	if (GetActorProperty(0, APROP_Accuracy) == 998)
	{
		if ((CheckFlag(0, "NOBLOOD") == FALSE) && (CheckFlag(0, "NOBLOODDECALS") == FALSE))
		{
			if (GetActorProperty(0, APROP_Health) < (GetCvar("bd_mingibhealth")))
			{
				Spawn("BlueMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				SetActorState(0, "Xdeath");
				terminate;
			}	
			delay(35);
			Spawn("BlueGrowingBloodPool", GetACtorX(0), GetACtorY(0), GetActorZ(0));
			terminate;
			}
		else if ((CheckFlag(0, "NOBLOOD") == TRUE) && (CheckFlag(0, "NOBLOODDECALS") == TRUE))
		{
			terminate;
		}
	}
	
	if (GetActorProperty(0, APROP_Accuracy) == 997)
	{
		if ((CheckFlag(0, "NOBLOOD") == FALSE) && (CheckFlag(0, "NOBLOODDECALS") == FALSE))
		{
			if (GetActorProperty(0, APROP_Health) < (GetCvar("bd_mingibhealth")))
			{
				Spawn("OrangeMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				SetActorState(0, "Xdeath");
				terminate;
			}	
			delay(35);
			Spawn("OrangeGrowingBloodPool", GetACtorX(0), GetACtorY(0), GetActorZ(0));
			terminate;
			}
		else if ((CheckFlag(0, "NOBLOOD") == TRUE) && (CheckFlag(0, "NOBLOODDECALS") == TRUE))
		{
			terminate;
		}
	}
	
	if (GetActorProperty(0, APROP_Accuracy) == 996)
	{
		if ((CheckFlag(0, "NOBLOOD") == FALSE) && (CheckFlag(0, "NOBLOODDECALS") == FALSE))
		{
			if (GetActorProperty(0, APROP_Health) < (GetCvar("bd_mingibhealth")))
			{
				Spawn("YellowMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				SetActorState(0, "Xdeath");
				terminate;
			}	
			delay(35);
			Spawn("YellowGrowingBloodPool", GetACtorX(0), GetACtorY(0), GetActorZ(0));
			terminate;
			}
		else if ((CheckFlag(0, "NOBLOOD") == TRUE) && (CheckFlag(0, "NOBLOODDECALS") == TRUE))
		{
			terminate;
		}
	}
	
	if (GetActorProperty(0, APROP_Accuracy) == 995)
	{
		if ((CheckFlag(0, "NOBLOOD") == FALSE) && (CheckFlag(0, "NOBLOODDECALS") == FALSE))
		{
			if (GetActorProperty(0, APROP_Health) < (GetCvar("bd_mingibhealth")))
			{
				Spawn("PurpleMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				SetActorState(0, "Xdeath");
				terminate;
			}	
			delay(35);
			Spawn("PurpleGrowingBloodPool", GetACtorX(0), GetACtorY(0), GetActorZ(0));
			terminate;
			}
		else if ((CheckFlag(0, "NOBLOOD") == TRUE) && (CheckFlag(0, "NOBLOODDECALS") == TRUE))
		{
			terminate;
		}
	}
	
	if (GetActorProperty(0, APROP_Accuracy) == 994)
	{
		if ((CheckFlag(0, "NOBLOOD") == FALSE) && (CheckFlag(0, "NOBLOODDECALS") == FALSE))
		{
			if (GetActorProperty(0, APROP_Health) < (GetCvar("bd_mingibhealth")))
			{
				Spawn("BlackMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				SetActorState(0, "Xdeath");
				terminate;
			}	
			delay(35);
			Spawn("BlackGrowingBloodPool", GetACtorX(0), GetACtorY(0), GetActorZ(0));
			terminate;
			}
		else if ((CheckFlag(0, "NOBLOOD") == TRUE) && (CheckFlag(0, "NOBLOODDECALS") == TRUE))
		{
			terminate;
		}
	}
	
	if (GetActorProperty(0, APROP_Accuracy) == 993)
	{
		if ((CheckFlag(0, "NOBLOOD") == FALSE) && (CheckFlag(0, "NOBLOODDECALS") == FALSE))
		{
			if (GetActorProperty(0, APROP_Health) < (GetCvar("bd_mingibhealth")))
			{
				Spawn("WhiteMeatDeath", GetActorX(0), GetActorY(0), GetActorZ(0));
				SetActorState(0, "Xdeath");
				terminate;
			}	
			delay(35);
			Spawn("WhiteGrowingBloodPool", GetACtorX(0), GetACtorY(0), GetActorZ(0));
			terminate;
			}
		else if ((CheckFlag(0, "NOBLOOD") == TRUE) && (CheckFlag(0, "NOBLOODDECALS") == TRUE))
		{
			terminate;
		}
	}
}

Script "BB_MonsterNormalDeath" (void)
{
	if (GetActorProperty(0, APROP_Accuracy) == FALSE)
	{
		if ((CheckFlag(0, "NOBLOOD") == FALSE) && (CheckFlag(0, "NOBLOODDECALS") == FALSE))
		{
			delay(35);
			Spawn("GrowingBloodPool", GetACtorX(0), GetACtorY(0), GetActorZ(0));
			terminate;
		}
		else if ((CheckFlag(0, "NOBLOOD") == TRUE) && (CheckFlag(0, "NOBLOODDECALS") == TRUE))
		{
			terminate;
		}
	}

	if (GetActorProperty(0, APROP_Accuracy) == 999)
	{
		if ((CheckFlag(0, "NOBLOOD") == FALSE) && (CheckFlag(0, "NOBLOODDECALS") == FALSE))
		{
			delay(35);
			Spawn("GreenGrowingBloodPool", GetACtorX(0), GetACtorY(0), GetActorZ(0));
			terminate;
		}
		else if ((CheckFlag(0, "NOBLOOD") == TRUE) && (CheckFlag(0, "NOBLOODDECALS") == TRUE))
		{
			terminate;
		}
	}
	
	if (GetActorProperty(0, APROP_Accuracy) == 998)
	{
		if ((CheckFlag(0, "NOBLOOD") == FALSE) && (CheckFlag(0, "NOBLOODDECALS") == FALSE))
		{
			delay(35);
			Spawn("BlueGrowingBloodPool", GetACtorX(0), GetACtorY(0), GetActorZ(0));
			terminate;
		}
		else if ((CheckFlag(0, "NOBLOOD") == TRUE) && (CheckFlag(0, "NOBLOODDECALS") == TRUE))
		{
			terminate;
		}
	}
	
	if (GetActorProperty(0, APROP_Accuracy) == 997)
	{
		if ((CheckFlag(0, "NOBLOOD") == FALSE) && (CheckFlag(0, "NOBLOODDECALS") == FALSE))
		{
			delay(35);
			Spawn("OrangeGrowingBloodPool", GetACtorX(0), GetACtorY(0), GetActorZ(0));
			terminate;
		}
		else if ((CheckFlag(0, "NOBLOOD") == TRUE) && (CheckFlag(0, "NOBLOODDECALS") == TRUE))
		{
			terminate;
		}
	}
	
	if (GetActorProperty(0, APROP_Accuracy) == 996)
	{
		if ((CheckFlag(0, "NOBLOOD") == FALSE) && (CheckFlag(0, "NOBLOODDECALS") == FALSE))
		{
			delay(35);
			Spawn("YellowGrowingBloodPool", GetACtorX(0), GetACtorY(0), GetActorZ(0));
			terminate;
		}
		else if ((CheckFlag(0, "NOBLOOD") == TRUE) && (CheckFlag(0, "NOBLOODDECALS") == TRUE))
		{
			terminate;
		}
	}
	
	if (GetActorProperty(0, APROP_Accuracy) == 995)
	{
		if ((CheckFlag(0, "NOBLOOD") == FALSE) && (CheckFlag(0, "NOBLOODDECALS") == FALSE))
		{
			delay(35);
			Spawn("PurpleGrowingBloodPool", GetACtorX(0), GetACtorY(0), GetActorZ(0));
			terminate;
		}
		else if ((CheckFlag(0, "NOBLOOD") == TRUE) && (CheckFlag(0, "NOBLOODDECALS") == TRUE))
		{
			terminate;
		}
	}
	
	if (GetActorProperty(0, APROP_Accuracy) == 994)
	{
		if ((CheckFlag(0, "NOBLOOD") == FALSE) && (CheckFlag(0, "NOBLOODDECALS") == FALSE))
		{
			delay(35);
			Spawn("BlackGrowingBloodPool", GetACtorX(0), GetACtorY(0), GetActorZ(0));
			terminate;
		}
		else if ((CheckFlag(0, "NOBLOOD") == TRUE) && (CheckFlag(0, "NOBLOODDECALS") == TRUE))
		{
			terminate;
		}
	}
	
	if (GetActorProperty(0, APROP_Accuracy) == 993)
	{
		if ((CheckFlag(0, "NOBLOOD") == FALSE) && (CheckFlag(0, "NOBLOODDECALS") == FALSE))
		{
			delay(35);
			Spawn("WhiteGrowingBloodPool", GetACtorX(0), GetACtorY(0), GetActorZ(0));
			terminate;
		}
		else if ((CheckFlag(0, "NOBLOOD") == TRUE) && (CheckFlag(0, "NOBLOODDECALS") == TRUE))
		{
			terminate;
		}
	}
}

Script "BD_CheckBloodIntensity" (void)
{
	if	(GetCvar("isrunningzandronum") == 1)
	{
		if	(GetCvar( "bd_bloodamount") == 0) 
		{ 
			SetActorState(0,"LowBlood"); 
		}
		
		if	(GetCvar( "bd_bloodamount") == 1) 
		{ 
			SetActorState(0,"LowBlood"); 
		}
		
		if	(GetCvar( "bd_bloodamount") == 3) 
		{ 
			SetActorState(0,"LotsOfBlood"); 
		}
		
		if	(GetCvar( "bd_bloodamount") >= 4) 
		{ 
			SetActorState(0,"AbsurdBlood"); 
		}
	}

	if	(GetCvar("isrunningzandronum") == 0)
	{
		if	(GetCvar("zdoombrutalblood") == 0) 
		{ 
			SetActorState(0,"LowBlood"); 
		}
		
		if	(GetCvar("zdoombrutalblood") == 1) 
		{ 
			SetActorState(0,"LowBlood"); 
		}
		
		if	(GetCvar("zdoombrutalblood") == 3) 
		{ 
			SetActorState(0,"LotsOfBlood"); 
		}
		
		if	(GetCvar("zdoombrutalblood") == 4) 
		{ 
			SetActorState(0,"AbsurdBlood"); 
		}
	}

	if	(GetCvar("isrunningzandronum") == 1)
	{
		if	(GetCvar("bd_bloodamount") >= 5)
		{
			SetActorState(0,"AbsurdBlood"); 
			GiveInventory("AnimuGore", 1);
		}
	}

	if	(GetCvar("isrunningzandronum") == 0)
	{
		if	(GetCvar("zdoombrutalblood") >= 5)
		{
			SetActorState(0,"AbsurdBlood"); 
			GiveInventory("AnimuGore", 1);
		}
	}
}

Script "BD_CheckChunky" (void)
{
	if (GetCvar("bd_chunky") == 1)
	{
		SetActorState(0, "SpawnChunk");
	}
}

Script "BD_CheckJanitor" (void)
{
if	(GetCvar("bd_lowgraphicsmode") == 1) { ACS_NamedExecuteAlways("BD_JanitorRemoveGibs", 0); }
if	(GetCvar("zdoombrutaljanitor") == 1) { ACS_NamedExecuteAlways("BD_JanitorRemoveGibs", 0); }
if	(GameType () == GAME_NET_DEATHMATCH) { ACS_NamedExecuteAlways("BD_JanitorRemoveGibs", 0); }
}

script "BD_CheckIfOverLiquid" (void) //Water Small Splash
{
	if (CheckActorFloorTexture(0, "FWATER1"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "FWATER2"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "FWATER3"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "FWATER4"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "D64W1_01"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "D64W2_01"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "WFWATER1"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "W_STILL_"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "FLWAWA1"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "POOL_1"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "POOL_3"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "POOL_4"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "STWATR01"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "T117"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "TEALW1"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "PURPW1"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "DWATER1"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "WATERSS"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "STWATRMZ"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "WWATER01"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "FLTWAWA"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "FLTWAWA1"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "FLTFLWW"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "FLTFLWW1"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "F_HWATR1"))    
		GiveInventory("IsOverWater", 1);
	if (CheckActorFloorTexture(0, "F_HWATR1"))    
		GiveInventory("IsOverWater", 1);
	
	if (CheckActorFloorTexture(0, "NUKAGE1"))    
		GiveInventory("IsOverNukage", 1);
	if (CheckActorFloorTexture(0, "NUKAGE2"))    
		GiveInventory("IsOverNukage", 1);
	if (CheckActorFloorTexture(0, "NUKAGE3"))    
		GiveInventory("IsOverNukage", 1);
	if (CheckActorFloorTexture(0, "NUKAGE4"))    
		GiveInventory("IsOverNukage", 1);
	if (CheckActorFloorTexture(0, "D64N1_01"))    
		GiveInventory("IsOverNukage", 1);
	if (CheckActorFloorTexture(0, "D64N2_01"))    
		GiveInventory("IsOverNukage", 1);
	if (CheckActorFloorTexture(0, "HARMO63"))    
		GiveInventory("IsOverNukage", 1);
	if (CheckActorFloorTexture(0, "GRANUKE1"))    
		GiveInventory("IsOverNukage", 1);
	if (CheckActorFloorTexture(0, "Q3SLM_1"))    
		GiveInventory("IsOverNukage", 1);
  	
	if (CheckActorFloorTexture(0, "SLIME01"))    
		GiveInventory("IsOverSlime", 1);
	if (CheckActorFloorTexture(0, "SLIME02"))    
		GiveInventory("IsOverSlime", 1);
	if (CheckActorFloorTexture(0, "SLIME03"))    
		GiveInventory("IsOverSlime", 1);
	if (CheckActorFloorTexture(0, "SLIME04"))    
		GiveInventory("IsOverSlime", 1);
	if (CheckActorFloorTexture(0, "SLIME05"))    
		GiveInventory("IsOverSlime", 1);
	if (CheckActorFloorTexture(0, "SLIME06"))    
		GiveInventory("IsOverSlime", 1);
	if (CheckActorFloorTexture(0, "SLIME07"))    
		GiveInventory("IsOverSlime", 1);
	if (CheckActorFloorTexture(0, "SLIME08"))    
		GiveInventory("IsOverSlime", 1);
	if (CheckActorFloorTexture(0, "D64S1_01"))    
		GiveInventory("IsOverSlime", 1);
	if (CheckActorFloorTexture(0, "D64S2_01"))    
		GiveInventory("IsOverSlime", 1);
	if (CheckActorFloorTexture(0, "GOOP1"))    
		GiveInventory("IsOverSlime", 1);
	if (CheckActorFloorTexture(0, "HERSLUD1"))    
		GiveInventory("IsOverSlime", 1);
	if (CheckActorFloorTexture(0, "FLTSLUD"))    
		GiveInventory("IsOverSlime", 1);
	if (CheckActorFloorTexture(0, "FLTSLUD1"))    
		GiveInventory("IsOverSlime", 1);
	if (CheckActorFloorTexture(0, "KOSHMILK"))    
		GiveInventory("IsOverSlime", 1);
	if (CheckActorFloorTexture(0, "CSLIME1"))    
		GiveInventory("IsOverSlime", 1);

	if (CheckActorFloorTexture(0, "SLIME09"))    
		GiveInventory("IsOverLava", 1);
	if (CheckActorFloorTexture(0, "SLIME10"))    
		GiveInventory("IsOverLava", 1);
	if (CheckActorFloorTexture(0, "SLIME11"))    
		GiveInventory("IsOverLava", 1);
	if (CheckActorFloorTexture(0, "SLIME12"))    
		GiveInventory("IsOverLava", 1);
	if (CheckActorFloorTexture(0, "LAVA1"))    
		GiveInventory("IsOverLava", 1);
	if (CheckActorFloorTexture(0, "LAVA2"))    
		GiveInventory("IsOverLava", 1);
	if (CheckActorFloorTexture(0, "LAVA3"))    
		GiveInventory("IsOverLava", 1);
	if (CheckActorFloorTexture(0, "LAVA4"))    
		GiveInventory("IsOverLava", 1);
	if (CheckActorFloorTexture(0, "D64L1_01"))    
		GiveInventory("IsOverLava", 1);
	if (CheckActorFloorTexture(0, "D64L2_01"))    
		GiveInventory("IsOverLava", 1);
	if (CheckActorFloorTexture(0, "FLATHUH1"))    
		GiveInventory("IsOverLava", 1);
	if (CheckActorFloorTexture(0, "WQLAVA"))    
		GiveInventory("IsOverLava", 1);
	if (CheckActorFloorTexture(0, "L_STILL_"))    
		GiveInventory("IsOverLava", 1);
	if (CheckActorFloorTexture(0, "LAVA_2"))    
		GiveInventory("IsOverLava", 1);
	if (CheckActorFloorTexture(0, "LAVA_3"))    
		GiveInventory("IsOverLava", 1);
	if (CheckActorFloorTexture(0, "LAVA_4"))    
		GiveInventory("IsOverLava", 1);
	if (CheckActorFloorTexture(0, "T100"))    
		GiveInventory("IsOverLava", 1);
	if (CheckActorFloorTexture(0, "ZO1_01"))    
		GiveInventory("IsOverLava", 1);
	if (CheckActorFloorTexture(0, "PLAVA1"))    
		GiveInventory("IsOverLava", 1);
	if (CheckActorFloorTexture(0, "FLATHUH"))    
		GiveInventory("IsOverLava", 1);
	if (CheckActorFloorTexture(0, "WLAVA01"))    
		GiveInventory("IsOverLava", 1);

	if (CheckActorFloorTexture(0, "BLOOD1"))    
		GiveInventory("IsOverBlood", 1);
	if (CheckActorFloorTexture(0, "BLOOD2"))    
		GiveInventory("IsOverBlood", 1);
	if (CheckActorFloorTexture(0, "BLOOD3"))    
		GiveInventory("IsOverBlood", 1);
	if (CheckActorFloorTexture(0, "BLOOD4"))    
		GiveInventory("IsOverBlood", 1);
	if (CheckActorFloorTexture(0, "D64B1_01"))    
		GiveInventory("IsOverBlood", 1);
	if (CheckActorFloorTexture(0, "D64B2_01"))    
		GiveInventory("IsOverBlood", 1);
	if (CheckActorFloorTexture(0, "BLBLOOD1"))    
		GiveInventory("IsOverBlood", 1);
	if (CheckActorFloorTexture(0, "BIO_2"))    
		GiveInventory("IsOverBlood", 1);
	if (CheckActorFloorTexture(0, "BIO_3"))    
		GiveInventory("IsOverBlood", 1);
}

Script "BD_RemoveCorpse" (void)
{
	if (CheckFlag(0, "BOSS") == FALSE)
	{
		int TID = UniqueTID();
		SetActorProperty(0, APROP_ScaleX, 0.001); SetActorProperty(0, APROP_ScaleY, 0.001); SetActorProperty(0, APROP_NoTarget, 1);
		delay(35);
		Thing_ChangeTID(0, TID);
		delay(1);
		SetActivator(0, AAPTR_NULL);
		Thing_Remove(TID);
	}
	else if (CheckFlag(0, "BOSS") == TRUE)
	{
		terminate;
	}
}

Script "BD_JanitorRemoveGibs" (void)
{
	int TID = UniqueTID();
	int delayamount = GetCVAR("bd_janitorremovegibsseconds")*35;
	if(delayamount < 35) {delayamount = 35;}
	else if(delayamount > 35*120) {delayamount = 35*120;}
	else if(delayamount == 0) {delayamount = 35*30;}
	delay(delayamount);
	Thing_ChangeTID(0, TID);
	SetActivator(0, AAPTR_NULL);
	Thing_Remove(TID);
}