ACTOR GuardianMorpher : PowerupGiver 
{
Scale 2
radius 48
height 128
powerup.type Guardian
inventory.pickupmessage ""
powerup.duration 99999999999999
states
{
Spawn:
TNT1 A 6
loop
 }
}


actor PowerGuardian : PowerMorph
{
powerup.duration 99999999999999
PowerMorph.PlayerClass "GuardianPlayer"
}

ACTOR GuardianPlayer : PlayerPawn
{
  Health 1000
  radius 24
  height 64
  mass 1000
  speed 0.80
  Player.ColorRange 0, 0
  Player.JumpZ 6
  Player.MaxHealth 16000
  Player.ViewHeight 60
   Player.DisplayName "Guardian"
  Player.SoundClass "Guardian"
  Player.MorphWeapon "GuardianWeapon0"
  Player.StartItem "Mana", 100
  limitedtoteam 1
  damagefactor "boss", 0
	SeeSound "LordOfHeresy/sight" 
    PainSound "demon/pain" 
    DeathSound "LordOfHeresy/death" 
    ActiveSound "LordOfHeresy/act"
	BloodColor "Green" 
  Species "Guardian"
  DamageType "Boss"
  +NOSKIN
  -PICKUP
  states
{
  Spawn: 
       LOHS A 20
       Loop
   Spawn: 
       LOHS A 20
       Loop
   See:
        LOHS A 4 
        LOHS A 0 BRIGHT A_CustomMissile("GuardianRainbowFlameSpawn",random(20,0),random(-4,4),random(0,359),2,random(-10,10))
        LOHS A 4 
        LOHS A 0 BRIGHT A_CustomMissile("GuardianRainbowFlameSpawn",random(20,0),random(-4,4),random(0,359),2,random(-10,10))
		LOHS B 4 
        LOHS B 0 BRIGHT A_CustomMissile("GuardianRainbowFlameSpawn",random(20,0),random(-4,4),random(0,359),2,random(-10,10))
		LOHS B 4 
        LOHS B 0 BRIGHT A_CustomMissile("GuardianRainbowFlameSpawn",random(20,0),random(-4,4),random(0,359),2,random(-10,10))
		LOHS C 4 
        LOHS C 0 BRIGHT A_CustomMissile("GuardianRainbowFlameSpawn",random(20,0),random(-4,4),random(0,359),2,random(-10,10))
		LOHS C 4 
        LOHS C 0 BRIGHT A_CustomMissile("GuardianRainbowFlameSpawn",random(20,0),random(-4,4),random(0,359),2,random(-10,10))
		LOHS D 4 
        LOHS D 0 BRIGHT A_CustomMissile("GuardianRainbowFlameSpawn",random(20,0),random(-4,4),random(0,359),2,random(-10,10))
		LOHS D 4 
        LOHS D 0 BRIGHT A_CustomMissile("GuardianRainbowFlameSpawn",random(20,0),random(-4,4),random(0,359),2,random(-10,10))
        Loop 
  Missile:
    LOHS E 5 bright
    LOHS F 5 bright 
    LOHS G 5 bright 
    goto Spawn   
  Baron:
    LOHS E 6 bright
    LOHS F 6 bright 
    LOHS G 6 bright 
    goto Spawn   
  HopefulBaron:
    LOHS E 6 bright
    LOHS F 6 bright 
    LOHS G 6 bright 
	LOHS P 6 bright
    LOHS Q 6 bright 
    LOHS R 6 bright 
	LOHS E 6 bright
    LOHS F 6 bright 
    LOHS G 6 bright 
	LOHS P 6 bright
    LOHS Q 6 bright 
    LOHS R 6 bright 
    goto Spawn   
  Spear:
    LOHS E 56 bright
    LOHS F 4 bright 
    LOHS G 20 bright 
	Goto Spawn
  HopefulSoul:
    LOHS P 8 bright
    LOHS Q 8 bright 
    LOHS R 80 bright 
    goto Spawn   
  HopefulInfernal:
    LOHS E 8 bright
    LOHS F 8 bright 
    LOHS G 60 bright 
    goto Spawn   
  Pain:
    LOHS H 2 
    LOHS H 2 A_Pain 
	goto Spawn
   Death:
    TNT1 A 0 a_givetotarget("BOSSKILLEDSTAT", 1)
	TNT1 A 0 A_GiveToTarget("reward", 1)
    LOHS H 1 A_FadeOut(0.01) 
    Wait
  }
}

