//------------------------------------------------------------------------------------------------------------------------
//	ImpWarlord
//
//
//	Taken from ZDoom Monster Pack
//	Created by Espi
//	Additional cripting by Nanami
//	Modified by M@@@H!aK (removed dragon familiar, death types etc.)
//------------------------------------------------------------------------------------------------------------------------
Actor Satanic_ImpWarlord 5009
{
    Health		180
    Radius		20
    Height		56
    Speed		9
    PainChance	128
	MeleeDamage 7
	Mass 400
	DamageFactor "NoDamage",	0
	PainChance "LeechSword", 	255
	PainChance "Turn", 			255
	PainChance "Posession", 	196
	PainChance "Bludgeon", 		255
	SeeSound	"imp/sight"
    PainSound	"imp/pain"
    DeathSound	"imp/death"
    ActiveSound "imp/active"
    MeleeSound	"Satanic/Monsters/ImpWarlord/MaceHit"
	Obituary	"%o couldn't run from the imp warlord's fireball."
    HitObituary	"%o was beaten to death by an imp warlord."
	MONSTER 
    +FLOORCLIP
	+FRIENDLY
    States
    {
	Spawn:
		WARI A 0 Thing_Hate(0,669,3)
		WARI AB 10 A_Look
		Goto Spawn+1
	See:
		WARI I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto StandardSee
		WARI A 0
		Goto PosessedMove
	PosessedMove:
		WARI A 0 A_JumpIfInventory("Satanic_PosessedFire",1,1)
		Goto PosessedCheckAltFire
		WARI A 0
		Goto PosessedFire
	PosessedCheckAltFire:
		WARI A 0 A_JumpIfInventory("Satanic_PosessedAltFire",1,1)
		Goto PosessedStandardMove
		WARI A 0
		Goto PosessedAltFire
	PosessedFire:
		WARI O 0 ACS_ExecuteAlways(805,0,0,0,0)
		WARI O 3
		WARI P 0 ACS_ExecuteAlways(805,0,1,0,0)
		WARI P 3 
		WARI Q 4 A_CustomMissile("Satanic_RedSkullBall",48.0,6,0.0,2,-pitch)
		WARI Q 0 ACS_ExecuteAlways(805,0,0,0,0)
		WARI Q 3
		WARI Q 0 A_TakeInventory("Satanic_PosessedFire",1)
		Goto See
	PosessedAltFire:
		WARI I 0 ACS_ExecuteAlways(805,0,0,0,0)
		WARI I 3
		WARI I 0 ACS_ExecuteAlways(805,0,2,0,0)
		WARI I 0 A_SetInvulnerable
		WARI I 35 
		WARI I 0 ACS_ExecuteAlways(805,0,0,0,0)
		WARI I 0 A_UnSetInvulnerable
		WARI I 3
		WARI I 0 A_TakeInventory("Satanic_PosessedAltFire",1)
		Goto See
	PosessedStandardMove:
		WARI AAAAAABBBBBBCCCCCCDDDDDD 1 ACS_Execute(803,0,56,30,4)
		WARI A 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto Spawn+1
		WARI A 0
		Goto See
	StandardSee:
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		WARI A 3 A_Chase
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		WARI A 3 A_Chase
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		WARI B 3 A_Chase
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		WARI B 3 A_Chase
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		WARI C 3 A_Chase
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		WARI C 3 A_Chase
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		WARI D 3 A_Chase
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,"Wander",AAPTR_PLAYER1)
		WARI D 3 A_Chase
		Goto See
	Wander:
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See
		WARI A 3 A_Wander
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See
		WARI A 3 A_Wander
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See
		WARI B 3 A_Wander
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See
		WARI B 3 A_Wander
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See
		WARI C 3 A_Wander
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See
		WARI C 3 A_Wander
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See
		WARI D 3 A_Wander
		TNT1 A 0 A_JumpIfInventory("PowerNecShroud",1,1,AAPTR_PLAYER1)
		Goto See
		WARI D 3 A_Wander
		Goto See
	Melee:
		WARI E 6 A_FaceTarget
		WARI E 0 A_PlaySound("Satanic/Monsters/ImpWarlord/MaceSwing")
		WARI F 4 A_FaceTarget
		WARI G 5 A_MeleeAttack
		Goto See
	Missile:
		WARI E 0 A_Jump(38,"AttackSpawnFamiliar")     
		WARI E 0 A_Jump(77,"AttackShieldHeatSeekers") 
		WARI E 0 A_Jump(128,"AttackSpreadshot")       
		Goto AttackScreamer                         
	AttackSpawnFamiliar:
		WARI GF 8 A_FaceTarget
		WARI F 0 A_Jump(128,2)
		WARI E 8 A_CustomMissile("Satanic_FamiliarSpawner",32,0,-30)
		Goto See
		WARI E 8 A_CustomMissile("Satanic_FamiliarSpawner",32,0,30)
		Goto See
	AttackShieldHeatSeekers:
		WARI I 0 A_SetInvulnerable
		WARI I 6 A_FaceTarget
		WARI J 0 A_PlaySound("Satanic/Monsters/ImpWarlord/ShieldShot")
		WARI J 6 bright A_FaceTarget
		WARI J 0 A_Jump(128,4)
		WARI K 0 bright A_CustomMissile("Satanic_YellowSkullSeeker",32,0,-45)
		WARI K 6 bright A_CustomMissile("Satanic_YellowSkullSeeker",32,0,45)
		WARI K 0 A_UnSetInvulnerable
		Goto See
		WARI K 6 bright A_CustomMissile("Satanic_YellowSkullSeeker",32,0,0)
		WARI K 0 A_UnSetInvulnerable
		Goto See
	AttackSpreadshot:
		WARI L 7 A_FaceTarget
		WARI M 0 A_PlaySound("Satanic/Monsters/ImpWarlord/MaceSwing")
		WARI M 5 A_FaceTarget
		WARI M 0 A_PlayWeaponSound("imp/attack")
		WARI M 0 A_Jump(128,3)
		WARI N 0 A_CustomMissile("Satanic_GreenPoisonBall",40,0,-8,1)
		WARI N 0 A_CustomMissile("Satanic_GreenPoisonBall",24,0,8,1)
		WARI N 0 A_CustomMissile("Satanic_GreenPoisonBall",32,0,0,1)
		WARI N 0 A_CustomMissile("Satanic_GreenPoisonBall",36,0,-4,1)
		WARI N 6 A_CustomMissile("Satanic_GreenPoisonBall",28,0,4,1)
		Goto See
	AttackScreamer:
		WARI O 0 A_Jump(128,5)
		WARI O 7 A_FaceTarget
		WARI P 0 A_PlaySound("Satanic/Monsters/ImpWarlord/MaceSwing")
		WARI P 5 A_FaceTarget
		WARI Q 6 A_CustomMissile("Satanic_RedSkullBall",32,0,0)
		WARI O 7 A_FaceTarget
		WARI P 0 A_PlaySound("Satanic/Monsters/ImpWarlord/MaceSwing")
		WARI P 5 A_FaceTarget
		WARI Q 6 A_CustomMissile("Satanic_RedSkullBall",32,0,0)
		Goto See
	Pain.Bludgeon:
		WARI H 0 ThrustThing(45,15,0)
	Pain.DefilerStock:
		WARI H 4
		WARI H 4 A_Pain
		Goto See
	Pain.Posession:
		WARI H 0
		WARI H 0 ACS_ExecuteAlways(791,0,10,0,0)
		WARI H 0 A_GiveInventory("Satanic_IsPosessed",1)
		WARI H 0 Thing_ChangeTID(0,669)
		WARI H 0 ACS_ExecuteAlways(802,0,56,0,0)
		Goto See
	Pain.DrainHealthEver:
		WARI H 0
		WARI H 0 ACS_ExecuteAlways(772,0,3,0,0)	
	Pain:
		WARI H 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto Pain+2
		WARI H 0
		Goto See
		WARI H 0 A_Jump(128,2)
		WARI H 8 A_Pain
		Goto See
		WARI I 1
		WARI I 0 A_SetInvulnerable
		WARI IIIIII 4 A_FaceTarget
		WARI I 0 A_Jump(160,5)
		WARI IIII 4 A_FaceTarget
		Goto Pain+6
		WARI I 0 A_UnSetInvulnerable
		Goto See
	Pain.Turn:
		TNT1 A 0 A_PlaySound("Satanic/Weapons/BellRing",CHAN_WEAPON)
		TNT1 A 0 ACS_Execute(824,0,20,0,0)
		WARI H 4
		TNT1 A 0 A_ChangeFlag("Friendly",1)
		WARI H 4 A_Pain
		Goto See
	Pain.LeechSword:
		WARI H 4
		WARI H 8 A_Pain
		WARI H 4
		Goto See
	Death:
		WARI I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualDeath
		WARI I 0 ACS_ExecuteAlways(801,0,0,0,0)
		WARI I 0 ChangeCamera(0, 0, 0) 
		Goto ActualDeath
	Death.DrainMana:
		WARI I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualDeathDrainMana
		WARI I 0 ACS_ExecuteAlways(801,0,0,0,0)
		WARI I 0 ChangeCamera(0, 0, 0) 
		Goto ActualDeathDrainMana
	Death.DrainHealthEver:
	Death.DrainHealth:
		WARI I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualDeathDrainHealth
		WARI I 0 ACS_ExecuteAlways(801,0,0,0,0)
		WARI I 0 ChangeCamera(0, 0, 0) 
		Goto ActualDeathDrainHealth
	Death.DemonFire:
	Burn:
		WARI I 0 A_JumpIfInventory("Satanic_IsPosessed",1,1)
		Goto ActualBurn
		WARI I 0 ACS_ExecuteAlways(801,0,0,0,0)
		WARI I 0 ChangeCamera(0, 0, 0) 
		Goto ActualBurn
	ActualDeath:
		WARI R 0 A_CustomMissile("Satanic_WarlordMace",32,0,-90)
		WARI R 0 A_CustomMissile("Satanic_WarlordShield",32,0,90)
		WARI R 8
		WARI S 8 A_Scream
		WARI T 6
		WARI U 6 A_Fall
		WARI V -1
		Stop
	ActualDeathDrainMana:
		WARI R 0 ACS_ExecuteAlways(779,0,9,0,0)
		WARI R 0 A_CustomMissile("Satanic_WarlordMace",32,0,-90)
		WARI R 0 A_CustomMissile("Satanic_WarlordShield",32,0,90)
		WARI R 8
		WARI S 8 A_Scream
		WARI T 6
		WARI U 6 A_Fall
		WARI V -1
		Stop
	ActualDeathDrainHealth:
		WARI R 0 ACS_ExecuteAlways(772,0,15,0,0)
		WARI R 0 A_CustomMissile("Satanic_WarlordMace",32,0,-90)
		WARI R 0 A_CustomMissile("Satanic_WarlordShield",32,0,90)
		WARI R 8
		WARI S 8 A_Scream
		WARI T 6
		WARI U 6 A_Fall
		WARI V -1
		Stop
	ActualBurn:
		TROB R 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		TROB R 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		TROB R 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		TROB R 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		TROB R 0 A_CustomMissile("Satanic_HellfireDeviceBoltSecondary",Random(0,64),0,Random(-360,360),0,0)
		TROB R 0 A_CustomMissile("Satanic_FireStarter",5,0,75,0)     
		TROB R 0 A_CustomMissile("Satanic_FireStarter",5,0,75,0)
		TROB R 0 A_CustomMissile("Satanic_WarlordMace",32,0,-90)
		TROB R 0 A_CustomMissile("Satanic_WarlordShield",32,0,90)
		TROB N 3
		TROB O 3 A_Scream
		TROB PQRST 3
		TROB U 4 A_Fall
		TRIB UUUUUU 4 A_SpawnItem("Satanic_SmokeSpawner")
		TROB U 0 A_SpawnItem("Satanic_ImpBurnedCorpse")
		Stop
	Raise:
		WARI V 1
		WARI V 1 A_SetInvulnerable
		WARI V 1 A_UnsetSolid
		WARI V 1 A_UnsetShootable
		WARI V 1 ACS_ExecuteAlways(788,0,0,0,0)
		WARI V 1
		Stop	
	Raise_Spirit:
		WARI VUTS 6
		WARI S 0 A_SpawnItem("Satanic_RaisedImp")
		Stop
	Raise_ManaRitual:
		WARI VU 4
		WARI T 4 A_SpawnItem("Satanic_HealthSpirit")
		WARI S 4 ACS_ExecuteAlways(779,0,9,0,0)
		WMPB A 4 A_SpawnItem("Satanic_HealthSpiritExplosion")
		WMPB BCDEFGHI 4
		WMPB I 0 A_SpawnItem("Satanic_WarriorImpBurnedCorpse")
		Stop
    }
}

