Core/Player: Added helpers to check quest objective status
Port From (https://github.com/TrinityCore/TrinityCore/commit/9dd8647125a020ca2dccdf26d6839f4665ff9870)
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user