ACTOR Satanic_Head : Weapon
{
	Inventory.PickupSound 	"misc/gibbed"
	Inventory.PickupMessage "You take the head from a former human."
	Weapon.SelectionOrder 10000
	Weapon.AmmoType "Satanic_HeadAmmo"
	Weapon.AmmoGive 1
	Weapon.AmmoUse	1
	Weapon.AmmoType2 "Satanic_SoulAmmo"
	Scale 0.5
	Tag "Deadman Head"
	Weapon.BobStyle "Alpha"
	Weapon.BobSpeed 1.5
	+WEAPON.PRIMARY_USES_BOTH
	+WEAPON.ALT_USES_BOTH
	+IGNORESKILL
	+NOALERT
	+NO_AUTO_SWITCH
	States
	{
	Spawn:
		DEDH A -1
		Loop
	Select:
		TNT1 A 0 A_GiveInventory("WeapWithNoTertChecker",1)
		TNT1 A 0 A_JumpIfInventory("PWCIsOff",1,"DefXHair")
		TNT1 A 0 A_SetCrosshair(96)
		Goto SeLoop
	DefXHair:
		TNT1 A 0 A_SetCrosshair(0)
	SeLoop:
		TNT1 A 0 A_JumpIfInventory("Satanic_HeadAmmo",1,1)
		Goto SeLoopNoAmmo
		TNT1 A 0 A_Raise
		DHGU A 1 A_Raise
		Loop
	SeLoopNoAmmo:
		TNT1 A 0 A_Raise
		DHGU H 1 A_Raise
		Loop
	Deselect:
		TNT1 A 0 A_TakeInventory("WeapWithNoTertChecker",1)
		TNT1 A 0 A_JumpIfInventory("Satanic_HeadAmmo",1,1)
		Goto DeseLoopNoAmmo	
	DeseLoop:	
		TNT1 A 0 A_Lower
		DHGU A 1 A_Lower
		Loop
	DeseLoopNoAmmo:	
		TNT1 A 0 A_Lower
		DHGU H 1 A_Lower
		Loop
	Ready:
		TNT1 A 0 A_JumpIfInventory("Satanic_HeadAmmo",1,1)
		Goto NoAmmoReady
		DHGU A 1 A_WeaponReady
		Loop
	NoAmmoReady:
		TNT1 A 0 A_JumpIfInventory("Satanic_HeadAmmo",1,"GotAmmo")
		DHGU H 1 A_WeaponReady
		Loop
	GotAmmo:
		DHGU H 1 Offset(10,42) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU H 1 Offset(20,52) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU H 1 Offset(30,62) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU H 1 Offset(40,72) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU H 1 Offset(50,82) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU H 1 Offset(60,92) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU H 1 Offset(70,102) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(70,102) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(60,92) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(50,82) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(40,72) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(30,62) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(20,52) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(10,42) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		Goto Ready
	Fire:
		DHGU A 15
		TNT1 A 0 A_Refire("Fire2")
		Goto ThrowPower1
	Fire2:
		DHGU B 15
		TNT1 A 0 A_Refire("Fire3")
		Goto ThrowPower2
	Fire3:
		DHGU C 15
		TNT1 A 0 A_Refire("FireMax")
		Goto ThrowPower3
	FireMax:
		DHGU C 1
		TNT1 A 0 A_Refire("FireMax")
		Goto ThrowPower3
	ThrowPower1:
		DHGU A 1 Offset(10,42)
		DHGU A 1 Offset(20,52)
		DHGU A 1 Offset(30,62)
		DHGU A 1 Offset(40,72)
		DHGU A 1 Offset(50,82)
		DHGU A 1 Offset(60,92)
		DHGU A 1 Offset(70,102)
		TNT1 A 8
		DHGU D 1 Offset(0,112)
		DHGU D 1 Offset(0,92)
		DHGU D 1 Offset(0,72)
		DHGU D 1 Offset(0,52)
		DHGU D 1 Offset(0,32)
		DHGU D 1 Offset(0,12)
		TNT1 A 0 ACS_ExecuteAlways(769,0,5,0,0)
		TNT1 A 0 A_FireCustomMissile("Satanic_HeadProjectile",0,1,0,12)
		DHGU E 15 Offset(0,12)
		DHGU E 1 Offset(0,32)
		DHGU E 1 Offset(0,52)
		DHGU E 1 Offset(0,72)
		DHGU E 1 Offset(0,92)
		DHGU E 1 Offset(0,112)
		TNT1 A 0 A_JumpIfInventory("Satanic_HeadAmmo",1,1)
		Goto NoHeadsLeft
		TNT1 AAAAAAAA 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(70,102) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(60,92) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(50,82) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(40,72) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(30,62) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(20,52) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(10,42) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		Goto Ready
	ThrowPower2:
		DHGU B 1 Offset(10,42)
		DHGU B 1 Offset(20,52)
		DHGU B 1 Offset(30,62)
		DHGU B 1 Offset(40,72)
		DHGU B 1 Offset(50,82)
		TNT1 A 8
		DHGU F 1 Offset (50,52)
		DHGU F 1 Offset (40,42)
		DHGU F 1 Offset (30,32)
		DHGU F 1 Offset (20,22)
		DHGU F 1 Offset (10,12)
		TNT1 A 0 ACS_ExecuteAlways(769,0,7,0,0)
		TNT1 A 0 A_FireCustomMissile("Satanic_HeadProjectileFaster",0,1,0,12)
		DHGU G 1 Offset (10,12)
		DHGU G 1 Offset(0,22)
		DHGU G 1 Offset(-10,32)
		DHGU G 1 Offset(-20,42)
		DHGU G 1 Offset(-30,52)
		TNT1 A 0 A_JumpIfInventory("Satanic_HeadAmmo",1,1)
		Goto NoHeadsLeft
		TNT1 AAAAAAAA 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(70,102) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(60,92) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(50,82) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(40,72) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(30,62) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(20,52) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(10,42) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		Goto Ready
	ThrowPower3:
		DHGU C 1 Offset(10,42)
		DHGU C 1 Offset(20,52)
		DHGU C 1 Offset(30,62)
		TNT1 A 8
		DHGU F 1 Offset (90,52)
		DHGU F 1 Offset (50,32)
		DHGU F 1 Offset (10,12)
		TNT1 A 0 ACS_ExecuteAlways(769,0,9,0,0)
		TNT1 A 0 A_FireCustomMissile("Satanic_HeadProjectileTheFastest",0,1,0,12)
		DHGU G 1 Offset (10,12)
		DHGU G 1 Offset(-50,32)
		DHGU G 1 Offset(-90,52)
		TNT1 A 0 A_JumpIfInventory("Satanic_HeadAmmo",1,1)
		Goto NoHeadsLeft
		TNT1 AAAAAAAA 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(70,102) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(60,92) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(50,82) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(40,72) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(30,62) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(20,52) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(10,42) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		Goto Ready
	AltFire:
		TNT1 A 0 A_JumpIfInventory("Satanic_KindredGenesis",1,1)
		Goto Ready
		TNT1 A 0 A_JumpIfInventory("Satanic_HeadAmmo",1,1)
		Goto Ready
		DHGU A 1 Offset(10,42)
		DHGU A 1 Offset(20,52)
		DHGU A 1 Offset(30,62)
		DHGU A 1 Offset(40,72)
		DHGU A 1 Offset(50,82)
		DHGU A 1 Offset(60,92)
		DHGU A 1 Offset(70,102)
		TNT1 A 8
		DHGU D 1 Offset(0,112)
		DHGU D 1 Offset(0,92)
		DHGU D 1 Offset(0,72)
		DHGU D 1 Offset(0,52)
		DHGU D 1 Offset(0,32)
		DHGU D 1 Offset(0,12)
		TNT1 A 0 A_AlertMonsters
		TNT1 A 0 A_TakeInventory("Satanic_HeadAmmo",1)
		TNT1 A 0 ACS_ExecuteAlways(769,0,20,0,0)
		TNT1 A 0 A_FireCustomMissile("Satanic_SpiderSpiritSpawner",0,1,0,12)
		DHGU E 15 Offset(0,12)
		DHGU E 1 Offset(0,32)
		DHGU E 1 Offset(0,52)
		DHGU E 1 Offset(0,72)
		DHGU E 1 Offset(0,92)
		DHGU E 1 Offset(0,112)
		TNT1 A 0 A_JumpIfInventory("Satanic_HeadAmmo",1,1)
		Goto NoHeadsLeft
		TNT1 AAAAAAAA 1 A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(70,102) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(60,92) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(50,82) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(40,72) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(30,62) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(20,52) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU A 1 Offset(10,42) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		Goto Ready
	NoHeadsLeft:
		DHGU H 1 Offset(70,102) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU H 1 Offset(60,92) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU H 1 Offset(50,82) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU H 1 Offset(40,72) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU H 1 Offset(30,62) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU H 1 Offset(20,52) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		DHGU H 1 Offset(10,42) A_WeaponReady(WRF_NOBOB|WRF_NOFIRE)
		Goto NoAmmoReady
	}
}

