//------------------------------------------------------------------------------------------------------------------------
//	Afrit
//
//	Taken from ZDoom Monster Pack
//	Created by Nanami
//	Modified by M@@@H!aK (death types, etc)
//------------------------------------------------------------------------------------------------------------------------
Actor Satanic_Afrit : Satanic_BaronOfHell Replaces BaronOfHell 5020
{ 
	SpawnID 3
	Health 		1000 
	Speed 		8
	Radius 		24
	Height 		72
	PainChance 	50
	Mass 		500
	MeleeDamage 	10 
	MissileType 	"Satanic_AfritBall"
	MissileHeight 	44
	PainChance "Fire", 				0
	PainChance "Posession", 		255
	ReactionTime 8
	Obituary 	"%o was scorched by an Afrit" 
	HitObituary "%o found the Afrit too hot to handle." 
	SeeSound 	"baron/sight"
	PainSound 	"baron/pain"
	DeathSound 	"baron/death"
	ActiveSound "baron/active"
	MeleeSound 	"baron/melee"
	DamageFactor NoDamage,	0
	DamageFactor Fire, 		0
	MONSTER
	+NORADIUSDMG
	+NOGRAVITY
	+FLOATBOB
	+FLOAT
	States 
	{ 
	Spawn:
		FRIT A 0 Thing_Hate(0,669,3)
		TNT1 A 0 A_CheckSight("SpawnNoLight")
		FRIT ABCD 4 Bright light ("afritstandard") A_Look 
		Loop
	SpawnNoLight:
		FRIT ABCD 4 Bright A_Look 
		Goto Spawn
	See:
		FRIT A 0 A_CustomMissile("Satanic_OrbitComet",44,0,0)
		FRIT A 0 A_CustomMissile("Satanic_OrbitComet2",44,0,180)
		FRIT I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto StandardSee
		FRIT A 0
		Goto PosessedMove
	PosessedMove:
		FRIT A 0 A_JumpIfInventory("Satanic_PosessedFire",1,1)
		Goto PosessedCheckAltFire
		FRIT A 0
		Goto PosessedFire
	PosessedCheckAltFire:
		FRIT A 0 A_JumpIfInventory("Satanic_PosessedAltFire",1,1)
		Goto PosessedStandardMove
		FRIT A 0
		Goto PosessedAltFire
	PosessedFire:
		FRIT E 0 ACS_ExecuteAlways(805,0,1,0,0)
		FRIT E 4 
		FRIT E 0 ACS_ExecuteAlways(805,0,2,0,0)
		FRIT F 4 
		FRIT E 0 ACS_ExecuteAlways(805,0,3,0,0)
		FRIT G 6 A_CustomMissile("Satanic_Comet",56.0,12,0.0,2,-pitch)
		FRIT E 0 ACS_ExecuteAlways(805,0,2,0,0)
		FRIT E 4 
		FRIT E 0 ACS_ExecuteAlways(805,0,0,0,0)
		FRIT E 0 A_TakeInventory("Satanic_PosessedFire",1)
		Goto See+2
	PosessedAltFire:
		FRIT E 0 ACS_ExecuteAlways(805,0,1,0,0)
		FRIT E 4 
		FRIT E 0 ACS_ExecuteAlways(805,0,2,0,0)
		FRIT F 4 
		FRIT E 0 ACS_ExecuteAlways(805,0,3,0,0)
		FRIT G 4 A_CustomMissile("Satanic_AfritFireStarter",44.0,12,0.0,2,-pitch) //A_CustomMissile("Satanic_Comet",56.0,12,0.0,2,-pitch)
		FRIT E 0 ACS_ExecuteAlways(805,0,2,0,0)
		FRIT E 4 
		FRIT E 0 ACS_ExecuteAlways(805,0,0,0,0)
		FRIT E 0 A_TakeInventory("Satanic_PosessedAltFire",1)
		Goto See+2
	PosessedStandardMove:
		FRIT AAAAAABBBBBBCCCCCCDDDDDD 1 ACS_Execute(803,0,64,45,12)
		FRIT A 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto Spawn+1
		FRIT A 0
		Goto See+2
	StandardSee:
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		FRIT A 2 Bright light ("afritstandard") A_Chase 
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		FRIT A 2 Bright light ("afritstandard") A_Chase 
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		FRIT B 2 Bright light ("afritstandard") A_Chase 
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		FRIT B 2 Bright light ("afritstandard") A_Chase 
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		FRIT C 2 Bright light ("afritstandard") A_Chase 
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		FRIT C 2 Bright light ("afritstandard") A_Chase 
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		FRIT D 2 Bright light ("afritstandard") A_Chase 
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		FRIT D 2 Bright light ("afritstandard") A_Chase 
		Goto See+2
	Wander:
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See+2
		FRIT A 2 Bright light ("afritstandard") A_Wander 
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See+2
		FRIT A 2 Bright light ("afritstandard") A_Wander 
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See+2
		FRIT B 2 Bright light ("afritstandard") A_Wander 
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See+2
		FRIT B 2 Bright light ("afritstandard") A_Wander 
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See+2
		FRIT C 2 Bright light ("afritstandard") A_Wander 
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See+2
		FRIT C 2 Bright light ("afritstandard") A_Wander 
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See+2
		FRIT D 2 Bright light ("afritstandard") A_Wander 
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See+2
		FRIT D 2 Bright light ("afritstandard") A_Wander 
		Goto See+2
	Melee:
		FRIT S 0 A_Jump(64,4)
		FRIT ST 6 Bright light ("afritattack") A_FaceTarget
		FRIT U 6 Bright light ("afritattack") A_ComboAttack
		Goto See +2
		FRIT E 6 Bright light ("afritattack") A_FaceTarget
		FRIT F 6 Bright light ("afritattack") A_CustomMissile("Satanic_AfritFireStarter",44,0,0)
		FRIT G 6 Bright light ("afritattack") A_FaceTarget
		Goto See +2
	Missile:
		FRIT S 0 A_Jump(64,8)
		FRIT S 0 A_Jump(128,4)
		FRIT ST 6 Bright light ("afritattack") A_FaceTarget
		FRIT U 6 Bright light ("afritattack") A_ComboAttack
		Goto See +2
		FRIT EF 6 Bright light ("afritattack") A_FaceTarget
		FRIT G 6 Bright light ("afritattack") A_CustomMissile("Satanic_Comet",44,0,0)
		Goto See +2
		FRIT E 6 Bright light ("afritattack") A_FaceTarget
		FRIT F 6 Bright light ("afritattack") A_CustomMissile("Satanic_AfritFireStarter",44,0,0)
		FRIT G 6 Bright light ("afritattack") A_FaceTarget
		Goto See +2
	Pain.Posession:
		FRIT H 0
		FRIT H 0 ACS_ExecuteAlways(791,0,40,0,0)
		FRIT H 0 A_GiveInventory("Satanic_IsPosessed",1)
		FRIT H 0 Thing_ChangeTID(0,669)
		FRIT H 0 ACS_ExecuteAlways(802,0,64,0,0)
		Goto See+2
	Pain.DrainHealthEver:
		FRIT H 4 BRIGHT light ("afritstandard")
		FRIT H 0 ACS_ExecuteAlways(772,0,6,0,0)
    	FRIT H 4 BRIGHT light ("afritstandard") A_Pain
    	Goto See+2	
	Pain: 
		FRIT H 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto Pain+2
		FRIT H 0
		Goto See+2
		FRIT HH 4 Bright light ("afritstandard") A_Pain 
		Goto See +2
	Death:
		FRIT I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualDeath
		FRIT I 0 ACS_ExecuteAlways(801,0,0,0,0)
		FRIT I 0 ChangeCamera(0,0,0) 
		Goto ActualDeath
	Death.DrainMana:
		FRIT I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualDeathDrainMana
		FRIT I 0 ACS_ExecuteAlways(801,0,0,0,0)
		FRIT I 0 ChangeCamera(0,0,0) 
		Goto ActualDeathDrainMana
	Death.DrainHealthEver:
	Death.DrainHealth:
		FRIT I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualDeathDrainHealth
		FRIT I 0 ACS_ExecuteAlways(801,0,0,0,0)
		FRIT I 0 ChangeCamera(0, 0, 0) 
		Goto ActualDeathDrainHealth
	Death.DemonFire:
		Burn:
		FRIT I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualBurn
		FRIT I 0 ACS_ExecuteAlways(801,0,0,0,0)
		FRIT I 0 ChangeCamera(0,0,0) 
		Goto ActualBurn
	ActualDeath: 
		FRIT I 0 A_SpawnItem("Satanic_SmokeSpawner")
		FRIT I 0 Bright A_NoGravity
		FRIT I 6 Bright light ("afritdeathframei") A_Scream
		FRIT J 5 Bright light ("afritdeathframejtol") A_NoBlocking
		FRIT KL 4 Bright light ("afritdeathframejtol")
		FRIT M 4 BRIGHT light ("afritdeathframem")
		FRIT N 4 BRIGHT light ("afritdeathframen")
		FRIT O 4 BRIGHT light ("afritdeathframeop")
		FRIT P 4 BRIGHT light ("afritdeathframei")
		FRIT Q 4 BRIGHT 
		FRIT R 4 Bright 
		FRIT R 0 A_BossDeath
		Stop 
	ActualDeathDrainMana:
		FRIT I 0 A_SpawnItem("Satanic_SmokeSpawner")
		FRIT I 0 ACS_ExecuteAlways(779,0,18,0,0)
		FRIT I 0 Bright A_NoGravity
		FRIT I 6 Bright light ("afritdeathframei") A_Scream
		FRIT J 5 Bright light ("afritdeathframejtol") A_NoBlocking
		FRIT KL 4 Bright light ("afritdeathframejtol")
		FRIT M 4 BRIGHT light ("afritdeathframem")
		FRIT N 4 BRIGHT light ("afritdeathframen")
		FRIT O 4 BRIGHT light ("afritdeathframeop")
		FRIT P 4 BRIGHT light ("afritdeathframei")
		FRIT Q 4 BRIGHT 
		FRIT R 4 Bright 
		FRIT R 0 A_BossDeath
		Stop
	ActualDeathDrainHealth:
		FRIT I 0 A_SpawnItem("Satanic_SmokeSpawner")
		FRIT I 0 ACS_ExecuteAlways(772,0,30,0,0)
		FRIT I 0 Bright A_NoGravity
		FRIT I 6 Bright light ("afritdeathframei") A_Scream
		FRIT J 5 Bright light ("afritdeathframejtol") A_NoBlocking
		FRIT KL 4 Bright light ("afritdeathframejtol")
		FRIT M 4 BRIGHT light ("afritdeathframem")
		FRIT N 4 BRIGHT light ("afritdeathframen")
		FRIT O 4 BRIGHT light ("afritdeathframeop")
		FRIT P 4 BRIGHT light ("afritdeathframei")
		FRIT Q 4 BRIGHT 
		FRIT R 4 Bright 
		FRIT R 0 A_BossDeath
		Stop
	ActualBurn:
		FRIT I 0 A_SpawnItem("Satanic_SmokeSpawner")
		FRIT I 0 A_CustomMissile("Satanic_FireStarter",6,Random(-20,20),Random(-360,360),0)         
		FRIT I 0 A_CustomMissile("Satanic_FireStarter",6,Random(-20,20),Random(-360,360),0)
		FRIT I 0 Bright A_NoGravity
		FRIT I 6 Bright light ("afritdeathframei") A_Scream
		FRIT J 5 Bright light ("afritdeathframejtol") A_NoBlocking
		FRIT KL 4 Bright light ("afritdeathframejtol")
		FRIT M 4 BRIGHT light ("afritdeathframem")
		FRIT N 4 BRIGHT light ("afritdeathframen")
		FRIT O 4 BRIGHT light ("afritdeathframeop")
		FRIT P 4 BRIGHT light ("afritdeathframei")
		FRIT Q 4 BRIGHT 
		FRIT R 4 Bright 
		FRIT R 0 A_BossDeath
		Stop
   } 
}

