返回提交历史
Modified
src/controllers/api/modularWeaponCraftingController.ts
+1
-1
Modified
src/controllers/api/modularWeaponSaleController.ts
+4
-2
Modified
src/services/inventoryService.ts
+23
-8
Modified
src/types/purchaseTypes.ts
+3
-1
XFEstudio/XFESpaceNinjaServer
fix: apply defaultUpgrades for acquisition of normal weapons (#3136)
Closes #3135 Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/3136 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
943031fe
代码差异
4 个文件
+31
-12
@@ -154,7 +154,7 @@ export const modularWeaponCraftingController: RequestHandler = async (req, res)
154
154
);
155
155
}
156
156
}
157
defaultOverwrites.Configs = applyDefaultUpgrades(inventory, defaultUpgrades);
157
defaultOverwrites.Configs = applyDefaultUpgrades(inventory, defaultUpgrades, inventoryChanges);
158
158
addEquipment(inventory, category, data.WeaponType, defaultOverwrites, inventoryChanges);
159
159
combineInventoryChanges(
160
160
inventoryChanges,
@@ -45,8 +45,10 @@ export const modularWeaponSaleController: RequestHandler = async (req, res) => {
45
45
.Weapons[payload.ItemIndex];
46
46
const category = modularWeaponTypes[weaponInfo.ItemType];
47
47
const defaultUpgrades = getDefaultUpgrades(weaponInfo.ModularParts);
48
const configs = applyDefaultUpgrades(inventory, defaultUpgrades);
49
const inventoryChanges: IInventoryChanges = {
48
let inventoryChanges: IInventoryChanges = {};
49
const configs = applyDefaultUpgrades(inventory, defaultUpgrades, inventoryChanges);
50
inventoryChanges = {
51
...inventoryChanges,
50
52
...addEquipment(inventory, category, weaponInfo.ItemType, {
51
53
Features: EquipmentFeatures.DOUBLE_CAPACITY | EquipmentFeatures.GILDED,
52
54
ItemName: payload.ItemName,
@@ -179,7 +179,7 @@ export const addStartingGear = async (
179
179
const inventoryChanges: IInventoryChanges = {};
180
180
addEquipment(inventory, "LongGuns", LongGuns[0].ItemType, { IsNew: false }, inventoryChanges);
181
181
addEquipment(inventory, "Pistols", Pistols[0].ItemType, { IsNew: false }, inventoryChanges);
182
addEquipment(inventory, "Melee", Melee[0].ItemType, { IsNew: false }, inventoryChanges);
182
combineInventoryChanges(inventoryChanges, await addItem(inventory, Melee[0].ItemType)); // defaultUpgrades need to respected because as of U38.5, Skana & Bo come with stances by default.
183
183
await addPowerSuit(inventory, Suits[0].ItemType, { IsNew: false }, inventoryChanges);
184
184
addEquipment(
185
185
inventory,
@@ -601,7 +601,9 @@ export const addItem = async (
601
601
defaultOverwrites.UpgradeFingerprint = JSON.stringify(targetFingerprintObj.UpgradeFingerprint);
602
602
defaultOverwrites.ItemName = targetFingerprintObj.Name;
603
603
}
604
const inventoryChanges = addEquipment(inventory, weapon.productCategory, typeName, defaultOverwrites);
604
const inventoryChanges: IInventoryChanges = {};
605
defaultOverwrites.Configs = applyDefaultUpgrades(inventory, weapon.defaultUpgrades, inventoryChanges);
606
addEquipment(inventory, weapon.productCategory, typeName, defaultOverwrites, inventoryChanges);
605
607
if (weapon.additionalItems) {
606
608
for (const item of weapon.additionalItems) {
607
609
combineInventoryChanges(inventoryChanges, await addItem(inventory, item, 1));
@@ -622,10 +624,11 @@ export const addItem = async (
622
624
}
623
625
const targetFingerprintObj = JSON.parse(targetFingerprint) as INemesisPetTargetFingerprint;
624
626
const head = targetFingerprintObj.Parts[0];
627
const inventoryChanges: IInventoryChanges = {};
625
628
const defaultOverwrites: Partial<IEquipmentDatabase> = {
626
629
ModularParts: targetFingerprintObj.Parts,
627
630
ItemName: targetFingerprintObj.Name,
628
Configs: applyDefaultUpgrades(inventory, ExportWeapons[head].defaultUpgrades)
631
Configs: applyDefaultUpgrades(inventory, ExportWeapons[head].defaultUpgrades, inventoryChanges)
629
632
};
630
633
const itemType = {
631
634
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetParts/ZanukaPetPartHeadA":
@@ -636,6 +639,7 @@ export const addItem = async (
636
639
"/Lotus/Types/Friendly/Pets/ZanukaPets/ZanukaPetCPowerSuit"
637
640
}[head] as string;
638
641
return {
642
...inventoryChanges,
639
643
...addEquipment(inventory, "MoaPets", itemType, defaultOverwrites),
640
644
...occupySlot(inventory, InventorySlot.SENTINELS, premiumPurchase)
641
645
};
@@ -1019,7 +1023,8 @@ export const addItems = async (
1019
1023
1020
1024
export const applyDefaultUpgrades = (
1021
1025
inventory: TInventoryDatabaseDocument,
1022
defaultUpgrades: IDefaultUpgrade[] | undefined
1026
defaultUpgrades: IDefaultUpgrade[] | undefined,
1027
inventoryChanges: IInventoryChanges
1023
1028
): IItemConfigDatabase[] => {
1024
1029
const modsToGive: IRawUpgrade[] = [];
1025
1030
const configs: IItemConfigDatabase[] = [];
@@ -1038,7 +1043,13 @@ export const applyDefaultUpgrades = (
1038
1043
configs.push({ Upgrades: upgrades });
1039
1044
}
1040
1045
}
1041
addMods(inventory, modsToGive);
1046
if (modsToGive.length != 0) {
1047
addMods(inventory, modsToGive);
1048
inventoryChanges.RawUpgrades ??= [];
1049
for (const mod of modsToGive) {
1050
inventoryChanges.RawUpgrades.push(mod);
1051
}
1052
}
1042
1053
return configs;
1043
1054
};
1044
1055
@@ -1057,8 +1068,12 @@ const addSentinel = (
1057
1068
addSentinelWeapon(inventory, ExportSentinels[sentinelName].defaultWeapon, premiumPurchase, inventoryChanges);
1058
1069
}
1059
1070
1060
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
1061
const configs: IItemConfig[] = applyDefaultUpgrades(inventory, ExportSentinels[sentinelName]?.defaultUpgrades);
1071
const configs: IItemConfig[] = applyDefaultUpgrades(
1072
inventory,
1073
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
1074
ExportSentinels[sentinelName]?.defaultUpgrades,
1075
inventoryChanges
1076
);
1062
1077
1063
1078
const sentinelIndex =
1064
1079
inventory.Sentinels.push({
@@ -1239,7 +1254,7 @@ export const addKubrowPet = (
1239
1254
addSpecialItem(inventory, specialItem, inventoryChanges);
1240
1255
}
1241
1256
1242
const configs: IItemConfig[] = applyDefaultUpgrades(inventory, kubrowPet?.defaultUpgrades);
1257
const configs: IItemConfig[] = applyDefaultUpgrades(inventory, kubrowPet?.defaultUpgrades, inventoryChanges);
1243
1258
1244
1259
if (!details) {
1245
1260
const isCatbrow = [
@@ -10,7 +10,8 @@ import type {
10
10
ICrewMemberClient,
11
11
IKubrowPetPrintClient,
12
12
IUpgradeClient,
13
IQuestKeyClient
13
IQuestKeyClient,
14
IRawUpgrade
14
15
} from "./inventoryTypes/inventoryTypes.ts";
15
16
16
17
export enum PurchaseSource {
@@ -83,6 +84,7 @@ export type IInventoryChanges = {
83
84
RecentVendorPurchases?: IRecentVendorPurchaseClient; // < 38.5.0
84
85
CrewMembers?: ICrewMemberClient[];
85
86
KubrowPetPrints?: IKubrowPetPrintClient[];
87
RawUpgrades?: IRawUpgrade[];
86
88
Upgrades?: IUpgradeClient[]; // TOVERIFY
87
89
QuestKeys?: IQuestKeyClient[];
88
90
} & Record<