fix: show endless relic rewards in EOM screen (#2813)
All checks were successful
Build Docker image / docker-amd64 (push) Successful in 44s
Build / build (push) Successful in 2m17s
Build Docker image / docker-arm64 (push) Successful in 1m22s

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:
Sainan 2025-09-26 04:42:08 -07:00 committed by Sainan
parent fc38f818dd
commit de9dfb3d71
5 changed files with 28 additions and 8 deletions

View File

@ -11,7 +11,11 @@ export const getVoidProjectionRewardsController: RequestHandler = async (req, re
if (data.ParticipantInfo.QualifiesForReward && !data.ParticipantInfo.HaveRewardResponse) { if (data.ParticipantInfo.QualifiesForReward && !data.ParticipantInfo.HaveRewardResponse) {
const inventory = await getInventory(accountId); 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(); await inventory.save();
} }

View File

@ -54,6 +54,9 @@ export const crackRelic = async (
(await handleStoreItemAcquisition(reward.type, inventory, reward.itemCount)).InventoryChanges (await handleStoreItemAcquisition(reward.type, inventory, reward.itemCount)).InventoryChanges
); );
// Client has picked its own reward (for lack of choice)
participant.ChosenRewardOwner = participant.AccountId;
return reward; return reward;
}; };

View File

@ -1473,6 +1473,9 @@ const inventorySchema = new Schema<IInventoryDatabase, InventoryDocumentProps>(
SubscribedToEmailsPersonalized: { type: Number, default: 0 }, SubscribedToEmailsPersonalized: { type: Number, default: 0 },
RewardSeed: BigInt, RewardSeed: BigInt,
// Temporary data so we can show all relic rewards from an endless mission at EOM
MissionRelicRewards: { type: [typeCountSchema], default: undefined },
//Credit //Credit
RegularCredits: { type: Number, default: 0 }, RegularCredits: { type: Number, default: 0 },
//Platinum //Platinum
@ -1841,6 +1844,7 @@ inventorySchema.set("toJSON", {
delete returnedObject._id; delete returnedObject._id;
delete returnedObject.__v; delete returnedObject.__v;
delete returnedObject.accountOwnerId; delete returnedObject.accountOwnerId;
delete returnedObject.MissionRelicRewards;
const inventoryDatabase = returnedObject as Partial<IInventoryDatabase>; const inventoryDatabase = returnedObject as Partial<IInventoryDatabase>;
const inventoryResponse = returnedObject as IInventoryClient; const inventoryResponse = returnedObject as IInventoryClient;

View File

@ -1334,13 +1334,21 @@ export const addMissionRewards = async (
rngRewardCredits: inventoryChanges.RegularCredits ?? 0 rngRewardCredits: inventoryChanges.RegularCredits ?? 0
}); });
if ( if (voidTearWave && voidTearWave.Participants[0].QualifiesForReward) {
voidTearWave && if (!voidTearWave.Participants[0].HaveRewardResponse) {
voidTearWave.Participants[0].QualifiesForReward && // non-endless fissure; giving reward now
!voidTearWave.Participants[0].HaveRewardResponse const reward = await crackRelic(inventory, voidTearWave.Participants[0], inventoryChanges);
) { MissionRewards.push({ StoreItem: reward.type, ItemCount: reward.itemCount });
const reward = await crackRelic(inventory, voidTearWave.Participants[0], inventoryChanges); } else if (inventory.MissionRelicRewards) {
MissionRewards.push({ StoreItem: reward.type, ItemCount: reward.itemCount }); // 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) { if (strippedItems) {

View File

@ -147,6 +147,7 @@ export interface IInventoryDatabase
LastInventorySync?: Types.ObjectId; LastInventorySync?: Types.ObjectId;
EndlessXP?: IEndlessXpProgressDatabase[]; EndlessXP?: IEndlessXpProgressDatabase[];
PersonalGoalProgress?: IGoalProgressDatabase[]; PersonalGoalProgress?: IGoalProgressDatabase[];
MissionRelicRewards?: ITypeCount[];
} }
export interface IQuestKeyDatabase { export interface IQuestKeyDatabase {