// New Blood coding is a creation of Zirrius1994. 
// It's extracted from His "FIRSTONE" mod.

ACTOR NewBloodFlying : Blood
{
        Radius 1
        Height 1
        Mass 1
        +NOTELEPORT
        +NOBLOCKMAP
        +CORPSE
        +MOVEWITHSECTOR
		States
		{
		Spawn:
			BLUD C 8
			BLUD B 8 
			BLUD A 4
			Goto Spawn+2
		Crash:
			TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("JanitorToggle")==1,"Vanish")
			BLUD D 4 A_Stop
			BLUD E 4 			
			BLUD F 1 A_Gravity
			goto Crash+2
		Vanish:
			BLUD D 4 A_Stop
			BLUD E 4 			
			BLUD F 1 A_Gravity
			BLUD F 1041
			Stop
		}
}

ACTOR NewBloodDrop : Blood
{
    Radius 1
    Height 1
	Alpha 0.5
	Gravity 0.01
	Speed 0.2
    Scale 0.35
    +NOBLOCKMAP
    +NOTELEPORT
    +DONTSPLASH
	+MISSILE
    States
    {
    Spawn:
        BLOD A 1
        Goto Death
	Death:
	    BLOD AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_FadeOut(0.01)
		Stop
    }
}

ACTOR GiantBlood : NewBloodDrop
{
    Scale 0.9
    States
    {
    Spawn:
        BLOD A 1
        Goto Death
	Death:
	    BLOD AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_FadeOut(0.01)
		Stop
    }
}   

ACTOR NewBlood replaces Blood
{
	+FORCEXYBILLBOARD
	-NOGRAVITY
	+NOCLIP
	Radius 16
	Height 16
	Gravity 0.5
	States
	{
	Spawn:
		TNT1 A 0 A_CustomMissile("NewBloodFlying",random(-8,8),0,random(-160,200),2,random(5,80))
		TNT1 A 0 A_CustomMissile("NewBloodDrop",random(-8,8),0,random(-160,200),2,random(5,80))
        TNT1 A 0 A_CustomMissile("NewBloodFlying",random(-8,8),0,random(-160,200),2,random(5,80))
		TNT1 A 0 A_customMissile("NewBloodDrop",random(-8,8),0,random(-160,200),2,random(5,80))
        TNT1 A 0 A_CustomMissile("NewBloodFlying",random(-8,8),0,random(-160,200),2,random(5,80))
		TNT1 A 0 A_customMissile("NewBloodDrop",random(-8,8),0,random(-160,200),2,random(5,80))
        TNT1 A 0 A_CustomMissile("NewBloodFlying",random(-8,8),0,random(-160,200),2,random(5,80))
		Stop
	}
}

ACTOR BloodSpawner : NewBlood
{
	States
	{
	Spawn:
		TNT1 AAAAAAA 1 A_SpawnItemEx("GiantBlood",random(3,-3),random(3,-3),random(3,-3),random(3,-3),random(3,-3),random(3,-3),random(0,90),0,50)
		Stop
	}
}

// Nashgore and its coding is by Nash Muhandes.
// Gib generator fixed by LilWhiteMouse.

actor BO_NashGore_GibGenerator 
{ 
states 
	{ 
	Spawn: 
     TNT1 A 0 
     TNT1 A 0 A_Jump(128, 8) 
     TNT1 A 0 A_Jump(128, 4) 
     TNT1 A 0 A_Jump(128, 2) 
     TNT1 A 1 A_SpawnDebris("BO_NashGore_Gib1") 
     stop 
	 TNT1 A 1 A_SpawnDebris("BO_NashGore_Gib2") 
     stop 
     TNT1 A 0 A_Jump(128, 2) 
     TNT1 A 1 A_SpawnDebris("BO_NashGore_Gib3") 
     stop 
     TNT1 A 1 A_SpawnDebris("BO_NashGore_Gib4") 
     stop 
     TNT1 A 0 A_Jump(128, 4) 
     TNT1 A 0 A_Jump(128, 2) 
     TNT1 A 1 A_SpawnDebris("BO_NashGore_Gib5") 
     stop 
     TNT1 A 1 A_SpawnDebris("BO_NashGore_Gib6") 
     stop 
	 TNT1 A 0 A_Jump(128, 3) 
     TNT1 A 0 A_Jump(128, 2)
     TNT1 A 1 A_SpawnDebris("BO_NashGore_Gib7") 
     stop 
     TNT1 A 1 A_SpawnDebris("BO_NashGore_Gib8") 
     stop 
   } 
} 

// Gib 1
actor BO_NashGore_Gib1
{
health 1
radius 8
height 8
mass 1
scale 0.75
+CORPSE
+NOTELEPORT
states
	{
	Spawn:
	 GIB1 A 7 A_ThrowGrenade("Blood",1)
	 loop
	Crash:
     TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("JanitorToggle")==1,"Vanish")
	 GIB1 A -1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 Stop
	Vanish:
	 GIB1 A 1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 GIB1 A 1049
	 Stop
	}
}

