actor PowerPaladin : PowerMorph
{
powerup.duration 99999999999999
PowerMorph.PlayerClass "PaladinPlayer"
}

ACTOR PaladinPlayer : PlayerPawn
{
  Health 1000
  Radius 32
  Height 115
  Mass 1000
  Player.forwardmove 0.8
  Player.sidemove 0.8
  Player.ViewHeight 90
  Player.DisplayName "Paladin"
  Player.MorphWeapon "PaladinWeapon0"
  Player.SoundClass "Paladin"
  Player.StartItem "Mana", 100
  DamageFactor "Boss", 0
  DamageFactor "Player", 1.0
  limitedtoteam 1
  SeeSound "Paladin/Sight"
  ActiveSound "Paladin/Active"
  PainSound "Paladin/Pain"
  DeathSound "Paladin/Death"
  PainChance 64
  +NORADIUSDMG
  +NOBLOOD
  +NOSKIN
  -PICKUP
  bloodcolor black
  states
{
	Spawn:
		KPAL B 4 SetPlayerProperty(0, 1, 1)
		Loop
	See: 
		KPAL A 4 SetPlayerProperty(0, 1, 1)
		KPAL B 0 A_PlaySound("Paladin/Step",6) 
	    KPAL B 0 A_SpawnItemEx("UniversalStomp")
		KPAL A 4
	    KPAL BBC 4  
		KPAL D 0 A_PlaySound("Paladin/Step",6) 
	    KPAL D 0 A_SpawnItemEx("UniversalStomp")
		KPAL CBB 4
	    Goto Spawn 
	Pain:
		TNT1 A 0 A_Pain
		KPAL E 4
	    Goto Spawn
	Missile:
        KPAL DDDDD 2 A_JumpIfInventory("UsingPaladinBlaster",1,"PaladinBlaster")
		Goto Spawn
	PaladinBlaster:
		KPAL D 130
		Goto Spawn
	Death:
	    TNT1 A 0 a_givetotarget("BOSSKILLEDSTAT", 1)
		TNT1 A 1 a_givetotarget("reward", 1)
		KPAL E 0 A_Scream
	    KPAL EEEEEEEEEEEE 5 A_SpawnItemEx ("ExplosionEffect", random(-38,38), 0, random(5,105), 0, 0, 0, 0, 160)
        KPAL F 2
	    KPAL EEEEE 0 A_SpawnItemEx ("ExplosionEffect", random(-38,38), 0, random(5,105), 0, 0, 0, 0, 160)
        KPAL F 2
        KPAL G 4
        KPAL H 4
        KPAL I 4 A_NoBlocking
        KPAL J 4
		KPAL K 0 A_PlaySound ("Paladin/Fall",CHAN_6,1.0,0,ATTN_NONE)
		KPAL K 0 A_PlaySound ("Paladin/Fall",CHAN_7,1.0,0,ATTN_NONE)
        KPAL K 4 A_PlaySound ("Paladin/Fall",CHAN_WEAPON,1.0,0,ATTN_NONE)
        KPAL L -1
        Stop
   }
}

ACTOR PaladinWeapon0 : Weapon 
{
 Weapon.SelectionOrder 800
 Obituary "%o was raped by %k"
 Inventory.PickupMessage ""
 Inventory.PickupSound "misc/pk_up"
 Weapon.AmmoUse 0
 Weapon.AmmoGive 0
 Weapon.AmmoType "Mana"
 +WEAPON.NOAUTOAIM
  States
 {
  Spawn:
       TNT1 A -1
       Loop
  Ready:
       TNT1 A 1 A_WeaponReady
       goto AltFire
  Fire:
  TNT1 A 1
  goto AltFire
  Deselect:
       TNT1 A 1 A_Lower
       Loop
  Select:
       TNT1 A 0 A_Raise
       Loop
  AltFire:
       TNT1 A 0 A_GiveInventory("PaladinWeapon")
       TNT1 A 0 A_SelectWeapon("PaladinWeapon")
       TNT1 A 0 
       goto deselect
  Flash:
       SNIF F 3 Bright A_Light2
       SNIF F 3 Bright A_Light1
       SNIF F 0 Bright A_Light0
       Goto LightDone     
       }
}

actor Paladinattackmode1 : Inventory
{
Inventory.Amount 1
Inventory.MaxAmount 1
  States
  {
  Spawn:
    TNT1 A -1
    Stop
  }
}

actor Paladinattackmode2 : Inventory
{
Inventory.Amount 1
Inventory.MaxAmount 1
  States
  {
  Spawn:
    TNT1 A -1
    Stop
  }
}

actor Paladinattackmode3 : Inventory
{
Inventory.Amount 1
Inventory.MaxAmount 1
  States
  {
  Spawn:
    TNT1 A -1
    Stop
  }
}

actor Paladinattackmode4 : Inventory
{
Inventory.Amount 1
Inventory.MaxAmount 1
  States
  {
  Spawn:
    TNT1 A -1
    Stop
  }
}

