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

XFESpaceNinjaServer

A simple server for a small space ninja game

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

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

代码差异

6 个文件 +56 -78
Modified src/controllers/api/crewShipIdentifySalvageController.ts +1 -8
@@ -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 = [
Modified src/controllers/api/focusController.ts +7 -6
@@ -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]);
Modified src/controllers/api/guildTechController.ts +3 -10
@@ -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
Modified src/controllers/api/modularWeaponCraftingController.ts +4 -2
@@ -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)
Modified src/controllers/api/modularWeaponSaleController.ts +12 -18
@@ -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 };
Modified src/services/inventoryService.ts +29 -34
@@ -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] ??= [];