// Modify the internal Blood actor to spawn flying blood
actor CHNashGore_Blood : Blood replaces Blood
{
 game Doom
 +CANNOTPUSH
 states
 {
  Spawn:

   TNT1 A 0 A_SpawnItemEx("CHNashGore_FlyingBlood", 0,0,0,
          VelX+FRandom (-3,3),VelY+FRandom (-3,3),VelZ+FRandom (0,7),
          0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERTRANSLATION, 0)
  BLUD CBA 8
  stop
 }
}
 
actor CHNashGore_BloodSplatter : Blood replaces BloodSplatter
{
	+CANNOTPUSH
    states
    {
    Spawn:
        TNT1 AAA 0
        TNT1 A 0 A_SpawnItemEx("CHNashGore_FlyingBlood", 0,0,0,
            VelX+FRandom (-4,4),VelY+FRandom (-4,4),VelZ+FRandom (0,8),
            0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERTRANSLATION)
        BLUD CBA 8
        stop
    }
}

// TNT1 A 0 A_SpawnItemEx ("RLGib1Splat", 0,0,0, VelX,VelY,VelZ, 0, SXF_ABSOLUTEMOMENTUM | SXF_TRANSFERTRANSLATION, 0)

// TNT1 A 0 A_SpawnItemEx ("RLGibber", 0,0,0, VelX,VelY,VelZ, 0, SXF_ABSOLUTEMOMENTUM | SXF_USEBLOODCOLOR | SXF_NOCHECKPOSITION)

// Blood sprite that flies outwards and leaves trails behind
actor CHNashGore_FlyingBlood
{
 game Doom
 scale 0.75
 health 1
 radius 8
 height 1
 mass 1
 +CORPSE
 +notonautomap
 +NOTELEPORT
 +NOBLOCKMAP
 states
 {
 Spawn:
  TNT1 A 0 a_checksight("isee")
  FBLD A 1 A_SpawnItemEx("CHNashGore_FlyingBloodTrail", 0,0,0, 0,0,0, 0,
            SXF_TRANSFERTRANSLATION)
  FBLD A 1 A_JumpIf(waterlevel > 1, "Dissolve")
  loop
  isee:
  FBLD A 10 A_SpawnItemEx("CHNashGore_FlyingBloodTrail", 0,0,0, 0,0,0, 0,
            SXF_TRANSFERTRANSLATION)
  FBLD A 1 A_JumpIf(waterlevel > 1, "Dissolve")
  loop
 Crash:
  TNT1 A 1 A_SpawnItem("CHNashGore_BloodSpot",0,0,0,1)
  stop
  Dissolve:
  FBLD ABCD 1 a_fadeout(0.20)
  stop
 }
}

actor CHNashGore_BloodSpot
{
 +notonautomap
 game Doom
 radius 12
 height 2
 mass 1
    +NOTELEPORT
    +NOBLOCKMAP
    +MOVEWITHSECTOR
 states
 {
 Spawn:
  TNT1 A 0
  TNT1 A 0 A_PlaySound("bloodsplat")
  TNT1 A 0 A_Jump(64,4)
  TNT1 A 0 A_Jump(128,4)
  TNT1 A 0 A_Jump(192,4)
  TNT1 A 0 A_Jump(255,4)
  // make the blood spots stay on the ground. 1500 is the default duration.
  BSPT AAAAAAAAAAAA 50 A_JumpIf(waterlevel > 1, "Dissolve")
  Goto Fade1
  BSPT BBBBBBBBBBBB 50 A_JumpIf(waterlevel > 1, "Dissolve")
  Goto Fade2
  BSPT CCCCCCCCCCCC 50 A_JumpIf(waterlevel > 1, "Dissolve")
  Goto Fade3
  BSPT DDDDDDDDDDDD 50 A_JumpIf(waterlevel > 1, "Dissolve")
  Goto Fade4 
  Fade1:
  BSPT A 1 A_Fadeout(0.0025)
  stop
  Fade2:
  BSPT B 1 A_Fadeout(0.0025)
  stop
  Fade3:
  BSPT C 1  A_Fadeout(0.0025)
  stop
  Fade4:
  BSPT D 1  A_Fadeout(0.0025)
  stop
  Dissolve:
  TNT1 A 0 
  stop
 }
}

// Blood trails spawned by FlyingBlood
actor CHNashGore_FlyingBloodTrail
{
 game Doom
 scale 0.70
 mass 1
 +LOWGRAVITY
 +NOTELEPORT
 +NOBLOCKMAP
 +Cannotpush
 states
 {
  Spawn:
  BTRL A 4 A_JumpIf(waterlevel > 1, "Dissolve")
  BTRL B 4 A_JumpIf(waterlevel > 1, "Dissolve")
  BTRL C 4 A_JumpIf(waterlevel > 1, "Dissolve")
  BTRL D 4 A_JumpIf(waterlevel > 1, "Dissolve")
  stop
    Dissolve:
  TNT1 A 0 
  stop
 }
}
