From ff5bc64acf24ce8b5a6cd1d1cb04c15f8e0fb113 Mon Sep 17 00:00:00 2001 From: Chomp Date: Mon, 9 Dec 2024 15:53:39 +0000 Subject: [PATCH] Added workaround for non-fence repeatable quests crashing client when the same trader is picked for replacement quest --- project/src/controllers/RepeatableQuestController.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/project/src/controllers/RepeatableQuestController.ts b/project/src/controllers/RepeatableQuestController.ts index 4935a46a..aa70b6bc 100644 --- a/project/src/controllers/RepeatableQuestController.ts +++ b/project/src/controllers/RepeatableQuestController.ts @@ -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);