Core/Quests: Implemented quest popups
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user