diff --git a/config.json.example b/config.json.example
index 9d072329..32562400 100644
--- a/config.json.example
+++ b/config.json.example
@@ -33,6 +33,7 @@
"noArgonCrystalDecay": false,
"noMasteryRankUpCooldown": false,
"noVendorPurchaseLimits": true,
+ "noDeathMarks": false,
"noKimCooldowns": false,
"instantResourceExtractorDrones": false,
"noResourceExtractorDronesDamage": false,
diff --git a/src/services/configService.ts b/src/services/configService.ts
index cb1a2c38..24707bd5 100644
--- a/src/services/configService.ts
+++ b/src/services/configService.ts
@@ -39,6 +39,7 @@ interface IConfig {
noArgonCrystalDecay?: boolean;
noMasteryRankUpCooldown?: boolean;
noVendorPurchaseLimits?: boolean;
+ noDeathMarks?: boolean;
noKimCooldowns?: boolean;
instantResourceExtractorDrones?: boolean;
noResourceExtractorDronesDamage?: boolean;
diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts
index 0b452ccc..c30af726 100644
--- a/src/services/missionInventoryUpdateService.ts
+++ b/src/services/missionInventoryUpdateService.ts
@@ -54,6 +54,7 @@ import { getInfNodes } from "@/src/helpers/nemesisHelpers";
import { Loadout } from "../models/inventoryModels/loadoutModel";
import { ILoadoutConfigDatabase } from "../types/saveLoadoutTypes";
import { getWorldState } from "./worldStateService";
+import { config } from "./configService";
const getRotations = (rewardInfo: IRewardInfo, tierOverride?: number): number[] => {
// For Spy missions, e.g. 3 vaults cracked = A, B, C
@@ -418,22 +419,24 @@ export const addMissionInventoryUpdates = async (
break;
}
case "DeathMarks": {
- for (const bossName of value) {
- if (inventory.DeathMarks.indexOf(bossName) == -1) {
- // It's a new death mark; we have to say the line.
- await createMessage(inventory.accountOwnerId, [
- {
- sub: bossName,
- sndr: "/Lotus/Language/G1Quests/DeathMarkSender",
- msg: "/Lotus/Language/G1Quests/DeathMarkMessage",
- icon: "/Lotus/Interface/Icons/Npcs/Stalker_d.png",
- highPriority: true,
- expiry: new Date(Date.now() + 86400_000) // TOVERIFY: This type of inbox message seems to automatically delete itself. We'll just delete it after 24 hours, but it's clear if this is correct.
- }
- ]);
+ if (!config.noDeathMarks) {
+ for (const bossName of value) {
+ if (inventory.DeathMarks.indexOf(bossName) == -1) {
+ // It's a new death mark; we have to say the line.
+ await createMessage(inventory.accountOwnerId, [
+ {
+ sub: bossName,
+ sndr: "/Lotus/Language/G1Quests/DeathMarkSender",
+ msg: "/Lotus/Language/G1Quests/DeathMarkMessage",
+ icon: "/Lotus/Interface/Icons/Npcs/Stalker_d.png",
+ highPriority: true,
+ expiry: new Date(Date.now() + 86400_000) // TOVERIFY: This type of inbox message seems to automatically delete itself. We'll just delete it after 24 hours, but it's clear if this is correct.
+ }
+ ]);
+ }
}
+ inventory.DeathMarks = value;
}
- inventory.DeathMarks = value;
break;
}
case "CapturedAnimals": {
diff --git a/static/webui/index.html b/static/webui/index.html
index ec786b4e..3830e378 100644
--- a/static/webui/index.html
+++ b/static/webui/index.html
@@ -611,6 +611,10 @@
+
+
+
+
diff --git a/static/webui/translations/de.js b/static/webui/translations/de.js
index 20be9fbd..2357d455 100644
--- a/static/webui/translations/de.js
+++ b/static/webui/translations/de.js
@@ -138,6 +138,7 @@ dict = {
cheats_noArgonCrystalDecay: `Argon-Kristalle verschwinden niemals`,
cheats_noMasteryRankUpCooldown: `Keine Wartezeit beim Meisterschaftsrangaufstieg`,
cheats_noVendorPurchaseLimits: `Keine Kaufbeschränkungen bei Händlern`,
+ cheats_noDeathMarks: `[UNTRANSLATED] No Death Marks`,
cheats_noKimCooldowns: `Keine Wartezeit bei KIM`,
cheats_instantResourceExtractorDrones: `Sofortige Ressourcen-Extraktor-Drohnen`,
cheats_noResourceExtractorDronesDamage: `Kein Schaden für Ressourcen-Extraktor-Drohnen`,
diff --git a/static/webui/translations/en.js b/static/webui/translations/en.js
index bbf2561a..3b6fb449 100644
--- a/static/webui/translations/en.js
+++ b/static/webui/translations/en.js
@@ -137,6 +137,7 @@ dict = {
cheats_noArgonCrystalDecay: `No Argon Crystal Decay`,
cheats_noMasteryRankUpCooldown: `No Mastery Rank Up Cooldown`,
cheats_noVendorPurchaseLimits: `No Vendor Purchase Limits`,
+ cheats_noDeathMarks: `No Death Marks`,
cheats_noKimCooldowns: `No KIM Cooldowns`,
cheats_instantResourceExtractorDrones: `Instant Resource Extractor Drones`,
cheats_noResourceExtractorDronesDamage: `No Resource Extractor Drones Damage`,
diff --git a/static/webui/translations/es.js b/static/webui/translations/es.js
index c979bddc..8b751375 100644
--- a/static/webui/translations/es.js
+++ b/static/webui/translations/es.js
@@ -138,6 +138,7 @@ dict = {
cheats_noArgonCrystalDecay: `Sin descomposición de cristal de Argón`,
cheats_noMasteryRankUpCooldown: `Sin tiempo de espera para rango de maestría`,
cheats_noVendorPurchaseLimits: `Sin límite de compras de vendedores`,
+ cheats_noDeathMarks: `[UNTRANSLATED] No Death Marks`,
cheats_noKimCooldowns: `Sin tiempo de espera para conversaciones KIM`,
cheats_instantResourceExtractorDrones: `Drones de extracción de recursos instantáneos`,
cheats_noResourceExtractorDronesDamage: `Sin daño a los drones extractores de recursos`,
diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js
index 54f041c6..b1938b53 100644
--- a/static/webui/translations/fr.js
+++ b/static/webui/translations/fr.js
@@ -138,6 +138,7 @@ dict = {
cheats_noArgonCrystalDecay: `[UNTRANSLATED] No Argon Crystal Decay`,
cheats_noMasteryRankUpCooldown: `[UNTRANSLATED] No Mastery Rank Up Cooldown`,
cheats_noVendorPurchaseLimits: `[UNTRANSLATED] No Vendor Purchase Limits`,
+ cheats_noDeathMarks: `[UNTRANSLATED] No Death Marks`,
cheats_noKimCooldowns: `[UNTRANSLATED] No KIM Cooldowns`,
cheats_instantResourceExtractorDrones: `Ressources de drone d'extraction instantannées`,
cheats_noResourceExtractorDronesDamage: `[UNTRANSLATED] No Resource Extractor Drones Damage`,
diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js
index 62c82f70..4a5dceeb 100644
--- a/static/webui/translations/ru.js
+++ b/static/webui/translations/ru.js
@@ -138,6 +138,7 @@ dict = {
cheats_noArgonCrystalDecay: `Без распада аргоновых кристаллов`,
cheats_noMasteryRankUpCooldown: `Повышение ранга мастерства без кулдауна`,
cheats_noVendorPurchaseLimits: `Отсутствие лимитов на покупки у вендоров`,
+ cheats_noDeathMarks: `[UNTRANSLATED] No Death Marks`,
cheats_noKimCooldowns: `[UNTRANSLATED] No KIM Cooldowns`,
cheats_instantResourceExtractorDrones: `Мгновенные Экстракторы Ресурсов`,
cheats_noResourceExtractorDronesDamage: `[UNTRANSLATED] No Resource Extractor Drones Damage`,
diff --git a/static/webui/translations/zh.js b/static/webui/translations/zh.js
index 3d7af8ec..5af41bea 100644
--- a/static/webui/translations/zh.js
+++ b/static/webui/translations/zh.js
@@ -138,6 +138,7 @@ dict = {
cheats_noArgonCrystalDecay: `[UNTRANSLATED] No Argon Crystal Decay`,
cheats_noMasteryRankUpCooldown: `[UNTRANSLATED] No Mastery Rank Up Cooldown`,
cheats_noVendorPurchaseLimits: `[UNTRANSLATED] No Vendor Purchase Limits`,
+ cheats_noDeathMarks: `[UNTRANSLATED] No Death Marks`,
cheats_noKimCooldowns: `[UNTRANSLATED] No KIM Cooldowns`,
cheats_instantResourceExtractorDrones: `即时资源采集无人机`,
cheats_noResourceExtractorDronesDamage: `[UNTRANSLATED] No Resource Extractor Drones Damage`,