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] 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