//-----------INFORMATION-----------
ACTOR VitalInformerGiver
{
+NOGRAVITY
States 
{
  Spawn:  
	TNT1 A 0
	TNT1 A 1 A_RadiusGive("VitalInformer",50,RGF_PLAYERS)
	stop
	}
}

ACTOR VitalInformer : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 ACS_NamedExecuteAlways("DPRInfoVital",0)
	stop
	}
}

ACTOR SynergyInformerGiver
{
+NOGRAVITY
States 
{
  Spawn:  
	TNT1 A 0
	TNT1 A 1 A_RadiusGive("SynergyInformer",50,RGF_PLAYERS)
	stop
	}
}

ACTOR SynergyInformer : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 ACS_NamedExecuteAlways("DPRInfoSynergy",0)
	stop
	}
}

ACTOR SurvivorInformerGiver
{
+NOGRAVITY
States 
{
  Spawn:  
	TNT1 A 0
	TNT1 A 1 A_RadiusGive("SurvivorInformer",50,RGF_PLAYERS)
	stop
	}
}

ACTOR SurvivorInformer : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 ACS_NamedExecuteAlways("DPRInfoSurvivor",0)
	stop
	}
}

ACTOR BloodletterInformerGiver
{
+NOGRAVITY
States 
{
  Spawn:  
	TNT1 A 0
	TNT1 A 1 A_RadiusGive("BloodletterInformer",50,RGF_PLAYERS)
	stop
	}
}

ACTOR BloodletterInformer : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 ACS_NamedExecuteAlways("DPRInfoBloodletter",0)
	stop
	}
}

ACTOR BoomBlasterInformerGiver
{
+NOGRAVITY
States 
{
  Spawn:  
	TNT1 A 0
	TNT1 A 1 A_RadiusGive("BoomBlasterInformer",50,RGF_PLAYERS)
	stop
	}
}

ACTOR BoomBlasterInformer : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 ACS_NamedExecuteAlways("DPRInfoBoomBlaster",0)
	stop
	}
}

ACTOR DPRGrenadierInformerGiver
{
+NOGRAVITY
States 
{
  Spawn:  
	TNT1 A 0
	TNT1 A 1 A_RadiusGive("DPRGrenadierInformer",50,RGF_PLAYERS)
	stop
	}
}

ACTOR DPRGrenadierInformer : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 ACS_NamedExecuteAlways("DPRInfoGrenadier",0)
	stop
	}
}

ACTOR SuccessorInformerGiver
{
+NOGRAVITY
States 
{
  Spawn:  
	TNT1 A 0
	TNT1 A 1 A_RadiusGive("SuccessorInformer",50,RGF_PLAYERS)
	stop
	}
}

ACTOR SuccessorInformer : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 ACS_NamedExecuteAlways("DPRInfoSuccessor",0)
	stop
	}
}

ACTOR CReactionInformerGiver
{
+NOGRAVITY
States 
{
  Spawn:  
	TNT1 A 0
	TNT1 A 1 A_RadiusGive("CReactionInformer",50,RGF_PLAYERS)
	stop
	}
}

ACTOR CReactionInformer : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 ACS_NamedExecuteAlways("DPRInfoCReaction",0)
	stop
	}
}

ACTOR FSummonerInformerGiver
{
+NOGRAVITY
States 
{
  Spawn:  
	TNT1 A 0
	TNT1 A 1 A_RadiusGive("FSummonerInformer",50,RGF_PLAYERS)
	stop
	}
}

ACTOR FSummonerInformer : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 ACS_NamedExecuteAlways("DPRInfoFSummoner",0)
	stop
	}
}

ACTOR BossSummonerInformerGiver
{
+NOGRAVITY
States 
{
  Spawn:  
	TNT1 A 0
	TNT1 A 1 A_RadiusGive("BossSummonerInformer",50,RGF_PLAYERS)
	stop
	}
}

ACTOR BossSummonerInformer : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 ACS_NamedExecuteAlways("DPRInfoBossSummoner",0)
	stop
	}
}

ACTOR UACSupporterInformerGiver
{
+NOGRAVITY
States 
{
  Spawn:  
	TNT1 A 0
	TNT1 A 1 A_RadiusGive("UACSupporterInformer",50,RGF_PLAYERS)
	stop
	}
}

ACTOR UACSupporterInformer : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 ACS_NamedExecuteAlways("DPRInfoUACSupporter",0)
	stop
	}
}

ACTOR JumperInformerGiver
{
+NOGRAVITY
States 
{
  Spawn:  
	TNT1 A 0
	TNT1 A 1 A_RadiusGive("JumperInformer",50,RGF_PLAYERS)
	stop
	}
}

ACTOR JumperInformer : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 ACS_NamedExecuteAlways("DPRInfoJumper",0)
	stop
	}
}

ACTOR GladiatorInformerGiver
{
+NOGRAVITY
States 
{
  Spawn:  
	TNT1 A 0
	TNT1 A 1 A_RadiusGive("GladiatorInformer",50,RGF_PLAYERS)
	stop
	}
}

ACTOR GladiatorInformer : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 ACS_NamedExecuteAlways("DPRInfoGladiator",0)
	stop
	}
}

ACTOR CommandoInformerGiver
{
+NOGRAVITY
States 
{
  Spawn:  
	TNT1 A 0
	TNT1 A 1 A_RadiusGive("CommandoInformer",50,RGF_PLAYERS)
	stop
	}
}

ACTOR CommandoInformer : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 ACS_NamedExecuteAlways("DPRInfoCommando",0)
	stop
	}
}

