forked from OpenWF/SpaceNinjaServer
parent
8e502ebe0b
commit
593407e3c4
@ -8,6 +8,7 @@ import {
|
|||||||
ExportAnimals,
|
ExportAnimals,
|
||||||
ExportEnemies,
|
ExportEnemies,
|
||||||
ExportFusionBundles,
|
ExportFusionBundles,
|
||||||
|
ExportKeys,
|
||||||
ExportRegions,
|
ExportRegions,
|
||||||
ExportRelics,
|
ExportRelics,
|
||||||
ExportRewards
|
ExportRewards
|
||||||
@ -1141,6 +1142,7 @@ export const addMissionRewards = async (
|
|||||||
const MissionRewards: IMissionReward[] = getRandomMissionDrops(
|
const MissionRewards: IMissionReward[] = getRandomMissionDrops(
|
||||||
inventory,
|
inventory,
|
||||||
rewardInfo,
|
rewardInfo,
|
||||||
|
levelKeyName,
|
||||||
missions,
|
missions,
|
||||||
wagerTier,
|
wagerTier,
|
||||||
firstCompletion
|
firstCompletion
|
||||||
@ -1756,6 +1758,7 @@ function getLevelCreditRewards(node: IRegion): number {
|
|||||||
function getRandomMissionDrops(
|
function getRandomMissionDrops(
|
||||||
inventory: TInventoryDatabaseDocument,
|
inventory: TInventoryDatabaseDocument,
|
||||||
RewardInfo: IRewardInfo,
|
RewardInfo: IRewardInfo,
|
||||||
|
levelKeyName: string | undefined,
|
||||||
mission: IMission | undefined,
|
mission: IMission | undefined,
|
||||||
tierOverride: number | undefined,
|
tierOverride: number | undefined,
|
||||||
firstCompletion: boolean
|
firstCompletion: boolean
|
||||||
@ -2193,7 +2196,7 @@ function getRandomMissionDrops(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (region.cacheRewardManifest && RewardInfo.EnemyCachesFound) {
|
if (region.cacheRewardManifest && RewardInfo.EnemyCachesFound && !RewardInfo.goalId) {
|
||||||
const deck = ExportRewards[region.cacheRewardManifest];
|
const deck = ExportRewards[region.cacheRewardManifest];
|
||||||
for (let rotation = 0; rotation != RewardInfo.EnemyCachesFound; ++rotation) {
|
for (let rotation = 0; rotation != RewardInfo.EnemyCachesFound; ++rotation) {
|
||||||
const drop = getRandomRewardByChance(deck[rotation]);
|
const drop = getRandomRewardByChance(deck[rotation]);
|
||||||
@ -2259,6 +2262,71 @@ function getRandomMissionDrops(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (RewardInfo.EnemyCachesFound) {
|
||||||
|
if (RewardInfo.goalId) {
|
||||||
|
const goal = getWorldState().Goals.find(x => x._id.$oid == RewardInfo.goalId);
|
||||||
|
if (goal) {
|
||||||
|
let currentMissionKey: string | undefined;
|
||||||
|
if (RewardInfo.node == goal.Node) {
|
||||||
|
currentMissionKey = goal.MissionKeyName;
|
||||||
|
} else if (goal.ConcurrentNodes && goal.ConcurrentMissionKeyNames) {
|
||||||
|
for (let i = 0; i < goal.ConcurrentNodes.length; i++) {
|
||||||
|
if (RewardInfo.node == goal.ConcurrentNodes[i]) {
|
||||||
|
currentMissionKey = goal.ConcurrentMissionKeyNames[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (currentMissionKey) {
|
||||||
|
const keyMeta = ExportKeys[currentMissionKey];
|
||||||
|
if (keyMeta.cacheRewardManifest) {
|
||||||
|
const deck = ExportRewards[keyMeta.cacheRewardManifest];
|
||||||
|
for (let rotation = 0; rotation != RewardInfo.EnemyCachesFound; ++rotation) {
|
||||||
|
const drop = getRandomRewardByChance(deck[rotation]);
|
||||||
|
if (drop) {
|
||||||
|
drops.push({
|
||||||
|
StoreItem: drop.type,
|
||||||
|
ItemCount: drop.itemCount,
|
||||||
|
FromEnemyCache: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (RewardInfo.alertId) {
|
||||||
|
const alert = getWorldState().Alerts.find(x => x._id.$oid == RewardInfo.alertId);
|
||||||
|
if (alert && alert.MissionInfo.enemyCacheOverride) {
|
||||||
|
const deck = ExportRewards[alert.MissionInfo.enemyCacheOverride];
|
||||||
|
for (let rotation = 0; rotation != RewardInfo.EnemyCachesFound; ++rotation) {
|
||||||
|
const drop = getRandomRewardByChance(deck[rotation]);
|
||||||
|
if (drop) {
|
||||||
|
drops.push({
|
||||||
|
StoreItem: drop.type,
|
||||||
|
ItemCount: drop.itemCount,
|
||||||
|
FromEnemyCache: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (levelKeyName) {
|
||||||
|
const keyMeta = ExportKeys[levelKeyName];
|
||||||
|
if (keyMeta.cacheRewardManifest) {
|
||||||
|
const deck = ExportRewards[keyMeta.cacheRewardManifest];
|
||||||
|
for (let rotation = 0; rotation != RewardInfo.EnemyCachesFound; ++rotation) {
|
||||||
|
const drop = getRandomRewardByChance(deck[rotation]);
|
||||||
|
if (drop) {
|
||||||
|
drops.push({
|
||||||
|
StoreItem: drop.type,
|
||||||
|
ItemCount: drop.itemCount,
|
||||||
|
FromEnemyCache: true
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (inventory.missionsCanGiveAllRelics) {
|
if (inventory.missionsCanGiveAllRelics) {
|
||||||
for (const drop of drops) {
|
for (const drop of drops) {
|
||||||
const itemType = fromStoreItem(drop.StoreItem);
|
const itemType = fromStoreItem(drop.StoreItem);
|
||||||
|
|||||||
@ -58,6 +58,7 @@ export interface IAlertMissionInfo {
|
|||||||
maxEnemyLevel?: number;
|
maxEnemyLevel?: number;
|
||||||
maxWaveNum?: number;
|
maxWaveNum?: number;
|
||||||
descText?: string;
|
descText?: string;
|
||||||
|
enemyCacheOverride?: string;
|
||||||
|
|
||||||
maxRotations?: number; // SNS specific field
|
maxRotations?: number; // SNS specific field
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user