Merge branch '3.10.0-DEV' of https://dev.sp-tarkov.com/SPT/Server into 3.10.0-DEV
This commit is contained in:
commit
23f8f34085
@ -351,15 +351,15 @@ export class QuestHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a flat list of reward items for the given quest at a specific state (e.g. Fail/Success)
|
* Gets a flat list of reward items for the given quest at a specific state for the specified game version (e.g. Fail/Success)
|
||||||
* @param quest quest to get rewards for
|
* @param quest quest to get rewards for
|
||||||
* @param status Quest status that holds the items (Started, Success, Fail)
|
* @param status Quest status that holds the items (Started, Success, Fail)
|
||||||
* @returns array of items with the correct maxStack
|
* @returns array of items with the correct maxStack
|
||||||
*/
|
*/
|
||||||
public getQuestRewardItems(quest: IQuest, status: QuestStatus): IItem[] {
|
public getQuestRewardItems(quest: IQuest, status: QuestStatus, gameVersion: string): IItem[] {
|
||||||
// Iterate over all rewards with the desired status, flatten out items that have a type of Item
|
// Iterate over all rewards with the desired status, flatten out items that have a type of Item
|
||||||
const questRewards = quest.rewards[QuestStatus[status]].flatMap((reward: IQuestReward) =>
|
const questRewards = quest.rewards[QuestStatus[status]].flatMap((reward: IQuestReward) =>
|
||||||
reward.type === "Item" ? this.processReward(reward) : [],
|
reward.type === "Item" && this.questRewardIsForGameEdition(reward, gameVersion) ? this.processReward(reward) : [],
|
||||||
);
|
);
|
||||||
|
|
||||||
return questRewards;
|
return questRewards;
|
||||||
@ -994,7 +994,7 @@ export class QuestHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.getQuestRewardItems(questDetails, state);
|
return this.getQuestRewardItems(questDetails, state, gameVersion);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1281,6 +1281,7 @@ export class QuestHelper {
|
|||||||
const questsToShowPlayer: IQuest[] = [];
|
const questsToShowPlayer: IQuest[] = [];
|
||||||
const allQuests = this.getQuestsFromDb();
|
const allQuests = this.getQuestsFromDb();
|
||||||
const profile: IPmcData = this.profileHelper.getPmcProfile(sessionID);
|
const profile: IPmcData = this.profileHelper.getPmcProfile(sessionID);
|
||||||
|
const gameVersion = profile.Info.GameVersion;
|
||||||
|
|
||||||
for (const quest of allQuests) {
|
for (const quest of allQuests) {
|
||||||
// Player already accepted the quest, show it regardless of status
|
// Player already accepted the quest, show it regardless of status
|
||||||
@ -1396,7 +1397,30 @@ export class QuestHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return questsToShowPlayer;
|
return this.updateQuestsForGameEdition(questsToShowPlayer, gameVersion);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a clone of the given quest array with the rewards updated to reflect the
|
||||||
|
* given game version
|
||||||
|
*
|
||||||
|
* @param quests The list of quests to check
|
||||||
|
* @param gameVersion The game version of the profile
|
||||||
|
* @returns array of IQuest objects with the rewards filtered correctly for the game version
|
||||||
|
*/
|
||||||
|
protected updateQuestsForGameEdition(quests: IQuest[], gameVersion: string)
|
||||||
|
{
|
||||||
|
const modifiedQuests = this.cloner.clone(quests);
|
||||||
|
for (const quest of modifiedQuests)
|
||||||
|
{
|
||||||
|
// Remove any reward that doesn't pass the game edition check
|
||||||
|
for (const rewardType of Object.keys(quest.rewards))
|
||||||
|
{
|
||||||
|
quest.rewards[rewardType] = quest.rewards[rewardType].filter(reward => this.questRewardIsForGameEdition(reward, gameVersion));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return modifiedQuests;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user