chore(webui): update to Spanish translation #1803
							
								
								
									
										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,11 +539,28 @@ export const addItem = async (
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    if (typeName in ExportRailjackWeapons) {
 | 
					    if (typeName in ExportRailjackWeapons) {
 | 
				
			||||||
 | 
					        const meta = ExportRailjackWeapons[typeName];
 | 
				
			||||||
 | 
					        if (meta.defaultUpgrades?.length) {
 | 
				
			||||||
 | 
					            // 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 {
 | 
					            return {
 | 
				
			||||||
            ...addEquipment(inventory, ExportRailjackWeapons[typeName].productCategory, typeName),
 | 
					                ...addEquipment(inventory, meta.productCategory, typeName),
 | 
				
			||||||
                ...occupySlot(inventory, InventorySlot.RJ_COMPONENT_AND_ARMAMENTS, premiumPurchase)
 | 
					                ...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;
 | 
				
			||||||
        inventory.RegularCredits += creditsTotal;
 | 
					        inventory.RegularCredits += creditsTotal;
 | 
				
			||||||
@ -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