void HandleQuestQuery(QueryQuestInfo packet) { Quest quest = Global.ObjectMgr.GetQuestTemplate(packet.QuestID); if (quest != null) { _player.PlayerTalkClass.SendQuestQueryResponse(quest); } else { QueryQuestInfoResponse response = new QueryQuestInfoResponse(); response.QuestID = packet.QuestID; SendPacket(response); } }
public void SendQuestQueryResponse(Quest quest) { if (!WorldConfig.GetBoolValue(WorldCfg.CacheDataQueries)) { quest.InitializeQueryData(); } QueryQuestInfoResponse queryQuestInfoResponse = quest.QueryData; Locale loc = _session.GetSessionDbLocaleIndex(); if (loc != Locale.enUS) { QuestTemplateLocale questTemplateLocale = Global.ObjectMgr.GetQuestLocale(queryQuestInfoResponse.QuestID); if (questTemplateLocale != null) { ObjectManager.GetLocaleString(questTemplateLocale.LogTitle, loc, ref queryQuestInfoResponse.Info.LogTitle); ObjectManager.GetLocaleString(questTemplateLocale.LogDescription, loc, ref queryQuestInfoResponse.Info.LogDescription); ObjectManager.GetLocaleString(questTemplateLocale.QuestDescription, loc, ref queryQuestInfoResponse.Info.QuestDescription); ObjectManager.GetLocaleString(questTemplateLocale.AreaDescription, loc, ref queryQuestInfoResponse.Info.AreaDescription); ObjectManager.GetLocaleString(questTemplateLocale.QuestCompletionLog, loc, ref queryQuestInfoResponse.Info.QuestCompletionLog); ObjectManager.GetLocaleString(questTemplateLocale.PortraitGiverText, loc, ref queryQuestInfoResponse.Info.PortraitGiverText); ObjectManager.GetLocaleString(questTemplateLocale.PortraitGiverName, loc, ref queryQuestInfoResponse.Info.PortraitGiverName); ObjectManager.GetLocaleString(questTemplateLocale.PortraitTurnInText, loc, ref queryQuestInfoResponse.Info.PortraitTurnInText); ObjectManager.GetLocaleString(questTemplateLocale.PortraitTurnInName, loc, ref queryQuestInfoResponse.Info.PortraitTurnInName); } foreach (QuestObjective questObjective in queryQuestInfoResponse.Info.Objectives) { QuestObjectivesLocale questObjectivesLocaleData = Global.ObjectMgr.GetQuestObjectivesLocale(questObjective.Id); if (questObjectivesLocaleData != null) { ObjectManager.GetLocaleString(questObjectivesLocaleData.Description, loc, ref questObjective.Description); } } } _session.SendPacket(queryQuestInfoResponse); }
public void SendQuestQueryResponse(Quest quest) { QueryQuestInfoResponse packet = new QueryQuestInfoResponse(); packet.Allow = true; packet.QuestID = quest.Id; packet.Info.LogTitle = quest.LogTitle; packet.Info.LogDescription = quest.LogDescription; packet.Info.QuestDescription = quest.QuestDescription; packet.Info.AreaDescription = quest.AreaDescription; packet.Info.QuestCompletionLog = quest.QuestCompletionLog; packet.Info.PortraitGiverText = quest.PortraitGiverText; packet.Info.PortraitGiverName = quest.PortraitGiverName; packet.Info.PortraitTurnInText = quest.PortraitTurnInText; packet.Info.PortraitTurnInName = quest.PortraitTurnInName; LocaleConstant locale = _session.GetSessionDbLocaleIndex(); if (locale != LocaleConstant.enUS) { QuestTemplateLocale questTemplateLocale = Global.ObjectMgr.GetQuestLocale(quest.Id); if (questTemplateLocale != null) { ObjectManager.GetLocaleString(questTemplateLocale.LogTitle, locale, ref packet.Info.LogTitle); ObjectManager.GetLocaleString(questTemplateLocale.LogDescription, locale, ref packet.Info.LogDescription); ObjectManager.GetLocaleString(questTemplateLocale.QuestDescription, locale, ref packet.Info.QuestDescription); ObjectManager.GetLocaleString(questTemplateLocale.AreaDescription, locale, ref packet.Info.AreaDescription); ObjectManager.GetLocaleString(questTemplateLocale.QuestCompletionLog, locale, ref packet.Info.QuestCompletionLog); ObjectManager.GetLocaleString(questTemplateLocale.PortraitGiverText, locale, ref packet.Info.PortraitGiverText); ObjectManager.GetLocaleString(questTemplateLocale.PortraitGiverName, locale, ref packet.Info.PortraitGiverName); ObjectManager.GetLocaleString(questTemplateLocale.PortraitTurnInText, locale, ref packet.Info.PortraitTurnInText); ObjectManager.GetLocaleString(questTemplateLocale.PortraitTurnInName, locale, ref packet.Info.PortraitTurnInName); } } packet.Info.QuestID = quest.Id; packet.Info.QuestType = (int)quest.Type; packet.Info.QuestLevel = quest.Level; packet.Info.QuestMaxScalingLevel = quest.MaxScalingLevel; packet.Info.QuestPackageID = quest.PackageID; packet.Info.QuestMinLevel = quest.MinLevel; packet.Info.QuestSortID = quest.QuestSortID; packet.Info.QuestInfoID = quest.QuestInfoID; packet.Info.SuggestedGroupNum = quest.SuggestedPlayers; packet.Info.RewardNextQuest = quest.NextQuestInChain; packet.Info.RewardXPDifficulty = quest.RewardXPDifficulty; packet.Info.RewardXPMultiplier = quest.RewardXPMultiplier; if (!quest.HasFlag(QuestFlags.HiddenRewards)) { packet.Info.RewardMoney = quest.RewardMoney < 0 ? quest.RewardMoney : (int)_session.GetPlayer().GetQuestMoneyReward(quest); } packet.Info.RewardMoneyDifficulty = quest.RewardMoneyDifficulty; packet.Info.RewardMoneyMultiplier = quest.RewardMoneyMultiplier; packet.Info.RewardBonusMoney = quest.RewardBonusMoney; for (byte i = 0; i < SharedConst.QuestRewardDisplaySpellCount; ++i) { packet.Info.RewardDisplaySpell[i] = quest.RewardDisplaySpell[i]; } packet.Info.RewardSpell = quest.RewardSpell; packet.Info.RewardHonor = quest.RewardHonor; packet.Info.RewardKillHonor = quest.RewardKillHonor; packet.Info.RewardArtifactXPDifficulty = (int)quest.RewardArtifactXPDifficulty; packet.Info.RewardArtifactXPMultiplier = quest.RewardArtifactXPMultiplier; packet.Info.RewardArtifactCategoryID = (int)quest.RewardArtifactCategoryID; packet.Info.StartItem = quest.SourceItemId; packet.Info.Flags = (uint)quest.Flags; packet.Info.FlagsEx = (uint)quest.FlagsEx; packet.Info.RewardTitle = quest.RewardTitleId; packet.Info.RewardArenaPoints = quest.RewardArenaPoints; packet.Info.RewardSkillLineID = quest.RewardSkillId; packet.Info.RewardNumSkillUps = quest.RewardSkillPoints; packet.Info.RewardFactionFlags = quest.RewardReputationMask; packet.Info.PortraitGiver = quest.QuestGiverPortrait; packet.Info.PortraitTurnIn = quest.QuestTurnInPortrait; for (byte i = 0; i < SharedConst.QuestItemDropCount; ++i) { packet.Info.ItemDrop[i] = (int)quest.ItemDrop[i]; packet.Info.ItemDropQuantity[i] = (int)quest.ItemDropQuantity[i]; } if (!quest.HasFlag(QuestFlags.HiddenRewards)) { for (byte i = 0; i < SharedConst.QuestRewardItemCount; ++i) { packet.Info.RewardItems[i] = quest.RewardItemId[i]; packet.Info.RewardAmount[i] = quest.RewardItemCount[i]; } for (byte i = 0; i < SharedConst.QuestRewardChoicesCount; ++i) { packet.Info.UnfilteredChoiceItems[i].ItemID = quest.RewardChoiceItemId[i]; packet.Info.UnfilteredChoiceItems[i].Quantity = quest.RewardChoiceItemCount[i]; } } for (byte i = 0; i < SharedConst.QuestRewardReputationsCount; ++i) { packet.Info.RewardFactionID[i] = quest.RewardFactionId[i]; packet.Info.RewardFactionValue[i] = quest.RewardFactionValue[i]; packet.Info.RewardFactionOverride[i] = quest.RewardFactionOverride[i]; packet.Info.RewardFactionCapIn[i] = (int)quest.RewardFactionCapIn[i]; } packet.Info.POIContinent = quest.POIContinent; packet.Info.POIx = quest.POIx; packet.Info.POIy = quest.POIy; packet.Info.POIPriority = quest.POIPriority; packet.Info.AllowableRaces = quest.AllowableRaces; packet.Info.QuestRewardID = (int)quest.QuestRewardID; packet.Info.Expansion = quest.Expansion; foreach (QuestObjective questObjective in quest.Objectives) { if (locale != LocaleConstant.enUS) { QuestObjectivesLocale questObjectivesLocaleData = Global.ObjectMgr.GetQuestObjectivesLocale(questObjective.ID); if (questObjectivesLocaleData != null) { ObjectManager.GetLocaleString(questObjectivesLocaleData.Description, locale, ref questObjective.Description); } } packet.Info.Objectives.Add(questObjective); } for (int i = 0; i < SharedConst.QuestRewardCurrencyCount; ++i) { packet.Info.RewardCurrencyID[i] = quest.RewardCurrencyId[i]; packet.Info.RewardCurrencyQty[i] = quest.RewardCurrencyCount[i]; } packet.Info.AcceptedSoundKitID = quest.SoundAccept; packet.Info.CompleteSoundKitID = quest.SoundTurnIn; packet.Info.AreaGroupID = quest.AreaGroupID; packet.Info.TimeAllowed = quest.LimitTime; _session.SendPacket(packet); }
public void InitializeQueryData() { QueryData = new QueryQuestInfoResponse(); QueryData.Allow = true; QueryData.QuestID = Id; QueryData.Info.LogTitle = LogTitle; QueryData.Info.LogDescription = LogDescription; QueryData.Info.QuestDescription = QuestDescription; QueryData.Info.AreaDescription = AreaDescription; QueryData.Info.QuestCompletionLog = QuestCompletionLog; QueryData.Info.PortraitGiverText = PortraitGiverText; QueryData.Info.PortraitGiverName = PortraitGiverName; QueryData.Info.PortraitTurnInText = PortraitTurnInText; QueryData.Info.PortraitTurnInName = PortraitTurnInName; QueryData.Info.QuestID = Id; QueryData.Info.QuestType = (int)Type; QueryData.Info.ContentTuningID = ContentTuningId; QueryData.Info.QuestPackageID = PackageID; QueryData.Info.QuestSortID = QuestSortID; QueryData.Info.QuestInfoID = QuestInfoID; QueryData.Info.SuggestedGroupNum = SuggestedPlayers; QueryData.Info.RewardNextQuest = NextQuestInChain; QueryData.Info.RewardXPDifficulty = RewardXPDifficulty; QueryData.Info.RewardXPMultiplier = RewardXPMultiplier; if (!HasFlag(QuestFlags.HiddenRewards)) { QueryData.Info.RewardMoney = RewardMoney; } QueryData.Info.RewardMoneyDifficulty = RewardMoneyDifficulty; QueryData.Info.RewardMoneyMultiplier = RewardMoneyMultiplier; QueryData.Info.RewardBonusMoney = RewardBonusMoney; foreach (QuestRewardDisplaySpell displaySpell in RewardDisplaySpell) { QueryData.Info.RewardDisplaySpell.Add(new QuestCompleteDisplaySpell(displaySpell.SpellId, displaySpell.PlayerConditionId)); } QueryData.Info.RewardSpell = RewardSpell; QueryData.Info.RewardHonor = RewardHonor; QueryData.Info.RewardKillHonor = RewardKillHonor; QueryData.Info.RewardArtifactXPDifficulty = (int)RewardArtifactXPDifficulty; QueryData.Info.RewardArtifactXPMultiplier = RewardArtifactXPMultiplier; QueryData.Info.RewardArtifactCategoryID = (int)RewardArtifactCategoryID; QueryData.Info.StartItem = SourceItemId; QueryData.Info.Flags = (uint)Flags; QueryData.Info.FlagsEx = (uint)FlagsEx; QueryData.Info.FlagsEx2 = (uint)FlagsEx2; QueryData.Info.RewardTitle = RewardTitleId; QueryData.Info.RewardArenaPoints = RewardArenaPoints; QueryData.Info.RewardSkillLineID = RewardSkillId; QueryData.Info.RewardNumSkillUps = RewardSkillPoints; QueryData.Info.RewardFactionFlags = RewardReputationMask; QueryData.Info.PortraitGiver = QuestGiverPortrait; QueryData.Info.PortraitGiverMount = QuestGiverPortraitMount; QueryData.Info.PortraitTurnIn = QuestTurnInPortrait; for (byte i = 0; i < SharedConst.QuestItemDropCount; ++i) { QueryData.Info.ItemDrop[i] = (int)ItemDrop[i]; QueryData.Info.ItemDropQuantity[i] = (int)ItemDropQuantity[i]; } if (!HasFlag(QuestFlags.HiddenRewards)) { for (byte i = 0; i < SharedConst.QuestRewardItemCount; ++i) { QueryData.Info.RewardItems[i] = RewardItemId[i]; QueryData.Info.RewardAmount[i] = RewardItemCount[i]; } for (byte i = 0; i < SharedConst.QuestRewardChoicesCount; ++i) { QueryData.Info.UnfilteredChoiceItems[i].ItemID = RewardChoiceItemId[i]; QueryData.Info.UnfilteredChoiceItems[i].Quantity = RewardChoiceItemCount[i]; } } for (byte i = 0; i < SharedConst.QuestRewardReputationsCount; ++i) { QueryData.Info.RewardFactionID[i] = RewardFactionId[i]; QueryData.Info.RewardFactionValue[i] = RewardFactionValue[i]; QueryData.Info.RewardFactionOverride[i] = RewardFactionOverride[i]; QueryData.Info.RewardFactionCapIn[i] = RewardFactionCapIn[i]; } QueryData.Info.POIContinent = POIContinent; QueryData.Info.POIx = POIx; QueryData.Info.POIy = POIy; QueryData.Info.POIPriority = POIPriority; QueryData.Info.AllowableRaces = AllowableRaces; QueryData.Info.TreasurePickerID = TreasurePickerID; QueryData.Info.Expansion = Expansion; QueryData.Info.ManagedWorldStateID = ManagedWorldStateID; QueryData.Info.QuestSessionBonus = 0; //GetQuestSessionBonus(); // this is only sent while quest session is active foreach (QuestObjective questObjective in Objectives) { QueryData.Info.Objectives.Add(questObjective); } for (int i = 0; i < SharedConst.QuestRewardCurrencyCount; ++i) { QueryData.Info.RewardCurrencyID[i] = RewardCurrencyId[i]; QueryData.Info.RewardCurrencyQty[i] = RewardCurrencyCount[i]; } QueryData.Info.AcceptedSoundKitID = SoundAccept; QueryData.Info.CompleteSoundKitID = SoundTurnIn; QueryData.Info.AreaGroupID = AreaGroupID; QueryData.Info.TimeAllowed = LimitTime; }