0
0
mirror of https://github.com/sp-tarkov/server.git synced 2025-02-12 15:50:42 -05:00

Added workaround for non-fence repeatable quests crashing client when the same trader is picked for replacement quest

This commit is contained in:
Chomp 2024-12-09 15:53:39 +00:00
parent 53599e46f3
commit ff5bc64acf

View File

@ -12,6 +12,7 @@ import { ELocationName } from "@spt/models/enums/ELocationName";
import { HideoutAreas } from "@spt/models/enums/HideoutAreas";
import { QuestStatus } from "@spt/models/enums/QuestStatus";
import { SkillTypes } from "@spt/models/enums/SkillTypes";
import { Traders } from "@spt/models/enums/Traders";
import { IQuestConfig, IRepeatableQuestConfig } from "@spt/models/spt/config/IQuestConfig";
import { IGetRepeatableByIdResult } from "@spt/models/spt/quests/IGetRepeatableByIdResult";
import { IQuestTypePool } from "@spt/models/spt/repeatable/IQuestTypePool";
@ -524,6 +525,14 @@ export class RepeatableQuestController {
if (repeatableConfig?.keepDailyQuestTypeOnReplacement) {
repeatableConfig.types = [questToReplace.type];
}
// Prevent new repeatable using same trader (except Fence, his quests are fine) - workaround for client error
if (replacedQuestTraderId !== Traders.FENCE) {
repeatableConfig.traderWhitelist = repeatableConfig.traderWhitelist.filter(
(trader) => trader.traderId !== replacedQuestTraderId,
);
}
// Generate meta-data for what type/levelrange of quests can be generated for player
const allowedQuestTypes = this.generateQuestPool(repeatableConfig, pmcData.Info.Level);
const newRepeatableQuest = this.attemptToGenerateRepeatableQuest(pmcData, allowedQuestTypes, repeatableConfig);