From 230534f2437b99119e56e2818a8571ef8ec3b7cd Mon Sep 17 00:00:00 2001
From: Ordis <134585663+OrdisPrime@users.noreply.github.com>
Date: Fri, 21 Feb 2025 14:17:08 +0100
Subject: [PATCH 1/2] test
---
src/controllers/custom/manageQuestsController.ts | 9 ++++++++-
static/webui/index.html | 10 ++++++----
static/webui/translations/en.js | 9 +++++----
3 files changed, 19 insertions(+), 9 deletions(-)
diff --git a/src/controllers/custom/manageQuestsController.ts b/src/controllers/custom/manageQuestsController.ts
index 49283bf3..82bd1645 100644
--- a/src/controllers/custom/manageQuestsController.ts
+++ b/src/controllers/custom/manageQuestsController.ts
@@ -13,7 +13,8 @@ export const manageQuestsController: RequestHandler = async (req, res) => {
| "completeAll"
| "ResetAll"
| "completeAllUnlocked"
- | "updateKey";
+ | "updateKey"
+ | "giveAllQuests";
const questKeyUpdate = req.body as IUpdateQuestRequest["QuestKeys"];
const allQuestKeys: string[] = [];
@@ -105,6 +106,12 @@ export const manageQuestsController: RequestHandler = async (req, res) => {
inventory.ActiveQuest = "";
break;
}
+ case "giveAllQuests": {
+ for (const questKey of allQuestKeys) {
+ addQuestKey(inventory, { ItemType: questKey });
+ }
+ break;
+ }
}
await inventory.save();
diff --git a/static/webui/index.html b/static/webui/index.html
index 6af03e3c..081ca3d2 100644
--- a/static/webui/index.html
+++ b/static/webui/index.html
@@ -539,10 +539,12 @@
-
-
-
-
+
+
+
+
+
+
diff --git a/static/webui/translations/en.js b/static/webui/translations/en.js
index 70203a0f..77cadccc 100644
--- a/static/webui/translations/en.js
+++ b/static/webui/translations/en.js
@@ -118,10 +118,11 @@ dict = {
cheats_changeButton: `Change`,
cheats_none: `None`,
cheats_quests: `Quests`,
- cheats_quests_UnlockAll: `Unlock All Quests`,
- cheats_quests_CompleteAll: `Complete All Quests`,
- cheats_quests_CompleteAllUnlocked: `Complete All Unlocked Quests`,
- cheats_quests_ResetAll: `Reset All Quests`,
+ cheats_quests_unlockAll: `Unlock All Quests`,
+ cheats_quests_completeAll: `Complete All Quests`,
+ cheats_quests_completeAllUnlocked: `Complete All Unlocked Quests`,
+ cheats_quests_resetAll: `Reset All Quests`,
+ cheats_quests_giveAll: `Give All Quests`,
import_importNote: `You can provide a full or partial inventory response (client respresentation) here. All fields that are supported by the importer will be overwritten in your account.`,
import_submit: `Submit`
};
--
2.47.2
From e1874bea15e1b28217968b82c8bad09d90b8bde3 Mon Sep 17 00:00:00 2001
From: Ordis <134585663+OrdisPrime@users.noreply.github.com>
Date: Fri, 21 Feb 2025 14:24:40 +0100
Subject: [PATCH 2/2] test
---
.../api/giveStartingGearController.ts | 128 ++++++++++++++++++
.../custom/manageQuestsController.ts | 6 +-
static/fixed_responses/junctionRewards.json | 66 +++++++++
3 files changed, 197 insertions(+), 3 deletions(-)
create mode 100644 src/controllers/api/giveStartingGearController.ts
create mode 100644 static/fixed_responses/junctionRewards.json
diff --git a/src/controllers/api/giveStartingGearController.ts b/src/controllers/api/giveStartingGearController.ts
new file mode 100644
index 00000000..9948ea62
--- /dev/null
+++ b/src/controllers/api/giveStartingGearController.ts
@@ -0,0 +1,128 @@
+import { getJSONfromString } from "@/src/helpers/stringHelpers";
+import { InventoryDocumentProps } from "@/src/models/inventoryModels/inventoryModel";
+import {
+ addEquipment,
+ addItem,
+ addPowerSuit,
+ combineInventoryChanges,
+ getInventory,
+ updateSlots
+} from "@/src/services/inventoryService";
+import { getAccountIdForRequest } from "@/src/services/loginService";
+import { IEquipmentClient } from "@/src/types/inventoryTypes/commonInventoryTypes";
+import {
+ IInventoryClient,
+ IInventoryDatabase,
+ InventorySlot,
+ TEquipmentKey
+} from "@/src/types/inventoryTypes/inventoryTypes";
+import { IInventoryChanges } from "@/src/types/purchaseTypes";
+import { RequestHandler } from "express";
+import { HydratedDocument } from "mongoose";
+
+export const giveStartingGearController: RequestHandler = async (req, res) => {
+ const accountId = await getAccountIdForRequest(req);
+ const startingGear = getJSONfromString>(String(req.body));
+ const inventory = await getInventory(accountId);
+
+ const inventoryChanges = await addStartingGear(inventory, startingGear);
+
+ res.send(inventoryChanges);
+};
+
+//TODO: RawUpgrades might need to return a LastAdded
+const awakeningRewards = [
+ "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem1",
+ "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem2",
+ "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem3",
+ "/Lotus/Types/StoreItems/AvatarImages/AvatarImageItem4",
+ "/Lotus/Types/Restoratives/LisetAutoHack",
+ "/Lotus/Upgrades/Mods/Warframe/AvatarShieldMaxMod"
+];
+
+type test = IInventoryClient & [key in TEquipmentKey]?: Partial[] ;
+export const addStartingGear = async (
+ inventory: HydratedDocument,
+ startingGear: test,
+ _skipTutorial: boolean = false
+) => {
+ const { LongGuns, Pistols, Suits, Melee } = startingGear;
+
+ //TODO: properly merge weapon bin changes
+ const inventoryChanges: IInventoryChanges = {};
+ addEquipment(inventory, "LongGuns", LongGuns[0].ItemType, undefined, inventoryChanges);
+ addEquipment(inventory, "Pistols", Pistols[0].ItemType, undefined, inventoryChanges);
+ addEquipment(inventory, "Melee", Melee[0].ItemType, undefined, inventoryChanges);
+ addEquipment(inventory, "Suits", Suits[0].ItemType, undefined, inventoryChanges, { Configs: Suits[0].Configs });
+ addEquipment(
+ inventory,
+ "DataKnives",
+ "/Lotus/Weapons/Tenno/HackingDevices/TnHackingDevice/TnHackingDeviceWeapon",
+ undefined,
+ inventoryChanges,
+ { XP: 450_000 }
+ );
+ addEquipment(
+ inventory,
+ "Scoops",
+ "/Lotus/Weapons/Tenno/Speedball/SpeedballWeaponTest",
+ undefined,
+ inventoryChanges
+ );
+
+ updateSlots(inventory, InventorySlot.SUITS, 0, 1);
+ updateSlots(inventory, InventorySlot.WEAPONS, 0, 3);
+ inventoryChanges.SuitBin = { count: 1, platinum: 0, Slots: -1 };
+ inventoryChanges.WeaponBin = { count: 3, platinum: 0, Slots: -3 };
+
+ await addItem(inventory, "/Lotus/Types/Keys/VorsPrize/VorsPrizeQuestKeyChain");
+ inventory.ActiveQuest = "/Lotus/Types/Keys/VorsPrize/VorsPrizeQuestKeyChain";
+
+ inventory.PremiumCredits = 50;
+ inventory.PremiumCreditsFree = 50;
+ inventoryChanges.PremiumCredits = 50;
+ inventoryChanges.PremiumCreditsFree = 50;
+ inventory.RegularCredits = 3000;
+ inventoryChanges.RegularCredits = 3000;
+
+ for (const item of awakeningRewards) {
+ const inventoryDelta = await addItem(inventory, item);
+ combineInventoryChanges(inventoryChanges, inventoryDelta.InventoryChanges);
+ }
+ // currentloadoutids
+
+ // "LoadOutPresets": {
+ // "NORMAL": [
+ // {
+ // "s": {
+ // "ItemId": { "$oid": "67b73fbfb56b4b84d70433c2" },
+ // "mod": 0,
+ // "cus": 0
+ // },
+ // "p": {
+ // "ItemId": { "$oid": "67b73fbfb56b4b84d70433c5" },
+ // "mod": 0,
+ // "cus": 0
+ // },
+ // "l": {
+ // "ItemId": { "$oid": "67b73fbfb56b4b84d70433c4" },
+ // "mod": 0,
+ // "cus": 0
+ // },
+ // "m": {
+ // "ItemId": { "$oid": "67b73fbfb56b4b84d70433c6" },
+ // "mod": 0,
+ // "cus": 0
+ // },
+ // "ItemId": { "$oid": "67b73fbfb56b4b84d70433c7" }
+ // }
+ // ]
+ // },
+
+ inventory.PlayedParkourTutorial = true;
+ inventory.ReceivedStartingGear = true;
+
+ //originally ship is returned
+ //also weaponskins
+ return inventoryChanges;
+};
diff --git a/src/controllers/custom/manageQuestsController.ts b/src/controllers/custom/manageQuestsController.ts
index 82bd1645..edf1feae 100644
--- a/src/controllers/custom/manageQuestsController.ts
+++ b/src/controllers/custom/manageQuestsController.ts
@@ -14,7 +14,7 @@ export const manageQuestsController: RequestHandler = async (req, res) => {
| "ResetAll"
| "completeAllUnlocked"
| "updateKey"
- | "giveAllQuests";
+ | "giveAll";
const questKeyUpdate = req.body as IUpdateQuestRequest["QuestKeys"];
const allQuestKeys: string[] = [];
@@ -72,6 +72,7 @@ export const manageQuestsController: RequestHandler = async (req, res) => {
for (const questKey of inventory.QuestKeys) {
questKey.Completed = false;
questKey.Progress = [];
+ questKey.CompletionDate = undefined;
}
inventory.ActiveQuest = "";
break;
@@ -79,7 +80,6 @@ export const manageQuestsController: RequestHandler = async (req, res) => {
case "completeAllUnlocked": {
logger.info("completing all unlocked quests..");
for (const questKey of inventory.QuestKeys) {
- console.log("size of questkeys", inventory.QuestKeys.length);
try {
await completeQuest(inventory, questKey.ItemType);
} catch (error) {
@@ -106,7 +106,7 @@ export const manageQuestsController: RequestHandler = async (req, res) => {
inventory.ActiveQuest = "";
break;
}
- case "giveAllQuests": {
+ case "giveAll": {
for (const questKey of allQuestKeys) {
addQuestKey(inventory, { ItemType: questKey });
}
diff --git a/static/fixed_responses/junctionRewards.json b/static/fixed_responses/junctionRewards.json
new file mode 100644
index 00000000..5dbad9c1
--- /dev/null
+++ b/static/fixed_responses/junctionRewards.json
@@ -0,0 +1,66 @@
+{ "VenusToMercuryJunction":
+ ["/Lotus/StoreItems/Types/Keys/InfestedIntroQuest/InfestedIntroQuestKeyChain",
+ "/Lotus/StoreItems/Types/Keys/KubrowQuest/KubrowQuestKeyChain",
+ "/Lotus/StoreItems/Weapons/Tenno/Rifle/BoltoRifle",
+ "/Lotus/StoreItems/Upgrades/Mods/Warframe/AvatarShieldRechargeRateMod",
+ "/Lotus/StoreItems/Upgrades/Mods/Warframe/AvatarAbilityEfficiencyMod",
+ "/Lotus/StoreItems/Types/Game/KubrowPet/EggHatcher",]
+"EarthToVenusJunction":
+ /Lotus/StoreItems/Types/Recipes/Weapons/FurisBlueprint
+ /Lotus/StoreItems/Upgrades/Mods/Melee/WeaponFreezeDamageMod
+ /Lotus/StoreItems/Upgrades/Mods/Rifle/WeaponElectricityDamageMod
+ /Lotus/StoreItems/Types/Recipes/SentinelRecipes/TnSentinelCrossBlueprint
+ /Lotus/StoreItems/Weapons/Tenno/Melee/MeleeTrees/StaffCmbOneMeleeTree
+ /Lotus/StoreItems/Types/Items/MiscItems/OrokinReactor
+ /Lotus/StoreItems/Upgrades/Mods/Aura/PlayerEnergyHealthRegenAuraMod
+EarthToMarsJunction
+ /Lotus/StoreItems/Types/Keys/ArchwingQuest/ArchwingQuestKeyChain
+ /Lotus/StoreItems/Types/Game/KubrowPet/EggHatcher
+ /Lotus/StoreItems/Types/Items/ShipFeatureItems/VoidProjectionFeatureItem
+ /Lotus/StoreItems/Types/Game/Projections/T1VoidProjectionRevenantPrimeABronze
+ /Lotus/StoreItems/Weapons/Tenno/Melee/Hammer/HammerWeapon
+ /Lotus/StoreItems/Weapons/Tenno/Melee/MeleeTrees/IronPhoenixMeleeTree
+ /Lotus/StoreItems/Types/Keys/InfestedMicroplanetQuest/InfestedMicroplanetQuestKeyChain
+MarsToCeresJunction
+ /Lotus/StoreItems/Types/Recipes/Weapons/GrnSniperRifleBlueprint
+ /Lotus/StoreItems/Upgrades/Mods/Melee/WeaponToxinDamageMod
+ /Lotus/StoreItems/Weapons/Tenno/Melee/MeleeTrees/DualSwordCmbOneMeleeTree
+MarsToPhobosJunction
+ /Lotus/StoreItems/Types/Keys/SpyQuestKeyChain/SpyQuestKeyChain
+ /Lotus/StoreItems/Types/Recipes/Weapons/GrnHeavyPistolBlueprint
+ /Lotus/StoreItems/Types/StoreItems/Consumables/CipherBlueprint
+ /Lotus/StoreItems/Upgrades/Mods/Rifle/WeaponReloadSpeedMod
+ /Lotus/StoreItems/Upgrades/Mods/Warframe/AvatarLootRadarMod
+ /Lotus/StoreItems/Types/Items/MiscItems/OrokinCatalyst
+JupiterToEuropaJunction
+ /Lotus/StoreItems/Types/Keys/LimboQuest/LimboQuestKeyChain
+ /Lotus/StoreItems/Types/Keys/DragonQuest/DragonQuestKeyChain
+ /Lotus/StoreItems/Types/Recipes/Weapons/CorpusMinigunBlueprint
+ /Lotus/StoreItems/Upgrades/Mods/Aura/PlayerHealthAuraMod
+JupiterToSaturnJunction
+ /Lotus/StoreItems/Types/Recipes/Weapons/GrenadeLauncherBlueprint
+ /Lotus/StoreItems/Types/Keys/ProteaQuest/ProteaQuestKeyChain
+SaturnToUranusJunction
+ /Lotus/StoreItems/Types/Recipes/Weapons/CorpusWhipBlueprint
+ /Lotus/StoreItems/Types/Recipes/WarframeRecipes/ChromaHelmetBlueprint
+ /Lotus/StoreItems/Types/Keys/DuviriQuest/DuviriQuestKeyChain
+ /Lotus/StoreItems/Types/NeutralCreatures/ErsatzHorse/ErsatzHorsePowerSuit
+UranusToNeptuneJunction
+ /Lotus/StoreItems/Types/Keys/OrokinMoonQuest/OrokinMoonQuestKeyChain
+ /Lotus/StoreItems/Types/Recipes/Weapons/ReconnasorBlueprint
+ /Lotus/StoreItems/Types/Recipes/WarframeRecipes/ChromaChassisBlueprint
+NeptuneToPlutoJunction
+ /Lotus/StoreItems/Types/Recipes/Weapons/GrineerFlakCannonBlueprint
+ /Lotus/StoreItems/Types/Recipes/WarframeRecipes/ChromaSystemsBlueprint
+PlutoToSednaJunction
+ /Lotus/StoreItems/Types/Keys/WarWithinQuest/WarWithinQuestKeyChain
+ /Lotus/StoreItems/Types/Keys/MirageQuest/MirageQuestKeyChain
+ /Lotus/StoreItems/Types/Recipes/Weapons/DualDaggerBlueprint
+PlutoToErisJunction
+ /Lotus/StoreItems/Types/Keys/InfestedAladVQuest/InfestedAladVQuestKeyChain
+ /Lotus/StoreItems/Types/Recipes/Weapons/MireSwordBlueprint
+CeresToJupiterJunction
+ /Lotus/StoreItems/Types/Recipes/Weapons/GrnStaffBlueprint
+ /Lotus/StoreItems/Upgrades/Mods/Archwing/Suit/ArchwingSuitHealthMaxMod
+ /Lotus/StoreItems/Upgrades/Mods/Archwing/Rifle/ArchwingRifleDamageAmountMod
+ /Lotus/StoreItems/Upgrades/Mods/Archwing/Melee/ArchwingMeleeDamageMod
\ No newline at end of file
--
2.47.2