forked from OpenWF/SpaceNinjaServer
fix: give respective weapons & mods when acquiring sentinel (#623)
This commit is contained in:
parent
103e9bc431
commit
42f11b2d30
@ -30,7 +30,7 @@ import { logger } from "@/src/utils/logger";
|
||||
import { getWeaponType, getExalted } from "@/src/services/itemDataService";
|
||||
import { getRandomWeightedReward } from "@/src/services/rngService";
|
||||
import { ISyndicateSacrifice, ISyndicateSacrificeResponse } from "../types/syndicateTypes";
|
||||
import { IEquipmentClient } from "../types/inventoryTypes/commonInventoryTypes";
|
||||
import { IEquipmentClient, IItemConfig } from "../types/inventoryTypes/commonInventoryTypes";
|
||||
import {
|
||||
ExportArcanes,
|
||||
ExportBoosterPacks,
|
||||
@ -39,6 +39,7 @@ import {
|
||||
ExportGear,
|
||||
ExportRecipes,
|
||||
ExportResources,
|
||||
ExportSentinels,
|
||||
ExportUpgrades
|
||||
} from "warframe-public-export-plus";
|
||||
import { createShip } from "./shipService";
|
||||
@ -299,16 +300,16 @@ export const addItem = async (
|
||||
}
|
||||
case "Types":
|
||||
switch (typeName.substr(1).split("/")[2]) {
|
||||
case "Sentinels":
|
||||
// TOOD: Sentinels should also grant their DefaultUpgrades & SentinelWeapon.
|
||||
const sentinel = await addSentinel(typeName, accountId);
|
||||
case "Sentinels": {
|
||||
const inventoryChanges = await addSentinel(typeName, accountId);
|
||||
await updateSlots(accountId, InventorySlot.SENTINELS, 0, 1);
|
||||
return {
|
||||
InventoryChanges: {
|
||||
SentinelBin: { count: 1, platinum: 0, Slots: -1 },
|
||||
Sentinels: [sentinel]
|
||||
...inventoryChanges,
|
||||
SentinelBin: { count: 1, platinum: 0, Slots: -1 }
|
||||
}
|
||||
};
|
||||
}
|
||||
case "Items": {
|
||||
switch (typeName.substr(1).split("/")[3]) {
|
||||
case "ShipDecos": {
|
||||
@ -374,10 +375,43 @@ export const addItem = async (
|
||||
|
||||
//TODO: maybe genericMethod for all the add methods, they share a lot of logic
|
||||
export const addSentinel = async (sentinelName: string, accountId: string) => {
|
||||
const inventoryChanges: IInventoryChanges = {};
|
||||
|
||||
if (ExportSentinels[sentinelName]?.defaultWeapon) {
|
||||
inventoryChanges.SentinelWeapons = [
|
||||
await addSentinelWeapon(ExportSentinels[sentinelName].defaultWeapon, accountId)
|
||||
];
|
||||
}
|
||||
|
||||
const modsToGive: IRawUpgrade[] = [];
|
||||
const configs: IItemConfig[] = [];
|
||||
if (ExportSentinels[sentinelName]?.defaultUpgrades) {
|
||||
const upgrades = [];
|
||||
for (const defaultUpgrade of ExportSentinels[sentinelName].defaultUpgrades) {
|
||||
modsToGive.push({ ItemType: defaultUpgrade.ItemType, ItemCount: 1 });
|
||||
if (defaultUpgrade.Slot != -1) {
|
||||
upgrades[defaultUpgrade.Slot] = defaultUpgrade.ItemType;
|
||||
}
|
||||
}
|
||||
if (upgrades.length != 0) {
|
||||
configs.push({ Upgrades: upgrades });
|
||||
}
|
||||
}
|
||||
|
||||
const inventory = await getInventory(accountId);
|
||||
const sentinelIndex = inventory.Sentinels.push({ ItemType: sentinelName, Configs: [], XP: 0 });
|
||||
addMods(inventory, modsToGive);
|
||||
const sentinelIndex = inventory.Sentinels.push({ ItemType: sentinelName, Configs: configs, XP: 0 });
|
||||
const changedInventory = await inventory.save();
|
||||
return changedInventory.Sentinels[sentinelIndex - 1].toJSON();
|
||||
inventoryChanges.Sentinels = [changedInventory.Sentinels[sentinelIndex - 1].toJSON()];
|
||||
|
||||
return inventoryChanges;
|
||||
};
|
||||
|
||||
export const addSentinelWeapon = async (typeName: string, accountId: string) => {
|
||||
const inventory = await getInventory(accountId);
|
||||
const sentinelIndex = inventory.SentinelWeapons.push({ ItemType: typeName });
|
||||
const changedInventory = await inventory.save();
|
||||
return changedInventory.SentinelWeapons[sentinelIndex - 1].toJSON();
|
||||
};
|
||||
|
||||
export const addPowerSuit = async (powersuitName: string, accountId: string): Promise<IEquipmentClient> => {
|
||||
|
Loading…
x
Reference in New Issue
Block a user