//------------------------------------------------------------------------------------------------------------------------
//	VoidDarkImp
//
//
//	Taken from ZDoom Monster Pack
//	Created by Cyb
//	Sprites by Nanami
//	Modified by M@@@H!aK (like the previous one - death types and some minor tuning)
//------------------------------------------------------------------------------------------------------------------------
Actor Satanic_VoidDarkImp : DoomImp 5007
{
	Health 		144
    Radius 		20
    Height 		42
    Speed 		8
    PainChance 	200
	Mass 300
	MissileType Satanic_DarkNormal
    MeleeDamage 3
	SeeSound	"imp/sight"
    PainSound	"imp/pain"
    DeathSound	"imp/death"
    ActiveSound "imp/active"
    MeleeSound	"imp/melee"
	Obituary	"%o was cursed by a dark imp."
    HitObituary	"%o was touched by a dark imp."
	DamageFactor NoDamage,	 		0
	PainChance "Turn", 255
	PainChance "Fire", 				0
	PainChance "Posession", 		255
    MONSTER 
    -FRIENDLY
	+FLOORCLIP
	+MISSILEMORE
	+MISSILEEVENMORE
    States
    {
	Spawn:
		DRKI A 0 Thing_Hate(0,669,3)
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI A 10 A_Look
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI B 10 A_Look
		Goto Spawn+1
	See:
		DRKI I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto StandardSee
		DRKI A 0
		Goto PosessedMove
	PosessedMove:
		DRKI A 0 A_JumpIfInventory("Satanic_PosessedFire",1,1)
		Goto PosessedStandardMove
		DRKI A 0
		Goto PosessedFire
	PosessedFire:
		DRKI E 0 ACS_ExecuteAlways(805,0,0,0,0)
		DRKI E 2
		DRKI E 0 ACS_ExecuteAlways(805,0,1,0,0)
		DRKI F 2 
		DRKI E 0 ACS_ExecuteAlways(805,0,2,0,0)
		DRKI G 3 A_CustomMissile("Satanic_DarkNormal",32.0,12,0.0,2,-pitch)
		DRKI E 0 ACS_ExecuteAlways(805,0,3,0,0)
		DRKI E 2
		DRKI E 0 ACS_ExecuteAlways(805,0,0,0,0)
		DRKI E 0 A_TakeInventory("Satanic_PosessedFire",1)
		Goto See
	PosessedStandardMove:
		DRKI AAAAAABBBBBBCCCCCCDDDDDD 1 ACS_Execute(803,0,48,30,3)
		DRKI A 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto Spawn+1
		DRKI A 0
		Goto See
	StandardSee:
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI AA 3 A_Chase
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI BB 3 A_Chase
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI CC 3 A_Chase
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI DD 3 A_Chase
		Goto See
	Wander:
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI AA 3 A_Wander
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI BB 3 A_Wander
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI CC 3 A_Wander
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI DD 3 A_Wander
		Goto See
	Melee:
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI E 8 A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI F 8 A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI G 6 A_ComboAttack
		Goto See
	Missile:
		TNT1 A 0 A_Jump(32,"Seeker")
	Normal:	
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI E 8 A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI F 8 A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI G 6 A_CustomMissile("Satanic_DarkNormal", 32, 0, 0)
		TNT1 A 0 A_Jump(64,"See")
	Strong:	
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI E 8 A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI F 8 A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI G 6 A_CustomMissile("Satanic_DarkStrong", 32, 0, 0)
		TNT1 A 0 A_Jump(64,"See")
		Goto Normal
	Seeker:
		TNT1 A 0 A_JumpIfCloser(192,"Missile")
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI E 8 A_FaceTarget
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget10",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI F 8 A_FaceTarget
		DRKI G 6 A_CustomMissile("Satanic_DarkSeeker", 32, 0, 0)
		Goto See
	Pain.Posession:
		DRKI H 0
		DRKI H 0 ACS_ExecuteAlways(791,0,5,0,0)
		DRKI H 0 A_GiveInventory("Satanic_IsPosessed",1)
		DRKI H 0 Thing_ChangeTID(0,669)
		DRKI H 0 ACS_ExecuteAlways(802,0,48,0,0)
		Goto See
	Pain.Bludgeon:	
		DRKI H 0 ThrustThing(45,15,0)
		DRKI H 3
		DRKI H 3 A_Pain
		Goto See
	Pain.DrainHealthEver:
		DRKI H 0
		DRKI H 0 ACS_ExecuteAlways(772,0,1,0,0)	
	Pain:
		DRKI H 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto Pain+2
		DRKI H 0
		Goto See
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI H 2
		TNT1 A 0 A_SpawnItemEx("ImpHeadTarget",0,0,42,velx,vely,velz,0,SXF_SETMASTER)
		DRKI H 2 A_Pain
		Goto See
	Pain.Turn:
		TNT1 A 0 A_PlaySound("Satanic/Weapons/BellRing",CHAN_WEAPON)
		TNT1 A 0 ACS_Execute(824,0,20,0,0)
		DRKI H 2
		TNT1 A 0 A_ChangeFlag("Friendly",1)
		DRKI H 2 A_Pain
		Goto See
	Death:
		DRKI I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualDeath
		DRKI I 0 ACS_ExecuteAlways(801,0,0,0,0)
		DRKI I 0 ChangeCamera(0, 0, 0) 
		Goto ActualXDeath
	Death.BoomHeadshot:
		TNT1 AAAA 0 A_GiveToTarget("DrainedHealth",1)
		TNT1 A 0 A_XScream
		DMPH A 12 A_SpawnItemEx("SRBloodFountain",0,0,42,velx,vely,velz,0)
		DMPH A 12 A_SpawnItemEx("SRBloodFountain",0,0,42,velx,vely,velz,0)
		DMPH A 12 A_SpawnItemEx("SRBloodFountain",0,0,42,velx,vely,velz,0)
		DMPH B 8 
		DMPH C 6
		DMPH D 6 A_Fall
		DRKI M -1
		Stop
	XDeath:
		DRKI I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualXDeath
		DRKI I 0 ACS_ExecuteAlways(801,0,0,0,0)
		DRKI I 0 ChangeCamera(0, 0, 0) 
		Goto ActualXDeath
	Death.DrainMana:
		DRKI I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualDeathDrainMana
		DRKI I 0 ACS_ExecuteAlways(801,0,0,0,0)
		DRKI I 0 ChangeCamera(0, 0, 0) 
		Goto ActualDeathDrainMana
	Death.DrainHealthEver:
	Death.DrainHealth:
		DRKI I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualDeathDrainHealth
		DRKI I 0 ACS_ExecuteAlways(801,0,0,0,0)
		DRKI I 0 ChangeCamera(0, 0, 0) 
		Goto ActualDeathDrainHealth
	Death.DemonFire:
	Burn:
		DRKI I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualBurn
		DRKI I 0 ACS_ExecuteAlways(801,0,0,0,0)
		DRKI I 0 ChangeCamera(0, 0, 0) 
		Goto ActualBurn
	ActualDeath:
		DRKI I 8
		DRKI J 8 A_Scream
		DRKI K 6
		DRKI L 6 A_Fall
		DRKI M -1
		Stop
	ActualXDeath:
		DRKI N 5
		TNT1 A 0 A_SpawnItem("SRBloodFountain", 0, 0, 0, 0)
		DRKI O 5 A_XScream
		DRKI P 5
		TNT1 A 0 A_SpawnItem("SRGibGenerator", 0, 0, 0, 0)
		DRKI Q 5 A_Fall
		DRKI RST 5
		DRKI U -1
		Stop
	ActualDeathDrainMana:
		DRKI N 0 ACS_ExecuteAlways(779,0,3,0,0)
		DRKI N 5
		DRKI O 5 A_XScream
		DRKI P 5
		DRKI Q 5 A_Fall
		DRKI RST 5
		DRKI U -1
		Stop	
	ActualDeathDrainHealth:
		DRKI N 0 ACS_ExecuteAlways(772,0,5,0,0)
		DRKI N 5
		DRKI O 5 A_XScream
		DRKI P 5
		DRKI Q 5 A_Fall
		DRKI RST 5
		DRKI U -1
		Stop	
	ActualBurn:
		TROB N 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		TROB N 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		TROB N 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		TROB N 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		TROB N 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		TROB N 0 A_CustomMissile("Satanic_FireStarter",5,0,75,0)     
		TROB N 0 A_CustomMissile("Satanic_FireStarter",5,0,75,0)
		TROB N 5
		TROB O 5 A_XScream
		TROB P 5
		TROB Q 5 A_Fall
		TROB RST 5
		TROB UUUUUU 4 A_SpawnItem("Satanic_SmokeSpawner")
		TROB U 0 A_SpawnItem("Satanic_ImpBurnedCorpse")
		Stop	
	Raise:
		DRKI M 1
		DRKI M 1 A_SetInvulnerable
		DRKI M 1 A_UnsetSolid
		DRKI M 1 A_UnsetShootable
		DRKI M 1 ACS_ExecuteAlways(788,0,0,0,0)
		DRKI M 1
		Stop
	Raise_Spirit:
		DRKI MLKJ 6
		DRKI J 0 A_SpawnItem("Satanic_RaisedImp")
		Stop
	Raise_ManaRitual:
		DRKI MLK 4
		DRKI J 4 A_SpawnItem("Satanic_HealthSpirit")
		DMPB A 4 ACS_ExecuteAlways(779,0,3,0,0)
		DMPB B 4 A_SpawnItem("Satanic_HealthSpiritExplosion")
		IMPB CDEFGHIJ 4
		IMPB J 0 A_SpawnItem("Satanic_ImpBurnedCorpse")
		Stop
    }
}

