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

chore: handle mods picked up in mission on U19 (#2042)

Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/2042 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>

b451c735
Sainan <63328889+Sainan@users.noreply.github.com>
提交于

代码差异

4 个文件 +28 -22
Modified src/controllers/api/artifactTransmutationController.ts +7 -17
@@ -1,9 +1,9 @@
1 import { toOid } from "@/src/helpers/inventoryHelpers";
1 import { fromOid, toOid } from "@/src/helpers/inventoryHelpers";
2 2 import { createVeiledRivenFingerprint, rivenRawToRealWeighted } from "@/src/helpers/rivenHelper";
3 3 import { addMiscItems, addMods, getInventory } from "@/src/services/inventoryService";
4 4 import { getAccountIdForRequest } from "@/src/services/loginService";
5 5 import { getRandomElement, getRandomWeightedReward, getRandomWeightedRewardUc } from "@/src/services/rngService";
6 import { IOid } from "@/src/types/commonTypes";
6 import { IUpgradeFromClient } from "@/src/types/inventoryTypes/inventoryTypes";
7 7 import { RequestHandler } from "express";
8 8 import { ExportBoosterPacks, ExportUpgrades, TRarity } from "warframe-public-export-plus";
9 9
@@ -24,7 +24,7 @@ export const artifactTransmutationController: RequestHandler = async (req, res)
24 24 ]);
25 25
26 26 payload.Consumed.forEach(upgrade => {
27 inventory.Upgrades.pull({ _id: upgrade.ItemId.$oid });
27 inventory.Upgrades.pull({ _id: fromOid(upgrade.ItemId) });
28 28 });
29 29
30 30 const rawRivenType = getRandomRawRivenType();
@@ -57,8 +57,8 @@ export const artifactTransmutationController: RequestHandler = async (req, res)
57 57 payload.Consumed.forEach(upgrade => {
58 58 const meta = ExportUpgrades[upgrade.ItemType];
59 59 counts[meta.rarity] += upgrade.ItemCount;
60 if (upgrade.ItemId.$oid != "000000000000000000000000") {
61 inventory.Upgrades.pull({ _id: upgrade.ItemId.$oid });
60 if (fromOid(upgrade.ItemId) != "000000000000000000000000") {
61 inventory.Upgrades.pull({ _id: fromOid(upgrade.ItemId) });
62 62 } else {
63 63 addMods(inventory, [
64 64 {
@@ -128,24 +128,14 @@ const getRandomRawRivenType = (): string => {
128 128 };
129 129
130 130 interface IArtifactTransmutationRequest {
131 Upgrade: IAgnosticUpgradeClient;
131 Upgrade: IUpgradeFromClient;
132 132 LevelDiff: number;
133 Consumed: IAgnosticUpgradeClient[];
133 Consumed: IUpgradeFromClient[];
134 134 Cost: number;
135 135 FusionPointCost: number;
136 136 RivenTransmute?: boolean;
137 137 }
138 138
139 interface IAgnosticUpgradeClient {
140 ItemType: string;
141 ItemId: IOid;
142 FromSKU: boolean;
143 UpgradeFingerprint: string;
144 PendingRerollFingerprint: string;
145 ItemCount: number;
146 LastAdded: IOid;
147 }
148
149 139 const specialModSets: string[][] = [
150 140 [
151 141 "/Lotus/Upgrades/Mods/Immortal/ImmortalOneMod",
Modified src/services/missionInventoryUpdateService.ts +8 -2
@@ -400,8 +400,14 @@ export const addMissionInventoryUpdates = async (
400 400 break;
401 401 case "Upgrades":
402 402 value.forEach(clientUpgrade => {
403 const upgrade = inventory.Upgrades.id(fromOid(clientUpgrade.ItemId))!;
404 upgrade.UpgradeFingerprint = clientUpgrade.UpgradeFingerprint; // primitive way to copy over the riven challenge progress
403 const id = fromOid(clientUpgrade.ItemId);
404 if (id == "") {
405 // U19 does not provide RawUpgrades and instead interleaves them with riven progress here
406 addMods(inventory, [clientUpgrade]);
407 } else {
408 const upgrade = inventory.Upgrades.id(id)!;
409 upgrade.UpgradeFingerprint = clientUpgrade.UpgradeFingerprint; // primitive way to copy over the riven challenge progress
410 }
405 411 });
406 412 break;
407 413 case "WeaponSkins":
Modified src/types/inventoryTypes/inventoryTypes.ts +11 -1
@@ -535,6 +535,16 @@ export interface IUpgradeDatabase extends Omit<IUpgradeClient, "ItemId"> {
535 535 _id: Types.ObjectId;
536 536 }
537 537
538 export interface IUpgradeFromClient {
539 ItemType: string;
540 ItemId: IOidWithLegacySupport;
541 FromSKU?: boolean;
542 UpgradeFingerprint: string;
543 PendingRerollFingerprint: string;
544 ItemCount: number;
545 LastAdded: IOidWithLegacySupport;
546 }
547
538 548 export interface ICrewShipMembersClient {
539 549 SLOT_A?: ICrewShipMemberClient;
540 550 SLOT_B?: ICrewShipMemberClient;
@@ -1053,7 +1063,7 @@ export interface IQuestStage {
1053 1063 export interface IRawUpgrade {
1054 1064 ItemType: string;
1055 1065 ItemCount: number;
1056 LastAdded?: IOid;
1066 LastAdded?: IOidWithLegacySupport;
1057 1067 }
1058 1068
1059 1069 export interface ISeasonChallenge {
Modified src/types/requestTypes.ts +2 -2
@@ -15,7 +15,7 @@ import {
15 15 IPlayerSkills,
16 16 IQuestKeyDatabase,
17 17 ILoreFragmentScan,
18 IUpgradeClient,
18 IUpgradeFromClient,
19 19 ICollectibleEntry,
20 20 IDiscoveredMarker,
21 21 ILockedWeaponGroupClient,
@@ -111,7 +111,7 @@ export type IMissionInventoryUpdateRequest = {
111 111 Standing: number;
112 112 }[];
113 113 CollectibleScans?: ICollectibleEntry[];
114 Upgrades?: IUpgradeClient[]; // riven challenge progress
114 Upgrades?: IUpgradeFromClient[]; // riven challenge progress
115 115 WeaponSkins?: IWeaponSkinClient[];
116 116 StrippedItems?: {
117 117 DropTable: string;