Actor Satanic_BloodMagic : Weapon
{
	SpawnID 33
    Weapon.SelectionOrder 4
	Weapon.AmmoType "Satanic_SoulAmmo"
    Inventory.PickupSound "misc/w_pkup"
	Inventory.PickupMessage "the secrets of blood magic have been revealed to you."
	Tag "Blood Magic"
	+FLOATBOB
	+ALWAYSPICKUP
	+NOALERT
	+NO_AUTO_SWITCH
    Weapon.BobStyle "Alpha"
	Weapon.BobSpeed 1.5  
	States
	{
	Spawn:
		BLDM ABCD 3
		Loop
	Ready:
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG A 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG A 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG A 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG A 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG A 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG A 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG A 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG A 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG B 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG B 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG B 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG B 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG B 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG B 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG B 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG B 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG C 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG C 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG C 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG C 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG C 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG C 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG C 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG C 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG B 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG B 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG B 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG B 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG B 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG B 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG B 1 A_WeaponReady
		TNT1 A 0 A_JumpIfInventory("TertiaryChecker",1,"TertiaryAttack")
		MLNG B 1 A_WeaponReady
		Goto Ready
	Select:
		TNT1 A 0 A_JumpIfInventory("PWCIsOff",1,"DefXHair")
		TNT1 A 0 A_SetCrosshair(89)
		Goto SeleLoop
	DefXHair:
		TNT1 A 0 A_SetCrosshair(0)
	SeleLoop:
		MLNG A 0 A_Raise
		MLNG A 1 A_Raise
		Loop
	Deselect:
		MLNG A 0 A_Lower
		MLNG A 1 A_Lower
		Loop
	AltFire:
		MLNG E 0 Acs_ExecuteAlways(769,0,15,0,0) // Take 15 SoulAmmo or damage player by the same value
		MLNG E 0 A_PlaySound("Satanic/Weapons/BloodMagicShot")
		MLNG E 0 A_FireCustomMissile("Satanic_BloodMagicShot",0,0,0,0)
		MLNG E 4 A_AlertMonsters 
		MLNG F 16
		MLNG GHI 4
		Goto Ready
	Fire:
		MLNG FG 4
		MLNG H 4 A_FireCustomMissile("Satanic_BloodMagicAltFireShot",0,0,0,4)
		MLNG H 0 A_FireCustomMissile("Satanic_GhostHealerSpawner",0,0,0,8)
		MLNG GF 4
		Goto Ready
	TertiaryAttack:
		TNT1 A 0 A_SpawnItemEx("BMTertiaryRaiser",-30,0)
		TNT1 A 0 A_SpawnItemEx("BMTertiaryRaiser",30,0)
		TNT1 A 0 A_SpawnItemEx("BMTertiaryRaiser",0,30)
		TNT1 A 0 A_SpawnItemEx("BMTertiaryRaiser",0,-30)
		TNT1 A 0 A_SpawnItemEx("BMTertiaryRaiser",-30,-30)
		TNT1 A 0 A_SpawnItemEx("BMTertiaryRaiser",30,30)
		TNT1 A 0 A_SpawnItemEx("BMTertiaryRaiser",30,-30)
		TNT1 A 0 A_SpawnItemEx("BMTertiaryRaiser",-30,30)
		MLNG F 5
		MLNG G 5
		MLNG H 0 Thing_Damage(0,5)
		MLNG H 5 
		MLNG G 5
		MLNG F 5
		Goto Ready
	}	
}	

Actor Satanic_BloodMagicShot
{
	Radius	3
	Height	3
	Speed	48
	Damage	48
	RenderStyle	Translucent
	Decal 		BloodSmear
	Alpha		0.8 
	Scale		2.0
	DamageType DrainHealthEver
	PROJECTILE
	+THRUGHOST
	+NOGRAVITY
	+EXTREMEDEATH
	+RIPPER
	States
	{
	Spawn:
		FBLD A 2 Bright A_CStaffMissileSlither
		FBLD A 0 A_SpawnItem("Satanic_BloodMagicTrail",0,0)
		FBLD B 2 Bright A_CStaffMissileSlither
		FBLD B 0 A_SpawnItem("Satanic_BloodMagicTrail",0,0)
		Loop
	Death:
		FBLD CDE 3 Bright
		FBLD C 0 A_CustomMissile("Satanic_BloodMagicBackShot",0,0,0,0)
		Stop
	}
}