ACTOR DisarmChecker : Inventory
{
	Inventory.Amount 1
	Inventory.MaxAmount 1
}

Actor Satanic_WarriorImpBurnedCorpse
{
	Radius 20
	Height 4
	States
	{
	Spawn:
		WMPB I -1
		Stop
	}
}

Actor Satanic_YellowSkullSeeker
{
    Radius	8
    Height	6
    Speed	12
    Damage	3
	DeathSound "Satanic/Monsters/ImpWarlord/ShieldShotHit"
	RenderStyle Add
	Scale		0.67
	Alpha		0.67
	Decal Scorch
	PROJECTILE
	+SEEKERMISSILE
    States
    {
	Spawn:
		WLP2 ABCD 3 Bright A_SeekerMissile(5,10)
		Loop
	Death:
		WLP2 EFG 4 Bright
		Stop
    }
}

Actor Satanic_GreenPoisonBall
{
    Radius	8
    Height	6
    Speed	18
    Damage	3
	Decal BulletChip
	DeathSound "imp/shotx"
	RenderStyle Add
	Alpha 		0.67
	PROJECTILE
    States
    {
	Spawn:
		WLP1 ABCD 4
		Loop
	Death:
		WLP1 EFGH 4
		Stop
    }
}

Actor Satanic_RedSkullBall
{
    Radius	8
    Height	6
    Speed	24
    Damage	12
	Decal PlasmaScorch
	SeeSound	"imp/attack"
    DeathSound	"imp/shotx"
	RenderStyle Add
	Alpha		0.67
	PROJECTILE
    States
    {
	Spawn:
		WLP4 ABCB 4
		Loop
	Death:
		WLP4 DEFG 4
		Stop
    }
}

