ACTOR PoeSpawn
{
States
{
    Spawn:
		TNT1 A 0 A_JumpIf( Z + height + 100 >= CeilingZ, "failspawn")
		TNT1 A 0 A_SpawnItemEx("ShadowPoe",0,0,0)
		TNT1 A 0 A_SpawnItemEx("ShadowCaco",0,0,70)
		Stop
	FailSpawn:
        TNT1 A 0 A_SpawnItemEx("Cacodemon",0,0,0)
		Stop
}
}


Actor ShadowPoe
{
PainChance 32
Monster
Health 525
Radius 31
Height 56
Mass 800
Speed 8
PainChance 32
Monster
+FLOAT 
+NOGRAVITY 
+THRUGHOST 
+THRUSpecies 
+NOICEDEATH
Species "ShadowCaco"
SeeSound "CacoLich/Sight"
ActiveSound "CacoLich/Active"
PainSound "CacoLich/Pain"
DeathSound "CacoLich/Death"
bloodcolor "ff 0f 83"
DamageFactor 0.5
MeleeDamage 4
Damagetype "Poe"
Damagefactor "Poe", 0
Obituary "%o get rekt by a Shadow Cacodemon"
HitObituary "%o's soul was eaten by the Shadow Cacodemon"
Tag "\c[i9]Shadow Cacodemon"
States
{
Spawn:
	TNT1 A 0 A_SpawnItem("PHellionSmokeSpawner",0,0,0,0)
	POE2 A 10 A_Look
	TNT1 A 0 A_SpawnItem("PHellionSmokeSpawner",0,0,0,0)
	Loop
See:
	TNT1 A 0 A_SpawnItem("PHellionSmokeSpawner",0,0,0,0)
	POE2 AAAAA 3 A_Chase
	TNT1 A 0 A_SpawnItem("PHellionSmokeSpawner",0,0,0,0)
	POE2 AA 3 A_Chase
	TNT1 A 0 A_SpawnItem("PHellionSmokeSpawner",0,0,0,0)
	loop
Missile:
	TNT1 A 0 A_Jump(128,"Normal2","ThereCanBeYourAD","Seekball")
	TNT1 A 0 A_Jump(28,"DarkMatter","Seekball2")
Normal:
	TNT1 A 0 A_SpawnItem("PHellionSmokeSpawner",0,0,0,0)
	POE2 EF 3 A_FaceTarget
	TNT1 A 0 A_SpawnItem("PHellionSmokeSpawner",0,0,0,0)
	POE2 G 4 Bright 
	TNT1 A 0 A_CustomMissile("PhaseImpBall2", 24, 0, 0)
	TNT1 A 0 A_CustomMissile("PhaseImpBall2", 24, 0, -30)
	TNT1 A 0 A_CustomMissile("PhaseImpBall2", 24, 0, -20)
	TNT1 A 0 A_CustomMissile("PhaseImpBall2", 24, 0, -10)
		
	TNT1 A 0 A_CustomMissile("PhaseImpBall2", 24, 0, 10)
	TNT1 A 0 A_CustomMissile("PhaseImpBall2", 24, 0, 20)
	TNT1 A 0 A_CustomMissile("PhaseImpBall2", 24, 0, 30)
	GoTo See
Normal2:
	TNT1 A 0 A_SpawnItem("PHellionSmokeSpawner",0,0,0,0)
	POE2 EF 3 A_FaceTarget
	TNT1 A 0 A_SpawnItem("PHellionSmokeSpawner",0,0,0,0)
	POE2 G 4 Bright 
	TNT1 A 0 A_CustomMissile("PhazoFastShot", 24, 0, 0, CMF_AIMOFFSET|CMF_OFFSETPITCH, frandom(-2,2))
	TNT1 A 0 A_CustomMissile("PhazoFastShot", 24, 0, -15, CMF_AIMOFFSET|CMF_OFFSETPITCH, frandom(-2,2))
	TNT1 A 0 A_CustomMissile("PhazoFastShot", 24, 0, -10, CMF_AIMOFFSET|CMF_OFFSETPITCH, frandom(-2,2))
	TNT1 A 0 A_CustomMissile("PhazoFastShot", 24, 0, -5, CMF_AIMOFFSET|CMF_OFFSETPITCH, frandom(-2,2))
		
	TNT1 A 0 A_CustomMissile("PhazoFastShot", 24, 0, 5, CMF_AIMOFFSET|CMF_OFFSETPITCH, frandom(-2,2))
	TNT1 A 0 A_CustomMissile("PhazoFastShot", 24, 0, 10, CMF_AIMOFFSET|CMF_OFFSETPITCH, frandom(-2,2))
	TNT1 A 0 A_CustomMissile("PhazoFastShot", 24, 0, 15, CMF_AIMOFFSET|CMF_OFFSETPITCH, frandom(-2,2))
	GoTo See
ThereCanBeYourAD:
	TNT1 A 0 A_SpawnItem("PHellionSmokeSpawner",0,0,0,0)
	POE2 EF 3 A_FaceTarget
	TNT1 A 0 A_SpawnItem("PHellionSmokeSpawner",0,0,0,0)
	POE2 G 4 bright 
	TNT1 A 0 A_CustomMissile("PArchonComet",24,0,0,0,0)
	GoTo See
Seekball:
	TNT1 A 0 A_SpawnItem("PHellionSmokeSpawner",0,0,0,0)
	POE2 EF 3 A_FaceTarget
	TNT1 A 0 A_SpawnItem("PHellionSmokeSpawner",0,0,0,0)
	POE2 G 4 bright A_CustomMissile("SeekBall",24,0,0,0,0)
	GoTo See
DarkMatter:
	POE2 EF 3 A_FaceTarget
	POE2 G 4 Bright 
	TNT1 A 0 A_CustomMissile("PainLordDarkMatter", 24, 0, 0)
	GoTo See
SeekBall2:
	TNT1 A 0 A_SpawnItem("PHellionSmokeSpawner",0,0,0,0)
	POE2 EF 3 A_FaceTarget
	TNT1 A 0 A_SpawnItem("PHellionSmokeSpawner",0,0,0,0)
	POE2 G 4 Bright 
	TNT1 A 0 A_CustomMissile("SeekBall2", 24, 0, 0, CMF_AIMOFFSET|CMF_OFFSETPITCH, frandom(-6,6))
	TNT1 A 0 A_CustomMissile("SeekBall2", 24, 0, -15, CMF_AIMOFFSET|CMF_OFFSETPITCH, frandom(-6,6))
	TNT1 A 0 A_CustomMissile("SeekBall2", 24, 0, -10, CMF_AIMOFFSET|CMF_OFFSETPITCH, frandom(-6,6))
	TNT1 A 0 A_CustomMissile("SeekBall2", 24, 0, -5, CMF_AIMOFFSET|CMF_OFFSETPITCH, frandom(-6,6))
		
	TNT1 A 0 A_CustomMissile("SeekBall2", 24, 0, 5, CMF_AIMOFFSET|CMF_OFFSETPITCH, frandom(-6,6))
	TNT1 A 0 A_CustomMissile("SeekBall2", 24, 0, 10, CMF_AIMOFFSET|CMF_OFFSETPITCH, frandom(-6,6))
	TNT1 A 0 A_CustomMissile("SeekBall2", 24, 0, 15, CMF_AIMOFFSET|CMF_OFFSETPITCH, frandom(-6,6))
	GoTo See
Pain:
	TNT1 A 0 A_Jump(128,"SeekBall")
	TNT1 A 0 A_Jump(54,"SeekBall2")
	POE1 H 3
	POE1 H 3 A_Pain
	POE1 I 0 A_KillChildren
	POE1 I 6
	Goto See
Death:
	POE1 J 0 A_changeflag (NOGRAVITY,0)
	POE1 K 8
	POE1 L 8 A_Scream
	POE1 M 0 A_KillChildren
	POE1 N 8 A_SetTranslucent (0.4,0)
	POE1 O 8 A_SetTranslucent (0.3,0)
	POE1 P 8 A_SetTranslucent (0.2,0)
	POE1 Q 8 A_SetTranslucent (0.1,0)
	POE1 R 8 A_SetTranslucent (0,0)
	TNT1 S 8 A_NoBlocking
	TNT1 L -1 A_SetFloorClip
	Stop
}
}