Actor Satanic_BloodMagicTrail
{   
	Radius 1
	Height 1
    RenderStyle 	Translucent
	Alpha		0.66
	Scale 2.0
    PROJECTILE
    States
	{
	Spawn:
		NULL A 3
		FBLD FGH 3 Bright
		Stop 
	}
}


Actor Satanic_BloodMagicBackShot
{
	Speed 	48
	Height 	2
	Radius 	4
	Mass 	19
	Damage 	(64)
	RenderStyle Translucent
	Alpha 		0.7 
	Scale	2.0
	DamageType DrainHealthEver
	PROJECTILE
	+STRIFEDAMAGE
	States
	{
	Spawn:
		FBLD AB 1 Bright A_SpawnItem("Satanic_BloodMagicTrail")     
		Loop      
	Death: 
		FBLD CDE 3 Bright
		Stop
    }
}

Actor Satanic_BloodMagicAltFireShot
{
	Speed 16
	Height 2
	Radius 4
	Mass 19
	Damage 8
	DamageType DrainHealth //DrainMana
	Decal BloodSmear
	PROJECTILE
	+RIPPER
	+STRIFEDAMAGE
	States
	{
	Spawn:
		NONE A 0 A_CustomMissile("Satanic_Blood",0,0,0,0)     
		NONE A 2 A_CustomMissile("Satanic_Blood",0,0,25,0)     
		NONE A 0 A_CustomMissile("Satanic_Blood",0,0,50,0)     
		NONE A 2 A_CustomMissile("Satanic_Blood",0,0,75,0)     
		Stop	
	Death: 
		NONE A 0
		Stop
    }
}

Actor Satanic_HealthSpirit
{
	Speed 	4
	Height 	2
	Radius 	4
	Mass 	1
	Damage 	0
	DamageType NoDamage
	RenderStyle Translucent
	Alpha		0.5
	Scale 1.0
	PROJECTILE
	-SOLID
    States
	{
	Spawn:
		SPIR EFGHIJ 4
		Stop     
	}
}

Actor Satanic_HealthSpiritExplosion
{
	Speed 	0
	Height 	0
	Radius 	0
	Mass 	0
	DamageType NoDamage
	PROJECTILE
	-SOLID
	States
	{
	Spawn:
		NONE A 1
		Goto Death
	Death: 
		MSP1 AAA 0 A_CustomMissile("Satanic_HealthSpiritRipper",0,Random(-64,64),Random(0,360),2,Random(0,360))
		MSP1 AAA 0 A_CustomMissile("Satanic_HealthSpiritRipper",0,Random(-64,64),Random(0,360),2,Random(0,360))
		MSP1 AAA 0 A_CustomMissile("Satanic_HealthSpiritRipper",0,Random(-64,64),Random(0,360),2,Random(0,360))
		NONE A 1
		Stop
    }
}

Actor Satanic_HealthSpiritRipper
{
	Speed	8
	Height	1
	Radius	1
	Mass	8
	Damage	0
	DamageType NoDamage
	RenderStyle	Add
	Decal 		BloodSmear
	Alpha		0.8 
	Scale		0.5
	PROJECTILE
	-NOGRAVITY
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_CheckSight("NoSpawnEffects")
		NULL A 3 A_SpawnItem("Satanic_ManaRitualFlame")
		Loop
     NoSpawnEffects:
		NULL A 3
		Goto Spawn
	 Death: 
		NULL A 0
		Stop
    }
}
//------------------------------------------------------------------------------