ACTOR PainHarvester : Devil
{
Monster
Health 180
Speed 4
Radius 16
Painchance "Mine", 128
Painchance "AdvancedImp", 0
Painchance "Shadow", 0
PainChance 30
BloodColor Black
Reactiontime 25
+AvoidMelee
+MISSILEMORE
+MISSILEEVENMORE
+QuickToRetaliate
+DONTHARMSPECIES
Species "AdvancedImp"
Damagetype "AdvancedImp"
Damagefactor "AdvancedImp", 0.0
Damagefactor "HellionFire", 0.0
Damagefactor "Nightshade", 0.0
Damagefactor "Catharsi15k", 0.0
Damagefactor "Catharsi10K", 0.0
DropItem "LifeEssence", 200, 4
DropItem "HEMArmorBonusMax4", 200
SeeSound "harvester/sight"
ActiveSound "imp/active"
MeleeSound "imp/melee"
PainSound "imp/pain"
DeathSound "harvester/death"
Obituary "%o was flooded with pain by a Pain Harvester."
Tag "\c[u9]Pain Harvester\c-"
States
	{
	Spawn:
		PNHV A 10 A_Look
		Loop
	See:
		PNHV AAAAAABBBBBB 1 A_Chase
		TNT1 A 0 A_SpawnItemEx("HumanishStep2",0,0,2,0,0,-20)
		PNHV CCCCCCDDDDDD 1 A_Chase
		TNT1 A 0 A_SpawnItemEx("HumanishStep2",0,0,2,0,0,-20)
		Loop
	Melee:
	Missile:
		//TNT1 A 0 A_ChangeFlag(NoTarget,1)
		//TNT1 A 0 A_CustomMissile("BribeCaco",1,0,0,2,-90)
		PNHV EFGH 4 Bright A_FaceTarget(45)
		//TNT1 A 0 A_ChangeFlag(NoTarget,0)
		TNT1 A 0 A_CustomMissile("PainisHarvesterBall",32,0,0,CMF_TRACKOWNER)	
		PNHV IJK 5 Bright A_FaceTarget
		PNHV L 5 Bright
		PNHV M 4
		Goto See
	Pain:
		TNT1 A 0
    	PNHV N 6 A_Pain
    	Goto See
	Death:
		TNT1 A 0
		PNHV O 6 A_Scream
		PNHV PQR 6 
		PNHV S 5 //A_SpawnItemEx("SoulHarvesterGhost",0,0,32,0,0,0,0,128)
		PNHV T 4 A_Fall
		TNT1 A 0 A_SpawnItem("BodyCrash",0,0,0,0)
		PNHV UV 3
		PNHV W 63000 CanRaise
		Stop
	XDeath:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("BlackGibbedGenerator",0,0,0,0,0,0,0,128,0)
		PNHV X 3 A_XScream
		TNT1 A 0 A_GiveInventory("XDeathCheck",1)
		PNHV Y 3 //A_SpawnItemEx("SoulHarvesterGhost",0,0,32,0,0,0,0,128)
		PNHV Z 3
		PNHV "[" 3 A_Fall
		PNHV "]" 3
		PNHW A 63000 CanRaise
		Stop
	Raise:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("VileHealEffect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
		TNT1 A 0 A_JumpIfInventory("XDeathCheck",1,"XRaise")
		PNHV WVUTSRQPO 5
		Goto See
	XRaise:
		TNT1 A 0 A_TakeInventory("XDeathCheck",1)
		PNHV "]" 3
		PNHV "[" 3
		PNHV ZYX 3
		GoTo See
	}
}

Actor PainisHarvesterBall
{
PROJECTILE
Height 12
Radius 12
Speed 15
FastSpeed 16
Decal "DoomImpScorch"
Scale 0.7
Renderstyle Translucent
Alpha 0.8
Damage 10
+StrifeDamage
+SEEKERMISSILE
+THRUSPECIES
+MTHRUSPECIES
+DontHurtSpecies
+DontHarmSpecies
Damagetype "AdvancedImp"
SeeSound "pharvester/scream"
DeathSound "DoomWraithSpawn"
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_ScaleVelocity(0.1)
		PHMM ABC 3 Bright
		TNT1 A 0 Bright A_ScaleVelocity(10.0)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM DDD 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM EEE 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM FFF 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM DDD 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM EEE 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM FFF 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM DDD 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM EEE 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM FFF 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM DDD 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM EEE 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM FFF 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM DDD 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM EEE 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM FFF 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM DDD 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		TNT1 A 0 Bright A_ScaleVelocity(0.9)
		PHMM EEE 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		TNT1 A 0 Bright A_ScaleVelocity(0.8)
		PHMM FFF 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_ScaleVelocity(0.7)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM DDD 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_ScaleVelocity(0.6)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM EEE 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_ScaleVelocity(0.5)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM FFF 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_ScaleVelocity(0.4)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM DDD 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_ScaleVelocity(0.3)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM EEE 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_ScaleVelocity(0.2)
		TNT1 A 0 Bright A_SeekerMissile(20,30)
		PHMM FFF 1 Bright A_SpawnItemEx("PainBallTrail",0,0,1,0,0,0,180,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_ScaleVelocity(0.1)
		Goto Death
	Death:
		TNT1 A 0 Bright
		TNT1 AAAAAAA 0 Bright A_CustomMissile("PHSpreadShot",0,0,random(-4,4),CMF_AIMDIRECTION|CMF_TRACKOWNER,frandom(-4.0,4.0))
		Goto XDeath
	XDeath:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_ChangeFlag("MISSILE",0)
		TNT1 A 0 Bright A_SetTranslucent(1.0,1)
		TNT1 A 0 Bright A_SpawnItemEx("PurpleParticleSpawner",0,0,1,0,0,0,0,SXF_CLIENTSIDE,0)
		TNT1 AAA 0 Bright A_CustomMissile("Kaboom8",0,0,random(0,360),2,random(0,360))
		TNT1 AAAA 0 Bright A_CustomMissile("SmokeFX4",0,0,random(0,360),2,random(0,360))		
		SRBA EFGHIJJJJJJ 2 Bright A_FadeOut(0.1,1)
		Stop
	}
}

Actor PainBallTrail : ImpBallTrail
{
+NONETID
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
		SCRT ABCDE 1 Bright A_FadeOut(0.1,0)
		SCRT E 1 Bright A_FadeOut(0.1,1)
		Wait
	Toaster:
		TNT1 A 1 Bright
		Stop
	}
}

