// --------------------------------------------------------------------------
//
// Blood Bane
//
// --------------------------------------------------------------------------

DamageType SelfDamage // New damage type to ignore armor
{
	Factor 1.0
	ReplaceFactor
	NoArmor
}

ACTOR EriBloodbane : HellPlayerWeapon ////replaces Shotgun
{
	Game Doom
	Scale 0.8
	Weapon.SelectionOrder 1300
	Weapon.AmmoUse1 1
	Weapon.AmmoUse2 8
	Weapon.AmmoGive 8
	Weapon.AmmoType1 "BloodAmmo"
	Weapon.AmmoType2 "BloodAmmo"
	Weapon.SisterWeapon "EriBloodbanePowered"
	Inventory.PickupMessage "$GOTBLOODBANE"
	Tag "$TAG_BLOODBANE"
	AttackSound "weapons/bloodbanestab"
	States
	{
   Ready:
      BBNG A 1 A_WeaponReady
      BBNG AAAAA 5 A_WeaponReady 
	  BBNG B 0 A_PlaySound("weapons/hrtbea",0,3.0)
	  BBNG BCD 3 A_WeaponReady
	  BBNG D 0 A_TakeInventory("BaneCount",1)
      Goto Ready
   Deselect:
      BBNG A 1 A_Lower
      Loop
   Select:
      BBNG A 1 A_Raise
      Loop
   Fire:
      BBNG I 0 A_JumpIfCloser(112,"Fire2")
      BBNG E 4 Bright A_PlaySound("weapons/globfi")
      BBNG F 14 Bright A_FireBullets(7,6,10,5,"BloodFX")
      BBNG FGH 5 Bright
	  BBNG A 2 A_Refire
      Goto Ready
   Fire2:
      BBNG I 0 A_JumpIfInventory("BaneCount",1,2)
      BBNG I 4 Bright 
      BBNG J 0 Bright A_PlaySound("weapons/spell")
      BBNG J 4 Bright A_CustomPunch(15,1,CPF_USEAMMO,"BloodFX2",96,0.10)
      BBNG KLM 4 Bright A_CustomPunch(15,1,0,"BloodFX2",112,0.10)
	  BBNG I 0 A_GiveInventory("BaneCount",1)
	  BBNG I 4 A_Refire
	  BBNG I 0 A_TakeInventory("BaneCount",1)
      Goto Ready
	AltFire:
		HBBG A 0 Bright A_GunFlash
		HBBG E 3 Bright A_PlaySound("weapons/bloodbanescream", CHAN_AUTO)
		HBBG F 0 Bright A_PlaySound("weapons/bloodbanestab", CHAN_WEAPON)
		HBBG F 0 Bright A_PlaySound("weapons/bloodbanefire", CHAN_AUTO)
		HBBG FFFFFF 0 Bright A_FireCustomMissile("BloodShot", frandom(5, -5), 0, 0, 0, 1, frandom(3, 8))
		HBBG FFFFFF 0 Bright A_FireCustomMissile("BloodShot", frandom(5, -5), 0, 0, 0, 1, frandom(3, 8))
		HBBG FFFFFF 0 Bright A_FireCustomMissile("BloodShot", frandom(5, -5), 0, 0, 0, 1, frandom(3, 8))
		HBBG FFFFFF 0 Bright A_FireCustomMissile("BloodShot", frandom(5, -5), 0, 0, 0, 1, frandom(3, 8))
		HBBG FFFFFF 0 Bright A_FireCustomMissile("BloodBall", frandom(5, -5), 0, 0, 0, 1, frandom(3, 8))
		HBBG F      3 Bright A_FireCustomMissile("BloodShot", frandom(5, -5), 1, 0, 0, 1, frandom(3, 8))
		//HBBG F 3 Bright A_FireCustomMissile("BloodBall", 0, 1)
		HBBG G 3 Bright
		HBBG H 3
		HBBG B 3 A_PlaySound("weapons/bloodbaneheart", CHAN_WEAPON)
		HBBG CDA 3 
		HBBG B 3 A_PlaySound("weapons/bloodbaneheart", CHAN_WEAPON)
		HBBG CD 3
		HBBG A 3 A_Refire
		Goto Ready
	Spawn:
		HEBB A -1
		Stop
	}
}
ACTOR EriBloodbanePowered : EriBloodbane
{
	Weapon.SisterWeapon "EriBloodbane"
	+WEAPON.POWERED_UP
	States
	{
   Fire:
      BBNG I 0 A_JumpIfCloser(112,"Fire2")
      BBNG E 4 Bright A_PlaySound("weapons/blodf2")
      BBNG F 14 Bright A_FireBullets(7,6,15,7,"BloodFX2")
      BBNG FGH 5 Bright
	  BBNG A 2 A_Refire
      Goto Ready
   Fire2:
      BBNG I 0 A_JumpIfInventory("BaneCount",1,2)
      BBNG I 4 Bright 
      BBNG J 0 Bright A_PlaySound("weapons/spell")
      BBNG J 4 Bright A_CustomPunch(30,1,CPF_USEAMMO,"BloodFX2",96,0.10)
      BBNG KLM 4 Bright A_CustomPunch(30,1,0,"BloodFX2",112,0.10)
	  BBNG I 0 A_GiveInventory("BaneCount",1)
	  BBNG I 4 A_Refire
	  BBNG I 0 A_TakeInventory("BaneCount",1)
      Goto Ready
   AltFire:
		HBBG A 0 Bright A_GunFlash
		HBBG E 3 Bright A_PlaySound("weapons/bloodbanescream", CHAN_AUTO)
		HBBG F 0 Bright A_PlaySound("weapons/bloodbanestab", CHAN_WEAPON)
		HBBG F 0 Bright A_PlaySound("weapons/bloodbanefire", CHAN_AUTO)
		HBBG FFFFFF 0 Bright A_FireCustomMissile("BloodShot", frandom(5, -5), 0, 0, 0, 1, frandom(3, 8))
		HBBG FFFFFF 0 Bright A_FireCustomMissile("BloodShot", frandom(5, -5), 0, 0, 0, 1, frandom(3, 8))
		HBBG FFFFFF 0 Bright A_FireCustomMissile("BloodShot", frandom(5, -5), 0, 0, 0, 1, frandom(3, 8))
		HBBG FFFFFF 0 Bright A_FireCustomMissile("BloodShot", frandom(5, -5), 0, 0, 0, 1, frandom(3, 8))
		HBBG FFFFFF 0 Bright A_FireCustomMissile("BloodShot", frandom(5, -5), 0, 0, 0, 1, frandom(3, 8))
		HBBG FFFFFF 0 Bright A_FireCustomMissile("BloodBall", frandom(5, -5), 0, 0, 0, 1, frandom(3, 8))
		HBBG F      3 Bright A_FireCustomMissile("BloodShot", frandom(5, -5), 1, 0, 0, 1, frandom(3, 8))
		//HBBG F 3 Bright A_FireCustomMissile("BloodBall", 0, 1)
		HBBG G 3 Bright
		HBBG H 3
		HBBG B 3 A_PlaySound("weapons/bloodbaneheart", CHAN_WEAPON)
		HBBG CDA 3 
		HBBG B 3 A_PlaySound("weapons/bloodbaneheart", CHAN_WEAPON)
		HBBG CD 3
		HBBG A 3 A_Refire
		Goto Ready
	}
}