ACTOR GuardianWeapon0 : Weapon 
{
 Weapon.SelectionOrder 800
 Obituary "%o was ended up quite wounded after the training of %k"
 Inventory.PickupMessage ""
 Inventory.PickupSound "misc/pk_up"
 Weapon.AmmoUse 5
 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("GuardianWeapon")
       TNT1 A 0 A_SelectWeapon("GuardianWeapon")
       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 GuardianHopes : Inventory
{
	Inventory.MaxAmount 10
}

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

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

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

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

ACTOR GuardianWeapon : Weapon 
{
 Weapon.SelectionOrder 800
 Obituary "%o ended very hurt in the training 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:
       CLA2 A 1 A_WeaponReady
       goto ready
  Deselect:
       CLA2 A 1 A_Lower
       Loop
  Select:
       CLA2 A 0 A_Raise
       Loop
  Fire:
       CLA2 A 0 A_jumpIfinventory("Guardianattackmode1", 1, "BaronAttackcheck")
       CLA2 A 0 A_jumpIfinventory("Guardianattackmode2", 1, "SpearAttackcheck")
       CLA2 A 0 A_jumpIfinventory("Guardianattackmode3", 1, "SoulAttackcheck")
	   CLA2 A 0 A_jumpIfinventory("Guardianattackmode4", 1, "InfernalAttackCheck")
	   Goto ready
  AltFire:
  	   CLA2 A 1 ACS_execute(812)
       CLA2 A 1
       CLA2 A 15
       goto ready
  BaronAttack:
       CLA2 A 0 A_jumpIfinventory("GuardianHopes", 10, "HopefulBaron")
	   TNT1 A 0 ACS_NamedExecuteAlways("True Sprite",0,Guardian_Baron)
	   CLA2 A 0 A_GiveInventory("GuardianHopes",1)
       CLA2 A 0 A_Takeinventory("mana", 20)
       CLA2 AA 6
	   CLA2 A 0 A_PlayWeaponSound("weapons/firbfi")
       CLA2 B 6 A_FireCustomMissile ("GuardianComet",0,0,0,0,0)
       Goto Ready
  HopefulBaron:
	   TNT1 A 0 ACS_NamedExecuteAlways("True Sprite",0,Guardian_HopefulBaron)
	   CLA2 A 0 A_Takeinventory("GuardianHopes", 10)
       CLA2 AA 6
	   CLA2 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_FireCustomMissile ("BaronBall",random(-180,180),0,0,0,0)
	   CLA2 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_FireCustomMissile ("BaronBall",random(-180,180),0,0,0,0)
	   CLA2 A 0 A_PlayWeaponSound("weapons/firbfi")
	   CLA2 BB 0 A_FireCustomMissile ("GuardianComet",random(-35,35),0,0,0,0)
       CLA2 B 6 A_FireCustomMissile ("GuardianComet",0,0,0,0,0)
	   CLA2 AA 6
	   CLA2 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_FireCustomMissile ("BaronBall",random(-180,180),0,0,0,0)
	   CLA2 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_FireCustomMissile ("BaronBall",random(-180,180),0,0,0,0)
	   CLA2 A 0 A_PlayWeaponSound("weapons/firbfi")
	   CLA2 BB 0 A_FireCustomMissile ("GuardianComet",random(-35,35),0,0,0,0)
       CLA2 B 6 A_FireCustomMissile ("GuardianComet",0,0,0,0,0)
	   CLA2 AA 6
	   CLA2 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_FireCustomMissile ("BaronBall",random(-180,180),0,0,0,0)
	   CLA2 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_FireCustomMissile ("BaronBall",random(-180,180),0,0,0,0)
	   CLA2 A 0 A_PlayWeaponSound("weapons/firbfi")
	   CLA2 BB 0 A_FireCustomMissile ("GuardianComet",random(-35,35),0,0,0,0)
       CLA2 B 6 A_FireCustomMissile ("GuardianComet",0,0,0,0,0)
	   CLA2 AA 6
	   CLA2 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_FireCustomMissile ("BaronBall",random(-180,180),0,0,0,0)
	   CLA2 AAAAAAAAAAAAAAAAAAAAAAAAA 0 A_FireCustomMissile ("BaronBall",random(-180,180),0,0,0,0)
	   CLA2 A 0 A_PlayWeaponSound("weapons/firbfi")
	   CLA2 BB 0 A_FireCustomMissile ("GuardianComet",random(-35,35),0,0,0,0)
       CLA2 B 6 A_FireCustomMissile ("GuardianComet",0,0,0,0,0)
	   CLA2 A 0 A_Takeinventory("mana", 20)
       Goto Ready
  SpearAttack:
       TNT1 A 0 ACS_NamedExecuteAlways("True Sprite",0,Guardian_Spear)
       CLA2 A 0 A_jumpIfinventory("GuardianHopes", 10, "HopefulSpear")
	   CLA2 A 0 A_GiveInventory("GuardianHopes",1)
       TNT1 A 0 A_PlaySound("LordOfHeresy/sight", CHAN_AUTO, 1.0, 0, ATTN_NONE)
	   CLA2 A 0 A_TakeInventory("mana", 50)
	   CLA2 AAAAA 7 A_PlaySound("Draugr/Glare",CHAN_AUTO,1.0,FALSE,ATTN_NONE)
	   CLA2 A 30
       CLA2 A 0 A_GunFlash
	   CLA2 A 0 A_PlaySound("Weapons/DraugrAxeSwing",CHAN_AUTO,1.0,FALSE,ATTN_NONE)
	   CLA2 B 20 A_FireCustomMissile ("GuardianSpear",0,1,0,0,0)
	   CLA2 A 0 A_GiveInventory("SpearCooldown", 1)
       Goto Ready
  HopefulSpear:
       CLA2 A 0 A_TakeInventory("GuardianHopes",10)
       TNT1 A 0 A_PlaySound("LordOfHeresy/sight", CHAN_AUTO, 1.0, 0, ATTN_NONE)
	   CLA2 A 0 A_TakeInventory("mana", 50)
	   CLA2 AAAAA 7 A_PlaySound("Draugr/Glare",CHAN_AUTO,1.0,FALSE,ATTN_NONE)
	   CLA2 A 25
       CLA2 A 0 A_GunFlash
	   CLA2 B 20 A_FireCustomMissile ("GuardianSpear2",0,1,0,0,0)
	   CLA2 A 0 A_GiveInventory("SpearCooldown", 1)
       Goto Ready
  SoulAttack:
       CLA2 A 0 A_jumpIfinventory("GuardianHopes", 10, "HopefulSoul")
	   TNT1 A 0 ACS_NamedExecuteAlways("True Sprite",0,Guardian_Baron)
       CLA2 A 0 A_Takeinventory("mana", 40)
       CLA2 AA 6 
       CLA2 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 0 A_FireCustomMissile ("GuardianCacoBall",random(-30,30),0,0,0,0)
       CLA2 B 6 
       Goto Ready
  HopefulSoul:
       TNT1 A 0 ACS_NamedExecuteAlways("True Sprite",0,Guardian_HopefulSoul)
	   CLA2 A 0 A_Takeinventory("GuardianHopes", 10)
       CLA2 AA 8
	   CLA2 BBBBBBBBBBBBBBBBBBBB 1 A_FireCustomMissile ("GuardianCacoBall2",random(-30,30),0,0,0,0)
       CLA2 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 0 A_FireCustomMissile ("GuardianCacoBall",random(-180,180),0,0,0,0)
	   CLA2 BBBBBBBBBBBBBBBBBBBB 1 A_FireCustomMissile ("GuardianCacoBall2",random(-30,30),0,0,0,0)
       CLA2 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 0 A_FireCustomMissile ("GuardianCacoBall",random(-180,180),0,0,0,0)
	   CLA2 BBBBBBBBBBBBBBBBBBBB 1 A_FireCustomMissile ("GuardianCacoBall2",random(-30,30),0,0,0,0)
       CLA2 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 0 A_FireCustomMissile ("GuardianCacoBall",random(-180,180),0,0,0,0)
	   CLA2 BBBBBBBBBBBBBBBBBBBB 1 A_FireCustomMissile ("GuardianCacoBall2",random(-30,30),0,0,0,0)
       CLA2 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 0 A_FireCustomMissile ("GuardianCacoBall",random(-180,180),0,0,0,0)
	   CLA2 A 0 A_Takeinventory("mana", 40)
       Goto Ready
  InfernalAttack:
       CLA2 A 0 A_jumpIfinventory("GuardianHopes", 10, "HopefulInfernal")
	   TNT1 A 0 ACS_NamedExecuteAlways("True Sprite",0,Guardian_Baron)
       CLA2 AA 6
       CLA2 A 0 A_Takeinventory("mana", 50)
	   CLA2 A 0 A_GiveInventory("GuardianHopes",1)
       CLA2 A 0 A_FireCustomMissile ("GuardianExplosiveFireBall",0,1,0,0,0)
       CLA2 A 0 A_FireCustomMissile ("GuardianExplosiveFireBall",7,0,0,0,0)
       CLA2 A 0 A_FireCustomMissile ("GuardianExplosiveFireBall",-7,0,0,0,0)
       CLA2 A 0 A_FireCustomMissile ("GuardianExplosiveFireBall",15,0,0,0,0)
       CLA2 B 6 A_FireCustomMissile ("GuardianExplosiveFireBall",-15,0,0,0,0)
       Goto Ready
  HopefulInfernal:
	   TNT1 A 0 ACS_NamedExecuteAlways("True Sprite",0,Guardian_HopefulInfernal)
       CLA2 A 0 A_TakeInventory("GuardianHopes",10)
	   CLA2 A 0 A_Takeinventory("mana", 50)
	   CLA2 AA 8
       CLA2 B 5 A_FireCustomMissile ("GuardianExplosiveFireBall",0,0,0,0,0)
	   CLA2 A 5
	   CLA2 AAAAAAAA 0 A_FireCustomMissile ("GuardianFearBeastCube",random(-180,180),0,0,0,0)
	   CLA2 B 5 A_FireCustomMissile ("GuardianExplosiveFireBall",0,0,0,0,0)
	   CLA2 A 5
	   CLA2 AAAAAAA 0 A_FireCustomMissile ("GuardianFearBeastCube",random(-180,180),0,0,0,0)
	   CLA2 B 5 A_FireCustomMissile ("GuardianExplosiveFireBall",0,0,0,0,0)
	   CLA2 A 5
	   CLA2 AAAAAAA 0 A_FireCustomMissile ("GuardianFearBeastCube",random(-180,180),0,0,0,0)
	   CLA2 B 5 A_FireCustomMissile ("GuardianExplosiveFireBall",0,0,0,0,0)
	   CLA2 A 5
	   CLA2 AAAAAAA 0 A_FireCustomMissile ("GuardianFearBeastCube",random(-180,180),0,0,0,0)
	   CLA2 B 5 A_FireCustomMissile ("GuardianExplosiveFireBall",0,0,0,0,0)
	   CLA2 A 5
	   CLA2 AAAAAAAA 0 A_FireCustomMissile ("GuardianFearBeastCube",random(-180,180),0,0,0,0)
	   CLA2 B 5 A_FireCustomMissile ("GuardianExplosiveFireBall",0,0,0,0,0)
	   CLA2 A 5
       Goto Ready 
  BaronAttackcheck:
       TNT1 A 0 A_jumpIfinventory("mana", 20, "BaronAttack")
       Goto ready
  SpearAttackCheck:
	   TNT1 A 0 A_JumpIfInventory("SpearCooldown", 1, 2)
       TNT1 A 0 A_jumpIfinventory("mana", 50, "SpearAttack")  
       Goto ready
       CLA3 A 1
       Goto Ready
  SoulAttackcheck:
       TNT1 A 0 A_jumpIfinventory("mana", 40, "SoulAttack")  
       Goto ready
  InfernalAttackcheck:
       TNT1 A 0 A_jumpIfinventory("mana", 50, "InfernalAttack")  
       Goto ready
  Flash:
       SNIF F 3 Bright A_Light2
       SNIF F 3 Bright A_Light1
       SNIF F 0 Bright A_Light0
       Goto LightDone     
       }
}

