ACTOR PainLord : BaronOfHell
{ 
Health 2000
Speed 8 
PainChance 10
Mass 1000
Bloodcolor Blue
Scale 1.2
Meleedamage 8
DropItem "BossLifeEssence" 200
DropItem "BossArmorBonusMax" 200
DropItem "PainLordSoul" 32
DamageFactor "NobleComet", 0.0
Species "Nobles"
MONSTER 
+FLOORCLIP
+QUICKTORETALIATE
+MISSILEMORE
+AVOIDMELEE
Obituary "%o was cast with eternal suffering by the Pain Lord."
HitObituary "%o got too close to the Pain Lord."
SeeSound "Painlord/Sight" 
ActiveSound "Painlord/Active"
PainSound "Painlord/Pain"
DeathSound "Painlord/Death"
MeleeSound "baron/melee"
States 
{ 
Spawn: 
        PILD A 10 A_Look 
        Loop 
See: 
        TNT1 A 0 A_SpawnItem("HoofStep",0,0,0,0)
		TNT1 A 0 A_SpawnItemEx("PainlordWalkFire",0,0,0,0,0,0,0,128)
        PILD AA 3 Bright A_Chase
		TNT1 A 0 A_SpawnItemEx("PainlordWalkFire",0,0,0,0,0,0,0,128)
        PILD BB 3 Bright A_Chase
        TNT1 A 0 A_SpawnItem("HoofStep",0,0,0,0)
		TNT1 A 0 A_SpawnItemEx("PainlordWalkFire",0,0,0,0,0,0,0,128)
        PILD CC 3 Bright A_Chase
		TNT1 A 0 A_SpawnItemEx("PainlordWalkFire",0,0,0,0,0,0,0,128)
		PILD DD 3 Bright A_Chase
        Loop
Missile:  
        TNT1 A 0 A_Jump(100,"DarkMatter","Comets","FloorShits")
	Normal:
        PILD EF 6 A_FaceTarget 
        PILD G 0 A_Custommissile ("PainlordBall", 32, 0, 0) 
		PILD G 0 A_Custommissile ("PainlordBall", 32, 0, 6)
		PILD G 5 A_Custommissile ("PainlordBall", 32, 0, -6)
        PILD IJ 6 A_FaceTarget
        PILD K 0 A_Custommissile ("PainlordBall", 32, 0, 0)
		PILD K 0 A_Custommissile ("PainlordBall", 32, 0, 6)
		PILD K 5 A_Custommissile ("PainlordBall", 32, 0, -6)
		TNT1 A 0 A_Jump(160,"DarkMatter")
        Goto See
	Comets:
        PILD EF 6 A_FaceTarget 
		PILD G 5 A_Custommissile ("PainLordComet", 32, 0, 0)
        PILD IJ 6 A_FaceTarget
		PILD K 5 A_Custommissile ("PainLordComet", 32, 0, 0)
		TNT1 A 0 A_Jump(128,"DarkMatter")
        Goto See
	DarkMatter:
        PILD MN 8 A_FaceTarget 	
        PILD O 7 A_Custommissile ("PainLordDarkMatter", 32, 0, 0)
		TNT1 A 0 A_Jump(64,"See")
        PILD NMN 8 A_FaceTarget 	
        PILD O 7 A_Custommissile ("PainLordDarkMatter", 32, 0, 0)	
		TNT1 A 0 A_Jump(64,"Normal")	
		Goto See
	FloorShits:
	    PILD M 1 A_Playsound("Painlord/Attack",4)
		PILD MMMMMMMMMMMMMMMMMMMMMMMMMMMMMM 1 A_SpawnItemEx("PainlordBallTrail",random(-30,30),random(-30,30),random(5,65),0,0,1)
        PILD MN 8 A_FaceTarget 	
        PILD O 0 A_Custommissile ("PainlordFloorshits", 32, 0, 20)
        PILD O 0 A_Custommissile ("PainlordFloorshits", 32, 0, -20)
        PILD O 7 A_Custommissile ("PainlordFloorshits", 32, 0, 0)
		TNT1 A 0 A_Jump(128,"See")	
		Goto See
Melee:
        PILD EF 5 A_FaceTarget 
        PILD G 4 A_MeleeAttack 
        PILD FE 3 A_FaceTarget 		
        Goto See
Pain: 
        PILD Q 10 A_Pain 
        Goto See 
Death: 
		PALO Q 0 A_SetTranslucent(1.0)
        PALO Q 0 A_Scream
		TNT1 A 0 A_FaceTarget
		TNT1 A 0 Radius_Quake(6,200,2,64,8)
        PILD QQQQQQQQQQ 2 A_SpawnItemEx("ShadowVaporSpawner2",0,0,32,0,0,0,0,32)
        PILD QQQQQQQQQQ 3 A_SpawnItemEx("PainLordDeathExplosionSpawner2",0,0,32,0,0,0,0,32)
		TNT1 AAAA 0 A_SpawnItemEx("Debris",32,0,Random(20,40),Random(4,-4),Random(4,-4),Random(4,8),0,128)
		TNT1 AAA 0 A_CustomMissile("BlueKaboom", 32, 0, random(0,360), 2, random(0,360))	
		TNT1 AAA 0 A_CustomMissile("SmokeFX2", 32, 0, random(0,360), 2, random(0,360))
		TNT1 A 0 A_NoBlocking
        TNT1 A 0 A_Explode(300,200,1)
        PILD RR 1 A_SpawnItemEx("ShadowVaporSpawner2",0,0,32,0,0,0,0,32)
        PILD RR  1 A_SpawnItemEx("PainLordDeathExplosionSpawner2",0,0,32,0,0,0,0,32)
        PILD SS 1 A_SpawnItemEx("ShadowVaporSpawner2",0,0,32,0,0,0,0,32)
        PILD SS 1 A_SpawnItemEx("PainLordDeathExplosionSpawner2",0,0,32,0,0,0,0,32)
        PILD TT 1 A_SpawnItemEx("ShadowVaporSpawner2",0,0,32,0,0,0,0,32)
        PILD TT 1 A_SpawnItemEx("PainLordDeathExplosionSpawner2",0,0,32,0,0,0,0,32)
		PILD UV 8
		PILD WXY 6
		PILD Z -1
       Stop
        } 
}