ACTOR OverloadInformerGiver
{
+NOGRAVITY
States 
{
  Spawn:  
	TNT1 A 0
	TNT1 A 1 A_RadiusGive("OverloadInformer",50,RGF_PLAYERS)
	stop
	}
}

ACTOR OverloadInformer : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 ACS_NamedExecuteAlways("DPRInfoOverload",0)
	stop
	}
}

//-----------TOKENS-----------
ACTOR DemonicPowerToken : Inventory { Inventory.MaxAmount 1 } //Token if player already has an ability
ACTOR DemonicPowerActivated : Inventory { Inventory.MaxAmount 1 } //Given to the rune when activated to prevent showing info
ACTOR DemonicEffectToken : Inventory { Inventory.MaxAmount 1 } //If a rune is already being transferred, this is a placeholder token to prevent mass pickup spam
ACTOR DemonicPowerKilled : Inventory { Inventory.MaxAmount 1 } //If player died while an ability was active
ACTOR DPRActionSkillActive : Inventory { Inventory.MaxAmount 1 } //While an action skill is active
ACTOR DPRKillCounterActive : Inventory { Inventory.MaxAmount 1 } //If the kill counter HUD is active
ACTOR DPRMedalActive : Inventory { Inventory.MaxAmount 1 } //If a medal is already active

ACTOR VitalPowerToken : Inventory { Inventory.MaxAmount 1 } //If ability is in possession
ACTOR VitalInformerToken : Inventory { Inventory.MaxAmount 1 } //It's information display token

ACTOR DPRSurvivorToken : Inventory { Inventory.MaxAmount 1 }
ACTOR SurvivorInfoToken : Inventory { Inventory.MaxAmount 1 }

ACTOR BloodletterToken : Inventory { Inventory.MaxAmount 1 }
ACTOR BloodletterInformerToken : Inventory { Inventory.MaxAmount 1 }

ACTOR DPRSynergyToken : Inventory { Inventory.MaxAmount 1 }
ACTOR SynergyPowerCounter : Inventory { Inventory.MaxAmount 280 }
ACTOR SynergyInfoToken : Inventory { Inventory.MaxAmount 1 }

ACTOR DPRBoomBlasterToken : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRBoomBlasterActive : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRBoomBlasterCounter : Inventory { Inventory.MaxAmount 25 }
ACTOR BoomBlasterInformerToken : Inventory { Inventory.MaxAmount 1 }

ACTOR DPRGrenadierToken : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRGrenadierInformerToken : Inventory { Inventory.MaxAmount 1 }

ACTOR ChainReactionToken : Inventory { Inventory.MaxAmount 1 }
ACTOR CReactionInformerToken : Inventory { Inventory.MaxAmount 1 }
ACTOR ChainReactionExploded : Inventory { Inventory.MaxAmount 1 }

ACTOR DPRGladiatorToken : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRGladiatorSwitched : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRGladiatorGotShield : Inventory { Inventory.MaxAmount 1 }
ACTOR GladiatorInfoToken : Inventory { Inventory.MaxAmount 1 }

ACTOR DPRCommandoToken : Inventory { Inventory.MaxAmount 1 }
ACTOR CommandoCounterGot : Inventory { Inventory.MaxAmount 1 }
ACTOR CommandoFirstToken : Inventory { Inventory.MaxAmount 1 }
ACTOR CommandoSecondaryToken : Inventory { Inventory.MaxAmount 1 }
ACTOR CommandoInfoToken : Inventory { Inventory.MaxAmount 1 }

ACTOR SuccessorToken : Inventory { Inventory.MaxAmount 1 }
ACTOR SuccessorCanJump : Inventory { Inventory.MaxAmount 1 }
ACTOR SuccessorHome : Inventory { Inventory.MaxAmount 1 }
ACTOR SuccessorInformerToken : Inventory { Inventory.MaxAmount 1 }

ACTOR FailedSummonerToken : Inventory { Inventory.MaxAmount 1 }
ACTOR FailedSummonerCounter : Inventory { Inventory.MaxAmount 100 }
ACTOR FSummonerInformerToken : Inventory { Inventory.MaxAmount 1 }

ACTOR BossSummonerToken : Inventory { Inventory.MaxAmount 1 }
ACTOR BossSummonerCounter : Inventory { Inventory.MaxAmount 50 }
ACTOR BossSummonerInfoToken : Inventory { Inventory.MaxAmount 1 }

ACTOR UACSupporterToken : Inventory { Inventory.MaxAmount 1 }
ACTOR UACSupporterInfoToken : Inventory { Inventory.MaxAmount 1 }

ACTOR DPRJumperToken : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRJumperHoldToken : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRJumperHoldFail : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRJumperInformerToken : Inventory { Inventory.MaxAmount 1 }

ACTOR DPRActionCounter : Inventory { Inventory.MaxAmount 32 } //Action skill indicator counter DO NOT CHANGE THIS VALUE

ACTOR DPRCooldown : Inventory { Inventory.MaxAmount 1 } //Cooldown is shown on the HUD
ACTOR DPRCooldownActive : Inventory { Inventory.MaxAmount 1 } //Slow Cooldown is active
ACTOR DPRCooldownActiveFaster : Inventory { Inventory.MaxAmount 1 } //Fast Cooldown is active
ACTOR DPRActionFade : Inventory { Inventory.MaxAmount 50 } //Fade counter DO NOT CHANGE THIS VALUE