Actor Satanic_Comet
{
	Radius 6
	Height 8
    Speed 18
    Damage 5
	ExplosionDamage 64
    ExplosionRadius 96
	DamageType DemonFire
	Scale 0.55
	MissileType 	Satanic_CometTail
    MissileHeight 	0
	SeeSound 	"Satanic/Monsters/Afrit/Comet/Launch"
    DeathSound 	"Satanic/Monsters/Afrit/Comet/Explosion"
	PROJECTILE
	States
    {
	Spawn:
		COMT AAAABBBBCCCC 1 Bright A_MissileAttack
		Loop
	Death:
		COMT D 2 Bright A_CustomMissile("Satanic_CometDeathGlow",0,0,0)
		COMT D 1 A_Explode
		COMT E 3 Bright A_SpawnItem("Satanic_SmokeSpawner")
		COMT E 0 A_CustomMissile("Satanic_CometDeath",0,0,0)
		Stop
    }
}

Actor Satanic_CometTail
{
	RenderStyle Add
	Alpha 		0.4
	PROJECTILE
    +NOCLIP
    States
    {
	Spawn:
		FRTB ABCDEFGHI 1 Bright
		Stop
    }
}

Actor Satanic_CometDeath
{
    RenderStyle Add
	Alpha		0.7
	PROJECTILE
    +NOCLIP
    States
    {
	Spawn:
		COMT FGHI 3 Bright
		Stop
    }
}

