返回提交历史
Modified
src/controllers/api/crewShipIdentifySalvageController.ts
+1
-8
Modified
src/controllers/api/focusController.ts
+7
-6
Modified
src/controllers/api/guildTechController.ts
+3
-10
Modified
src/controllers/api/modularWeaponCraftingController.ts
+4
-2
Modified
src/controllers/api/modularWeaponSaleController.ts
+12
-18
Modified
src/services/inventoryService.ts
+29
-34
XFEstudio/XFESpaceNinjaServer
fix: don't set IsNew flag for starting gear (#1859)
Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/1859 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
75c011e3
代码差异
6 个文件
+56
-78
@@ -62,14 +62,7 @@ export const crewShipIdentifySalvageController: RequestHandler = async (req, res
62
62
} satisfies IInnateDamageFingerprint)
63
63
};
64
64
}
65
addEquipment(
66
inventory,
67
"CrewShipSalvagedWeapons",
68
payload.ItemType,
69
undefined,
70
inventoryChanges,
71
defaultOverwrites
72
);
65
addEquipment(inventory, "CrewShipSalvagedWeapons", payload.ItemType, defaultOverwrites, inventoryChanges);
73
66
}
74
67
75
68
inventoryChanges.CrewShipRawSalvage = [
@@ -104,13 +104,14 @@ export const focusController: RequestHandler = async (req, res) => {
104
104
}
105
105
case FocusOperation.SentTrainingAmplifier: {
106
106
const request = JSON.parse(String(req.body)) as ISentTrainingAmplifierRequest;
107
const parts: string[] = [
108
"/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingGrip",
109
"/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingChassis",
110
"/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingBarrel"
111
];
112
107
const inventory = await getInventory(accountId);
113
const inventoryChanges = addEquipment(inventory, "OperatorAmps", request.StartingWeaponType, parts);
108
const inventoryChanges = addEquipment(inventory, "OperatorAmps", request.StartingWeaponType, {
109
ModularParts: [
110
"/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingGrip",
111
"/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingChassis",
112
"/Lotus/Weapons/Sentients/OperatorAmplifiers/SentTrainingAmplifier/SentAmpTrainingBarrel"
113
]
114
});
114
115
occupySlot(inventory, InventorySlot.AMPS, false);
115
116
await inventory.save();
116
117
res.json((inventoryChanges.OperatorAmps as IEquipmentClient[])[0]);
@@ -441,16 +441,9 @@ const finishComponentRepair = (
441
441
const inventoryChanges = {
442
442
...(category == "CrewShipWeaponSkins"
443
443
? addCrewShipWeaponSkin(inventory, salvageItem.ItemType, salvageItem.UpgradeFingerprint)
444
: addEquipment(
445
inventory,
446
category,
447
salvageItem.ItemType,
448
undefined,
449
{},
450
{
451
UpgradeFingerprint: salvageItem.UpgradeFingerprint
452
}
453
)),
444
: addEquipment(inventory, category, salvageItem.ItemType, {
445
UpgradeFingerprint: salvageItem.UpgradeFingerprint
446
})),
454
447
...occupySlot(inventory, InventorySlot.RJ_COMPONENT_AND_ARMAMENTS, false)
455
448
};
456
449
@@ -36,7 +36,9 @@ export const modularWeaponCraftingController: RequestHandler = async (req, res)
36
36
const inventory = await getInventory(accountId);
37
37
38
38
let defaultUpgrades: IDefaultUpgrade[] | undefined;
39
const defaultOverwrites: Partial<IEquipmentDatabase> = {};
39
const defaultOverwrites: Partial<IEquipmentDatabase> = {
40
ModularParts: data.Parts
41
};
40
42
const inventoryChanges: IInventoryChanges = {};
41
43
if (category == "KubrowPets") {
42
44
const traits = {
@@ -151,7 +153,7 @@ export const modularWeaponCraftingController: RequestHandler = async (req, res)
151
153
}
152
154
}
153
155
defaultOverwrites.Configs = applyDefaultUpgrades(inventory, defaultUpgrades);
154
addEquipment(inventory, category, data.WeaponType, data.Parts, inventoryChanges, defaultOverwrites);
156
addEquipment(inventory, category, data.WeaponType, defaultOverwrites, inventoryChanges);
155
157
combineInventoryChanges(
156
158
inventoryChanges,
157
159
occupySlot(inventory, productCategoryToInventoryBin(category)!, !!data.isWebUi)
@@ -45,24 +45,18 @@ export const modularWeaponSaleController: RequestHandler = async (req, res) => {
45
45
const defaultUpgrades = getDefaultUpgrades(weaponInfo.ModularParts);
46
46
const configs = applyDefaultUpgrades(inventory, defaultUpgrades);
47
47
const inventoryChanges: IInventoryChanges = {
48
...addEquipment(
49
inventory,
50
category,
51
weaponInfo.ItemType,
52
weaponInfo.ModularParts,
53
{},
54
{
55
Features: EquipmentFeatures.DOUBLE_CAPACITY | EquipmentFeatures.GILDED,
56
ItemName: payload.ItemName,
57
Configs: configs,
58
Polarity: [
59
{
60
Slot: payload.PolarizeSlot,
61
Value: payload.PolarizeValue
62
}
63
]
64
}
65
),
48
...addEquipment(inventory, category, weaponInfo.ItemType, {
49
Features: EquipmentFeatures.DOUBLE_CAPACITY | EquipmentFeatures.GILDED,
50
ItemName: payload.ItemName,
51
Configs: configs,
52
ModularParts: weaponInfo.ModularParts,
53
Polarity: [
54
{
55
Slot: payload.PolarizeSlot,
56
Value: payload.PolarizeValue
57
}
58
]
59
}),
66
60
...occupySlot(inventory, productCategoryToInventoryBin(category)!, true),
67
61
...updateCurrency(inventory, weaponInfo.PremiumPrice, true)
68
62
};
@@ -154,23 +154,22 @@ export const addStartingGear = async (
154
154
155
155
//TODO: properly merge weapon bin changes it is currently static here
156
156
const inventoryChanges: IInventoryChanges = {};
157
addEquipment(inventory, "LongGuns", LongGuns[0].ItemType, undefined, inventoryChanges);
158
addEquipment(inventory, "Pistols", Pistols[0].ItemType, undefined, inventoryChanges);
159
addEquipment(inventory, "Melee", Melee[0].ItemType, undefined, inventoryChanges);
160
await addPowerSuit(inventory, Suits[0].ItemType, inventoryChanges);
157
addEquipment(inventory, "LongGuns", LongGuns[0].ItemType, { IsNew: false }, inventoryChanges);
158
addEquipment(inventory, "Pistols", Pistols[0].ItemType, { IsNew: false }, inventoryChanges);
159
addEquipment(inventory, "Melee", Melee[0].ItemType, { IsNew: false }, inventoryChanges);
160
await addPowerSuit(inventory, Suits[0].ItemType, { IsNew: false }, inventoryChanges);
161
161
addEquipment(
162
162
inventory,
163
163
"DataKnives",
164
164
"/Lotus/Weapons/Tenno/HackingDevices/TnHackingDevice/TnHackingDeviceWeapon",
165
undefined,
166
inventoryChanges,
167
{ XP: 450_000 }
165
{ XP: 450_000, IsNew: false },
166
inventoryChanges
168
167
);
169
168
addEquipment(
170
169
inventory,
171
170
"Scoops",
172
171
"/Lotus/Weapons/Tenno/Speedball/SpeedballWeaponTest",
173
undefined,
172
{ IsNew: false },
174
173
inventoryChanges
175
174
);
176
175
@@ -531,14 +530,7 @@ export const addItem = async (
531
530
]
532
531
});
533
532
}
534
const inventoryChanges = addEquipment(
535
inventory,
536
weapon.productCategory,
537
typeName,
538
[],
539
{},
540
defaultOverwrites
541
);
533
const inventoryChanges = addEquipment(inventory, weapon.productCategory, typeName, defaultOverwrites);
542
534
if (weapon.additionalItems) {
543
535
for (const item of weapon.additionalItems) {
544
536
combineInventoryChanges(inventoryChanges, await addItem(inventory, item, 1));
@@ -639,12 +631,9 @@ export const addItem = async (
639
631
switch (typeName.substr(1).split("/")[2]) {
640
632
default: {
641
633
return {
642
...(await addPowerSuit(
643
inventory,
644
typeName,
645
{},
646
premiumPurchase ? EquipmentFeatures.DOUBLE_CAPACITY : undefined
647
)),
634
...(await addPowerSuit(inventory, typeName, {
635
Features: premiumPurchase ? EquipmentFeatures.DOUBLE_CAPACITY : undefined
636
})),
648
637
...occupySlot(inventory, InventorySlot.SUITS, premiumPurchase)
649
638
};
650
639
}
@@ -864,8 +853,8 @@ const addSentinelWeapon = (
864
853
export const addPowerSuit = async (
865
854
inventory: TInventoryDatabaseDocument,
866
855
powersuitName: string,
867
inventoryChanges: IInventoryChanges = {},
868
features?: number
856
defaultOverwrites?: Partial<IEquipmentDatabase>,
857
inventoryChanges: IInventoryChanges = {}
869
858
): Promise<IInventoryChanges> => {
870
859
const powersuit = ExportWarframes[powersuitName] as IPowersuit | undefined;
871
860
const exalted = powersuit?.exalted ?? [];
@@ -879,15 +868,20 @@ export const addPowerSuit = async (
879
868
}
880
869
}
881
870
}
882
const suitIndex =
883
inventory.Suits.push({
871
const suit: Omit<IEquipmentDatabase, "_id"> = Object.assign(
872
{
884
873
ItemType: powersuitName,
885
874
Configs: [],
886
875
UpgradeVer: 101,
887
876
XP: 0,
888
Features: features,
889
877
IsNew: true
890
}) - 1;
878
},
879
defaultOverwrites
880
);
881
if (!suit.IsNew) {
882
suit.IsNew = undefined;
883
}
884
const suitIndex = inventory.Suits.push(suit) - 1;
891
885
inventoryChanges.Suits ??= [];
892
886
inventoryChanges.Suits.push(inventory.Suits[suitIndex].toJSON<IEquipmentClient>());
893
887
return inventoryChanges;
@@ -1208,20 +1202,21 @@ export const addEquipment = (
1208
1202
inventory: TInventoryDatabaseDocument,
1209
1203
category: TEquipmentKey,
1210
1204
type: string,
1211
modularParts?: string[],
1212
inventoryChanges: IInventoryChanges = {},
1213
defaultOverwrites?: Partial<IEquipmentDatabase>
1205
defaultOverwrites?: Partial<IEquipmentDatabase>,
1206
inventoryChanges: IInventoryChanges = {}
1214
1207
): IInventoryChanges => {
1215
const equipment = Object.assign(
1208
const equipment: Omit<IEquipmentDatabase, "_id"> = Object.assign(
1216
1209
{
1217
1210
ItemType: type,
1218
1211
Configs: [],
1219
1212
XP: 0,
1220
ModularParts: modularParts,
1221
IsNew: category != "CrewShipWeapons" && category != "CrewShipSalvagedWeapons" ? true : undefined
1213
IsNew: category != "CrewShipWeapons" && category != "CrewShipSalvagedWeapons"
1222
1214
},
1223
1215
defaultOverwrites
1224
1216
);
1217
if (!equipment.IsNew) {
1218
equipment.IsNew = undefined;
1219
}
1225
1220
const index = inventory[category].push(equipment) - 1;
1226
1221
1227
1222
inventoryChanges[category] ??= [];