Actor PainlordWalkFire : DukeWalkFire
{
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
    TNT1 A 10
    FRBB ABC 3 Bright
    TNT1 A 0 A_Jump(191,3)
    TNT1 A 0 A_CustomMissile("PainlordWalkFire", 0, 24, 0)
    TNT1 A 0 A_CustomMissile("PainlordWalkFire", 0, -24, 0)
    FRBB DEFGHIJKLMNO 3 Bright
    Stop
  }
}


Actor PainlordBall
{
  Radius 8
  Height 8
  Mass 20
  Speed 25
  Damage 10
  RenderStyle Add
  Alpha 0.90
  Projectile
  Species "Nobles"
  +DONTHURTSPECIES
  Damagetype "Nobles"
  DamageType "NobleComet"
  SeeSound "monsters/newfireshoot"
  DeathSound "monsters/newfireexplode"
  States
  {
  Spawn:
    VLBB AABB 1 BRIGHT A_SpawnItemEx ("PainlordBallTrail", 0, 0, 0, random(0, -2), random(-1, 1), random(-1, 1), 0, 0, 0)
    Loop
  Death:
	ICE9 A 0 BRIGHT A_CustomMissile("PainlordBallSplitFire",0,0,random(0,359),CMF_TRACKOWNER,random(0,60))
    ICE9 A 0 BRIGHT A_CustomMissile("PainlordBallSplitFire",0,0,random(0,359),CMF_TRACKOWNER,random(0,60))
    ICE9 A 0 BRIGHT A_CustomMissile("PainlordBallSplitFire",0,0,random(0,359),CMF_TRACKOWNER,random(0,60))
    ICE9 A 0 BRIGHT A_CustomMissile("PainlordBallSplitFire",0,0,random(0,359),CMF_TRACKOWNER,random(0,60))
    ICE9 A 0 BRIGHT A_CustomMissile("PainlordBallSplitFire",0,0,random(0,359),CMF_TRACKOWNER,random(0,60))
    ICE9 A 0 BRIGHT A_CustomMissile("PainlordBallSplitFire",0,0,random(0,359),CMF_TRACKOWNER,random(0,60))
	ICE9 A 2 BRIGHT A_CustomMissile("PainlordBallSplitFire",0,0,random(0,359),CMF_TRACKOWNER,random(0,60))
    ICE9 B 2 BRIGHT
    ICE9 C 2 BRIGHT
    ICE9 DEF 4 BRIGHT
    Stop
  }
}

