Actor Satanic_CacodemonDefault : Cacodemon 9004
{  
	SpawnID 19 
	Mass 400
	BloodType "SRGreyBlood"
	BloodColor "C0 C0 C0"
	DamageFactor NoDamage,	 		0
	PainChance "Turn", 255
	PainChance "Fire", 				0
	PainChance "Posession", 		255
	-FRIENDLY
	+MISSILEMORE
	+MISSILEEVENMORE
	States
	{
	Spawn:
		HEAD A 0 Thing_Hate(0,669,3)
		HEAD A 10 A_Look
		Goto Spawn+1
	See:
		HEAD I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto StandardSee
		HEAD A 0
		Goto PosessedMove
	PosessedMove:
		HEAD A 0 A_JumpIfInventory("Satanic_PosessedFire",1,1)
		Goto PosessedStandardMove
		HEAD A 0
		Goto PosessedFire
	PosessedFire:
		HEAD BC 2
		HEAD D 4 A_CustomMissile("Satanic_CacodemonBall",32.0,0,0.0,2,-pitch)
		HEAD A 2
		HEAD A 0 A_TakeInventory("Satanic_PosessedFire",1)
		Goto See
	PosessedStandardMove:
		HEAD A 1 ACS_Execute(803,0,48,45,10)
		HEAD A 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto Spawn+1
		HEAD A 0
		Goto See
	StandardSee:
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		HEAD A 3 A_Chase
		Goto See
	Wander:
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See
		HEAD A 3 A_Wander
		Goto See
	Pain.Posession:
		HEAD E 0
		HEAD E 0 ACS_ExecuteAlways(791,0,20,0,0)
		HEAD E 0 A_GiveInventory("Satanic_IsPosessed",1)
		HEAD E 0 Thing_ChangeTID(0,669)
		HEAD E 0 ACS_ExecuteAlways(802,0,48,0,0)
		Goto See
	Pain.Turn:
		TNT1 A 0 A_PlaySound("Satanic/Weapons/BellRing",CHAN_WEAPON)
		TNT1 A 0 ACS_Execute(824,0,20,0,0)
		HEAD E 3
		TNT1 A 0 A_ChangeFlag("Friendly",1)
		HEAD E 3 A_Pain
		HEAD F 6
		Goto See
	Pain:
		HEAD E 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto Pain+2
		HEAD E 0
		Goto See
		HEAD E 3
		HEAD E 3 A_Pain
		HEAD F 6
		Goto See
	Pain.DrainHealthEver:
		HEAD E 3    				
		HEAD F 0 ACS_ExecuteAlways(772,0,2,0,0)
    	HEAD E 3 A_Pain
		HEAD F 6
    	Goto See
	Death:
		HEAD G 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualDeath
		HEAD G 0 ACS_ExecuteAlways(801,0,0,0,0)
		HEAD G 0 ChangeCamera(0, 0, 0) 
		Goto ActualDeath
	Death.DrainMana:
		HEAD G 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualDeathDrainMana
		HEAD G 0 ACS_ExecuteAlways(801,0,0,0,0)
		HEAD G 0 ChangeCamera(0, 0, 0) 
		Goto ActualDeathDrainMana
	Death.DrainHealthEver:
	Death.DrainHealth:
		HEAD G 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualDeathDrainHealth
		HEAD G 0 ACS_ExecuteAlways(801,0,0,0,0)
		HEAD G 0 ChangeCamera(0, 0, 0) 
		Goto ActualDeathDrainHealth
	Death.DemonFire:
	Burn:
		HEAD G 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualBurn
		HEAD G 0 ACS_ExecuteAlways(801,0,0,0,0)
		HEAD G 0 ChangeCamera(0, 0, 0) 
		Goto ActualBurn
	ActualDeath:
		HEAD G 8
		HEAD H 8 A_Scream
		HEAD IJ 8
		HEAD K 8 A_NoBlocking
		HEAD L -1 A_SetFloorClip
		Stop

	
		ActualDeathDrainMana:
				HEAD H 0 A_Scream
				HEAD H 0 A_Fall
				HEAD H 0 ACS_ExecuteAlways(779,0,6,0,0)
				HEAD HIJK 5
				HEAD L -1
			Stop
    
		ActualDeathDrainHealth:
				HEAD H 0 A_Scream
				HEAD H 0 A_Fall
				HEAD H 0 ACS_ExecuteAlways(772,0,10,0,0)
				HEAD HIJK 5
				HEAD L -1
			Stop
    
		ActualBurn:
				HEAB H 0 A_Scream
				HEAB H 0 A_Fall
				HEAB H 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
				HEAB H 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
				HEAB H 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
				HEAB H 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
				HEAB H 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
				HEAB H 0 A_CustomMissile("Satanic_FireStarter",6,Random(-20,20),Random(-360,360),0)         
				HEAB H 0 A_CustomMissile("Satanic_FireStarter",6,Random(-20,20),Random(-360,360),0)
				HEAB HIJK 5
				HEAB LLLLLLLLL 4 A_SpawnItem("Satanic_SmokeSpawner")
				HEAB L 0 A_SpawnItem("Satanic_CacodemonBurnedCorpse")
			Stop 
			
		Raise:
				HEAD L 1
				HEAD L 1 A_SetInvulnerable
				HEAD L 1 A_UnsetSolid
				HEAD L 1 A_UnsetShootable
				HEAD L 1 ACS_ExecuteAlways(788,0,0,0,0)
				HEAD L 1
			Stop
		
		Raise_Spirit:
				HEAD LKJI 6
				HEAD H 0 A_SpawnItem("Satanic_RaisedCacodemon")
			Stop
			
		Raise_ManaRitual:
				HEAD L 4
				HEAD K 4
				HEAD K 4 A_SpawnItem("Satanic_HealthSpirit")
				HEAD K 4 ACS_ExecuteAlways(779,0,6,0,0)
				HEAD K 4 A_SpawnItem("Satanic_HealthSpiritExplosion")
				HEAD L 4
				HEAB L 0 A_SpawnItem("Satanic_CacodemonBurnedCorpse")
			Stop
	}
}

Actor Satanic_CacodemonBall : CacodemonBall Replaces CacodemonBall
{
	Speed 24
	Decal CacoScorch
	DamageType DemonFire
}

Actor Satanic_CacodemonBurnedCorpse
{
	Radius 20
	Height 4
	
	States
	{
		Spawn:
				HEAB L -1
			Stop
	}
}
//------------------------------------------------------------------------------------------------------------------------