Actor Satanic_HeadFirePower : Inventory
{
	Inventory.MaxAmount 8
}

Actor Satanic_HeadProjectile
{
	Speed 	12
	Height 	2
	Radius 	4
	Mass 	19
	Damage			192
	ExplosionDamage 192
	ExplosionRadius 96
	PROJECTILE
	-NOGRAVITY
	+DOOMBOUNCE
	+CANBOUNCEWATER
	States
	{
	Spawn:
		DEDH AB 2 A_CustomMissile("Satanic_Blood",0,0,0,0)     
		DEDH CD 2 
		DEDH EF 2 A_CustomMissile("Satanic_Blood",0,0,25,0)     
		DEDH GHI 2
		DEDH JK 2 A_CustomMissile("Satanic_Blood",0,0,50,0)     
		DEDH LM 2 
		DEDH NO 2 A_CustomMissile("Satanic_Blood",0,0,75,0)     
		DEDH PQ 2
		Loop
	Death: 
		TNT1 A 0 A_AlertMonsters
		MSP1 AAA 0 A_CustomMissile("Satanic_HeadRipper",0,Random(-64,64),Random(0,360),2,Random(0,360)) 
		MSP1 AAA 0 A_CustomMissile("Satanic_HeadRipper",0,Random(-64,64),Random(0,360),2,Random(0,360)) 
		MSP1 AAA 0 A_CustomMissile("Satanic_HeadRipper",0,Random(-64,64),Random(0,360),2,Random(0,360)) 
		MSP1 AAA 0 A_CustomMissile("Satanic_HeadRipper",0,Random(-64,64),Random(0,360),2,Random(0,360)) 
		MSP1 AAA 0 A_CustomMissile("Satanic_HeadRipper",0,Random(-64,64),Random(0,360),2,Random(0,360)) 
		MSP1 AAA 0 A_CustomMissile("Satanic_HeadRipper",0,Random(-64,64),Random(0,360),2,Random(0,360)) 
		MSP1 AAA 0 A_CustomMissile("Satanic_HeadRipper",0,Random(-64,64),Random(0,360),2,Random(0,360)) 
		MSP1 AAA 0 A_CustomMissile("Satanic_HeadRipper",0,Random(-64,64),Random(0,360),2,Random(0,360)) 
		MSP1 AAA 0 A_CustomMissile("Satanic_HeadRipper",0,Random(-64,64),Random(0,360),2,Random(0,360)) 
		MSP1 A 0 A_SpawnItem("Satanic_SmokeSpawner")
		MSP1 A 0 A_PlaySound("weapons/rocklx")
		MSP1 A 0 A_Detonate
		MSP1 H 3 Light ("deadheadexplosion1")
		MSP1 I 3 Light ("deadheadexplosion2")
		MSP1 J 3 Light ("deadheadexplosion3")
		MSP1 K 3 Light ("deadheadexplosion4")
		MSP1 L 3 Light ("deadheadexplosion5")
		MSP1 M 3 Light ("deadheadexplosion6")
		MSP1 N 3 Light ("deadheadexplosion7")
		MSP1 OP 3 Bright
		Stop
    }
}

