public virtual void Deactivate()
 {
     if (!defaultParams.active)
     {
         MelonLogger.Msg(type.ToString() + " cancelled");
         return;
     }
     MelonLogger.Msg(type.ToString() + " deactivated");
     defaultParams.active = false;
     ModStatusHandler.RemoveStatusDisplays(type, ModStatusHandler.UpdateType.Ingame);
     ModStatusHandler.UpdateStatusDisplays(type, defaultParams.name, defaultParams.cooldown.ToString(), defaultParams.user, defaultParams.color, ModStatusHandler.UpdateType.ScoreOverlay);
     ModifierManager.ProcessQueue();
     MelonCoroutines.Start(CooldownTimer(defaultParams.cooldown));
     if (ModifierManager.nukeActive)
     {
         foreach (Modifier mod in ModifierManager.activeModifiers)
         {
             if (mod.defaultParams.active)
             {
                 return;
             }
         }
         ModifierManager.nukeActive = false;
     }
 }
 protected IEnumerator CooldownTimer(float cooldownTimer)
 {
     while (cooldownTimer > 0)
     {
         ModStatusHandler.UpdateStatusDisplays(type, defaultParams.name, cooldownTimer.ToString(), defaultParams.user, defaultParams.color, ModStatusHandler.UpdateType.ScoreOverlay);
         if (ModifierManager.stopAllModifiers)
         {
             yield break;
         }
         if (!InGameUI.I.pauseScreen.IsPaused())
         {
             cooldownTimer--;
         }
         yield return(new WaitForSecondsRealtime(1f));
     }
     ModStatusHandler.RemoveStatusDisplays(type, ModStatusHandler.UpdateType.ScoreOverlay);
     ModifierManager.RemoveActiveModifier(this);
 }