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); }