public virtual bool IsRequirementMet(IQuestStateVariables state, Requirement requirement)
        {
            if (requirement.RequirementType == RequirementTypes.QuestStateRequirement)
            {
                var hasQuestState = state.ContainsKey(requirement.AssociatedId);
                if (requirement.AssociatedValue == QuestStateTypes.QuestNotStarted && !hasQuestState)
                {
                    return(true);
                }

                return(state[requirement.AssociatedId] == requirement.AssociatedValue);
            }

            return(true);
        }
 public static bool AreRequirementsMet(this ICharacterRequirementChecker characterRequirementChecker, IQuestStateVariables questState, ITriggerStateVariables triggerState,
                                       ICharacter character, IHasRequirements hasRequirements)
 {
     return(AreRequirementsMet(characterRequirementChecker, character, hasRequirements) &&
            AreRequirementsMet(characterRequirementChecker, questState, hasRequirements) &&
            AreRequirementsMet(characterRequirementChecker, triggerState, hasRequirements));
 }
 public static bool AreRequirementsMet(this ICharacterRequirementChecker characterRequirementChecker, IQuestStateVariables questState, IHasRequirements hasRequirements)
 {
     return(hasRequirements.Requirements.All(x => characterRequirementChecker.IsRequirementMet(questState, x)));
 }