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


actor PowerMuicifircas : PowerMorph
{
powerup.duration 99999999999999
PowerMorph.PlayerClass "MuicifircasPlayer"
}

ACTOR MuicifircasPlayer : PlayerPawn
{
  Scale 1.1
  Health 1000
  Radius 48
  Height 116
  Speed 0.8
  mass 2000
  Player.ColorRange 0, 0
  Player.JumpZ 6
  Player.MaxHealth 16000
  Player.ViewHeight 112
  Player.DisplayName "God Muicifircas"
  Player.SoundClass "Muicifircas"
  Player.MorphWeapon "MuicifircasWeapon0"
  Player.StartItem "Mana", 100
  limitedtoteam 1
  damagefactor "boss", 0
  SeeSound "PainLord/Sight" 
  ActiveSound "PainLord/Sight"
  PainSound "PainLord/Pain" 
  DeathSound "PainLord/Death"
  MeleeSound "PainLord/Melee"
  DamageFactor "Player", 0.75
  bloodcolor Blue
  +NORADIUSDMG
  +NOSKIN
  -PICKUP
  states
{
	Spawn:
        TLCD AB 10 SetPlayerProperty(0, 1, 1)
        Loop
	See:
	    TNT1 A 0 SetPlayerProperty(0, 1, 1)
    	TNT1 A 0 A_SpawnItemEx("MuicifircasGhostA",0,0,0,0,0,0,0,128)
    	TLCD A 3 
    	TNT1 A 0 A_SpawnItemEx("MuicifircasGhostA",0,0,0,0,0,0,0,128)
    	TLCD A 3 
    	TNT1 A 0 A_SpawnItemEx("MuicifircasGhostB",0,0,0,0,0,0,0,128)
    	TLCD B 3 
    	TNT1 A 0 A_SpawnItemEx("MuicifircasGhostB",0,0,0,0,0,0,0,128)
    	TLCD C 3
    	TNT1 A 0 A_SpawnItemEx("MuicifircasGhostC",0,0,0,0,0,0,0,128)
    	TLCD C 3
    	TNT1 A 0 A_SpawnItemEx("MuicifircasGhostC",0,0,0,0,0,0,0,128)
    	TLCD D 3 
    	TNT1 A 0 A_SpawnItemEx("MuicifircasGhostD",0,0,0,0,0,0,0,128)
    	TLCD D 3
    	TNT1 A 0 A_SpawnItemEx("MuicifircasGhostD",0,0,0,0,0,0,0,128)
    	Loop
	Missile:
	    TLCD F 1 Bright 
	    TLCD F 1 Bright A_JumpIfInventory("UsingGodSouls", 1, "GodSouls")
		TLCD F 1 Bright A_JumpIfInventory("UsingGodInferno", 1, "GodInferno")
		TLCD F 1 Bright A_JumpIfInventory("UsingExtinction", 1, "Extinction")
		TLCD F 1 Bright A_JumpIfInventory("UsingStardust", 1, "Stardust")
		TLCD F 2 Bright  
		TLCD E 6 Bright 
		Goto Spawn
	GodInferno:
	    LBE4 A 9
        LBE4 B 25 
	    Goto Spawn
	Extinction:
	   TLCL A 98
	   TLCL B 75
       goto Spawn
	GodSouls:
       TLCB A 24 
       TLCB B 25 
       TLCD G 50
	   Goto Spawn
	Stardust:
	   TBMB A 4
       TBMB B 4 BRIGHT 
	   Goto Spawn
	Death:
		TNT1 A 0 A_NoBlocking
		TNT1 A 0 A_PlaySound("PainLord/Sight", "Auto", 1.0, 0, ATTN_NONE)
		TNT1 A 0 a_givetotarget("BOSSKILLEDSTAT", 1) 
		TNT1 A 0 a_givetotarget("reward", 1)
		TLCD A 10 A_SetTranslucent(0.9)
		TLCD B 10 A_SetTranslucent(0.8)
		TLCD A 10 A_SetTranslucent(0.7)
		TLCD B 10 A_SetTranslucent(0.6)
		TLCD A 10 A_SetTranslucent(0.5)
		TLCD B 10 A_SetTranslucent(0.4)
		TLCD A 10 A_SetTranslucent(0.3)
		TLCD B 10 A_SetTranslucent(0.2)
		TLCD A 10 A_SetTranslucent(0.1)
		TNT1 A -1
		Stop
}
}