// Gib 2
actor BO_NashGore_Gib2
{
health 1
radius 8
height 8
mass 1
scale 0.75
+CORPSE
+NOTELEPORT
states
	{
	Spawn:
	 GIB2 A 7 A_ThrowGrenade("Blood",1)
	 loop
	Crash:
     TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("JanitorToggle")==1,"Vanish")
	 GIB2 A -1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 Stop
	Vanish:
	 GIB2 A	1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 GIB2 A 1049
	 Stop
	}
}

// Gib 3
actor BO_NashGore_Gib3
{
health 1
radius 8
height 8
mass 1
scale 0.75
+CORPSE
+NOTELEPORT
states
	{
	Spawn:
	 GIB3 A 7 A_ThrowGrenade("Blood",1)
	 loop
	Crash:
     TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("JanitorToggle")==1,"Vanish")
	 GIB3 A -1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 Stop
	Vanish:
	 GIB3 A 1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 GIB3 A 1049
	 Stop
	}
}

// Gib 4
actor BO_NashGore_Gib4
{
health 1
radius 8
height 8
mass 1
scale 0.75
+CORPSE
+NOTELEPORT
states
	{
	Spawn:
	 GIB4 A 7 A_ThrowGrenade("Blood",1)
	 loop
	Crash:
     TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("JanitorToggle")==1,"Vanish")
	 GIB4 A -1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 Stop
	Vanish:
	 GIB4 A 1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 GIB4 A 1049
	 Stop
	}
}

// Gib 5
actor BO_NashGore_Gib5
{
health 1
radius 8
height 8
mass 1
scale 0.75
+CORPSE
+NOTELEPORT
states
	{
	Spawn:
	 GIB5 A 7 A_ThrowGrenade("Blood",1)
	 loop
	Crash:
     TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("JanitorToggle")==1,"Vanish")
	 GIB5 A -1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 Stop
	Vanish:
	 GIB5 A 1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 GIB5 A 1049
	 Stop
	}
}

// Gib 6
actor BO_NashGore_Gib6
{
health 1
radius 8
height 8
mass 1
scale 0.75
+CORPSE
+NOTELEPORT
states
	{
	Spawn:
	 GIB6 A 7 A_ThrowGrenade("Blood",1)
	 loop
	Crash:
     TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("JanitorToggle")==1,"Vanish")
	 GIB6 A -1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 Stop
	Vanish:
	 GIB6 A 1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 GIB6 A 1049
	 Stop
	}
}

// Gib 7
actor BO_NashGore_Gib7
{
health 1
radius 8
height 8
mass 1
scale 0.75
+CORPSE
+NOTELEPORT
states
	{
	Spawn:
	 GIB7 A 7 A_ThrowGrenade("Blood",1)
	 loop
	Crash:
     TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("JanitorToggle")==1,"Vanish")
	 GIB7 A -1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 Stop
	Vanish:
	 GIB7 A 1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 GIB7 A 1049
	 Stop
	}
}

// Gib 8
actor BO_NashGore_Gib8
{
health 1
radius 8
height 8
mass 1
scale 0.75
+CORPSE
+NOTELEPORT
states
	{
	Spawn:
	 GIB8 A 7 A_ThrowGrenade("Blood",1)
	 loop
	Crash:
     TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("JanitorToggle")==1,"Vanish")
	 GIB8 A -1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 Stop
	Vanish:
	 GIB8 A 1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 GIB8 A 1049
	 Stop
	}
}

// Gib 9 (hand)
actor BO_NashGore_Gib9
{
health 1
radius 8
height 8
mass 1
scale 0.75
+CORPSE
+NOTELEPORT
states
	{
	Spawn:
	 GIB9 A 7 A_ThrowGrenade("Blood",1)
	 loop
	Crash:
     TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("JanitorToggle")==1,"Vanish")
	 GIB9 A -1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 Stop
	Vanish:
	 GIB9 A 1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 GIB9 A 1049
	 Stop
	}
}

// Gib 10 (arm)
actor BO_NashGore_Gib10
{
health 1
radius 8
height 8
mass 1
scale 0.75
+CORPSE
+NOTELEPORT
states
	{
	Spawn:
	 GIB0 A 7 A_ThrowGrenade("Blood",1)
	 loop
	Crash:
     TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("JanitorToggle")==1,"Vanish")
	 GIB0 A -1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 Stop
	Vanish:
	 GIB0 A 1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 GIB0 A 1049
	 Stop
	}
}

// Gib 11 (eyeball)
actor BO_NashGore_Gib11
{
health 1
radius 8
height 8
mass 1
scale 0.3
+CORPSE
+NOTELEPORT
states
	{
	Spawn:
	 GIBI A 7 A_ThrowGrenade("Blood",1)
	 loop
	Crash:
     TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("JanitorToggle")==1,"Vanish")
	 GIBI A -1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 Stop
	Vanish:
	 GIBI A 1 A_Playsound("enemies/nazi/gibbedsplatter",7)
	 GIBI A 1049
	 Stop
	}
}