Core/Quests: Implemented quest popups

This commit is contained in:
hondacrx
2017-11-29 18:00:08 -05:00
parent 6b3533141e
commit 7d27eaad1a
5 changed files with 23 additions and 19 deletions
+1 -1
View File
@@ -319,7 +319,7 @@ namespace Game.AI
if (session) if (session)
{ {
PlayerMenu menu = new PlayerMenu(session); PlayerMenu menu = new PlayerMenu(session);
menu.SendQuestGiverQuestDetails(q, me.GetGUID(), true); menu.SendQuestGiverQuestDetails(q, me.GetGUID(), true, false);
Log.outDebug(LogFilter.ScriptsAi, "SmartScript.ProcessAction:: SMART_ACTION_OFFER_QUEST: Player {0} - offering quest {1}", pTarget.GetGUID().ToString(), e.Action.questOffer.questId); Log.outDebug(LogFilter.ScriptsAi, "SmartScript.ProcessAction:: SMART_ACTION_OFFER_QUEST: Player {0} - offering quest {1}", pTarget.GetGUID().ToString(), e.Action.questOffer.questId);
} }
} }
+7 -6
View File
@@ -394,7 +394,7 @@ namespace Game.Misc
_session.SendPacket(packet); _session.SendPacket(packet);
} }
public void SendQuestGiverQuestDetails(Quest quest, ObjectGuid npcGUID, bool activateAccept) public void SendQuestGiverQuestDetails(Quest quest, ObjectGuid npcGUID, bool autoLaunched, bool displayPopup)
{ {
QuestGiverQuestDetails packet = new QuestGiverQuestDetails(); QuestGiverQuestDetails packet = new QuestGiverQuestDetails();
@@ -427,7 +427,8 @@ namespace Game.Misc
packet.QuestID = quest.Id; packet.QuestID = quest.Id;
packet.PortraitGiver = quest.QuestGiverPortrait; packet.PortraitGiver = quest.QuestGiverPortrait;
packet.PortraitTurnIn = quest.QuestTurnInPortrait; packet.PortraitTurnIn = quest.QuestTurnInPortrait;
packet.AutoLaunched = activateAccept; packet.AutoLaunched = autoLaunched;
packet.DisplayPopup = displayPopup;
packet.QuestFlags[0] = (uint)quest.Flags; packet.QuestFlags[0] = (uint)quest.Flags;
packet.QuestFlags[1] = (uint)quest.FlagsEx; packet.QuestFlags[1] = (uint)quest.FlagsEx;
packet.SuggestedPartyMembers = quest.SuggestedPlayers; packet.SuggestedPartyMembers = quest.SuggestedPlayers;
@@ -596,7 +597,7 @@ namespace Game.Misc
_session.SendPacket(packet); _session.SendPacket(packet);
} }
public void SendQuestGiverOfferReward(Quest quest, ObjectGuid npcGUID, bool enableNext) public void SendQuestGiverOfferReward(Quest quest, ObjectGuid npcGUID, bool autoLaunched)
{ {
QuestGiverOfferRewardMessage packet = new QuestGiverOfferRewardMessage(); QuestGiverOfferRewardMessage packet = new QuestGiverOfferRewardMessage();
@@ -636,7 +637,7 @@ namespace Game.Misc
offer.QuestGiverCreatureID = creature.GetCreatureTemplate().Entry; offer.QuestGiverCreatureID = creature.GetCreatureTemplate().Entry;
offer.QuestID = quest.Id; offer.QuestID = quest.Id;
offer.AutoLaunched = enableNext; offer.AutoLaunched = autoLaunched;
offer.SuggestedPartyMembers = quest.SuggestedPlayers; offer.SuggestedPartyMembers = quest.SuggestedPlayers;
for (uint i = 0; i < SharedConst.QuestEmoteCount && quest.OfferRewardEmote[i] != 0; ++i) for (uint i = 0; i < SharedConst.QuestEmoteCount && quest.OfferRewardEmote[i] != 0; ++i)
@@ -654,7 +655,7 @@ namespace Game.Misc
_session.SendPacket(packet); _session.SendPacket(packet);
} }
public void SendQuestGiverRequestItems(Quest quest, ObjectGuid npcGUID, bool canComplete, bool closeOnCancel) public void SendQuestGiverRequestItems(Quest quest, ObjectGuid npcGUID, bool canComplete, bool autoLaunched)
{ {
// We can always call to RequestItems, but this packet only goes out if there are actually // We can always call to RequestItems, but this packet only goes out if there are actually
// items. Otherwise, we'll skip straight to the OfferReward // items. Otherwise, we'll skip straight to the OfferReward
@@ -729,7 +730,7 @@ namespace Game.Misc
} }
} }
packet.AutoLaunched = closeOnCancel; packet.AutoLaunched = autoLaunched;
_session.SendPacket(packet); _session.SendPacket(packet);
} }
+1 -1
View File
@@ -314,7 +314,7 @@ namespace Game.Entities
if (quest.IsAutoComplete() && quest.IsRepeatable() && !quest.IsDailyOrWeekly()) if (quest.IsAutoComplete() && quest.IsRepeatable() && !quest.IsDailyOrWeekly())
PlayerTalkClass.SendQuestGiverRequestItems(quest, guid, CanCompleteRepeatableQuest(quest), true); PlayerTalkClass.SendQuestGiverRequestItems(quest, guid, CanCompleteRepeatableQuest(quest), true);
else else
PlayerTalkClass.SendQuestGiverQuestDetails(quest, guid, true); PlayerTalkClass.SendQuestGiverQuestDetails(quest, guid, true, false);
return; return;
} }
} }
+4 -4
View File
@@ -217,7 +217,7 @@ namespace Game
if (quest.IsAutoComplete()) if (quest.IsAutoComplete())
GetPlayer().PlayerTalkClass.SendQuestGiverRequestItems(quest, obj.GetGUID(), GetPlayer().CanCompleteQuest(quest.Id), true); GetPlayer().PlayerTalkClass.SendQuestGiverRequestItems(quest, obj.GetGUID(), GetPlayer().CanCompleteQuest(quest.Id), true);
else else
GetPlayer().PlayerTalkClass.SendQuestGiverQuestDetails(quest, obj.GetGUID(), true); GetPlayer().PlayerTalkClass.SendQuestGiverQuestDetails(quest, obj.GetGUID(), true, false);
} }
} }
@@ -347,7 +347,7 @@ namespace Game
if (nextQuest.IsAutoAccept() && GetPlayer().CanAddQuest(nextQuest, true)) if (nextQuest.IsAutoAccept() && GetPlayer().CanAddQuest(nextQuest, true))
GetPlayer().AddQuestAndCheckCompletion(nextQuest, obj); GetPlayer().AddQuestAndCheckCompletion(nextQuest, obj);
GetPlayer().PlayerTalkClass.SendQuestGiverQuestDetails(nextQuest, packet.QuestGiverGUID, true); GetPlayer().PlayerTalkClass.SendQuestGiverQuestDetails(nextQuest, packet.QuestGiverGUID, true, false);
} }
} }
@@ -370,7 +370,7 @@ namespace Game
if (nextQuest.IsAutoAccept() && GetPlayer().CanAddQuest(nextQuest, true)) if (nextQuest.IsAutoAccept() && GetPlayer().CanAddQuest(nextQuest, true))
GetPlayer().AddQuestAndCheckCompletion(nextQuest, obj); GetPlayer().AddQuestAndCheckCompletion(nextQuest, obj);
GetPlayer().PlayerTalkClass.SendQuestGiverQuestDetails(nextQuest, packet.QuestGiverGUID, true); GetPlayer().PlayerTalkClass.SendQuestGiverQuestDetails(nextQuest, packet.QuestGiverGUID, true, false);
} }
} }
@@ -606,7 +606,7 @@ namespace Game
else else
{ {
receiver.SetDivider(sender.GetGUID()); receiver.SetDivider(sender.GetGUID());
receiver.PlayerTalkClass.SendQuestGiverQuestDetails(quest, receiver.GetGUID(), true); receiver.PlayerTalkClass.SendQuestGiverQuestDetails(quest, receiver.GetGUID(), true, false);
} }
} }
} }
+10 -7
View File
@@ -4904,16 +4904,19 @@ namespace Game.Spells
if (!player) if (!player)
return; return;
Quest qInfo = Global.ObjectMgr.GetQuestTemplate((uint)effectInfo.MiscValue); Quest quest = Global.ObjectMgr.GetQuestTemplate((uint)effectInfo.MiscValue);
if (qInfo != null) if (quest != null)
{ {
if (!player.CanTakeQuest(qInfo, false)) if (!player.CanTakeQuest(quest, false))
return; return;
if (qInfo.IsAutoAccept() && player.CanAddQuest(qInfo, false)) if (quest.IsAutoAccept() && player.CanAddQuest(quest, false))
player.AddQuestAndCheckCompletion(qInfo, null); {
player.AddQuestAndCheckCompletion(quest, null);
player.PlayerTalkClass.SendQuestGiverQuestDetails(qInfo, player.GetGUID(), true); player.PlayerTalkClass.SendQuestGiverQuestDetails(quest, player.GetGUID(), true, true);
}
else
player.PlayerTalkClass.SendQuestGiverQuestDetails(quest, player.GetGUID(), true, false);
} }
} }