Actor BloodFX
{
   Radius 3
   Height 3
   RENDERSTYLE ADD
   ALPHA 0.75
   Damagetype normal
   +NOGRAVITY
   +FORCEXYBILLBOARD
   States
   {
   Spawn:
      BLFX ABCDEF 3 BRIGHT
      stop
   }
}

Actor BloodFX2 : BloodFX
{
   ALPHA 0.90
   +ALWAYSPUFF
   +PUFFONACTORS
   +NOGRAVITY
   +EXTREMEDEATH
   States
   {
   Spawn:
      BLBA ABCD 3 Bright A_FadeOut(0.08)
      loop
   }
}

ACTOR BaneCount : Ammo
{
     Inventory.Amount 1
     Inventory.MaxAmount 1
     Ammo.BackpackAmount 0
     Ammo.BackpackMaxAmount 1
}


ACTOR BloodCharge : EriToken
{
	Inventory.MaxAmount 2
}

ACTOR BloodShot
{
	Height 13
	Radius 4
    Speed 37
    Damage 5
	Renderstyle Translucent
    Alpha 0.75
    Scale 0.33
	Gravity 0.27
    Projectile
	-NOGRAVITY
    +FORCEXYBILLBOARD
    Decal "BloodSmear"
	Deathsound "weapons/bloodbanehit"
	Obituary "$OB_MPBLOODBANE"
    States
    {
    Spawn:
        GORB ABCDEFG 1 A_SpawnItemEx("BloodTrailTiny",0,0,0,frandom(-0.25,0.25),frandom(-0.25,0.25),frandom(-0.5,0.5),0,128,0)
        Loop
    Death:
		GORB HH 0 A_SpawnItemEx("BloodSpurt",0,0,0,0.2*random(-10,10),0.2*random(-10,10),0.3*random(5,15),0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,0)
        GORB HIJK 3
        Stop
    }
}

