//------------------------------------------------------------------------------------------------------------------------
//	Cacolich Variant 1
//	
//
//	Taken from ZDoom Monster Pack
//	Sprites by Vader
//	Scripting by TheDarkArchon
//	Modified by M@@@H!aK (death types etc.)
//------------------------------------------------------------------------------------------------------------------------
Actor Satanic_CacoLich : Cacodemon 5013
{
	Health		500
	Speed 		12
	Radius 		31
	Height 		56
	PainChance 	96
	Mass 		500
	DamageFactor NoDamage,	 		0
	PainChance "Turn", 255
	PainChance "Fire", 				0
	PainChance "Posession", 		255
	SeeSound 	"Satanic/Monsters/CacoLich/Sight"
	ActiveSound "Satanic/Monsters/CacoLich/Active"
	PainSound 	"Satanic/Monsters/CacoLich/Pain"
	DeathSound 	"Satanic/Monsters/CacoLich/Death"
	Obituary 	"%o was blasted by the Cacolich"
	MONSTER
    -FRIENDLY
	+NOGRAVITY
	+FLOAT
	+MISSILEMORE
	+MISSILEEVENMORE
	
	States
	{
	Spawn:
		CALI A 0 Thing_Hate(0,669,3)
		CALI A 1 A_Look
		Goto Spawn+1
	See:
		CALI I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto StandardSee
		CALI A 0
		Goto PosessedMove
	PosessedMove:
		CALI A 0 A_JumpIfInventory("Satanic_PosessedFire",1,1)
		Goto PosessedCheckAltFire
		CALI A 0
		Goto PosessedFire
	PosessedCheckAltFire:
		CALI A 0 A_JumpIfInventory("Satanic_PosessedAltFire",1,1)
		Goto PosessedStandardMove
		CALI A 0
		Goto PosessedAltFire
	PosessedFire:
		CALI EG 3
		CALI F 3 A_CustomMissile("Satanic_CacoLichBall_NoSeeker",32.0,0,0.0,2,-pitch)
		CALI A 4
		CALI A 0 A_TakeInventory("Satanic_PosessedFire",1)
		Goto See
	PosessedAltFire:
		CALI E 4
		CALI GFGFGFGFGFGFGFGFGF 1 A_CustomMissile("Satanic_CacoLichFlameFar",32.0,0,0.0,2,-pitch)
		CALI A 8
		CALI A 0 A_TakeInventory("Satanic_PosessedAltFire",1)
		Goto See
	PosessedStandardMove:
		CALI A 1 ACS_Execute(803,0,48,45,9)
		CALI A 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto Spawn+1
		CALI A 0
		Goto See
	StandardSee:
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		CALI A 4 A_Chase
		Loop
	Wander:
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See
		CALI A 4 A_Wander
		Goto See
	Missile:
		CALI B 6 A_FaceTarget
		CALI C 6 A_CustomMissile("Satanic_CacoLichBall", 35, 0, 0)
		CALI D 6 A_FaceTarget
		CALI D 0 A_Jump(16,23)
		CALI EF 5 A_FaceTarget
		CALI GFGFGFGFGFGFGFGFGF 1 A_CustomMissile("Satanic_CacoLichFlameFar", 24, 0, 0)
		CALI FE 5 A_FaceTarget
		CALI E 0
		Goto See	
	Melee:
		CALI EF 5 A_FaceTarget
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 0)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 1)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 2)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 3)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 4)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 5)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 6)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 7)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 8)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 9)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 10)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 12)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 12)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 13)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 14)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 15)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 16)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 17)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 18)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 19)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 20)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 19)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 18)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 17)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 16)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 15)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 14)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 13)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 12)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 11)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 10)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 9)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 8)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 7)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 6)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 5)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 4)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 3)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 2)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 1)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 0)
		CALI G 0 A_SpidRefire
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -1)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -2)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -3)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -4)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -5)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -6)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -7)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -8)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -9)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -10)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -12)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -12)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -13)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -14)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -15)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -16)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -17)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -18)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -19)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -20)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -19)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -18)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -17)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -16)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -15)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -14)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -13)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -12)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -11)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -10)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -9)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -8)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -7)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -6)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -5)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -4)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -3)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -2)
		CALI F 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, -1)
		CALI G 1 A_CustomMissile("Satanic_CacoLichFlame", 24, 0, 0)
		Goto See
	Pain.Posession:
		CALI H 0
		CALI H 0 ACS_ExecuteAlways(791,0,40,0,0)
		CALI H 0 A_GiveInventory("Satanic_IsPosessed",1)
		CALI H 0 Thing_ChangeTID(0,669)
		CALI H 0 ACS_ExecuteAlways(802,0,48,0,0)
		Goto See
	Pain.DrainHealthEver:
		CALI H 0
		CALI H 0 ACS_ExecuteAlways(772,0,4,0,0)	
	Pain.Turn:
		TNT1 A 0 A_PlaySound("Satanic/Weapons/BellRing",CHAN_WEAPON)
		TNT1 A 0 ACS_Execute(824,0,20,0,0)
		CALI H 3
		TNT1 A 0 A_ChangeFlag("Friendly",1)
		CALI I 6 A_Pain
		Goto See
	Pain:
		CALI H 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto Pain+2
		CALI H 0
		Goto See
		CALI H 3
		CALI I 6 A_Pain
		Goto See
	Death:
		CALI I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualDeath
		CALI I 0 ACS_ExecuteAlways(801,0,0,0,0)
		CALI I 0 ChangeCamera(0, 0, 0) 
		Goto ActualDeath
	Death.DrainMana:
		CALI I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualDeathDrainMana
		CALI I 0 ACS_ExecuteAlways(801,0,0,0,0)
		CALI I 0 ChangeCamera(0, 0, 0) 
		Goto ActualDeathDrainMana
	Death.DrainHealthEver:
	Death.DrainHealth:
		CALI I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualDeathDrainHealth
		CALI I 0 ACS_ExecuteAlways(801,0,0,0,0)
		CALI I 0 ChangeCamera(0, 0, 0) 
		Goto ActualDeathDrainHealth
	Death.DemonFire:
	Burn:
		CALI I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualBurn
		CALI I 0 ACS_ExecuteAlways(801,0,0,0,0)
		CALI I 0 ChangeCamera(0, 0, 0) 
		Goto ActualBurn
	ActualDeath:
		CALI J 0
		CALI J 0 A_SetFloorClip
		CALI J 6 A_Scream
		CALI KLMNOPQ 6
		CALI Q 0 A_NoBlocking
		CALI R 6
		CALI S -1
		Stop
	ActualDeathDrainMana:
		CALI J 0 ACS_ExecuteAlways(779,0,12,0,0)
		CALI J 0 A_SetFloorClip
		CALI J 6 A_Scream
		CALI KLMNOPQ 6
		CALI Q 0 A_NoBlocking
		CALI R 6
		CALI S -1
		Stop
	ActualDeathDrainHealth:
		CALI J 0 ACS_ExecuteAlways(772,0,20,0,0)
		CALI J 0 A_SetFloorClip
		CALI J 6 A_Scream
		CALI KLMNOPQ 6
		CALI Q 0 A_NoBlocking
		CALI R 6
		CALI S -1
		Stop
	ActualBurn:
		CLIB J 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		CLIB J 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		CLIB J 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		CLIB J 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		CLIB J 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		CLIB J 0 A_CustomMissile("Satanic_FireStarter",6,Random(-20,20),Random(-360,360),0)         
		CLIB J 0 A_CustomMissile("Satanic_FireStarter",6,Random(-20,20),Random(-360,360),0)
		CLIB J 0 A_SetFloorClip
		CLIB J 6 A_Scream
		CLIB KLMNOPQ 6
		CLIB Q 0 A_NoBlocking
		CLIB R 6
		CLIB SSSSSSSSS 4 A_SpawnItem("Satanic_SmokeSpawner")
		CLIB S 0 A_SpawnItem("Satanic_CacoLichBurnedCorpse")
		Stop
	Raise:
		CALI S 1
		CALI S 1 A_SetInvulnerable
		CALI S 1 A_UnsetSolid
		CALI S 1 A_UnsetShootable
		CALI S 1 ACS_ExecuteAlways(788,0,0,0,0)
		CALI S 1
		Stop
	Raise_Spirit:
		CALI SQOM 6
		CALI M 0 A_SpawnItem("Satanic_RaisedCacodemon")
		Stop
	Raise_ManaRitual:
		CALI S 4
		CALI Q 4
		CALI Q 4 A_SpawnItem("Satanic_HealthSpirit")
		CALI Q 4 ACS_ExecuteAlways(779,0,12,0,0)
		CALI Q 4 A_SpawnItem("Satanic_HealthSpiritExplosion")
		CALI S 4
		CLIB S 0 A_SpawnItem("Satanic_CacoLichBurnedCorpse")
		Stop
	}
}

