feat: unlock all captura scenes (#650)

This commit is contained in:
Sainan 2024-12-29 21:11:36 +01:00 committed by GitHub
parent 607ec836e9
commit 44b78ecfe8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 48 additions and 8 deletions

View File

@ -21,6 +21,7 @@
"unlockAllShipDecorations": true,
"unlockAllFlavourItems": true,
"unlockAllSkins": true,
"unlockAllCapturaScenes": true,
"universalPolarityEverywhere": true,
"spoofMasteryRank": -1
}

8
package-lock.json generated
View File

@ -12,7 +12,7 @@
"copyfiles": "^2.4.1",
"express": "^5",
"mongoose": "^8.9.2",
"warframe-public-export-plus": "^0.5.15",
"warframe-public-export-plus": "^0.5.16",
"warframe-riven-info": "^0.1.2",
"winston": "^3.17.0",
"winston-daily-rotate-file": "^5.0.0"
@ -3877,9 +3877,9 @@
}
},
"node_modules/warframe-public-export-plus": {
"version": "0.5.15",
"resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.5.15.tgz",
"integrity": "sha512-xsMgj1+lB2VPDCLuU88YsbwQiGQT5cNgjgNTk1iKx2ZpX31fu19tflTWrTHEJbSnqxuh/8h2LP5ZpBZV0a9fCg=="
"version": "0.5.16",
"resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.5.16.tgz",
"integrity": "sha512-4Mgng3ojWfF0mffZDKQLwrKx6qHty7o35F5+nCDmSal1TzjeEclJCSgoMgdAO0e+Ug/lTP7FSiIXcU4SDk3gsw=="
},
"node_modules/warframe-riven-info": {
"version": "0.1.2",

View File

@ -16,7 +16,7 @@
"copyfiles": "^2.4.1",
"express": "^5",
"mongoose": "^8.9.2",
"warframe-public-export-plus": "^0.5.15",
"warframe-public-export-plus": "^0.5.16",
"warframe-riven-info": "^0.1.2",
"winston": "^3.17.0",
"winston-daily-rotate-file": "^5.0.0"

View File

@ -7,9 +7,16 @@ import allDialogue from "@/static/fixed_responses/allDialogue.json";
import { ILoadoutDatabase } from "@/src/types/saveLoadoutTypes";
import { IShipInventory, equipmentKeys } from "@/src/types/inventoryTypes/inventoryTypes";
import { IPolarity, ArtifactPolarity } from "@/src/types/inventoryTypes/commonInventoryTypes";
import { ExportCustoms, ExportFlavour, ExportKeys, ExportRegions, ExportResources } from "warframe-public-export-plus";
import {
ExportCustoms,
ExportFlavour,
ExportKeys,
ExportRegions,
ExportResources,
ExportVirtuals
} from "warframe-public-export-plus";
const inventoryController: RequestHandler = async (request, response) => {
export const inventoryController: RequestHandler = async (request, response) => {
let account;
try {
account = await getAccountForRequest(request);
@ -152,6 +159,17 @@ const inventoryController: RequestHandler = async (request, response) => {
}
}
if (config.unlockAllCapturaScenes) {
for (const uniqueName of Object.keys(ExportResources)) {
if (resourceInheritsFrom(uniqueName, "/Lotus/Types/Items/MiscItems/PhotoboothTile")) {
inventoryResponse.MiscItems.push({
ItemType: uniqueName,
ItemCount: 1
});
}
}
}
if (typeof config.spoofMasteryRank === "number" && config.spoofMasteryRank >= 0) {
inventoryResponse.PlayerLevel = config.spoofMasteryRank;
if (!("xpBasedLevelCapDisabled" in request.query)) {
@ -206,4 +224,19 @@ const getExpRequiredForMr = (rank: number): number => {
return 2_250_000 + 147_500 * (rank - 30);
};
export { inventoryController };
const resourceInheritsFrom = (resourceName: string, targetName: string): boolean => {
let parentName = resourceGetParent(resourceName);
for (; parentName != undefined; parentName = resourceGetParent(parentName)) {
if (parentName == targetName) {
return true;
}
}
return false;
};
const resourceGetParent = (resourceName: string): string | undefined => {
if (resourceName in ExportResources) {
return ExportResources[resourceName].parentName;
}
return ExportVirtuals[resourceName]?.parentName;
};

View File

@ -46,6 +46,7 @@ interface IConfig {
unlockAllShipDecorations?: boolean;
unlockAllFlavourItems?: boolean;
unlockAllSkins?: boolean;
unlockAllCapturaScenes?: boolean;
universalPolarityEverywhere?: boolean;
spoofMasteryRank?: number;
}

View File

@ -253,6 +253,10 @@
<input class="form-check-input" type="checkbox" id="unlockAllSkins" />
<label class="form-check-label" for="unlockAllSkins">Unlock All Skins</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" id="unlockAllCapturaScenes" />
<label class="form-check-label" for="unlockAllCapturaScenes">Unlock All Captura Scenes</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" id="universalPolarityEverywhere" />
<label class="form-check-label" for="universalPolarityEverywhere">

View File

@ -804,6 +804,7 @@ const uiConfigs = [
"unlockAllShipDecorations",
"unlockAllFlavourItems",
"unlockAllSkins",
"unlockAllCapturaScenes",
"universalPolarityEverywhere",
"spoofMasteryRank"
];