private void ApplyChangeOnItemModifier(IList <ActiveStatsModifier> modifiers, IModifierChange change)
        {
            var newModifier = change.Modifier;
            var modifier    = modifiers.First(m => m.Id == newModifier.Id);

            if (!newModifier.Active && !modifier.Reusable)
            {
                modifiers.Remove(modifier);
            }
            else
            {
                modifier.Active              = newModifier.Active;
                modifier.CurrentCombatCount  = newModifier.CurrentCombatCount;
                modifier.CurrentLapCount     = newModifier.CurrentLapCount;
                modifier.CurrentTimeDuration = newModifier.CurrentTimeDuration;
            }
        }
        private void ApplyChangeOnMonsterModifier(Monster monster, IList <ActiveStatsModifier> modifiers, IModifierChange change, INotificationSession notificationSession)
        {
            var newModifier = change.Modifier;
            var modifier    = modifiers.First(m => m.Id == newModifier.Id);

            if (!newModifier.Active && !modifier.Reusable)
            {
                modifiers.Remove(modifier);
                notificationSession.NotifyMonsterRemoveModifier(monster.Id, modifier.Id);
            }
            else
            {
                modifier.Active              = newModifier.Active;
                modifier.CurrentCombatCount  = newModifier.CurrentCombatCount;
                modifier.CurrentLapCount     = newModifier.CurrentLapCount;
                modifier.CurrentTimeDuration = newModifier.CurrentTimeDuration;
                notificationSession.NotifyMonsterUpdateModifier(monster.Id, modifier);
            }
        }