//Stolen shamelessly from 64k enhancer
Actor CABlood : Blood Replaces Blood
{
	Radius 1
	Height 1
	Mass 1
	Gravity 0.125
	+NOBLOCKMAP
	+NOTELEPORT
	+FORCEXYBILLBOARD
	States
	{
	Spawn:
		TNT1 AA 0 NoDelay A_SpawnItemEx("CABloodSpurt", 0,0,0, frandom(-3.0, 3.0),frandom(-3.0, 3.0),frandom(2.5,6.5), 0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,128)
		TNT1 A 0 A_SpawnItemEx("CABloodSpurt", 0,0,0, frandom(-6.0, 6.0),frandom(-8.0, 9.0),frandom(3.5,9.5), 0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,128)
		TNT1 A 0 A_SpawnItemEx("CABloodSpurt", 0,0,0, frandom(-9.0, 12.0),frandom(-5.0, 11.0),frandom(5.5,11.5), 0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,128)
		BLUD B 4 A_SetGravity(1)
		BLUD A 3
		Stop
	Spray:
		SPRY ABCDEF 3
		SPRY G 2
		Stop
	}
}

Actor CABloodsplatter : CAblood Replaces Bloodsplatter
{
}


Actor CABloodSpurt : Actor
{
	Radius 1
	Height 1
	Gravity 1
	Scale 0.75
	Mass 1
	+missile
	+NOBLOCKMAP
	+FLOORCLIP
	+DONTSPLASH
	+NOTELEPORT
	+THRUACTORS
	+FORCEXYBILLBOARD
	States
	{
	Spawn:
		BLUD CCBBAA 1 NoDelay A_SpawnItemEx("CABloodTrail",frandom(-0.5, 0.5),frandom(-0.5, 0.5),frandom(-0.5, 0.5),0,0,0,0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,0)
		BLUD CBA 1 A_SpawnItemEx("CABloodTrail",frandom(-0.5, 0.5),frandom(-0.5, 0.5),frandom(-0.5, 0.5),0,0,0,0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,0)
		BLUD A 3 A_SpawnItemEx("CABloodTrail",frandom(-0.5, 0.5),frandom(-0.5, 0.5),frandom(-0.5, 0.5),0,0,0,0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,0)
		wait
	}
}

Actor CABloodTrail : CABloodSpurt
{
	Gravity 1
	States
	{
	Spawn:
		BLUD C 0 NoDelay
		BLUD CBA 3
		Stop
	}
}


Actor CAXblood
{
	radius 5
	height 5
	speed 2
	scale 1.5
	gravity 1.5
	VSpeed 0
	PROJECTILE
	+NOBLOCKMAP
	+dontblast
	+clientsideonly
	+thruactors
	+bounceonwalls
	-NOGRAVITY
	-NOCLIP
	states
	{
	spawn:
		BLUD C 1 
		loop
	death:
		TNT1 A 0
		TNT1 AA 0 A_SpawnItemEx("CABloodSpurt", 0,0,0, frandom(-3.0, 3.0),frandom(-3.0, 3.0),frandom(2.5,6.5), 0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,128)
		TNT1 A 0 A_SpawnItemEx("CABloodSpurt", 0,0,0, frandom(-6.0, 6.0),frandom(-8.0, 9.0),frandom(3.5,9.5), 0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,128)
		TNT1 A 0 A_SpawnItemEx("CABloodSpurt", 0,0,0, frandom(-9.0, 12.0),frandom(-5.0, 11.0),frandom(5.5,11.5), 0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,128)
		TNT1 A 0 a_playsound ("CAbludimpact",CHAN_VOICE)
		BLUD BA 1
		stop
	}
}


//******************************************************************************
//******************************************************************************
//******************************************************************************
//******************************************************************************

//Blue cacodemon blood translation nicked from BURL TUMD

