forked from OpenWF/SpaceNinjaServer
		
	chore: move unlockAllSimarisResearchEntries to a per-account button (#2726)
Closes #2725. Re #2361. Reviewed-on: OpenWF/SpaceNinjaServer#2726 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									a0bac12e95
								
							
						
					
					
						commit
						662d824369
					
				@ -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;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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 { addMissingHelminthBlueprintsController } from "../controllers/custom/addMissingHelminthBlueprintsController.ts";
 | 
			
		||||
import { unlockAllProfitTakerStagesController } from "../controllers/custom/unlockAllProfitTakerStagesController.ts";
 | 
			
		||||
import { unlockAllSimarisResearchEntriesController } from "../controllers/custom/unlockAllSimarisResearchEntriesController.ts";
 | 
			
		||||
 | 
			
		||||
import { abilityOverrideController } from "../controllers/custom/abilityOverrideController.ts";
 | 
			
		||||
import { createAccountController } from "../controllers/custom/createAccountController.ts";
 | 
			
		||||
@ -50,6 +51,7 @@ customRouter.get("/webuiFileChangeDetected", webuiFileChangeDetectedController);
 | 
			
		||||
customRouter.get("/completeAllMissions", completeAllMissionsController);
 | 
			
		||||
customRouter.get("/addMissingHelminthBlueprints", addMissingHelminthBlueprintsController);
 | 
			
		||||
customRouter.get("/unlockAllProfitTakerStages", unlockAllProfitTakerStagesController);
 | 
			
		||||
customRouter.get("/unlockAllSimarisResearchEntries", unlockAllSimarisResearchEntriesController);
 | 
			
		||||
 | 
			
		||||
customRouter.post("/abilityOverride", abilityOverrideController);
 | 
			
		||||
customRouter.post("/createAccount", createAccountController);
 | 
			
		||||
 | 
			
		||||
@ -4,7 +4,7 @@ import { repoDir } from "../helpers/pathHelper.ts";
 | 
			
		||||
import { args } from "../helpers/commandLineArguments.ts";
 | 
			
		||||
import { Inbox } from "../models/inboxModel.ts";
 | 
			
		||||
 | 
			
		||||
export interface IConfig extends IConfigRemovedOptions {
 | 
			
		||||
export interface IConfig {
 | 
			
		||||
    mongodbUrl: string;
 | 
			
		||||
    logger: {
 | 
			
		||||
        files: boolean;
 | 
			
		||||
@ -33,7 +33,6 @@ export interface IConfig extends IConfigRemovedOptions {
 | 
			
		||||
    noDojoResearchCosts?: boolean;
 | 
			
		||||
    noDojoResearchTime?: boolean;
 | 
			
		||||
    fastClanAscension?: boolean;
 | 
			
		||||
    unlockAllSimarisResearchEntries?: boolean;
 | 
			
		||||
    spoofMasteryRank?: number;
 | 
			
		||||
    relicRewardItemCountMultiplier?: number;
 | 
			
		||||
    nightwaveStandingMultiplier?: number;
 | 
			
		||||
@ -105,6 +104,7 @@ export const configRemovedOptionsKeys = [
 | 
			
		||||
    "unlockExilusEverywhere",
 | 
			
		||||
    "unlockArcanesEverywhere",
 | 
			
		||||
    "unlockAllProfitTakerStages",
 | 
			
		||||
    "unlockAllSimarisResearchEntries",
 | 
			
		||||
    "noDailyStandingLimits",
 | 
			
		||||
    "noDailyFocusLimit",
 | 
			
		||||
    "noArgonCrystalDecay",
 | 
			
		||||
@ -123,11 +123,7 @@ export const configRemovedOptionsKeys = [
 | 
			
		||||
    "flawlessRelicsAlwaysGiveSilverReward",
 | 
			
		||||
    "radiantRelicsAlwaysGiveGoldReward",
 | 
			
		||||
    "disableDailyTribute"
 | 
			
		||||
] as const;
 | 
			
		||||
 | 
			
		||||
type IConfigRemovedOptions = {
 | 
			
		||||
    [K in (typeof configRemovedOptionsKeys)[number]]?: boolean;
 | 
			
		||||
};
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export const configPath = path.join(repoDir, args.configPath ?? "config.json");
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,13 @@
 | 
			
		||||
import chokidar from "chokidar";
 | 
			
		||||
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 { getWebPorts, startWebServer, stopWebServer } from "./webService.ts";
 | 
			
		||||
import { sendWsBroadcast } from "./wsService.ts";
 | 
			
		||||
@ -35,9 +42,11 @@ chokidar.watch(configPath).on("change", () => {
 | 
			
		||||
export const validateConfig = (): void => {
 | 
			
		||||
    let modified = false;
 | 
			
		||||
    for (const key of configRemovedOptionsKeys) {
 | 
			
		||||
        if (config[key] !== undefined) {
 | 
			
		||||
            logger.debug(`Spotted removed option ${key} with value ${config[key]} in config.json.`);
 | 
			
		||||
            delete config[key];
 | 
			
		||||
        if (config[key as keyof IConfig] !== undefined) {
 | 
			
		||||
            logger.debug(
 | 
			
		||||
                `Spotted removed option ${key} with value ${String(config[key as keyof IConfig])} in config.json.`
 | 
			
		||||
            );
 | 
			
		||||
            delete config[key as keyof IConfig];
 | 
			
		||||
            modified = true;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -799,10 +799,6 @@
 | 
			
		||||
                                    <input class="form-check-input" type="checkbox" id="radiantRelicsAlwaysGiveGoldReward" />
 | 
			
		||||
                                    <label class="form-check-label" for="radiantRelicsAlwaysGiveGoldReward" data-loc="cheats_radiantRelicsAlwaysGiveGoldReward"></label>
 | 
			
		||||
                                </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">
 | 
			
		||||
                                    <input class="form-check-input" type="checkbox" id="disableDailyTribute" />
 | 
			
		||||
                                    <label class="form-check-label" for="disableDailyTribute" data-loc="cheats_disableDailyTribute"></label>
 | 
			
		||||
@ -812,14 +808,15 @@
 | 
			
		||||
                                    <label class="form-check-label" for="finishInvasionsInOneMission" data-loc="cheats_finishInvasionsInOneMission"></label>
 | 
			
		||||
                                </div>
 | 
			
		||||
                                <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="doUnlockAllFocusSchools();" data-loc="cheats_unlockAllFocusSchools"></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="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(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>
 | 
			
		||||
                                <form class="mt-2" onsubmit="doChangeSupportedSyndicate(); return false;">
 | 
			
		||||
                                    <label class="form-label" for="changeSyndicate" data-loc="cheats_changeSupportedSyndicate"></label>
 | 
			
		||||
 | 
			
		||||
@ -2750,18 +2750,24 @@ async function doMaxPlexus() {
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function doUnlockAllMissions() {
 | 
			
		||||
async function unlockAllMissions() {
 | 
			
		||||
    await revalidateAuthz();
 | 
			
		||||
    await fetch("/custom/completeAllMissions?" + window.authz);
 | 
			
		||||
    toast(loc("cheats_unlockAllMissions_ok"));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function doUnlockAllProfitTakerStages() {
 | 
			
		||||
async function unlockAllProfitTakerStages() {
 | 
			
		||||
    await revalidateAuthz();
 | 
			
		||||
    await fetch("/custom/unlockAllProfitTakerStages?" + window.authz);
 | 
			
		||||
    toast(loc("cheats_unlockSucc"));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function unlockAllSimarisResearchEntries() {
 | 
			
		||||
    await revalidateAuthz();
 | 
			
		||||
    await fetch("/custom/unlockAllSimarisResearchEntries?" + window.authz);
 | 
			
		||||
    toast(loc("cheats_unlockSucc"));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const importSamples = {
 | 
			
		||||
    maxFocus: {
 | 
			
		||||
        FocusUpgrades: [
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user