chore: move unlockAllSimarisResearchEntries to a per-account button #2726
@ -486,19 +486,6 @@ export const getInventoryResponse = async (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.unlockAllSimarisResearchEntries) {
|
|
||||||
inventoryResponse.LibraryPersonalTarget = undefined;
|
|
||||||
inventoryResponse.LibraryPersonalProgress = [
|
|
||||||
"/Lotus/Types/Game/Library/Targets/Research1Target",
|
|
||||||
"/Lotus/Types/Game/Library/Targets/Research2Target",
|
|
||||||
"/Lotus/Types/Game/Library/Targets/Research3Target",
|
|
||||||
"/Lotus/Types/Game/Library/Targets/Research4Target",
|
|
||||||
"/Lotus/Types/Game/Library/Targets/Research5Target",
|
|
||||||
"/Lotus/Types/Game/Library/Targets/Research6Target",
|
|
||||||
"/Lotus/Types/Game/Library/Targets/Research7Target"
|
|
||||||
].map(type => ({ TargetType: type, Scans: 10, Completed: true }));
|
|
||||||
}
|
|
||||||
|
|
||||||
return inventoryResponse;
|
return inventoryResponse;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@ -0,0 +1,20 @@
|
|||||||
|
import type { RequestHandler } from "express";
|
||||||
|
import { getAccountIdForRequest } from "../../services/loginService.ts";
|
||||||
|
import { getInventory } from "../../services/inventoryService.ts";
|
||||||
|
|
||||||
|
export const unlockAllSimarisResearchEntriesController: RequestHandler = async (req, res) => {
|
||||||
|
const accountId = await getAccountIdForRequest(req);
|
||||||
|
const inventory = await getInventory(accountId, "LibraryPersonalTarget LibraryPersonalProgress");
|
||||||
|
inventory.LibraryPersonalTarget = undefined;
|
||||||
|
inventory.LibraryPersonalProgress = [
|
||||||
|
"/Lotus/Types/Game/Library/Targets/Research1Target",
|
||||||
|
"/Lotus/Types/Game/Library/Targets/Research2Target",
|
||||||
|
"/Lotus/Types/Game/Library/Targets/Research3Target",
|
||||||
|
"/Lotus/Types/Game/Library/Targets/Research4Target",
|
||||||
|
"/Lotus/Types/Game/Library/Targets/Research5Target",
|
||||||
|
"/Lotus/Types/Game/Library/Targets/Research6Target",
|
||||||
|
"/Lotus/Types/Game/Library/Targets/Research7Target"
|
||||||
|
].map(type => ({ TargetType: type, Scans: 10, Completed: true }));
|
||||||
|
await inventory.save();
|
||||||
|
res.end();
|
||||||
|
};
|
||||||
@ -15,6 +15,7 @@ import { webuiFileChangeDetectedController } from "../controllers/custom/webuiFi
|
|||||||
import { completeAllMissionsController } from "../controllers/custom/completeAllMissionsController.ts";
|
import { completeAllMissionsController } from "../controllers/custom/completeAllMissionsController.ts";
|
||||||
import { addMissingHelminthBlueprintsController } from "../controllers/custom/addMissingHelminthBlueprintsController.ts";
|
import { addMissingHelminthBlueprintsController } from "../controllers/custom/addMissingHelminthBlueprintsController.ts";
|
||||||
import { unlockAllProfitTakerStagesController } from "../controllers/custom/unlockAllProfitTakerStagesController.ts";
|
import { unlockAllProfitTakerStagesController } from "../controllers/custom/unlockAllProfitTakerStagesController.ts";
|
||||||
|
import { unlockAllSimarisResearchEntriesController } from "../controllers/custom/unlockAllSimarisResearchEntriesController.ts";
|
||||||
|
|
||||||
import { abilityOverrideController } from "../controllers/custom/abilityOverrideController.ts";
|
import { abilityOverrideController } from "../controllers/custom/abilityOverrideController.ts";
|
||||||
import { createAccountController } from "../controllers/custom/createAccountController.ts";
|
import { createAccountController } from "../controllers/custom/createAccountController.ts";
|
||||||
@ -50,6 +51,7 @@ customRouter.get("/webuiFileChangeDetected", webuiFileChangeDetectedController);
|
|||||||
customRouter.get("/completeAllMissions", completeAllMissionsController);
|
customRouter.get("/completeAllMissions", completeAllMissionsController);
|
||||||
customRouter.get("/addMissingHelminthBlueprints", addMissingHelminthBlueprintsController);
|
customRouter.get("/addMissingHelminthBlueprints", addMissingHelminthBlueprintsController);
|
||||||
customRouter.get("/unlockAllProfitTakerStages", unlockAllProfitTakerStagesController);
|
customRouter.get("/unlockAllProfitTakerStages", unlockAllProfitTakerStagesController);
|
||||||
|
customRouter.get("/unlockAllSimarisResearchEntries", unlockAllSimarisResearchEntriesController);
|
||||||
|
|
||||||
customRouter.post("/abilityOverride", abilityOverrideController);
|
customRouter.post("/abilityOverride", abilityOverrideController);
|
||||||
customRouter.post("/createAccount", createAccountController);
|
customRouter.post("/createAccount", createAccountController);
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import { repoDir } from "../helpers/pathHelper.ts";
|
|||||||
import { args } from "../helpers/commandLineArguments.ts";
|
import { args } from "../helpers/commandLineArguments.ts";
|
||||||
import { Inbox } from "../models/inboxModel.ts";
|
import { Inbox } from "../models/inboxModel.ts";
|
||||||
|
|
||||||
export interface IConfig extends IConfigRemovedOptions {
|
export interface IConfig {
|
||||||
mongodbUrl: string;
|
mongodbUrl: string;
|
||||||
logger: {
|
logger: {
|
||||||
files: boolean;
|
files: boolean;
|
||||||
@ -33,7 +33,6 @@ export interface IConfig extends IConfigRemovedOptions {
|
|||||||
noDojoResearchCosts?: boolean;
|
noDojoResearchCosts?: boolean;
|
||||||
noDojoResearchTime?: boolean;
|
noDojoResearchTime?: boolean;
|
||||||
fastClanAscension?: boolean;
|
fastClanAscension?: boolean;
|
||||||
unlockAllSimarisResearchEntries?: boolean;
|
|
||||||
spoofMasteryRank?: number;
|
spoofMasteryRank?: number;
|
||||||
relicRewardItemCountMultiplier?: number;
|
relicRewardItemCountMultiplier?: number;
|
||||||
nightwaveStandingMultiplier?: number;
|
nightwaveStandingMultiplier?: number;
|
||||||
@ -105,6 +104,7 @@ export const configRemovedOptionsKeys = [
|
|||||||
"unlockExilusEverywhere",
|
"unlockExilusEverywhere",
|
||||||
"unlockArcanesEverywhere",
|
"unlockArcanesEverywhere",
|
||||||
"unlockAllProfitTakerStages",
|
"unlockAllProfitTakerStages",
|
||||||
|
"unlockAllSimarisResearchEntries",
|
||||||
"noDailyStandingLimits",
|
"noDailyStandingLimits",
|
||||||
"noDailyFocusLimit",
|
"noDailyFocusLimit",
|
||||||
"noArgonCrystalDecay",
|
"noArgonCrystalDecay",
|
||||||
@ -123,11 +123,7 @@ export const configRemovedOptionsKeys = [
|
|||||||
"flawlessRelicsAlwaysGiveSilverReward",
|
"flawlessRelicsAlwaysGiveSilverReward",
|
||||||
"radiantRelicsAlwaysGiveGoldReward",
|
"radiantRelicsAlwaysGiveGoldReward",
|
||||||
"disableDailyTribute"
|
"disableDailyTribute"
|
||||||
] as const;
|
];
|
||||||
|
|
||||||
type IConfigRemovedOptions = {
|
|
||||||
[K in (typeof configRemovedOptionsKeys)[number]]?: boolean;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const configPath = path.join(repoDir, args.configPath ?? "config.json");
|
export const configPath = path.join(repoDir, args.configPath ?? "config.json");
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,13 @@
|
|||||||
import chokidar from "chokidar";
|
import chokidar from "chokidar";
|
||||||
import { logger } from "../utils/logger.ts";
|
import { logger } from "../utils/logger.ts";
|
||||||
import { config, configPath, configRemovedOptionsKeys, loadConfig, syncConfigWithDatabase } from "./configService.ts";
|
import {
|
||||||
|
config,
|
||||||
|
configPath,
|
||||||
|
configRemovedOptionsKeys,
|
||||||
|
loadConfig,
|
||||||
|
syncConfigWithDatabase,
|
||||||
|
type IConfig
|
||||||
|
} from "./configService.ts";
|
||||||
import { saveConfig, shouldReloadConfig } from "./configWriterService.ts";
|
import { saveConfig, shouldReloadConfig } from "./configWriterService.ts";
|
||||||
import { getWebPorts, startWebServer, stopWebServer } from "./webService.ts";
|
import { getWebPorts, startWebServer, stopWebServer } from "./webService.ts";
|
||||||
import { sendWsBroadcast } from "./wsService.ts";
|
import { sendWsBroadcast } from "./wsService.ts";
|
||||||
@ -35,9 +42,11 @@ chokidar.watch(configPath).on("change", () => {
|
|||||||
export const validateConfig = (): void => {
|
export const validateConfig = (): void => {
|
||||||
let modified = false;
|
let modified = false;
|
||||||
for (const key of configRemovedOptionsKeys) {
|
for (const key of configRemovedOptionsKeys) {
|
||||||
if (config[key] !== undefined) {
|
if (config[key as keyof IConfig] !== undefined) {
|
||||||
logger.debug(`Spotted removed option ${key} with value ${config[key]} in config.json.`);
|
logger.debug(
|
||||||
delete config[key];
|
`Spotted removed option ${key} with value ${String(config[key as keyof IConfig])} in config.json.`
|
||||||
|
);
|
||||||
|
delete config[key as keyof IConfig];
|
||||||
modified = true;
|
modified = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -775,10 +775,6 @@
|
|||||||
<input class="form-check-input" type="checkbox" id="radiantRelicsAlwaysGiveGoldReward" />
|
<input class="form-check-input" type="checkbox" id="radiantRelicsAlwaysGiveGoldReward" />
|
||||||
<label class="form-check-label" for="radiantRelicsAlwaysGiveGoldReward" data-loc="cheats_radiantRelicsAlwaysGiveGoldReward"></label>
|
<label class="form-check-label" for="radiantRelicsAlwaysGiveGoldReward" data-loc="cheats_radiantRelicsAlwaysGiveGoldReward"></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-check">
|
|
||||||
<input class="form-check-input" type="checkbox" id="unlockAllSimarisResearchEntries" />
|
|
||||||
<label class="form-check-label" for="unlockAllSimarisResearchEntries" data-loc="cheats_unlockAllSimarisResearchEntries"></label>
|
|
||||||
</div>
|
|
||||||
<div class="form-check">
|
<div class="form-check">
|
||||||
<input class="form-check-input" type="checkbox" id="disableDailyTribute" />
|
<input class="form-check-input" type="checkbox" id="disableDailyTribute" />
|
||||||
<label class="form-check-label" for="disableDailyTribute" data-loc="cheats_disableDailyTribute"></label>
|
<label class="form-check-label" for="disableDailyTribute" data-loc="cheats_disableDailyTribute"></label>
|
||||||
@ -788,14 +784,15 @@
|
|||||||
<label class="form-check-label" for="finishInvasionsInOneMission" data-loc="cheats_finishInvasionsInOneMission"></label>
|
<label class="form-check-label" for="finishInvasionsInOneMission" data-loc="cheats_finishInvasionsInOneMission"></label>
|
||||||
</div>
|
</div>
|
||||||
<div class="mt-2 mb-2 d-flex flex-wrap gap-2">
|
<div class="mt-2 mb-2 d-flex flex-wrap gap-2">
|
||||||
<button class="btn btn-primary" onclick="debounce(doUnlockAllMissions);" data-loc="cheats_unlockAllMissions"></button>
|
<button class="btn btn-primary" onclick="debounce(unlockAllMissions);" data-loc="cheats_unlockAllMissions"></button>
|
||||||
<button class="btn btn-primary" onclick="debounce(markAllAsRead);" data-loc="cheats_markAllAsRead"></button>
|
<button class="btn btn-primary" onclick="debounce(markAllAsRead);" data-loc="cheats_markAllAsRead"></button>
|
||||||
<button class="btn btn-primary" onclick="doUnlockAllFocusSchools();" data-loc="cheats_unlockAllFocusSchools"></button>
|
<button class="btn btn-primary" onclick="doUnlockAllFocusSchools();" data-loc="cheats_unlockAllFocusSchools"></button>
|
||||||
<button class="btn btn-primary" onclick="doHelminthUnlockAll();" data-loc="cheats_helminthUnlockAll"></button>
|
<button class="btn btn-primary" onclick="doHelminthUnlockAll();" data-loc="cheats_helminthUnlockAll"></button>
|
||||||
<button class="btn btn-primary" onclick="debounce(addMissingHelminthRecipes);" data-loc="cheats_addMissingSubsumedAbilities"></button>
|
<button class="btn btn-primary" onclick="debounce(addMissingHelminthRecipes);" data-loc="cheats_addMissingSubsumedAbilities"></button>
|
||||||
<button class="btn btn-primary" onclick="doIntrinsicsUnlockAll();" data-loc="cheats_intrinsicsUnlockAll"></button>
|
<button class="btn btn-primary" onclick="doIntrinsicsUnlockAll();" data-loc="cheats_intrinsicsUnlockAll"></button>
|
||||||
<button class="btn btn-primary" onclick="debounce(doMaxPlexus);" data-loc="inventory_maxPlexus"></button>
|
<button class="btn btn-primary" onclick="debounce(doMaxPlexus);" data-loc="inventory_maxPlexus"></button>
|
||||||
<button class="btn btn-primary" onclick="debounce(doUnlockAllProfitTakerStages);" data-loc="cheats_unlockAllProfitTakerStages"></button>
|
<button class="btn btn-primary" onclick="debounce(unlockAllProfitTakerStages);" data-loc="cheats_unlockAllProfitTakerStages"></button>
|
||||||
|
<button class="btn btn-primary" onclick="debounce(unlockAllSimarisResearchEntries);" data-loc="cheats_unlockAllSimarisResearchEntries"></button>
|
||||||
</div>
|
</div>
|
||||||
<form class="mt-2" onsubmit="doChangeSupportedSyndicate(); return false;">
|
<form class="mt-2" onsubmit="doChangeSupportedSyndicate(); return false;">
|
||||||
<label class="form-label" for="changeSyndicate" data-loc="cheats_changeSupportedSyndicate"></label>
|
<label class="form-label" for="changeSyndicate" data-loc="cheats_changeSupportedSyndicate"></label>
|
||||||
|
|||||||
@ -2713,18 +2713,24 @@ async function doMaxPlexus() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async function doUnlockAllMissions() {
|
async function unlockAllMissions() {
|
||||||
await revalidateAuthz();
|
await revalidateAuthz();
|
||||||
await fetch("/custom/completeAllMissions?" + window.authz);
|
await fetch("/custom/completeAllMissions?" + window.authz);
|
||||||
toast(loc("cheats_unlockAllMissions_ok"));
|
toast(loc("cheats_unlockAllMissions_ok"));
|
||||||
}
|
}
|
||||||
|
|
||||||
async function doUnlockAllProfitTakerStages() {
|
async function unlockAllProfitTakerStages() {
|
||||||
await revalidateAuthz();
|
await revalidateAuthz();
|
||||||
await fetch("/custom/unlockAllProfitTakerStages?" + window.authz);
|
await fetch("/custom/unlockAllProfitTakerStages?" + window.authz);
|
||||||
toast(loc("cheats_unlockSucc"));
|
toast(loc("cheats_unlockSucc"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function unlockAllSimarisResearchEntries() {
|
||||||
|
await revalidateAuthz();
|
||||||
|
await fetch("/custom/unlockAllSimarisResearchEntries?" + window.authz);
|
||||||
|
toast(loc("cheats_unlockSucc"));
|
||||||
|
}
|
||||||
|
|
||||||
const importSamples = {
|
const importSamples = {
|
||||||
maxFocus: {
|
maxFocus: {
|
||||||
FocusUpgrades: [
|
FocusUpgrades: [
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user