ACTOR PainlordBallSplitFire
{
  Radius 8
  Height 6
  Speed 25
  Damage 5
  Renderstyle Add
  Alpha 0.90
  Gravity 0.825
  Species "Nobles"
  Damagetype "Nobles"
  DamageType "NobleComet"
  +DONTHURTSPECIES
  +THRUGHOST
  +NOBLOCKMAP
  +MISSILE
  +DROPOFF
  +NOTELEPORT
  States
  {
  Spawn:
    VBSB AAAABBBB 1 BRIGHT A_SpawnItemEx ("PainlordBallTrail", 0, 0, 0, random(0, -2), random(-1, 1), random(-1, 1), 0, 0, 0)
    Loop
  Death:
    VLBE CBABCDE 4 BRIGHT
    Stop
  }
}

ACTOR PainlordBallTrail : ImpBallTrail
{
  +NOBLOCKMAP
  +NOGRAVITY
  RenderStyle Add
  Alpha 1
  Scale 0.25
  States
  {
  Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
    BMKE A 1 Bright A_ChangeVelocity(0,0,0.7)
	TNT1 A 0 A_FadeOut
	BMKE B 1 Bright A_ChangeVelocity(0,0,0.7)
	TNT1 A 0 A_FadeOut
	BMKE C 1 Bright A_ChangeVelocity(0,0,0.7)
	TNT1 A 0 A_FadeOut
	BMKE D 1 Bright A_ChangeVelocity(0,0,0.7)
	TNT1 A 0 A_FadeOut
	BMKE E 1 Bright A_ChangeVelocity(0,0,0.7)
	TNT1 A 0 A_FadeOut
	BMKE F 1 Bright A_ChangeVelocity(0,0,0.7)
	TNT1 A 0 A_FadeOut
	BMKE G 1 Bright A_ChangeVelocity(0,0,0.7)
	TNT1 A 0 A_FadeOut
	BMKE H 1 Bright A_ChangeVelocity(0,0,0.7)
	TNT1 A 0 A_FadeOut
	BMKE I 1 Bright A_ChangeVelocity(0,0,0.7)
	TNT1 A 0 A_FadeOut
	BMKE J 1 Bright A_ChangeVelocity(0,0,0.7)
	TNT1 A 0 A_FadeOut
	BMKE K 1 Bright A_ChangeVelocity(0,0,0.7)
	TNT1 A 0 A_FadeOut
	BMKE L 1 Bright A_ChangeVelocity(0,0,0.7)
	TNT1 A 0 A_FadeOut
    Stop
  }
}


Actor PainLordComet : Comet
{
ExplosionDamage 70
Damage 5
DamageType "NobleComet"
ExplosionRadius 112
Species "Nobles"
+DONTHURTSPECIES
Damagetype "Nobles"
Speed 25
Decal Scorch
States
{
Spawn:
LNCM AAAABBBBCCCC 1 Bright A_SpawnItemEx("PLCometTail",0,0,0,0,0,0,0,128)
Loop
Death:
TNT1 A 0 Bright A_Explode
TNT1 A 0 A_SpawnItemEx("BlueParticleSpawner", 0, 0, 0, 0, 0, 0, 0, 128)
LNCM DE 3 Bright
TNT1 A 0 A_SpawnItemEx("PLCometDeath",0,0,0,0,0,0,0,128,0)
Stop
}
}

