From 83a3fb16fe19f75b363418ae14878abb107569f1 Mon Sep 17 00:00:00 2001 From: Chomp Date: Sat, 7 Dec 2024 09:43:41 +0000 Subject: [PATCH] Fixed cultist circle returning direct weapon/armor rewards without mods --- .../src/services/CircleOfCultistService.ts | 29 +++++++++++++++++-- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/project/src/services/CircleOfCultistService.ts b/project/src/services/CircleOfCultistService.ts index 3e6d39eb..575d6be6 100644 --- a/project/src/services/CircleOfCultistService.ts +++ b/project/src/services/CircleOfCultistService.ts @@ -437,11 +437,34 @@ export class CircleOfCultistService { } // Loop because these can include multiple rewards - for (const reward of directReward.reward) { - const stackSize = this.getDirectRewardBaseTypeStackSize(reward); + for (const rewardTpl of directReward.reward) { + // Is weapon/armor, handle differently + if ( + this.itemHelper.armorItemHasRemovableOrSoftInsertSlots(rewardTpl) || + this.itemHelper.isOfBaseclass(rewardTpl, BaseClasses.WEAPON) + ) { + const defaultPreset = this.presetHelper.getDefaultPreset(rewardTpl); + if (!defaultPreset) { + this.logger.warning(`Reward tpl: ${rewardTpl} lacks a default preset, skipping reward`); + + continue; + } + + // Ensure preset has unique ids and is cloned so we don't alter the preset data stored in memory + const presetAndMods: IItem[] = this.itemHelper.replaceIDs(defaultPreset._items); + + this.itemHelper.remapRootItemId(presetAndMods); + + rewards.push(presetAndMods); + + continue; + } + + // 'Normal' item, non-preset + const stackSize = this.getDirectRewardBaseTypeStackSize(rewardTpl); const rewardItem: IItem = { _id: this.hashUtil.generate(), - _tpl: reward, + _tpl: rewardTpl, parentId: cultistCircleStashId, slotId: CircleOfCultistService.circleOfCultistSlotId, upd: {