Actor GuardianComet
{
  Radius 8
  Height 12
  Speed 40
  Damage (1*Random(50,100))
  Scale 1.0
  Projectile
  SeeSound "weapons/firbfi"
  DeathSound "weapons/hellex"
  DontHurtShooter
  DamageType "Boss"
  States
  {
  Spawn: 
    ARCB AAAABBBBCCCC 1 Bright A_SpawnItemEx("ArchonCometTrail",0,0,0,0,0,0,0,128)
    Loop
  Death:
    ARCB A 0 A_SetTranslucent(0.67,1)
    ARCB J 3 Bright
    ARCB K 3 Bright A_Explode(128,128,0)
    ARCB LMN 3 Bright
    Stop
  }
}

ACTOR GuardianCacoBall : CacodemonBall
{
  Damage 4
  DamageType "Boss"
  Speed 1
  SeeSound "Crack/see"
  DeathSound "Crack/death"
  States
  {
  Spawn:
    BAL2 A 0
    BAL2 A 0 A_ScaleVelocity(frandom(5.0,30.0))
    BAL2 AB 2 Bright
    Goto Spawn+2
  Death:
    BAL2 CDE 3 Bright
    Stop
  }
}

ACTOR GuardianCacoBall2 : GuardianCacoBall
{
  Damage 8
  DamageType "Boss"
  Speed 20
  States
  {
  Spawn:
    BAL2 AB 2 Bright
    Loop
  }
}