ACTOR PLCometDeath : CometDeath
{
States
{
Spawn:
TNT1 A 0
TNT1 AAAA 0 A_SpawnItemEx("Debris",0,0,Random(20,40),Random(4,-4),Random(4,-4),Random(4,8),0,128)
TNT1 AAA 0 A_CustomMissile("BlueKaboom", 0, 0, random(0,360), 2, random(0,360))	
TNT1 AAA 0 A_CustomMissile("SmokeFX2", 0, 0, random(0,360), 2, random(0,360))
LNCM JJJKKKLLMMNN 1 Bright A_FadeOut(0.065)
Stop
}
}

ACTOR PLCometTail : CometTail
{
Scale 1.15
+CLIENTSIDEONLY
States
{
Spawn:
    TNT1 A 0
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "Toaster")
TNT1 A 2 Bright
BLUR DEFGHI 2 Bright
Stop
  Toaster:
    TNT1 A 0
	Stop	
}
}


ACTOR PainLordDarkMatter : Comet
{
    Speed 32
    Damage 30
    Scale 0.5
    +EXTREMEDEATH
    RenderStyle Translucent
    Alpha 0.625
    Damagetype "NobleComet"
    States
    {
    Spawn:
	DMGB AA 0 Bright A_SpawnItemEx("DarkMatterSpark2",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB A 1 Bright A_SpawnItemEx("DarkMatterSpark2",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB AA 0 Bright A_SpawnItemEx("DarkMatterSpark2",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB A 1 Bright A_SpawnItemEx("DarkMatterSpark2",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB AA 0 Bright A_SpawnItemEx("DarkMatterSpark2",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB A 1 Bright A_SpawnItemEx("DarkMatterSpark2",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB BB 0 Bright A_SpawnItemEx("DarkMatterSpark2",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB B 1 Bright A_SpawnItemEx("DarkMatterSpark2",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB BB 0 Bright A_SpawnItemEx("DarkMatterSpark2",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB B 1 Bright A_SpawnItemEx("DarkMatterSpark2",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB BB 0 Bright A_SpawnItemEx("DarkMatterSpark2",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB B 1 Bright A_SpawnItemEx("DarkMatterSpark2",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB CC 0 Bright A_SpawnItemEx("DarkMatterSpark2",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB C 1 Bright A_SpawnItemEx("DarkMatterSpark2",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB CC 0 Bright A_SpawnItemEx("DarkMatterSpark2",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB C 1 Bright A_SpawnItemEx("DarkMatterSpark2",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB CC 0 Bright A_SpawnItemEx("DarkMatterSpark2",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB C 1 Bright A_SpawnItemEx("DarkMatterSpark2",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	GoTo Spawn+1
    Death:
	TNT1 A 0
	TNT1 A 0 A_Playsound("PainLord/Explode1",7)
	TNT1 AAAA 0 A_SpawnItemEx("Debris",0,0,Random(20,40),Random(4,-4),Random(4,-4),Random(4,8),0,128)
	TNT1 AAA 0 A_CustomMissile("BlueKaboom", 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 A 0 A_SpawnItemEx("PainLordDeathExplosionSpawner2",0,0,0,0,0,0,0,32)
	TNT1 A 0 A_SpawnItemEx("ShadowVaporSpawner2",0,0,0,0,0,0,0,32)
	TNT1 A 0 A_Explode(130,200,1)
	TNT1 A 15 Radius_Quake(5,15,0,20,0)
	Stop
	}
}

ACTOR DarkMatterSpark2
{
    RenderStyle translucent
    Scale 0.75
    Alpha 0.5
    PROJECTILE
    States
    {
    Spawn:
	VPXS ABCDEFGHIJKL 1 Bright A_FadeOut(0.04)
	Loop
    }
}

ACTOR ShadowVaporSpawner2
{
+NOINTERACTION
RenderStyle none
States
{
Spawn:
	NULL A 0
	NULL AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("ShadowVapor2",0,0,0,random(4,-4),random(4,-4),random(4,-4),random(0,359),32)
	PLAY A 2
	PLAY BCDEF 4
	Stop
}
}

ACTOR ShadowVapor2
{
PROJECTILE
+RIPPER
+RANDOMIZE
DamageType "NobleComet"
Damage (1)
Speed 0
Radius 2
Height 2
renderstyle Translucent
Scale 0.65
Alpha 0.4
+DOOMBOUNCE
+BLOODLESSIMPACT
States
{
Spawn:
	VPXS MNOPQRSTUVWXYZ 1 Bright A_FadeOut(0.018)
	VPXS ABC 2 A_FadeOut(0.018)
	Stop
}
}

ACTOR PainLordDeathExplosionSpawner2
{
+NOINTERACTION
RenderStyle none
States
{
Spawn:
	NULL A 0
	NULL AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("PainLordVapor2",0,0,0,random(4,-4),random(4,-4),random(4,-4),random(0,359),32)
	PLAY A 2
	PLAY BCDEF 4
	Stop
}
}

ACTOR PainLordVapor2
{
PROJECTILE
+RANDOMIZE
Speed 0
Radius 2
Height 2
renderstyle Add
Scale 0.65
DamageType "NobleComet"
Alpha 0.9
+DOOMBOUNCE
+SPAWNSOUNDSOURCE
States
{
Spawn:
	TNT1 A 0
	TNT1 A 0 A_Playsound("PainLord/Explode2",7)
	ICE9 ABCDEF 3
	Stop
}
}



ACTOR PainlordFloorshits      
{
  PROJECTILE
  +DROPOFF
  -NoGravity
  +FloorHugger
  +SeekerMissile
  Speed 23
  RenderStyle Add
  Alpha 0.8
  Scale 1.5
  Damage 5
  DamageType "NobleComet"
  SeeSound "weapons/diasht"
  DeathSound "weapons/firex3"
  States
  {
  Spawn:
	TNT1 A 0
    TNT1 A 0 A_PlaySoundEx("monster/ambientfire2","Voice",1)
	FLFB C 1 BRIGHT A_CustomMissile("ImpureVileFloorshitsTrail", 0, 0, 0)
	TNT1 A 0 A_CStaffMissileSlither
	FLFB C 1 BRIGHT A_CustomMissile("ImpureVileFloorshitsTrail", 0, 0, 0)
	TNT1 A 0 A_CStaffMissileSlither
	FLFB D 1 BRIGHT A_CustomMissile("ImpureVileFloorshitsTrail", 0, 0, 0)
	TNT1 A 0 A_CStaffMissileSlither
	FLFB D 1 BRIGHT A_CustomMissile("ImpureVileFloorshitsTrail", 0, 0, 0)
	TNT1 A 0 A_CStaffMissileSlither
	FLFB C 1 BRIGHT A_CustomMissile("ImpureVileFloorshitsTrail", 0, 0, 0)
	TNT1 A 0 A_CStaffMissileSlither
	FLFB C 1 BRIGHT A_CustomMissile("ImpureVileFloorshitsTrail", 0, 0, 0)
	TNT1 A 0 A_CStaffMissileSlither
	FLFB D 1 BRIGHT A_CustomMissile("ImpureVileFloorshitsTrail", 0, 0, 0)
	TNT1 A 0 A_CStaffMissileSlither
	FLFB D 1 BRIGHT A_CustomMissile("ImpureVileFloorshitsTrail", 0, 0, 0)
	TNT1 A 0 A_CStaffMissileSlither
	TNT1 A 0 A_Seekermissile(5, 25)
	Loop
    Death:
	TNT1 A 0
    TNT1 A 0 A_StopSoundEx("Voice")
	TNT1 A 0 A_Explode(90, 120)
	TNT1 AAAA 0 A_CustomMissile("SmokeFX2", 0, 0, random(0,360), 2, random(0,360))
	FLFB KLMNO 4
	Stop
  }
}
