forked from OpenWF/SpaceNinjaServer
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:
parent
d396fe8b5c
commit
1c82b90033
@ -997,7 +997,7 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
|
|||||||
ShipDecorations: [typeCountSchema],
|
ShipDecorations: [typeCountSchema],
|
||||||
|
|
||||||
//Railjack/Components(https://warframe.fandom.com/wiki/Railjack/Components)
|
//Railjack/Components(https://warframe.fandom.com/wiki/Railjack/Components)
|
||||||
CrewShipRawSalvage: [Schema.Types.Mixed],
|
CrewShipRawSalvage: [typeCountSchema],
|
||||||
|
|
||||||
//Default RailJack
|
//Default RailJack
|
||||||
CrewShipAmmo: [typeCountSchema],
|
CrewShipAmmo: [typeCountSchema],
|
||||||
|
@ -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 => {
|
export const addRecipes = (inventory: TInventoryDatabaseDocument, itemsArray: ITypeCount[] | undefined): void => {
|
||||||
const { Recipes } = inventory;
|
const { Recipes } = inventory;
|
||||||
|
|
||||||
|
@ -6,6 +6,8 @@ import { equipmentKeys, IInventoryDatabase, TEquipmentKey } from "@/src/types/in
|
|||||||
import {
|
import {
|
||||||
addChallenges,
|
addChallenges,
|
||||||
addConsumables,
|
addConsumables,
|
||||||
|
addCrewShipAmmo,
|
||||||
|
addCrewShipRawSalvage,
|
||||||
addFocusXpIncreases,
|
addFocusXpIncreases,
|
||||||
addFusionTreasures,
|
addFusionTreasures,
|
||||||
addGearExpByCategory,
|
addGearExpByCategory,
|
||||||
@ -122,6 +124,7 @@ export const addMissionInventoryUpdates = (
|
|||||||
addMods(inventory, value);
|
addMods(inventory, value);
|
||||||
break;
|
break;
|
||||||
case "MiscItems":
|
case "MiscItems":
|
||||||
|
case "BonusMiscItems":
|
||||||
addMiscItems(inventory, value);
|
addMiscItems(inventory, value);
|
||||||
break;
|
break;
|
||||||
case "Consumables":
|
case "Consumables":
|
||||||
@ -136,6 +139,12 @@ export const addMissionInventoryUpdates = (
|
|||||||
case "FusionTreasures":
|
case "FusionTreasures":
|
||||||
addFusionTreasures(inventory, value);
|
addFusionTreasures(inventory, value);
|
||||||
break;
|
break;
|
||||||
|
case "CrewShipRawSalvage":
|
||||||
|
addCrewShipRawSalvage(inventory, value);
|
||||||
|
break;
|
||||||
|
case "CrewShipAmmo":
|
||||||
|
addCrewShipAmmo(inventory, value);
|
||||||
|
break;
|
||||||
case "FusionBundles": {
|
case "FusionBundles": {
|
||||||
let fusionPoints = 0;
|
let fusionPoints = 0;
|
||||||
for (const fusionBundle of value) {
|
for (const fusionBundle of value) {
|
||||||
@ -195,7 +204,6 @@ export const addMissionRewards = async (
|
|||||||
) => {
|
) => {
|
||||||
if (!rewardInfo) {
|
if (!rewardInfo) {
|
||||||
logger.warn("no reward info provided");
|
logger.warn("no reward info provided");
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: check double reward merging
|
//TODO: check double reward merging
|
||||||
@ -287,9 +295,9 @@ function getLevelCreditRewards(nodeName: string): number {
|
|||||||
//TODO: get dark sektor fixed credit rewards and railjack bonus
|
//TODO: get dark sektor fixed credit rewards and railjack bonus
|
||||||
}
|
}
|
||||||
|
|
||||||
function getRandomMissionDrops(RewardInfo: IRewardInfo): IRngResult[] {
|
function getRandomMissionDrops(RewardInfo: IRewardInfo | undefined): IRngResult[] {
|
||||||
const drops: IRngResult[] = [];
|
const drops: IRngResult[] = [];
|
||||||
if (RewardInfo.node in ExportRegions) {
|
if (RewardInfo && RewardInfo.node in ExportRegions) {
|
||||||
const region = ExportRegions[RewardInfo.node];
|
const region = ExportRegions[RewardInfo.node];
|
||||||
const rewardManifests = region.rewardManifests ?? [];
|
const rewardManifests = region.rewardManifests ?? [];
|
||||||
|
|
||||||
|
@ -35,18 +35,23 @@ export interface IUpdateChallengeProgressRequest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export type IMissionInventoryUpdateRequest = {
|
export type IMissionInventoryUpdateRequest = {
|
||||||
|
MiscItems?: ITypeCount[];
|
||||||
|
Recipes?: ITypeCount[];
|
||||||
|
FusionBundles?: ITypeCount[];
|
||||||
|
Consumables?: ITypeCount[];
|
||||||
|
FusionBundels?: ITypeCount[];
|
||||||
|
CrewShipRawSalvage?: ITypeCount[];
|
||||||
|
CrewShipAmmo?: ITypeCount[];
|
||||||
|
BonusMiscItems?: ITypeCount[];
|
||||||
|
|
||||||
AffiliationChanges?: IAffiliationChange[];
|
AffiliationChanges?: IAffiliationChange[];
|
||||||
crossPlaySetting?: string;
|
crossPlaySetting?: string;
|
||||||
rewardsMultiplier?: number;
|
rewardsMultiplier?: number;
|
||||||
GoalTag: string;
|
GoalTag: string;
|
||||||
LevelKeyName: string;
|
LevelKeyName: string;
|
||||||
ActiveBoosters?: IBooster[];
|
ActiveBoosters?: IBooster[];
|
||||||
FusionBundles?: ITypeCount[];
|
|
||||||
RawUpgrades?: IRawUpgrade[];
|
RawUpgrades?: IRawUpgrade[];
|
||||||
MiscItems?: ITypeCount[];
|
|
||||||
Consumables?: ITypeCount[];
|
|
||||||
FusionTreasures?: IFusionTreasure[];
|
FusionTreasures?: IFusionTreasure[];
|
||||||
Recipes?: ITypeCount[];
|
|
||||||
QuestKeys?: Omit<IQuestKeyDatabase, "CompletionDate">[];
|
QuestKeys?: Omit<IQuestKeyDatabase, "CompletionDate">[];
|
||||||
RegularCredits?: number;
|
RegularCredits?: number;
|
||||||
MissionFailed: boolean;
|
MissionFailed: boolean;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user