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:
@@ -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) { }
|
||||
|
||||
@@ -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) { }
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user