Actor Satanic_DarkNormal 
{
    Radius	8
    Height	6
    Speed	18
    Damage	3
	Decal Scorch
	SeeSound	"imp/attack"
    DeathSound	"imp/shotx"
    RenderStyle	Add
	Alpha		0.67
	DamageType DemonFire
	PROJECTILE
    States
    {
	Spawn:
		DKB1 AB 4 Bright
		Loop
	Death:
		DKB1 CDE 4 Bright
		Stop
    }
}

Actor Satanic_DarkStrong 
{
    Radius			8
    Height			6
    Speed			18
    Damage			6
	Decal Scorch
	MissileHeight 	0
	MissileType 	Blood
	DamageType DemonFire
	RenderStyle Add
	Alpha 		0.67
	SeeSound 	"imp/attack"
    DeathSound 	"imp/shotx"
	PROJECTILE
    States
    {
	Spawn:
		DKB2 A 4 Bright A_MissileAttack
		DKB2 B 4 Bright
		Loop
	Death:
		DKB2 CDE 4 Bright
		Stop
    }
}

Actor Satanic_DarkSeeker
{
	Radius 	8
    Height 	6
    Speed 	18
    Damage 	3
	SeeSound	"imp/attack"
    DeathSound	"imp/shotx"
    RenderStyle	Add
	Alpha		0.67
	DamageType DemonFire
	Decal Scorch
	PROJECTILE
	+SEEKERMISSILE
    States
    {
	Spawn:
		DKB1 AB 4 Bright A_SeekerMissile (10,20)
		Loop
	Death:
		DKB1 CDE 4 Bright
		Stop
    }
}
//------------------------------------------------------------------------------------------------------------------------