//Overload
ACTOR DPROverloadToken : Inventory { Inventory.MaxAmount 1 }
ACTOR OverloadInfoToken : Inventory { Inventory.MaxAmount 1 }
ACTOR DPROLBulletMag : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLNewShell : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLMissile : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLNewCell : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLDemonAmmo : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLDustMana : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLGas : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLExplosiveAmmo : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLDcell : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLNemesisDMGBulletMag : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLTrueLegendaryCell : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLLegendaryFusionCell : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLLegendaryLMGBulletMag : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLLegendaryShell : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLLDemonAmmo : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLELegendaryLMGBulletMag : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLEnragedLegendaryShell : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLILDemonAmmo : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLNemesisShell : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLNLDemonAmmo : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLHCKShell : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLHCKAmmo : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLFuelCore : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLNuclearRocket : Inventory { Inventory.MaxAmount 9999 }
ACTOR DPROLCRDemonAmmo : Inventory { Inventory.MaxAmount 9999 }

//Tokens for medals and special announcers
//Enemy tokens
//ACTOR MedalFloaterToken : Inventory { Inventory.MaxAmount 1 }

ACTOR DPREnemyKilled : Inventory { Inventory.MaxAmount 9999 } //Counter for amount of enemy kills in one session
ACTOR DPRExcellentGot : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRImpressiveGot : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRMostImpressiveGot : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRDominationGot : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRPerfectGot : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRIncredibleGot : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRTotalDominationGot : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRTerminatorGot : Inventory { Inventory.MaxAmount 1 }

ACTOR DPRULTRAAAA : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRLOTTADAMAGE : Inventory { Inventory.MaxAmount 1 }

ACTOR MedalKillTokens : Inventory { Inventory.MaxAmount 9999 }
ACTOR MedalKillTokensTotal : Inventory { Inventory.MaxAmount 99999 }
ACTOR MedalBossTokens : Inventory { Inventory.MaxAmount 9999 }
ACTOR MedalBossTokensTotal : Inventory { Inventory.MaxAmount 99999 }

//Boss tokens
ACTOR DPRBossKilled : Inventory { Inventory.MaxAmount 300 } //Counter for amount of boss kills in one session
ACTOR DPRFirstBlood : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRDoubleKill : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRKillingSpree : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRMultiKill : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRMonsterKill : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRUltraKill : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRUnstoppable : Inventory { Inventory.MaxAmount 1 }
ACTOR DPRComboKing : Inventory { Inventory.MaxAmount 1 }

//------MEDAL FLOATER-------
ACTOR FloaterExcellentGiver : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_SpawnItemEx("MedalFloaterExcellent",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETMASTER)
	stop
	}
}

Actor MedalFloaterExcellent
{
Scale 0.7
+CLIENTSIDEONLY
+NOINTERACTION
+ISMONSTER
+FORCEXYBILLBOARD
+BRIGHT
var int user_tic;
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
  Looping:
    DE43 H 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
    TNT1 A 0 A_JumpIf(user_tic >= 175,"Fade")
	TNT1 A 0 A_SetUserVar(user_tic,user_tic+1)
	Loop
  Fade:
    TNT1 A 0 A_FadeOut(0.05)
	DE43 H 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	Loop
	}
}

ACTOR FloaterImpressiveGiver : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_SpawnItemEx("MedalFloaterImpressive",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETMASTER)
	stop
	}
}

Actor MedalFloaterImpressive : MedalFloaterExcellent
{
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
  Looping:
    DE43 G 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
    TNT1 A 0 A_JumpIf(user_tic >= 175,"Fade")
	TNT1 A 0 A_SetUserVar(user_tic,user_tic+1)
	Loop
  Fade:
    TNT1 A 0 A_FadeOut(0.05)
	DE43 G 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	Loop
	}
}

ACTOR FloaterMostImpressiveGiver : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_SpawnItemEx("MedalFloaterMostImpressive",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETMASTER)
	stop
	}
}

Actor MedalFloaterMostImpressive : MedalFloaterExcellent
{
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
  Looping:
    DE43 B 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
    TNT1 A 0 A_JumpIf(user_tic >= 175,"Fade")
	TNT1 A 0 A_SetUserVar(user_tic,user_tic+1)
	Loop
  Fade:
    TNT1 A 0 A_FadeOut(0.05)
	DE43 B 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	Loop
	}
}

ACTOR FloaterDominationGiver : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_SpawnItemEx("MedalFloaterDomination",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETMASTER)
	stop
	}
}

Actor MedalFloaterDomination : MedalFloaterExcellent
{
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
  Looping:
    DE43 C 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
    TNT1 A 0 A_JumpIf(user_tic >= 175,"Fade")
	TNT1 A 0 A_SetUserVar(user_tic,user_tic+1)
	Loop
  Fade:
    TNT1 A 0 A_FadeOut(0.05)
	DE43 C 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	Loop
	}
}

ACTOR FloaterPerfectGiver : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_SpawnItemEx("MedalFloaterPerfect",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETMASTER)
	stop
	}
}

Actor MedalFloaterPerfect : MedalFloaterExcellent
{
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
  Looping:
    DE43 D 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
    TNT1 A 0 A_JumpIf(user_tic >= 175,"Fade")
	TNT1 A 0 A_SetUserVar(user_tic,user_tic+1)
	Loop
  Fade:
    TNT1 A 0 A_FadeOut(0.05)
	DE43 D 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	Loop
	}
}

ACTOR FloaterIncredibleGiver : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_SpawnItemEx("MedalFloaterIncredible",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETMASTER)
	stop
	}
}