ACTOR MuicifircasWeapon0 : 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("MuicifircasWeapon")
       TNT1 A 0 A_SelectWeapon("MuicifircasWeapon")
       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 Muicifircasattackmode1 : Inventory
{
Inventory.Amount 1
Inventory.MaxAmount 1
  States
  {
  Spawn:
    TNT1 A -1
    Stop
  }
}

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

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

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

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

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

ACTOR MuicifircasWeapon : 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 0 A_TakeInventory("UsingGodSouls", 1)
	   CLA2 A 0 A_TakeInventory("UsingGodInferno", 1)
	   CLA2 A 0 A_TakeInventory("UsingExtinction", 1)
	   CLA2 A 0 A_TakeInventory("UsingStardust", 1)
       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("Muicifircasattackmode1", 1, "ThunderBallAttackcheck")
       CLA2 A 0 A_jumpIfinventory("Muicifircasattackmode2", 1, "MuicifircasThunderAttackcheck")
       CLA2 A 0 A_jumpIfinventory("Muicifircasattackmode3", 1, "GodInfernoAttackcheck")
	   CLA2 A 0 A_jumpIfinventory("Muicifircasattackmode4", 1, "ExtinctionAttackcheck")
	   CLA2 A 0 A_jumpIfinventory("Muicifircasattackmode5", 1, "GodSoulsAttackcheck")
	   CLA2 A 0 A_jumpIfinventory("Muicifircasattackmode6", 1, "StardustAttackcheck")
	   Goto ready
  AltFire:
  	   CLA2 A 1 ACS_execute(812)
       CLA2 A 11
       goto ready
  ThunderBallAttack:
       CLA2 A 0 A_Takeinventory("mana", 4)
       CLA2 A 2 A_GunFlash
       CLA2 A 0 A_FireCustomMissile("MuicifircasThunderBall",0,0,0,0)
       CLA2 B 3
       goto ready
  MuicifircasThunderAttack:
       CLA2 A 0 A_PlayWeaponSound("PainLord/Sight")
       CLA2 A 0 A_Takeinventory("mana", 70)
       CLA2 A 5 A_GunFlash
       CLA2 A 0 A_FireBullets(0, 0, 1, 0, "MuicifircasThunderAttack", 0)
       CLA2 B 5
       goto ready
  GodInfernoAttack:
	   CLA2 A 0 A_GiveInventory("UsingGodInferno", 1)
       CLA2 A 0 A_Takeinventory("mana", 40)
	   CLA2 AAAAA 2 A_Recoil(-12)
	   CLA2 A 0 A_Stop
       CLA2 A 0 A_GunFlash
       CLA2 B 0 A_FireCustomMissile("MuicifircasGodInfernoSpawner",0,0,0,0)
	   CLA2 B 0 A_FireCustomMissile("MuicifircasGodInfernoSpawner",10,0,0,0)
	   CLA2 B 0 A_FireCustomMissile("MuicifircasGodInfernoSpawner",20,0,0,0)
	   CLA2 B 0 A_FireCustomMissile("MuicifircasGodInfernoSpawner",30,0,0,0)
	   CLA2 B 0 A_FireCustomMissile("MuicifircasGodInfernoSpawner",-10,0,0,0)
	   CLA2 B 0 A_FireCustomMissile("MuicifircasGodInfernoSpawner",-20,0,0,0)
	   CLA2 B 0 A_FireCustomMissile("MuicifircasGodInfernoSpawner",-30,0,0,0)
       CLA2 B 20
       goto ready
  ExtinctionAttack:
	   CLA2 A 0 A_GiveInventory("UsingExtinction", 1)
       CLA2 A 0 A_Takeinventory("mana", 80)
	   TNT1 A 0 SetPlayerProperty (0, 1, 0)
	   CLA2 A 0 A_PlayWeaponSound("PainLord/Sight")
	   TNT1 A 0 A_PlaySound ("Muicifircas/ExtinctionPrepare",CHAN_6,1.0,0,ATTN_NONE)
	   TNT1 A 0 A_PlaySound ("Muicifircas/ExtinctionPrepare",CHAN_7,1.0,0,ATTN_NONE)
	   CLA2 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 1 A_SpawnItemEx("GateKeeperAzureParticle", Random(12, 36), 0, 4, 0, 0, (Random(20, 35)*0.1), Random(0, 360), 128)
       CLA2 A 0 A_GunFlash
	   TNT1 A 0 A_PlaySound ("Muicifircas/ExtinctionFire",CHAN_6,1.0,0,ATTN_NONE)
	   TNT1 A 0 A_PlaySound ("Muicifircas/ExtinctionFire",CHAN_7,1.0,0,ATTN_NONE)
	   CLA3 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB 1 Bright A_FireCustommissile("MuicifircasExtinction", 0, 0, 0, 0)
       CLA2 B 15
	   TNT1 A 0 SetPlayerProperty (0, 0, 0)
       goto ready
  GodSoulsAttack:
       CLA2 A 0 A_GiveInventory("UsingGodSouls", 1)
	   CLA2 A 0 A_GiveInventory("GodSoulsCooldown", 1)
       CLA2 A 0 A_Takeinventory("mana", 100)
	   CLA2 A 0 A_PlayWeaponSound("PainLord/Sight")
       CLA2 A 50 A_GunFlash
       CLA2 BBBBB 0 A_FireCustomMissile("MuicifircasCube",random(-180, 180),0,0,0)
       CLA2 B 15
	   CLA2 A 35
	   CLA2 A 0 A_PlayWeaponSound("PainLord/Sight")
       goto ready
  StardustAttack:
       CLA2 A 0 A_GiveInventory("UsingStardust", 1)
       CLA2 A 0 A_Takeinventory("mana", 35)
       CLA2 A 4 A_GunFlash
       CLA2 B 4 A_FireBullets(0, 0, 1, 0, "MuicifircasStardustAttack", 0)
       goto ready
  ThunderBallAttackcheck:
       TNT1 A 0 A_jumpIfinventory("mana", 5, "ThunderBallAttack")
  goto ready
  MuicifircasThunderAttackcheck:
       TNT1 A 0 A_jumpIfinventory("mana", 60, "MuicifircasThunderAttack")  
  goto ready
  GodInfernoAttackcheck:
       TNT1 A 0 A_jumpIfinventory("mana", 50, "GodInfernoAttack")  
  goto ready
  ExtinctionAttackcheck:
       TNT1 A 0 A_jumpIfinventory("mana", 80, "ExtinctionAttack")  
  goto ready
  GodSoulsAttackcheck:
	   TNT1 A 0 A_JumpIfInventory("GodSoulsCooldown", 1, 2)
       TNT1 A 0 A_jumpIfinventory("mana", 100, "GodSoulsAttack")  
       Goto ready
       CLA2 A 1
       Goto Ready
  StardustAttackcheck:
       TNT1 A 0 A_jumpIfinventory("mana", 35, "StardustAttack")  
  goto ready
  Flash:
       SNIF F 3 Bright A_Light2
       SNIF F 3 Bright A_Light1
       SNIF F 0 Bright A_Light0
       Goto LightDone     
       }
}

