From 6d22d7912c5927766b2c711dd989b405ba635432 Mon Sep 17 00:00:00 2001 From: VampireKitten Date: Tue, 12 Aug 2025 15:27:23 +0200 Subject: [PATCH 1/3] Handle Railjack Abandoned Caches --- src/services/missionInventoryUpdateService.ts | 22 +++++++++++++++++++ src/types/requestTypes.ts | 2 ++ 2 files changed, 24 insertions(+) diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index 6bd6ce58..d96c5979 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -1946,6 +1946,28 @@ function getRandomMissionDrops( } } + // Railjack Abandoned Cache Rewards, Rotation A (Mandatory Objectives) + if (region.cacheRewardManifest && RewardInfo.POICompletions) { + const deck = ExportRewards[region.cacheRewardManifest]; + for (let cache = 0; cache != RewardInfo.POICompletions; ++cache) { + const drop = getRandomRewardByChance(deck[0]); + if (drop) { + drops.push({ StoreItem: drop.type, ItemCount: drop.itemCount, FromEnemyCache: true }); + } + } + } + + // Railjack Abandoned Cache Rewards, Rotation B (Optional Objectives) + if (region.cacheRewardManifest && RewardInfo.LootDungeonCompletions) { + const deck = ExportRewards[region.cacheRewardManifest]; + for (let cache = 0; cache != RewardInfo.LootDungeonCompletions; ++cache) { + const drop = getRandomRewardByChance(deck[1]); + if (drop) { + drops.push({ StoreItem: drop.type, ItemCount: drop.itemCount, FromEnemyCache: true }); + } + } + } + if (RewardInfo.nightmareMode) { const deck = ExportRewards["/Lotus/Types/Game/MissionDecks/NightmareModeRewards"]; let rotation = 0; diff --git a/src/types/requestTypes.ts b/src/types/requestTypes.ts index 05adf925..d272f6cf 100644 --- a/src/types/requestTypes.ts +++ b/src/types/requestTypes.ts @@ -187,6 +187,8 @@ export interface IRewardInfo { rewardQualifications?: string; // did a Survival for 5 minutes and this was "1" rewardTierOverrides?: number[]; // Disruption PurgatoryRewardQualifications?: string; + POICompletions?: number; + LootDungeonCompletions?: number; rewardSeed?: number | bigint; periodicMissionTag?: string; T?: number; // Duviri -- 2.47.2 From f3beebc53d32cf72da6f66f8d7c00758b3eb1876 Mon Sep 17 00:00:00 2001 From: VampireKitten Date: Tue, 12 Aug 2025 15:40:13 +0200 Subject: [PATCH 2/3] Add warning for missing cache reward manifest --- src/services/missionInventoryUpdateService.ts | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts index d96c5979..a24937dd 100644 --- a/src/services/missionInventoryUpdateService.ts +++ b/src/services/missionInventoryUpdateService.ts @@ -1947,24 +1947,32 @@ function getRandomMissionDrops( } // Railjack Abandoned Cache Rewards, Rotation A (Mandatory Objectives) - if (region.cacheRewardManifest && RewardInfo.POICompletions) { - const deck = ExportRewards[region.cacheRewardManifest]; - for (let cache = 0; cache != RewardInfo.POICompletions; ++cache) { - const drop = getRandomRewardByChance(deck[0]); - if (drop) { - drops.push({ StoreItem: drop.type, ItemCount: drop.itemCount, FromEnemyCache: true }); + if (RewardInfo.POICompletions) { + if(region.cacheRewardManifest){ + const deck = ExportRewards[region.cacheRewardManifest]; + for (let cache = 0; cache != RewardInfo.POICompletions; ++cache) { + const drop = getRandomRewardByChance(deck[0]); + if (drop) { + drops.push({ StoreItem: drop.type, ItemCount: drop.itemCount, FromEnemyCache: true }); + } } + } else { + logger.error(`POI completed, but there was no cache reward manifest at ${RewardInfo.node}`); } } // Railjack Abandoned Cache Rewards, Rotation B (Optional Objectives) - if (region.cacheRewardManifest && RewardInfo.LootDungeonCompletions) { - const deck = ExportRewards[region.cacheRewardManifest]; - for (let cache = 0; cache != RewardInfo.LootDungeonCompletions; ++cache) { - const drop = getRandomRewardByChance(deck[1]); - if (drop) { - drops.push({ StoreItem: drop.type, ItemCount: drop.itemCount, FromEnemyCache: true }); + if (RewardInfo.LootDungeonCompletions) { + if(region.cacheRewardManifest){ + const deck = ExportRewards[region.cacheRewardManifest]; + for (let cache = 0; cache != RewardInfo.LootDungeonCompletions; ++cache) { + const drop = getRandomRewardByChance(deck[1]); + if (drop) { + drops.push({ StoreItem: drop.type, ItemCount: drop.itemCount, FromEnemyCache: true }); + } } + } else { + logger.error(`Loot dungeon completed, but there was no cache reward manifest at ${RewardInfo.node}`); } } -- 2.47.2 From 9ae925fd43f13de45f60347c84edddc53dabf8ea Mon Sep 17 00:00:00 2001 From: VampireKitten Date: Tue, 12 Aug 2025 06:51:41 -0700 Subject: [PATCH 3/3] revert 75779649b3220b7cbf3d1e5e179151a867fc7358 revert Merge branch 'main' into railjackabandonedcaches --- static/webui/script.js | 3 --- static/webui/translations/fr.js | 10 +++++----- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/static/webui/script.js b/static/webui/script.js index 3715e906..2445a6fc 100644 --- a/static/webui/script.js +++ b/static/webui/script.js @@ -497,9 +497,6 @@ function fetchItemList() { uniqueLevelCaps = items; } else if (type == "Syndicates") { items.forEach(item => { - if (item.uniqueName === "ConclaveSyndicate") { - return; - } if (item.uniqueName.startsWith("RadioLegion")) { item.name += " (" + item.uniqueName + ")"; } diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js index 1fde6e1b..059a2672 100644 --- a/static/webui/translations/fr.js +++ b/static/webui/translations/fr.js @@ -156,8 +156,8 @@ dict = { invigorations_defensiveLabel: `Amélioration défensive`, invigorations_expiryLabel: `Expiration de l'invigoration (optionnel)`, - abilityOverride_label: `Remplacement de pouvoir`, - abilityOverride_onSlot: `Sur l'emplacement`, + abilityOverride_label: `[UNTRANSLATED] Ability Override`, + abilityOverride_onSlot: `[UNTRANSLATED] on slot`, mods_addRiven: `Ajouter un riven`, mods_fingerprint: `Empreinte`, @@ -242,13 +242,13 @@ dict = { worldState_creditBoost: `Booster de Crédit`, worldState_affinityBoost: `Booster d'Affinité`, worldState_resourceBoost: `Booster de Ressource`, - worldState_tennoLiveRelay: `Relais TennoLive`, - worldState_baroTennoConRelay: `Relais Baro TennoCon`, + worldState_tennoLiveRelay: `[UNTRANSLATED] TennoLive Relay`, + worldState_baroTennoConRelay: `[UNTRANSLATED] Baro's TennoCon Relay`, worldState_starDays: `Jours Stellaires`, worldState_galleonOfGhouls: `Galion des Goules`, worldState_ghoulEmergence: `Purge des Goules`, worldState_plagueStar: `Fléau Céleste`, - enabled: `Activé`, + enabled: `[UNTRANSLATED] Enabled`, disabled: `Désactivé`, worldState_we1: `Weekend 1`, worldState_we2: `Weekend 2`, -- 2.47.2