Actor SeekBall : CacodemonBall
{
Speed 15
Alpha 0.80
Damage 16
+ForceXYBillboard
+ThruSpecies
+THRUGHOST
+DontHurtSpecies
+DontHarmSpecies
+SeekerMissile
Species "ShadowCaco"
Damagetype "Shadow"
SeeSound "Monster/hadtel"
DeathSound "Monster/hadsit"
States
{
Spawn:
	TNT1 A 0 A_SeekerMissile(0,360)
	PFKB AAAABBBB 2 BRIGHT A_SpawnItemEx("SickBallTail",0,0,0,0,0,0,0,128)
	Loop
Death:
	TNT1 A 0 A_SpawnItemEx("PurpleParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AAA 0 A_CustomMissile("Kaboom8", 0, 0, random(0,360), 2, random(0,360))
	TNT1 AAA 0 A_CustomMissile("SmokeFX4", 0, 0, random(0,360), 2, random(0,360))
	PFKB CDEFGH 3 BRIGHT
	Stop
XDeath:
	TNT1 A 0 a_radiusgive("HaHaIStealurHP", 96, RGF_PLAYERS)
	TNT1 A 0 A_GiveToTarget("Health", 16)
	TNT1 A 0 A_SpawnItemEx("PurpleParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AAA 0 A_CustomMissile("Kaboom8", 0, 0, random(0,360), 2, random(0,360))
	TNT1 AAA 0 A_CustomMissile("SmokeFX4", 0, 0, random(0,360), 2, random(0,360))
	PFKB CDEFGH 3 BRIGHT
	Stop
}
}

Actor SeekBall2 : SeekBall
{
Speed 15
Alpha 0.80
Damage 16
+ForceXYBillboard
+ThruSpecies
+THRUGHOST
+DontHurtSpecies
+DontHarmSpecies
+SeekerMissile
Species "ShadowCaco"
Damagetype "Shadow"
SeeSound "Monster/hadtel"
DeathSound "Monster/hadsit"
States
{
XDeath:
	TNT1 A 0 a_radiusgive("HaHaIStealurHP!", 96, RGF_PLAYERS)
	TNT1 A 0 A_GiveToTarget("Health", 4)
	TNT1 A 0 A_SpawnItemEx("PurpleParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
	TNT1 AAA 0 A_CustomMissile("Kaboom8", 0, 0, random(0,360), 2, random(0,360))
	TNT1 AAA 0 A_CustomMissile("SmokeFX4", 0, 0, random(0,360), 2, random(0,360))
	PFKB CDEFGH 3 BRIGHT
	Stop
}
}

Actor HaHaIStealurHP : Custominventory
{
inventory.maxamount 1
  +inventory.autoactivate
  +inventory.alwayspickup
  +inventory.quiet
  +inventory.undroppable
  +notimefreeze
  states
  {
  pickup:
    TNT1 A 0 a_setblend("790FCB", 0.75, 50)
	stop
  }
}

Actor SickBallTail : BFG9500Trail
{
Scale 0.85
 States
  {
Spawn:
    TNT1 A 0
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
	TNT1 A 1
    PFKB AB 1 A_FadeOut
    Goto Spawn+1
    }
}

Actor ShadowCaco : ShadowPoe
{
Health 350
+THRUSpecies
Damagefactor 0.3
Alpha 0.50
PainChance 24
Tag "\c[j9]Shadow Poe"
var int user_fear;
States
{
Spawn:
	POE1 A 1 A_SetTranslucent(0.3)
	POE1 A 10 A_Look
	Loop
See:
	POE1 A 1 A_SetTranslucent(0.5)
	POE1 AAA 3 A_Chase
	POE1 AA 3 A_Chase
	Loop
See.Fear:
	TNT1 A 0 A_Jump(28,"UnFear")
	POE1 AAAAAAA 3 A_Wander
	POE1 AAAAAA 3 A_Wander
	Loop
Missile:
	POE1 A 1 A_SetTranslucent(0.5)
	TNT1 A 0 A_Jump(128,"WeakBall")
	TNT1 A 0 A_Facetarget
	POE1 EF 4 BRIGHT
	POE1 G 4 Bright
	TNT1 A 0 A_CustomMissile("PhazoFastShot")
	GoTo See
WeakBall:
	TNT1 A 0 A_Facetarget
	POE1 EF 4 BRIGHT
	POE1 G 4 Bright
	TNT1 A 0 A_CustomMissile("PhaseImpBall")
	GoTo See
Pain:
	TNT1 A 0 A_Jump(256,"FearStart")
	Goto See
FearStart:
	TNT1 A 0 A_SetInvulnerable
	TNT1 AAAAA 0 A_SpawnItemEx("ShadowSmokeGen3",0,0,5,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	POE1 A 1 A_SetTranslucent(0.5)
	POE1 A 1 A_SetTranslucent(0.35)
	POE1 A 1 A_SetTranslucent(0.20)
	POE1 A 1 A_SetTranslucent(0.10)
	POE1 A 1 A_SetTranslucent(0)
	Goto See.Fear
UnFear:
	TNT1 A 0 A_UnSetInvulnerable
	TNT1 AAAAA 0 A_SpawnItemEx("ShadowSmokeGen3",0,0,5,0,0,0,0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE)
	POE1 A 1 A_SetTranslucent(0)
	POE1 A 1 A_SetTranslucent(0.10)
	POE1 A 1 A_SetTranslucent(0.20)
	POE1 A 1 A_SetTranslucent(0.35)
	POE1 A 1 A_SetTranslucent(0.50)
	GoTo See
}
}