public void Load(BinaryReader pReader) { Identifier = pReader.ReadUInt16(); NextIdentifier = pReader.ReadUInt16(); Area = pReader.ReadByte(); MinLevel = pReader.ReadByte(); MaxLevel = pReader.ReadByte(); PetCloseness = pReader.ReadUInt16(); TamingMobLevel = pReader.ReadByte(); RepeatWait = pReader.ReadInt32(); Fame = pReader.ReadUInt16(); int jobsCount = pReader.ReadInt32(); Jobs = new List<ushort>(jobsCount); while (jobsCount-- > 0) Jobs.Add(pReader.ReadUInt16()); int requirementsCount = pReader.ReadInt32(); Requirements = new List<QuestRequirementData>(requirementsCount); while (requirementsCount-- > 0) { QuestRequirementData requirement = new QuestRequirementData(); requirement.Load(pReader); Requirements.Add(requirement); } int rewardsCount = pReader.ReadInt32(); Rewards = new List<QuestRewardData>(rewardsCount); while (rewardsCount-- > 0) { QuestRewardData reward = new QuestRewardData(); reward.Load(pReader); Rewards.Add(reward); } }
public static bool QuestRequirementCompleted(QuestRequirementData requirementData) { int requirementFlagsMet = 0; foreach (QuestFlagData requirementFlag in requirementData.completionFlagValues) { foreach (QuestFlagData progressFlag in currentQuestProgress) { if (progressFlag.flagName == requirementFlag.flagName) { if (progressFlag.flagValue == requirementFlag.flagValue) { requirementFlagsMet += 1; } } } } return (requirementFlagsMet == requirementData.completionFlagValues.Count); }