Actor NightmarePestilence
{
MONSTER
Health 1150
Height 44
Radius 20
Mass 100
Speed 7
FloatSpeed 8
BloodColor "Red"
PainChance 40
+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
DamageFactor "CadaverRocket", 0.0
DropItem "BossLifeEssence" 200 25
DropItem "BossArmorBonusMax" 200 25
DropItem "BossLifeEssence" 100 25
DropItem "BossArmorBonusMax" 100 25
DropItem "BrimstoneItem" 70 1
SeeSound "NightmarePest/Sight"
ActiveSound "NightmarePest/Active"
PainSound "NightmarePest/Pain"
DeathSound "NightmarePest/Death"
Obituary "%o's cardiac system was infused with venom by a Nightmare Pestilence."
Tag "$NENightPest"
var int user_lowlag;
States
  {
  Spawn:
	TNT1 A 0 NoDelay ACS_NamedExecuteAlways("ModifyMonster",0,1)
	Goto Idle
  Idle:
	NSEV B 3 Bright A_Look
    TNT1 A 0 A_SpawnItem("NPestilenceFX",0,0,0,0)
    Loop
  See:
	TNT1 A 0 A_JumpIf(user_lowlag == 1,"MoreSee")
	TNT1 A 0 A_JumpIfTargetInLOS("MoreSee",0,0,0,0)
	NSEV B 2 A_Chase
	Loop
  MoreSee:
	TNT1 A 0 A_SetUserVar("user_lowlag",1)
    NSEV B 1 Bright A_Chase
    TNT1 A 0 A_SpawnItem("NPestilenceFX",0,0,0,0)
    NSEV B 1 Bright A_Chase("","")
    TNT1 A 0 A_SpawnItem("NPestilenceGasSpawner",0,0,0,0)
    NSEV B 1 Bright A_Chase("","")
    TNT1 A 0 A_SpawnItem("NPestilenceFX",0,0,0,0)
    NSEV B 1 Bright A_Chase("","")
    TNT1 A 0 A_SpawnItem("NPestilenceGasSpawner",0,0,0,0)
    TNT1 A 0 A_Jump(14,"Dodge")
    Loop
  Dodge:
    TNT1 A 0
    TNT1 A 0 A_Jump(256,"DodgeRight","DodgeLeft")
  DodgeLeft:
    TNT1 A 0 ThrustThing(angle*256/360+192,25,0,0)
    TNT1 A 0 A_JumpIfTargetInLos("Missile",360,JLOSF_DEADNOJUMP|JLOSF_TARGETLOS)
    Goto See
  DodgeRight:
    TNT1 A 0 ThrustThing(angle*256/360+64,25,0,0)
    TNT1 A 0 A_JumpIfTargetInLos("Missile",360,JLOSF_DEADNOJUMP|JLOSF_TARGETLOS)
    Goto See
  Missile:
	TNT1 A 0 A_JumpIfCloser(400,"Grenades")
    TNT1 A 0 A_Jump(42,"Dodge")
    TNT1 A 0 A_Jump(20,"Brimstone")
  Normal:
    NSEV J 13 Bright A_FaceTarget
    TNT1 A 0 A_CustomMissile("NPestilenceSeeker",44,-16,0)
    NSEV K 8 Bright A_CustomMissile("NPestilenceSeeker",44,16,0)
    NSEV K 6 Bright
    Goto See
  Grenades:
    NSEV J 13 Bright A_FaceTarget
    TNT1 A 0 A_CustomMissile("NPestilenceGrenade",44,-16,0)
    NSEV K 8 Bright A_CustomMissile("NPestilenceGrenade",44,16,0)
    NSEV K 6 Bright
    Goto See
  Brimstone:
	NSEV B 1 Bright A_ChangeFlag(NOPAIN,1)
	NSEV B 4 Bright A_PlaySoundEx("NightmarePest/Sight","Voice")
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner",0,0,0,0)
	NSEV B 4 Bright A_FaceTarget
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner",0,0,0,0)
	NSEV B 4 Bright A_FaceTarget
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner",0,0,0,0)
	NSEV B 4 Bright A_FaceTarget
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner",0,0,0,0)
	NSEV B 4 Bright A_FaceTarget
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner",0,0,0,0)
	NSEV B 4 Bright A_FaceTarget
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner",0,0,0,0)
	NSEV B 4 Bright A_FaceTarget
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner",0,0,0,0)
	NSEV B 4 Bright A_FaceTarget
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner",0,0,0,0)
	NSEV B 4 Bright A_FaceTarget
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner",0,0,0,0)
	NSEV B 4 Bright A_FaceTarget
    TNT1 A 0 A_CustomMissile("RevBrimstoneRailCore",47,0,0)
    TNT1 A 0 A_CustomMissile("RevBrimstoneRail",47,0,0)
    NSEV K 10 Bright
	NSEV K 1 Bright A_ChangeFlag(NOPAIN,0)
    Goto See
  Pain:
    TNT1 A 0 A_Jump(84,"Dodge","BrimstonePain","Dodge")
    TNT1 A 0 A_Jump(104,"Missile")
    NSEV L 10 Bright A_Pain
    Goto See
  BrimstonePain:
    NSEV L 1 Bright A_ChangeFlag(NOPAIN,1)
    NSEV L 5 Bright A_Pain
	NSEV B 4 Bright A_PlaySoundEx("NightmarePest/Sight","Voice")
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner",0,0,0,0)
	NSEV B 4 Bright A_FaceTarget
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner",0,0,0,0)
	NSEV B 4 Bright A_FaceTarget
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner",0,0,0,0)
	NSEV B 4 Bright A_FaceTarget
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner",0,0,0,0)
	NSEV B 4 Bright A_FaceTarget
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner",0,0,0,0)
	NSEV B 4 Bright A_FaceTarget
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner",0,0,0,0)
	NSEV B 4 Bright A_FaceTarget
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner",0,0,0,0)
	NSEV B 4 Bright A_FaceTarget
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner",0,0,0,0)
	NSEV B 4 Bright A_FaceTarget
    TNT1 A 0 A_SpawnItem("EnragedHellionSmokeSpawner",0,0,0,0)
	NSEV B 4 Bright A_FaceTarget
	TNT1 A 0 A_CustomMissile("RevBrimstoneRailCore",47,0,0)
    TNT1 A 0 A_CustomMissile("RevBrimstoneRail",47,0,0)
    NSEV K 6 Bright
	NSEV K 1 Bright A_ChangeFlag(NOPAIN,0)
    Goto See
  Railgun:
	TNT1 A 0 A_PlaySound("weapons/rgcharge")
    NSEV J 8 Bright A_FaceTarget
	NSEV J 1 Bright
	TNT1 A 0 A_PlaySound("railgunner/chargedshot")
    TNT1 A 0 A_CustomMissile("RailgunImpactRed", 40, -12, 0)
    TNT1 A 0 A_CustomMissile("RailgunImpactRed", 40, 12, 0)
    NSEV K 0 Bright A_CustomRailgun(Random(40, 60),-12, "Red", None, 1, 1, 0, "HuntertronRailPuff")
	NSEV K 10 Bright A_CustomRailgun(Random(40, 60),12, "Red", None, 1, 1, 0, "HuntertronRailPuff")
	NSEV J 8 Bright A_FaceTarget
	NSEV J 1 Bright
	TNT1 A 0 A_PlaySound("railgunner/chargedshot")
    TNT1 A 0 A_CustomMissile("RailgunImpactRed", 40, -12, 0)
    TNT1 A 0 A_CustomMissile("RailgunImpactRed", 40, 12, 0) 
	NSEV K 0 Bright A_CustomRailgun(Random(40, 60),-12, "Red", None, 1, 1, 0, "HuntertronRailPuff")
	NSEV K 10 Bright A_CustomRailgun(Random(40, 60),12, "Red", None, 1, 1, 0, "HuntertronRailPuff")
	NSEV K 10
	Goto See
  Death:
    NSEX A 2 Bright
    NSEX AAA 1 Bright A_SpawnItemEx("CacoLichPoison",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
    TNT1 AAA 0 A_SpawnItemEx("RedParticleSpawner",0,0,40,0,0,0,0,SXF_CLIENTSIDE,0)
    NSEX B 0 Bright A_Scream
    TNT1 AA 0 A_SpawnItem("NPestilenceGasSpawner",0,0,0,0)
    NSEX B 1 Bright A_SpawnItemEx("NPestPoisonCloud",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
    TNT1 AA 0 A_SpawnItem("NPestilenceGasSpawner",0,0,0,0)
    NSEX B 1 Bright A_SpawnItemEx("NPestPoisonCloud",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
    TNT1 AA 0 A_SpawnItem("NPestilenceGasSpawner",0,0,0,0)
    NSEX B 1 Bright A_SpawnItemEx("NPestPoisonCloud",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
    TNT1 AA 0 A_SpawnItem("NPestilenceGasSpawner",0,0,0,0)
    NSEX B 1 Bright A_SpawnItemEx("NPestPoisonCloud",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
    TNT1 AA 0 A_SpawnItem("NPestilenceGasSpawner",0,0,0,0)
    NSEX B 1 Bright A_SpawnItemEx("NPestPoisonCloud",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
    NSEX C 0 Bright A_NoBlocking
    TNT1 AA 0 A_SpawnItem("NPestilenceGasSpawner",0,0,0,0)
    NSEX C 1 Bright A_SpawnItemEx("NPestPoisonCloud",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
    TNT1 AA 0 A_SpawnItem("NPestilenceGasSpawner",0,0,0,0)
    NSEX C 1 Bright A_SpawnItemEx("NPestPoisonCloud",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
    TNT1 AA 0 A_SpawnItem("NPestilenceGasSpawner",0,0,0,0)
    NSEX C 1 Bright A_SpawnItemEx("NPestPoisonCloud",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
    TNT1 A 0 A_ChangeFlag(NoGravity,0)
    TNT1 AA 0 A_SpawnItem("NPestilenceGasSpawner",0,0,0,0)
    NSEX D 1 Bright
    TNT1 AA 0 A_SpawnItem("NPestilenceGasSpawner",0,0,0,0)
    NSEX D 1 Bright
    TNT1 AA 0 A_SpawnItem("NPestilenceGasSpawner",0,0,0,0)
    NSEX D 1 Bright
    TNT1 AA 0 A_SpawnItem("NPestilenceGasSpawner",0,0,0,0)
    NSEX D 1 Bright
    NSEX EFG 3 Bright
    NSEX H 2 Bright A_FadeOut(0.1,1)
    Wait
  }
}

ACTOR NPestilenceSeeker : Comet
{
Scale 0.45
DamageType "CadaverRocket"
MissileType ""
RenderStyle Add
Alpha 0.85
+SEEKERMISSILE
States
{
Spawn:
TNT1 A 0 A_Tracer2
NPPS AAAAA 1 Bright A_SpawnItemEx("NPestilenceSeekingTail", 0, 0, 0, 0, 0, 0, 0, 128)
TNT1 A 0 A_Tracer2
NPPS BBBBB 1 Bright A_SpawnItemEx("NPestilenceSeekingTail", 0, 0, 0, 0, 0, 0, 0, 128)
Loop
Death:
TNT1 A 0
TNT1 A 0 A_SpawnItemEx("RedParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
NPPS C 3 Bright A_SpawnItemEx("NCometDeath",0,0,0,0,0,0,0,128,0)
NPPS D 3 Bright A_SpawnItemEx("NCometDeathGlow",0,0,0,0,0,0,0,128,0)
NPPS DDDDDD 1 Bright A_SpawnItemEx("NPestPoisonCloud",0,0,10,Random(5,-5),Random(5,-5),Random(6,-3))
Stop
}
}

ACTOR NPestilenceSeekingTail : CometTail
{
Alpha 0.85
Scale 0.65
States
{
Spawn:
TNT1 A 1
NPSP ABCDE 2 Bright A_FadeOut(0.12)
Stop
}
}

ACTOR NCometDeath
{
Projectile
RenderStyle Add
Alpha 0.7
+NOCLIP
States
{
Spawn:
TNT1 A 0
TNT1 AAA 0 A_CustomMissile("KaboomNPest2", 0, 0, random(0,360), 2, random(0,360))
TNT1 AAA 0 A_CustomMissile("SmokeFX2", 0, 0, random(0,360), 2, random(0,360))
NPPS DEFG 3 Bright A_FadeOut(0.1)
Stop
}
}

ACTOR NCometDeathGlow : CometTail
{
Scale 2.0
Alpha 0.6
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("CheckVanilla") == 1, "Vanilla")
NRCB ABCDEFGHI 3 Bright
Stop
}
}

Actor NPestilenceFX : RedParticleSpawner
{
Renderstyle Add
Alpha 0.15
+NONETID
States
  {
  Spawn:
    TNT1 A 0 Bright
    TNT1 A 0 Bright A_CheckSight("Vanilla")
    TNT1 A 0 Bright A_JumpIf(ACS_NamedExecuteWithResult("CheckVanilla") == 1,3)
    TNT1 A 0 Bright A_SpawnItemEx("NPestilenceGas",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("NPestilenceGas",random(-18,18),random(-18,18),random(10,8),1,0,random(-1,-3),0,SXF_NOCHECKPOSITION|SXF_CLIENTSIDE,0)
    NSEV B 2 Bright
    NSEV BB 1 Bright A_FadeOut(0.1,1)
    Stop
  }
}

Actor NPestPoisonCloud : NexusTorturedSoulPoison
{
+DontHurtSpecies
+DontHarmSpecies
Species "Skeletons"
Damagetype "CadaverRocket"
Translation "112:127=176:191"
}
    

Actor NPestilenceGasSpawner : RedParticleSpawner
{
-CLIENTSIDEONLY
-NONETID
States
  {
  Spawn:
    TNT1 A 0 Bright
    TNT1 A 1 Bright A_SpawnItemEx("NPestPoisonCloud",random(-18,18),random(-18,18),random(10,8),1,0,random(-1,-3),0,0,128)
    Stop
  }
}

Actor NPestilenceGas : PoisonSoulGas
{
Scale 0.35
DamageType "CadaverRocket"
Translation "112:127=176:191"
+NONETID
}

ACTOR NPestilenceGrenade : M79Grenade 
{
	Species "Skeletons"
	Damagetype "CadaverRocket"
	Translation "112:127=176:191"
	States 
	{
	Spawn:
		GASM A 1 A_CustomMissile("RedGasSmoke",Random(-1,1),Random(-1,1))     		
		Loop
	Death:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("RedParticleSpawner",0,0,0,0,0,0,0,128)
		TNT1 AAA 0 A_CustomMissile("KaboomNPest",0,0,FRandom(0,360),2,FRandom(0,360))	
		TNT1 AAA 0 A_CustomMissile("SmokeFX2",0,0,FRandom(0,360),2,FRandom(0,360))
		TNT1 AAAAAAAAA 0 A_SpawnItemEx("NPestPoisonCloud",0,0,10,FRandom(4,-4),FRandom(4,-4),FRandom(4,-2))
		TNT1 A 0 A_Explode(128,128)
		GMEX ABCDE 3
		Stop
	}
}

ACTOR RedGasSmoke : RHellionSmoke 
{
scale 0.05
}

ACTOR KaboomNPest : CFKaboom
{
Speed 2
Scale 0.85
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("CheckVanilla") == 1, "Vanilla")
FXPR AABBCDEFGHIJKLM 1 Bright A_FadeOut(0.05)
Stop
}
}

ACTOR KaboomNPest2 : CFKaboom
{
Speed 2
Scale 1
States
{
Spawn:
TNT1 A 0
TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("CheckVanilla") == 1, "Vanilla")
FXPR AABBCDEFGHIJKLM 1 Bright A_FadeOut(0.05)
Stop
}
}