Actor Satanic_HeadProjectileFaster : Satanic_HeadProjectile
{
	Speed 24
}

Actor Satanic_HeadProjectileTheFastest : Satanic_HeadProjectile
{
	Speed 36
}

Actor Satanic_SpiderSpiritSpawner
{
	Speed	16
	Height	2
	Radius	4
	Mass	19
	PROJECTILE
	-NOGRAVITY
	+DOOMBOUNCE
	States
	{
	Spawn:
		DEDH AB 2 A_CustomMissile("Satanic_Blood",0,0,0,0)     
		DEDH CD 2 
		DEDH EF 2 A_CustomMissile("Satanic_Blood",0,0,25,0)     
		DEDH GHI 2
		DEDH JK 2 A_CustomMissile("Satanic_Blood",0,0,50,0)     
		DEDH LM 2 
		DEDH NO 2 A_CustomMissile("Satanic_Blood",0,0,75,0)     
		DEDH PQ 2
		Loop
	Death: 
		DEDH A 1 A_SpawnItem("Satanic_SpiderSpirit")
		Stop
    }
}

Actor Satanic_SpiderSpirit
{
	DamageFactor DrainHealth,	0
	DamageFactor NoDamage,		0
	PainCHance DrainHealth,		0
	PainChance NoDamage,		0
	Health		30
	Radius		20
	Height		32
	Speed		16
	PainChance	200
	Scale		0.5
    MONSTER 
	-SOLID
	+DROPOFF
	+FRIENDLY
	+FLOORCLIP
	+LOOKALLAROUND
	+MISSILEMORE
	+MISSILEEVENMORE
    States
	{
	Spawn:
		HSPI A 0
		Goto See
	See:
		HSPI AAABBBCCCDDD 2 A_Chase
		Loop
	Melee:
	Missile:
		HSPI A 2 A_FaceTarget
		HSPI A 0 A_XScream
		HSPI A 2 A_CustomMissile("Satanic_SpiderSpiritShot",0,0,0,0)     
		HSPI A 2
		Goto See
	Pain:
		HSPI A 3
		HSPI A 3 A_Pain
		Goto See
	XDeath:
	Death.DrainHealth:
	Death.DrainMana:
	Burn:
	Death:
		HSPI E 4 A_PlaySound("Satanic/Weapons/Heads/SpiritDeath")
		HSPI F 4 A_Scream
		HSPI G 4 A_Fall
		HSPI H 4
		HSPI I 256
		Stop
	}
}

Actor Satanic_SpiderSpiritShot
{
	Speed	24
	Height	2
	Radius	4
	Mass	19
	Damage	8
	RenderStyle Translucent
	Alpha 		0.7 
	Scale 		0.3
	DamageType DrainHealth
	PROJECTILE
	States
	{
	Spawn:
		CTFX A 8 A_CustomMissile("Satanic_Blood",0,0,0,0)     
		CTFX A 8 A_CustomMissile("Satanic_Blood",0,0,25,0)     
		CTFX A 8 A_CustomMissile("Satanic_Blood",0,0,50,0)     
		CTFX A 8 A_CustomMissile("Satanic_Blood",0,0,75,0)     
		Loop
	Death: 
		CTFX BCD 3
		Stop
    }
}

Actor Satanic_HeadRipper
{
	Speed	24
	Height	1
	Radius	1
	Mass	8
	Damage	1
	RenderStyle	Add
	Decal 		BloodSmear
	Alpha		0.8 
	Scale		0.5
	PROJECTILE
	-NOGRAVITY
	+ROCKETTRAIL
	+RIPPER
	States
	{
	Spawn:
		NULL A 4   
		Loop
    Death: 
		NULL A 0
		Stop
    }
}