feat: obtaining crewship related items on mission update (#897)

Reviewed-on: http://209.141.38.3/OpenWF/SpaceNinjaServer/pulls/897
Reviewed-by: Sainan <sainan@calamity.inc>
Co-authored-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
Co-committed-by: AMelonInsideLemon <166175391+AMelonInsideLemon@users.noreply.github.com>
This commit is contained in:
AMelonInsideLemon 2025-02-05 12:23:35 -08:00 committed by OrdisPrime
parent d396fe8b5c
commit 1c82b90033
4 changed files with 52 additions and 8 deletions

View File

@ -997,7 +997,7 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
ShipDecorations: [typeCountSchema],
//Railjack/Components(https://warframe.fandom.com/wiki/Railjack/Components)
CrewShipRawSalvage: [Schema.Types.Mixed],
CrewShipRawSalvage: [typeCountSchema],
//Default RailJack
CrewShipAmmo: [typeCountSchema],

View File

@ -928,6 +928,37 @@ export const addConsumables = (inventory: TInventoryDatabaseDocument, itemsArray
});
};
export const addCrewShipRawSalvage = (
inventory: TInventoryDatabaseDocument,
itemsArray: ITypeCount[] | undefined
): void => {
const { CrewShipRawSalvage } = inventory;
itemsArray?.forEach(({ ItemCount, ItemType }) => {
const itemIndex = CrewShipRawSalvage.findIndex(i => i.ItemType === ItemType);
if (itemIndex !== -1) {
CrewShipRawSalvage[itemIndex].ItemCount += ItemCount;
} else {
CrewShipRawSalvage.push({ ItemCount, ItemType });
}
});
};
export const addCrewShipAmmo = (inventory: TInventoryDatabaseDocument, itemsArray: ITypeCount[] | undefined): void => {
const { CrewShipAmmo } = inventory;
itemsArray?.forEach(({ ItemCount, ItemType }) => {
const itemIndex = CrewShipAmmo.findIndex(i => i.ItemType === ItemType);
if (itemIndex !== -1) {
CrewShipAmmo[itemIndex].ItemCount += ItemCount;
} else {
CrewShipAmmo.push({ ItemCount, ItemType });
}
});
};
export const addRecipes = (inventory: TInventoryDatabaseDocument, itemsArray: ITypeCount[] | undefined): void => {
const { Recipes } = inventory;

View File

@ -6,6 +6,8 @@ import { equipmentKeys, IInventoryDatabase, TEquipmentKey } from "@/src/types/in
import {
addChallenges,
addConsumables,
addCrewShipAmmo,
addCrewShipRawSalvage,
addFocusXpIncreases,
addFusionTreasures,
addGearExpByCategory,
@ -122,6 +124,7 @@ export const addMissionInventoryUpdates = (
addMods(inventory, value);
break;
case "MiscItems":
case "BonusMiscItems":
addMiscItems(inventory, value);
break;
case "Consumables":
@ -136,6 +139,12 @@ export const addMissionInventoryUpdates = (
case "FusionTreasures":
addFusionTreasures(inventory, value);
break;
case "CrewShipRawSalvage":
addCrewShipRawSalvage(inventory, value);
break;
case "CrewShipAmmo":
addCrewShipAmmo(inventory, value);
break;
case "FusionBundles": {
let fusionPoints = 0;
for (const fusionBundle of value) {
@ -195,7 +204,6 @@ export const addMissionRewards = async (
) => {
if (!rewardInfo) {
logger.warn("no reward info provided");
return;
}
//TODO: check double reward merging
@ -287,9 +295,9 @@ function getLevelCreditRewards(nodeName: string): number {
//TODO: get dark sektor fixed credit rewards and railjack bonus
}
function getRandomMissionDrops(RewardInfo: IRewardInfo): IRngResult[] {
function getRandomMissionDrops(RewardInfo: IRewardInfo | undefined): IRngResult[] {
const drops: IRngResult[] = [];
if (RewardInfo.node in ExportRegions) {
if (RewardInfo && RewardInfo.node in ExportRegions) {
const region = ExportRegions[RewardInfo.node];
const rewardManifests = region.rewardManifests ?? [];

View File

@ -35,18 +35,23 @@ export interface IUpdateChallengeProgressRequest {
}
export type IMissionInventoryUpdateRequest = {
MiscItems?: ITypeCount[];
Recipes?: ITypeCount[];
FusionBundles?: ITypeCount[];
Consumables?: ITypeCount[];
FusionBundels?: ITypeCount[];
CrewShipRawSalvage?: ITypeCount[];
CrewShipAmmo?: ITypeCount[];
BonusMiscItems?: ITypeCount[];
AffiliationChanges?: IAffiliationChange[];
crossPlaySetting?: string;
rewardsMultiplier?: number;
GoalTag: string;
LevelKeyName: string;
ActiveBoosters?: IBooster[];
FusionBundles?: ITypeCount[];
RawUpgrades?: IRawUpgrade[];
MiscItems?: ITypeCount[];
Consumables?: ITypeCount[];
FusionTreasures?: IFusionTreasure[];
Recipes?: ITypeCount[];
QuestKeys?: Omit<IQuestKeyDatabase, "CompletionDate">[];
RegularCredits?: number;
MissionFailed: boolean;