Actor MedalFloaterIncredible : MedalFloaterExcellent
{
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
  Looping:
    DE43 E 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
    TNT1 A 0 A_JumpIf(user_tic >= 175,"Fade")
	TNT1 A 0 A_SetUserVar(user_tic,user_tic+1)
	Loop
  Fade:
    TNT1 A 0 A_FadeOut(0.05)
	DE43 E 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	Loop
	}
}

ACTOR FloaterTotalDominationGiver : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_SpawnItemEx("MedalFloaterTotalDomination",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETMASTER)
	stop
	}
}

Actor MedalFloaterTotalDomination : MedalFloaterExcellent
{
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
  Looping:
    DE43 F 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
    TNT1 A 0 A_JumpIf(user_tic >= 175,"Fade")
	TNT1 A 0 A_SetUserVar(user_tic,user_tic+1)
	Loop
  Fade:
    TNT1 A 0 A_FadeOut(0.05)
	DE43 F 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	Loop
	}
}

ACTOR FloaterTerminatorGiver : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_SpawnItemEx("MedalFloaterTerminator",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETMASTER)
	stop
	}
}

Actor MedalFloaterTerminator : MedalFloaterExcellent
{
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
  Looping:
    DE43 I 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
    TNT1 A 0 A_JumpIf(user_tic >= 175,"Fade")
	TNT1 A 0 A_SetUserVar(user_tic,user_tic+1)
	Loop
  Fade:
    TNT1 A 0 A_FadeOut(0.05)
	DE43 I 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	Loop
	}
}

ACTOR FloaterFirstBloodGiver : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_SpawnItemEx("MedalFloaterFirstBlood",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETMASTER)
	stop
	}
}

Actor MedalFloaterFirstBlood : MedalFloaterExcellent
{
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
  Looping:
    DE44 A 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
    TNT1 A 0 A_JumpIf(user_tic >= 175,"Fade")
	TNT1 A 0 A_SetUserVar(user_tic,user_tic+1)
	Loop
  Fade:
    TNT1 A 0 A_FadeOut(0.05)
	DE44 A 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	Loop
	}
}

ACTOR FloaterDoubleKillGiver : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_SpawnItemEx("MedalFloaterDoubleKill",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETMASTER)
	stop
	}
}

Actor MedalFloaterDoubleKill : MedalFloaterExcellent
{
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
  Looping:
    DE44 B 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
    TNT1 A 0 A_JumpIf(user_tic >= 175,"Fade")
	TNT1 A 0 A_SetUserVar(user_tic,user_tic+1)
	Loop
  Fade:
    TNT1 A 0 A_FadeOut(0.05)
	DE44 B 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	Loop
	}
}

ACTOR FloaterKillingSpreeGiver : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_SpawnItemEx("MedalFloaterKillingSpree",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETMASTER)
	stop
	}
}

Actor MedalFloaterKillingSpree : MedalFloaterExcellent
{
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
  Looping:
    DE44 C 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
    TNT1 A 0 A_JumpIf(user_tic >= 175,"Fade")
	TNT1 A 0 A_SetUserVar(user_tic,user_tic+1)
	Loop
  Fade:
    TNT1 A 0 A_FadeOut(0.05)
	DE44 C 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	Loop
	}
}

ACTOR FloaterMultiKillGiver : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_SpawnItemEx("MedalFloaterMultiKill",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETMASTER)
	stop
	}
}

Actor MedalFloaterMultiKill : MedalFloaterExcellent
{
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
  Looping:
    DE44 D 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
    TNT1 A 0 A_JumpIf(user_tic >= 175,"Fade")
	TNT1 A 0 A_SetUserVar(user_tic,user_tic+1)
	Loop
  Fade:
    TNT1 A 0 A_FadeOut(0.05)
	DE44 D 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	Loop
	}
}

ACTOR FloaterMonsterKillGiver : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_SpawnItemEx("MedalFloaterMonsterKill",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETMASTER)
	stop
	}
}

Actor MedalFloaterMonsterKill : MedalFloaterExcellent
{
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
  Looping:
    DE44 E 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
    TNT1 A 0 A_JumpIf(user_tic >= 175,"Fade")
	TNT1 A 0 A_SetUserVar(user_tic,user_tic+1)
	Loop
  Fade:
    TNT1 A 0 A_FadeOut(0.05)
	DE44 E 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	Loop
	}
}

ACTOR FloaterUltraKillGiver : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_SpawnItemEx("MedalFloaterUltraKill",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETMASTER)
	stop
	}
}

Actor MedalFloaterUltraKill : MedalFloaterExcellent
{
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
  Looping:
    DE44 F 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
    TNT1 A 0 A_JumpIf(user_tic >= 175,"Fade")
	TNT1 A 0 A_SetUserVar(user_tic,user_tic+1)
	Loop
  Fade:
    TNT1 A 0 A_FadeOut(0.05)
	DE44 F 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	Loop
	}
}

ACTOR FloaterUnstoppableGiver : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_SpawnItemEx("MedalFloaterUnstoppable",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETMASTER)
	stop
	}
}

Actor MedalFloaterUnstoppable : MedalFloaterExcellent
{
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
  Looping:
    DE44 G 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
    TNT1 A 0 A_JumpIf(user_tic >= 175,"Fade")
	TNT1 A 0 A_SetUserVar(user_tic,user_tic+1)
	Loop
  Fade:
    TNT1 A 0 A_FadeOut(0.05)
	DE44 G 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	Loop
	}
}

