diff --git a/Dockerfile b/Dockerfile
index a988b8bb..c36da824 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_SYNDICATE_MISSIONS_REPEATABLE=false
ENV APP_INSTANT_FINISH_RIVEN_CHALLENGE=false
ENV APP_INSTANT_RESOURCE_EXTRACTOR_DRONES=false
ENV APP_NO_RESOURCE_EXTRACTOR_DRONES_DAMAGE=false
diff --git a/config.json.example b/config.json.example
index 19d1d170..d9585902 100644
--- a/config.json.example
+++ b/config.json.example
@@ -38,6 +38,7 @@
"noVendorPurchaseLimits": true,
"noDeathMarks": false,
"noKimCooldowns": false,
+ "syndicateMissionsRepeatable": false,
"instantFinishRivenChallenge": false,
"instantResourceExtractorDrones": false,
"noResourceExtractorDronesDamage": false,
diff --git a/docker-compose.yml b/docker-compose.yml
index 55539ba3..544dec95 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_SYNDICATE_MISSIONS_REPEATABLE: false
# APP_INSTANT_FINISH_RIVEN_CHALLENGE: false
# APP_INSTANT_RESOURCE_EXTRACTOR_DRONES: false
# APP_NO_RESOURCE_EXTRACTOR_DRONES_DAMAGE: false
diff --git a/src/services/configService.ts b/src/services/configService.ts
index 2157546a..6a42481b 100644
--- a/src/services/configService.ts
+++ b/src/services/configService.ts
@@ -44,6 +44,7 @@ interface IConfig {
noVendorPurchaseLimits?: boolean;
noDeathMarks?: boolean;
noKimCooldowns?: boolean;
+ syndicateMissionsRepeatable?: boolean;
instantFinishRivenChallenge?: boolean;
instantResourceExtractorDrones?: boolean;
noResourceExtractorDronesDamage?: boolean;
diff --git a/src/services/missionInventoryUpdateService.ts b/src/services/missionInventoryUpdateService.ts
index 12aa3f53..32a2899c 100644
--- a/src/services/missionInventoryUpdateService.ts
+++ b/src/services/missionInventoryUpdateService.ts
@@ -445,7 +445,9 @@ export const addMissionInventoryUpdates = async (
});
break;
case "SyndicateId": {
- inventory.CompletedSyndicates.push(value);
+ if (!config.syndicateMissionsRepeatable) {
+ inventory.CompletedSyndicates.push(value);
+ }
break;
}
case "SortieId": {
diff --git a/static/webui/index.html b/static/webui/index.html
index 15a00158..1b42793e 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 f8ca4d7b..eb721391 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_syndicateMissionsRepeatable: `Syndikat-Missionen wiederholbar`,
cheats_instantFinishRivenChallenge: `Riven-Mod Herausforderung sofort abschließen`,
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 6191ac71..cd718917 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_syndicateMissionsRepeatable: `Syndicate Missions Repeatable`,
cheats_instantFinishRivenChallenge: `Instant Finish Riven Challenge`,
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 8522ab22..80db0dbf 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_syndicateMissionsRepeatable: `[UNTRANSLATED] Syndicate Missions Repeatable`,
cheats_instantFinishRivenChallenge: `Terminar desafío de agrietado inmediatamente`,
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 d9773d4c..6c91356c 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_syndicateMissionsRepeatable: `[UNTRANSLATED] Syndicate Missions Repeatable`,
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`,
diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js
index ccc1101a..445c519a 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_syndicateMissionsRepeatable: `[UNTRANSLATED] Syndicate Missions Repeatable`,
cheats_instantFinishRivenChallenge: `[UNTRANSLATED] Instant Finish Riven Challenge`,
cheats_instantResourceExtractorDrones: `Мгновенные Экстракторы Ресурсов`,
cheats_noResourceExtractorDronesDamage: `Без урона по дронам-сборщикам`,
diff --git a/static/webui/translations/zh.js b/static/webui/translations/zh.js
index 16d931f0..5b38f847 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_syndicateMissionsRepeatable: `[UNTRANSLATED] Syndicate Missions Repeatable`,
cheats_instantFinishRivenChallenge: `[UNTRANSLATED] Instant Finish Riven Challenge`,
cheats_instantResourceExtractorDrones: `即时资源采集无人机`,
cheats_noResourceExtractorDronesDamage: `[UNTRANSLATED] No Resource Extractor Drones Damage`,