forked from OpenWF/SpaceNinjaServer
		
	feat: nightwave rank up rewards (#1320)
Reviewed-on: OpenWF/SpaceNinjaServer#1320
This commit is contained in:
		
							parent
							
								
									58508a0260
								
							
						
					
					
						commit
						bfcd928fde
					
				
							
								
								
									
										6
									
								
								src/controllers/api/clearNewEpisodeRewardController.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								src/controllers/api/clearNewEpisodeRewardController.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					import { RequestHandler } from "express";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// example req.body: {"NewEpisodeReward":true,"crossPlaySetting":"ENABLED"}
 | 
				
			||||||
 | 
					export const clearNewEpisodeRewardController: RequestHandler = (_req, res) => {
 | 
				
			||||||
 | 
					    res.status(200).end();
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
@ -1,10 +1,17 @@
 | 
				
			|||||||
import { getJSONfromString } from "@/src/helpers/stringHelpers";
 | 
					import { getJSONfromString } from "@/src/helpers/stringHelpers";
 | 
				
			||||||
import { RequestHandler } from "express";
 | 
					import { RequestHandler } from "express";
 | 
				
			||||||
import { getAccountIdForRequest } from "@/src/services/loginService";
 | 
					import { getAccountIdForRequest } from "@/src/services/loginService";
 | 
				
			||||||
import { ExportSyndicates, ISyndicateSacrifice } from "warframe-public-export-plus";
 | 
					import { ExportNightwave, ExportSyndicates, ISyndicateSacrifice } from "warframe-public-export-plus";
 | 
				
			||||||
import { handleStoreItemAcquisition } from "@/src/services/purchaseService";
 | 
					import { handleStoreItemAcquisition } from "@/src/services/purchaseService";
 | 
				
			||||||
import { addMiscItems, combineInventoryChanges, getInventory, updateCurrency } from "@/src/services/inventoryService";
 | 
					import {
 | 
				
			||||||
 | 
					    addItem,
 | 
				
			||||||
 | 
					    addMiscItems,
 | 
				
			||||||
 | 
					    combineInventoryChanges,
 | 
				
			||||||
 | 
					    getInventory,
 | 
				
			||||||
 | 
					    updateCurrency
 | 
				
			||||||
 | 
					} from "@/src/services/inventoryService";
 | 
				
			||||||
import { IInventoryChanges } from "@/src/types/purchaseTypes";
 | 
					import { IInventoryChanges } from "@/src/types/purchaseTypes";
 | 
				
			||||||
 | 
					import { fromStoreItem, isStoreItem } from "@/src/services/itemDataService";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const syndicateSacrificeController: RequestHandler = async (request, response) => {
 | 
					export const syndicateSacrificeController: RequestHandler = async (request, response) => {
 | 
				
			||||||
    const accountId = await getAccountIdForRequest(request);
 | 
					    const accountId = await getAccountIdForRequest(request);
 | 
				
			||||||
@ -22,7 +29,7 @@ export const syndicateSacrificeController: RequestHandler = async (request, resp
 | 
				
			|||||||
        InventoryChanges: {},
 | 
					        InventoryChanges: {},
 | 
				
			||||||
        Level: data.SacrificeLevel,
 | 
					        Level: data.SacrificeLevel,
 | 
				
			||||||
        LevelIncrease: level <= 0 ? 1 : level,
 | 
					        LevelIncrease: level <= 0 ? 1 : level,
 | 
				
			||||||
        NewEpisodeReward: syndicate.Tag == "RadioLegionIntermission9Syndicate"
 | 
					        NewEpisodeReward: false
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    const manifest = ExportSyndicates[data.AffiliationTag];
 | 
					    const manifest = ExportSyndicates[data.AffiliationTag];
 | 
				
			||||||
@ -64,6 +71,19 @@ export const syndicateSacrificeController: RequestHandler = async (request, resp
 | 
				
			|||||||
        );
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (data.AffiliationTag == ExportNightwave.affiliationTag) {
 | 
				
			||||||
 | 
					        const index = syndicate.Title - 1;
 | 
				
			||||||
 | 
					        if (index < ExportNightwave.rewards.length) {
 | 
				
			||||||
 | 
					            res.NewEpisodeReward = true;
 | 
				
			||||||
 | 
					            const reward = ExportNightwave.rewards[index];
 | 
				
			||||||
 | 
					            let rewardType = reward.uniqueName;
 | 
				
			||||||
 | 
					            if (isStoreItem(rewardType)) {
 | 
				
			||||||
 | 
					                rewardType = fromStoreItem(rewardType);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            combineInventoryChanges(res.InventoryChanges, await addItem(inventory, rewardType, reward.itemCount ?? 1));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    await inventory.save();
 | 
					    await inventory.save();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    response.json(res);
 | 
					    response.json(res);
 | 
				
			||||||
 | 
				
			|||||||
@ -15,6 +15,7 @@ import { checkDailyMissionBonusController } from "@/src/controllers/api/checkDai
 | 
				
			|||||||
import { claimCompletedRecipeController } from "@/src/controllers/api/claimCompletedRecipeController";
 | 
					import { claimCompletedRecipeController } from "@/src/controllers/api/claimCompletedRecipeController";
 | 
				
			||||||
import { claimLibraryDailyTaskRewardController } from "@/src/controllers/api/claimLibraryDailyTaskRewardController";
 | 
					import { claimLibraryDailyTaskRewardController } from "@/src/controllers/api/claimLibraryDailyTaskRewardController";
 | 
				
			||||||
import { clearDialogueHistoryController } from "@/src/controllers/api/clearDialogueHistoryController";
 | 
					import { clearDialogueHistoryController } from "@/src/controllers/api/clearDialogueHistoryController";
 | 
				
			||||||
 | 
					import { clearNewEpisodeRewardController } from "@/src/controllers/api/clearNewEpisodeRewardController";
 | 
				
			||||||
import { completeRandomModChallengeController } from "@/src/controllers/api/completeRandomModChallengeController";
 | 
					import { completeRandomModChallengeController } from "@/src/controllers/api/completeRandomModChallengeController";
 | 
				
			||||||
import { confirmGuildInvitationController } from "@/src/controllers/api/confirmGuildInvitationController";
 | 
					import { confirmGuildInvitationController } from "@/src/controllers/api/confirmGuildInvitationController";
 | 
				
			||||||
import { contributeGuildClassController } from "@/src/controllers/api/contributeGuildClassController";
 | 
					import { contributeGuildClassController } from "@/src/controllers/api/contributeGuildClassController";
 | 
				
			||||||
@ -175,6 +176,7 @@ apiRouter.post("/artifactTransmutation.php", artifactTransmutationController);
 | 
				
			|||||||
apiRouter.post("/changeDojoRoot.php", changeDojoRootController);
 | 
					apiRouter.post("/changeDojoRoot.php", changeDojoRootController);
 | 
				
			||||||
apiRouter.post("/claimCompletedRecipe.php", claimCompletedRecipeController);
 | 
					apiRouter.post("/claimCompletedRecipe.php", claimCompletedRecipeController);
 | 
				
			||||||
apiRouter.post("/clearDialogueHistory.php", clearDialogueHistoryController);
 | 
					apiRouter.post("/clearDialogueHistory.php", clearDialogueHistoryController);
 | 
				
			||||||
 | 
					apiRouter.post("/clearNewEpisodeReward.php", clearNewEpisodeRewardController);
 | 
				
			||||||
apiRouter.post("/completeRandomModChallenge.php", completeRandomModChallengeController);
 | 
					apiRouter.post("/completeRandomModChallenge.php", completeRandomModChallengeController);
 | 
				
			||||||
apiRouter.post("/contributeGuildClass.php", contributeGuildClassController);
 | 
					apiRouter.post("/contributeGuildClass.php", contributeGuildClassController);
 | 
				
			||||||
apiRouter.post("/contributeToDojoComponent.php", contributeToDojoComponentController);
 | 
					apiRouter.post("/contributeToDojoComponent.php", contributeToDojoComponentController);
 | 
				
			||||||
 | 
				
			|||||||
@ -250,6 +250,10 @@ export const convertInboxMessage = (message: IInboxMessage): IMessage => {
 | 
				
			|||||||
    } satisfies IMessage;
 | 
					    } satisfies IMessage;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export const isStoreItem = (type: string): boolean => {
 | 
				
			||||||
 | 
					    return type.startsWith("/Lotus/StoreItems/");
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export const toStoreItem = (type: string): string => {
 | 
					export const toStoreItem = (type: string): string => {
 | 
				
			||||||
    return "/Lotus/StoreItems/" + type.substring("/Lotus/".length);
 | 
					    return "/Lotus/StoreItems/" + type.substring("/Lotus/".length);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user