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


actor PowerAurelion : PowerMorph
{
powerup.duration 99999999999999
PowerMorph.PlayerClass "AurelionPlayer"
}

ACTOR AurelionPlayer : PlayerPawn
{
  Health 1000
  Radius 40
  Height 81.25
  Speed 0.85
  mass 2000
  Scale 1.25
  Player.ColorRange 0, 0
  Player.JumpZ 6
  Player.MaxHealth 16000
  Player.DisplayName "Aurelion"
  Player.SoundClass "Aurelion"
  Player.MorphWeapon "AurelionWeapon0"
  Player.StartItem "Mana", 100
  limitedtoteam 1
  damagefactor "boss", 0
  SeeSound "DragonSight"
  AttackSound "DragonAttack"
  PainSound "DragonPain"
  DeathSound "DragonDeath"
  ActiveSound "DragonActive"
	bloodcolor Blue
	+NOSKIN
	-PICKUP
  states
{
	Spawn:
	    TNT1 AA 0 SetPlayerProperty(0, 1, 1)
	    TNT1 AA 0 SetPlayerProperty (0, 1, 3)
		FLWY ABCB 10 A_Look
        Loop
	See:
	    TNT1 A 0 SetPlayerProperty(0, 1, 1)
	    TNT1 A 0 SetPlayerProperty (0, 1, 3)
	    FLWY AABB 2
	    FLWY C 0 A_PlaySound("DragonWingflap")
	    FLWY CCDDCCBB 2 
	    FLWY AABB 2
	    FLWY C 0 A_PlaySound("DragonWingflap")
	    FLWY CCDDCCBB 2 
	    loop
	Missile:
		FLWY E 8 Bright  
		Goto Spawn
	Death:
	    TNT1 A 0 a_givetotarget("BOSSKILLEDSTAT", 1)
		TNT1 A 0 a_givetotarget("reward", 1)
		FLWY G 4 A_Scream
    	FLWY HIJ 4
    	FLWY KLM 5
    	FLWY M -1
    	Stop 
   }
}

ACTOR AurelionWeapon0 : Weapon 
{
 Weapon.SelectionOrder 800
 Obituary "%o was engulfed in flames by %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("AurelionWeapon")
       TNT1 A 0 A_SelectWeapon("AurelionWeapon")
       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 Aurelionattackmode1 : Inventory
{
Inventory.Amount 1
Inventory.MaxAmount 1
  States
  {
  Spawn:
    TNT1 A -1
    Stop
  }
}

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

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

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

ACTOR AurelionWeapon : Weapon 
{
 Weapon.SelectionOrder 800
 Obituary "%o was engulfed in flames 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("Aurelionattackmode1", 1, "FireBallAttackcheck")
       CLA2 A 0 A_jumpIfinventory("Aurelionattackmode2", 1, "StellarFireAttackcheck")
       CLA2 A 0 A_jumpIfinventory("Aurelionattackmode3", 1, "FallenStarAttackcheck")
	   CLA2 A 0 A_jumpIfinventory("Aurelionattackmode4", 1, "VoiceOfLightAttackcheck")
	   Goto ready
  AltFire:
  	   CLA2 A 1 ACS_execute(812)
       CLA2 A 1
       CLA2 A 23
       goto ready
  FireBallAttack:
       CLA2 A 0 A_Takeinventory("mana", 15)
       CLA2 A 0 A_PlayWeaponSound("dragonattack")
       CLA2 A 5 A_GunFlash
       CLA2 BBB 5 A_FireCustomMissile("AurelionFireball")
  goto ready
  StellarFireAttack:
       CLA2 A 0 A_Takeinventory("mana", 3)
	   CLA2 BBBB 1 Bright A_FireCustomMissile ("AurelionStellarFire", random(-2,2), 0, 5, random(2, 6))
	   CLA2 A 0 A_Refire
       goto ready
  FallenStarAttack:
       CLA2 A 0 A_Takeinventory("mana", 35)
       CLA2 A 5 A_GunFlash
       CLA2 B 0 A_FireCustomMissile("AurelionGrenade", 0, 0, 7, -5, 0)
	   CLA2 A 0 A_PlayWeaponSound("KriegerBall2/Fire")
       CLA2 B 5
  goto ready
  VoiceOfLightAttack:
       CLA2 A 0 A_Takeinventory("mana", 70)
	   CLA2 A 0 A_Giveinventory("AurelionVoiceoflightCooldown", 70)
	   CLA2 A 0 A_PlaySound("Dragon/VoiceOfLight",CHAN_6,1.0,FALSE,ATTN_NONE)
	   CLA2 A 0 A_PlaySound("Dragon/VoiceOfLight",CHAN_7,1.0,FALSE,ATTN_NONE)
       CLA2 A 5 A_GunFlash
       CLA2 B 0 A_FireCustomMissile("AurelionVoiceoflight",0,0,0,0,0)
       CLA2 B 25
       goto ready
  FireBallAttackcheck:
       TNT1 A 0 A_jumpIfinventory("mana", 15, "FireBallAttack")
  goto ready
  StellarFireAttackcheck:
       TNT1 A 0 A_jumpIfinventory("mana", 3, "StellarFireAttack")  
  goto ready
  FallenStarAttackcheck:
       TNT1 A 0 A_jumpIfinventory("mana", 35, "FallenStarAttack")  
  goto ready
  VoiceOfLightAttackcheck:
	   TNT1 A 0 A_JumpIfInventory("AurelionVoiceoflightCooldown", 1, 2)
       TNT1 A 0 A_jumpIfinventory("mana", 70, "VoiceOfLightAttack")  
	   Goto Ready
	   CLA3 A 1
       Goto Ready
  Flash:
       SNIF F 3 Bright A_Light2
       SNIF F 3 Bright A_Light1
       SNIF F 0 Bright A_Light0
       Goto LightDone     
       }
}