Actor SpearCooldown : PowerProtection
{
	powerup.duration -15
	damagefactor "normal", 1.0
}

Actor GuardianSpear : FastProjectile
{
  Radius 16
  Height 8
  Damage (200)
  Alpha 1.0
  Scale 0.25
  Renderstyle Add
  Projectile
  +BloodlessImpact
  +ForceXYBillboard
  -BloodSplatter
  Translation "0:255=%[2.00,2.00,2.00]:[0.00,0.00,0.00]"
  speed 150
  DeathSound "Delta/HitBlade"
  MissileType "GuardianSpearTrail"
  MissileHeight 8
  damagetype "Boss"
  States
  {
  Spawn:
    BFS1 AB 4 Bright
    Loop
  Death:
    BFE1 C 0 BRIGHT A_SetScale(1.5)
	BRE1 A 4 Bright
	BRE1 B 3 Bright 
	BRE1 C 2 Bright 
	BRE1 DEFGHIJK 2 Bright 
	Stop
  }
}

Actor GuardianSpear2 : GuardianSpear
{
  Damage (2000)
  +EXTREMEDEATH
}

Actor GuardianSpearTrail
{
  Height 1
  Radius 1
  Damage 0
  RenderStyle Add
  Translation "0:255=%[2.00,2.00,2.00]:[0.00,0.00,0.00]"
  Alpha 1.0
  Scale 0.25
  +NoInteraction
  +ForceXYBillBoard
  +NoGravity
  +DropOff
  States
  {
  Spawn:
    BFS1 AAAABBBB 1 Bright A_FadeOut(0.1)
    Loop
  }
}

