返回提交历史
Modified
src/controllers/api/inventoryController.ts
+3
-0
Modified
src/helpers/nemesisHelpers.ts
+3
-2
Modified
src/services/inventoryService.ts
+4
-4
Modified
src/services/itemDataService.ts
+70
-0
Modified
static/webui/script.js
+2
-1
XFEstudio/XFESpaceNinjaServer
chore: dark excalibur prime supplemential data (#4173)
Reviewed-on: https://onlyg.it/OpenWF/SpaceNinjaServer/pulls/4173 Reviewed-by: Sainan <63328889+sainan@users.noreply.github.com> Co-authored-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com> Co-committed-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
6b61fef1
代码差异
5 个文件
+82
-7
@@ -69,6 +69,7 @@ import { createMessage, getInboxFilter } from "../../services/inboxService.ts";
69
69
import gameToBuildVersion from "../../constants/gameToBuildVersion.ts";
70
70
import { PendingTrade } from "../../models/tradingModel.ts";
71
71
import { exportTrade } from "../../services/tradingService.ts";
72
import { supplementalSuits } from "../../services/itemDataService.ts";
72
73
73
74
export const inventoryController: RequestHandler = async (request, response) => {
74
75
const account = await getAccountForRequest(request);
@@ -700,6 +701,8 @@ export const getInventoryResponse = async (
700
701
let introducedAt: number | undefined;
701
702
if (item.ItemType in ExportWarframes) {
702
703
introducedAt = ExportWarframes[item.ItemType].introducedAt;
704
} else if (item.ItemType in supplementalSuits) {
705
introducedAt = supplementalSuits[item.ItemType].introducedAt;
703
706
} else if (item.ItemType in ExportWeapons) {
704
707
introducedAt = ExportWeapons[item.ItemType].introducedAt;
705
708
}
@@ -1,4 +1,4 @@
1
import { ExportRegions, ExportWarframes } from "warframe-public-export-plus";
1
import { ExportRegions } from "warframe-public-export-plus";
2
2
import type { IInfNode, INemesisDatabase, TNemesisFaction } from "../types/inventoryTypes/inventoryTypes.ts";
3
3
import { generateRewardSeed, getRewardAtPercentage, SRng } from "../services/rngService.ts";
4
4
import type { TInventoryDatabaseDocument } from "../models/inventoryModels/inventoryModel.ts";
@@ -7,6 +7,7 @@ import { isArchwingMission } from "../services/worldStateService.ts";
7
7
import gameToBuildVersion from "../constants/gameToBuildVersion.ts";
8
8
import type { INemesisTaxInfo } from "../types/missionTypes.ts";
9
9
import { lerp } from "./general.ts";
10
import { getPowerSuit } from "../services/itemDataService.ts";
10
11
11
12
type TInnateDamageTag =
12
13
| "InnateElectricityDamage"
@@ -401,7 +402,7 @@ export const parseUpgrade = (
401
402
};
402
403
403
404
const getInnateDamageTag = (KillingSuit: string): TInnateDamageTag => {
404
return ExportWarframes[KillingSuit].nemesisUpgradeTag!;
405
return getPowerSuit(KillingSuit)!.nemesisUpgradeTag!;
405
406
};
406
407
407
408
const petHeads = [
@@ -39,13 +39,14 @@ import {
39
39
convertInboxMessage,
40
40
fromStoreItem,
41
41
getKeyChainItems,
42
getPowerSuit,
42
43
getSyndicate,
43
44
supplementalRecipes,
44
45
U5ModsWeights,
45
46
U5Modules
46
47
} from "./itemDataService.ts";
47
48
import type { IFlavourItem, IItemConfig, IItemConfigDatabase } from "../types/inventoryTypes/commonInventoryTypes.ts";
48
import type { IDefaultUpgrade, IPowersuit, IRegion, ISentinel, TStandingLimitBin } from "warframe-public-export-plus";
49
import type { IDefaultUpgrade, IRegion, ISentinel, TStandingLimitBin } from "warframe-public-export-plus";
49
50
import {
50
51
ExportArcanes,
51
52
ExportBoosters,
@@ -67,7 +68,6 @@ import {
67
68
ExportSentinels,
68
69
ExportSystems,
69
70
ExportUpgrades,
70
ExportWarframes,
71
71
ExportWeapons
72
72
} from "warframe-public-export-plus";
73
73
import { createShip } from "./shipService.ts";
@@ -1436,7 +1436,7 @@ export const addPowerSuit = async (
1436
1436
buildLabel: string = BL_LATEST,
1437
1437
inventoryChanges: IInventoryChanges = {}
1438
1438
): Promise<IInventoryChanges> => {
1439
const powersuit = ExportWarframes[powersuitName] as IPowersuit | undefined;
1439
const powersuit = getPowerSuit(powersuitName);
1440
1440
const exalted = powersuit?.exalted ?? [];
1441
1441
for (const specialItem of exalted) {
1442
1442
addSpecialItem(inventory, specialItem, inventoryChanges);
@@ -1482,7 +1482,7 @@ const addMechSuit = async (
1482
1482
inventoryChanges: IInventoryChanges = {},
1483
1483
features?: number
1484
1484
): Promise<IInventoryChanges> => {
1485
const powersuit = ExportWarframes[mechsuitName] as IPowersuit | undefined;
1485
const powersuit = getPowerSuit(mechsuitName);
1486
1486
const exalted = powersuit?.exalted ?? [];
1487
1487
for (const specialItem of exalted) {
1488
1488
addSpecialItem(inventory, specialItem, inventoryChanges);
@@ -6,6 +6,7 @@ import type {
6
6
IInboxMessage,
7
7
IKey,
8
8
IMissionReward,
9
IPowersuit,
9
10
IRecipe,
10
11
IRegion,
11
12
ISyndicate,
@@ -1093,6 +1094,65 @@ export const supplementalRecipes: Record<string, IRecipe> = {
1093
1094
}
1094
1095
};
1095
1096
1097
export const supplementalSuits: Record<string, IPowersuit> = {
1098
"/Lotus/Powersuits/Excalibur/DarkExcalibur": {
1099
name: "/Lotus/Language/Changyou/DarkExcaliburName",
1100
parentName: "/Lotus/Powersuits/Excalibur/ExcaliburBaseSuit",
1101
description: "/Lotus/Language/Suits/DarkExcaliburDesc",
1102
icon: "/Lotus/Interface/Icons/Store/DarkExcalibur.png",
1103
health: 270,
1104
shield: 270,
1105
armor: 315,
1106
stamina: 3,
1107
power: 175,
1108
codexSecret: true,
1109
masteryReq: 0,
1110
longDescription: "/Lotus/Language/Codex/DarkExcaliburLongDesc",
1111
sprintSpeed: 1,
1112
passiveDescription: "/Lotus/Language/Suits/ExcaliburPassiveAbility",
1113
exalted: ["/Lotus/Powersuits/Excalibur/DoomSwordCYUmbra"],
1114
abilities: [
1115
{
1116
uniqueName: "/Lotus/Powersuits/Excalibur/Abilities/SlashDashNewAbility",
1117
name: "/Lotus/Language/Suits/SlashDashAbilityName",
1118
description: "/Lotus/Language/Suits/SlashDashAbilityDesc",
1119
icon: "/Lotus/Interface/Icons/Abilities/Power04.png",
1120
energyRequiredToActivate: 25
1121
},
1122
{
1123
uniqueName: "/Lotus/Powersuits/Excalibur/Abilities/RadialBlindAbility",
1124
name: "/Lotus/Language/Suits/RadialBlindAbilityName",
1125
description: "/Lotus/Language/Suits/RadialBlindAbilityDesc",
1126
icon: "/Lotus/Interface/Icons/Abilities/Power01.png",
1127
energyRequiredToActivate: 50
1128
},
1129
{
1130
uniqueName: "/Lotus/Powersuits/Excalibur/Abilities/RadialJavelinAbility",
1131
name: "/Lotus/Language/Suits/RadialJavelinAbilityName",
1132
description: "/Lotus/Language/Suits/RadialJavelinAbilityDesc",
1133
icon: "/Lotus/Interface/Icons/Abilities/Power03.png",
1134
energyRequiredToActivate: 75
1135
},
1136
{
1137
uniqueName: "/Lotus/Powersuits/Excalibur/Abilities/SwordOfDoomAbility",
1138
name: "/Lotus/Language/Suits/SwordOfDoomAbilityName",
1139
description: "/Lotus/Language/Suits/SwordOfDoomAbilityDesc",
1140
icon: "/Lotus/Interface/Icons/Abilities/ExcaliburSwordOfDoom.png",
1141
energyRequiredToActivate: 25,
1142
energyConsumptionOverTime: 2.5
1143
}
1144
],
1145
productCategory: "Suits",
1146
variantType: "VT_VARIANT",
1147
additionalItems: [
1148
"/Lotus/Upgrades/Skins/Excalibur/ExcaliburUmbraHelmet",
1149
"/Lotus/Powersuits/Excalibur/DoomSwordCYUmbra"
1150
],
1151
excludeFromMarket: true,
1152
introducedAt: 1519338301
1153
}
1154
};
1155
1096
1156
interface IU5FingerprintData {
1097
1157
fits: { type: string; rarity: TRarity; statAtten?: number }[];
1098
1158
upgrades: IU5FingerprintUpgrade[];
@@ -2165,6 +2225,9 @@ export const getItemCategoryByUniqueName = (uniqueName: string): string | undefi
2165
2225
if (uniqueName in ExportWarframes) {
2166
2226
return ExportWarframes[uniqueName].productCategory;
2167
2227
}
2228
if (uniqueName in supplementalSuits) {
2229
return supplementalSuits[uniqueName].productCategory;
2230
}
2168
2231
if (uniqueName in ExportWeapons) {
2169
2232
return ExportWeapons[uniqueName].productCategory;
2170
2233
}
@@ -2202,6 +2265,9 @@ export const getItemName = (uniqueName: string): string | undefined => {
2202
2265
if (uniqueName in ExportWarframes) {
2203
2266
return ExportWarframes[uniqueName].name;
2204
2267
}
2268
if (uniqueName in supplementalSuits) {
2269
return supplementalSuits[uniqueName].name;
2270
}
2205
2271
if (uniqueName in ExportWeapons) {
2206
2272
return ExportWeapons[uniqueName].name;
2207
2273
}
@@ -2867,6 +2933,10 @@ export const getMissionDeck = (uniqueName: string): TMissionDeck | undefined =>
2867
2933
return ExportRewards[uniqueName];
2868
2934
};
2869
2935
2936
export const getPowerSuit = (uniqueName: string): IPowersuit | undefined => {
2937
return ExportWarframes[uniqueName] ?? supplementalSuits[uniqueName];
2938
};
2939
2870
2940
const u7WeaponCosts: Record<string, number> = {
2871
2941
"/Lotus/Weapons/Tenno/Pistol/HeavyPistol": 35_000,
2872
2942
"/Lotus/Weapons/Tenno/Akimbo/AkimboPistol": 12_000,
@@ -1007,7 +1007,8 @@ function fetchItemList() {
1007
1007
name: loc("code_darkExcalibur").replace(
1008
1008
"|ITEM|",
1009
1009
data.Suits.find(i => i.uniqueName === "/Lotus/Powersuits/Excalibur/ExcaliburPrime").name
1010
)
1010
),
1011
exalted: ["/Lotus/Powersuits/Excalibur/DoomSwordCYUmbra"]
1011
1012
},
1012
1013
"/Lotus/Language/Game/Rank_Creator": {
1013
1014
name: loc("guildView_rank_creator")