Actor MuicifircasGhostA
{   
  Radius 2
  Height 2
  Speed 0
  Scale 1.1
  Projectile
  RenderStyle Translucent
  VisibleToPlayerClass Marine, Renegade, Avenger, Android, Huntsman 
  Alpha 0.6
  States
  {
  Spawn:
    TNT1 A 3
    TLCD A 3 A_FadeOut(0.10)
    Goto Spawn+1
  }
}

Actor MuicifircasGhostB : MuicifircasGhostA
{   
  States
  {
  Spawn:
    TNT1 A 3
    TLCD B 3 A_FadeOut(0.10)
    Goto Spawn+1
  }
}

Actor MuicifircasGhostC : MuicifircasGhostA
{   
  States
  {
  Spawn:
    TNT1 A 3
    TLCD C 3 A_FadeOut(0.10)
    Goto Spawn+1
  }
}

Actor MuicifircasGhostD : MuicifircasGhostA
{   
  States
  {
  Spawn:
    TNT1 A 3
    TLCD D 3 A_FadeOut(0.10)
    Goto Spawn+1
  }
}

ACTOR MuicifircasThunderBall
{
Speed 40
Damage 20
Radius 10
Height 10
Scale 0.4
DamageType "Boss"
RenderStyle Add
PROJECTILE
+NODAMAGETHRUST
+QUARTERGRAVITY
+STRIFEDAMAGE
SeeSound "moloch/thunder"
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(15,48,1)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 BB 1 A_Explode(15,56,1)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 CC 1 A_Explode(15,64,1)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 DD 1 A_Explode(15,72,1)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 EE 1 A_Explode(15,80,1)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 FF 1 A_Explode(15,88,1)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 GG 1 A_Explode(15,96,1)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 HH 1 A_Explode(15,104,1)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 II 1 A_Explode(15,112,1)
	TNT1 A 0 A_FadeOut(0.12)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 JJ 1 A_Explode(15,120,1)
	TNT1 A 0 A_FadeOut(0.12)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 KK 1 A_Explode(15,128,1)
	TNT1 A 0 A_FadeOut(0.12)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 LL 1 A_Explode(15,136,1)
	TNT1 A 0 A_FadeOut(0.12)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 MM 1 A_Explode(15,144,1)
	TNT1 A 0 A_FadeOut(0.12)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 NN 1 A_Explode(15,152,1)
	TNT1 A 0 A_FadeOut(0.12)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 OO 1 A_Explode(15,160,1)
	TNT1 A 0 A_FadeOut(0.12)
	TNT1 A 0 A_SetScale(ScaleX+0.08)
	TXP1 PP 1 A_Explode(15,168,1)
	Stop
}
}

