Actor Pestilence
{
MONSTER
Health 850
Height 44
Radius 20
Mass 100
Speed 7
FloatSpeed 8
BloodColor "Green"
painchance 80
+Float
+Nogravity
+MissileMore
+MissileEvenMore
+DONTHARMSPECIES
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 "\cdPestilence\c-"
States
  {
  Spawn:
	PSEV B 3 Bright A_Look
    TNT1 A 0 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")
    TNT1 A 0 Healthing(1)
    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 A_JumpIfInTargetInventory("truelegendaryruneitem2",1,"HardMissile")
    TNT1 A 0 A_Jump(21,"Dodge")
    TNT1 A 0 A_Jump(256,"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_JumpIfInTargetInventory("truelegendaryruneitem2",1,"Pain.Hard")
    TNT1 A 0 A_Jump(42,"Dodge")
    TNT1 A 0 A_Jump(104,"Missile")
    PSEV L 10 Bright A_Pain
    Goto See
  Pain.Hard:
    TNT1 A 0 A_Jump(71,"Dodge")
    TNT1 A 0 A_Jump(116,"Missile")
    PSEV L 5 Bright A_Pain
    Goto See
  HardMissile:
    TNT1 A 0 A_Jump(21,"Dodge")
    TNT1 A 0 A_Jump(100,"HardTracers","AcidShots")
  Hard:
    PSEV J 2 Bright A_FaceTarget
	PSEV J 1 Bright A_FaceTarget
    TNT1 A 0 A_CustomMissile("CacoLichLaser", 38, -24, 0)
    PSEV K 0 A_CustomMissile("CacoLichLaser", 38, 24, 0) 
	PSEV J 1 Bright A_FaceTarget
    TNT1 A 0 A_CustomMissile("MiniLichLaser", 38, -24, 0)
    PSEV K 0 A_CustomMissile("MiniLichLaser", 38, 24, 0) 
	PSEV J 1 Bright A_FaceTarget
    TNT1 A 0 A_CustomMissile("CacoLichLaser", 38, -24, 0)
    PSEV K 0 A_CustomMissile("MiniLichLaser", 38, 24, 0) 
	PSEV J 1 Bright A_FaceTarget
    TNT1 A 0 A_CustomMissile("MiniLichLaser", 38, -24, 0)
    PSEV K 0 A_CustomMissile("CacoLichLaser", 38, 24, 0) 
	PSEV J 1 Bright A_FaceTarget
    TNT1 A 0 A_CustomMissile("MiniLichLaser", 38, -24, 0)
    PSEV K 0 A_CustomMissile("MiniLichLaser", 38, 24, 0) 
	PSEV J 1 Bright A_FaceTarget
    TNT1 A 0 A_CustomMissile("MiniLichLaser", 38, -24, 0)
    PSEV K 0 A_CustomMissile("MiniLichLaser", 38, 24, 0) 
	PSEV J 1 Bright A_FaceTarget
    TNT1 A 0 A_CustomMissile("CacoLichLaser", 38, -24, 0)
    PSEV K 0 A_CustomMissile("CacoLichLaser", 38, 24, 0) 
	PSEV K 10 Bright
    Goto See
  HardTracers:
    PSEV J 13 Bright A_FaceTarget
    TNT1 A 0 A_CustomMissile("PestilenceTracers", 38, -24, 0)
    PSEV K 8 Bright A_CustomMissile("PestilenceTracers", 38, 24, 0) 
	PSEV K 6 Bright
    Goto See
  AcidShots:
    PSEV J 13 Bright A_FaceTarget
    TNT1 A 0 A_CustomMissile("PestilenceAcid", 38, -24, random(-15,15))
    TNT1 A 0 A_CustomMissile("PestilenceAcid", 38, -24, random(-15,15))
    TNT1 A 0 A_CustomMissile("PestilenceAcid", 38, 24, random(-15,15))
    PSEV K 8 Bright A_CustomMissile("PestilenceAcid", 38, 24, random(-15,15))
	PSEV K 6 Bright
    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
+NONETID
States
  {
  Spawn:
    TNT1 A 0 Bright
    TNT1 A 0 Bright A_CheckSight("Toaster")
    TNT1 A 0 Bright A_JumpIf(ACS_ExecuteWithResult(304) == 1,3)
    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
  Toaster:
    TNT1 A 1 Bright
    Stop
  }
}
    

Actor PestilenceGasSpawner : RedParticleSpawner
{
-CLIENTSIDEONLY
-NONETID
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
+NONETID
}