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)]
|
[WorldPacketHandler(ClientOpcodes.PushQuestToParty)]
|
||||||
void HandlePushQuestToParty(PushQuestToParty packet)
|
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 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 class QuestGiverQuestDetails : ServerPacket
|
||||||
{
|
{
|
||||||
public QuestGiverQuestDetails() : base(ServerOpcodes.QuestGiverQuestDetails) { }
|
public QuestGiverQuestDetails() : base(ServerOpcodes.QuestGiverQuestDetails) { }
|
||||||
|
|||||||
@@ -792,6 +792,9 @@ namespace Game.Scripting
|
|||||||
// Called when a quest status change
|
// Called when a quest status change
|
||||||
public virtual void OnQuestStatusChange(Player player, Quest quest, QuestStatus oldStatus, QuestStatus newStatus) { }
|
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
|
// Called when a quest objective data change
|
||||||
public virtual void OnQuestObjectiveChange(Player player, Quest quest, QuestObjective objective, int oldAmount, int newAmount) { }
|
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);
|
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)
|
public void OnQuestObjectiveChange(Player player, Quest quest, QuestObjective objective, int oldAmount, int newAmount)
|
||||||
{
|
{
|
||||||
Cypher.Assert(player);
|
Cypher.Assert(player);
|
||||||
|
|||||||
Reference in New Issue
Block a user