ACTOR AurelionFireball
{
   Radius 12
   Height 18
   Speed 35
   Damage 9
   PROJECTILE
   RENDERSTYLE ADD
   ALPHA 0.80
   Translation "0:255=%[0.00,0.00,0.00]:[0.72,0.72,2.00]"
   damagetype "boss"
   SeeSound "dragonattack"
   DeathSound "DragonFireballExplode"
   Decal "RevenantScorch"
   States
   {
   Spawn:
      AUFX ABCDEF 4 Bright 
      loop
   Death:
      TNT1 A 0 A_CustomMissile("PEFBExplo",0,0,0)
	  TNT1 A 0 A_Explode(96,128)
	  TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("WraithFX23",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(1,360),SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
	  TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("WraithFX22",0,0,0,random(-5,5),random(-5,5),random(-5,5),random(1,360),SXF_TRANSFERTRANSLATION | SXF_NOCHECKPOSITION)
	  WRBL DEF 3 Bright
	  WRBL GHI 3
	  Stop
   }
}

ACTOR AurelionStellarFire : FlamethrowerProjectile 
{
	Translation "0:255=%[0.00,0.00,0.00]:[0.72,0.72,2.00]"
	DamageType "Boss"
	Speed 40
	States 
	{
	Spawn:
		FLAM D 2 Bright A_SpawnItem("AurelionFlameTrail4",0,0)
		TNT1 A 0 A_Explode(1,128,0)
		FLAM E 2 Bright A_SpawnItem("AurelionFlameTrail5",0,0)
		TNT1 A 0 A_Explode(1,128,0)
		FLAM F 2 Bright A_SpawnItem("AurelionFlameTrail6",0,0)
		TNT1 A 0 A_Explode(1,128,0)
		FLAM G 2 Bright A_SpawnItem("AurelionFlameTrail7",0,0)
		TNT1 A 0 A_Explode(1,128,0)
		FLAM H 2 Bright A_SpawnItem("AurelionFlameTrail8",0,0)
		TNT1 A 0 A_Explode(1,128,0)
		FLAM I 2 Bright A_SpawnItem("AurelionFlameTrail9",0,0)
		TNT1 A 0 A_Explode(1,128,0)
		FLAM J 2 Bright A_SpawnItem("AurelionFlameTrail10",0,0)
		TNT1 A 0 A_Explode(1,128,0)
		FLAM K 2 Bright A_SpawnItem("AurelionFlameTrail11",0,0)
		TNT1 A 0 A_Explode(1,128,0)
		FLAM L 2 Bright A_SpawnItem("AurelionFlameTrail12",0,0)
		TNT1 A 0 A_Explode(1,128,0)
		FLAM M 2 Bright A_SpawnItem("AurelionFlameTrail13",0,0)
		TNT1 A 0 A_Explode(1,128,0)
		FLAM N 2 Bright A_SpawnItem("AurelionFlameTrail14",0,0)
		TNT1 A 0 A_Explode(1,128,0)
		TNT1 A 0 A_Jump(32,"Death2")
        TNT1 A 0
		Stop
	Death:
        TNT1 A 0 
		TNT1 A 0 A_JumpIfInventory("FireProjectileDeath",1,17)
		TNT1 A 0 A_Explode(6,96,0)
        TNT1 A 0 A_SpawnItemEx("AurelionFlameThrowerFireRemains",Random(0,1),0,Random(0,8),Random(0,1),0,Random(0,3),Random(0,12)*30,0,32)
		FLAM NOPQR 2 Bright 
	    TNT1 A 0 A_SpawnItemEx("AurelionFlameThrowerFireRemains",Random(0,1),0,Random(0,8),Random(0,1),0,Random(0,3),Random(0,12)*30,0,32)
		FLAM S 2 Bright A_Explode(3,96,0)
		FLAM TU 2 Bright 
	    TNT1 A 0 A_SpawnItemEx("AurelionFlameThrowerFireRemains",Random(0,1),0,Random(0,8),Random(0,1),0,Random(0,3),Random(0,12)*30,0,32)
		FLAM V 1 Bright A_Explode(4,96,0)
		FLAM WX 1 Bright 
		TNT1 A 0 A_Jump(32,1)
		Stop
		TNT1 A 0 
		TNT1 A 0 A_Stop
		TNT1 A 0 A_NoGravity
		TNT1 A 0 A_PlaySoundEx("PlayFire/Loop","SoundSlotFire",1)
		TNT1 A 0 A_SpawnItemEx("AurelionFlameThrowerFireRemains",Random(0,1),0,Random(0,8),Random(0,1),0,Random(0,3),Random(0,12)*30,0,32)				
	DeathLoop:
	    TNT1 A 0 
		TNT1 A 0 A_JumpIfInventory("FlameCheck",50,4)
		TNT1 A 5 A_Explode(5,72)
		TNT1 A 0 A_GiveInventory("FlameCheck",1)
		TNT1 A 0 A_SpawnItemEx("AurelionFlameThrowerFireRemains",Random(0,1),0,Random(0,8),Random(0,1),0,Random(0,3),Random(0,12)*30,0,32)
        Loop
		TNT1 A 0 
		TNT1 A 0 A_StopSound("SoundSlotFire")
	    TNT1 A 0 A_PlaySound("PlayFire/Fade")
		TNT1 A 5 A_Explode(5,72)
		TNT1 A 0 A_SpawnItemEx("AurelionFlameThrowerFireRemains",Random(0,1),0,Random(0,8),Random(0,1),0,Random(0,3),Random(0,12)*30,0,32)
		TNT1 A 5 A_Explode(5,72)
		TNT1 A 0 A_SpawnItemEx("AurelionFlameThrowerFireRemains",Random(0,1),0,Random(0,8),Random(0,1),0,Random(0,3),Random(0,12)*30,0,32)
		Stop
	Death2:
	Crash:
	XDeath:
	    TNT1 A 0
		TNT1 A 0 A_GiveInventory("FireProjectileDeath",1)
		TNT1 A 0 A_Stop
		TNT1 A 0 A_Gravity
		TNT1 A 0 A_PlaySoundEx("PlayFire/Loop","SoundSlotFire",1)
		TNT1 A 0 A_SpawnItemEx("AurelionFlameThrowerFireRemains",Random(0,1),0,Random(0,8),Random(0,1),0,Random(0,3),Random(0,12)*30,0,32)
	XDeathLoop:
	    TNT1 A 0 	
		TNT1 A 0 A_JumpIfInventory("FlameCheck",50,4)
		TNT1 A 5 A_Explode(5,72)
		TNT1 A 0 A_GiveInventory("FlameCheck",1)
		TNT1 A 0 A_SpawnItemEx("AurelionFlameThrowerFireRemains",Random(0,1),0,Random(0,8),Random(0,1),0,Random(0,3),Random(0,12)*30,0,32)
        Loop
		TNT1 A 0 
		TNT1 A 0 A_StopSound("SoundSlotFire")
	    TNT1 A 0 A_PlaySound("PlayFire/Fade")
		TNT1 A 5 A_Explode(3,72)
		TNT1 A 0 A_SpawnItemEx("AurelionFlameThrowerFireRemains",Random(0,1),0,Random(0,8),Random(0,1),0,Random(0,3),Random(0,12)*30,0,32)
		TNT1 A 5 A_Explode(3,72)
		TNT1 A 0 A_SpawnItemEx("AurelionFlameThrowerFireRemains",Random(0,1),0,Random(0,8),Random(0,1),0,Random(0,3),Random(0,12)*30,0,32)
		Stop
	    }
}

ACTOR AurelionFlameThrowerFireRemains : FlameThrowerFireRemains 
{
	Translation "0:255=%[0.00,0.00,0.00]:[0.72,0.72,2.00]"
	DamageType "Boss"
	States 
	{
	}
}

ACTOR AurelionFlameTrail1 : FlameTrail1
{   
    Translation "0:255=%[0.00,0.00,0.00]:[0.72,0.72,2.00]"
}

ACTOR AurelionFlameTrail2 : AurelionFlameTrail1
{   
    States
    {
    Spawn:
        TNT1 A 1
	    FLAM BBBBBBBBBBBBBBBBBBBB 1 Bright A_FadeOut(0.045)
        Stop
        }
}

ACTOR AurelionFlameTrail3 : AurelionFlameTrail1
{   
    States
    {
    Spawn:
        TNT1 A 1
	    FLAM CCCCCCCCCCCCCCCCCCCC 1 Bright A_FadeOut(0.045)
        Stop
        }
}

ACTOR AurelionFlameTrail4 : AurelionFlameTrail1
{   
    States
    {
    Spawn:
        TNT1 A 1
	    FLAM DDDDDDDDDDDDDDDDDDDD 1 Bright A_FadeOut(0.045)
        Stop
        }
}

ACTOR AurelionFlameTrail5 : AurelionFlameTrail1
{   
    States
    {
    Spawn:
        TNT1 A 1
	    FLAM EEEEEEEEEEEEEEEEEEEE 1 Bright A_FadeOut(0.045)
        Stop
        }
}

ACTOR AurelionFlameTrail6 : AurelionFlameTrail1
{   
    States
    {
    Spawn:
        TNT1 A 1
	    FLAM FFFFFFFFFFFFFFFFFFFF 1 Bright A_FadeOut(0.045)
        Stop
        }
}

ACTOR AurelionFlameTrail7 : AurelionFlameTrail1
{   
    States
    {
    Spawn:
        TNT1 A 1
	    FLAM GGGGGGGGGGGGGGGGGGGG 1 Bright A_FadeOut(0.045)
        Stop
        }
}

ACTOR AurelionFlameTrail8 : AurelionFlameTrail1
{   
    States
    {
    Spawn:
        TNT1 A 1
	    FLAM HHHHHHHHHHHHHHHHHHHH 1 Bright A_FadeOut(0.045)
        Stop
        }
}

ACTOR AurelionFlameTrail9 : AurelionFlameTrail1
{   
    States
    {
    Spawn:
        TNT1 A 1
	    FLAM IIIIIIIIIIIIIIIIIIII 1 Bright A_FadeOut(0.045)
        Stop
        }
}

ACTOR AurelionFlameTrail10 : AurelionFlameTrail1
{   
    States
    {
    Spawn:
        TNT1 A 1
	    FLAM JJJJJJJJJJJJJJJJJJJJ 1 Bright A_FadeOut(0.045)
        Stop
        }
}

ACTOR AurelionFlameTrail11 : AurelionFlameTrail1
{   
    States
    {
    Spawn:
        TNT1 A 1
	    FLAM KKKKKKKKKKKKKKKKKKKK 1 Bright A_FadeOut(0.045)
        Stop
        }
}

ACTOR AurelionFlameTrail12 : AurelionFlameTrail1
{   
    States
    {
    Spawn:
        TNT1 A 1
	    FLAM LLLLLLLLLLLLLLLLLLLL 1 Bright A_FadeOut(0.045)
        Stop
        }
}

ACTOR AurelionFlameTrail13 : AurelionFlameTrail1
{   
    States
    {
    Spawn:
        TNT1 A 1
	    FLAM MMMMMMMMMMMMMMMMMMMM 1 Bright A_FadeOut(0.045)
        Stop
        }
}

ACTOR AurelionFlameTrail14 : AurelionFlameTrail1
{   
    States
    {
    Spawn:
        TNT1 A 1
	    FLAM NNNNNNNNNNNNNNNNNNNN 1 Bright A_FadeOut(0.045)
        Stop
        }
}

Actor AurelionGrenade
{
  Radius 8
  Height 8
  Speed 25
  damagetype "boss"
  Damage 20
  Projectile
  SeeSound "KriegerBall2/Fire"
  DeathSound "40mm/grenexplode"
  States
  {
  Spawn:
      AFX1 ABC 1 Bright A_SpawnItemEx("AurelionGrenadeTrail",0,0,0,0,0,0,0,128)
      loop
    Death:
	  AFX1 DDDDDDDDDDDDDDDDDDDDDDDDDDDDDD 0 A_SpawnItemEx ("AurelionGrenadeFire",random(-128, 128),random (-128, 128), 0, 0, 0, 0, random (0, 360))
      AFX1 DE 4 Bright A_Explode
      AFX1 FGHI 4 bright
      stop
  }
}

ACTOR AurelionGrenadeFire
{
  Radius 16
  Height 24
  ReactionTime 50
  damagetype "boss"
  renderstyle Add
  Translation "160:168=192:207"
  Projectile
  +NODAMAGETHRUST
  +BLOODLESSIMPACT
  -NOGRAVITY
  -DROPOFF
  -MISSILE
  -ACTIVATEIMPACT
  -ACTIVATEPCROSS
  States
  {
  Spawn:
    FIRE A 0 bright
    FIRE A 4 bright A_PlaySoundEx ("vile/firecrkl", "SoundSlot5", 1)
    FIRE BC 4 bright
  FireLoop:
    FIRE BCBCDCDC 2 Bright A_Explode (15, 128)
    FIRE D 0 Bright A_PlaySoundEx ("vile/firecrkl", "SoundSlot5", 1)
    FIRE C 0 bright A_CountDown
    Loop
  Death:
    FIRE EDEDFEFEFGHGHGH 2 Bright A_Explode (15, 40)
    FIRE A 4 bright A_StopSoundEx ("SoundSlot5")
    Stop
  }
}

Actor AurelionGrenadeTrail
{   
  Radius 1
  Height 1
  Speed 0
  +Noclip
  Projectile
  States
  {
  Spawn:
    AFX1 ABCABCABCABC 2 Bright A_FadeOut
    Stop
  }
}

Actor AurelionVoiceoflight : fatshot
{
Speed 50
Damage 50
damagetype "boss"
SeeSound "skeleton/attack"
Decal Scorch
+FORCERADIUSDMG
+RIPPER
States
{
Spawn:
TNT1 A 1 Bright A_Custommissile("AurelionVoiceoflightTrail",0,0,90,0)
TNT1 A 0 Bright A_Custommissile("AurelionVoiceoflightTrail",0,0,-90,0)
TNT1 A 0 Bright A_Custommissile("AurelionVoiceoflightTrail",0,0,0,0)
TNT1 A 0 A_Explode(128,192)
TNT1 A 0 A_JumpIf (z-floorz<24,1)
loop
TNT1 A 0 A_Explode(128,192)
TNT1 A 0 ThrustThingZ (0, random(2,3), 0, 0)
loop
Death:
TNT1 B 5 A_Burst("AurelionVoiceoflightTrail")
stop
}
}

Actor AurelionVoiceoflightTrail : archvilefire
{
Translation "160:168=192:207"
Damage 15
Speed 4
damagetype "boss"
Projectile
+SPECTRAL
+RANDOMIZE
}

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