public class DialogRequirementQuestStatusRebirth : BaseDialogRequirement { public override BaseDialogRequirement.RequirementTypes RequirementType { get { return BaseDialogRequirement.RequirementTypes.QuestStatus; } } public override string GetRequiredDescription(EntityPlayer player) { return ""; } public override bool CheckRequirement(EntityPlayer player, EntityNPC talkingTo) { int maxJobs = RebirthVariables.customMaxJobs; if (maxJobs == 0) { return false; } DialogRequirementQuestStatusRebirth.QuestStatuses questStatuses = EnumUtils.Parse(base.Value, false); string id = base.ID; int numQuests = 0; int questTier = player.QuestJournal.GetCurrentFactionTier(talkingTo.NPCInfo.QuestFaction); //Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement questTier: " + questTier); for (int i = 0; i < player.QuestJournal.quests.Count; i++) { //Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement quests[i].ID: " + player.QuestJournal.quests[i].ID); //Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement quests[i].QuestClass.Name: " + player.QuestJournal.quests[i].QuestClass.Name); //Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement quests[i].QuestClass.QuestType: " + player.QuestJournal.quests[i].QuestClass.QuestType); //Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement quests[i].QuestClass.Difficulty: " + player.QuestJournal.quests[i].QuestClass.Difficulty); //Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement quests[i].QuestClass.DifficultyTier: " + player.QuestJournal.quests[i].QuestClass.DifficultyTier); //Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement quests[i].Active: " + player.QuestJournal.quests[i].Active); bool isFromVanillaTrader = RebirthUtilities.IsVanillaTrader(player.QuestJournal.quests[i].QuestGiverID); //Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement QuestGiverID: " + player.QuestJournal.quests[i].QuestGiverID); //Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement isFromVanillaTrader: " + isFromVanillaTrader); bool isOpen = isFromVanillaTrader && player.QuestJournal.quests[i].SharedOwnerID == -1 && (player.QuestJournal.quests[i].CurrentState == Quest.QuestState.NotStarted || player.QuestJournal.quests[i].CurrentState == Quest.QuestState.InProgress || player.QuestJournal.quests[i].CurrentState == Quest.QuestState.ReadyForTurnIn) ; if (isOpen) { numQuests++; } } //Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement numQuests: " + numQuests); int numMaxQuests = 7 - (questTier + numQuests); //Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement numMaxQuests: " + numMaxQuests); if (SingletonMonoBehaviour.Instance.IsClient) { if (questTier == 1 || questTier == 2) { numMaxQuests = 3 - numQuests; } else if (questTier == 3 || questTier == 4) { numMaxQuests = 2 - numQuests; } else { numMaxQuests = 1 - numQuests; } } //Log.Out("DialogRequirementQuestStatusRebirth-CheckRequirement numMaxQuests: " + numMaxQuests); return (numMaxQuests > 0); } private enum QuestStatuses { NotStarted, InProgress, TurnInReady, Completed, CanReceive, CannotReceive } }