diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 24a2f307..a59167d1 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -15,11 +15,12 @@ jobs:
- run: npm run verify
- run: npm run lint:ci
- run: npm run prettier
+ - run: npm run update-translations
- name: Fail if there are uncommitted changes
run: |
if [[ -n "$(git status --porcelain)" ]]; then
echo "Uncommitted changes detected:"
git status
- git diff
+ git --no-pager diff
exit 1
fi
diff --git a/config.json.example b/config.json.example
index 626d2d7b..a813d093 100644
--- a/config.json.example
+++ b/config.json.example
@@ -32,6 +32,7 @@
"noArgonCrystalDecay": false,
"noMasteryRankUpCooldown": false,
"noVendorPurchaseLimits": true,
+ "noKimCooldowns": false,
"instantResourceExtractorDrones": false,
"noDojoRoomBuildStage": false,
"noDecoBuildStage": false,
diff --git a/src/controllers/api/saveDialogueController.ts b/src/controllers/api/saveDialogueController.ts
index 999e0293..7d7d6380 100644
--- a/src/controllers/api/saveDialogueController.ts
+++ b/src/controllers/api/saveDialogueController.ts
@@ -1,4 +1,5 @@
import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel";
+import { config } from "@/src/services/configService";
import { addEmailItem, getInventory, updateCurrency } from "@/src/services/inventoryService";
import { getAccountIdForRequest } from "@/src/services/loginService";
import { ICompletedDialogue, IDialogueDatabase } from "@/src/types/inventoryTypes/inventoryTypes";
@@ -24,7 +25,9 @@ export const saveDialogueController: RequestHandler = async (req, res) => {
throw new Error("bad inventory state");
}
const inventoryChanges: IInventoryChanges = {};
- const tomorrowAt0Utc = (Math.trunc(Date.now() / 86400_000) + 1) * 86400_000;
+ const tomorrowAt0Utc = config.noKimCooldowns
+ ? Date.now()
+ : (Math.trunc(Date.now() / 86400_000) + 1) * 86400_000;
inventory.DialogueHistory.Dialogues ??= [];
const dialogue = getDialogue(inventory, request.DialogueName);
dialogue.Rank = request.Rank;
diff --git a/src/services/configService.ts b/src/services/configService.ts
index 7a3f0b1d..c584a1fb 100644
--- a/src/services/configService.ts
+++ b/src/services/configService.ts
@@ -38,6 +38,7 @@ interface IConfig {
noArgonCrystalDecay?: boolean;
noMasteryRankUpCooldown?: boolean;
noVendorPurchaseLimits?: boolean;
+ noKimCooldowns?: boolean;
instantResourceExtractorDrones?: boolean;
noDojoRoomBuildStage?: boolean;
noDojoDecoBuildStage?: boolean;
diff --git a/static/webui/index.html b/static/webui/index.html
index f46be9ab..38eb3e54 100644
--- a/static/webui/index.html
+++ b/static/webui/index.html
@@ -607,6 +607,10 @@
+
+
+
+
diff --git a/static/webui/translations/de.js b/static/webui/translations/de.js
index 807c2e47..95870e31 100644
--- a/static/webui/translations/de.js
+++ b/static/webui/translations/de.js
@@ -137,6 +137,7 @@ dict = {
cheats_noArgonCrystalDecay: `Argon-Kristalle verschwinden niemals`,
cheats_noMasteryRankUpCooldown: `Keine Wartezeit beim Meisterschaftsrangaufstieg`,
cheats_noVendorPurchaseLimits: `Keine Kaufbeschränkungen bei Händlern`,
+ cheats_noKimCooldowns: `[UNTRANSLATED] No KIM Cooldowns`,
cheats_instantResourceExtractorDrones: `Sofortige Ressourcen-Extraktor-Drohnen`,
cheats_noDojoRoomBuildStage: `Kein Dojo-Raum-Bauvorgang`,
cheats_noDojoDecoBuildStage: `Kein Dojo-Deko-Bauvorgang`,
diff --git a/static/webui/translations/en.js b/static/webui/translations/en.js
index 0962ee33..3c9db66f 100644
--- a/static/webui/translations/en.js
+++ b/static/webui/translations/en.js
@@ -136,6 +136,7 @@ dict = {
cheats_noArgonCrystalDecay: `No Argon Crystal Decay`,
cheats_noMasteryRankUpCooldown: `No Mastery Rank Up Cooldown`,
cheats_noVendorPurchaseLimits: `No Vendor Purchase Limits`,
+ cheats_noKimCooldowns: `No KIM Cooldowns`,
cheats_instantResourceExtractorDrones: `Instant Resource Extractor Drones`,
cheats_noDojoRoomBuildStage: `No Dojo Room Build Stage`,
cheats_noDojoDecoBuildStage: `No Dojo Deco Build Stage`,
diff --git a/static/webui/translations/es.js b/static/webui/translations/es.js
index 8ca358d8..4656a328 100644
--- a/static/webui/translations/es.js
+++ b/static/webui/translations/es.js
@@ -137,6 +137,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_noKimCooldowns: `[UNTRANSLATED] No KIM Cooldowns`,
cheats_instantResourceExtractorDrones: `Drones de extracción de recursos instantáneos`,
cheats_noDojoRoomBuildStage: `Sin etapa de construcción de sala del dojo`,
cheats_noDojoDecoBuildStage: `Sin etapa de construcción de decoraciones del dojo`,
diff --git a/static/webui/translations/fr.js b/static/webui/translations/fr.js
index 77d2bcf4..90188be4 100644
--- a/static/webui/translations/fr.js
+++ b/static/webui/translations/fr.js
@@ -137,6 +137,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_noKimCooldowns: `[UNTRANSLATED] No KIM Cooldowns`,
cheats_instantResourceExtractorDrones: `Ressources de drone d'extraction instantannées`,
cheats_noDojoRoomBuildStage: `No Dojo Room Build Stage`,
cheats_noDojoDecoBuildStage: `[UNTRANSLATED] No Dojo Deco Build Stage`,
diff --git a/static/webui/translations/ru.js b/static/webui/translations/ru.js
index 20410d9e..8682cca4 100644
--- a/static/webui/translations/ru.js
+++ b/static/webui/translations/ru.js
@@ -137,6 +137,7 @@ dict = {
cheats_noArgonCrystalDecay: `Без распада аргоновых кристаллов`,
cheats_noMasteryRankUpCooldown: `Повышение ранга мастерства без кулдауна`,
cheats_noVendorPurchaseLimits: `Отсутствие лимитов на покупки у вендоров`,
+ cheats_noKimCooldowns: `[UNTRANSLATED] No KIM Cooldowns`,
cheats_instantResourceExtractorDrones: `Мгновенные Экстракторы Ресурсов`,
cheats_noDojoRoomBuildStage: `Мгновенное Строительтво Комнат Додзё`,
cheats_noDojoDecoBuildStage: `Мгновенное Строительтво Декораций Додзё`,
diff --git a/static/webui/translations/zh.js b/static/webui/translations/zh.js
index a793c9ec..2f720067 100644
--- a/static/webui/translations/zh.js
+++ b/static/webui/translations/zh.js
@@ -137,6 +137,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_noKimCooldowns: `[UNTRANSLATED] No KIM Cooldowns`,
cheats_instantResourceExtractorDrones: `即时资源采集无人机`,
cheats_noDojoRoomBuildStage: `无视道场房间建造阶段`,
cheats_noDojoDecoBuildStage: `[UNTRANSLATED] No Dojo Deco Build Stage`,