feat: gravimag installation (#366)

This commit is contained in:
Sainan 2024-06-22 18:40:51 +02:00 committed by GitHub
parent d0b8c8a1d3
commit e34cb305ad
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 24 additions and 11 deletions

View File

@ -1,7 +1,7 @@
import { RequestHandler } from "express"; import { RequestHandler } from "express";
import { IUpgradesRequest } from "@/src/types/requestTypes"; import { IUpgradesRequest } from "@/src/types/requestTypes";
import { FocusSchool, IEquipmentDatabase, EquipmentFeatures } from "@/src/types/inventoryTypes/commonInventoryTypes"; import { FocusSchool, IEquipmentDatabase, EquipmentFeatures } from "@/src/types/inventoryTypes/commonInventoryTypes";
import { IMiscItem, TEquipmentKey } from "@/src/types/inventoryTypes/inventoryTypes"; import { IMiscItem } from "@/src/types/inventoryTypes/inventoryTypes";
import { getAccountIdForRequest } from "@/src/services/loginService"; import { getAccountIdForRequest } from "@/src/services/loginService";
import { addMiscItems, getInventory, updateCurrency } from "@/src/services/inventoryService"; import { addMiscItems, getInventory, updateCurrency } from "@/src/services/inventoryService";
@ -29,7 +29,7 @@ export const upgradesController: RequestHandler = async (req, res) => {
switch (operation.UpgradeRequirement) { switch (operation.UpgradeRequirement) {
case "/Lotus/Types/Items/MiscItems/OrokinReactor": case "/Lotus/Types/Items/MiscItems/OrokinReactor":
case "/Lotus/Types/Items/MiscItems/OrokinCatalyst": case "/Lotus/Types/Items/MiscItems/OrokinCatalyst":
for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { for (const item of inventory[payload.ItemCategory]) {
if (item._id.toString() == payload.ItemId.$oid) { if (item._id.toString() == payload.ItemId.$oid) {
item.Features ??= 0; item.Features ??= 0;
item.Features |= EquipmentFeatures.DOUBLE_CAPACITY; item.Features |= EquipmentFeatures.DOUBLE_CAPACITY;
@ -39,7 +39,7 @@ export const upgradesController: RequestHandler = async (req, res) => {
break; break;
case "/Lotus/Types/Items/MiscItems/UtilityUnlocker": case "/Lotus/Types/Items/MiscItems/UtilityUnlocker":
case "/Lotus/Types/Items/MiscItems/WeaponUtilityUnlocker": case "/Lotus/Types/Items/MiscItems/WeaponUtilityUnlocker":
for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { for (const item of inventory[payload.ItemCategory]) {
if (item._id.toString() == payload.ItemId.$oid) { if (item._id.toString() == payload.ItemId.$oid) {
item.Features ??= 0; item.Features ??= 0;
item.Features |= EquipmentFeatures.UTILITY_SLOT; item.Features |= EquipmentFeatures.UTILITY_SLOT;
@ -47,10 +47,20 @@ export const upgradesController: RequestHandler = async (req, res) => {
} }
} }
break; break;
case "/Lotus/Types/Items/MiscItems/HeavyWeaponCatalyst":
console.assert(payload.ItemCategory == "SpaceGuns");
for (const item of inventory[payload.ItemCategory]) {
if (item._id.toString() == payload.ItemId.$oid) {
item.Features ??= 0;
item.Features |= EquipmentFeatures.GRAVIMAG_INSTALLED;
break;
}
}
break;
case "/Lotus/Types/Items/MiscItems/WeaponPrimaryArcaneUnlocker": case "/Lotus/Types/Items/MiscItems/WeaponPrimaryArcaneUnlocker":
case "/Lotus/Types/Items/MiscItems/WeaponSecondaryArcaneUnlocker": case "/Lotus/Types/Items/MiscItems/WeaponSecondaryArcaneUnlocker":
case "/Lotus/Types/Items/MiscItems/WeaponMeleeArcaneUnlocker": case "/Lotus/Types/Items/MiscItems/WeaponMeleeArcaneUnlocker":
for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { for (const item of inventory[payload.ItemCategory]) {
if (item._id.toString() == payload.ItemId.$oid) { if (item._id.toString() == payload.ItemId.$oid) {
item.Features ??= 0; item.Features ??= 0;
item.Features |= EquipmentFeatures.ARCANE_SLOT; item.Features |= EquipmentFeatures.ARCANE_SLOT;
@ -62,7 +72,7 @@ export const upgradesController: RequestHandler = async (req, res) => {
case "/Lotus/Types/Items/MiscItems/FormaUmbra": case "/Lotus/Types/Items/MiscItems/FormaUmbra":
case "/Lotus/Types/Items/MiscItems/FormaAura": case "/Lotus/Types/Items/MiscItems/FormaAura":
case "/Lotus/Types/Items/MiscItems/FormaStance": case "/Lotus/Types/Items/MiscItems/FormaStance":
for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { for (const item of inventory[payload.ItemCategory]) {
if (item._id.toString() == payload.ItemId.$oid) { if (item._id.toString() == payload.ItemId.$oid) {
item.XP = 0; item.XP = 0;
setSlotPolarity(item, operation.PolarizeSlot, operation.PolarizeValue); setSlotPolarity(item, operation.PolarizeSlot, operation.PolarizeValue);
@ -73,7 +83,7 @@ export const upgradesController: RequestHandler = async (req, res) => {
} }
break; break;
case "/Lotus/Types/Items/MiscItems/ModSlotUnlocker": case "/Lotus/Types/Items/MiscItems/ModSlotUnlocker":
for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { for (const item of inventory[payload.ItemCategory]) {
if (item._id.toString() == payload.ItemId.$oid) { if (item._id.toString() == payload.ItemId.$oid) {
item.ModSlotPurchases ??= 0; item.ModSlotPurchases ??= 0;
item.ModSlotPurchases += 1; item.ModSlotPurchases += 1;
@ -88,7 +98,7 @@ export const upgradesController: RequestHandler = async (req, res) => {
} }
break; break;
case "/Lotus/Types/Items/MiscItems/CustomizationSlotUnlocker": case "/Lotus/Types/Items/MiscItems/CustomizationSlotUnlocker":
for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { for (const item of inventory[payload.ItemCategory]) {
if (item._id.toString() == payload.ItemId.$oid) { if (item._id.toString() == payload.ItemId.$oid) {
item.CustomizationSlotPurchases ??= 0; item.CustomizationSlotPurchases ??= 0;
item.CustomizationSlotPurchases += 1; item.CustomizationSlotPurchases += 1;
@ -104,7 +114,7 @@ export const upgradesController: RequestHandler = async (req, res) => {
break; break;
case "": case "":
console.assert(operation.OperationType == "UOT_SWAP_POLARITY"); console.assert(operation.OperationType == "UOT_SWAP_POLARITY");
for (const item of inventory[payload.ItemCategory as TEquipmentKey] as IEquipmentDatabase[]) { for (const item of inventory[payload.ItemCategory]) {
if (item._id.toString() == payload.ItemId.$oid) { if (item._id.toString() == payload.ItemId.$oid) {
for (let i = 0; i != operation.PolarityRemap.length; ++i) { for (let i = 0; i != operation.PolarityRemap.length; ++i) {
if (operation.PolarityRemap[i].Slot != i) { if (operation.PolarityRemap[i].Slot != i) {

View File

@ -85,6 +85,7 @@ export interface IEquipmentClient extends Omit<IEquipmentDatabase, "_id"> {
export enum EquipmentFeatures { export enum EquipmentFeatures {
DOUBLE_CAPACITY = 1, DOUBLE_CAPACITY = 1,
UTILITY_SLOT = 2, UTILITY_SLOT = 2,
GRAVIMAG_INSTALLED = 4,
ARCANE_SLOT = 32, ARCANE_SLOT = 32,
INCARNON_GENESIS = 512 INCARNON_GENESIS = 512
} }

View File

@ -66,7 +66,8 @@ export type TEquipmentKey =
| "Melee" | "Melee"
| "SpecialItems" | "SpecialItems"
| "Sentinels" | "Sentinels"
| "SentinelWeapons"; | "SentinelWeapons"
| "SpaceGuns";
export interface IDuviriInfo { export interface IDuviriInfo {
Seed: number; Seed: number;

View File

@ -10,7 +10,8 @@ import {
ITypeCount, ITypeCount,
IMission, IMission,
IRawUpgrade, IRawUpgrade,
ISeasonChallenge ISeasonChallenge,
TEquipmentKey
} from "./inventoryTypes/inventoryTypes"; } from "./inventoryTypes/inventoryTypes";
export interface IArtifactsRequest { export interface IArtifactsRequest {
@ -85,7 +86,7 @@ export interface IUpdateGlyphRequest {
} }
export interface IUpgradesRequest { export interface IUpgradesRequest {
ItemCategory: string; ItemCategory: TEquipmentKey;
ItemId: IOid; ItemId: IOid;
ItemFeatures: number; ItemFeatures: number;
UpgradeVersion: number; UpgradeVersion: number;