Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
 protected override bool CustomApply(IEntity entity)
 {
     if (entity is ICharacter character)
     {
         if (!character.Conditions.Any(c => c.Id == Id))
         {
             character.Conditions.Add(this);
             if (!character.Conditions.Any(c => c.Id == EntityIds.FLAT_FOOTED_CONDITION_ID))
             {
                 var flatFooted = new FlatFooted(FlatFooted.AllCharacters);
                 flatFooted.Apply(character);
                 _hasAppliedFlatFooted = true;
                 return(true);
             }
             else
             {
                 var flatFooted = (FlatFooted)character.Conditions.First(c => c.Id == EntityIds.FLAT_FOOTED_CONDITION_ID);
                 if (!flatFooted.FlatFootedFrom.Contains(FlatFooted.AllCharacters))
                 {
                     var newFlatFooted = new FlatFooted(flatFooted, false, FlatFooted.AllCharacters);
                     flatFooted.Remove(character);
                     newFlatFooted.Apply(character);
                     return(true);
                 }
             }
         }
         throw new ConditionExistsException(this, character.Conditions.First(c => c.Id == Id));
     }
     return(false);
 }
Exemplo n.º 3
0
        private void AddFlatFootedCondition(ICharacter character)
        {
            var flatFooted = (FlatFooted)character.Conditions.FirstOrDefault(c => c.Id == EntityIds.FLAT_FOOTED_CONDITION_ID);

            if (flatFooted == null)
            {
                flatFooted = new FlatFooted(FlatFooted.AllCharacters);
                flatFooted.Apply(character);
                _conditionsAdded.Add(flatFooted);
            }
            else if (!flatFooted.FlatFootedFrom.Contains(FlatFooted.AllCharacters))
            {
                flatFooted.Remove(character);
                flatFooted = new FlatFooted(FlatFooted.AllCharacters);
                flatFooted.Apply(character);
                _conditionsAdded.Add(flatFooted);
            }
        }
Exemplo n.º 4
0
 protected override bool CustomRemove(IEntity entity)
 {
     if (entity is ICharacter character && character.Conditions.Any(c => c.Id == Id))
     {
         var condition = character.Conditions.First(c => c.Id == Id);
         character.Conditions.Remove(condition);
         if (_hasAppliedFlatFooted && character.Conditions.Any(c => c.Id == EntityIds.FLAT_FOOTED_CONDITION_ID))
         {
             var flatFooted = (FlatFooted)character.Conditions.First(c => c.Id == EntityIds.FLAT_FOOTED_CONDITION_ID);
             if (flatFooted.FlatFootedFrom.Contains(FlatFooted.AllCharacters))
             {
                 character.Conditions.Remove(flatFooted);
                 var newFlatFooted = new FlatFooted(flatFooted, true, FlatFooted.AllCharacters);
                 if (newFlatFooted.FlatFootedFrom.Count > 0)
                 {
                     newFlatFooted.Apply(character);
                 }
             }
         }
         _hasAppliedFlatFooted = false;
         return(true);
     }
     return(false);
 }