Esempio n. 1
0
        public GrammarParseResult GetValue(string name)
        {
            CreatureAction action = Prototype.CreatureActions.SingleOrDefault(x => x.Name.Equals(name));

            if (action != null)
            {
                return(Engine.Parsers.ParserHelper.Evaluate(action.ActionText, Controller.Instance.CurrentRuleSet));
            }

            //Assume it's an attribute if it's not an action
            GrammarParseResult result = new GrammarParseResult($"{IndividualName}'s ({Prototype.EntityName}) {name}");

            //Check Abilities
            AbilityAttr ability = AbilityScores.SingleOrDefault(x => x.Key.Name.Equals(name)).Key;

            if (ability != null)
            {
                result.Value         = AbilityScores[ability];
                result.EvaluatedText = AbilityScores[ability].ToString();
                return(result);
            }

            //Check Ability Skills
            AbilitySkillAttr abilityskill = AbilitySkillScores.SingleOrDefault(x => x.Key.Name.Equals(name)).Key;

            if (ability != null)
            {
                result.Value         = AbilitySkillScores[abilityskill];
                result.EvaluatedText = AbilitySkillScores[abilityskill].ToString();
                return(result);
            }

            //Check Counters
            CounterAttr counter = CounterValues.SingleOrDefault(x => x.Key.Name.Equals(name)).Key;

            if (ability != null)
            {
                result.Value         = CounterValues[counter];
                result.EvaluatedText = CounterValues[counter].Value.ToString();
                return(result);
            }

            //Check Other Attributes
            OtherAttr otherAttr = OtherScores.SingleOrDefault(x => x.Key.Name.Equals(name)).Key;

            if (ability != null)
            {
                result.Value         = OtherScores[otherAttr];
                result.EvaluatedText = OtherScores[otherAttr].ToString();
                return(result);
            }


            result.IsSuccessful = false;
            result.Value        = 0;
            result.Output       = $"Creatures of type \"{Prototype.EntityName}\" do not have an action or attribute with name \"{name}\"";
            return(result);
        }