Actor Satanic_CometDeathGlow : Satanic_CometTail
{
	Scale 2.0
    Alpha 0.6
	States
    {
	Spawn:
		FRTB ABCDEFGHI 3 Bright
		Stop
    }
}

Actor Satanic_OrbitCometTail : Satanic_CometTail
{
    Scale 0.5
}

Actor Satanic_OrbitComet : Satanic_Comet
{
    SeeSound ""
	Scale 0.28
    Speed 5
	MissileType 	Satanic_OrbitCometTail
    MissileHeight 	0
    +NOCLIP
    States
    {
	Spawn:
		COMT AABBCC 1 Bright A_MissileAttack
		COMT A 0 A_CustomMissile("Satanic_OrbitComet",0,0,75)
		COMT A 0 A_MissileAttack
		Stop
    }
}

Actor Satanic_OrbitComet2 : Satanic_OrbitComet
{
    MissileType 	Satanic_OrbitCometTail
    MissileHeight 	0
	States
    {
	Spawn:
		COMT AABBCC 1 Bright A_MissileAttack
		COMT A 0 A_CustomMissile("Satanic_OrbitComet2",0,0,-75)
		COMT A 0 A_MissileAttack
		Stop
    }
}

Actor Satanic_AfritBall
{
	Radius 	6
    Height 	8
    Speed 	24
    Damage 	8
	Decal CacoScorch
	DamageType DemonFire
	RenderStyle Add
    Alpha		0.8
	SeeSound 	"imp/attack"
    DeathSound 	"imp/shotx"
	PROJECTILE
    States
    {
	Spawn:
		FRTM AB 5 Bright
		Loop
	Death:
		FRTM C 0 A_SpawnItem("Satanic_SmokeSpawner")
		FRTM CDE 6 Bright
		Stop
    }
}

