Core/Player: Added helpers to check quest objective status

Port From (https://github.com/TrinityCore/TrinityCore/commit/9dd8647125a020ca2dccdf26d6839f4665ff9870)
This commit is contained in:
hondacrx
2024-02-04 00:32:24 -05:00
parent 90ad7ed6ea
commit 47355bfa52
+32 -2
View File
@@ -1255,7 +1255,7 @@ namespace Game.Entities
PlayerTalkClass.ClearMenus();
questGiver.ToCreature()?.GetAI().OnQuestReward(this, quest, rewardType, rewardId);
questGiver.ToGameObject()?.GetAI().OnQuestReward(this, quest, rewardType, rewardId);
}
}
Global.ScriptMgr.OnQuestStatusChange(this, questId);
Global.ScriptMgr.OnQuestStatusChange(this, quest, oldStatus, QuestStatus.Rewarded);
@@ -1345,7 +1345,7 @@ namespace Game.Entities
FailQuest(questId);
}
}
public void AbandonQuest(uint questId)
{
Quest quest = Global.ObjectMgr.GetQuestTemplate(questId);
@@ -2237,6 +2237,19 @@ namespace Game.Entities
return GetQuestSlotObjectiveFlag(slot, objective.StorageIndex) ? 1 : 0;
}
int GetQuestSlotObjectiveData(uint questId, uint objectiveId)
{
ushort slot = FindQuestSlot(questId);
if (slot >= SharedConst.MaxQuestLogSize)
return 0;
QuestObjective obj = Global.ObjectMgr.GetQuestObjective(objectiveId);
if (obj == null)
return 0;
return GetQuestSlotObjectiveData(slot, obj);
}
public void SetQuestSlot(ushort slot, uint quest_id)
{
var questLogField = m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.QuestLog, slot);
@@ -2811,6 +2824,23 @@ namespace Game.Entities
return true;
}
bool IsQuestObjectiveComplete(uint questId, uint objectiveId)
{
Quest quest = Global.ObjectMgr.GetQuestTemplate(questId);
if (quest == null)
return false;
ushort slot = FindQuestSlot(questId);
if (slot >= SharedConst.MaxQuestLogSize)
return false;
QuestObjective obj = Global.ObjectMgr.GetQuestObjective(objectiveId);
if (obj == null)
return false;
return IsQuestObjectiveComplete(slot, quest, obj);
}
public bool IsQuestObjectiveProgressBarComplete(ushort slot, Quest quest)
{
float progress = 0.0f;