Actor EMPTrail
{
  Height 0
  Radius 0
  Mass 0
  +Missile
  +NoBlockMap
  +NoGravity
  +DontSplash
  RenderStyle Add
  Scale 0.50
  States
  {
  Spawn:
    MUPR ABCDEF 2 Bright A_FadeOut(0.07)
    Loop
  }
}

ACTOR MuicifircasThunderAttack : BulletPuff //Credits to Untitled for the code <3
{
	-NOGRAVITY
	+NOBLOCKMAP
	+ALWAYSPUFF
	+PUFFONACTORS
	+PUFFGETSOWNER
	+BLOODLESSIMPACT
	+FLOORHUGGER
	DontHurtShooter 
	VSpeed 0
	States
	{
	Spawn:
		TNT1 A 0 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasThunderProjectile",0,0,5,frandom(-30,30),frandom(-30,30),frandom(10,20),0,0,0)
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasThunderProjectile",0,0,5,frandom(-30,30),frandom(-30,30),frandom(10,20),0,0,0)
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasThunderProjectile",0,0,5,frandom(-30,30),frandom(-30,30),frandom(10,20),0,0,0)
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("MuicifircasThunderProjectile2", 32,0,random(-180,180))
		TNT1 A 0 A_Explode(700, 256)
		TNT1 A 0 A_SpawnItemEx("Thunder_GeneratorBlue",0,0,0,0,0,0,0,0,0)
		Stop
	}
}

ACTOR MuicifircasThunderAttack2
{
	-NOGRAVITY
	+NOBLOCKMAP
	+BLOODLESSIMPACT
	+FLOORHUGGER
	DontHurtShooter 
	DamageType "Boss" 
	States
	{
	Spawn:
		TNT1 A 0 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasPuff",random(-48,48),random(-48,48),random(-z-floorz,ceilingz-z),0,0,0,0,0,0)
		TNT1 A 1 
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasThunderProjectile",0,0,5,frandom(-30,30),frandom(-30,30),frandom(10,20),0,0,0)
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasThunderProjectile",0,0,5,frandom(-30,30),frandom(-30,30),frandom(10,20),0,0,0)
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("MuicifircasThunderProjectile",0,0,5,frandom(-30,30),frandom(-30,30),frandom(10,20),0,0,0)
		TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_CustomMissile("MuicifircasThunderProjectile2", 32,0,random(-180,180))
		TNT1 A 0 A_Explode(700, 312)
		TNT1 A 0 A_SpawnItemEx("Thunder_GeneratorBlue",0,0,0,0,0,0,0,0,0)
		Stop
	}
}

ACTOR MuicifircasPuff
{
  Radius 1
  Height 1
  Scale 0.72
  Renderstyle Add
  +NOINTERACTION
  +CLIENTSIDEONLY
  States
  {
  Spawn:
    TNT1 A 1
    ZOT3 C 0 A_Jump(255, "Puff1", "Puff2", "Puff3", "Puff4", "Puff5", "Puff6")
    Loop
  Puff1:
    MUPR A 1 A_FadeOut(0.05)
    Loop
  Puff2:
    MUPR B 1 A_FadeOut(0.05)
    Loop
  Puff3:
    MUPR C 1 A_FadeOut(0.05)
    Loop
  Puff4:
    MUPR D 1 A_FadeOut(0.05)
    Loop
  Puff5:
    MUPR E 1 A_FadeOut(0.05)
    Loop
  Puff6:
    MUPR F 1 A_FadeOut(0.05)
    Loop
  }
}

