Compare commits
2 Commits
main
...
ignChangeT
| Author | SHA1 | Date | |
|---|---|---|---|
| a9c63a342c | |||
| aaa7c0cc2c |
@ -1,17 +1,9 @@
|
||||
import type { RequestHandler } from "express";
|
||||
import { deleteSession } from "../../managers/sessionManager.ts";
|
||||
import { getAccountForRequest } from "../../services/loginService.ts";
|
||||
import { version_compare } from "../../helpers/inventoryHelpers.ts";
|
||||
|
||||
const deleteSessionController: RequestHandler = async (_req, res) => {
|
||||
const account = await getAccountForRequest(_req);
|
||||
const deleteSessionController: RequestHandler = (_req, res) => {
|
||||
deleteSession(_req.query.sessionId as string);
|
||||
if (account.BuildLabel && version_compare(account.BuildLabel, "2016.07.08.16.56") < 0) {
|
||||
// Pre-Specters of the Rail
|
||||
res.send(_req.query.sessionId as string); // Unsure if this is correct, but the client is chill with it
|
||||
} else {
|
||||
res.sendStatus(200);
|
||||
}
|
||||
};
|
||||
|
||||
export { deleteSessionController };
|
||||
|
||||
@ -13,8 +13,8 @@ const hostSessionController: RequestHandler = async (req, res) => {
|
||||
const session = createNewSession(hostSessionRequest, account._id);
|
||||
logger.debug(`New Session Created`, { session });
|
||||
|
||||
if (account.BuildLabel && version_compare(account.BuildLabel, "2016.07.08.16.56") < 0) {
|
||||
// Pre-Specters of the Rail
|
||||
if (account.BuildLabel && version_compare(account.BuildLabel, "2015.03.21.08.17") < 0) {
|
||||
// U15 or below
|
||||
res.send(session.sessionId.toString());
|
||||
} else {
|
||||
res.json({ sessionId: toOid2(session.sessionId, account.BuildLabel), rewardSeed: 99999999 });
|
||||
|
||||
@ -310,13 +310,12 @@ export const getInventoryResponse = async (
|
||||
}
|
||||
|
||||
if (inventory.skipAllDialogue) {
|
||||
inventoryResponse.TauntHistory ??= [];
|
||||
if (!inventoryResponse.TauntHistory.find(x => x.node == "TreasureTutorial")) {
|
||||
inventoryResponse.TauntHistory.push({
|
||||
inventoryResponse.TauntHistory = [
|
||||
{
|
||||
node: "TreasureTutorial",
|
||||
state: "TS_COMPLETED"
|
||||
});
|
||||
}
|
||||
];
|
||||
for (const str of allDialogue) {
|
||||
addString(inventoryResponse.NodeIntrosCompleted, str);
|
||||
}
|
||||
|
||||
@ -109,19 +109,12 @@ const createLoginResponse = (
|
||||
const resp: ILoginResponse = {
|
||||
id: account.id,
|
||||
DisplayName: account.DisplayName,
|
||||
CountryCode: account.CountryCode,
|
||||
AmazonAuthToken: account.AmazonAuthToken,
|
||||
AmazonRefreshToken: account.AmazonRefreshToken,
|
||||
Nonce: account.Nonce,
|
||||
BuildLabel: buildLabel
|
||||
};
|
||||
if (version_compare(buildLabel, "2014.10.24.08.24") >= 0) {
|
||||
// U15 and up
|
||||
resp.CountryCode = account.CountryCode;
|
||||
} else {
|
||||
// U8
|
||||
resp.NatHash = "0";
|
||||
resp.SteamId = "0";
|
||||
}
|
||||
if (version_compare(buildLabel, "2015.02.13.10.41") >= 0) {
|
||||
resp.NRS = [config.nrsAddress ?? myAddress];
|
||||
}
|
||||
|
||||
@ -37,7 +37,7 @@ export const manageQuestsController: RequestHandler = async (req, res) => {
|
||||
switch (operation) {
|
||||
case "completeAll": {
|
||||
for (const questKey of inventory.QuestKeys) {
|
||||
await completeQuest(inventory, questKey.ItemType, undefined);
|
||||
await completeQuest(inventory, questKey.ItemType);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -72,7 +72,7 @@ export const manageQuestsController: RequestHandler = async (req, res) => {
|
||||
break;
|
||||
}
|
||||
|
||||
await completeQuest(inventory, questItemType, undefined);
|
||||
await completeQuest(inventory, questItemType);
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -137,7 +137,7 @@ export const manageQuestsController: RequestHandler = async (req, res) => {
|
||||
|
||||
if (currentStage + 1 == questManifest.chainStages?.length) {
|
||||
logger.debug(`Trying to complete last stage with nextStage, calling completeQuest instead`);
|
||||
await completeQuest(inventory, questKey.ItemType, undefined, true);
|
||||
await completeQuest(inventory, questKey.ItemType, true);
|
||||
} else {
|
||||
if (run > 0) {
|
||||
questKey.Progress[currentStage + 1].c = run;
|
||||
@ -151,14 +151,10 @@ export const manageQuestsController: RequestHandler = async (req, res) => {
|
||||
});
|
||||
|
||||
if (currentStage > 0) {
|
||||
await giveKeyChainMissionReward(
|
||||
inventory,
|
||||
{
|
||||
await giveKeyChainMissionReward(inventory, {
|
||||
KeyChain: questKey.ItemType,
|
||||
ChainStage: currentStage
|
||||
},
|
||||
undefined
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,7 +10,6 @@ import { addPendingFriendController } from "../controllers/api/addPendingFriendC
|
||||
import { addToAllianceController } from "../controllers/api/addToAllianceController.ts";
|
||||
import { addToGuildController } from "../controllers/api/addToGuildController.ts";
|
||||
import { adoptPetController } from "../controllers/api/adoptPetController.ts";
|
||||
import { aggregateSessionsController } from "../controllers/dynamic/aggregateSessionsController.ts";
|
||||
import { apartmentController } from "../controllers/api/apartmentController.ts";
|
||||
import { arcaneCommonController } from "../controllers/api/arcaneCommonController.ts";
|
||||
import { archonFusionController } from "../controllers/api/archonFusionController.ts";
|
||||
@ -171,7 +170,6 @@ import { upgradeOperatorController } from "../controllers/api/upgradeOperatorCon
|
||||
import { upgradesController } from "../controllers/api/upgradesController.ts";
|
||||
import { valenceSwapController } from "../controllers/api/valenceSwapController.ts";
|
||||
import { wishlistController } from "../controllers/api/wishlistController.ts";
|
||||
import { worldStateController } from "../controllers/dynamic/worldStateController.ts";
|
||||
|
||||
const apiRouter = express.Router();
|
||||
|
||||
@ -237,7 +235,6 @@ apiRouter.get("/surveys.php", surveysController);
|
||||
apiRouter.get("/trading.php", tradingController);
|
||||
apiRouter.get("/updateSession.php", updateSessionGetController);
|
||||
apiRouter.get("/upgradeOperator.php", upgradeOperatorController);
|
||||
apiRouter.get("/worldState.php", worldStateController); // U8
|
||||
|
||||
// post
|
||||
apiRouter.post("/abortDojoComponent.php", abortDojoComponentController);
|
||||
@ -249,7 +246,6 @@ apiRouter.post("/addPendingFriend.php", addPendingFriendController);
|
||||
apiRouter.post("/addToAlliance.php", addToAllianceController);
|
||||
apiRouter.post("/addToGuild.php", addToGuildController);
|
||||
apiRouter.post("/adoptPet.php", adoptPetController);
|
||||
apiRouter.post("/aggregateSessions.php", aggregateSessionsController); // Pre-Specters of the Rail builds
|
||||
apiRouter.post("/arcaneCommon.php", arcaneCommonController);
|
||||
apiRouter.post("/archonFusion.php", archonFusionController);
|
||||
apiRouter.post("/artifacts.php", artifactsController);
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
import express from "express";
|
||||
import path from "path";
|
||||
import fs from "fs/promises";
|
||||
import { repoDir, rootDir } from "../helpers/pathHelper.ts";
|
||||
import { args } from "../helpers/commandLineArguments.ts";
|
||||
|
||||
@ -22,62 +21,50 @@ webuiRouter.use("/webui", (req, res, next) => {
|
||||
});
|
||||
|
||||
// Serve virtual routes
|
||||
webuiRouter.get("/webui/inventory", async (_req, res) => {
|
||||
res.set("Content-Type", "text/html;charset=utf8");
|
||||
res.send(await fs.readFile(path.join(baseDir, "static/webui/index.html")));
|
||||
webuiRouter.get("/webui/inventory", (_req, res) => {
|
||||
res.sendFile(path.join(baseDir, "static/webui/index.html"));
|
||||
});
|
||||
webuiRouter.get("/webui/detailedView", async (_req, res) => {
|
||||
res.set("Content-Type", "text/html;charset=utf8");
|
||||
res.send(await fs.readFile(path.join(baseDir, "static/webui/index.html")));
|
||||
webuiRouter.get("/webui/detailedView", (_req, res) => {
|
||||
res.sendFile(path.join(baseDir, "static/webui/index.html"));
|
||||
});
|
||||
webuiRouter.get("/webui/mods", async (_req, res) => {
|
||||
res.set("Content-Type", "text/html;charset=utf8");
|
||||
res.send(await fs.readFile(path.join(baseDir, "static/webui/index.html")));
|
||||
webuiRouter.get("/webui/mods", (_req, res) => {
|
||||
res.sendFile(path.join(baseDir, "static/webui/index.html"));
|
||||
});
|
||||
webuiRouter.get("/webui/settings", async (_req, res) => {
|
||||
res.set("Content-Type", "text/html;charset=utf8");
|
||||
res.send(await fs.readFile(path.join(baseDir, "static/webui/index.html")));
|
||||
webuiRouter.get("/webui/settings", (_req, res) => {
|
||||
res.sendFile(path.join(baseDir, "static/webui/index.html"));
|
||||
});
|
||||
webuiRouter.get("/webui/quests", async (_req, res) => {
|
||||
res.set("Content-Type", "text/html;charset=utf8");
|
||||
res.send(await fs.readFile(path.join(baseDir, "static/webui/index.html")));
|
||||
webuiRouter.get("/webui/quests", (_req, res) => {
|
||||
res.sendFile(path.join(baseDir, "static/webui/index.html"));
|
||||
});
|
||||
webuiRouter.get("/webui/cheats", async (_req, res) => {
|
||||
res.set("Content-Type", "text/html;charset=utf8");
|
||||
res.send(await fs.readFile(path.join(baseDir, "static/webui/index.html")));
|
||||
webuiRouter.get("/webui/cheats", (_req, res) => {
|
||||
res.sendFile(path.join(baseDir, "static/webui/index.html"));
|
||||
});
|
||||
webuiRouter.get("/webui/import", async (_req, res) => {
|
||||
res.set("Content-Type", "text/html;charset=utf8");
|
||||
res.send(await fs.readFile(path.join(baseDir, "static/webui/index.html")));
|
||||
webuiRouter.get("/webui/import", (_req, res) => {
|
||||
res.sendFile(path.join(baseDir, "static/webui/index.html"));
|
||||
});
|
||||
webuiRouter.get("/webui/guildView", async (_req, res) => {
|
||||
res.set("Content-Type", "text/html;charset=utf8");
|
||||
res.send(await fs.readFile(path.join(baseDir, "static/webui/index.html")));
|
||||
webuiRouter.get("/webui/guildView", (_req, res) => {
|
||||
res.sendFile(path.join(baseDir, "static/webui/index.html"));
|
||||
});
|
||||
|
||||
// Serve static files
|
||||
webuiRouter.use("/webui", express.static(path.join(baseDir, "static/webui")));
|
||||
|
||||
// Serve favicon
|
||||
webuiRouter.get("/favicon.ico", async (_req, res) => {
|
||||
res.set("Content-Type", "image/vnd.microsoft.icon");
|
||||
res.send(await fs.readFile(path.join(repoDir, "static/fixed_responses/favicon.ico")));
|
||||
webuiRouter.get("/favicon.ico", (_req, res) => {
|
||||
res.sendFile(path.join(repoDir, "static/fixed_responses/favicon.ico"));
|
||||
});
|
||||
|
||||
// Serve warframe-riven-info
|
||||
webuiRouter.get("/webui/riven-tool/", async (_req, res) => {
|
||||
res.set("Content-Type", "text/html;charset=utf8");
|
||||
res.send(await fs.readFile(path.join(repoDir, "node_modules/warframe-riven-info/index.html")));
|
||||
webuiRouter.get("/webui/riven-tool/", (_req, res) => {
|
||||
res.sendFile(path.join(repoDir, "node_modules/warframe-riven-info/index.html"));
|
||||
});
|
||||
webuiRouter.get("/webui/riven-tool/RivenParser.js", async (_req, res) => {
|
||||
res.set("Content-Type", "text/javascript;charset=utf8");
|
||||
res.send(await fs.readFile(path.join(repoDir, "node_modules/warframe-riven-info/RivenParser.js")));
|
||||
webuiRouter.get("/webui/riven-tool/RivenParser.js", (_req, res) => {
|
||||
res.sendFile(path.join(repoDir, "node_modules/warframe-riven-info/RivenParser.js"));
|
||||
});
|
||||
|
||||
// Serve translations
|
||||
webuiRouter.get("/translations/:file", async (req, res) => {
|
||||
res.set("Content-Type", "text/javascript;charset=utf8");
|
||||
res.send(await fs.readFile(path.join(baseDir, `static/webui/translations/${req.params.file}`)));
|
||||
webuiRouter.get("/translations/:file", (req, res) => {
|
||||
res.sendFile(path.join(baseDir, `static/webui/translations/${req.params.file}`));
|
||||
});
|
||||
|
||||
export { webuiRouter };
|
||||
|
||||
@ -116,8 +116,8 @@ export const createInventory = async (
|
||||
if (config.skipTutorial) {
|
||||
inventory.PlayedParkourTutorial = true;
|
||||
await addStartingGear(inventory);
|
||||
await completeQuest(inventory, "/Lotus/Types/Keys/VorsPrize/VorsPrizeQuestKeyChain", undefined);
|
||||
await completeQuest(inventory, "/Lotus/Types/Keys/ModQuest/ModQuestKeyChain", undefined);
|
||||
await completeQuest(inventory, "/Lotus/Types/Keys/VorsPrize/VorsPrizeQuestKeyChain");
|
||||
await completeQuest(inventory, "/Lotus/Types/Keys/ModQuest/ModQuestKeyChain");
|
||||
|
||||
const completedMissions = ["SolNode27", "SolNode89", "SolNode63", "SolNode85", "SolNode15", "SolNode79"];
|
||||
|
||||
@ -473,9 +473,7 @@ export const addItem = async (
|
||||
return addCustomization(inventory, typeName);
|
||||
}
|
||||
if (typeName in ExportUpgrades || typeName in ExportArcanes) {
|
||||
if (targetFingerprint && typeName.startsWith("/Lotus/Upgrades/Mods/Randomized/Raw")) {
|
||||
logger.debug(`ignoring fingerprint for raw riven mod`);
|
||||
} else if (targetFingerprint) {
|
||||
if (targetFingerprint) {
|
||||
if (quantity != 1) {
|
||||
logger.warn(`adding 1 of ${typeName} ${targetFingerprint} even tho quantity ${quantity} was requested`);
|
||||
}
|
||||
@ -1571,7 +1569,6 @@ const addCrewShip = async (
|
||||
const questChanges = await completeQuest(
|
||||
inventory,
|
||||
"/Lotus/Types/Keys/RailJackBuildQuest/RailjackBuildQuestKeyChain",
|
||||
undefined,
|
||||
false
|
||||
);
|
||||
if (questChanges) {
|
||||
|
||||
@ -40,8 +40,6 @@ import {
|
||||
} from "warframe-public-export-plus";
|
||||
import type { IMessage } from "../models/inboxModel.ts";
|
||||
import { logger } from "../utils/logger.ts";
|
||||
import { version_compare } from "../helpers/inventoryHelpers.ts";
|
||||
import vorsPrizePreU40Rewards from "../../static/fixed_responses/vorsPrizePreU40Rewards.json" with { type: "json" };
|
||||
|
||||
export type WeaponTypeInternal =
|
||||
| "LongGuns"
|
||||
@ -229,13 +227,12 @@ export const getKeyChainItems = ({ KeyChain, ChainStage }: IKeyChainRequest): st
|
||||
};
|
||||
|
||||
export const getLevelKeyRewards = (
|
||||
levelKey: string,
|
||||
buildLabel: string | undefined
|
||||
levelKey: string
|
||||
): { levelKeyRewards?: IMissionReward; levelKeyRewards2?: TReward[] } => {
|
||||
const key = ExportKeys[levelKey] as IKey | undefined;
|
||||
|
||||
const levelKeyRewards = key?.missionReward;
|
||||
let levelKeyRewards2 = key?.rewards;
|
||||
const levelKeyRewards2 = key?.rewards;
|
||||
|
||||
if (!levelKeyRewards && !levelKeyRewards2) {
|
||||
logger.warn(
|
||||
@ -243,12 +240,6 @@ export const getLevelKeyRewards = (
|
||||
);
|
||||
}
|
||||
|
||||
if (buildLabel && version_compare(buildLabel, "2025.10.14.16.10") < 0) {
|
||||
if (levelKey in vorsPrizePreU40Rewards) {
|
||||
levelKeyRewards2 = vorsPrizePreU40Rewards[levelKey as keyof typeof vorsPrizePreU40Rewards] as TReward[];
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
levelKeyRewards,
|
||||
levelKeyRewards2
|
||||
|
||||
@ -1133,8 +1133,7 @@ export const addMissionRewards = async (
|
||||
VoidTearParticipantsCurrWave: voidTearWave,
|
||||
StrippedItems: strippedItems,
|
||||
AffiliationChanges: AffiliationMods,
|
||||
InvasionProgress: invasionProgress,
|
||||
EndOfMatchUpload: endOfMatchUpload
|
||||
InvasionProgress: invasionProgress
|
||||
}: IMissionInventoryUpdateRequest,
|
||||
firstCompletion: boolean
|
||||
): Promise<AddMissionRewardsReturnType> => {
|
||||
@ -1219,7 +1218,7 @@ export const addMissionRewards = async (
|
||||
}
|
||||
|
||||
if (levelKeyName) {
|
||||
const fixedLevelRewards = getLevelKeyRewards(levelKeyName, account.BuildLabel);
|
||||
const fixedLevelRewards = getLevelKeyRewards(levelKeyName);
|
||||
//logger.debug(`fixedLevelRewards ${fixedLevelRewards}`);
|
||||
if (fixedLevelRewards.levelKeyRewards) {
|
||||
missionCompletionCredits += addFixedLevelRewards(
|
||||
@ -1393,7 +1392,6 @@ export const addMissionRewards = async (
|
||||
}
|
||||
|
||||
if (strippedItems) {
|
||||
if (endOfMatchUpload) {
|
||||
for (const si of strippedItems) {
|
||||
if (si.DropTable in droptableAliases) {
|
||||
logger.debug(`rewriting ${si.DropTable} to ${droptableAliases[si.DropTable]}`);
|
||||
@ -1462,9 +1460,6 @@ export const addMissionRewards = async (
|
||||
inventory.EntratiVaultCountLastPeriod! += 1;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
logger.debug(`ignoring StrippedItems in intermediate inventory update, deferring until extraction`);
|
||||
}
|
||||
}
|
||||
|
||||
if (inventory.Nemesis) {
|
||||
|
||||
@ -149,7 +149,6 @@ export const addQuestKey = (
|
||||
export const completeQuest = async (
|
||||
inventory: TInventoryDatabaseDocument,
|
||||
questKey: string,
|
||||
buildLabel: string | undefined,
|
||||
sendMessages: boolean = false
|
||||
): Promise<void | IQuestKeyClient> => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||
@ -198,8 +197,8 @@ export const completeQuest = async (
|
||||
if (stage.c <= run) {
|
||||
stage.c = run;
|
||||
await giveKeyChainStageTriggered(inventory, { KeyChain: questKey, ChainStage: i }, sendMessages);
|
||||
await giveKeyChainMissionReward(inventory, { KeyChain: questKey, ChainStage: i }, buildLabel);
|
||||
await installShipFeatures(inventory, { KeyChain: questKey, ChainStage: i }, buildLabel);
|
||||
await giveKeyChainMissionReward(inventory, { KeyChain: questKey, ChainStage: i });
|
||||
await installShipFeatures(inventory, { KeyChain: questKey, ChainStage: i });
|
||||
}
|
||||
}
|
||||
|
||||
@ -401,8 +400,7 @@ export const giveKeyChainMessage = async (
|
||||
|
||||
export const giveKeyChainMissionReward = async (
|
||||
inventory: TInventoryDatabaseDocument,
|
||||
keyChainInfo: IKeyChainRequest,
|
||||
buildLabel: string | undefined
|
||||
keyChainInfo: IKeyChainRequest
|
||||
): Promise<void> => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||
const chainStages = ExportKeys[keyChainInfo.KeyChain]?.chainStages;
|
||||
@ -411,7 +409,7 @@ export const giveKeyChainMissionReward = async (
|
||||
const missionName = chainStages[keyChainInfo.ChainStage].key;
|
||||
const questKey = inventory.QuestKeys.find(q => q.ItemType === keyChainInfo.KeyChain);
|
||||
if (missionName && questKey) {
|
||||
const fixedLevelRewards = getLevelKeyRewards(missionName, buildLabel);
|
||||
const fixedLevelRewards = getLevelKeyRewards(missionName);
|
||||
const run = questKey.Progress?.[0]?.c ?? 0;
|
||||
if (fixedLevelRewards.levelKeyRewards) {
|
||||
const missionRewards: { StoreItem: string; ItemCount: number }[] = [];
|
||||
@ -465,8 +463,7 @@ export const giveKeyChainStageTriggered = async (
|
||||
|
||||
export const installShipFeatures = async (
|
||||
inventory: TInventoryDatabaseDocument,
|
||||
keyChainInfo: IKeyChainRequest,
|
||||
buildLabel: string | undefined
|
||||
keyChainInfo: IKeyChainRequest
|
||||
): Promise<void> => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
|
||||
const chainStages = ExportKeys[keyChainInfo.KeyChain]?.chainStages;
|
||||
@ -481,7 +478,7 @@ export const installShipFeatures = async (
|
||||
}
|
||||
}
|
||||
if (prevStage.key) {
|
||||
const fixedLevelRewards = getLevelKeyRewards(prevStage.key, buildLabel);
|
||||
const fixedLevelRewards = getLevelKeyRewards(prevStage.key);
|
||||
if (fixedLevelRewards.levelKeyRewards?.items) {
|
||||
for (const item of fixedLevelRewards.levelKeyRewards.items) {
|
||||
if (item.startsWith("/Lotus/StoreItems/Types/Items/ShipFeatureItems/")) {
|
||||
|
||||
@ -55,8 +55,6 @@ export interface ILoginResponse extends IAccountAndLoginResponseCommons {
|
||||
DTLS?: number;
|
||||
IRC?: string[];
|
||||
HUB?: string;
|
||||
NatHash?: string;
|
||||
SteamId?: string;
|
||||
}
|
||||
|
||||
export interface IGroup {
|
||||
|
||||
@ -1,165 +0,0 @@
|
||||
{
|
||||
"/Lotus/Types/Keys/VorsPrize/MissionOne": [
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Types/Items/ShipFeatureItems/SocialMenuFeatureItem"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/WeaponMeleeDamageMod"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/WeaponDamageAmountMod"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/WeaponDamageAmountMod"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_CREDITS",
|
||||
"amount": 2500
|
||||
}
|
||||
],
|
||||
"/Lotus/Types/Keys/VorsPrize/MissionTwo": [
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Types/Items/ShipFeatureItems/ModsFeatureItem"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/Warframe/AvatarHealthMaxMod"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/Warframe/AvatarShieldMaxMod"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/Warframe/AvatarAbilityRangeMod"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/Warframe/AvatarAbilityStrengthMod"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/Warframe/AvatarAbilityDurationMod"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_CREDITS",
|
||||
"amount": 2500
|
||||
}
|
||||
],
|
||||
"/Lotus/Types/Keys/VorsPrize/MissionThree": {
|
||||
"name": "/Lotus/Language/G1Quests/VorsPrize3",
|
||||
"parentName": "/Lotus/Types/Keys/TestKeyA",
|
||||
"codexSecret": true,
|
||||
"rewards": [
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Types/Items/ShipFeatureItems/FoundryFeatureItem"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/Melee/WeaponFireRateMod"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/WeaponFactionDamageCorpus"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/Rifle/WeaponFactionDamageGrineer"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/WeaponFireDamageMod"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/Pistol/WeaponElectricityDamageMod"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_CREDITS",
|
||||
"amount": 2500
|
||||
}
|
||||
]
|
||||
},
|
||||
"/Lotus/Types/Keys/VorsPrize/MissionFour": [
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/Warframe/AvatarPickupBonusMod"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/Warframe/AvatarPowerMaxMod"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/Warframe/AvatarEnemyRadarMod"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_CREDITS",
|
||||
"amount": 2500
|
||||
}
|
||||
],
|
||||
"/Lotus/Types/Keys/VorsPrize/MissionFive": [
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Types/Items/ShipFeatureItems/MercuryNavigationFeatureItem"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/CommonFusionBundle"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/CommonFusionBundle"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/CommonFusionBundle"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/CommonFusionBundle"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/CommonFusionBundle"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/CommonFusionBundle"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/CommonFusionBundle"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/CommonFusionBundle"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/CommonFusionBundle"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/CommonFusionBundle"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/CommonFusionBundle"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_STORE_ITEM",
|
||||
"itemType": "/Lotus/StoreItems/Upgrades/Mods/FusionBundles/CommonFusionBundle"
|
||||
},
|
||||
{
|
||||
"rewardType": "RT_CREDITS",
|
||||
"amount": 5000
|
||||
}
|
||||
]
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user