actor GuardianRainbowFlameSpawn
{
  PROJECTILE
  +INVISIBLE
  Speed 6
  Radius 1
  Height 1
  States
  {
  Spawn:
    TNT1 AA 0 A_Jump(256,"Yellow", "Blue", "Red", "White", "Green", "Purple", "Orange")
  Yellow:
    TNT1 A 2 
    TNT1 A 0 A_SpawnItemEx("YellowGuardianRainbowWalkFlame2",0,frandom(-5,5))
    TNT1 A 2 
    TNT1 A 0 A_SpawnItem("YellowGuardianRainbowWalkFlame2",0,frandom(-5,5))
	Goto Death
  Blue:
    TNT1 A 2 
    TNT1 A 0 A_SpawnItem("BlueGuardianRainbowWalkFlame2",0,frandom(-5,5))
    TNT1 A 2 
    TNT1 A 0 A_SpawnItem("BlueGuardianRainbowWalkFlame2",0,frandom(-5,5))
	Goto Death
  Red:
    TNT1 A 2 
    TNT1 A 0 A_SpawnItem("RedGuardianRainbowWalkFlame2",0,frandom(-5,5))
    TNT1 A 2 
    TNT1 A 0 A_SpawnItem("RedGuardianRainbowWalkFlame2",0,frandom(-5,5))
	Goto Death
  White:
    TNT1 A 2 
    TNT1 A 0 A_SpawnItem("WhiteGuardianRainbowWalkFlame2",0,frandom(-5,5))
    TNT1 A 2 
    TNT1 A 0 A_SpawnItem("WhiteGuardianRainbowWalkFlame2",0,frandom(-5,5))
	Goto Death
  Green:
    TNT1 A 2 
    TNT1 A 0 A_SpawnItem("GreenGuardianRainbowWalkFlame2",0,frandom(-5,5))
    TNT1 A 2 
    TNT1 A 0 A_SpawnItem("GreenGuardianRainbowWalkFlame2",0,frandom(-5,5))
	Goto Death
  Purple:
    TNT1 A 2 
    TNT1 A 0 A_SpawnItem("PurpleGuardianRainbowWalkFlame2",0,frandom(-5,5))
    TNT1 A 2 
    TNT1 A 0 A_SpawnItem("PurpleGuardianRainbowWalkFlame2",0,frandom(-5,5))
	Goto Death
  Orange:
    TNT1 A 2 
    TNT1 A 0 A_SpawnItem("OrangeGuardianRainbowWalkFlame2",0,frandom(-5,5))
    TNT1 A 2 
    TNT1 A 0 A_SpawnItem("OrangeGuardianRainbowWalkFlame2",0,frandom(-5,5))
	Goto Death
  Death:
    TNT1 A 1 A_FadeOut
    Stop
  }
}

