Core/Quests: Automatically add quests with AUTO_PUSH flag to player

Port From (https://github.com/TrinityCore/TrinityCore/commit/db6eb694656c58a817a965e2f5c85874e9c92d12)
This commit is contained in:
hondacrx
2021-02-02 10:14:16 -05:00
parent f18a9c1ec9
commit c96fc90f5b
7 changed files with 33 additions and 6 deletions
+2
View File
@@ -3222,6 +3222,8 @@ namespace Game.Entities
m_achievementSys.CheckAllAchievementCriteria(this);
m_questObjectiveCriteriaMgr.CheckAllQuestObjectiveCriteria(this);
PushQuests();
return true;
}
@@ -145,6 +145,8 @@ namespace Game.Entities
else
_restMgr.RemoveRestFlag(RestFlag.FactionArea);
PushQuests();
UpdateCriteria(CriteriaTypes.TravelledToArea, newArea);
}
+14 -3
View File
@@ -37,7 +37,7 @@ namespace Game.Entities
public ObjectGuid GetPlayerSharingQuest() { return m_playerSharingQuest; }
public void SetQuestSharingInfo(ObjectGuid guid, uint id) { m_playerSharingQuest = guid; m_sharedQuestId = id; }
public void ClearQuestSharingInfo() { m_playerSharingQuest = ObjectGuid.Empty; m_sharedQuestId = 0; }
uint GetInGameTime() { return m_ingametime; }
public void SetInGameTime(uint time) { m_ingametime = time; }
@@ -768,8 +768,7 @@ namespace Game.Entities
GetReputationMgr().SetVisible(factionEntry);
break;
case QuestObjectiveType.CriteriaTree:
if (quest.HasFlagEx(QuestFlagsEx.IsWorldQuest))
m_questObjectiveCriteriaMgr.ResetCriteriaTree((uint)obj.ObjectID);
m_questObjectiveCriteriaMgr.ResetCriteriaTree((uint)obj.ObjectID);
break;
default:
break;
@@ -3122,5 +3121,17 @@ namespace Game.Entities
m_monthlyquests.Add(quest_id);
m_MonthlyQuestChanged = true;
}
void PushQuests()
{
foreach (Quest quest in Global.ObjectMgr.GetQuestTemplatesAutoPush())
{
if (quest.GetQuestTag() != 0 && quest.GetQuestTag() != QuestTagType.Tag)
continue;
if (!quest.IsUnavailable() && CanTakeQuest(quest, false))
AddQuestAndCheckCompletion(quest, null);
}
}
}
}
+2
View File
@@ -5236,6 +5236,8 @@ namespace Game.Entities
UpdateCriteria(CriteriaTypes.ReachLevel);
PushQuests();
Global.ScriptMgr.OnPlayerLevelChanged(this, (byte)oldLevel);
}