返回提交历史
Modified
src/controllers/api/inventoryController.ts
+27
-17
Modified
src/controllers/dynamic/getProfileViewingDataController.ts
+2
-2
Modified
src/types/saveLoadoutTypes.ts
+1
-1
XFEstudio/SpaceNinjaServer
fix: use fromOid in mapLegacyLoadoutConfig (#4098)
The recent refactor of getInventoryResponse made it so the oids are already in legacy format when this function is called, so the undocumented precondition of $oid format was unfulfilled. :( Closes #4096 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/4098 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
ede26f24
代码差异
3 个文件
+30
-20
@@ -1020,15 +1020,22 @@ const mapLegacyLoadoutConfig = (
1020
1020
buildLabel: string
1021
1021
): ILoadoutConfigClientLegacy | undefined => {
1022
1022
// Loadout config mapping for U15 and below
1023
const normPreset = loadoutPresets.NORMAL.find(x => x.ItemId.$oid == inventory.CurrentLoadOutIds[0].toString());
1023
const normPreset = loadoutPresets.NORMAL.find(x => inventory.CurrentLoadOutIds[0].equals(fromOid(x.ItemId)));
1024
1024
if (normPreset) {
1025
const s = normPreset.s?.ItemId?.$oid ? inventory.Suits.id(normPreset.s.ItemId.$oid) : null;
1026
const p = normPreset.p?.ItemId?.$oid ? inventory.Pistols.id(normPreset.p.ItemId.$oid) : null;
1027
const l = normPreset.l?.ItemId?.$oid ? inventory.LongGuns.id(normPreset.l.ItemId.$oid) : null;
1028
const m = normPreset.m?.ItemId?.$oid ? inventory.Melee.id(normPreset.m.ItemId.$oid) : null;
1025
const sId = normPreset.s?.ItemId && fromOid(normPreset.s.ItemId);
1026
const pId = normPreset.p?.ItemId && fromOid(normPreset.p.ItemId);
1027
const lId = normPreset.l?.ItemId && fromOid(normPreset.l.ItemId);
1028
const mId = normPreset.m?.ItemId && fromOid(normPreset.m.ItemId);
1029
const s = sId ? inventory.Suits.id(sId) : null;
1030
const p = pId ? inventory.Pistols.id(pId) : null;
1031
const l = lId ? inventory.LongGuns.id(lId) : null;
1032
const m = mId ? inventory.Melee.id(mId) : null;
1029
1033
const loadoutConfig = {
1030
1034
ItemId: {
1031
$id: version_compare(buildLabel, gameToBuildVersion["14.0.0"]) < 0 ? "Current" : normPreset.ItemId.$oid
1035
$id:
1036
version_compare(buildLabel, gameToBuildVersion["14.0.0"]) < 0
1037
? "Current"
1038
: fromOid(normPreset.ItemId)
1032
1039
},
1033
1040
Name: normPreset.n ?? "Default Loadout",
1034
1041
Presets: [
@@ -1077,14 +1084,14 @@ const mapLegacyLoadoutConfig = (
1077
1084
1078
1085
if (version_compare(buildLabel, "2013.03.18.00.00") >= 0) {
1079
1086
if (inventory.CurrentLoadOutIds.length > 1 && loadoutPresets.SENTINEL.length > 0) {
1080
const compPreset = loadoutPresets.SENTINEL.find(
1081
x => x.ItemId.$oid == inventory.CurrentLoadOutIds[1].toString()
1087
const compPreset = loadoutPresets.SENTINEL.find(x =>
1088
inventory.CurrentLoadOutIds[1].equals(fromOid(x.ItemId))
1082
1089
);
1083
1090
if (compPreset) {
1084
const s = compPreset.s?.ItemId?.$oid ? inventory.Sentinels.id(compPreset.s.ItemId.$oid) : null;
1085
const l = compPreset.l?.ItemId?.$oid
1086
? inventory.SentinelWeapons.id(compPreset.l.ItemId.$oid)
1087
: null;
1091
const sId = compPreset.s?.ItemId && fromOid(compPreset.s.ItemId);
1092
const lId = compPreset.l?.ItemId && fromOid(compPreset.l.ItemId);
1093
const s = sId ? inventory.Sentinels.id(sId) : null;
1094
const l = lId ? inventory.SentinelWeapons.id(lId) : null;
1088
1095
loadoutConfig.Presets.push(
1089
1096
{
1090
1097
ItemId: { $id: s?._id.toString() ?? "ffffffffffffffffffffffff" },
@@ -1140,13 +1147,16 @@ const mapLegacyLoadoutConfig = (
1140
1147
1141
1148
if (version_compare(buildLabel, gameToBuildVersion["15.0.0"]) >= 0) {
1142
1149
if (inventory.CurrentLoadOutIds.length > 2 && loadoutPresets.ARCHWING.length > 0) {
1143
const archPreset = loadoutPresets.ARCHWING.find(
1144
x => x.ItemId.$oid == inventory.CurrentLoadOutIds[2].toString()
1150
const archPreset = loadoutPresets.ARCHWING.find(x =>
1151
inventory.CurrentLoadOutIds[2].equals(fromOid(x.ItemId))
1145
1152
);
1146
1153
if (archPreset) {
1147
const s = archPreset.s?.ItemId?.$oid ? inventory.SpaceSuits.id(archPreset.s.ItemId.$oid) : null;
1148
const l = archPreset.l?.ItemId?.$oid ? inventory.SpaceGuns.id(archPreset.l.ItemId.$oid) : null;
1149
const m = archPreset.m?.ItemId?.$oid ? inventory.SpaceMelee.id(archPreset.m.ItemId.$oid) : null;
1154
const sId = normPreset.s?.ItemId && fromOid(normPreset.s.ItemId);
1155
const pId = normPreset.p?.ItemId && fromOid(normPreset.p.ItemId);
1156
const mId = normPreset.m?.ItemId && fromOid(normPreset.m.ItemId);
1157
const s = sId ? inventory.SpaceSuits.id(sId) : null;
1158
const l = pId ? inventory.SpaceGuns.id(pId) : null;
1159
const m = mId ? inventory.SpaceMelee.id(mId) : null;
1150
1160
loadoutConfig.Presets.push(
1151
1161
{
1152
1162
ItemId: { $id: s?._id.toString() ?? "ffffffffffffffffffffffff" },
@@ -7,7 +7,7 @@ import { Loadout } from "../../models/inventoryModels/loadoutModel.ts";
7
7
import { Account } from "../../models/loginModel.ts";
8
8
import { Stats } from "../../models/statsModel.ts";
9
9
import { allDailyAffiliationKeys } from "../../services/inventoryService.ts";
10
import type { IMongoDateWithLegacySupport, IOid, IOidWithLegacySupport } from "../../types/commonTypes.ts";
10
import type { IMongoDateWithLegacySupport, IOidWithLegacySupport } from "../../types/commonTypes.ts";
11
11
import type {
12
12
IAffiliation,
13
13
IAlignment,
@@ -249,7 +249,7 @@ interface IPlayerProfileViewingDataResult extends Partial<IDailyAffiliations>, I
249
249
AccountId: IOidWithLegacySupport;
250
250
DisplayName: string;
251
251
PlayerLevel: number;
252
LoadOutPreset?: Omit<ILoadoutConfigClient, "ItemId"> & { ItemId?: IOid };
252
LoadOutPreset?: Omit<ILoadoutConfigClient, "ItemId"> & { ItemId?: IOidWithLegacySupport };
253
253
LoadOutInventory: {
254
254
WeaponSkins: { ItemType: string }[];
255
255
Suits?: IEquipmentClient[];
@@ -143,7 +143,7 @@ export interface ILoadoutConfigClient {
143
143
m?: IEquipmentSelectionClient; // Melee weapon
144
144
h?: IEquipmentSelectionClient; // Gravimag weapon
145
145
a?: IEquipmentSelectionClient; // Necromech exalted weapon
146
ItemId: IOid;
146
ItemId: IOidWithLegacySupport;
147
147
Remove?: boolean; // when client wants to remove a config, it only includes ItemId & Remove.
148
148
}
149
149