ACTOR BloodBall
{
	Height 13
	Radius 8
    Speed 42
    Damage 12
    Scale 0.75
    Alpha 0.75
    PROJECTILE
	Renderstyle Translucent
    +FORCEXYBILLBOARD
    Decal "BloodSmear"
	Seesound "weapons/bloodbanestab"
	Deathsound "weapons/bloodbanehit"
	Obituary "$OB_MPBLOODBANE"
    States
    {
    Spawn:
        GORB ABCDEFG 1 A_SpawnItemEx("BloodTrail",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,128,0)
        Loop
    Death:
		GORB HHHHH 0 A_SpawnItemEx("BloodSpurt",0,0,0,0.2*random(-10,10),0.2*random(-10,10),0.3*random(5,15),0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,0)
        GORB HI 3		
		GORB J 0 A_SpawnItemEx("BloodFrag",0,0,0,20,0,0, 0   + random(-5,5),SXF_TRANSFERPOINTERS,0)
		GORB J 0 A_SpawnItemEx("BloodFrag",0,0,0,20,0,0, 72  + random(-5,5),SXF_TRANSFERPOINTERS,0)
		GORB J 0 A_SpawnItemEx("BloodFrag",0,0,0,20,0,0, 144 + random(-5,5),SXF_TRANSFERPOINTERS,0)
		GORB J 0 A_SpawnItemEx("BloodFrag",0,0,0,20,0,0, 216 + random(-5,5),SXF_TRANSFERPOINTERS,0)
		GORB J 0 A_SpawnItemEx("BloodFrag",0,0,0,20,0,0, 288 + random(-5,5),SXF_TRANSFERPOINTERS,0)
		GORB JK 3
        Stop
    }
}

actor BloodFrag : BloodBall
{
	Speed 20
	Damage 6
	Scale 0.5
	SeeSound ""
	Decal "BloodSplat"
	states
	{
	Spawn:
		GORB ABCDEF 1 A_SpawnItemEx("BloodTrail",0,0.5*random(-10,10),0.5*random(-10,10),0,0,0,0,SXF_CLIENTSIDE,0)
		stop
	Death:
		GORB HIJK 2
		stop
	}
}

ACTOR BloodTrail : EriDrop
{ 
	Alpha 0.75
	Scale 0.3
	Renderstyle Translucent
	States
	{
	Spawn:
		GORB ABCDEFG 1
		Loop
	Death:
		GORB HIJK 3
		Stop
	}
}
ACTOR BloodTrailTiny : BloodTrail
{
	Scale 0.15
	Gravity 0.5
}

ACTOR BloodSpurt
{
	Health 4
	radius 3
	height 6
	speed 0.1
	Gravity 0.5
	Scale 0.3
	Mass 0
	BounceType "Doom"
	+DONTSPLASH
	+NOTELEPORT
	+NOBLOCKMAP 
	+THRUACTORS
	+FORCEXYBILLBOARD
	States
	{
	Spawn:
		BLFX ABCBABCBABCD 1 A_SpawnItemEx("BloodSmear",0.05*random(-10,10),0.05*random(-10,10),0.05*random(-10,10),0,0,0,0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,0)
		BLFX EEFF 1 A_SpawnItemEx("BloodSmear",0.05*random(-10,10),0.05*random(-10,10),0.05*random(-10,10),0,0,0,0, SXF_TRANSFERTRANSLATION | SXF_CLIENTSIDE,0)
		Stop
	}
}

