Scripts/Quests: Implemented new quest scripting hook, OnQuestAcknowledgeAutoAccept, used when player closes quest frame after viewing details of autoaccept quests

Port From (https://github.com/TrinityCore/TrinityCore/commit/f269f60d8a5f6b0982eb46dc583e2618c98931fb)
This commit is contained in:
hondacrx
2021-03-04 12:13:43 -05:00
parent 96b98cc4d3
commit 5b09d675dd
4 changed files with 35 additions and 0 deletions
+13
View File
@@ -574,6 +574,19 @@ namespace Game
}
}
[WorldPacketHandler(ClientOpcodes.QuestGiverCloseQuest)]
void HandleQuestgiverCloseQuest(QuestGiverCloseQuest questGiverCloseQuest)
{
if (_player.FindQuestSlot(questGiverCloseQuest.QuestID) >= SharedConst.MaxQuestLogSize)
return;
Quest quest = Global.ObjectMgr.GetQuestTemplate(questGiverCloseQuest.QuestID);
if (quest == null)
return;
Global.ScriptMgr.OnQuestAcknowledgeAutoAccept(_player, quest);
}
[WorldPacketHandler(ClientOpcodes.PushQuestToParty)]
void HandlePushQuestToParty(PushQuestToParty packet)
{
@@ -406,6 +406,18 @@ namespace Game.Networking.Packets
public bool FromScript; // 0 - standart complete quest mode with npc, 1 - auto-complete mode
}
public class QuestGiverCloseQuest : ClientPacket
{
public QuestGiverCloseQuest(WorldPacket packet) : base(packet) { }
public override void Read()
{
QuestID = _worldPacket.ReadUInt32();
}
public uint QuestID;
}
public class QuestGiverQuestDetails : ServerPacket
{
public QuestGiverQuestDetails() : base(ServerOpcodes.QuestGiverQuestDetails) { }
+3
View File
@@ -792,6 +792,9 @@ namespace Game.Scripting
// Called when a quest status change
public virtual void OnQuestStatusChange(Player player, Quest quest, QuestStatus oldStatus, QuestStatus newStatus) { }
// Called for auto accept quests when player closes quest UI after seeing initial quest details
public virtual void OnAcknowledgeAutoAccept(Player player, Quest quest) { }
// Called when a quest objective data change
public virtual void OnQuestObjectiveChange(Player player, Quest quest, QuestObjective objective, int oldAmount, int newAmount) { }
}
+7
View File
@@ -1188,6 +1188,13 @@ namespace Game.Scripting
RunScript<QuestScript>(script => script.OnQuestStatusChange(player, quest, oldStatus, newStatus), quest.ScriptId);
}
public void OnQuestAcknowledgeAutoAccept(Player player, Quest quest)
{
Cypher.Assert(player);
Cypher.Assert(quest != null);
RunScript<QuestScript>(script => script.OnAcknowledgeAutoAccept(player, quest), quest.ScriptId);
}
public void OnQuestObjectiveChange(Player player, Quest quest, QuestObjective objective, int oldAmount, int newAmount)
{
Cypher.Assert(player);