public TimeChangeRemoval ChangeTime(ChangeCharacterTimeDto changeCharacterTimeDto) { ActivatedAbilities.ForEach(x => x.ActiveTime.Add(new TimeLimitUnitParsed { Time = changeCharacterTimeDto.TimeUnit })); var toRemove = new List <RoundActivateAbilities>(); foreach (var feat in changeCharacterTimeDto.Bonus.Feats) { toRemove.AddRange(feat.ChangeTime(changeCharacterTimeDto)); } foreach (var roundActivateAbilitiese in toRemove) { //Removing the time unit just added. No need to add it to DB to be removed. roundActivateAbilitiese.ActiveTime.RemoveAll(x => x.ID == Guid.Empty); } var dmgToRemove = new List <DamageTaken>(); if (changeCharacterTimeDto.TimeUnit == TimeLimitUnit.Encounter || changeCharacterTimeDto.TimeUnit == TimeLimitUnit.Day) { dmgToRemove = changeCharacterTimeDto.Bonus.Character.HitPoints.DamgeToDelete(changeCharacterTimeDto.Bonus); } //UsedActions.RemoveAll(x => x.ID == Guid.Empty); return(new TimeChangeRemoval { UsedActions = GetActionToRemove(UsedActions, changeCharacterTimeDto.TimeUnit), DeaktivatedAbilities = toRemove, DeaktivatedConditions = ActivatedConditions.Where(x => x.AutoDismissAfter.HasValue && (int)x.AutoDismissAfter.Value <= (int)changeCharacterTimeDto.TimeUnit).ToList(), DamagesToRemove = dmgToRemove }); }