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

ACTOR EriBloodbane : HellWeapon replaces Shotgun
{
	Game Doom
	Scale 0.8
	Weapon.SelectionOrder 1300
	Weapon.AmmoUse 1
	Weapon.AmmoGive 8
	Weapon.AmmoType "BloodAmmo"
	Weapon.SisterWeapon "EriBloodbanePowered"
	Inventory.PickupMessage "$GOTBLOODBANE"
	Tag "$TAG_BLOODBANE"
	AttackSound "weapons/bloodbanestab"
	States
	{
	Ready:
		HBBG AAAAAAAAAAAAAAAAAAAAAAAA 1 A_WeaponReady
	Beat:
		HBBG B 0 A_PlaySound("weapons/bloodbaneheart")
		HBBG BBBBCCCCDDDD 1 A_WeaponReady
		Goto Ready
	Deselect:
		HBBG A 1 A_StopSound(CHAN_BODY)
		HBBG A 1 A_Lower
		Wait
	Select:
		HBBG A 1 A_Raise
		Loop
	Fire:
		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 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) // geeze i have a lot of commented-out junk here
		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 Beat
	Spawn:
		HEBB A -1
		Stop
	}
}
ACTOR EriBloodbanePowered : EriBloodbane
{
	Weapon.SisterWeapon "EriBloodbane"
	+WEAPON.POWERED_UP
	States
	{
	Fire:
		HBBF F 0 Bright A_GunFlash
		HBBF F 0 Bright A_PlaySound("weapons/bloodbanepow", CHAN_AUTO)
		HBBF F 0 Bright A_PlaySound("weapons/bloodbanepow3", CHAN_AUTO)
		HBBF FFFFFFFFFFF 0 Bright A_FireCustomMissile("BloodPowShot", frandom(5, -5), 0, 0, 0, 1, frandom(3, 8))
		HBBF F           3 Bright A_FireCustomMissile("BloodPowShot", frandom(5, -5), 1, 0, 0, 1, frandom(3, 8))
		HBBF GHI 3 Bright
		HBBF J 2 Bright A_PlaySound("weapons/bloodbanezap", CHAN_AUTO)
		HBBF KLMNOPQ 2 Bright
		Goto Beat
	/* Old shet:
	Fire:
		HBBF A 3 Bright A_PlaySound("weapons/bloodbanepow2", CHAN_AUTO)
		HBBF A 0 Bright A_PlaySound("weapons/bloodbaneloop", CHAN_BODY, 1.0, 1)
		HBBF A 0 Bright A_GunFlash("Overlay")
	Hold:
		TNT1 A 1
		TNT1 A 0 Bright A_Refire
	Release:
		HBBF F 0 Bright A_GunFlash("Flash")
		HBBF F 0 Bright A_PlaySound("weapons/bloodbanepow", CHAN_BODY)
	Release1:
		HBBF F 0 Bright A_JumpIfInventory("BloodCharge", 1, "Release2")
		HBBF F 0 Bright A_SetBlend("FF 00 00", 0.5, 10)
		HBBF F 3 Bright A_FireCustomMissile("BloodBomb", 0, 1)
		Goto ReleaseDone
	Release2:
		HBBF F 0 Bright A_JumpIfInventory("BloodCharge", 2, "Release3")
		HBBF F 0 Bright A_PlaySound("weapons/bloodbanepow3", CHAN_WEAPON)
		HBBF F 0 Bright A_SetBlend("FF 00 00", 0.5, 10)		
		HBBF F 0 Bright A_TakeInventory("BloodAmmo", 1, TIF_NOTAKEINFINITE)
		HBBF F 3 Bright A_FireCustomMissile("BloodBomb2", 0, 1)
		Goto ReleaseDone
	Release3:
		HBBF F 0 Bright A_PlaySound("weapons/bloodbanepow4", CHAN_WEAPON)
		HBBF F 0 Bright A_SetBlend("FF 00 00", 0.5, 10)		
		HBBF F 0 Bright A_TakeInventory("BloodAmmo", 2, TIF_NOTAKEINFINITE)
		HBBF F 3 Bright A_FireCustomMissile("BloodBomb3", 0, 1)
	ReleaseDone:
		HBBF G 3 Bright A_TakeInventory("BloodCharge", 2)
		HBBF HI 3 Bright
		HBBF J 3 Bright A_PlaySound("weapons/bloodbanezap", CHAN_AUTO)
		HBBF KLMNOPQ 3 Bright
		Goto Ready
	Overlay:
		HBBF B 4 Bright
		HBBF C 4 Bright A_PlaySound("weapons/bloodbaneheart", CHAN_WEAPON)
		HBBF DE 4 Bright
	Overloop1:
		HBBF B 4 Bright
		HBBF C 4 Bright A_PlaySound("weapons/bloodbaneheart", CHAN_WEAPON)
		HBBF DE 4 Bright
		HBBF B 0 Bright A_JumpIfInventory("BloodAmmo", 2, 1)
		Loop
		HBBF B 0 Bright A_PlaySound("weapons/bloodbanecharge", CHAN_AUTO, 0.66)
		HBBF B 0 Bright A_SetBlend("FF 00 00", 0.1, 10)
		HBBF B 3 Bright A_GiveInventory("BloodCharge", 1)
		HBBF C 3 Bright A_PlaySound("weapons/bloodbaneheart", CHAN_WEAPON)
		HBBF DEB 3 Bright
		HBBF C 3 Bright A_PlaySound("weapons/bloodbaneheart", CHAN_WEAPON)
		HBBF DE 3 Bright
	Overloop2:
		HBBF B 3 Bright
		HBBF C 3 Bright A_PlaySound("weapons/bloodbaneheart", CHAN_WEAPON)
		HBBF DE 3 Bright
		HBBF B 0 Bright A_JumpIfInventory("BloodAmmo", 3, 1)
		Loop
		HBBF B 0 Bright A_PlaySound("weapons/bloodbanecharge", CHAN_AUTO, 1.0)
		HBBF B 0 Bright A_SetBlend("FF 00 00", 0.2, 10)
		HBBF B 0 Bright A_GiveInventory("BloodCharge", 1)
	Overloop3:
		HBBF B 2 Bright
		HBBF C 2 Bright A_PlaySound("weapons/bloodbaneheart", CHAN_WEAPON)
		HBBF DE 2 Bright
		Loop
	Flash:
		TNT1 A 3 A_Light2
		TNT1 A 3 A_Light1
		Goto LightDone
	*/
	}
}
ACTOR EriBloodbaneMana : EriBloodbane replaces MWeapFrost
{
	Weapon.AmmoUse 2
	Weapon.AmmoGive 25
	Weapon.AmmoType "Mana2"
	Weapon.SisterWeapon "EriBloodbaneManaPowered"
}
ACTOR EriBloodbaneManaPowered : EriBloodbanePowered
{
	Weapon.AmmoUse 2
	Weapon.AmmoType "Mana2"
	Weapon.SisterWeapon "EriBloodbaneMana"
	+WEAPON.POWERED_UP	
	/*
	States
	{
	Release:
		HBBF F 0 Bright A_GunFlash("Flash")
		HBBF F 0 Bright A_PlaySound("weapons/bloodbanepow", CHAN_BODY)
	Release1:
		HBBF F 0 Bright A_JumpIfInventory("BloodCharge", 1, "Release2")
		HBBF F 0 Bright A_SetBlend("FF 00 00", 0.5, 10)
		HBBF F 3 Bright A_FireCustomMissile("BloodBomb", 0, 1)
		Goto ReleaseDone
	Release2:
		HBBF F 0 Bright A_JumpIfInventory("BloodCharge", 2, "Release3")
		HBBF F 0 Bright A_PlaySound("weapons/bloodbanepow3", CHAN_WEAPON)
		HBBF F 0 Bright A_SetBlend("FF 00 00", 0.5, 10)		
		HBBF F 0 Bright A_TakeInventory("Mana2", 1, TIF_NOTAKEINFINITE)
		HBBF F 3 Bright A_FireCustomMissile("BloodBomb2", 0, 1)
		Goto ReleaseDone
	Release3:
		HBBF F 0 Bright A_PlaySound("weapons/bloodbanepow4", CHAN_WEAPON)
		HBBF F 0 Bright A_SetBlend("FF 00 00", 0.5, 10)		
		HBBF F 0 Bright A_TakeInventory("Mana2", 2, TIF_NOTAKEINFINITE)
		HBBF F 3 Bright A_FireCustomMissile("BloodBomb3", 0, 1)
	ReleaseDone:
		HBBF G 3 Bright A_TakeInventory("BloodCharge", 2)
		HBBF HI 3 Bright
		HBBF J 3 Bright A_PlaySound("weapons/bloodbanezap", CHAN_AUTO)
		HBBF KLMNOPQ 3 Bright
		Goto Ready
	Overlay:
		HBBF B 4 Bright
		HBBF C 4 Bright A_PlaySound("weapons/bloodbaneheart", CHAN_WEAPON)
		HBBF DE 4 Bright
	Overloop1:
		HBBF B 4 Bright
		HBBF C 4 Bright A_PlaySound("weapons/bloodbaneheart", CHAN_WEAPON)
		HBBF DE 4 Bright
		HBBF B 0 Bright A_JumpIfInventory("Mana2", 2, 1)
		Loop
		HBBF B 0 Bright A_PlaySound("weapons/bloodbanecharge", CHAN_AUTO, 0.66)
		HBBF B 0 Bright A_SetBlend("FF 00 00", 0.1, 10)
		HBBF B 3 Bright A_GiveInventory("BloodCharge", 1)
		HBBF C 3 Bright A_PlaySound("weapons/bloodbaneheart", CHAN_WEAPON)
		HBBF DEB 3 Bright
		HBBF C 3 Bright A_PlaySound("weapons/bloodbaneheart", CHAN_WEAPON)
		HBBF DE 3 Bright
	Overloop2:
		HBBF B 3 Bright
		HBBF C 3 Bright A_PlaySound("weapons/bloodbaneheart", CHAN_WEAPON)
		HBBF DE 3 Bright
		HBBF B 0 Bright A_JumpIfInventory("Mana2", 3, 1)
		Loop
		HBBF B 0 Bright A_PlaySound("weapons/bloodbanecharge", CHAN_AUTO, 1.0)
		HBBF B 0 Bright A_SetBlend("FF 00 00", 0.2, 10)
		HBBF B 0 Bright A_GiveInventory("BloodCharge", 1)
	Overloop3:
		HBBF B 2 Bright
		HBBF C 2 Bright A_PlaySound("weapons/bloodbaneheart", CHAN_WEAPON)
		HBBF DE 2 Bright
		Loop
	}
	*/
}
ACTOR EriBloodbaneGiver : WeaponGiver
{
	Inventory.PickupMessage "$GOTBLOODBANE"
	DropItem "EriBloodbane"
	States
	{
	Spawn:
		HEBB A -1
		Stop
	}
}
ACTOR EriBloodbaneHeretic : EriBloodbaneGiver replaces Crossbow            {}
ACTOR EriBloodbaneStrife  : EriBloodbaneGiver replaces MiniMissileLauncher {}

ACTOR BloodCharge : EriToken
{
	Inventory.MaxAmount 2
}

ACTOR BloodShot
{
	Height 13
	Radius 4
    Speed 30
    Damage 3
	Renderstyle Translucent
    Alpha 0.75
    Scale 0.33
	Gravity 0.5
    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 BloodPowShot : BloodShot
{
	Speed 40
	Deathsound "weapons/bloodbaneember"
	BounceType "Hexen"
	BounceCount 2
    States
    {
    Spawn:
        TBAL AAABBBCCCDDD 1 Bright A_SpawnItemEx("BloodEmberTrail", 0, 0, 0, 0, 0, 0, 0, SXF_CLIENTSIDE)
        Loop
	Death:
		TEXP A 0 Bright A_SetScale(0.5)
		TEXP A 2 Bright A_NoGravity
		TEXP B 2 Bright
		TEXP C 2 Bright //A_Explode(32, 64, 0, 0, 32)
		TEXP DEFGH 2 Bright
		Stop
	}
}

ACTOR BloodBall
{
	Height 13
	Radius 8
    Speed 30
    Damage 10
    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
{ 
	Mass 1
	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
	}
}