ACTOR BloodSmear : BloodSpurt
{
	Gravity 0.25
	States
	{
	Spawn:
		BLFX EEFF 2
		Stop
	}
}

ACTOR BloodPuff
{
	+NOBLOCKMAP
	+NOGRAVITY
	+RANDOMIZE
	+PUFFONACTORS
	Decal "BloodSplat"
	RenderStyle Translucent
	Alpha 0.75
	Mass 5
	States
	{
	Spawn:
	Melee:
		BLFX A 0
		BLFX A 3 A_PlaySound("weapons/bloodbanehit")
		BLFX BCDEF 3
		Stop
	}
}

ACTOR BloodBomb
{
	Height 13
	Radius 8
    Speed 30
    Damage 10
    Scale 0.6
    Alpha 0.75
	Renderstyle Add
    Projectile
    +FORCEXYBILLBOARD
    Decal "Scorch"
	Deathsound "weapons/bloodbanepowhit"
	Obituary "$OB_MPBLOODBANEPOW"
    States
    {
    Spawn:
        XBAL AABBCCDD 2 Bright A_SpawnItemEx("BloodBombTrail", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE)
        Loop
    Death:
		XBAL EEEEEEEEEE 0 A_SpawnItemEx("BloodEmber",0,0,0,frandom(2.5,10),0,frandom(5,10),random(0, 360), SXF_TRANSFERPOINTERS)
        XBAL EFGHI 3 Bright
        Stop
    }
}
ACTOR BloodBomb2 : BloodBomb
{
	Damage 15
	Scale 0.8
	States
	{
    Death:
		XBAL EEEEEEEEEE 0 A_SpawnItemEx("BloodEmber",0,0,0,frandom(2.5,10),0,frandom(5,10),random(0, 360), SXF_TRANSFERPOINTERS)
		XBAL EEEEEEEEEE 0 A_SpawnItemEx("BloodEmber",0,0,0,frandom(5.0,15),0,frandom(5,10),random(0, 360), SXF_TRANSFERPOINTERS)
        XBAL EFGHI 3 Bright
        Stop
	}
}
ACTOR BloodBomb3 : BloodBomb
{
	Damage 15
	Scale 0.8
	States
	{
    Death:
		XBAL EEEEEEEEEE 0 A_SpawnItemEx("BloodEmber",0,0,0,frandom(2.5,10),0,frandom(5,10.0),random(0, 360), SXF_TRANSFERPOINTERS)
		XBAL EEEEEEEEEE 0 A_SpawnItemEx("BloodEmber",0,0,0,frandom(5.0,15),0,frandom(5,12.5),random(0, 360), SXF_TRANSFERPOINTERS)
		XBAL EEEEEEEEEE 0 A_SpawnItemEx("BloodEmber",0,0,0,frandom(7.5,20),0,frandom(5,15.0),random(0, 360), SXF_TRANSFERPOINTERS)
        XBAL EFGHI 3 Bright
        Stop
	}
}

ACTOR BloodBombTrail : EriTrail
{
	Scale 0.4
    Alpha 0.4
	Renderstyle Add
	States
	{
    Spawn:
		XBAL A 0 A_Jump(256, 1, 2, 3, 4, 5, 6, 7, 8)
	Fade:
		XBAL AABBCCDD 2 Bright A_FadeOut(0.05, 1)
        Loop
	}
}

ACTOR BloodEmber
{
	Height 4
	Radius 2
    Speed 10
    Damage 5
	Renderstyle Add
    Projectile
	-NOGRAVITY
	+FORCERADIUSDMG
    +FORCEXYBILLBOARD
	DamageType "Explosive"
	Obituary "$OB_MPBLOODBANEPOW"
	Deathsound "weapons/bloodbaneember"
	BounceType "Hexen"
	BounceCount 2
	-BOUNCEONFLOORS
    States
    {
    Spawn:
        TBAL AAABBBCCCDDD 1 Bright A_SpawnItemEx("BloodEmberTrail", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE)
        Loop
	Bounce:
		TBAL AA 0 Bright A_SeekerMissile(90, 90, SMF_LOOK, 256)
		Goto Spawn
	Death:
		TEXP A 2 Bright A_SetScale(0.5)
		TEXP B 2 Bright
		TEXP C 2 Bright A_Explode(32, 64, 0, 0, 32)
		TEXP DEFGH 2 Bright
		Stop
    OldDeath:
		TBAL E 0 Bright A_NoGravity
        TBAL EFGHIJ 2 Bright A_FadeOut(0.1)
        Stop
	}
}

