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: 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
AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
提交于

代码差异

5 个文件 +82 -7
Modified src/controllers/api/inventoryController.ts +3 -0
@@ -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 }
Modified src/helpers/nemesisHelpers.ts +3 -2
@@ -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 = [
Modified src/services/inventoryService.ts +4 -4
@@ -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);
Modified src/services/itemDataService.ts +70 -0
@@ -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,
Modified static/webui/script.js +2 -1
@@ -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")