Example #1
0
        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);
        }
Example #2
0
        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);
        }