Actor Satanic_AfritFire
{
    Scale			2.5
    Speed			1
    Damage			4
	ExplosionDamage	4
	ExplosionRadius	64
	RenderStyle	Add
    DamageType DemonFire
	Alpha		0.5
	DamageType Fire
    DeathSound "Satanic/Miscellaneous/Flame"
	+STRIFEDAMAGE
	+NOCLIP
    +MISSILE
    +DROPOFF
    +RANDOMIZE
	+BLOODLESSIMPACT 
	States
    {
	Spawn:
		NULL A 8
		FRTF A 0 A_Jump(128,2)	
		FRTF A 3 Bright A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		FRTF BC 3
		FRTF C 0 A_Jump(191,4)
		FRTF C 0 A_CustomMissile("Satanic_AfritFire",0,24,0)
		FRTF C 0 A_CustomMissile("Satanic_AfritFire",0,0,0)
		FRTF C 0 A_CustomMissile("Satanic_AfritFire",0,-24,0)
		FRTF DEFGHIJKLMNO 2 Bright A_Detonate
		FRTF O 0 A_Scream
		Stop
	}
}

Actor Satanic_AfritFireSpreader
{
    Speed	2
    Damage	0
	+NOCLIP
    +MISSILE
    +DROPOFF
	+BLOODLESSIMPACT 
	States
    {
	Spawn:
		NULL A 5 A_CustomMissile("Satanic_AfritFire",0,24,0)
		NULL A 5 A_CustomMissile("Satanic_AfritFire",0,0,0)
		NULL A 5 A_CustomMissile("Satanic_AfritFire",0,16,0)
		NULL A 5 A_CustomMissile("Satanic_AfritFire",0,-16,0)
		NULL A 5 A_CustomMissile("Satanic_AfritFire",0,-24,0)
		Stop
	}
}

Actor Satanic_AfritFireStarter
{
    Speed 		8
    Damage 		0
    DeathSound	"Satanic/Miscellaneous/Flame"
	+NOBLOCKMAP
    +MISSILE
    +DROPOFF
	+BLOODLESSIMPACT 
	States
    {
	Spawn:
		NULL A 1
		Loop
	Death:
		NULL A 0 Bright A_CustomMissile("Satanic_AfritFireSpreader",0,Random(-32,32),Random(-360,360))
		NULL A 0 Bright A_CustomMissile("Satanic_AfritFireSpreader",0,Random(-32,32),Random(-360,360))
		NULL A 0 Bright A_CustomMissile("Satanic_AfritFireSpreader",0,Random(-32,32),Random(-360,360))
		NULL A 0 A_Scream
		Stop
	}
}

ACTOR Runner_Afrit : Satanic_Afrit
{
	DropItem "LargeHeartHealth" 16
}