Core/Quest: fix RewardNextQuest being used to condition previous quests in chain
Port From (https://github.com/TrinityCore/TrinityCore/commit/9e945615bc9967cc1f49c801c708cf5881cd8de9)
This commit is contained in:
@@ -408,7 +408,7 @@ namespace Game.Entities
|
|||||||
if (!Global.DisableMgr.IsDisabledFor(DisableType.Quest, quest.Id, this) && SatisfyQuestClass(quest, false) && SatisfyQuestRace(quest, false) &&
|
if (!Global.DisableMgr.IsDisabledFor(DisableType.Quest, quest.Id, this) && SatisfyQuestClass(quest, false) && SatisfyQuestRace(quest, false) &&
|
||||||
SatisfyQuestSkill(quest, false) && SatisfyQuestExclusiveGroup(quest, false) && SatisfyQuestReputation(quest, false) &&
|
SatisfyQuestSkill(quest, false) && SatisfyQuestExclusiveGroup(quest, false) && SatisfyQuestReputation(quest, false) &&
|
||||||
SatisfyQuestDependentQuests(quest, false) && SatisfyQuestNextChain(quest, false) &&
|
SatisfyQuestDependentQuests(quest, false) && SatisfyQuestNextChain(quest, false) &&
|
||||||
SatisfyQuestPrevChain(quest, false) && SatisfyQuestDay(quest, false) && SatisfyQuestWeek(quest, false) &&
|
SatisfyQuestDay(quest, false) && SatisfyQuestWeek(quest, false) &&
|
||||||
SatisfyQuestMonth(quest, false) && SatisfyQuestSeasonal(quest, false))
|
SatisfyQuestMonth(quest, false) && SatisfyQuestSeasonal(quest, false))
|
||||||
{
|
{
|
||||||
return GetLevel() + WorldConfig.GetIntValue(WorldCfg.QuestHighLevelHideDiff) >= GetQuestMinLevel(quest);
|
return GetLevel() + WorldConfig.GetIntValue(WorldCfg.QuestHighLevelHideDiff) >= GetQuestMinLevel(quest);
|
||||||
@@ -424,10 +424,9 @@ namespace Game.Entities
|
|||||||
&& SatisfyQuestClass(quest, msg) && SatisfyQuestRace(quest, msg) && SatisfyQuestLevel(quest, msg)
|
&& SatisfyQuestClass(quest, msg) && SatisfyQuestRace(quest, msg) && SatisfyQuestLevel(quest, msg)
|
||||||
&& SatisfyQuestSkill(quest, msg) && SatisfyQuestReputation(quest, msg)
|
&& SatisfyQuestSkill(quest, msg) && SatisfyQuestReputation(quest, msg)
|
||||||
&& SatisfyQuestDependentQuests(quest, msg) && SatisfyQuestTimed(quest, msg)
|
&& SatisfyQuestDependentQuests(quest, msg) && SatisfyQuestTimed(quest, msg)
|
||||||
&& SatisfyQuestNextChain(quest, msg) && SatisfyQuestPrevChain(quest, msg)
|
&& SatisfyQuestNextChain(quest, msg) && SatisfyQuestDay(quest, msg)
|
||||||
&& SatisfyQuestDay(quest, msg) && SatisfyQuestWeek(quest, msg)
|
&& SatisfyQuestWeek(quest, msg) && SatisfyQuestMonth(quest, msg)
|
||||||
&& SatisfyQuestMonth(quest, msg) && SatisfyQuestSeasonal(quest, msg)
|
&& SatisfyQuestSeasonal(quest, msg) && SatisfyQuestConditions(quest, msg);
|
||||||
&& SatisfyQuestConditions(quest, msg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool CanAddQuest(Quest quest, bool msg)
|
public bool CanAddQuest(Quest quest, bool msg)
|
||||||
@@ -1581,32 +1580,6 @@ namespace Game.Entities
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool SatisfyQuestPrevChain(Quest qInfo, bool msg)
|
|
||||||
{
|
|
||||||
// No previous quest in chain
|
|
||||||
if (qInfo.PrevChainQuests.Empty())
|
|
||||||
return true;
|
|
||||||
|
|
||||||
foreach (var prevQuestId in qInfo.PrevChainQuests)
|
|
||||||
{
|
|
||||||
var questStatusData = m_QuestStatus.LookupByKey(prevQuestId);
|
|
||||||
|
|
||||||
// If any of the previous quests in chain active, return false
|
|
||||||
if (questStatusData != null && questStatusData.Status != QuestStatus.None)
|
|
||||||
{
|
|
||||||
if (msg)
|
|
||||||
{
|
|
||||||
SendCanTakeQuestResponse(QuestFailedReasons.None);
|
|
||||||
Log.outDebug(LogFilter.Server, "SatisfyQuestNextChain: Sent QuestFailedReason.None (questId: {0}) because player already did or started next quest in chain.", qInfo.Id);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// No previous quest in chain active
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool SatisfyQuestDay(Quest qInfo, bool msg)
|
public bool SatisfyQuestDay(Quest qInfo, bool msg)
|
||||||
{
|
{
|
||||||
if (!qInfo.IsDaily() && !qInfo.IsDFQuest())
|
if (!qInfo.IsDaily() && !qInfo.IsDFQuest())
|
||||||
|
|||||||
@@ -7017,8 +7017,6 @@ namespace Game
|
|||||||
qinfo.Id, qinfo.NextQuestInChain, qinfo.NextQuestInChain);
|
qinfo.Id, qinfo.NextQuestInChain, qinfo.NextQuestInChain);
|
||||||
qinfo.NextQuestInChain = 0;
|
qinfo.NextQuestInChain = 0;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
qNext.PrevChainQuests.Add(qinfo.Id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var j = 0; j < SharedConst.QuestRewardCurrencyCount; ++j)
|
for (var j = 0; j < SharedConst.QuestRewardCurrencyCount; ++j)
|
||||||
|
|||||||
@@ -662,7 +662,6 @@ namespace Game
|
|||||||
public uint ScriptId;
|
public uint ScriptId;
|
||||||
|
|
||||||
public List<uint> DependentPreviousQuests = new List<uint>();
|
public List<uint> DependentPreviousQuests = new List<uint>();
|
||||||
public List<uint> PrevChainQuests = new List<uint>();
|
|
||||||
public QueryQuestInfoResponse QueryData;
|
public QueryQuestInfoResponse QueryData;
|
||||||
|
|
||||||
uint _rewChoiceItemsCount;
|
uint _rewChoiceItemsCount;
|
||||||
|
|||||||
Reference in New Issue
Block a user