actor CAHissyBlood : CABlood
{
	translation "168:186=192:207", "187:191=240:247"
	states
	{
	Spawn:
		TNT1 AA 0 NoDelay A_SpawnItemEx("CAHissyBloodSpurt", 0,0,0, frandom(-3.0, 3.0),frandom(-3.0, 3.0),frandom(2.5,6.5), 0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,128)
		TNT1 A 0 A_SpawnItemEx("CAHissyBloodSpurt", 0,0,0, frandom(-6.0, 6.0),frandom(-8.0, 9.0),frandom(3.5,9.5), 0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,128)
		TNT1 A 0 A_SpawnItemEx("CAHissyBloodSpurt", 0,0,0, frandom(-9.0, 12.0),frandom(-5.0, 11.0),frandom(5.5,11.5), 0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,128)
		BLUD B 4 A_SetGravity(1)
		BLUD A 3
		Stop
	}
}

Actor CAHissyBloodsplatter : CAHissyblood
{
	translation "168:186=192:207", "187:191=240:247"
}


Actor CAHissyBloodSpurt : CABloodSpurt
{
	translation "168:186=192:207", "187:191=240:247"
	States
	{
	Spawn:
		BLUD CCBBAA 1 NoDelay A_SpawnItemEx("CAHissyBloodTrail",frandom(-0.5, 0.5),frandom(-0.5, 0.5),frandom(-0.5, 0.5),0,0,0,0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,0)
		BLUD CBA 1 A_SpawnItemEx("CAHissyBloodTrail",frandom(-0.5, 0.5),frandom(-0.5, 0.5),frandom(-0.5, 0.5),0,0,0,0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,0)
		BLUD A 3 A_SpawnItemEx("CAHissyBloodTrail",frandom(-0.5, 0.5),frandom(-0.5, 0.5),frandom(-0.5, 0.5),0,0,0,0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,0)
		wait
	}
}

Actor CAHissyBloodTrail : CAHissyBloodSpurt
{
	translation "168:186=192:207", "187:191=240:247"
	States
	{
	Spawn:
		BLUD C 0 NoDelay
		BLUD CBA 3
		Stop
	}
}

//******************************************************************************
//******************************************************************************
//******************************************************************************
//******************************************************************************

actor CAFireBlood : CABlood
{
	states
	{
	Spawn:
		TNT1 AA 0 NoDelay A_SpawnItemEx("MonsterFireTrail", 0,0,0, frandom(-3.0, 3.0),frandom(-3.0, 3.0),frandom(2.5,6.5), 0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,128)
		TNT1 A 0 A_SpawnItemEx("MonsterFire", 0,0,0, frandom(-6.0, 6.0),frandom(-8.0, 9.0),frandom(3.5,9.5), 0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,128)
		TNT1 A 0 A_SpawnItemEx("MonsterFireEmber2", 0,0,0, frandom(-9.0, 12.0),frandom(-5.0, 11.0),frandom(5.5,11.5), 0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,128)
		TNT1 A 4 A_SetGravity(1)
		TNT1 A 2
		Stop
	}
}

Actor CAFireBloodsplatter : CAFireblood
{
}


//******************************************************************************
//******************************************************************************
//******************************************************************************
//******************************************************************************

//Green Hell noble blood translation nicked from BURL TUMD



actor CABruiserBlood : CABlood
{
	translation "168:191=112:127"
	states
	{
	Spawn:
		TNT1 AA 0 NoDelay A_SpawnItemEx("CABruiserBloodSpurt", 0,0,0, frandom(-3.0, 3.0),frandom(-3.0, 3.0),frandom(2.5,6.5), 0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,128)
		TNT1 A 0 A_SpawnItemEx("CABruiserBloodSpurt", 0,0,0, frandom(-6.0, 6.0),frandom(-8.0, 9.0),frandom(3.5,9.5), 0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,128)
		TNT1 A 0 A_SpawnItemEx("CABruiserBloodSpurt", 0,0,0, frandom(-9.0, 12.0),frandom(-5.0, 11.0),frandom(5.5,11.5), 0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,128)
		BLUD B 4 A_SetGravity(1)
		BLUD A 3
		Stop
	}
}

Actor CABruiserBloodsplatter : CABruiserblood
{
	translation "168:191=112:127"
}


