Core/Player: Added Player::SkipQuests helper to skip quests (without rewards)
Port From (https://github.com/TrinityCore/TrinityCore/commit/e10f7e6d45a06af8eb809b7d134ed79829c09411)
This commit is contained in:
@@ -2138,6 +2138,59 @@ namespace Game.Entities
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Removes quest from log, flags rewarded, but does not give any rewards to player
|
||||
/// </summary>
|
||||
/// <param name="questIds"></param>
|
||||
public void SkipQuests(List<uint> questIds)
|
||||
{
|
||||
bool updateVisibility = false;
|
||||
foreach (uint questId in questIds)
|
||||
{
|
||||
Quest quest = Global.ObjectMgr.GetQuestTemplate(questId);
|
||||
if (quest == null)
|
||||
return;
|
||||
|
||||
ushort questSlot = FindQuestSlot(questId);
|
||||
QuestStatus oldStatus = GetQuestStatus(questSlot);
|
||||
|
||||
if (questSlot != SharedConst.MaxQuestLogSize)
|
||||
{
|
||||
if (quest.LimitTime != 0)
|
||||
RemoveTimedQuest(questId);
|
||||
|
||||
if (quest.HasFlag(QuestFlags.Pvp))
|
||||
{
|
||||
pvpInfo.IsHostile = pvpInfo.IsInHostileArea || HasPvPForcingQuest();
|
||||
UpdatePvPState();
|
||||
}
|
||||
|
||||
SetQuestSlot(questSlot, 0);
|
||||
TakeQuestSourceItem(questId, true); // remove quest src item from player
|
||||
AbandonQuest(questId); // remove all quest items player received before abandoning quest. Note, this does not remove normal drop items that happen to be quest requirements.
|
||||
RemoveActiveQuest(questId);
|
||||
}
|
||||
|
||||
SetRewardedQuest(questId);
|
||||
SendQuestUpdate(questId);
|
||||
|
||||
if (!updateVisibility && quest.HasFlag(QuestFlags.UpdatePhaseshift))
|
||||
updateVisibility = PhasingHandler.OnConditionChange(this, false);
|
||||
|
||||
Global.ScriptMgr.OnQuestStatusChange(this, questId);
|
||||
Global.ScriptMgr.OnQuestStatusChange(this, quest, oldStatus, QuestStatus.Rewarded);
|
||||
}
|
||||
|
||||
SendQuestGiverStatusMultiple();
|
||||
|
||||
// make full db save
|
||||
SaveToDB(false);
|
||||
|
||||
if (updateVisibility)
|
||||
UpdateObjectVisibility();
|
||||
}
|
||||
|
||||
|
||||
public ushort GetReqKillOrCastCurrentCount(uint quest_id, int entry)
|
||||
{
|
||||
Quest qInfo = Global.ObjectMgr.GetQuestTemplate(quest_id);
|
||||
|
||||
Reference in New Issue
Block a user