actor YellowGuardianRainbowWalkFlame2
{
  +RANDOMIZE
  +NOGRAVITY
  RenderStyle Add
  Scale 0.75
  Alpha 0.7
  DamageType "Boss"
  States
  {
  Spawn:
    TNT1 A 0
    FIRE A 0 Bright A_Explode(128,128,0)
	FIRE ABABCBCBCDCDCDEDEDEFEFEFGHGHGH 2 Bright 
    Stop
  }
}

actor BlueGuardianRainbowWalkFlame2 : YellowGuardianRainbowWalkFlame2
{
  Translation "160:167=192:207"
}

actor RedGuardianRainbowWalkFlame2 : YellowGuardianRainbowWalkFlame2
{
  Translation "160:167=168:191"
}

actor WhiteGuardianRainbowWalkFlame2 : YellowGuardianRainbowWalkFlame2
{
  Translation "160:167=80:95"
}

actor GreenGuardianRainbowWalkFlame2 : YellowGuardianRainbowWalkFlame2
{
  Translation "160:169=112:127"
}

actor PurpleGuardianRainbowWalkFlame2 : YellowGuardianRainbowWalkFlame2
{
  Translation "160:167=250:254"
}

actor OrangeGuardianRainbowWalkFlame2 : YellowGuardianRainbowWalkFlame2
{
  Translation "160:167=208:223"
}

Actor GuardianInvulnerability : PowerInvulnerable
{
	powerup.duration 100
	damagefactor "normal", 1.0
}

ACTOR GuardianExplosiveFireBall
{
  Radius 11
  Height 8
  Speed 30
  Damage 20
  RenderStyle Add
  Projectile
  +RANDOMIZE
  +DONTSPLASH
  SeeSound "dragonattack"
  DeathSound "PyroCannon/Explosion"
  Obituary "%o rode %k's rocket."
  DamageType "Boss"
  States
  {
  Spawn:
    FRTB A 1 Bright A_CustomMissile("GuardianExplosiveFireBallTrail",0,0,0)
	Loop
  Death:
    RPGX AAAAAAAAAAAAAAA 0 A_SpawnItemEx("GuardianExplosiveFireBallParticle",0,0,5,random(-10,10),random(-10,10),random(0,10),random(1,360))
    RPGX BC 2 Bright
    RPGX D 2 Bright A_Explode
    RPGX EFGHIJKLMNOPQRSTUV 2 Bright
    Stop
  }
}