Actor Satanic_WarlordShield
{
    Speed 5
	+DOOMBOUNCE
	States
    {
	Spawn:
		WLI1 ABCDEF 5
		WLI1 G -1
		Stop	
    }
}

Actor Satanic_WarlordMace
{
	Speed 4
	+DOOMBOUNCE
    States
    {
	Spawn:
		WLI2 ABCDEF 5
		WLI2 G -1
		Stop
    }
}

ACTOR WarlordHelm
{
	Speed 4
	+DOOMBOUNCE
	States
	{
	Spawn:
		HELM ABCDEFG 5
		HELM H -1
		Stop
	}
}

Actor Satanic_FamiliarSpawner
{
    Speed 	8
    Damage 	0
	DeathSound 	"Satanic/Monsters/ImpWarlord/FamiliarSpawn"
	DropItem 	DragonFamiliar
	+MISSILE
    +DOOMBOUNCE
	States
    {
	Spawn:
		WLP3 ABCD 4 light ("genericredshot")
		Loop
	Death:
		WLP3 E 4 light ("genericredshot")
		WLP3 F 6 light ("genericredshot")
		WLP3 G 8 A_CustomMissile("Satanic_BatFamiliar",32,0,0)
		WLP3 H 350
		Stop
    }
}

Actor Satanic_BatFamiliar 3107
{
	Health		10
    Radius		12
    Height		24
    Speed		14
	PainChance 200
	MissileHeight	0
    MeleeDamage 	1
	SeeSound 	"Satanic/Monsters/BatFamiliar/Idle"
    PainSound	"Satanic/Monsters/BatFamiliar/Pain"
    DeathSound	"Satanic/Monsters/BatFamiliar/Death"
    ActiveSound "Satanic/Monsters/BatFamiliar/Idle"
    MeleeSound	"Satanic/Monsters/BatFamiliar/Idle"
	HitObituary "%o was scratched by a bat familiar"
	MONSTER 
    +NOGRAVITY
    +FLOAT
    States
    {
	Spawn:
		BFAM ABCB 3 A_Look
		Loop
	See:
		BFAM ABCB 3 A_Chase
		Loop
	Melee:
		BFAM A 3 A_FaceTarget
		BFAM B 3 A_MeleeAttack
		BFAM CB 3 A_FaceTarget
		Goto See
	Pain:
		BFAM A 2
		BFAM A 2 A_Pain
		Goto See
	Death:
		BFAM D 0 A_Die
		BFAM D 0 A_NoBlocking 
		BFAM D 5 A_Scream
		BFAM E 5
		BFAM FDEF 5
		Goto Death+5
	Crash:
		BFAM G 0 A_SetFloorClip
		BFAM G 6 A_PlaySound("Satanic/Monsters/BatFamiliar/Crash")
		BFAM H 7
		BFAM I 8
		BFAM J -1
		Stop
    }
}