actor Pestilence
{
MONSTER
health 850
height 44
radius 20
mass 100
speed 7
FloatSpeed 8
BloodColor "Green"
painchance 80
+Float
+Nogravity
+NOTARGET
+MissileMore
+MissileEvenMore
+DONTHURTSPECIES
+DONTHARMSPECIES
+DONTHARMCLASS
Species "Skeletons"
Damagefactor "Acid", 0.3
Damagefactor "Poison", 0.0
Damagefactor "PoisonCloud", 0.0
DamageFactor "SoulToxic", 0.0
DamageFactor "CacoLich", 0.0
DropItem "BossLifeEssence", 256, 30
DropItem "BossArmorBonusMax", 180
seesound "PestilenceSee"
activesound "PestilenceActive"
painsound "PestilencePain"
deathsound "PestilenceDeath"
Obituary "%o couldn't take on a Pestilence's foul attacks."
Tag "Pestilence"
States
	{
	Spawn:
		PSEV B 2 Bright A_Look
		TNT1 A 0 Bright A_SpawnItem("PestilenceFX",0,0,0,0)
		Loop
	See:
		PSEV B 1 Bright A_Chase
		TNT1 A 0 A_SpawnItem("PestilenceFX",0,0,0,0)
		PSEV B 1 Bright A_Chase("","")
		TNT1 A 0 A_SpawnItem("PestilenceGasSpawner",0,0,0,0)
		PSEV B 1 Bright A_Chase("","")
		TNT1 A 0 A_SpawnItem("PestilenceFX",0,0,0,0)
		PSEV B 1 Bright A_Chase("","")
		TNT1 A 0 A_SpawnItem("PestilenceGasSpawner",0,0,0,0)
		TNT1 A 0 A_Jump(7,"Dodge")
		Loop
	Dodge:
		TNT1 A 0
		TNT1 A 0 A_Jump(256,"DodgeRight","DodgeLeft")
	DodgeLeft:
		TNT1 A 0 ThrustThing(angle*256/360+192,15,0,0)
		TNT1 A 0 A_JumpIfTargetInLos("Missile",360,JLOSF_DEADNOJUMP|JLOSF_TARGETLOS)
		Goto See
	DodgeRight:
		TNT1 A 0 ThrustThing(angle*256/360+64,15,0,0)
		TNT1 A 0 A_JumpIfTargetInLos("Missile",360,JLOSF_DEADNOJUMP|JLOSF_TARGETLOS)
		Goto See
	Missile:
		TNT1 A 0
		TNT1 A 0 A_Jump(21,"Dodge")
		TNT1 A 0 A_Jump(100,"Tracers")
		Goto Normal
	Normal:
		PSEV JJ 1 Bright A_FaceTarget(45)
		PSEV J 1 Bright A_FaceTarget(45)
		TNT1 A 0 A_CustomMissile("MiniLichLaser",44,-16,0)
		PSEV K 0 A_CustomMissile("MiniLichLaser",44,16,0) 
		PSEV J 1 Bright A_FaceTarget
		TNT1 A 0 A_CustomMissile("MiniLichLaser",44,-16,0)
		PSEV K 0 A_CustomMissile("MiniLichLaser",44,16,0) 
		PSEV J 1 Bright A_FaceTarget
		TNT1 A 0 A_CustomMissile("MiniLichLaser",44,-16,0)
		PSEV K 0 A_CustomMissile("MiniLichLaser",44,16,0) 
		PSEV J 1 Bright A_FaceTarget
		TNT1 A 0 A_CustomMissile("MiniLichLaser",44,-16,0)
		PSEV K 0 A_CustomMissile("MiniLichLaser",44,16,0) 
		PSEV J 1 Bright A_FaceTarget
		TNT1 A 0 A_CustomMissile("MiniLichLaser",44,-16,0)
		PSEV K 0 A_CustomMissile("MiniLichLaser",44,16,0) 
		PSEV J 1 Bright A_FaceTarget
		TNT1 A 0 A_CustomMissile("MiniLichLaser",44,-16,0)
		PSEV K 0 A_CustomMissile("MiniLichLaser",44,16,0) 
		PSEV J 1 Bright A_FaceTarget
		TNT1 A 0 A_CustomMissile("MiniLichLaser",44,-16,0)
		PSEV K 0 A_CustomMissile("MiniLichLaser",44,16,0) 
		PSEV K 10 Bright
		Goto See
	Tracers:
		PSEV J 13 Bright A_FaceTarget
		TNT1 A 0 A_CustomMissile("PestilenceTracers",44,-16,0)
		PSEV K 8 Bright A_CustomMissile("PestilenceTracers",44,16,0)
		PSEV K 6 Bright
		Goto See
	Pain:
		TNT1 A 0 A_Jump(42,"Dodge")
		TNT1 A 0 A_Jump(104,"Missile")
		PSEV L 10 Bright A_Pain
		Goto See
	Death:
		PSEX A 2 Bright
		PSEX AAA 1 Bright A_SpawnItemEx("CacoLichPoison",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
		TNT1 AAA 0 A_SpawnItemEx("GreenParticleSpawner",0,0,40,0,0,0,0,SXF_CLIENTSIDE,0)
		PSEX B 0 Bright A_Scream
		TNT1 AA 0 A_SpawnItem("PestilenceGasSpawner",0,0,0,0)
		PSEX B 1 Bright A_SpawnItemEx("CacoLichPoison",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
		TNT1 AA 0 A_SpawnItem("PestilenceGasSpawner",0,0,0,0)
		PSEX B 1 Bright A_SpawnItemEx("CacoLichPoison",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
		TNT1 AA 0 A_SpawnItem("PestilenceGasSpawner",0,0,0,0)
		PSEX B 1 Bright A_SpawnItemEx("CacoLichPoison",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
		TNT1 AA 0 A_SpawnItem("PestilenceGasSpawner",0,0,0,0)
		PSEX B 1 Bright A_SpawnItemEx("CacoLichPoison",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
		TNT1 AA 0 A_SpawnItem("PestilenceGasSpawner",0,0,0,0)
		PSEX B 1 Bright A_SpawnItemEx("CacoLichPoison",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
		PSEX C 0 Bright A_NoBlocking
		TNT1 AA 0 A_SpawnItem("PestilenceGasSpawner",0,0,0,0)
		PSEX C 1 Bright A_SpawnItemEx("CacoLichPoison",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
		TNT1 AA 0 A_SpawnItem("PestilenceGasSpawner",0,0,0,0)
		PSEX C 1 Bright A_SpawnItemEx("CacoLichPoison",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
		TNT1 AA 0 A_SpawnItem("PestilenceGasSpawner",0,0,0,0)
		PSEX C 1 Bright A_SpawnItemEx("CacoLichPoison",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
		TNT1 A 0 A_ChangeFlag(NoGravity,0)
		TNT1 AA 0 A_SpawnItem("PestilenceGasSpawner",0,0,0,0)
		PSEX D 1 Bright
		TNT1 AA 0 A_SpawnItem("PestilenceGasSpawner",0,0,0,0)
		PSEX D 1 Bright
		TNT1 AA 0 A_SpawnItem("PestilenceGasSpawner",0,0,0,0)
		PSEX D 1 Bright
		TNT1 AA 0 A_SpawnItem("PestilenceGasSpawner",0,0,0,0)
		PSEX D 1 Bright
		PSEX EFG 3 Bright
		PSEX H 3 Bright A_FadeOut(0.1,1)
		Wait
	}
}

Actor PestilenceTracers : CadaverRocket
{
PoisonDamage 20
ExplosionDamage 40
ExplosionRadius 180
+DONTHURTSPECIES
+DONTHARMSPECIES
Species ""
Species "Skeletons"
Damagetype ""
Damagetype "SoulToxic"
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_Jump(128,"Homing")
	Normal:
		TNT1 A 0 Bright A_CustomMissile("MissileTrail",0,Random(-2,2))
		HMIG A 1 Bright A_CustomMissile("ProjectileTrailParticleGreen2",0,Random(-2,2))
		TNT1 A 0 Bright A_CustomMissile("MissileTrail",0,Random(-2,2))
		HMIG A 1 Bright A_CustomMissile("ProjectileTrailParticleGreen2",0,Random(-2,2))
		TNT1 A 0 Bright A_CustomMissile("MissileTrail",0,Random(-2,2))
		HMIG A 1 Bright A_CustomMissile("ProjectileTrailParticleGreen2",0,Random(-2,2))
		TNT1 A 0 Bright A_CustomMissile("MissileTrail",0,Random(-2,2))
		HMIG A 1 Bright A_CustomMissile("ProjectileTrailParticleGreen2",0,Random(-2,2))
		TNT1 A 0 A_SpawnItemEx("CacoLichPoison",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
		Loop	
	Homing:
		TNT1 A 0 Bright A_Tracer2
		TNT1 A 0 Bright A_CustomMissile("MissileTrail",0,Random(-2,2))
		HMIG A 1 Bright A_CustomMissile("ProjectileTrailParticleGreen2",0,Random(-2,2))
		TNT1 A 0 Bright A_CustomMissile("MissileTrail",0,Random(-2,2))
		HMIG A 1 Bright A_CustomMissile("ProjectileTrailParticleGreen2",0,Random(-2,2))
		TNT1 A 0 Bright A_CustomMissile("MissileTrail",0,Random(-2,2))
		HMIG A 1 Bright A_CustomMissile("ProjectileTrailParticleGreen2",0,Random(-2,2))
		TNT1 A 0 Bright A_CustomMissile("MissileTrail",0,Random(-2,2))
		HMIG A 1 Bright A_CustomMissile("ProjectileTrailParticleGreen2",0,Random(-2,2))
		TNT1 A 0 Bright A_Tracer2
		TNT1 A 0 A_SpawnItemEx("CacoLichPoison",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
		TNT1 A 0 Bright A_CustomMissile("MissileTrail",0,Random(-2,2))
		HMIG A 1 Bright A_CustomMissile("ProjectileTrailParticleGreen2",0,Random(-2,2))
		TNT1 A 0 Bright A_CustomMissile("MissileTrail",0,Random(-2,2))
		HMIG A 1 Bright A_CustomMissile("ProjectileTrailParticleGreen2",0,Random(-2,2))
		TNT1 A 0 Bright A_CustomMissile("MissileTrail",0,Random(-2,2))
		HMIG A 1 Bright A_CustomMissile("ProjectileTrailParticleGreen2",0,Random(-2,2))
		TNT1 A 0 Bright A_CustomMissile("MissileTrail",0,Random(-2,2))
		HMIG A 1 Bright A_CustomMissile("ProjectileTrailParticleGreen2",0,Random(-2,2))
		TNT1 A 0 Bright A_PlaySound("monster/homingrockbeep")
		TNT1 A 0 A_SpawnItemEx("CacoLichPoison",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
		Loop
	XDeath:
	Death:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("GreenParticleSpawner",0,0,0,0,0,0,0,SXF_CLIENTSIDE,0) 
		TNT1 AAA 0 A_CustomMissile("Kaboom4",0,0,random(0,360),2,random(0,360))
		TNT1 AAA 0 A_CustomMissile("SmokeFX2",0,0,random(0,360),2,random(0,360))
		TNT1 AAAA 0 A_SpawnItemEx("Debris",0,0,0,Random(4,-4),Random(4,-4),Random(4,8),0,SXF_CLIENTSIDE,0)
		TNT1 A 0 Bright A_Explode
		MIS3 BBBBBB 1 Bright A_SpawnItemEx("CacoLichPoison",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
		MIS3 CDEF 4 Bright A_SetTranslucent(0.75,1)
		Stop
	}
}

Actor PestilenceFX : RedParticleSpawner
{
Renderstyle Add
Alpha 0.15
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 0 Bright A_CheckSight("Toaster")
		TNT1 A 0 Bright A_JumpIf(ACS_ExecuteWithResult(304) == 1,"Toaster")
		TNT1 A 0 Bright A_SpawnItemEx("PestilenceGas",random(-18,18),random(-18,18),random(16,28),1,0,random(1,3),0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
		TNT1 A 0 Bright A_SpawnItemEx("PestilenceGas",random(-18,18),random(-18,18),random(10,8),1,0,random(-1,-3),0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
		PSEV B 2 Bright
		PSEV BB 1 Bright A_FadeOut(0.1,1)
		Stop
	}
}
    

ACTOR PestilenceGasSpawner : RedParticleSpawner
{
-CLIENTSIDEONLY
States
	{
	Spawn:
		TNT1 A 0 Bright
		TNT1 A 1 Bright A_SpawnItemEx("CacoLichPoison",random(-18,18),random(-18,18),random(10,8),1,0,random(-1,-3),0,0,128)
		Stop
	}
}

Actor PestilenceGas : PoisonSoulGas { Scale 0.35 }