diff --git a/Dockerfile b/Dockerfile
index 4e1428e4..a988b8bb 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -32,6 +32,7 @@ ENV APP_NO_MASTERY_RANK_UP_COOLDOWN=false
ENV APP_NO_VENDOR_PURCHASE_LIMITS=true
ENV APP_NO_DEATH_MARKS=false
ENV APP_NO_KIM_COOLDOWNS=false
+ENV APP_INSTANT_FINISH_RIVEN_CHALLENGE=false
ENV APP_INSTANT_RESOURCE_EXTRACTOR_DRONES=false
ENV APP_NO_RESOURCE_EXTRACTOR_DRONES_DAMAGE=false
ENV APP_SKIP_CLAN_KEY_CRAFTING=false
diff --git a/config.json.example b/config.json.example
index fdf59b35..19d1d170 100644
--- a/config.json.example
+++ b/config.json.example
@@ -38,6 +38,7 @@
"noVendorPurchaseLimits": true,
"noDeathMarks": false,
"noKimCooldowns": false,
+ "instantFinishRivenChallenge": false,
"instantResourceExtractorDrones": false,
"noResourceExtractorDronesDamage": false,
"skipClanKeyCrafting": false,
diff --git a/docker-compose.yml b/docker-compose.yml
index be0f9f68..55539ba3 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -39,6 +39,7 @@ services:
# APP_NO_VENDOR_PURCHASE_LIMITS: true
# APP_NO_DEATH_MARKS: false
# APP_NO_KIM_COOLDOWNS: false
+ # APP_INSTANT_FINISH_RIVEN_CHALLENGE: false
# APP_INSTANT_RESOURCE_EXTRACTOR_DRONES: false
# APP_NO_RESOURCE_EXTRACTOR_DRONES_DAMAGE: false
# APP_SKIP_CLAN_KEY_CRAFTING: false
diff --git a/src/controllers/api/activateRandomModController.ts b/src/controllers/api/activateRandomModController.ts
index 5dc8499c..b0350434 100644
--- a/src/controllers/api/activateRandomModController.ts
+++ b/src/controllers/api/activateRandomModController.ts
@@ -1,11 +1,16 @@
import { toOid } from "@/src/helpers/inventoryHelpers";
-import { createVeiledRivenFingerprint, rivenRawToRealWeighted } from "@/src/helpers/rivenHelper";
+import {
+ createVeiledRivenFingerprint,
+ createUnveiledRivenFingerprint,
+ rivenRawToRealWeighted
+} from "@/src/helpers/rivenHelper";
import { getJSONfromString } from "@/src/helpers/stringHelpers";
import { addMods, getInventory } from "@/src/services/inventoryService";
import { getAccountIdForRequest } from "@/src/services/loginService";
import { getRandomElement } from "@/src/services/rngService";
import { RequestHandler } from "express";
import { ExportUpgrades } from "warframe-public-export-plus";
+import { config } from "@/src/services/configService";
export const activateRandomModController: RequestHandler = async (req, res) => {
const accountId = await getAccountIdForRequest(req);
@@ -18,7 +23,9 @@ export const activateRandomModController: RequestHandler = async (req, res) => {
}
]);
const rivenType = getRandomElement(rivenRawToRealWeighted[request.ItemType])!;
- const fingerprint = createVeiledRivenFingerprint(ExportUpgrades[rivenType]);
+ const fingerprint = config.instantFinishRivenChallenge
+ ? createUnveiledRivenFingerprint(ExportUpgrades[rivenType])
+ : createVeiledRivenFingerprint(ExportUpgrades[rivenType]);
const upgradeIndex =
inventory.Upgrades.push({
ItemType: rivenType,
diff --git a/src/services/configService.ts b/src/services/configService.ts
index f17679d7..2157546a 100644
--- a/src/services/configService.ts
+++ b/src/services/configService.ts
@@ -44,6 +44,7 @@ interface IConfig {
noVendorPurchaseLimits?: boolean;
noDeathMarks?: boolean;
noKimCooldowns?: boolean;
+ instantFinishRivenChallenge?: boolean;
instantResourceExtractorDrones?: boolean;
noResourceExtractorDronesDamage?: boolean;
skipClanKeyCrafting?: boolean;
diff --git a/static/webui/index.html b/static/webui/index.html
index be72a678..15a00158 100644
--- a/static/webui/index.html
+++ b/static/webui/index.html
@@ -674,6 +674,10 @@
+
+
+
+
diff --git a/static/webui/translations/de.js b/static/webui/translations/de.js
index 4d7876c9..f8ca4d7b 100644
--- a/static/webui/translations/de.js
+++ b/static/webui/translations/de.js
@@ -151,6 +151,7 @@ dict = {
cheats_noVendorPurchaseLimits: `Keine Kaufbeschränkungen bei Händlern`,
cheats_noDeathMarks: `Keine Todesmarkierungen`,
cheats_noKimCooldowns: `Keine Wartezeit bei KIM`,
+ cheats_instantFinishRivenChallenge: `Riven-Mod Herausforderung sofort abschließen`,
cheats_instantResourceExtractorDrones: `Sofortige Ressourcen-Extraktor-Drohnen`,
cheats_noResourceExtractorDronesDamage: `Kein Schaden für Ressourcen-Extraktor-Drohnen`,
cheats_skipClanKeyCrafting: `Clan-Schlüsselherstellung überspringen`,
diff --git a/static/webui/translations/en.js b/static/webui/translations/en.js
index a8f8e858..6191ac71 100644
--- a/static/webui/translations/en.js
+++ b/static/webui/translations/en.js
@@ -150,6 +150,7 @@ dict = {
cheats_noVendorPurchaseLimits: `No Vendor Purchase Limits`,
cheats_noDeathMarks: `No Death Marks`,
cheats_noKimCooldowns: `No KIM Cooldowns`,
+ cheats_instantFinishRivenChallenge: `Instant Finish Riven Challenge`,
cheats_instantResourceExtractorDrones: `Instant Resource Extractor Drones`,
cheats_noResourceExtractorDronesDamage: `No Resource Extractor Drones Damage`,
cheats_skipClanKeyCrafting: `Skip Clan Key Crafting`,
diff --git a/static/webui/translations/es.js b/static/webui/translations/es.js
index 8f214edc..97302bb7 100644
--- a/static/webui/translations/es.js
+++ b/static/webui/translations/es.js
@@ -151,6 +151,7 @@ dict = {
cheats_noVendorPurchaseLimits: `Sin límite de compras de vendedores`,
cheats_noDeathMarks: `Sin marcas de muerte`,
cheats_noKimCooldowns: `Sin tiempo de espera para conversaciones KIM`,
+ cheats_instantFinishRivenChallenge: `[UNTRANSLATED] Instant Finish Riven Challenge`,
cheats_instantResourceExtractorDrones: `Drones de extracción de recursos instantáneos`,
cheats_noResourceExtractorDronesDamage: `Sin daño a los drones extractores de recursos`,
cheats_skipClanKeyCrafting: `Saltar la fabricación de la llave de clan`,
diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js
index 63bdda1c..d9773d4c 100644
--- a/static/webui/translations/fr.js
+++ b/static/webui/translations/fr.js
@@ -151,6 +151,7 @@ dict = {
cheats_noVendorPurchaseLimits: `Aucune limite d'achat chez les PNJ`,
cheats_noDeathMarks: `Aucune marque d'assassin`,
cheats_noKimCooldowns: `Aucun cooldown sur le KIM`,
+ cheats_instantFinishRivenChallenge: `[UNTRANSLATED] Instant Finish Riven Challenge`,
cheats_instantResourceExtractorDrones: `Ressources de drones d'extraction instantannées`,
cheats_noResourceExtractorDronesDamage: `Aucun dégâts aux drones d'extraction de resources`,
cheats_skipClanKeyCrafting: `[UNTRANSLATED] Skip Clan Key Crafting`,
diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js
index aa25b6a9..ccc1101a 100644
--- a/static/webui/translations/ru.js
+++ b/static/webui/translations/ru.js
@@ -151,6 +151,7 @@ dict = {
cheats_noVendorPurchaseLimits: `Отсутствие лимитов на покупки у вендоров`,
cheats_noDeathMarks: `Без меток сметри`,
cheats_noKimCooldowns: `Чаты KIM без кулдауна`,
+ cheats_instantFinishRivenChallenge: `[UNTRANSLATED] Instant Finish Riven Challenge`,
cheats_instantResourceExtractorDrones: `Мгновенные Экстракторы Ресурсов`,
cheats_noResourceExtractorDronesDamage: `Без урона по дронам-сборщикам`,
cheats_skipClanKeyCrafting: `Пропустить крафт кланового ключа`,
diff --git a/static/webui/translations/zh.js b/static/webui/translations/zh.js
index 8f5077a7..16d931f0 100644
--- a/static/webui/translations/zh.js
+++ b/static/webui/translations/zh.js
@@ -151,6 +151,7 @@ dict = {
cheats_noVendorPurchaseLimits: `[UNTRANSLATED] No Vendor Purchase Limits`,
cheats_noDeathMarks: `[UNTRANSLATED] No Death Marks`,
cheats_noKimCooldowns: `[UNTRANSLATED] No KIM Cooldowns`,
+ cheats_instantFinishRivenChallenge: `[UNTRANSLATED] Instant Finish Riven Challenge`,
cheats_instantResourceExtractorDrones: `即时资源采集无人机`,
cheats_noResourceExtractorDronesDamage: `[UNTRANSLATED] No Resource Extractor Drones Damage`,
cheats_skipClanKeyCrafting: `[UNTRANSLATED] Skip Clan Key Crafting`,