ACTOR FloaterComboKingGiver : Crusaderbuff
{
States 
{
  Pickup:
	TNT1 A 1
	TNT1 A 0 A_SpawnItemEx("MedalFloaterComboKing",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION|SXF_SETMASTER)
	stop
	}
}

Actor MedalFloaterComboKing : MedalFloaterExcellent
{
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
  Looping:
    DE44 H 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
    TNT1 A 0 A_JumpIf(user_tic >= 175,"Fade")
	TNT1 A 0 A_SetUserVar(user_tic,user_tic+1)
	Loop
  Fade:
    TNT1 A 0 A_FadeOut(0.05)
	DE44 H 1 A_Warp(AAPTR_FRIENDPLAYER,0,0,70,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	Loop
	}
}

//-----------ITEM-----------
Actor DemonicPowerRune : SwitchableDecoration
{
//Creator: Fluffy
//Origin: Nexus Infinity
//Sprite: DRXX
//Title: "Demonic Power Rune"
Radius 5
Height 5
Mass 0x7FFFFFFF
Speed 0
Damage 0
Health 0x7FFFFFFF
Scale 0.13
DamageType "Explosion"
Renderstyle Add
+DROPOFF
+FLOORCLIP
+FLOATBOB
-SHOOTABLE
+SOLID
+NODAMAGE
+ISMONSTER
+COUNTITEM
+USESPECIAL
+THRUACTORS
+NOTIMEFREEZE
+NOKILLSCRIPTS
+NEVERTARGET
Activation THINGSPEC_Activate|THINGSPEC_ThingTargets
var int user_counter;
Tag "Demonic Power Rune" //"I just wanna Talk Tuah!" Why did I write this fucking shit
States
{
  Spawn:
    TNT1 A 0 NoDelay A_JumpIf(ACS_NamedExecuteWithResult("NoDemonicRune") == 1,"Remove")
	TNT1 A 0 Thing_ChangeTID(0,ACS_NamedExecuteWithResult("DemonicPowerTid")) //Thing_ChangeTID(0,Random(65972,65979))
	TNT1 A 0 ACS_NamedExecuteAlways("DemonicPowerRune",0,tid)
	TNT1 A 0 A_JumpIf(ACS_NamedExecuteWithResult("NexusNoFloat") == 0,2)
	TNT1 A 0 A_ChangeFlag(FLOATBOB,0)
    TNT1 A 0 A_PlaySound("demonicrune/ambient",7,1.0,1)
  SpawnLoop:
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 A 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 B 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 C 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 D 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 E 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 F 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 G 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 H 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 I 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 J 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 K 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 L 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 M 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 N 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 O 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 P 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 Q 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 R 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 S 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 T 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 U 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 V 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 W 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 "X" 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 "Y" 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX1 "Z" 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 A 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 B 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 C 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 D 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 E 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 F 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 G 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 H 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 I 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 J 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 K 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 L 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 M 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 N 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 O 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 P 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 Q 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 R 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 S 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 T 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 U 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 V 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 W 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 "X" 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 "Y" 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX2 "Z" 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX3 A 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX3 B 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX3 C 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX3 D 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX3 E 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX3 F 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX3 G 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
    TNT1 AAAA 0 A_SpawnItemEx("DemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	DRX3 H 1 Bright A_SpawnItemEx("DemonicSmokeOrbit3",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	Loop
  Remove:
    TNT1 A 1 A_SpawnItem("ModdedMegaSphere")
	Stop
  Active:
    TNT1 A 0 A_JumpIfInventory("DemonicEffectToken",1,"SlowDown",AAPTR_TARGET)
    TNT1 A 0 ACS_NamedExecuteAlways("DemonicPowerGiver",0,tid)
	TNT1 A 0 A_PlaySound("demonicrune/pickup",CHAN_ITEM)
	TNT1 A 0 A_SpawnItemEx("DemonicRunePickup",0,0,40)
	TNT1 A 0 A_StopSound(7)
  Fade:
    TNT1 A 0 A_GiveInventory("DemonicPowerActivated",1)
    DRX1 ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 A_FadeOut(0.02,0)
	DRX2 ABCDEFGHIJKLMNOPQRSTUVWXYZ 1 A_FadeOut(0.02,0)
	DRX3 ABCDEFGH 1 A_FadeOut(0.02,0)
	TNT1 A 0 A_SetUserVar("user_counter",0)
	TNT1 AAAAAAAAAA 1 A_SpawnItemEx("DemonicRuneLightningSpawner",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION)
  FadeLoop:
	TNT1 AAAA 0 A_SpawnItemEx("PlayerDemonicSmokeOrbit2",0,0,0,0,0,0,Random(0,360),SXF_SETMASTER|SXF_NOCHECKPOSITION,128)
	TNT1 A 0 A_SetUserVar("user_counter",user_counter+1)
	TNT1 A 1 A_JumpIf(user_counter >= 140,"NULL")
	Loop
  SlowDown:
    TNT1 A 0 ACS_NamedExecuteAlways("DemonicPowerSlowDown",0)
	TNT1 A 0 A_StopSound(7)
	TNT1 A 0 A_SpawnItemEx("DemonicPowerRune",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION,0,tid)
	Stop
	}
}

Actor DemonicPowerRune2 : DemonicPowerRune
{
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 0 ACS_NamedExecuteAlways("DemonicPowerRune",0,tid)
    TNT1 A 0 A_PlaySound("demonicrune/ambient",7,1.0,1)
	Goto SpawnLoop
	}
}

