feat: nightwave rank up rewards #1320
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