forked from OpenWF/SpaceNinjaServer
		
	fix: show endless relic rewards in EOM screen (#2813)
Closes #2812 Reviewed-on: OpenWF/SpaceNinjaServer#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
 | 
			
		||||
    ) {
 | 
			
		||||
    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