public void SendQuestGiverQuestDetails(Quest quest, ObjectGuid npcGUID, bool autoLaunched, bool displayPopup) { QuestGiverQuestDetails packet = new QuestGiverQuestDetails(); packet.QuestTitle = quest.LogTitle; packet.LogDescription = quest.LogDescription; packet.DescriptionText = quest.QuestDescription; packet.PortraitGiverText = quest.PortraitGiverText; packet.PortraitGiverName = quest.PortraitGiverName; packet.PortraitTurnInText = quest.PortraitTurnInText; packet.PortraitTurnInName = quest.PortraitTurnInName; Locale locale = _session.GetSessionDbLocaleIndex(); if (locale != Locale.enUS) { QuestTemplateLocale localeData = Global.ObjectMgr.GetQuestLocale(quest.Id); if (localeData != null) { ObjectManager.GetLocaleString(localeData.LogTitle, locale, ref packet.QuestTitle); ObjectManager.GetLocaleString(localeData.LogDescription, locale, ref packet.LogDescription); ObjectManager.GetLocaleString(localeData.QuestDescription, locale, ref packet.DescriptionText); ObjectManager.GetLocaleString(localeData.PortraitGiverText, locale, ref packet.PortraitGiverText); ObjectManager.GetLocaleString(localeData.PortraitGiverName, locale, ref packet.PortraitGiverName); ObjectManager.GetLocaleString(localeData.PortraitTurnInText, locale, ref packet.PortraitTurnInText); ObjectManager.GetLocaleString(localeData.PortraitTurnInName, locale, ref packet.PortraitTurnInName); } } packet.QuestGiverGUID = npcGUID; packet.InformUnit = _session.GetPlayer().GetPlayerSharingQuest(); packet.QuestID = quest.Id; packet.PortraitGiver = quest.QuestGiverPortrait; packet.PortraitGiverMount = quest.QuestGiverPortraitMount; packet.PortraitTurnIn = quest.QuestTurnInPortrait; packet.QuestSessionBonus = 0; //quest.GetQuestSessionBonus(); // this is only sent while quest session is active packet.AutoLaunched = autoLaunched; packet.DisplayPopup = displayPopup; packet.QuestFlags[0] = (uint)(quest.Flags & (WorldConfig.GetBoolValue(WorldCfg.QuestIgnoreAutoAccept) ? ~QuestFlags.AutoAccept : ~QuestFlags.None)); packet.QuestFlags[1] = (uint)quest.FlagsEx; packet.SuggestedPartyMembers = quest.SuggestedPlayers; // RewardSpell can teach multiple spells in trigger spell effects. But not all effects must be SPELL_EFFECT_LEARN_SPELL. See example spell 33950 SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(quest.RewardSpell, Difficulty.None); if (spellInfo != null) { foreach (SpellEffectInfo effect in spellInfo.GetEffects()) { if (effect != null && effect.IsEffect(SpellEffectName.LearnSpell)) { packet.LearnSpells.Add(effect.TriggerSpell); } } } quest.BuildQuestRewards(packet.Rewards, _session.GetPlayer()); for (int i = 0; i < SharedConst.QuestEmoteCount; ++i) { var emote = new QuestDescEmote(quest.DetailsEmote[i], quest.DetailsEmoteDelay[i]); packet.DescEmotes.Add(emote); } var objs = quest.Objectives; for (int i = 0; i < objs.Count; ++i) { var obj = new QuestObjectiveSimple(); obj.Id = objs[i].Id; obj.ObjectID = objs[i].ObjectID; obj.Amount = objs[i].Amount; obj.Type = (byte)objs[i].Type; packet.Objectives.Add(obj); } _session.SendPacket(packet); }
public void SendQuestGiverQuestDetails(Quest quest, ObjectGuid npcGUID, bool autoLaunched, bool displayPopup) { QuestGiverQuestDetails packet = new QuestGiverQuestDetails(); packet.QuestTitle = quest.LogTitle; packet.LogDescription = quest.LogDescription; packet.DescriptionText = quest.QuestDescription; packet.PortraitGiverText = quest.PortraitGiverText; packet.PortraitGiverName = quest.PortraitGiverName; packet.PortraitTurnInText = quest.PortraitTurnInText; packet.PortraitTurnInName = quest.PortraitTurnInName; LocaleConstant locale = _session.GetSessionDbLocaleIndex(); if (locale != LocaleConstant.enUS) { QuestTemplateLocale localeData = Global.ObjectMgr.GetQuestLocale(quest.Id); if (localeData != null) { ObjectManager.GetLocaleString(localeData.LogTitle, locale, ref packet.QuestTitle); ObjectManager.GetLocaleString(localeData.LogDescription, locale, ref packet.LogDescription); ObjectManager.GetLocaleString(localeData.QuestDescription, locale, ref packet.DescriptionText); ObjectManager.GetLocaleString(localeData.PortraitGiverText, locale, ref packet.PortraitGiverText); ObjectManager.GetLocaleString(localeData.PortraitGiverName, locale, ref packet.PortraitGiverName); ObjectManager.GetLocaleString(localeData.PortraitTurnInText, locale, ref packet.PortraitTurnInText); ObjectManager.GetLocaleString(localeData.PortraitTurnInName, locale, ref packet.PortraitTurnInName); } } packet.QuestGiverGUID = npcGUID; packet.InformUnit = _session.GetPlayer().GetDivider(); packet.QuestID = quest.Id; packet.PortraitGiver = quest.QuestGiverPortrait; packet.PortraitTurnIn = quest.QuestTurnInPortrait; packet.AutoLaunched = autoLaunched; packet.DisplayPopup = displayPopup; packet.QuestFlags[0] = (uint)quest.Flags; packet.QuestFlags[1] = (uint)quest.FlagsEx; packet.SuggestedPartyMembers = quest.SuggestedPlayers; if (quest.SourceSpellID != 0) { packet.LearnSpells.Add(quest.SourceSpellID); } quest.BuildQuestRewards(packet.Rewards, _session.GetPlayer()); for (int i = 0; i < SharedConst.QuestEmoteCount; ++i) { var emote = new QuestDescEmote(quest.DetailsEmote[i], quest.DetailsEmoteDelay[i]); packet.DescEmotes.Add(emote); } var objs = quest.Objectives; for (int i = 0; i < objs.Count; ++i) { var obj = new QuestObjectiveSimple(); obj.ID = objs[i].ID; obj.ObjectID = objs[i].ObjectID; obj.Amount = objs[i].Amount; obj.Type = (byte)objs[i].Type; packet.Objectives.Add(obj); } _session.SendPacket(packet); }