Beispiel #1
0
        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
            });
        }