Actor MuicifircasThunderProjectile
{
	PROJECTILE
	Speed 1
	Radius 6
	Height 10
	Gravity 0.4
	-NoGravity
	Damage (random(15,50))
	Deathsound "RazorLHit"
	DamageType "Boss"
	Alpha 0.75
	Renderstyle Add	
	States
	{
	Spawn:
      ZAP6 ABC 4 Bright
      Loop
	Death:
	  TNT1 A 0 A_SetScale(2.0)
      ZAP1 FEDCBA 1 bright 
      stop
	}
}

Actor MuicifircasThunderProjectile2 : MuicifircasThunderProjectile
{
	Speed 30
	+NOGRAVITY
}

ACTOR MuicifircasGodInfernoSpawner
{
	Radius 8
	Height 8
	Speed 20
	Damage 10
	+RIPPER
	+FLOORHUGGER
	+BLOODLESSIMPACT
	+EXTREMEDEATH
	DONTHURTSHOOTER
    Obituary "%o's arse was burnt off."
	Projectile
	States
	{
	Spawn: 
		TNT1 A 3 Bright A_CustomMissile("MuicifircasBlueFireBoom", 0)
		TNT1 A 3 Bright A_CustomMissile("MuicifircasYellowFireBoom", 0)
		Loop
	Death:	
		TNT1 A 6
		Stop
	}
}

Actor MuicifircasYellowFireBoom
{
  Radius 0
  Height 1
  Damage (0)
  Projectile
  +EXTREMEDEATH
  RenderStyle Add
  DamageType "Boss"
  Alpha 0.95
  Scale 0.67
  SeeSound "PyroCannon/Explosion"
  States
  {
  Spawn:
	RPGX B 2 Bright
	RPGX C 2 Bright A_Explode(64, 128)
	RPGX DEFGHIJKLMNOPQRSTUV 2 Bright
	stop
  }
}

Actor MuicifircasBlueFireBoom
{
  Radius 0
  Height 1
  Damage (0)
  Projectile
  +EXTREMEDEATH
  RenderStyle Add
  DamageType "Boss"
  Alpha 0.95
  Scale 0.67
  SeeSound "PyroCannon/Explosion"
  States
  {
  Spawn:
    GPGB B 2 Bright
    GPGB C 2 Bright A_Explode(64, 128)
    GPGB DEFGHIJKLMNOPQRSTUV 2 Bright
    Stop
  }
}

ACTOR MuicifircasGodSoul
{
  Health 500000
  Radius 16
  Height 56
  Mass 50
  Speed 35
  Damage 10
  PainChance 256
  Monster
  +FLOAT
  +NOGRAVITY
  +MISSILEMORE
  +DONTFALL
  +NOICEDEATH
  +DONTHARMSPECIES
  +Solid
  +NOINFIGHTING
  AttackSound "skull/melee"
  PainSound "skull/pain"
  DeathSound "skull/death"
  ActiveSound "skull/active"
  Translation "160:223=192:207"
  RenderStyle SoulTrans
  Species "Boss"
  Obituary "%o It is now a sacrifice to the Demon God Muicifircas"
  States
  {
  Spawn:
    TROO AA 0 A_ChangeFlag("FRIENDLY",0)
    SKUL AB 10 Bright A_Look
    Loop
  See:
    TROO AA 0 A_ChangeFlag("FRIENDLY",0)
    SKUL AB 6 Bright A_Chase
    Loop
  Missile:
    TNT1 A 0 A_Jump(128,"Soul")
	TNT1 A 0 A_Jump(128,"Charge")
	Goto See
  Charge:
    SKUL C 10 Bright A_FaceTarget
    SKUL D 4 Bright A_SkullAttack
    SKUL CD 4 Bright
    Goto Charge+2
  Soul:
    SKUL C 10 Bright A_FaceTarget
    SKUL D 4 Bright A_CustomMissile("GodSoulProjectile", 0, 0, random(-5, 5), 0)
    SKUL CD 4 Bright
	SKUL D 4 Bright A_CustomMissile("GodSoulProjectile", 0, 0, random(-5, 5), 0)
    SKUL CD 4 Bright
	SKUL D 4 Bright A_CustomMissile("GodSoulProjectile", 0, 0, random(-5, 5), 0)
    SKUL CD 4 Bright
	SKUL D 4 Bright A_CustomMissile("GodSoulProjectile", 0, 0, random(-5, 5), 0)
    SKUL CD 4 Bright
	SKUL D 4 Bright A_CustomMissile("GodSoulProjectile", 0, 0, random(-5, 5), 0)
    Goto See
  Pain:
    SKUL E 3 Bright
    SKUL E 3 Bright A_Pain
    Goto See
  Death:
    SKUL F 6 Bright
    SKUL G 6 Bright A_Scream
    SKUL H 6 Bright
    SKUL I 6 Bright A_NoBlocking
    SKUL J 6
    SKUL K 6
    Stop
  }
}