Actor DemonicPowerRuneItem : CustomInventory
{
+INVBAR
+INVENTORY.BIGPOWERUP
+INVENTORY.NEVERRESPAWN
+INVENTORY.QUIET
Inventory.MaxAmount 1
Inventory.InterHubAmount 1
Inventory.Icon "DR1OB0"
Inventory.PickupSound "None"
Inventory.PickupMessage "Demonic Power Rune"
Tag "Portable Demonic Power Rune - Use to get a random skill or drop to spawn it on the ground"
States
{
  Spawn:
	TNT1 A 1
	TNT1 A 1 A_SpawnItem("SpecialBossPortalSpawnerNoDelay",20,0)
    Stop
  Use:
    TNT1 A 0
	TNT1 A 1 ACS_NamedExecuteAlways("DemonicPowerGiver",0,ACS_NamedExecuteWithResult("DemonicPowerTid"))
	Stop
	}
}

ACTOR DemonicRunePickup : MainyuDeathExplosion4
{
States
{
  Spawn:
	TNT1 A 0
	TNT1 AAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("ArmorParticleRed",Random(-12,12),Random(-12,12),Random(-12,12),FRandom(-2,2),FRandom(-2,2),FRandom(-2,2),0,0,128)
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("MadArmorSpark",Random(-12,12),Random(-12,12),Random(-12,12),FRandom(-2,2),FRandom(-2,2),FRandom(-2,2),0,0,0)
	TNT1 A 5
	TNT1 AAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("ArmorParticleRed",Random(-12,12),Random(-12,12),Random(-12,12),FRandom(-2,2),FRandom(-2,2),FRandom(-2,2),0,0,128)
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("MadArmorSpark",Random(-12,12),Random(-12,12),Random(-12,12),FRandom(-2,2),FRandom(-2,2),FRandom(-2,2),0,0,0)
	TNT1 A 5
	TNT1 AAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("ArmorParticleRed",Random(-12,12),Random(-12,12),Random(-12,12),FRandom(-2,2),FRandom(-2,2),FRandom(-2,2),0,0,128)
	TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("MadArmorSpark",Random(-12,12),Random(-12,12),Random(-12,12),FRandom(-2,2),FRandom(-2,2),FRandom(-2,2),0,0,0)
	TNT1 A 5
    Stop
  }
}

ACTOR DemonicRuneLightningSpawner : MasterLightningSpawnerSmallRed //Will last for a little while and disappear
{
var int user_counter;
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 0 A_SetUserVar("user_counter",random(5,8))
  Reset:
    TNT1 A 0 A_SetUserVar("user_xofs",random(-12,12))
	TNT1 A 0 A_SetUserVar("user_yofs",random(-12,12))
	TNT1 A 0 A_SetUserVar("user_zofs",random(15,40))
	TNT1 A 0 A_SetUserVar("user_limit",random(1,35))
	TNT1 A 0 A_SetUserVar("user_counter",user_counter+1)
	TNT1 A 0 A_JumpIf(user_counter >= 11,"NULL")
  ResetLoop:
    TNT1 A 1 A_Warp(AAPTR_TARGET,user_xofs,user_yofs,user_zofs,0,WARPF_ABSOLUTEANGLE|WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE)
	TNT1 A 0 A_SetUserVar("user_limit",user_limit+1)
	TNT1 A 0 A_JumpIf(user_limit >= 60,1)
    Loop
    TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "NULL")
	TNT1 A 0 A_PlaySound("beam/lightninghitbody",CHAN_AUTO)
    TNT1 A 0 A_Jump(255,"One","Two","Three","Four","Five")
	Goto Reset
  Toaster:
    TNT1 A 1
	Stop
	}
}

