diff --git a/project/src/generators/PMCLootGenerator.ts b/project/src/generators/PMCLootGenerator.ts index f7abc809..b4f1b765 100644 --- a/project/src/generators/PMCLootGenerator.ts +++ b/project/src/generators/PMCLootGenerator.ts @@ -270,13 +270,14 @@ export class PMCLootGenerator protected gcd(a: number, b: number): number { - while (b !== 0) + let x = a; + let y = b; + while (y !== 0) { - const temp = b; - b = a % b; - a = temp; + const temp = y; + y = x % y; + x = temp; } - - return a; + return x; } } diff --git a/project/src/helpers/AssortHelper.ts b/project/src/helpers/AssortHelper.ts index 88ae86e3..6b0c2a29 100644 --- a/project/src/helpers/AssortHelper.ts +++ b/project/src/helpers/AssortHelper.ts @@ -37,6 +37,8 @@ export class AssortHelper flea = false, ): ITraderAssort { + let strippedTraderAssorts = traderAssorts; + // Trader assort does not always contain loyal_level_items if (!traderAssorts.loyal_level_items) { @@ -59,11 +61,11 @@ export class AssortHelper const questStatusInProfile = this.questHelper.getQuestStatus(pmcProfile, unlockValues.questId); if (!unlockValues.status.includes(questStatusInProfile)) { - traderAssorts = this.removeItemFromAssort(traderAssorts, assortId, flea); + strippedTraderAssorts = this.removeItemFromAssort(traderAssorts, assortId, flea); } } - return traderAssorts; + return strippedTraderAssorts; } /** @@ -108,12 +110,14 @@ export class AssortHelper */ public stripLockedLoyaltyAssort(pmcProfile: IPmcData, traderId: string, assort: ITraderAssort): ITraderAssort { + let strippedAssort = assort; + // Trader assort does not always contain loyal_level_items if (!assort.loyal_level_items) { this.logger.warning(this.localisationService.getText("assort-missing_loyalty_level_object", traderId)); - return assort; + return strippedAssort; } // Remove items restricted by loyalty levels above those reached by the player @@ -121,11 +125,11 @@ export class AssortHelper { if (assort.loyal_level_items[itemId] > pmcProfile.TradersInfo[traderId].loyaltyLevel) { - assort = this.removeItemFromAssort(assort, itemId); + strippedAssort = this.removeItemFromAssort(assort, itemId); } } - return assort; + return strippedAssort; } /** diff --git a/project/src/helpers/ItemHelper.ts b/project/src/helpers/ItemHelper.ts index e39f69a6..85c28027 100644 --- a/project/src/helpers/ItemHelper.ts +++ b/project/src/helpers/ItemHelper.ts @@ -1463,7 +1463,6 @@ export class ItemHelper const modItemDbDetails = this.getItem(modItemToAdd._tpl)[1]; // Include conflicting items of newly added mod in pool to be used for next mod choice - // biome-ignore lint/complexity/noForEach: modItemDbDetails._props.ConflictingItems.forEach(incompatibleModTpls.add, incompatibleModTpls); } @@ -1472,7 +1471,7 @@ export class ItemHelper /** * Get a compatible tpl from the array provided where it is not found in the provided incompatible mod tpls parameter - * @param possibleTpls Tpls to randomply choose from + * @param possibleTpls Tpls to randomly choose from * @param incompatibleModTpls Incompatible tpls to not allow * @returns Chosen tpl or null */ diff --git a/project/src/helpers/QuestHelper.ts b/project/src/helpers/QuestHelper.ts index 0a09a68f..d0aa9018 100644 --- a/project/src/helpers/QuestHelper.ts +++ b/project/src/helpers/QuestHelper.ts @@ -692,12 +692,12 @@ export class QuestHelper */ public getQuestWithOnlyLevelRequirementStartCondition(quest: IQuest): IQuest { - quest = this.jsonUtil.clone(quest); - quest.conditions.AvailableForStart = quest.conditions.AvailableForStart.filter((q) => + const updatedQuest = this.jsonUtil.clone(quest); + updatedQuest.conditions.AvailableForStart = updatedQuest.conditions.AvailableForStart.filter((q) => q.conditionType === "Level" ); - return quest; + return updatedQuest; } /** @@ -714,14 +714,22 @@ export class QuestHelper output: IItemEventRouterResponse = null, ): void { + let updatedOutput = output; + // Prepare response to send back to client - if (!output) + if (!updatedOutput) { - output = this.eventOutputHolder.getOutput(sessionID); + updatedOutput = this.eventOutputHolder.getOutput(sessionID); } this.updateQuestState(pmcData, QuestStatus.Fail, failRequest.qid); - const questRewards = this.applyQuestReward(pmcData, failRequest.qid, QuestStatus.Fail, sessionID, output); + const questRewards = this.applyQuestReward( + pmcData, + failRequest.qid, + QuestStatus.Fail, + sessionID, + updatedOutput, + ); // Create a dialog message for completing the quest. const quest = this.getQuestFromDb(failRequest.qid, pmcData); @@ -747,7 +755,7 @@ export class QuestHelper } } - output.profileChanges[sessionID].quests.push(...this.failedUnlocked(failRequest.qid, sessionID)); + updatedOutput.profileChanges[sessionID].quests.push(...this.failedUnlocked(failRequest.qid, sessionID)); } /** diff --git a/project/src/helpers/TradeHelper.ts b/project/src/helpers/TradeHelper.ts index 358860e0..05c71d56 100644 --- a/project/src/helpers/TradeHelper.ts +++ b/project/src/helpers/TradeHelper.ts @@ -72,7 +72,7 @@ export class TradeHelper ): void { let offerItems: Item[] = []; - let buyCallback: { (buyCount: number); }; + let buyCallback: (buyCount: number) => void; if (buyRequestData.tid.toLocaleLowerCase() === "ragfair") { buyCallback = (buyCount: number) => diff --git a/project/src/utils/DatabaseImporter.ts b/project/src/utils/DatabaseImporter.ts index 78a65150..699f04b9 100644 --- a/project/src/utils/DatabaseImporter.ts +++ b/project/src/utils/DatabaseImporter.ts @@ -134,7 +134,7 @@ export class DatabaseImporter implements OnLoad try { const finalPath = filePathAndName.replace(this.filepath, "").replace(".json", ""); - let tempObject; + let tempObject: any; for (const prop of finalPath.split("/")) { if (!tempObject)