public override bool StartSpecialSkill(Cooldown sk)
        {
            if (sk.Skill.IconName == ManaBoost.Cooldown.Skill.IconName)
            {
                ManaBoost.StartCooldown(sk.Duration);
                return(true);
            }

            if (sk.Skill.IconName == PrimeFlame.IconName)
            {
                Fusion.Skill = PrimeFlame;
                Fusion.Start(sk.Duration, sk.Mode);
                if (sk.Mode != CooldownMode.Normal)
                {
                    return(true);
                }
                _latestCooldown = (long)sk.OriginalDuration;
                _sw.Restart();

                return(true);
            }

            var fusion = ManaBoost.Effect.IsAvailable ? FusionSkill : FusionSkillBoost;

            if (sk.Skill.IconName == fusion.IconName)
            {
                _latestCooldown = (long)sk.OriginalDuration;
                Fusion.Start(sk.Duration, sk.Mode);
                _sw.Restart();
                return(false);
            }

            return(false);
        }
        private static void CheckManaBoost(S_ABNORMALITY_END p)
        {
            if (!IsManaBoost(p.AbnormalityId))
            {
                return;
            }
            if (!IsViewModelAvailable <SorcererLayoutVM>(out var vm))
            {
                return;
            }

            vm !.ManaBoost.StopEffect();
        }
        private static void CheckManaBoost(S_ABNORMALITY_REFRESH p)
        {
            if (!IsManaBoost(p.AbnormalityId))
            {
                return;
            }
            if (!IsViewModelAvailable <SorcererLayoutVM>(out var vm))
            {
                return;
            }

            vm !.ManaBoost.RefreshEffect(p.Duration);
        }
 public override void Dispose()
 {
     ManaBoost.Dispose();
     SorcererAbnormalityTracker.BoostChanged -= OnBoostChanged;
 }