ACTOR PaladinWeapon : Weapon 
{
 Weapon.SelectionOrder 800
 Obituary "%o was vaporized by %k"
 Inventory.PickupMessage ""
 Inventory.PickupSound "misc/pk_up"
 Weapon.AmmoUse 0
 Weapon.AmmoGive 0
 Weapon.AmmoType "Mana"
 +WEAPON.NOAUTOAIM
 +INVENTORY.UNDROPPABLE
  States
 {
  Spawn:
       TNT1 A -1
       Loop
  Ready:
       TNT1 A 0 SetPlayerProperty (0, 0, 0)
       CLA3 A 1 A_WeaponReady(WRF_ALLOWRELOAD)
       goto ready
  Deselect:
       CLA3 A 1 A_Lower
       Loop
  Select:
       CLA3 A 0 A_Raise
       Loop
  Fire:
       TNT1 A 0 A_jumpIfinventory("Paladinattackmode1", 1, "PlasmaRiflecheck")
       TNT1 A 0 A_jumpIfinventory("Paladinattackmode2", 1, "PlasmaCannoncheck")
       TNT1 A 0 A_jumpIfinventory("Paladinattackmode3", 1, "Blastercheck")
	   TNT1 A 0 A_jumpIfinventory("Paladinattackmode4", 1, "Sapphirecheck")
	   Goto ready
  AltFire:
  	   CLA3 A 1 ACS_execute(812)
       CLA3 A 1
       CLA3 A 13
       goto ready
  PlasmaRifle:
       TNT1 A 0 A_Takeinventory("mana", 3)
       TNT1 A 0 A_GunFlash
       CLA3 B 3 bright A_FireCustomMissile("PaladinPlasmaBolt", 0, 0, 0, 0)
       CLA3 A 3 bright
       Goto Ready
  PlasmaCannon:
       TNT1 A 0 A_Takeinventory("mana", 10)
       TNT1 A 0 A_GunFlash
       CLA3 B 5 A_FireCustomMissile("PaladinPlasmaBlast", 0, 0, 0, 0)
       CLA3 A 5 bright
       Goto Ready
  Blaster:
	   TNT1 A 0 A_GiveInventory("UsingPaladinBlaster",1)
       TNT1 A 0 A_GunFlash
	   TNT1 A 0 SetPlayerProperty (0, 1, 0)
	   TNT1 A 0 A_PlaySound ("Paladin/BlasterCharge",CHAN_ITEM,1.0,0,ATTN_NONE)
	   CLA3 AAAAAAAAAA 1 A_SpawnItemEx("PaladinBlasterChargeParticle",0,0,55,random(-30,30),random(-30,30),random(-30,30),random(0,360))
	   CLA3 AAAAAAAAAA 1 A_SpawnItemEx("PaladinBlasterChargeParticle",0,0,55,random(-30,30),random(-30,30),random(-30,30),random(0,360))
	   CLA3 AAAAAAAAAA 1 A_SpawnItemEx("PaladinBlasterChargeParticle",0,0,55,random(-30,30),random(-30,30),random(-30,30),random(0,360))
	   CLA3 AAAAAAAAAA 1 A_SpawnItemEx("PaladinBlasterChargeParticle",0,0,55,random(-30,30),random(-30,30),random(-30,30),random(0,360))
	   CLA3 AAAAAAAAAA 1 A_SpawnItemEx("PaladinBlasterChargeParticle",0,0,55,random(-30,30),random(-30,30),random(-30,30),random(0,360))
	   CLA3 AAAAAAAAAA 1 A_SpawnItemEx("PaladinBlasterChargeParticle",0,0,55,random(-30,30),random(-30,30),random(-30,30),random(0,360))
	   CLA3 AAAAAAAAAA 1 A_SpawnItemEx("PaladinBlasterChargeParticle",0,0,55,random(-30,30),random(-30,30),random(-30,30),random(0,360))
	   CLA3 AAAAAAAAAA 1 A_SpawnItemEx("PaladinBlasterChargeParticle",0,0,55,random(-30,30),random(-30,30),random(-30,30),random(0,360))
	   CLA3 AAAAAAAAAA 1 A_SpawnItemEx("PaladinBlasterChargeParticle",0,0,55,random(-30,30),random(-30,30),random(-30,30),random(0,360))
	   CLA3 AAAAAAAAAA 1 A_SpawnItemEx("PaladinBlasterChargeParticle",0,0,55,random(-30,30),random(-30,30),random(-30,30),random(0,360))
	   CLA3 AAAAAAAAAA 1 A_SpawnItemEx("PaladinBlasterChargeParticle",0,0,55,random(-30,30),random(-30,30),random(-30,30),random(0,360))
	   CLA3 AAAAAAAAAA 1 A_SpawnItemEx("PaladinBlasterChargeParticle",0,0,55,random(-30,30),random(-30,30),random(-30,30),random(0,360))
	   TNT1 A 0 A_StopSound(CHAN_ITEM)
	   TNT1 A 0 A_PlaySound ("Paladin/Blaster",CHAN_WEAPON,1.0,0,ATTN_NONE)
	   TNT1 A 0 A_PlaySound ("Paladin/Blaster",CHAN_6,1.0,0,ATTN_NONE)
	   TNT1 A 0 A_PlaySound ("Paladin/Blaster",CHAN_7,1.0,0,ATTN_NONE)
	   TNT1 A 0 A_Takeinventory("mana", 90)
       CLA3 B 5 A_FireCustomMissile("PaladinBlasterProjectile", 0, 0, 0, 0)
       CLA3 A 35
	   TNT1 A 0 A_GiveInventory("PaladinBlasterCooldown",1)
	   TNT1 A 0 SetPlayerProperty (0, 0, 0)
	   TNT1 A 0 A_TakeInventory("UsingPaladinBlaster",1)
       Goto Ready
  Sapphire:
       TNT1 A 0 A_GunFlash
	   TNT1 A 0 A_PlayWeaponSound("LaserCannon2/Ready")
	   CLA3 A 15 bright
	   CLA3 A 0 A_Refire("SapphireLoop")
	   Goto Ready
  SapphireLoop:
       TNT1 A 0 A_jumpIfinventory("mana", 12,1)  
       Goto ready
	   TNT1 A 0 A_Takeinventory("mana", 12)
       CLA3 B 3 A_FireCustomMissile("PaladinBlueStar", 0, 0, 0, 0)
       CLA3 A 3 bright
	   CLA3 A 0 A_Refire("SapphireLoop")
       Goto Ready
  Reload:
       TNT1 A 0 A_jumpIfinventory("PaladinDashCooldown", 1, "Ready")
	   TNT1 A 0 A_Giveinventory("PaladinDashCooldown", 1)
       TNT1 A 0 A_PlayWeaponSound("Paladin/Active2")
	   TNT1 A 0 A_Recoil(-16)
	   CLA3 B 3 Bright 
	   TNT1 A 0 A_Recoil(-16)
	   CLA3 B 3 Bright 
	   TNT1 A 0 A_Recoil(-16)
	   CLA3 B 3 Bright
	   TNT1 A 0 A_Recoil(-16)
	   CLA3 B 3 Bright
       Goto Ready
  PlasmaRiflecheck:
       TNT1 A 0 A_jumpIfinventory("mana", 3, "PlasmaRifle")
  goto ready
  PlasmaCannoncheck:
       TNT1 A 0 A_jumpIfinventory("mana", 10, "PlasmaCannon")  
  goto ready
  Blastercheck:
	   TNT1 A 0 A_jumpIfinventory("PaladinBlasterCooldown", 1, "Ready")
       TNT1 A 0 A_jumpIfinventory("mana", 90, "Blaster")  
  goto ready
  Sapphirecheck:
       TNT1 A 0 A_jumpIfinventory("mana", 12, "Sapphire")  
  goto ready
  Flash:
       SNIF F 3 Bright A_Light2
       SNIF F 3 Bright A_Light1
       SNIF F 0 Bright A_Light0
       Goto LightDone     
       }
}

