//------------------------------------------------------------------------------------------------------------------------
//	Cacodemon
//
//	DECORATE/Recolors By: jimmy91        
//  Projectile Sprites by: Eriance, Vader
//
//	Modified by M@@@H!aK (death types etc.)
//------------------------------------------------------------------------------------------------------------------------
Actor Satanic_Agathodemon : Cacodemon 5014
{
	Skip_Super
	Radius 	31
	Height 	64
	Health 	650
	Mass 	1000
	Speed 	12
	PainChance 160
	DamageFactor NoDamage,	 		0
	PainChance "Turn", 255
	PainChance "Fire", 				0
	PainChance "Posession", 		255
	MONSTER
	-FRIENDLY
	+FLOAT
	+NOGRAVITY
	+MISSILEMORE
	+MISSILEEVENMORE
	SeeSound 	"caco/sight"
	PainSound 	"caco/pain"
	DeathSound 	"caco/death"
	ActiveSound "caco/active"
	AttackSound "caco/melee"
	MeleeSound 	"imp/claw"
	MeleeDamage 12
	MissileType Satanic_AgathoDemonFireBall
	MissileHeight 24
	Obituary "%o was blasted by an agathodemon."
	HitObituary "%o got caught in an agathodemon's jaws."
	States
	{
	Spawn:
		AGAH A 0 Thing_Hate(0,669,3)
		AGAH A 1 A_Look
		Goto Spawn+1
	See:
		AGAH I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto StandardSee
		AGAH A 0
		Goto PosessedMove
	PosessedMove:
		AGAH A 0 A_JumpIfInventory("Satanic_PosessedFire",1,1)
		Goto PosessedStandardMove
		AGAH A 0
		Goto PosessedFire
	PosessedFire:
		AGAH BC 4
		AGAH D 4 Bright A_CustomMissile("Satanic_AgathoDemonFireBall",32.0,0,0.0,2,-pitch)
		AGAH A 0 A_TakeInventory("Satanic_PosessedFire",1)
		Goto See
	PosessedStandardMove:
		AGAH A 1 ACS_Execute(803,0,48,45,16)
		AGAH A 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto Spawn+1
		AGAH A 0
		Goto See
	StandardSee:
		AGAH D 0 A_JumpIfInventory("Satanic_AgathodemonStealthCheck",1,1)
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		AGAH A 3 A_Chase
		Loop
	Wander:
		TNT1 A 0 A_JumpIfInventory("Satanic_AgathodemonStealthCheck",1,1)
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See
		AGAH A 3 A_Wander
		Goto See
	Melee:
		AGAH BC 5 A_FaceTarget
		AGAH D 6 A_MeleeAttack
		Goto See
	Missile:
		AGAH D 0 A_Jump(55,"Stealth")
		AGAH D 0 A_Jump(128,"Fireball")
		Goto Tracer
	Stealth:
		AGAH D 0 A_JumpIfInventory("Satanic_AgathodemonStealthCheck",1,16)
		AGAH BC 5 Bright A_FaceTarget
		AGAH D 2 Bright A_PlaySound("Satanic/Monsters/AgathoDemon/Stealth")
		AGAH D 0 A_UnSetShootable
		AGAH DDDDDDDDD 2 Bright A_FadeOut(0.1)
		AGAH D 0 A_SetShootable
		AGAH D 0 A_GiveInventory("Satanic_AgathodemonStealthCheck",1)
		Goto See
		AGAH BC 5 Bright A_FaceTarget
		AGAH D 2 Bright A_PlaySound("Satanic/Monsters/AgathoDemon/Stealth")
		AGAH D 0 A_UnSetShootable
		AGAH DDDDDDDDD 2 Bright A_FadeIn(0.1)
		AGAH D 0 A_SetShootable
		AGAH A 0 A_TakeInventory("Satanic_AgathodemonStealthCheck",1)
		Goto See
	Fireball:
		AGAH BC 4 A_FaceTarget
		AGAH D 5 Bright A_MissileAttack
		AGAH D 0 A_Jump(70,1)
		Goto See
		AGAH D 0
		Goto Tracer
	Tracer:
		AGAH BC 4 A_FaceTarget
		AGAH D 0 A_CustomMissile("Satanic_AgathoDemonTracer",22,0,-30,0)
		AGAH D 5 A_CustomMissile("Satanic_AgathoDemonTracer",22,0,30,0)
		AGAH D 0 A_Jump(90,1)
		Goto See
		AGAH D 0
		Goto Fireball
	Pain.DrainHealthEver:
		AGAH E 0
		AGAH E 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)
		AGAH E 3
		TNT1 A 0 A_ChangeFlag("Friendly",1)
		AGAH E 1 A_Pain
		AGAH F 4
		Goto See
	Pain:
		AGAH E 3
		AGAH E 1 A_Pain
		AGAH F 4
		Goto See
	Pain.Posession:
		AGAH E 0
		AGAH E 0 ACS_ExecuteAlways(791,0,40,0,0)
		AGAH E 0 A_GiveInventory("Satanic_IsPosessed",1)
		AGAH E 0 Thing_ChangeTID(0,669)
		AGAH E 0 ACS_ExecuteAlways(802,0,48,0,0)
		Goto See
	Death:
		AGAH I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualDeath
		AGAH I 0 ACS_ExecuteAlways(801,0,0,0,0)
		AGAH I 0 ChangeCamera(0, 0, 0) 
		Goto ActualDeath
	Death.DrainMana:
		AGAH I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualDeathDrainMana
		AGAH I 0 ACS_ExecuteAlways(801,0,0,0,0)
		AGAH I 0 ChangeCamera(0, 0, 0) 
		Goto ActualDeathDrainMana
	Death.DrainHealthEver:
	Death.DrainHealth:
		AGAH I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualDeathDrainHealth
		AGAH I 0 ACS_ExecuteAlways(801,0,0,0,0)
		AGAH I 0 ChangeCamera(0, 0, 0) 
		Goto ActualDeathDrainHealth
	Death.DemonFire:
	Burn:
		AGAH I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualBurn
		AGAH I 0 ACS_ExecuteAlways(801,0,0,0,0)
		AGAH I 0 ChangeCamera(0, 0, 0) 
		Goto ActualBurn
	ActualDeath:
		AGAH G 8
		AGAH H 8 A_Scream
		AGAH I 8
		AGAH J 8 A_SetTranslucent(1.0,0)
		AGAH K 8 A_Fall
		AGAH L -1 A_SetFloorClip
		Stop
	ActualBurn:
		BGAH G 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		BGAH G 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		BGAH G 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		BGAH G 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		BGAH G 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		BGAH G 0 A_CustomMissile("Satanic_FireStarter",6,Random(-20,20),Random(-360,360),0)         
		BGAH G 0 A_CustomMissile("Satanic_FireStarter",6,Random(-20,20),Random(-360,360),0)
		BGAH G 8
		BGAH H 8 A_Scream
		BGAH I 8
		BGAH J 8 A_SetTranslucent(1.0,0)
		BGAH K 8 A_Fall
		BGAH LLLLLLLLL 4 A_SpawnItem("Satanic_SmokeSpawner")
		BGAH L 0 A_SpawnItem("Satanic_AgathoDemonBurnedCorpse")
		Stop
	ActualDeathDrainMana:
		AGAH G 8
		AGAH G 0 ACS_ExecuteAlways(779,0,12,0,0)
		AGAH H 8 A_Scream
		AGAH I 8
		AGAH J 8 A_SetTranslucent(1.0,0)
		AGAH K 8 A_Fall
		AGAH L -1 A_SetFloorClip
		Stop
	ActualDeathDrainHealth:
		AGAH G 8
		AGAH G 0 ACS_ExecuteAlways(772,0,20,0,0)
		AGAH H 8 A_Scream
		AGAH I 8
		AGAH J 8 A_SetTranslucent(1.0,0)
		AGAH K 8 A_Fall
		AGAH L -1 A_SetFloorClip
		Stop
	Raise:
		AGAH L 1
		AGAH L 1 A_SetInvulnerable
		AGAH L 1 A_UnsetSolid
		AGAH L 1 A_UnsetShootable
		AGAH L 1 ACS_ExecuteAlways(788,0,0,0,0)
		AGAH L 1 
		Stop
	Raise_Spirit:
		AGAH LKJI 6
		AGAH H 0 A_SpawnItem("Satanic_RaisedCacodemon")
		Stop
	Raise_ManaRitual:
		AGAH L 4
		AGAH K 4
		AGAH K 4 A_SpawnItem("Satanic_HealthSpirit")
		AGAH K 4 ACS_ExecuteAlways(779,0,12,0,0)
		AGAH K 4 A_SpawnItem("Satanic_HealthSpiritExplosion")
		AGAH L 4
		AGAH L 0 A_SpawnItem("Satanic_AgathoDemonBurnedCorpse")
		Stop
	}
}