Actor PHSpreadShot : DoomImpBall
{
PROJECTILE
Height 6
Radius 8
Speed 15
FastSpeed 20
Scale 0.8
Bouncetype Hexen
Bouncecount 5
BounceFactor 1.2
WallBounceFactor 1.2
Renderstyle Add
Decal "DoomImpScorch"
Damage (3*random(1,4))
+HexenBounce
+THRUSPECIES
+MTHRUSPECIES
+DontHurtSpecies
+DontHarmSpecies
Damagetype "AdvancedImp"
Obituary "%o was flooded with pain by a Pain Harvester."
States
	{
	Spawn:
		PBAL AA 1 Bright A_SpawnItemEx("ShadePuff2",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_Seekermissile(5,7)
		TNT1 A 0 Bright A_Weave(1,3,2,1)
		PBAL AA 1 Bright A_SpawnItemEx("ShadePuff2",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_Seekermissile(5,7)
		TNT1 A 0 Bright A_Weave(1,3,2,1)
		PBAL BB 1 Bright A_SpawnItemEx("ShadePuff2",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_Seekermissile(5,7)
		TNT1 A 0 Bright A_Weave(1,3,2,1)
		PBAL BB 1 Bright A_SpawnItemEx("ShadePuff2",0,0,0,0,0,0,0,SXF_CLIENTSIDE|SXF_NOCHECKPOSITION,0)
		TNT1 A 0 Bright A_Seekermissile(5,7) 
		TNT1 A 0 Bright A_Weave(1,3,2,1)
		Loop
	Death:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_ChangeFlag("MISSILE",0)
		PBAL HIJKLM 3 Bright A_FadeOut(0.1,1)
		Stop
	XDeath:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_ChangeFlag("MISSILE",0)
		TNT1 A 0 Bright A_SpawnItemEx("PurpleParticleSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0)
		TNT1 AAA 0 Bright A_CustomMissile("Kaboom8",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
		TNT1 AAA 0 Bright A_CustomMissile("SmokeFX4",0,0,random(0,360),CMF_AIMDIRECTION,random(0,360))
		PBAL HIJKLM 3 Bright A_FadeOut(0.1,1)
		Stop
	}
}