XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

SpaceNinjaServer

A simple server for a small space ninja game

公开
关注 0 Fork 1 Star 0
返回提交历史

XFEstudio/SpaceNinjaServer

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
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

4 个文件 +31 -12
Modified src/controllers/api/modularWeaponCraftingController.ts +1 -1
@@ -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,
Modified src/controllers/api/modularWeaponSaleController.ts +4 -2
@@ -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,
Modified src/services/inventoryService.ts +23 -8
@@ -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 = [
Modified src/types/purchaseTypes.ts +3 -1
@@ -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<