Actor DemonicSmokeOrbit2 : PatriarchOrbitCube1
{
Renderstyle Add
Alpha 0.2
+FORCEXYBILLBOARD
+NOKILLSCRIPTS
+NOTIMEFREEZE
var int user_xofs;
var int user_yofs;
var int user_zofs;
var int user_angle;
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "NULL")
	TNT1 A 0 A_SetScale(FRandom(0.4,0.7))
	TNT1 A 0 A_SetUserVar(user_xofs,FRandom(30,40))
	TNT1 A 0 A_SetUserVar(user_yofs,0)
	TNT1 A 0 A_SetUserVar(user_zofs,FRandom(0,38))
	TNT1 A 0 A_SetUserVar(user_angle,Random(-15,15))
  Rolling:
	TNT1 A 1 A_Warp(AAPTR_MASTER,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_USECALLERANGLE)
	OBSK OOOO 1 Bright A_Warp(AAPTR_MASTER,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK PPPP 1 Bright A_Warp(AAPTR_MASTER,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK QQQQ 1 Bright A_Warp(AAPTR_MASTER,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK RRRR 1 Bright A_Warp(AAPTR_MASTER,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK SSSS 1 Bright A_Warp(AAPTR_MASTER,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK TTTT 1 Bright A_Warp(AAPTR_MASTER,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK UUUU 1 Bright A_Warp(AAPTR_MASTER,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK VVVV 1 Bright A_Warp(AAPTR_MASTER,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK WWWW 1 Bright A_Warp(AAPTR_MASTER,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK XXXX 1 Bright A_Warp(AAPTR_MASTER,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK YYYY 1 Bright A_Warp(AAPTR_MASTER,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK ZZZZ 1 Bright A_Warp(AAPTR_MASTER,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	Stop
  }
}

Actor PlayerDemonicSmokeOrbit2 : DemonicSmokeOrbit2
{
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "NULL")
	TNT1 A 0 A_SetScale(FRandom(0.4,0.7))
	TNT1 A 0 A_SetUserVar(user_xofs,FRandom(30,40))
	TNT1 A 0 A_SetUserVar(user_yofs,0)
	TNT1 A 0 A_SetUserVar(user_zofs,FRandom(0,38))
	TNT1 A 0 A_SetUserVar(user_angle,Random(-15,15))
  Rolling:
	TNT1 A 1 A_Warp(AAPTR_TARGET,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_USECALLERANGLE)
	OBSK OOOO 1 Bright A_Warp(AAPTR_TARGET,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK PPPP 1 Bright A_Warp(AAPTR_TARGET,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK QQQQ 1 Bright A_Warp(AAPTR_TARGET,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK RRRR 1 Bright A_Warp(AAPTR_TARGET,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK SSSS 1 Bright A_Warp(AAPTR_TARGET,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK TTTT 1 Bright A_Warp(AAPTR_TARGET,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK UUUU 1 Bright A_Warp(AAPTR_TARGET,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK VVVV 1 Bright A_Warp(AAPTR_TARGET,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK WWWW 1 Bright A_Warp(AAPTR_TARGET,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK XXXX 1 Bright A_Warp(AAPTR_TARGET,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK YYYY 1 Bright A_Warp(AAPTR_TARGET,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	OBSK ZZZZ 1 Bright A_Warp(AAPTR_TARGET,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_Fadeout(0.02)
	Stop
  }
}

Actor DemonicSmokeOrbit3 : DemonicSmokeOrbit2
{
Alpha 1.0
Scale 0.15
States
{
  Spawn:
    TNT1 A 0
	TNT1 A 0 A_JumpIf(ACS_ExecuteWithResult(304) == 1, "NULL")
	TNT1 A 0 A_SetUserVar(user_xofs,FRandom(30,40))
	TNT1 A 0 A_SetUserVar(user_yofs,0)
	TNT1 A 0 A_SetUserVar(user_zofs,FRandom(0,38))
	TNT1 A 0 A_SetUserVar(user_angle,Random(-20,20))
	TNT1 A 1 A_Warp(AAPTR_MASTER,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_USECALLERANGLE)
  Rolling:
	PAO3 AAA 1 Bright A_Warp(AAPTR_MASTER,user_xofs,user_yofs,user_zofs,user_angle,WARPF_NOCHECKPOSITION|WARPF_INTERPOLATE|WARPF_USECALLERANGLE)
	TNT1 A 0 A_FadeOut(0.05)
	Loop
  }
}

//-----------SPAWNER-----------

Actor SpecialBossPortalSpawner //Credit by Trusar in CDT
{
+THRUACTORS
+NOTELEPORT
+DONTSPLASH
+NOGRAVITY
+NOTIMEFREEZE
+NOBLOCKMAP
+MISSILE
+NOTIMEFREEZE
+NOBLOCKMAP
-FORCEXYBILLBOARD
+NOINTERACTION
RENDERSTYLE ADD
Scale 1.0
var int user_delay;
states
{
   Spawn:
     TNT1 A Random(100,200)
	 TNT1 A 0 A_PlaySoundEx("Tier1/Roll","Voice",0,2)
	 TNT1 A 0 A_SpawnItemEx("SpecialBossGateSpawner", 0, 0, 20)
     TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 5 A_SpawnItemEx("SpecialBossPortalParticleSpawner", 0, 0, 20)
	 TNT1 AAAAAAAAAAAA 4 A_SpawnItemEx("SpecialBossPortalParticleSpawner2", 0, 0, 20)
	 TNT1 AAAAAAAAAAAA 3 A_SpawnItemEx("SpecialBossPortalParticleSpawner3", 0, 0, 20)
	 TNT1 A 0 A_SpawnItemEx("BFGShockwaveRed", 0, 0, 20, 0, 0, 0, 0, 128)
	 TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("SpecialBossPortalParticle",0,0,20,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	 TNT1 A 0 Radius_Quake(6,20,0,16,0)
   Looper:
     TNT1 A 0 A_JumpIf(user_delay >= 5,"End")
     TNT1 AAAAAAAAAAAA 3 A_SpawnItemEx("SpecialBossPortalParticleSpawner3", 0, 0, 0)
	 TNT1 A 0 A_SetUserVar("user_delay",user_delay+1)	
	 Loop
   End:
     TNT1 AAAAAAAAAAAAAAAAAAAAAAAA 5 A_SpawnItemEx("SpecialBossPortalParticleSpawner", 0, 0, 0)
	 TNT1 AAAAAAAAAAAA 4 A_SpawnItemEx("SpecialBossPortalParticleSpawner2", 0, 0, 0)
	 Stop
	 }
}

Actor SpecialBossPortalSpawnerNoDelay : SpecialBossPortalSpawner
{
states
{
   Spawn:
     TNT1 A Random(25,50)
	 TNT1 A 0 A_PlaySoundEx("Tier1/Roll","Voice",0,2)
	 TNT1 A 0 A_SpawnItemEx("SpecialBossGateSpawner", 0, 0, 20)
     TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 5 A_SpawnItemEx("SpecialBossPortalParticleSpawner", 0, 0, 20)
	 TNT1 AAAAAAAAAAAA 4 A_SpawnItemEx("SpecialBossPortalParticleSpawner2", 0, 0, 20)
	 TNT1 AAAAAAAAAAAA 3 A_SpawnItemEx("SpecialBossPortalParticleSpawner3", 0, 0, 20)
	 TNT1 A 0 A_SpawnItemEx("BFGShockwaveRed", 0, 0, 20, 0, 0, 0, 0, 128)
	 TNT1 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 0 A_SpawnItemEx("SpecialBossPortalParticle",0,0,20,Random(4,-4),Random(4,-4),Random(4,-4),0,128)
	 TNT1 A 0 A_Quake(6,20,0,100000)
   Looper:
     TNT1 A 0 A_JumpIf(user_delay >= 5,"End")
     TNT1 AAAAAAAAAAAA 3 A_SpawnItemEx("SpecialBossPortalParticleSpawner3", 0, 0, 0)
	 TNT1 A 0 A_SetUserVar("user_delay",user_delay+1)	
	 Loop
	 }
}


ACTOR SpecialBossPortalParticleSpawner : RedParticleSpawner
{
States
{
  Spawn:
	TNT1 A 0
	TNT1 A 1 A_SpawnItemEx("PortalParticle",0,0,0,FRandom(9.0,8.5),0,FRandom(-9.0,9.0),Random(0,359),128)
	Stop
    }
}

ACTOR SpecialBossPortalParticleSpawner2 : RedParticleSpawner
{
States
{
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("PortalParticle2",0,0,0,FRandom(14.0,12.5),0,FRandom(-12.0,12.0),Random(0,359),128)
	TNT1 A 1 A_SpawnItemEx("PortalParticle",0,0,0,FRandom(9.0,8.5),0,FRandom(-9.0,9.0),Random(0,359),128)
	Stop
    }
}

ACTOR SpecialBossPortalParticleSpawner3 : RedParticleSpawner
{
States
{
  Spawn:
	TNT1 A 0
	TNT1 A 0 A_SpawnItemEx("PortalParticle3",0,0,0,FRandom(18.0,16.5),0,FRandom(-20.0,20.0),Random(0,359),128)
	TNT1 A 0 A_SpawnItemEx("PortalParticle2",0,0,0,FRandom(14.0,12.5),0,FRandom(-12.0,12.0),Random(0,359),128)
	TNT1 A 1 A_SpawnItemEx("PortalParticle",0,0,0,FRandom(9.0,8.5),0,FRandom(-9.0,9.0),Random(0,359),128)
	Stop
    }
}

ACTOR PortalParticle2 : PortalParticle
{
States
{
  Spawn:
	TNT1 A 0
	TNT1 A 5
	TNT1 A 1 A_ScaleVelocity(-0.5)
	SPKO AAAAA 1 Bright A_FadeIn(0.2)
  Fly:
	SPKO A 2 Bright A_FadeOut(0.3)
	Loop
	}
}

ACTOR PortalParticle3 : PortalParticle
{
//Translation "80:111=176:191"
Scale 0.15
States
{
  Spawn:
	TNT1 A 0
	TNT1 A 5
	TNT1 A 1 A_ScaleVelocity(-0.8)
	PAO3 ABC 1 Bright A_FadeIn(0.2)
  Fly:
	PAO3 ABC 1 Bright A_FadeOut(0.3)
	Loop
	}
}

ACTOR SpecialBossPortalParticle
{
+THRUACTORS
+NOTELEPORT
+NOTIMEFREEZE
+DONTSPLASH
+NOGRAVITY
+NOBLOCKMAP
+CLIENTSIDEONLY
+MISSILE
+NOBLOCKMAP
+FORCEXYBILLBOARD
+NOINTERACTION
RENDERSTYLE ADD
Alpha 0.0
BounceFactor 0.5
Scale 0.09
States
{
  Spawn:
	SPKR AAAAAAAAAA 1 Bright A_FadeIn(0.8)
  Fly:
	SPKR AAAA 2 Bright A_FadeOut(0.8)
	Loop
	}
}

Actor SpecialBossGateSpawner : GatewaytoHell
{
States
{
  Spawn:
  TNT1 A 0
  TNT1 A 0 A_PlaySound("Gateway/Hell", CHAN_AUTO, 1.0, True)
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  TNT1 A 0 A_SpawnItemEx("GatewaytoHell2", Random(1,-1), Random(1,-1), Random(1,-1), 0, 0, 0, Random(0,359))
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  TNT1 A 0 A_SpawnItemEx("GatewaytoHell3", Random(1,-1), Random(1,-1), Random(1,-1), 0, 0, 0, Random(0,359))
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  TNT1 A 0 A_SpawnItemEx("GatewaytoHell4", Random(1,-1), Random(1,-1), Random(1,-1), 0, 0, 0, Random(0,359))
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  TNT1 A 0 A_SpawnItemEx("GatewaytoHell5", Random(1,-1), Random(1,-1), Random(1,-1), 0, 0, 0, Random(0,359))
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  TNT1 A 0 A_SpawnItemEx("GatewaytoHell6", Random(1,-1), Random(1,-1), Random(1,-1), 0, 0, 0, Random(0,359))
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  TNT1 A 0 A_FaceTarget
  TNT1 A 0 A_SpawnItemEx("GatewaytoHellSpawnTear2")
  TNT1 A 0 A_SpawnItemEx("DemonicPowerRune",0,0,0,0,0,0,0,SXF_NOCHECKPOSITION)
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  PRT1 ABCDEFGHIJKLMNOP 1 Bright
  Goto Death
  }
}

Actor GatewaytoHellSpawnTear2 : GatewaytoHellSpawnTear
{
States 
{
  Spawn:
	TNT1 A 0
	PRT1 ABCDEFGHIJKLMNOP 1 Bright A_FadeOut(0.10)
	Stop
	}
}