Actor Satanic_CacoLichBurnedCorpse
{
	Radius 20
	Height 4
	States
	{
	Spawn:
		CLIB S -1
		Stop
	}
}

Actor Satanic_CacoLichBall
{
    Radius 	8
    Height 	6
    Speed 	12
    Damage 	7
	DamageType DemonFire
	RenderStyle Add
	Alpha		0.8
	SeeSound 	"Imp/attack"
	DeathSound 	"Imp/shotx"
	PROJECTILE
	+SEEKERMISSILE
	States
	{
	Spawn:
		CBAL AB 4 BRIGHT A_SeekerMissile(5,15)
		Loop
	Death:
		CBAL CDEFG 6 BRIGHT
		Stop
	}
}

Actor Satanic_CacoLichBall_NoSeeker
{
    Radius 	8
    Height 	6
    Speed 	12
    Damage 	7
	DamageType DemonFire
	RenderStyle Add
	Alpha		0.8
	SeeSound 	"Imp/attack"
	DeathSound 	"Imp/shotx"
	PROJECTILE
	States
	{
	Spawn:
		CBAL AB 4 BRIGHT
		Loop
	Death:
		CBAL CDEFG 6 BRIGHT
		Stop
	}
}

Actor Satanic_CacoLichFlame
{
	Radius 	4
	Height 	6
	Speed 	28
	Damage 	1
	DamageType DemonFire
	RenderStyle Add
	Alpha		0.8
	SeeSound "Satanic/Monsters/CacoFlame/Attack"
	PROJECTILE
	+STRIFEDAMAGE
	States
	{
	Spawn:
		CFIR ABCDEFGHIJKLMOP 1
		Stop
	Death:
		CFIR HIJKLMOP 1
		Stop
	}
}

Actor Satanic_CacoLichFlameFar
{
	Radius 	4
	Height 	6
	Speed 	30
	Damage 	4
	DamageType DemonFire
	RenderStyle Add
	Alpha		0.8
	SeeSound "Satanic/Monsters/CacoFlame/Attack"
	PROJECTILE
	+STRIFEDAMAGE
	States
	{
	Spawn:
		CFIR ABCDEFGHIJKLMOP 1
		Stop
	Death:
		CFIR HIJKLMOP 1
		Stop
	}
}