actor MuicifircasCube : PlasmaBall
{
  SeeSound "HoleMonster/See"
  RenderStyle Normal
  Translation "160:223=192:207"
  Speed 9
  +DOOMBOUNCE
  +DEHEXPLOSION
  +NOBOUNCESOUND
  Scale 0.75
  States
  {
  Spawn:
    SKUL CDCDCDCDC 6 
    SKUL A 0 A_Stop
    SKUL DCDCDC 6 
  Death:
    TNT1 AAAAA 0 BRIGHT A_CustomMissile("BelfegartDashFireEffect",random(20,65),random(-4,4),random(0,359),2,random(-10,10))
    CCCC C 0 Bright A_SpawnItem("MuicifircasGodSoul",0,0)
    Stop
  }
}

ACTOR GodSoulProjectile
{
  Radius 11
  Height 8
  Speed 20
  Damage 20
  Projectile
  +RANDOMIZE
  +DEHEXPLOSION
  Alpha 0.75
  Translation "160:223=192:207"
  SeeSound "weapons/rocklf"
  DeathSound "weapons/rocklx"
  DamageType "Boss"
  RenderStyle Translucent
  Obituary "%o Was killed by a soul"
  States
  {
  Spawn:
    SKUL CD 2 Bright
    Loop
  Death:
    SKUL F 2 Bright
    SKUL G 2 Bright A_Explode(64,128)
    SKUL H 2 Bright
    SKUL I 2 Bright 
    SKUL J 2
    SKUL K 2
    Stop
  }
}

actor MuicifircasExtinction : FastProjectile
{
  Radius 20
  Height 20
  Speed 150
  Damage (500)
  RenderStyle Add
  Scale 1.75
  Alpha 0.9
  translation "168:191=192:207", "112:127=192:207"
  DeathSound "weapons/bfgx"
  Species "Boss"
  DamageType "Boss"
  Projectile
  states
  {
  Spawn:
    BFS1 AB 4 Bright
    Loop
  Death:
    BFE1 C 0 BRIGHT A_Explode(128, 256, 0)
	BRE1 A 4 Bright
	BRE1 B 3 Bright 
	BRE1 C 2 Bright 
	BRE1 DEFGHIJK 2 Bright 
	Stop
  }
}

ACTOR MuicifircasStardustAttack : BulletPuff
{
	+NOGRAVITY
	+NOBLOCKMAP
	+ALWAYSPUFF
	+PUFFONACTORS
	+PUFFGETSOWNER
	+BLOODLESSIMPACT
	DontHurtShooter 
	VSpeed 0
	ReactionTime 10
	States
	{
	Spawn:
		TNT1 A 0  
		TNT1 AAAAAAA 5 A_SpawnItemEx("MuicifircasFallingPlasma",random(-48,48),random(-48,48),ceilingz-z-10,frandom(-5,5),frandom(-5,5),0,random(-180,180),0,0)
		TNT1 A 1 A_CountDown
		Loop
	}
}

Actor MuicifircasFallingPlasma
{
  Radius 6
  Height 8
  Speed 0
  Damage 20
  DamageType "Boss"
  Projectile
  SeeSound "baby/attack"
  DeathSound "Cerebral/Explode1"
  Translation "168:191=112:127"
  -NoGravity
  -Float
  +FloorClip
  +DontHurtSpecies
  Decal RevenantScorch
  States
  {
  Spawn:
    APLS AB 5 Bright 
    Loop
  Death:
    BFE1 C 0 BRIGHT A_Explode
	BRE1 A 4 Bright
	BRE1 B 3 Bright 
	BRE1 C 2 Bright 
	BRE1 DEFGHIJK 2 Bright 
	Stop
  }
}



Actor UsingExtinction : Inventory
{
	inventory.maxamount 1
}

Actor UsingGodInferno : Inventory
{
	inventory.maxamount 1
}

Actor UsingGodSouls : Inventory
{
	inventory.maxamount 1
}

Actor UsingStardust : Inventory
{
	inventory.maxamount 1
}

Actor GodSoulsCooldown : PowerProtection
{
	powerup.duration -45
	damagefactor "normal", 1.0
}