Actor GuardianExplosiveFireBallParticle
{
	Projectile
	Damage 0
	+NOBLOCKMAP
	+BLOODLESSIMPACT
	+CLIENTSIDEONLY 
    -BLOODSPLATTER
    +DontSplash
    +FORCEXYBILLBOARD
	-NOGRAVITY
	Speed 0
	Radius 1
	Height 1
	Scale 0.2
	Gravity 0.9
	RenderStyle Add
	States
	{
  Spawn:
    FRTB A 1 Bright
    Loop
  Death:
    FRTB ABCDEFGHI 1 Bright A_FadeOut(0.04)
    Wait
	}
}

Actor GuardianExplosiveFireBallTrail
{
    Radius 1
    Height 1
    Speed 0
    Damage 0
	RenderStyle Add
    PROJECTILE
    +DONTSPLASH
	+CLIENTSIDEONLY
    States
    {
    Spawn:
	    TNT1 A 1 
        FRTB BCDEFGHI 1 Bright
		Stop
    }
}

ACTOR GuardianFearBeast
{
  Health 150
  PainChance 100
  Speed 18
  Radius 30
  Height 56
  Mass 400
  MeleeRange 50
  Monster
  Translation "16:47=[50,50,50]:[0,0,0]"
  +MISSILEMORE
  +FLOORCLIP
  +DONTHARMSPECIES
  +NOTARGET
  +LOOKALLAROUND
  +NOINFIGHTING
  SeeSound "FearBeast/Sight"
  PainSound "FearBeast/Pain"
  DeathSound "FearBeast/Death"
  ActiveSound "FearBeast/Active"
  Obituary "%o was consumed by his fears."
  Species "Guardian"
  BloodColor "Blue"
  DamageType "Boss"
  DamageFactor "Boss", 0.0
  States
  {
  Spawn:
    TNT1 AA 0 A_ChangeFlag("FRIENDLY",0)
    GARH AB 10 A_Look
    Loop
  See:
    GARH AABBCCDD 2 A_Chase
    Loop
  Melee:
    TNT1 A 0 A_JumpIfInTargetInventory("GuardianWeapon", 1, "Clear")
    GARH EF 5 A_FaceTarget
    GARH G 5 A_CustomMeleeAttack(random(10, 30), "FearBeast/Attack")
    Goto See
  Missile:
    TNT1 A 0 A_JumpIfInTargetInventory("GuardianWeapon", 1, "Clear")
    GARH E 0 A_JumpIfCloser(50, "Melee")
	GARH E 5 A_FaceTarget
	TNT1 A 0 A_ChangeFlag(SLIDESONWALLS,1)
	TNT1 A 0 ThrustThingZ(0,25,0,1)
	TNT1 A 0 A_Recoil(-30)
	GARH E 0 Bright A_PlaySound("FearBeast/Attack")
	GARH EEEEEFFFFFGGGGG 1 Bright A_CustomMeleeAttack(random(2,6),"","","Melee",True)
	TNT1 A 0 A_ChangeFlag(SLIDESONWALLS,0)
	TNT1 A 0 A_ScaleVelocity(0)
    Goto See
  Clear:
	TNT1 A 0 A_ClearTarget
    GARH AABBCCDD 2 A_Wander
	Goto See
  Pain:
    GARH H 2 
    GARH H 2 A_Pain
    Goto See
  Death:
    GARH I 8 
    GARH I 8 BRIGHT 
    GARH J 8 A_Scream
    GARH L 4 A_NoBlocking
    GARH M 4 BRIGHT 
	GARH N 300
    GARH N 1 A_FadeOut(0.04)
    Wait
  }
}

actor GuardianFearBeastCube : PlasmaBall
{
  SeeSound "brain/spit"
  DeathSound "weapons/rocklx"
  RenderStyle Normal
  Speed 9
  +DOOMBOUNCE
  +NOBOUNCESOUND
  Scale 0.75
  DamageType "Boss"
  States
  {
  Spawn:
    BOSF ABCDABCDA 6 
    BOSF A 0 A_Stop
    BOSF BCDABC 6 
  Death:
    BOSF AAAAA 0 Bright A_SpawnItemEx("BelfegartDashFireEffect",0,0,0,frandom(-3,3),frandom(-3,3),frandom(-3,3),random(1,360))
    BOSF A 0 Bright A_SpawnItem("GuardianFearBeast",0,0)
    MISL BCD 5 Bright
    Stop
  }
}