protected override bool CustomApply(IEntity entity) { if (entity is ICharacter character) { if (!character.Conditions.Any(c => c.Id == Id)) { var flatFooted = (FlatFooted)character.Conditions.FirstOrDefault(c => c.Id == EntityIds.FLAT_FOOTED_CONDITION_ID); if (flatFooted == null) { flatFooted = new FlatFooted(FlatFooted.AllCharacters); _appliedConditions.Add(flatFooted); character.Conditions.Add(flatFooted); } else if (!flatFooted.FlatFootedFrom.Contains(FlatFooted.AllCharacters)) { flatFooted = new FlatFooted(flatFooted, false, FlatFooted.AllCharacters); } var immobilized = character.Conditions.FirstOrDefault(c => c.Id == EntityIds.IMMOBILIZED_CONDITION_ID); if (immobilized == null) { immobilized = new Immobilized(); _appliedConditions.Add(immobilized); character.Conditions.Add(immobilized); } character.Conditions.Add(this); return(true); } throw new ConditionExistsException(this, character.Conditions.First(c => c.Id == Id)); } return(false); }
private void AddImmobilizedCondition(ICharacter character) { var immobilized = character.Conditions.FirstOrDefault(c => c.Id == EntityIds.IMMOBILIZED_CONDITION_ID); if (immobilized == null) { immobilized = new Immobilized(); immobilized.Apply(character); _conditionsAdded.Add(immobilized); } }