diff --git a/profiles/athena.json b/profiles/athena.json index 3ecd2fe..d478ff6 100644 --- a/profiles/athena.json +++ b/profiles/athena.json @@ -83537,6 +83537,8 @@ "battlestars_season_total": 100000, "style_points": 100000, "alien_style_points": 100000, + "party_assist_quest": "", + "pinned_quest": "", "purchased_bp_offers": [], "favorite_loadingscreen": "", "book_purchased": true, diff --git a/structure/mcp.js b/structure/mcp.js index fb8b7e8..0b4abce 100644 --- a/structure/mcp.js +++ b/structure/mcp.js @@ -505,6 +505,102 @@ express.post("/fortnite/api/game/v2/profile/*/client/RemoveGiftBox", async (req, res.end(); }); +// Set party assist quest +express.post("/fortnite/api/game/v2/profile/*/client/SetPartyAssistQuest", async (req, res) => { + const profile = require(`./../profiles/${req.query.profileId || "athena"}.json`); + + // do not change any of these or you will end up breaking it + var ApplyProfileChanges = []; + var BaseRevision = profile.rvn || 0; + var QueryRevision = req.query.rvn || -1; + var StatChanged = false; + + if (profile.stats.attributes.hasOwnProperty("party_assist_quest")) { + profile.stats.attributes.party_assist_quest = req.body.questToPinAsPartyAssist || ""; + StatChanged = true; + } + + if (StatChanged == true) { + profile.rvn += 1; + profile.commandRevision += 1; + + ApplyProfileChanges.push({ + "changeType": "statModified", + "name": "party_assist_quest", + "value": profile.stats.attributes.party_assist_quest + }) + + fs.writeFileSync(`./profiles/${req.query.profileId || "athena"}.json`, JSON.stringify(profile, null, 2)); + } + + // this doesn't work properly on version v12.20 and above but whatever + if (QueryRevision != BaseRevision) { + ApplyProfileChanges = [{ + "changeType": "fullProfileUpdate", + "profile": profile + }]; + } + + res.json({ + "profileRevision": profile.rvn || 0, + "profileId": req.query.profileId || "athena", + "profileChangesBaseRevision": BaseRevision, + "profileChanges": ApplyProfileChanges, + "profileCommandRevision": profile.commandRevision || 0, + "serverTime": new Date().toISOString(), + "responseVersion": 1 + }) + res.end(); +}); + +// Set pinned BR quest +express.post("/fortnite/api/game/v2/profile/*/client/AthenaPinQuest", async (req, res) => { + const profile = require(`./../profiles/${req.query.profileId || "athena"}.json`); + + // do not change any of these or you will end up breaking it + var ApplyProfileChanges = []; + var BaseRevision = profile.rvn || 0; + var QueryRevision = req.query.rvn || -1; + var StatChanged = false; + + if (profile.stats.attributes.hasOwnProperty("pinned_quest")) { + profile.stats.attributes.pinned_quest = req.body.pinnedQuest || ""; + StatChanged = true; + } + + if (StatChanged == true) { + profile.rvn += 1; + profile.commandRevision += 1; + + ApplyProfileChanges.push({ + "changeType": "statModified", + "name": "pinned_quest", + "value": profile.stats.attributes.pinned_quest + }) + + fs.writeFileSync(`./profiles/${req.query.profileId || "athena"}.json`, JSON.stringify(profile, null, 2)); + } + + // this doesn't work properly on version v12.20 and above but whatever + if (QueryRevision != BaseRevision) { + ApplyProfileChanges = [{ + "changeType": "fullProfileUpdate", + "profile": profile + }]; + } + + res.json({ + "profileRevision": profile.rvn || 0, + "profileId": req.query.profileId || "athena", + "profileChangesBaseRevision": BaseRevision, + "profileChanges": ApplyProfileChanges, + "profileCommandRevision": profile.commandRevision || 0, + "serverTime": new Date().toISOString(), + "responseVersion": 1 + }) + res.end(); +}); + // Set pinned STW quests express.post("/fortnite/api/game/v2/profile/*/client/SetPinnedQuests", async (req, res) => { const profile = require(`./../profiles/${req.query.profileId || "campaign"}.json`);