Actor CABruiserBloodSpurt : CABloodSpurt
{
	translation "168:191=112:127"
	States
	{
	Spawn:
		BLUD CCBBAA 1 NoDelay A_SpawnItemEx("CABruiserBloodTrail",frandom(-0.5, 0.5),frandom(-0.5, 0.5),frandom(-0.5, 0.5),0,0,0,0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,0)
		BLUD CBA 1 A_SpawnItemEx("CABruiserBloodTrail",frandom(-0.5, 0.5),frandom(-0.5, 0.5),frandom(-0.5, 0.5),0,0,0,0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,0)
		BLUD A 3 A_SpawnItemEx("CABruiserBloodTrail",frandom(-0.5, 0.5),frandom(-0.5, 0.5),frandom(-0.5, 0.5),0,0,0,0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,0)
		wait
	}
}

Actor CABruiserBloodTrail : CABruiserBloodSpurt
{
	translation "168:191=112:127"
	States
	{
	Spawn:
		BLUD C 0 NoDelay
		BLUD CBA 3
		Stop
	}
}


//******************************************************************************
//******************************************************************************
//******************************************************************************
//******************************************************************************

actor CADustBlood : CABlood
{
	states
	{
	Spawn:
		TNT1 AA 0 NoDelay A_SpawnItemEx("MonsterSmokeSpawner", 0,0,0, frandom(-3.0, 3.0),frandom(-3.0, 3.0),frandom(-4.5,6.5), 0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,128)
		TNT1 AA 0 A_SpawnItemEx("MonsterFireSmoke", 0,0,0, frandom(-6.0, 6.0),frandom(-8.0, 9.0),frandom(-6,5.5), 0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,128)
		TNT1 A 0 A_SpawnItemEx("MonsterFireSmoke2", 0,0,0, frandom(-9.0, 12.0),frandom(-5.0, 11.0),frandom(-6.5,5.5), 0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,128)
		TNT1 A 4 A_SetGravity(1)
		TNT1 A 2
		Stop
	}
}

Actor CADustBloodsplatter : CADustBlood
{
}



//******************************************************************************
//******************************************************************************
//******************************************************************************
//******************************************************************************


