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();
|
PlayerTalkClass.ClearMenus();
|
||||||
questGiver.ToCreature()?.GetAI().OnQuestReward(this, quest, rewardType, rewardId);
|
questGiver.ToCreature()?.GetAI().OnQuestReward(this, quest, rewardType, rewardId);
|
||||||
questGiver.ToGameObject()?.GetAI().OnQuestReward(this, quest, rewardType, rewardId);
|
questGiver.ToGameObject()?.GetAI().OnQuestReward(this, quest, rewardType, rewardId);
|
||||||
}
|
}
|
||||||
|
|
||||||
Global.ScriptMgr.OnQuestStatusChange(this, questId);
|
Global.ScriptMgr.OnQuestStatusChange(this, questId);
|
||||||
Global.ScriptMgr.OnQuestStatusChange(this, quest, oldStatus, QuestStatus.Rewarded);
|
Global.ScriptMgr.OnQuestStatusChange(this, quest, oldStatus, QuestStatus.Rewarded);
|
||||||
@@ -1345,7 +1345,7 @@ namespace Game.Entities
|
|||||||
FailQuest(questId);
|
FailQuest(questId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AbandonQuest(uint questId)
|
public void AbandonQuest(uint questId)
|
||||||
{
|
{
|
||||||
Quest quest = Global.ObjectMgr.GetQuestTemplate(questId);
|
Quest quest = Global.ObjectMgr.GetQuestTemplate(questId);
|
||||||
@@ -2237,6 +2237,19 @@ namespace Game.Entities
|
|||||||
return GetQuestSlotObjectiveFlag(slot, objective.StorageIndex) ? 1 : 0;
|
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)
|
public void SetQuestSlot(ushort slot, uint quest_id)
|
||||||
{
|
{
|
||||||
var questLogField = m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.QuestLog, slot);
|
var questLogField = m_values.ModifyValue(m_playerData).ModifyValue(m_playerData.QuestLog, slot);
|
||||||
@@ -2811,6 +2824,23 @@ namespace Game.Entities
|
|||||||
return true;
|
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)
|
public bool IsQuestObjectiveProgressBarComplete(ushort slot, Quest quest)
|
||||||
{
|
{
|
||||||
float progress = 0.0f;
|
float progress = 0.0f;
|
||||||
|
|||||||
Reference in New Issue
Block a user