Actor Satanic_AgathoDemonBurnedCorpse
{
	Radius 20
	Height 4
	States
	{
	Spawn:
		BGAH L -1
		Stop
	}
}

Actor Satanic_AgathodemonStealthCheck : Inventory
{
	Inventory.Amount 1
	Inventory.MaxAmount 1
}

Actor Satanic_AgathoDemonFireBall : DoomImpBall //trail projectile
{
	Speed 24
	Damage 9
	Decal DoomImpScorch
	DamageType DemonFire
	States
	{
	Spawn:
		TNT1 A 2 Bright A_SpawnItemEx("Satanic_AgathoDemonFX", 0, 0, 0, 0, 0, 0, 0, 128)
		Loop
	Death:
		AGFX GHIJKL 3 Bright
		Stop
	}
}

Actor Satanic_AgathoDemonFX //trail effect
{
	Scale 0.75
	RenderStyle Add
	+NOGRAVITY
	States
	{
	Spawn:
		AGFX ABCDEF 2 Bright
		Stop
	}
}

Actor Satanic_AgathoDemonTracer : DoomImpBall //homing fireball
{
	+SEEKERMISSILE
	Speed 18
	Damage 4
	Decal BaronScorch
	DamageType DemonFire
	States
	{
	Spawn:
		AGFB ABCABCABCABCABCABCABCABCABCABCABCABC 4 Bright A_Tracer2
	Death:
		AGFB DEFG 4 Bright
		Stop
	}
}