ACTOR BloodEmberTrail : EriTrail
{
    Alpha 1.0
	Renderstyle Add
	States
	{
    Spawn:
        TBAL AB 3 Bright
	Fade:
		TBAL CCCDDDAAABBB 1 Bright A_FadeOut(0.1, 1)
        Loop
	}
}


Actor BloodFX
{
   Radius 3
   Height 3
   RENDERSTYLE ADD
   ALPHA 0.75
   Damagetype normal
   +PUFFONACTORS
   +NOGRAVITY
   +FORCEXYBILLBOARD
   States
   {
   Spawn:
      BLFX ABCDEF 3 BRIGHT
      stop
   }
}

Actor BloodFX2A : BloodFX
{
   ALPHA 0.90
   +ALWAYSPUFF
   +PUFFONACTORS
   +NOGRAVITY
   +EXTREMEDEATH
   +PUFFGETSOWNER
   +NODAMAGETHRUST
   +LOOKALLAROUND 
   States
   {
   Spawn:
      BLBA ABCD 3 Bright A_FadeOut(0.1)
      stop
   XDeath:	  
	  BLNA EEEEEEEEEEEEEEEEEEEEEEEE 0 Bright A_SpawnItemEx("BloodFX",0,0,0,5,0,Frandom(-5,5),Frandom(0,360),0,0)
	  BLNA E 0 Bright A_RearrangePointers(AAPTR_DEFAULT,AAPTR_DEFAULT,AAPTR_TARGET) //sets tracer to target pointer.
	  BLBA E 0 Bright A_FaceTarget
	  BLBA E 0 Bright A_CustomMissile("HealthMissile1",0,0,0,0)
	  BLBA E 3 Bright A_Explode(64,72,0,0,72)
	  BLBA FGH 3 Bright 
	  stop
   }
}

Actor BloodFX2B : BloodFX2A
{  
   States
   {
   Spawn:
      BLBA ABCD 3 Bright A_FadeOut(0.1)
      stop
   XDeath:
	  BLNA EEEEEEEEEEEEEEEEEEEEEEEE 0 Bright A_SpawnItemEx("BloodFX3",0,0,0,5,0,Frandom(-5,5),Frandom(0,360),0,0)
	  BLNA E 0 Bright A_RearrangePointers(AAPTR_DEFAULT,AAPTR_DEFAULT,AAPTR_TARGET) //sets tracer to target pointer.
	  BLBA E 0 Bright A_FaceTarget
	  BLBA E 0 Bright A_CustomMissile("HealthMissile2",0,0,0,0)
	  BLBA E 3 Bright A_Explode(128,96,0,0,96)
	  BLBA FGH 3 Bright 
	  stop
   }
}

Actor BloodFX3 : BloodFX
{
   States
   {
   Spawn:
      BLF2 ABCDEF 3 BRIGHT
      stop
   }
}

ACTOR HealthMissile1 : Health
{
  PROJECTILE
  +INVENTORY.ALWAYSPICKUP
  +SEEKERMISSILE
  +FORCEXYBILLBOARD  
  -NOBLOCKMAP
  -MISSILE
  Scale 0.5
  Inventory.PickupSound "misc/picku3"
  RenderStyle ADD
  Inventory.Amount 2
  Inventory.MaxAmount 100
  Speed 15
  States
  {
  Spawn:
    BLBA ABCD 3 Bright A_SeekerMissile(10,15)
    loop
  Death:
    BLBA ABCD 3 Bright A_FadeOut(0.1)
    stop
  }
}

ACTOR HealthMissile2 : HealthMissile1
{
  Inventory.Amount 10
  Scale 1.0
}

ACTOR BaneCount: Ammo //used to cycle firing animations
{
     Inventory.Amount 1
     Inventory.MaxAmount 1
     Ammo.BackpackAmount 0
     Ammo.BackpackMaxAmount 1
}