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`,