ACTOR PaladinPlasmaBolt
{
    Speed 50
    Radius 12
    Height 12
    Damage (15)
    Alpha 0.8
    SeeSound "LaserCannon/Fire"
    DeathSound "LaserCannon/End"
    Decal "PlasmaScorchLower"
    Obituary "%o was suppressed by the Paladin."
    Projectile
    RenderStyle Add
	DamageType "Boss"
	Translation "168:191=192:207", "16:47=192:207"
    +SPAWNSOUNDSOURCE
    States
    {
    Spawn:
        SHTZ A 1 Bright A_SpawnItem ("PaladinPlasmaBoltTrail")
        Loop
    Death:
	    TNT1 A 0 A_Explode(16,96)
        SHTZ LMN 2 Bright 
        Stop
    }
}

ACTOR PaladinPlasmaBoltTrail
{
    Translation "168:191=192:207", "16:47=192:207"
    Renderstyle Add
    +NOINTERACTION
    +CLIENTSIDEONLY
    States
    {
    Spawn:
	    TNT1 A 0
	    TNT1 A 1
        SHTZ ABCDEFGHIJK 1 Bright A_FadeOut (0.05)
        Stop
    }
}

ACTOR PaladinPlasmaBlast : FastProjectile
{
	Radius 12
	Height 12
	Speed 80
	Damage 10
	Scale 0.65
	SeeSound "LaserCannon3/See"
	DeathSound "LaserCannon3/End"
	Translation "168:191=192:207", "16:47=192:207"
	DamageType "Boss"
    Obituary "%o was suppressed by the Paladin."
	Projectile
	RenderStyle Add
    +SPAWNSOUNDSOURCE
	States
	{
	Spawn:
		ANFB AAABBBCCC 1 Bright A_CustomMissile("PaladinPlasmaBlastTrail",random(-5,5),random(8,-8),0)
		Loop
	Death:
	    TNT1 A 0 A_Explode(18,128)
		ANFB DEFG 3 Bright
		Stop
	}
}

Actor PaladinPlasmaBlastTrail : SLM1Trail
{
    Translation "168:191=192:207", "16:47=192:207"
	+NOGRAVITY
	States
	{
	Spawn:
		SHTR ABCDDE 3 Bright
		SHTR F 1 Bright A_FadeOut(0.1)
		Wait
	}
}

