fix: show endless relic rewards in EOM screen (#2813)
Closes #2812 Reviewed-on: #2813 Co-authored-by: Sainan <63328889+Sainan@users.noreply.github.com> Co-committed-by: Sainan <63328889+Sainan@users.noreply.github.com>
This commit is contained in:
parent
fc38f818dd
commit
de9dfb3d71
@ -11,7 +11,11 @@ export const getVoidProjectionRewardsController: RequestHandler = async (req, re
|
||||
|
||||
if (data.ParticipantInfo.QualifiesForReward && !data.ParticipantInfo.HaveRewardResponse) {
|
||||
const inventory = await getInventory(accountId);
|
||||
await crackRelic(inventory, data.ParticipantInfo);
|
||||
const reward = await crackRelic(inventory, data.ParticipantInfo);
|
||||
if (!inventory.MissionRelicRewards || inventory.MissionRelicRewards.length >= data.CurrentWave) {
|
||||
inventory.MissionRelicRewards = [];
|
||||
}
|
||||
inventory.MissionRelicRewards.push({ ItemType: reward.type, ItemCount: reward.itemCount });
|
||||
await inventory.save();
|
||||
}
|
||||
|
||||
|
||||
@ -54,6 +54,9 @@ export const crackRelic = async (
|
||||
(await handleStoreItemAcquisition(reward.type, inventory, reward.itemCount)).InventoryChanges
|
||||
);
|
||||
|
||||
// Client has picked its own reward (for lack of choice)
|
||||
participant.ChosenRewardOwner = participant.AccountId;
|
||||
|
||||
return reward;
|
||||
};
|
||||
|
||||
|
||||
@ -1473,6 +1473,9 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
|
||||
SubscribedToEmailsPersonalized: { type: Number, default: 0 },
|
||||
RewardSeed: BigInt,
|
||||
|
||||
// Temporary data so we can show all relic rewards from an endless mission at EOM
|
||||
MissionRelicRewards: { type: [typeCountSchema], default: undefined },
|
||||
|
||||
//Credit
|
||||
RegularCredits: { type: Number, default: 0 },
|
||||
//Platinum
|
||||
@ -1841,6 +1844,7 @@ inventorySchema.set("toJSON", {
|
||||
delete returnedObject._id;
|
||||
delete returnedObject.__v;
|
||||
delete returnedObject.accountOwnerId;
|
||||
delete returnedObject.MissionRelicRewards;
|
||||
|
||||
const inventoryDatabase = returnedObject as Partial<IInventoryDatabase>;
|
||||
const inventoryResponse = returnedObject as IInventoryClient;
|
||||
|
||||
@ -1334,13 +1334,21 @@ export const addMissionRewards = async (
|
||||
rngRewardCredits: inventoryChanges.RegularCredits ?? 0
|
||||
});
|
||||
|
||||
if (
|
||||
voidTearWave &&
|
||||
voidTearWave.Participants[0].QualifiesForReward &&
|
||||
!voidTearWave.Participants[0].HaveRewardResponse
|
||||
) {
|
||||
const reward = await crackRelic(inventory, voidTearWave.Participants[0], inventoryChanges);
|
||||
MissionRewards.push({ StoreItem: reward.type, ItemCount: reward.itemCount });
|
||||
if (voidTearWave && voidTearWave.Participants[0].QualifiesForReward) {
|
||||
if (!voidTearWave.Participants[0].HaveRewardResponse) {
|
||||
// non-endless fissure; giving reward now
|
||||
const reward = await crackRelic(inventory, voidTearWave.Participants[0], inventoryChanges);
|
||||
MissionRewards.push({ StoreItem: reward.type, ItemCount: reward.itemCount });
|
||||
} else if (inventory.MissionRelicRewards) {
|
||||
// endless fissure; already gave reward(s) but should still show in EOM screen
|
||||
for (const reward of inventory.MissionRelicRewards) {
|
||||
MissionRewards.push({
|
||||
StoreItem: reward.ItemType,
|
||||
ItemCount: reward.ItemCount
|
||||
});
|
||||
}
|
||||
inventory.MissionRelicRewards = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
if (strippedItems) {
|
||||
|
||||
@ -147,6 +147,7 @@ export interface IInventoryDatabase
|
||||
LastInventorySync?: Types.ObjectId;
|
||||
EndlessXP?: IEndlessXpProgressDatabase[];
|
||||
PersonalGoalProgress?: IGoalProgressDatabase[];
|
||||
MissionRelicRewards?: ITypeCount[];
|
||||
}
|
||||
|
||||
export interface IQuestKeyDatabase {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user