merge upstream
This commit is contained in:
commit
90490845eb
8
package-lock.json
generated
8
package-lock.json
generated
@ -18,7 +18,7 @@
|
|||||||
"morgan": "^1.10.0",
|
"morgan": "^1.10.0",
|
||||||
"ncp": "^2.0.0",
|
"ncp": "^2.0.0",
|
||||||
"typescript": "^5.5",
|
"typescript": "^5.5",
|
||||||
"warframe-public-export-plus": "^0.5.55",
|
"warframe-public-export-plus": "^0.5.56",
|
||||||
"warframe-riven-info": "^0.1.2",
|
"warframe-riven-info": "^0.1.2",
|
||||||
"winston": "^3.17.0",
|
"winston": "^3.17.0",
|
||||||
"winston-daily-rotate-file": "^5.0.0"
|
"winston-daily-rotate-file": "^5.0.0"
|
||||||
@ -3789,9 +3789,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/warframe-public-export-plus": {
|
"node_modules/warframe-public-export-plus": {
|
||||||
"version": "0.5.55",
|
"version": "0.5.56",
|
||||||
"resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.5.55.tgz",
|
"resolved": "https://registry.npmjs.org/warframe-public-export-plus/-/warframe-public-export-plus-0.5.56.tgz",
|
||||||
"integrity": "sha512-Gnd4FCBVuxm2xWGfu8xxxqPIPSnnTqiEWlpP3rsFpVlQs09RNFnW2PEX9rCZt0f3SvHBv5ssDDrFlzgBHS1yrA=="
|
"integrity": "sha512-px+J7tUm6fkSzwKkvL73ySQReDq9oM1UrHSLM3vbYGBvELM892iBgPYG45okIhScCSdwmmXTiWZTf4x/I4qiNQ=="
|
||||||
},
|
},
|
||||||
"node_modules/warframe-riven-info": {
|
"node_modules/warframe-riven-info": {
|
||||||
"version": "0.1.2",
|
"version": "0.1.2",
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
"morgan": "^1.10.0",
|
"morgan": "^1.10.0",
|
||||||
"ncp": "^2.0.0",
|
"ncp": "^2.0.0",
|
||||||
"typescript": "^5.5",
|
"typescript": "^5.5",
|
||||||
"warframe-public-export-plus": "^0.5.55",
|
"warframe-public-export-plus": "^0.5.56",
|
||||||
"warframe-riven-info": "^0.1.2",
|
"warframe-riven-info": "^0.1.2",
|
||||||
"winston": "^3.17.0",
|
"winston": "^3.17.0",
|
||||||
"winston-daily-rotate-file": "^5.0.0"
|
"winston-daily-rotate-file": "^5.0.0"
|
||||||
|
@ -1,25 +1,32 @@
|
|||||||
import { addCrewShipSalvagedWeaponSkin, addCrewShipRawSalvage, getInventory } from "@/src/services/inventoryService";
|
import { addCrewShipSalvagedWeaponSkin, addCrewShipRawSalvage, getInventory } from "@/src/services/inventoryService";
|
||||||
import { getAccountIdForRequest } from "@/src/services/loginService";
|
import { getAccountIdForRequest } from "@/src/services/loginService";
|
||||||
import { RequestHandler } from "express";
|
import { RequestHandler } from "express";
|
||||||
import { IInnateDamageFingerprint } from "@/src/types/inventoryTypes/inventoryTypes";
|
import { ICrewShipComponentFingerprint } from "@/src/types/inventoryTypes/inventoryTypes";
|
||||||
import { ExportCustoms } from "warframe-public-export-plus";
|
import { ExportCustoms } from "warframe-public-export-plus";
|
||||||
import { IFingerprintStat } from "@/src/helpers/rivenHelper";
|
|
||||||
import { getJSONfromString } from "@/src/helpers/stringHelpers";
|
import { getJSONfromString } from "@/src/helpers/stringHelpers";
|
||||||
import { IInventoryChanges } from "@/src/types/purchaseTypes";
|
import { IInventoryChanges } from "@/src/types/purchaseTypes";
|
||||||
|
import { getRandomInt } from "@/src/services/rngService";
|
||||||
|
|
||||||
export const crewShipIdentifySalvageController: RequestHandler = async (req, res) => {
|
export const crewShipIdentifySalvageController: RequestHandler = async (req, res) => {
|
||||||
const accountId = await getAccountIdForRequest(req);
|
const accountId = await getAccountIdForRequest(req);
|
||||||
const inventory = await getInventory(accountId, "CrewShipSalvagedWeaponSkins CrewShipRawSalvage");
|
const inventory = await getInventory(accountId, "CrewShipSalvagedWeaponSkins CrewShipRawSalvage");
|
||||||
const payload = getJSONfromString<ICrewShipIdentifySalvageRequest>(String(req.body));
|
const payload = getJSONfromString<ICrewShipIdentifySalvageRequest>(String(req.body));
|
||||||
|
|
||||||
const buffs: IFingerprintStat[] = [];
|
const meta = ExportCustoms[payload.ItemType];
|
||||||
for (const upgrade of ExportCustoms[payload.ItemType].randomisedUpgrades!) {
|
let upgradeFingerprint: ICrewShipComponentFingerprint = { compat: payload.ItemType, buffs: [] };
|
||||||
buffs.push({ Tag: upgrade.tag, Value: Math.trunc(Math.random() * 0x40000000) });
|
if (meta.subroutines) {
|
||||||
|
upgradeFingerprint = {
|
||||||
|
SubroutineIndex: getRandomInt(0, meta.subroutines.length - 1),
|
||||||
|
...upgradeFingerprint
|
||||||
|
};
|
||||||
|
}
|
||||||
|
for (const upgrade of meta.randomisedUpgrades!) {
|
||||||
|
upgradeFingerprint.buffs.push({ Tag: upgrade.tag, Value: Math.trunc(Math.random() * 0x40000000) });
|
||||||
}
|
}
|
||||||
const inventoryChanges: IInventoryChanges = addCrewShipSalvagedWeaponSkin(
|
const inventoryChanges: IInventoryChanges = addCrewShipSalvagedWeaponSkin(
|
||||||
inventory,
|
inventory,
|
||||||
payload.ItemType,
|
payload.ItemType,
|
||||||
JSON.stringify({ compat: payload.ItemType, buffs } satisfies IInnateDamageFingerprint)
|
JSON.stringify(upgradeFingerprint)
|
||||||
);
|
);
|
||||||
|
|
||||||
inventoryChanges.CrewShipRawSalvage = [
|
inventoryChanges.CrewShipRawSalvage = [
|
||||||
|
@ -28,7 +28,7 @@ import { IInventoryChanges } from "@/src/types/purchaseTypes";
|
|||||||
import { config } from "@/src/services/configService";
|
import { config } from "@/src/services/configService";
|
||||||
import { GuildPermission, ITechProjectClient } from "@/src/types/guildTypes";
|
import { GuildPermission, ITechProjectClient } from "@/src/types/guildTypes";
|
||||||
import { GuildMember } from "@/src/models/guildModel";
|
import { GuildMember } from "@/src/models/guildModel";
|
||||||
import { toMongoDate } from "@/src/helpers/inventoryHelpers";
|
import { toMongoDate, toOid } from "@/src/helpers/inventoryHelpers";
|
||||||
import { logger } from "@/src/utils/logger";
|
import { logger } from "@/src/utils/logger";
|
||||||
import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel";
|
import { TInventoryDatabaseDocument } from "@/src/models/inventoryModels/inventoryModel";
|
||||||
|
|
||||||
@ -305,6 +305,38 @@ export const guildTechController: RequestHandler = async (req, res) => {
|
|||||||
guild.ActiveDojoColorResearch = data.RecipeType;
|
guild.ActiveDojoColorResearch = data.RecipeType;
|
||||||
await guild.save();
|
await guild.save();
|
||||||
res.end();
|
res.end();
|
||||||
|
} else if (data.Action == "Cancel" && data.CategoryItemId) {
|
||||||
|
const personalTechProjectIndex = inventory.PersonalTechProjects.findIndex(x =>
|
||||||
|
x.CategoryItemId?.equals(data.CategoryItemId)
|
||||||
|
);
|
||||||
|
const personalTechProject = inventory.PersonalTechProjects[personalTechProjectIndex];
|
||||||
|
inventory.PersonalTechProjects.splice(personalTechProjectIndex, 1);
|
||||||
|
|
||||||
|
const meta = ExportDojoRecipes.research[personalTechProject.ItemType];
|
||||||
|
const contributedCredits = meta.price - personalTechProject.ReqCredits;
|
||||||
|
const inventoryChanges = updateCurrency(inventory, contributedCredits * -1, false);
|
||||||
|
inventoryChanges.MiscItems = [];
|
||||||
|
for (const ingredient of meta.ingredients) {
|
||||||
|
const reqItem = personalTechProject.ReqItems.find(x => x.ItemType == ingredient.ItemType);
|
||||||
|
if (reqItem) {
|
||||||
|
const contributedItems = ingredient.ItemCount - reqItem.ItemCount;
|
||||||
|
inventoryChanges.MiscItems.push({
|
||||||
|
ItemType: ingredient.ItemType,
|
||||||
|
ItemCount: contributedItems
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
addMiscItems(inventory, inventoryChanges.MiscItems);
|
||||||
|
|
||||||
|
await inventory.save();
|
||||||
|
res.json({
|
||||||
|
action: "Cancel",
|
||||||
|
isPersonal: true,
|
||||||
|
inventoryChanges: inventoryChanges,
|
||||||
|
personalTech: {
|
||||||
|
ItemId: toOid(personalTechProject._id)
|
||||||
|
}
|
||||||
|
});
|
||||||
} else if (data.Action == "Rush" && data.CategoryItemId) {
|
} else if (data.Action == "Rush" && data.CategoryItemId) {
|
||||||
const inventoryChanges: IInventoryChanges = {
|
const inventoryChanges: IInventoryChanges = {
|
||||||
...updateCurrency(inventory, 20, true),
|
...updateCurrency(inventory, 20, true),
|
||||||
|
@ -539,10 +539,27 @@ export const addItem = async (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (typeName in ExportRailjackWeapons) {
|
if (typeName in ExportRailjackWeapons) {
|
||||||
return {
|
const meta = ExportRailjackWeapons[typeName];
|
||||||
...addEquipment(inventory, ExportRailjackWeapons[typeName].productCategory, typeName),
|
if (meta.defaultUpgrades?.length) {
|
||||||
...occupySlot(inventory, InventorySlot.RJ_COMPONENT_AND_ARMAMENTS, premiumPurchase)
|
// House versions need to be identified to get stats so put them into raw salvage first.
|
||||||
};
|
const rawSalvageChanges = [
|
||||||
|
{
|
||||||
|
ItemType: typeName,
|
||||||
|
ItemCount: quantity
|
||||||
|
}
|
||||||
|
];
|
||||||
|
addCrewShipRawSalvage(inventory, rawSalvageChanges);
|
||||||
|
return { CrewShipRawSalvage: rawSalvageChanges };
|
||||||
|
} else {
|
||||||
|
// Sigma versions can be added directly.
|
||||||
|
if (quantity != 1) {
|
||||||
|
throw new Error(`unexpected acquisition quantity of CrewShipWeapon: got ${quantity}, expected 1`);
|
||||||
|
}
|
||||||
|
return {
|
||||||
|
...addEquipment(inventory, meta.productCategory, typeName),
|
||||||
|
...occupySlot(inventory, InventorySlot.RJ_COMPONENT_AND_ARMAMENTS, premiumPurchase)
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (typeName in ExportMisc.creditBundles) {
|
if (typeName in ExportMisc.creditBundles) {
|
||||||
const creditsTotal = ExportMisc.creditBundles[typeName] * quantity;
|
const creditsTotal = ExportMisc.creditBundles[typeName] * quantity;
|
||||||
@ -1066,7 +1083,7 @@ export const addEquipment = (
|
|||||||
Configs: [],
|
Configs: [],
|
||||||
XP: 0,
|
XP: 0,
|
||||||
ModularParts: modularParts,
|
ModularParts: modularParts,
|
||||||
IsNew: true
|
IsNew: category != "CrewShipWeapons" ? true : undefined
|
||||||
},
|
},
|
||||||
defaultOverwrites
|
defaultOverwrites
|
||||||
);
|
);
|
||||||
|
@ -907,6 +907,10 @@ export interface IInnateDamageFingerprint {
|
|||||||
buffs: IFingerprintStat[];
|
buffs: IFingerprintStat[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface ICrewShipComponentFingerprint extends IInnateDamageFingerprint {
|
||||||
|
SubroutineIndex?: number;
|
||||||
|
}
|
||||||
|
|
||||||
export enum GettingSlotOrderInfo {
|
export enum GettingSlotOrderInfo {
|
||||||
Empty = "",
|
Empty = "",
|
||||||
LotusUpgradesModsRandomizedPlayerMeleeWeaponRandomModRare0 = "/Lotus/Upgrades/Mods/Randomized/PlayerMeleeWeaponRandomModRare:0",
|
LotusUpgradesModsRandomizedPlayerMeleeWeaponRandomModRare0 = "/Lotus/Upgrades/Mods/Randomized/PlayerMeleeWeaponRandomModRare:0",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user