ACTOR PaladinBlueStar
{
    Radius 12
    Height 12
    Speed 20
    Damage 5
    Scale 0.8
    Alpha 0.8
    SeeSound "LaserCannon2/Fire"
    DeathSound "LaserCannon2/End"
    Obituary "%o was suppressed by the Paladin."
	Translation "168:191=192:207", "16:47=192:207"
	DamageType "Boss"
    Projectile
    RenderStyle Add
	+SEEKERMISSILE
    +SPAWNSOUNDSOURCE
	+LOOKALLAROUND
    States
    {
    Spawn:
	    TNT1 A 0
        TNT1 A 0 A_RearrangePointers(AAPTR_NULL,AAPTR_TARGET,AAPTR_TRACER)
        TNT1 A 0 A_LookEx(0,0,0,0,0,"Acquired")
        TNT1 A 0 A_RearrangePointers(AAPTR_MASTER,AAPTR_MASTER,AAPTR_TRACER)
        Goto Idle
    Acquired:
        TNT1 A 0 A_RearrangePointers(AAPTR_MASTER,AAPTR_MASTER,AAPTR_TARGET)
        Goto Idle
	Idle:
        PSTA A 2 Bright A_SpawnItemEx("BluestarFX2",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
		TNT1 A 0 A_SeekerMissile(25,10)
		PSTA A 2 Bright A_SpawnItemEx("BluestarFX2",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
		TNT1 A 0 A_SeekerMissile(25,10)
		PSTA B 2 Bright A_SpawnItemEx("BluestarFX2",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
		TNT1 A 0 A_SeekerMissile(25,10)
		PSTA B 2 Bright A_SpawnItemEx("BluestarFX2",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
		TNT1 A 0 A_SeekerMissile(25,10)
		PSTA C 2 Bright A_SpawnItemEx("BluestarFX2",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
		TNT1 A 0 A_SeekerMissile(25,10)
		PSTA C 2 Bright A_SpawnItemEx("BluestarFX2",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
		TNT1 A 0 A_SeekerMissile(25,10)
		PSTA D 2 Bright A_SpawnItemEx("BluestarFX2",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
		TNT1 A 0 A_SeekerMissile(25,10)
		PSTA D 2 Bright A_SpawnItemEx("BluestarFX2",0,0,0,0,0,0,0,SXF_CLIENTSIDE)
		TNT1 A 0 A_SeekerMissile(25,10)
        Loop
    Death:
        PSTA EFGHIJKLMNO 3 Bright
        Stop
    }
}

ACTOR BluestarFX2
{   
    Speed 0
    Radius 2
    Height 2
    Scale 0.5
    Alpha 0.67
    Projectile
    RenderStyle Add
    +CLIENTSIDEONLY
	Translation "168:191=192:207", "16:47=192:207"
    States
    {
    Spawn:
        TNT1 A 1
        PSTA PQ 3 Bright A_FadeOut(0.1)
        Goto Spawn+1
    }
}

Actor PaladinBlasterProjectile : FastProjectile
{
	Speed 200
	Radius 12
	Height 12
	Damage (500)
	Alpha 0.6
	Renderstyle Add
	MissileType "PaladinBlasterTrail"
	DeathSound "Paladin/BlasterExplosion"
	Obituary ""
	damagetype "Boss"
	Scale 1.0
	+SPAWNSOUNDSOURCE
	States
	{
		Spawn:
			KPAB A 1
			Loop
		Death:
			TNT1 A 0 A_Explode(256,256, 0)
			TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("PaladinBlasterParticles",0,0,0,frandom(-10,10),frandom(-10, 10),frandom(-10,10),random(0, 359))
			TNT1 AAAAAAAAAA 0 A_SpawnItemEx("PaladinBlasterParticles2",0,0,0,random(-15,15),random(-15, 15),random(-15,15),random(0, 359))
			TNT1 A 0 A_SpawnItemEx("PaladinBlasterPuff",0,0,4,0,0,0,0,SXF_NOCHECKPOSITION)
			Stop
	}
}

ACTOR PaladinBlasterPuff
{
	+NoInteraction
	+ClientSideOnly
	+NoBlockMap
	+Noclip
	DONTHURTSHOOTER
	RenderStyle Add
	Scale 0.8
	States
	{
	Spawn:
		VNFX A 1 Bright A_SetScale(scalex-0.04)
		TNT1 A 0 A_FadeOut(0.04)
		Loop
	Death:
		TNT1 A 1
		Stop
	}
}

ACTOR PaladinBlasterTrail
{
	+NOINTERACTION
	+CLIENTSIDEONLY
	DONTHURTSHOOTER
	RenderStyle Add
	Scale 1.0
	States
	{
	Spawn:
		TNT1 A 0
		TNT1 A 0 A_SpawnItemEx("BluestarFX2",0,0,0,frandom(-7,7),frandom(-7,7),frandom(-7,7),random(1,360))
		KPAB A 1 Bright A_SetScale(scalex-0.03)
		TNT1 A 0 A_FadeOut(0.03)
		Goto Spawn+2
	Death:
		TNT1 A 1
		Stop
	}
}

Actor PaladinBlasterParticles
{
	+CLIENTSIDEONLY
	+NoGravity
	+HexenBounce
	RenderStyle Add
	Scale 0.1
	Alpha 1.0
	States
	{
		Spawn:
			VNFX A 2 Bright A_FadeOut(0.04)
			VNFX A 0 A_ScaleVelocity(0.95)
			VNFX A 0 Bright A_SetScale(scalex*0.95)
			Loop
	}
}

Actor PaladinBlasterParticles2
{
	Projectile
	Damage 0
	+ClientSideOnly
	+NoBlockMap
	+HexenBounce
	Speed 0
	Radius 1
	Height 1
	RenderStyle Add
	States
	{
  Spawn:
    TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 Bright A_SpawnItemEx("PaladinBlasterParticles",0,0,0,frandom(-1,1),frandom(-1,1),frandom(-1,1),random(1,360), SXF_TRANSFERTRANSLATION)
    Stop
	}
}

Actor PaladinDashCooldown : PowerDamage
{
	DamageFactor "Nothing", 1.0
	PowerUp.Duration -7
}

Actor PaladinBlasterCooldown : PowerDamage
{
	DamageFactor "Nothing", 1.0
	PowerUp.Duration -25
}

Actor UsingPaladinBlaster : Inventory
{
	inventory.maxamount 1
}

ACTOR MiniSentinel
{
    Health 40
	Painchance 164
	Speed 6
    Radius 12
    Height 26
	Mass 300
    SeeSound "MiniSent/Sight"
    ActiveSound "MiniSent/Active"
    PainSound "MiniSent/Pain"
    DeathSound "MiniSent/Death"
    Monster
	+NOBLOOD
	+NOGRAVITY
	+FLOAT
	+NOICEDEATH
	+DROPOFF
	+MISSILEMORE
	+NOBLOODDECALS
	+PUSHABLE
    +QUICKTORETALIATE
	+THRUSPECIES
    -COUNTKILL
	Species "Boss"
	DamageType "Boss"
	DamageFactor "Boss", 0
    Obituary "%o was gunned down by a Mini Sentinel."
    States
    {
	Spawn:
		MNDR AA 3 A_Look
        Goto See
	Clear:
	    TNT1 A 0 A_ClearTarget
		MNDR A 3 A_SentinelBob
        MNDR A 3 A_Wander
		MNDR A 3 A_SentinelBob
        MNDR A 3 A_Wander
		goto See
	See:
		MNDR A 3 A_SentinelBob
		MNDR A 3 A_Chase
	    MNDR A 3 A_SentinelBob
		MNDR A 3 A_Chase
        MNDR A 3 A_SentinelBob
		MNDR A 3 A_Chase
	    MNDR A 3 A_SentinelBob
		MNDR A 3 A_Chase
		Loop
    Missile: 
		TNT1 A 0 A_JumpIfInTargetInventory("PaladinWeapon", 1, "Clear")
		MNDR A 2 A_JumpIfCloser(1200, 2)
	    MNDR A 2
		Goto See
	    MNDR A 2 A_PlaySound("MiniSent/Attack")
	ReShot:
		MNDR A 4 A_FaceTarget
		MNDR B 0 A_PlaySound("MiniSent/Shot")
		MNDR B 1 Bright A_CustomBulletAttack(24,24,1,1,"PaladinMinionsPuff")
		MNDR B 2 Bright
		MNDR A 4 A_FaceTarget
		MNDR B 0 A_PlaySound("MiniSent/Shot")
		MNDR B 1 Bright A_CustomBulletAttack(24,24,1,1,"PaladinMinionsPuff")
		MNDR B 2 Bright
		MNDR A 4 A_FaceTarget
		MNDR B 0 A_PlaySound("MiniSent/Shot")
		MNDR B 1 Bright A_CustomBulletAttack(24,24,1,1,"PaladinMinionsPuff")
		MNDR B 2 Bright
		MNDR A 4 A_FaceTarget
		MNDR B 0 A_PlaySound("MiniSent/Shot")
		MNDR B 1 Bright A_CustomBulletAttack(24,24,1,1,"PaladinMinionsPuff")
		MNDR B 2 Bright
		MNDR A 4 A_FaceTarget
		MNDR B 0 A_PlaySound("MiniSent/Shot")
		MNDR B 1 Bright A_CustomBulletAttack(24,24,1,1,"PaladinMinionsPuff")
		MNDR B 2 Bright
        Goto See 
    Pain:
        MNDR A 4 
        MNDR A 4 A_Pain
        Goto See+2
    Death:    
		MNDR C 2 Bright A_Scream
        MNDR C 4 A_SpawnItemEx("Shrapnel1", 0,0,random(4,18), random(2,6),random(2,6),random(2,6), random(0,360), 128)
		MNDR C 5 Bright A_PlaySound("MiniSent/Explode") 
		MNDR C 0 A_SpawnItemEx("Shrapnel2", 0,0,random(4,18), random(2,6),random(2,6),random(2,6), random(0,360), 128)
		MNDR D 5 Bright A_Fall
	    MNDR D 0 A_SpawnItemEx("Shrapnel3", 0,0,random(4,18), random(2,6),random(2,6),random(2,6), random(0,360), 128)
		MNDR E 5 Bright 
		MNDR F 5 Bright 
		MNDR G 5 Bright
		MNDR HI 5 Bright
        Stop 
    }
}

ACTOR KXTerminator
{ 
Health 300 
Radius 24 
Height 64 
Mass 1500 
Speed 8
PainChance 100
MONSTER
Obituary "%o was liquidated by a Terminator."
+FLOORCLIP 
+MISSILEMORE
+NORADIUSDMG
+DONTHARMSPECIES
+NOBLOOD
+THRUSPECIES
Species "Boss"
DamageType "Boss"
DamageFactor "Boss", 0
SeeSound "ZTerminator/See"
ActiveSound "ZTerminator/Active"
PainSound "ZTerminator/Pain"
DeathSound "ZTerminator/Death"
States 
   { 
   Spawn: 
       TERM AB 10 A_Look 
       Loop 
   Clear:
	   TNT1 A 0 A_ClearTarget
       TERM AABBCCDD 4 A_Wander
	   goto See	
   See:
       TERM A 0 A_Playsound("ZTerminator/Step")
       TERM AABB 4 A_Chase
       TERM C 0 A_Playsound("ZTerminator/Step")
       TERM CCDD 4 A_Chase 
       Loop 
   Pain:
       TERM L 3 A_Pain
       TERM L 3
       Goto See
   Missile:
		TNT1 A 0 A_JumpIfInTargetInventory("PaladinWeapon", 1, "Clear")
        TERM L 0 A_FaceTarget
        TERM G 0 A_JumpIfCloser(1500,"Chaingun")
    Missile2:
        TERM E 7 A_FaceTarget
        TERM F 7 Bright A_CustomMissile("TerminatorBlaster",38,15,0,0)
        TERM E 0 A_Jump(128, 1)
        Goto See
        TERM E 7 A_Spidrefire
        Goto Missile2
    Chaingun:
        TERM G 2 A_Facetarget
        TERM H 1 Bright A_CustomBulletAttack(18,18,1,1,"PaladinMinionsPuff")
        TERM H 1 Bright A_Playsound("Weapons/M60Fire")
        TERM G 2 A_Facetarget
        TERM I 1 Bright A_CustomBulletAttack(18,18,1,1,"PaladinMinionsPuff")
        TERM I 1 Bright A_Playsound("Weapons/M60Fire")
        TERM G 2 A_Facetarget
        TERM H 1 Bright A_CustomBulletAttack(18,18,1,1,"PaladinMinionsPuff")
        TERM H 1 Bright A_Playsound("Weapons/M60Fire")
        TERM G 2 A_Facetarget
        TERM I 1 Bright A_CustomBulletAttack(18,18,1,1,"PaladinMinionsPuff")
        TERM I 1 Bright A_Playsound("Weapons/M60Fire")
        TERM G 1 A_Spidrefire
	    TERM G 0 A_Jump(48,"BlasterGun2")
        Goto Chaingun
    BlasterGun2:
        TERM E 7 A_FaceTarget		
        TERM F 7 Bright A_CustomMissile("TerminatorBlaster",38,15,0,0)
        TERM E 0 A_Jump(128, 1)
        Goto Chaingun
        TERM E 7 A_Spidrefire
        Goto BlasterGun2
   Death:
       TERM M 6 A_Scream
       TERM N 4 
       TERM OPQ 4 Bright
       TERM R 0 Bright A_FaceTarget
	   TNT1 AAAAA 0 A_SpawnitemEx("DarkInquisitorGibber",0,0,30,frandom(-10,10),frandom(-10,10),frandom(5,15),random(0,360),SXF_NOCHECKPOSITION)
       TERM R 0 Bright A_SpawnItemEx("TerminatorHead", 15, 0, 90, 10, 0, 0, -170, 128)
       TERM R 0 Bright A_SpawnItemEx("TerminatorShoulder", 60, 0, 75, 8, 0, 0, -70, 128)
       TERM R 4 Bright A_SpawnItemEx("TerminatorArm", 60, 0, 0, 3, 0, 0, -90, 128)
       TERM STUV 4 Bright
       TERM W 4 
       TERM X 6 A_Fall
       TERM Y 6
       TERM Z 1 A_Playsound("ZTerminator/Step")
       TERM Z 5 
       TERM [ -1   
       Stop
   } 
}

ACTOR TerminatorBlaster : PaladinPlasmaBlast
{
	Speed 40
	Damage 3
    Obituary "%o was suppresed by a Terminator."
	States
	{
	Spawn:
		ANFB AAABBBCCC 1 Bright A_CustomMissile("PaladinPlasmaBlastTrail",random(-5,5),random(8,-8),0)
		Loop
	Death:
	    TNT1 A 0 A_Explode(16,128)
		ANFB DEFG 3 Bright
		Stop
	}
}

ACTOR TerminatorArm
{
	Radius 12
	Height 15
	Speed 3
	Mass 1000
	Projectile
	-NOGRAVITY
      States
	{
	Spawn:
         TARM ABCDEF 5
		 Wait
    Death:
         TARM F -1
         Stop
	}
}

actor TerminatorHead
{
    Radius 6
    Height 8
    Speed 10
    Mass 1000
	Projectile
	-NOGRAVITY
    +DOOMBOUNCE
	+DROPOFF
    States
    {
    Spawn:
    	THAD DEFGHABC 2
        loop
    Death:
    	THAD I -1
        loop
    }
}

actor TerminatorShoulder
{
    Radius 8
    Height 8
    Speed 8
	Projectile
    Mass 1000
    +DROPOFF
	+DOOMBOUNCE
	-NOGRAVITY
    States
    {
    Spawn:
    	TSHO ABCDEFGH 2
        loop
    Death:
    	TSHO I -1
        loop
    }
}

ACTOR DarkInquisitor : Inquisitor
{
    SeeSound "darkinquisitor/sight"
    ActiveSound "darkinquisitor/active"
    DeathSound "darkinquisitor/death"
	PainSound "darkinquisitor/pain"
    Health 1000
	Obituary "%o was executed by a Dark Inquisitor."
    PainChance 1
    Speed 20
    +BOSS
    +BOSSDEATH
    +FLOORCLIP
    +NORADIUSDMG
    +DONTMORPH
    +NOICEDEATH
    +MISSILEMORE
    +MISSILEEVENMORE
    +DROPOFF
	+DONTHARMSPECIES
	+THRUSPECIES
    Species "Boss"
	DamageType "Boss"
	DamageFactor "Boss", 0
    States
    {
  Spawn:
	ROB9 A 0 A_ChangeFlag("Float", 0)
    ROB9 A 0 A_ChangeFlag("NoGravity", 0)
    ROB9 A 0 A_TakeInventory("FlightToken", 0)
	ROB9 A 10 A_Look
	Loop
  Clear:
	TNT1 A 0 A_ClearTarget
    ROB9 B 6 A_Wander
	ROB9 C 0 A_playsoundEX("Emperor/Stomp","SoundSlot6")
	ROB9 CDE 6 A_Wander
	ROB9 D 0 A_playsoundEX("Emperor/Stomp","SoundSlot6")
	ROB9 DC 6 A_Wander
	Goto See
  See:
	ROB9 B 6 A_Chase
	ROB9 C 0 A_playsoundEX("Emperor/Stomp","SoundSlot6")
	ROB9 CDE 6 A_Chase
	ROB9 D 0 A_playsoundEX("Emperor/Stomp","SoundSlot6")
	ROB9 DC 6 A_chase
	Goto See
  Missile:
	ROB9 A 0 A_JumpIfCloser(850,"EMP")
	ROB9 A 6 A_FaceTarget
	ROB9 F 4 Bright A_CustomMissile("DarkMatterBall",64,-32,0)
	ROB9 G 6
	Goto See
  EMP:
	ROB9 A 6 A_FaceTarget
	ROB9 J 0 Bright A_CustomMissile("EMPGrenade",100,24,0,1)
	ROB9 J 3 Bright A_CustomMissile("EMPGrenade",100,-24,0,1)
	ROB9 G 6
	Goto See
  Pain:
    ROB9 G 6
    ROB9 G 6 A_Pain
    Goto See
  Death:
	ROB9 A 0 A_TakeInventory("FlightToken", 1)
	ROB9 A 0 A_ChangeFlag ("FLOAT", 0)
	ROB9 A 0 A_ChangeFlag ("NOGRAVITY", 0)
	ROB9 A 0 A_StopSoundEx("SoundSlot6")
	ROB9 L 1 A_NoBlocking
	ROB9 LLLLLLLLLLLLLLLLLLLLLLL 5 Bright A_CustomMissile("ExplosionEffect",0+random(20,120),0,0+random(0,370),0)
	ROB9 L 1 A_Scream
	NULL AAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("DarkInquisitorGibber",50,0,random(0,359))
	NULL A 0 A_CustomMissile("DarkInquisitorBigExplosion",0,0,0)
	TNT1 A 0 Radius_Quake(8,40,0,35,0)
        Stop
    }
}

ACTOR EMPGrenade
{
Speed 40
Damage (10)
Radius 10
Height 10
Scale 0.4
DamageType "Boss"
RenderStyle Add
PROJECTILE
+NODAMAGETHRUST
+QUARTERGRAVITY
SeeSound "darkinquisitor/empfire"
DeathSound "darkinquisitor/empdie"
States
{
Spawn:
	TEFX ABCDEFGHIJKLMNOPQRST 1 Bright A_SpawnItemEx("EMPTrail",0,0,0,1,0,random(-1,3),random(1,360))
	Loop
Death:
    TNT1 A 0 A_PlaySound("darkinquisitor/empdie")
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 AA 1 A_Explode(5,48,1)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 BB 1 A_Explode(5,56,1)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 CC 1 A_Explode(5,64,1)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 DD 1 A_Explode(5,72,1)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 EE 1 A_Explode(5,80,1)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 FF 1 A_Explode(5,88,1)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 GG 1 A_Explode(5,96,1)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 HH 1 A_Explode(5,104,1)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 II 1 A_Explode(5,112,1)
	TNT1 A 0 A_FadeOut(0.12)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 JJ 1 A_Explode(5,120,1)
	TNT1 A 0 A_FadeOut(0.12)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 KK 1 A_Explode(5,128,1)
	TNT1 A 0 A_FadeOut(0.12)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 LL 1 A_Explode(5,136,1)
	TNT1 A 0 A_FadeOut(0.12)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 MM 1 A_Explode(5,144,1)
	TNT1 A 0 A_FadeOut(0.12)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 NN 1 A_Explode(5,152,1)
	TNT1 A 0 A_FadeOut(0.12)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 OO 1 A_Explode(5,160,1)
	TNT1 A 0 A_FadeOut(0.12)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 PP 1 A_Explode(5,168,1)
	Stop
}
}

ACTOR DarkMatterBall
{
    Radius 11
    Height 8
    Speed 32
    Damage (10)
    Scale 0.5
    Projectile
    +RANDOMIZE
    +EXTREMEDEATH
    +FORCERADIUSDMG
    +DONTREFLECT
	DamageType "Boss"
    RenderStyle Translucent
    Alpha 0.625
	SeeSound "Cerebral/Fire1"
    DeathSound "moloch/thundercrash"
    States
    {
    Spawn:
	DMGB AA 0 Bright A_SpawnItemEx("DarkMatterSpark",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB A 1 Bright A_SpawnItemEx("DarkMatterSpark",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB AA 0 Bright A_SpawnItemEx("DarkMatterSpark",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB A 1 Bright A_SpawnItemEx("DarkMatterSpark",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB AA 0 Bright A_SpawnItemEx("DarkMatterSpark",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB A 1 Bright A_SpawnItemEx("DarkMatterSpark",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB BB 0 Bright A_SpawnItemEx("DarkMatterSpark",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB B 1 Bright A_SpawnItemEx("DarkMatterSpark",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB BB 0 Bright A_SpawnItemEx("DarkMatterSpark",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB B 1 Bright A_SpawnItemEx("DarkMatterSpark",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB BB 0 Bright A_SpawnItemEx("DarkMatterSpark",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB B 1 Bright A_SpawnItemEx("DarkMatterSpark",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB CC 0 Bright A_SpawnItemEx("DarkMatterSpark",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB C 1 Bright A_SpawnItemEx("DarkMatterSpark",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB CC 0 Bright A_SpawnItemEx("DarkMatterSpark",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB C 1 Bright A_SpawnItemEx("DarkMatterSpark",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB CC 0 Bright A_SpawnItemEx("DarkMatterSpark",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	DMGB C 1 Bright A_SpawnItemEx("DarkMatterSpark",0,0,0,random(-1,1),random(-1,1),random(-1,1),0,32,0)
	GoTo Spawn+1
    Death:
	TNT1 A 0 A_SpawnItemEx("ShadowVaporSpawner",0,0,0,0,0,0,0,32)
	TNT1 A 0 A_Explode(48,275,0)
	TNT1 A 15 Radius_Quake(5,15,0,20,0)
	Stop
	}
}

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

ACTOR ShadowVapor
{
PROJECTILE
+RIPPER
+RANDOMIZE
+DOOMBOUNCE
Damagetype "Boss"
Damage (random(1,10))
Speed 0
Radius 2
Height 2
renderstyle Translucent
Scale 0.65
States
{
Spawn:
	VPXS MNOPQRSTUVWXYZ 1 Bright A_FadeOut(0.01)
	VPXZ ABC 1 A_FadeOut(0.01)
	Stop
}
}

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

ACTOR DarkInquisitorBigExplosion
{   
   Radius 2
   Height 2
   Damage 0
   +NOCLIP
   Speed 0
   PROJECTILE
   RENDERSTYLE ADD
   ALPHA 0.75
   Scale 2.0
   SeeSound "darkinquisitor/bigdeathexpl"
   States
   {
   Spawn:
   TNT1 A 0 A_SpawnItemEx("ShadowVaporSpawner",0,0,0,0,0,0,0,32)
      DQEX A 3 Bright A_Explode (128,256,0)
      DQEX B 3 Bright
      DQEX CDEFGHIJKLMN 3 Bright
      stop
   }
}

actor DarkInquisitorGibber
{
  radius 20
  height 20
  +NOINTERACTION
    states
  {
  Spawn:
        NULL A 0 A_Gravity
        NULL A 0
        NULL A 0 A_PlaySound("darkinquisitor/gibbage")
        NULL AA 0 A_SpawnItemEx ("Shrapnel1", 0, 0, random(0,42), frandom(0,6), frandom(0,6), frandom(0,6), random(0,360), 160)
		NULL A 1
        NULL AA 0 A_SpawnItemEx ("Shrapnel2", 0, 0, random(0,42), frandom(0,6), frandom(0,6), frandom(0,6), random(0,360), 160)
        NULL A 1
		NULL AA 0 A_SpawnItemEx ("Shrapnel3", 0, 0, random(0,42), frandom(0,6), frandom(0,6), frandom(0,6), random(0,360), 160)
	    NULL A 1
		NULL AA 0 A_SpawnItemEx ("Shrapnel3", 0, 0, random(0,42), frandom(0,6), frandom(0,6), frandom(0,6), random(0,360), 160)
        NULL A 1
		NULL AA 0 A_SpawnItemEx ("Shrapnel2", 0, 0, random(0,42), frandom(0,6), frandom(0,6), frandom(0,6), random(0,360), 160)
        NULL A 1
		NULL AA 0 A_SpawnItemEx ("Shrapnel1", 0, 0, random(0,42), frandom(0,6), frandom(0,6), frandom(0,6), random(0,360), 160)
	    NULL A 1
		stop
    }
}

actor Shrapnel1
{
    +DOOMBOUNCE
    PROJECTILE
    -NOGRAVITY
    +NOBLOCKMAP
    +CANNOTPUSH
    -NOTELEPORT
    -SOLID
	+GRENADETRAIL
    Radius 2
    Damage 0
    mass 5
    bouncefactor 0.5
    SeeSound "darkinquisitor/shrapnel"
    Speed 25
	Gravity 0.9
    States
    {
    Spawn:
        SHRP L 0
        SHRP L 0 A_Jump(64,"Alt") 
        SHRP L 0 ThrustThingZ (0, (Random (20, 100)), 0, 1)
        goto See
    Alt:
    	SHRP M 0 ThrustThingZ (0, (Random (40, 130)), 0, 1)
    	Stop 
    See:
        SHRP L 5
        SHRP L 5 ThrustThingZ(0,(Random (6, 20)),1,1)
        SHRP L 5 
        SHRP L 5
        loop
    Death:
        SHRP L 0
        SHRP L 0
        SHRP L 0
        SHRP L 70
	Dissapear:
        SHRP L 1 Bright A_FadeOut(0.1)
        Loop
    }
}

actor Shrapnel2
{
    +DOOMBOUNCE
    PROJECTILE
    -NOGRAVITY
    +NOBLOCKMAP
    +CANNOTPUSH
    -NOTELEPORT
    -SOLID
	+GRENADETRAIL
    Radius 2
    Damage 0
    mass 5
    bouncefactor 0.4
    SeeSound "darkinquisitor/shrapnel"
    Speed 20
    States
    {
    Spawn:
        SHRP M 0
        SHRP M 0 A_Jump(64,"Alt") 
        SHRP M 0 ThrustThingZ (0, (Random (20, 100)), 0, 1)
        goto See
    Alt:
    	SHRP N 0 ThrustThingZ (0, (Random (40, 130)), 0, 1)
    	Stop 
    See:
        SHRP M 5
        SHRP M 5 ThrustThingZ(0,(Random (6, 20)),1,1)
        SHRP M 5 
        SHRP M 5
        loop
    Death:
        SHRP M 0
        SHRP M 0
        SHRP M 0
        SHRP M 70
	Dissapear:
        SHRP M 1 Bright A_FadeOut(0.1)
        Loop
    }
}

actor Shrapnel3
{
    +DOOMBOUNCE
    PROJECTILE
    -NOGRAVITY
    +NOBLOCKMAP
    +CANNOTPUSH
    -NOTELEPORT
    -SOLID
	+GRENADETRAIL
    Radius 2
    Damage 0
    mass 5
    bouncefactor 0.6
    SeeSound "darkinquisitor/shrapnel"
    Speed 23
    States
    {
    Spawn:
        SHRP N 0
        SHRP N 0 A_Jump(64,"Alt") 
        SHRP N 0 ThrustThingZ (0, (Random (20, 100)), 0, 1)
        goto See
    Alt:
    	SHRP L 0 ThrustThingZ (0, (Random (40, 130)), 0, 1)
    	Stop 
    See:
        SHRP N 5
        SHRP N 5 ThrustThingZ(0,(Random (6, 20)),1,1)
        SHRP N 5 
        SHRP N 5
        loop
    Death:
        SHRP N 0
        SHRP N 0
        SHRP N 0
        SHRP N 70
    Dissapear:
        SHRP N 1 Bright A_FadeOut(0.1)
        Loop
    }
}

Actor PaladinBlasterChargeParticle
{
	Projectile
	Damage 0
	+NoBlockMap
	+BloodLessImpact
	+ClientSideOnly 
    -BloodSplatter
    +DontSplash
    +ForceXYBillBoard
	Speed 0
	Radius 1
	Height 1
	RenderStyle Add
	Scale 1.5
	States
	{
  Spawn:
	TNT1 A 0
    TNT1 A 0 A_Warp(AAPTR_DEFAULT,VelX*12,VelY*12,VelZ*12,0,WARPF_NOCHECKPOSITION|WARPF_ABSOLUTEOFFSET|WARPF_ABSOLUTEANGLE)
    TNT1 A 0 A_ScaleVelocity(-1)
	SWET FFFFFFFF 1 Bright
    SWET FFFF 1 BRIGHT A_FadeOut(0.2)
    Stop
	}
}

Actor AitneitcsBlessing : PowerInvulnerable
{
	powerup.duration 0x7FFFFFFF
	damagefactor "normal", 1.0
}