actor MalefactorBigChunk1
{
 	+THRUACTORS
	+Hexenbounce
	Speed 5
    States
    {
    Spawn:
		TNT1 A 0 
		TROO O 1 a_jump (105, "FlipIt")
		Goto Splatter
	FlipIt:
		TNT1 A 0
		TNT1 A 0 a_setscale (scalex * -1,scaley) //Flip it horizontally
		goto Splatter
	Splatter:	
		TROO O 4
		TNT1 AA 0 a_spawnitemex("CAXblood",0,0,10,random(-7,7),random(-6,6),random(10,12))
		TNT1 AA 0 a_spawnitemex("CAXblood",0,0,10,random(-8,8),random(-10,10),random(9,14))
    	TNT1 A 0 BRIGHT a_spawnitemex("CAMonsterBlud",0,0,0,random(-3,8),random(-6,8),random(10,12))
    	TNT1 A 0 BRIGHT a_spawnitemex("CAMonsterBlud",0,0,0,random(-6,12),random(-10,10),random(10,12))
    	TNT1 A 0 BRIGHT a_spawnitemex("cs_go",0,0,0,random(-7,10),random(-9,12),random(10,12))
    	TNT1 A 0 BRIGHT a_spawnitemex("cs_go",0,0,0,random(-3,16),random(-10,16),random(10,12))
		TROO P 3
		TROO O 3 
		TROO QRST 3
		TROO U -1
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}

actor MalefactorMasterMindChunk
{
 	+THRUACTORS
	+Hexenbounce
	Speed 5
    States
    {
    Spawn:
		SPID N 5 
		TNT1 AA 0 a_spawnitemex("CAXblood",0,0,10,random(-7,7),random(-6,6),random(10,12))
		TNT1 AA 0 a_spawnitemex("CAXblood",0,0,10,random(-8,8),random(-10,10),random(9,14))
    	TNT1 A 0 BRIGHT a_spawnitemex("CAMonsterBlud",0,0,0,random(-3,8),random(-6,8),random(10,12))
    	TNT1 A 0 BRIGHT a_spawnitemex("CAMonsterBlud",0,0,0,random(-6,12),random(-10,10),random(10,12))
    	TNT1 A 0 BRIGHT a_spawnitemex("cs_go",0,0,0,random(-7,10),random(-9,12),random(10,12))
    	TNT1 A 0 BRIGHT a_spawnitemex("cs_go",0,0,0,random(-3,16),random(-10,16),random(10,12))
		SPID N 3
		SPID P 3 
		8D15 D random (15,35)
    	TNT1 AAAAA 0 BRIGHT a_spawnitemex("CABlood",0,0,0,random(-8,14),random(-12,16),random(15,22))
		8D15 DDDDDDDD 2 A_spawnitemex("CAXblood",0,0,10,random(-8,8),random(-10,10),random(9,16))
		8D15 D random (25,45)
    	TNT1 AAAAA 0 BRIGHT a_spawnitemex("CABlood",0,0,0,random(-8,14),random(-12,16),random(15,22))
		8D15 DDDDDDDD 2 A_spawnitemex("CAXblood",0,0,10,random(-8,8),random(-10,10),random(9,16))
		8D15 D -1
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}


actor MalefactorCyberChunk
{
 	+THRUACTORS
	+Hexenbounce
	Speed 5
    States
    {
    Spawn:
		CYBR K 5 
		TNT1 AA 0 a_spawnitemex("CAXblood",0,0,10,random(-7,7),random(-6,6),random(10,12))
		TNT1 AA 0 a_spawnitemex("CAXblood",0,0,10,random(-8,8),random(-10,10),random(9,14))
    	TNT1 A 0 BRIGHT a_spawnitemex("CAMonsterBlud",0,0,0,random(-3,8),random(-6,8),random(10,12))
    	TNT1 A 0 BRIGHT a_spawnitemex("CAMonsterBlud",0,0,0,random(-6,12),random(-10,10),random(10,12))
    	TNT1 A 0 BRIGHT a_spawnitemex("cs_go",0,0,0,random(-7,10),random(-9,12),random(10,12))
    	TNT1 A 0 BRIGHT a_spawnitemex("cs_go",0,0,0,random(-3,16),random(-10,16),random(10,12))
		CYBR L 3
		CYBR MNOP 3 
		CYBR P random (15,35)
    	TNT1 AAAAA 0 BRIGHT a_spawnitemex("CABlood",0,0,0,random(-8,14),random(-12,16),random(15,22))
		CYBR PPPPPPPP 2 A_spawnitemex("CAXblood",0,0,10,random(-8,8),random(-10,10),random(9,16))
		CYBR P random (25,45)
    	TNT1 AAAAA 0 BRIGHT a_spawnitemex("CABlood",0,0,0,random(-8,14),random(-12,16),random(15,22))
		CYBR PPPPPPPP 2 A_spawnitemex("CAXblood",0,0,10,random(-8,8),random(-10,10),random(9,16))
		CYBR P -1
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
		stop
	}
}


Actor MalefactorBloodSplosion
{
	+nointeraction
	+DONTBLAST
	states
	{
	spawn:
		TNT1 AAA 0 a_spawnitemex("CAXblood",0,0,10,random(-7,7),random(-6,6),random(10,12))
		TNT1 AAA 0 a_spawnitemex("CAXblood",0,0,10,random(-8,8),random(-10,10),random(9,14))
    	TNT1 A 0 BRIGHT a_spawnitemex("CAMonsterBlud",0,0,0,random(-3,8),random(-6,8),random(10,12))
    	TNT1 A 0 BRIGHT a_spawnitemex("CAMonsterBlud",0,0,0,random(-6,12),random(-10,10),random(10,12))
    	TNT1 A 0 BRIGHT a_spawnitemex("cs_go",0,0,0,random(-7,10),random(-9,12),random(10,12))
    	TNT1 A 0 BRIGHT a_spawnitemex("cs_go",0,0,0,random(-3,16),random(-10,16),random(10,12))
    	TNT1 A 0 BRIGHT A_PlaySound("CABsplat",0,0.30)	
		TNT1 A 1
		stop
	Death:
		TNT1 A 0
		TNT1 A 1
	}
}