返回提交历史
Modified
src/controllers/api/artifactTransmutationController.ts
+7
-17
Modified
src/services/missionInventoryUpdateService.ts
+8
-2
Modified
src/types/inventoryTypes/inventoryTypes.ts
+11
-1
Modified
src/types/requestTypes.ts
+2
-2
XFEstudio/SpaceNinjaServer
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
代码差异
4 个文件
+28
-22
@@ -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",
@@ -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":
@@ -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 {
@@ -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;