forked from OpenWF/SpaceNinjaServer
add warning for other loadouts with skins
This commit is contained in:
parent
a31e293a6e
commit
4f2d636a4a
@ -5,7 +5,7 @@ import { Inventory } from "../../models/inventoryModels/inventoryModel.ts";
|
|||||||
import { config } from "../../services/configService.ts";
|
import { config } from "../../services/configService.ts";
|
||||||
import allDialogue from "../../../static/fixed_responses/allDialogue.json" with { type: "json" };
|
import allDialogue from "../../../static/fixed_responses/allDialogue.json" with { type: "json" };
|
||||||
import type { ILoadoutDatabase } from "../../types/saveLoadoutTypes.ts";
|
import type { ILoadoutDatabase } from "../../types/saveLoadoutTypes.ts";
|
||||||
import type { IInventoryClient, IShipInventory } from "../../types/inventoryTypes/inventoryTypes.ts";
|
import type { IInventoryClient, IShipInventory, IWeaponSkinClient } from "../../types/inventoryTypes/inventoryTypes.ts";
|
||||||
import { equipmentKeys } from "../../types/inventoryTypes/inventoryTypes.ts";
|
import { equipmentKeys } from "../../types/inventoryTypes/inventoryTypes.ts";
|
||||||
import type { IPolarity } from "../../types/inventoryTypes/commonInventoryTypes.ts";
|
import type { IPolarity } from "../../types/inventoryTypes/commonInventoryTypes.ts";
|
||||||
import { ArtifactPolarity } from "../../types/inventoryTypes/commonInventoryTypes.ts";
|
import { ArtifactPolarity } from "../../types/inventoryTypes/commonInventoryTypes.ts";
|
||||||
@ -333,43 +333,28 @@ export const getInventoryResponse = async (
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const skinLookupTable: Record<number, string> = {};
|
|
||||||
for (const key of Object.keys(ExportCustoms)) {
|
|
||||||
skinLookupTable[catBreadHash(key)] = key;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (const key of equipmentKeys) {
|
for (const key of equipmentKeys) {
|
||||||
if (key in inventoryResponse) {
|
if (key in inventoryResponse) {
|
||||||
for (const equipment of inventoryResponse[key]) {
|
for (const equipment of inventoryResponse[key]) {
|
||||||
for (const config of equipment.Configs) {
|
equipment.Configs.forEach(config => {
|
||||||
if (config.Skins) {
|
if (config.Skins) processSkins(config.Skins, inventoryResponse.WeaponSkins, equipment.ItemType);
|
||||||
for (let i = 0; i < config.Skins.length; i++) {
|
});
|
||||||
const skinId: string = config.Skins[i];
|
|
||||||
if (skinId.substring(0, 16) === "ca70ca70ca70ca70") {
|
|
||||||
const skinItemType = skinLookupTable[parseInt(skinId.substring(16), 16)];
|
|
||||||
const inventoryItem = inventoryResponse.WeaponSkins.find(
|
|
||||||
x => x.ItemType == skinItemType
|
|
||||||
);
|
|
||||||
|
|
||||||
if (inventoryItem) {
|
|
||||||
config.Skins[i] = inventoryItem.ItemId.$oid;
|
|
||||||
} else {
|
|
||||||
config.Skins[i] = skinItemType;
|
|
||||||
if (!ExportCustoms[skinItemType].alwaysAvailable) {
|
|
||||||
logger.warn(
|
|
||||||
`Get ${skinItemType} or you may loose your appearance on ${equipment.ItemType}`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (const key of ["AdultOperatorLoadOuts", "OperatorLoadOuts", "KahlLoadOuts"] as const) {
|
||||||
|
if (key in inventoryResponse) {
|
||||||
|
inventoryResponse[key].forEach(loadOut => {
|
||||||
|
if (loadOut.Skins) processSkins(loadOut.Skins, inventoryResponse.WeaponSkins, key);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inventoryResponse.LotusCustomization?.Skins) {
|
||||||
|
processSkins(inventoryResponse.LotusCustomization.Skins, inventoryResponse.WeaponSkins, "LotusCustomization");
|
||||||
|
}
|
||||||
|
|
||||||
if (typeof config.spoofMasteryRank === "number" && config.spoofMasteryRank >= 0) {
|
if (typeof config.spoofMasteryRank === "number" && config.spoofMasteryRank >= 0) {
|
||||||
inventoryResponse.PlayerLevel = config.spoofMasteryRank;
|
inventoryResponse.PlayerLevel = config.spoofMasteryRank;
|
||||||
if (!xpBasedLevelCapDisabled) {
|
if (!xpBasedLevelCapDisabled) {
|
||||||
@ -496,3 +481,26 @@ const getExpRequiredForMr = (rank: number): number => {
|
|||||||
}
|
}
|
||||||
return 2_250_000 + 147_500 * (rank - 30);
|
return 2_250_000 + 147_500 * (rank - 30);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const skinLookupTable: Record<number, string> = {};
|
||||||
|
for (const key of Object.keys(ExportCustoms)) {
|
||||||
|
skinLookupTable[catBreadHash(key)] = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
const processSkins = (skins: string[], weaponSKins: IWeaponSkinClient[], contextName: string): void => {
|
||||||
|
skins.forEach((skinId, i) => {
|
||||||
|
if (skinId.startsWith("ca70ca70ca70ca70")) {
|
||||||
|
const skinItemType = skinLookupTable[parseInt(skinId.slice(16), 16)];
|
||||||
|
const inventoryItem = weaponSKins.find(x => x.ItemType === skinItemType);
|
||||||
|
|
||||||
|
if (inventoryItem) {
|
||||||
|
skins[i] = inventoryItem.ItemId.$oid;
|
||||||
|
} else {
|
||||||
|
skins[i] = skinItemType;
|
||||||
|
if (!ExportCustoms[skinItemType].alwaysAvailable) {
|
||||||
|
logger.warn(`Get ${skinItemType} or you may loose your appearance on ${contextName}`);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user