Merge pull request #119 from PRO100KatYT/main

Pull Request #119
This commit is contained in:
Lawin
2024-01-03 23:35:50 +00:00
committed by GitHub
13 changed files with 15131 additions and 593 deletions

View File

@@ -160,24 +160,27 @@ function getTheater(req) {
theater = theater.replace(/\"DataTable\'\/SaveTheWorld\//ig, "\"DataTable\'\/Game\/");
}
var date = new Date().toISOString()
var date = new Date();
var hour = date.getHours();
// Set the 24-hour StW mission refresh date for version season 9 and above
if (memory.season >= 9) {
date = date.split("T")[0] + "T23:59:59.999Z";
date.setHours(23, 59, 59, 999);
} else {
// Set the 6-hour StW mission refresh date for versions below season 9
if (date < (date.split("T")[0] + "T05:59:59.999Z")) {
date = date.split("T")[0] + "T05:59:59.999Z";
} else if (date < (date.split("T")[0] + "T11:59:59.999Z")) {
date = date.split("T")[0] + "T11:59:59.999Z";
} else if (date < (date.split("T")[0] + "T17:59:59.999Z")) {
date = date.split("T")[0] + "T17:59:59.999Z";
} else if (date < (date.split("T")[0] + "T23:59:59.999Z")) {
date = date.split("T")[0] + "T23:59:59.999Z";
if (hour < 6) {
date.setHours(5, 59, 59, 999);
} else if (hour < 12) {
date.setHours(11, 59, 59, 999);
} else if (hour < 18) {
date.setHours(17, 59, 59, 999);
} else {
date.setHours(23, 59, 59, 999);
}
}
date = date.toISOString();
theater = theater.replace(/2017-07-25T23:59:59.999Z/ig, date);
} catch (err) {}

View File

@@ -215,10 +215,93 @@ express.get("/fortnite/api/receipts/v1/account/*/receipts", async (req, res) =>
res.json([])
})
express.get("/fortnite/api/game/v2/leaderboards/cohort/*", async (req, res) => {
res.json([])
express.get("/fortnite/api/game/v2/leaderboards/cohort/:accountId", async (req, res) => {
res.json({
"accountId": req.params.accountId,
"cohortAccounts": [
req.params.accountId,
"Lawin",
"TI93",
"PRO100KatYT",
"Playeereq",
"Matteoki"
],
"expiresAt": "9999-12-31T00:00:00.000Z",
"playlist": req.query.playlist
})
})
express.post("/fortnite/api/leaderboards/type/group/stat/:statName/window/:statWindow", async (req, res) => {
var entries = [];
for (var i = 0; i < req.body.length; i++) {
entries.push({
"accountId": req.body[i],
"value": Math.floor(Math.random() * 68) + 1
})
}
res.json({
"entries": entries,
"statName": req.params.statName,
"statWindow": req.params.statWindow
})
res.end();
});
express.post("/fortnite/api/leaderboards/type/global/stat/:statName/window/:statWindow", async (req, res) => {
var HeroNames = [
"Hawk",
"Banshee",
"Wildcat",
"Jonsey",
"Spitfire",
"Ramirez",
"Headhunter",
"Renegade",
"Harper",
"Knox",
"Hype",
"Bull",
"Hazard",
"Penny",
"Izza",
"Kyle",
"Luna",
"Crash",
"Edge",
"Scorpion",
"Scorch",
"Ken",
"Mari",
"Sarah",
"Grizzly",
"Eagle Eye",
"Southie",
"A.C.",
"Buzz",
"Quinn",
"Jess",
"Deadeye"
]
var entries = [];
for (var i = 0; i < HeroNames.length; i++) {
entries.push({
"accountId": HeroNames[i],
"value": Math.floor(Math.random() * 68) + 1
})
}
res.json({
"entries": entries,
"statName": req.params.statName,
"statWindow": req.params.statWindow
})
res.end();
});
express.get("/fortnite/api/game/v2/homebase/allowed-name-chars", async (req, res) => {
res.json({
"ranges": [

View File

@@ -312,7 +312,7 @@ express.post("/fortnite/api/game/v2/profile/*/client/PurchaseHomebaseNode", asyn
express.post("/fortnite/api/game/v2/profile/*/client/UnlockRewardNode", async (req, res) => {
const profile = require(`./../profiles/${req.query.profileId || "athena"}.json`);
const common_core = require("./../profiles/common_core.json");
const WinterFestIDS = require("./../responses/Athena/winterfestrewards.json");
const WinterFestIDS = require("./../responses/Athena/winterfestRewards.json");
const memory = functions.GetVersionInfo(req);
// do not change any of these or you will end up breaking it
@@ -1455,7 +1455,7 @@ express.post("/fortnite/api/game/v2/profile/*/client/IncrementNamedCounterStat",
// Claim STW daily reward
express.post("/fortnite/api/game/v2/profile/*/client/ClaimLoginReward", async (req, res) => {
const profile = require(`./../profiles/${req.query.profileId || "campaign"}.json`);
const DailyRewards = require("./../responses/Campaign/dailyrewards.json");
const DailyRewards = require("./../responses/Campaign/dailyRewards.json");
const memory = functions.GetVersionInfo(req);
// do not change any of these or you will end up breaking it
@@ -2606,7 +2606,7 @@ express.post("/fortnite/api/game/v2/profile/*/client/TransmogItem", async (req,
transformItemIDS = transformItemIDS[req.body.transmogKeyTemplateId]
}
else {
transformItemIDS = require("./../responses/Campaign/cardpackLootItemIDS.json");
transformItemIDS = require("./../responses/Campaign/cardPackData.json").default;
}
StatChanged = true;
@@ -2623,7 +2623,7 @@ express.post("/fortnite/api/game/v2/profile/*/client/TransmogItem", async (req,
Item.attributes = functions.MakeSurvivorAttributes(transformItemIDS[randomNumber]);
}
profile.items[ID] = Item
profile.items[ID] = Item;
Notifications.push({
"type": "transmogResult",
@@ -5380,7 +5380,7 @@ express.post("/fortnite/api/game/v2/profile/*/client/UnassignAllSquads", async (
// Open llama STW
express.post("/fortnite/api/game/v2/profile/*/client/OpenCardPack", async (req, res) => {
const profile = require(`./../profiles/${req.query.profileId || "campaign"}.json`);
const ItemIDS = require("./../responses/Campaign/cardpackLootItemIDS.json");
const cardpackData = require("./../responses/Campaign/cardPackData.json");
// do not change any of these or you will end up breaking it
var ApplyProfileChanges = [];
@@ -5400,15 +5400,12 @@ express.post("/fortnite/api/game/v2/profile/*/client/OpenCardPack", async (req,
"displayLevel": 0
})
for (var i = 0; i < 10; i++) {
const randomNumber = Math.floor(Math.random() * ItemIDS.length);
if (cardpackData.choiceCardPacks.includes(profile.items[req.body.cardPackItemId].templateId)) {
var ChosenItem = profile.items[req.body.cardPackItemId].attributes.options[req.body.selectionIdx];
var Item = {"templateId":ChosenItem.itemType,"attributes":ChosenItem.attributes,"quantity":ChosenItem.quantity};
const ID = functions.MakeID();
var Item = {"templateId":ItemIDS[randomNumber],"attributes":{"legacy_alterations":[],"max_level_bonus":0,"level":1,"refund_legacy_item":false,"item_seen":false,"alterations":["","","","","",""],"xp":0,"refundable":false,"alteration_base_rarities":[],"favorite":false},"quantity":1};
if (ItemIDS[randomNumber].toLowerCase().startsWith("worker:")) {
Item.attributes = functions.MakeSurvivorAttributes(ItemIDS[randomNumber]);
}
profile.items[ID] = Item
profile.items[ID] = Item;
ApplyProfileChanges.push({
"changeType": "itemAdded",
@@ -5417,12 +5414,55 @@ express.post("/fortnite/api/game/v2/profile/*/client/OpenCardPack", async (req,
})
Notifications[0].lootGranted.items.push({
"itemType": ItemIDS[randomNumber],
"itemType": Item.templateId,
"itemGuid": ID,
"itemProfile": req.query.profileId,
"attributes": Item.attributes,
"quantity": 1
"quantity": Item.quantity
})
} else {
for (var i = 0; i < 10; i++) {
const ID = functions.MakeID();
var ItemIDS = cardpackData.default;
var randomNumber = Math.floor(Math.random() * ItemIDS.length);
var Item = {"templateId":ItemIDS[randomNumber],"attributes":{"legacy_alterations":[],"max_level_bonus":0,"level":1,"refund_legacy_item":false,"item_seen":false,"alterations":["","","","","",""],"xp":0,"refundable":false,"alteration_base_rarities":[],"favorite":false},"quantity":1};
if (ItemIDS[randomNumber].toLowerCase().startsWith("worker:")) {
Item.attributes = functions.MakeSurvivorAttributes(ItemIDS[randomNumber]);
}
if (Math.random() < 0.1) { // 10% (could be dfferent) chance of getting a choice CardPack.
var CPTemplateId = cardpackData.choiceCardPacks[Math.floor(Math.random() * cardpackData.choiceCardPacks.length)];
var CPItem = {"templateId":CPTemplateId,"attributes":{"level":1,"pack_source":"Store","options":[]},"quantity":1}
ItemIDS = cardpackData[CPTemplateId.toLowerCase()] || cardpackData.default;
for (var x = 0; x < 2; x++) {
randomNumber = Math.floor(Math.random() * ItemIDS.length);
Item = {"itemType":ItemIDS[randomNumber],"attributes":{"legacy_alterations":[],"max_level_bonus":0,"level":1,"refund_legacy_item":false,"item_seen":false,"alterations":["","","","","",""],"xp":0,"refundable":false,"alteration_base_rarities":[],"favorite":false},"quantity":1};
if (ItemIDS[randomNumber].toLowerCase().startsWith("worker:")) {
Item.attributes = functions.MakeSurvivorAttributes(ItemIDS[randomNumber]);
}
ItemIDS.splice(ItemIDS.indexOf(ItemIDS[randomNumber]), 1);
CPItem.attributes.options.push(Item);
}
Item = CPItem;
}
profile.items[ID] = Item;
ApplyProfileChanges.push({
"changeType": "itemAdded",
"itemId": ID,
"item": Item
})
Notifications[0].lootGranted.items.push({
"itemType": ItemIDS[randomNumber],
"itemGuid": ID,
"itemProfile": req.query.profileId,
"attributes": Item.attributes,
"quantity": 1
})
}
}
if (profile.items[req.body.cardPackItemId].quantity <= 1) {
@@ -5455,12 +5495,12 @@ express.post("/fortnite/api/game/v2/profile/*/client/OpenCardPack", async (req,
}
// this doesn't work properly on version v12.20 and above but whatever
if (QueryRevision != BaseRevision) {
ApplyProfileChanges = [{
"changeType": "fullProfileUpdate",
"profile": profile
}];
}
// if (QueryRevision != BaseRevision) {
// ApplyProfileChanges = [{
// "changeType": "fullProfileUpdate",
// "profile": profile
// }];
// }
res.json({
"profileRevision": profile.rvn || 0,
@@ -5478,7 +5518,7 @@ express.post("/fortnite/api/game/v2/profile/*/client/OpenCardPack", async (req,
// Add items to StW X-Ray Llamas
express.post("/fortnite/api/game/v2/profile/*/client/PopulatePrerolledOffers", async (req, res) => {
const profile = require(`./../profiles/${req.query.profileId || "campaign"}.json`);
const ItemIDS = require("./../responses/Campaign/cardpackLootItemIDS.json");
const cardpackData = require("./../responses/Campaign/cardPackData.json");
// do not change any of these or you will end up breaking it
var ApplyProfileChanges = [];
@@ -5494,13 +5534,29 @@ express.post("/fortnite/api/game/v2/profile/*/client/PopulatePrerolledOffers", a
profile.items[key].attributes.items = [];
for (var i = 0; i < 10; i++) {
const randomNumber = Math.floor(Math.random() * ItemIDS.length);
var ItemIDS = cardpackData.default;
var randomNumber = Math.floor(Math.random() * ItemIDS.length);
var Item = {"itemType":ItemIDS[randomNumber],"attributes":{"legacy_alterations":[],"max_level_bonus":0,"level":1,"refund_legacy_item":false,"item_seen":false,"alterations":["","","","","",""],"xp":0,"refundable":false,"alteration_base_rarities":[],"favorite":false},"quantity":1};
if (ItemIDS[randomNumber].toLowerCase().startsWith("worker:")) {
Item.attributes = functions.MakeSurvivorAttributes(ItemIDS[randomNumber]);
}
if (Math.random() < 0.1) { // 10% (could be dfferent) chance of getting a choice Cardpack.
var CPTemplateId = cardpackData.choiceCardPacks[Math.floor(Math.random() * cardpackData.choiceCardPacks.length)];
var CPItem = {"itemType":CPTemplateId,"attributes":{"level":1,"pack_source":"Store","options":[]},"quantity":1}
ItemIDS = cardpackData[CPTemplateId.toLowerCase()] || cardpackData.default;
for (var x = 0; x < 2; x++) {
randomNumber = Math.floor(Math.random() * ItemIDS.length);
Item = {"itemType":ItemIDS[randomNumber],"attributes":{"legacy_alterations":[],"max_level_bonus":0,"level":1,"refund_legacy_item":false,"item_seen":false,"alterations":["","","","","",""],"xp":0,"refundable":false,"alteration_base_rarities":[],"favorite":false},"quantity":1};
if (ItemIDS[randomNumber].toLowerCase().startsWith("worker:")) {
Item.attributes = functions.MakeSurvivorAttributes(ItemIDS[randomNumber]);
}
ItemIDS.splice(ItemIDS.indexOf(ItemIDS[randomNumber]), 1);
CPItem.attributes.options.push(Item);
}
Item = CPItem;
}
profile.items[key].attributes.items.push(Item)
}
@@ -5558,7 +5614,7 @@ express.post("/fortnite/api/game/v2/profile/*/client/PurchaseCatalogEntry", asyn
const profile = require(`./../profiles/${req.query.profileId || "profile0"}.json`);
const campaign = require("./../profiles/campaign.json");
const athena = require("./../profiles/athena.json");
const ItemIDS = require("./../responses/Campaign/cardpackLootItemIDS.json");
const cardpackData = require("./../responses/Campaign/cardPackData.json");
// do not change any of these or you will end up breaking it
var ApplyProfileChanges = [];
@@ -5597,7 +5653,7 @@ express.post("/fortnite/api/game/v2/profile/*/client/PurchaseCatalogEntry", asyn
for (var i = 0; i < Quantity; i++) {
var ID = functions.MakeID();
profile.items[ID] = Item
profile.items[ID] = Item;
ApplyProfileChanges.push({
"changeType": "itemAdded",
@@ -6441,13 +6497,29 @@ express.post("/fortnite/api/game/v2/profile/*/client/PurchaseCatalogEntry", asyn
campaign.items[key].attributes.items = [];
for (var i = 0; i < 10; i++) {
const randomNumber = Math.floor(Math.random() * ItemIDS.length);
var ItemIDS = cardpackData.default;
var randomNumber = Math.floor(Math.random() * ItemIDS.length);
var Item = {"itemType":ItemIDS[randomNumber],"attributes":{"legacy_alterations":[],"max_level_bonus":0,"level":1,"refund_legacy_item":false,"item_seen":false,"alterations":["","","","","",""],"xp":0,"refundable":false,"alteration_base_rarities":[],"favorite":false},"quantity":1};
if (ItemIDS[randomNumber].toLowerCase().startsWith("worker:")) {
Item.attributes = functions.MakeSurvivorAttributes(ItemIDS[randomNumber]);
}
if (Math.random() < 0.1) { // 10% (could be dfferent) chance of getting a choice Cardpack.
var CPTemplateId = cardpackData.choiceCardPacks[Math.floor(Math.random() * cardpackData.choiceCardPacks.length)];
var CPItem = {"itemType":CPTemplateId,"attributes":{"level":1,"pack_source":"Store","options":[]},"quantity":1}
ItemIDS = cardpackData[CPTemplateId.toLowerCase()] || cardpackData.default;
for (var x = 0; x < 2; x++) {
randomNumber = Math.floor(Math.random() * ItemIDS.length);
Item = {"itemType":ItemIDS[randomNumber],"attributes":{"legacy_alterations":[],"max_level_bonus":0,"level":1,"refund_legacy_item":false,"item_seen":false,"alterations":["","","","","",""],"xp":0,"refundable":false,"alteration_base_rarities":[],"favorite":false},"quantity":1};
if (ItemIDS[randomNumber].toLowerCase().startsWith("worker:")) {
Item.attributes = functions.MakeSurvivorAttributes(ItemIDS[randomNumber]);
}
ItemIDS.splice(ItemIDS.indexOf(ItemIDS[randomNumber]), 1);
CPItem.attributes.options.push(Item);
}
Item = CPItem;
}
campaign.items[key].attributes.items.push(Item)
}

View File

@@ -1359,6 +1359,53 @@ express.get("/fortnite/api/calendar/v1/timeline", async (req, res) => {
}
}
if (memory.build == 5.41) {
if (config.Events.bEnableCubeLake == true) {
states[0].activeEvents.push(
{
"eventType": "EventFlag.BR_S5_Cube_StartMove",
"activeUntil": config.Events.cubeLakeDate
},
{
"eventType": "EventFlag.BR_S5_Cube_TurnOn",
"activeUntil": config.Events.cubeLakeDate
})
states.push({
validFrom: config.Events.cubeLakeDate,
activeEvents: activeEvents.slice(),
state: stateTemplate
})
states[1].activeEvents.push(
{
"eventType": "EventFlag.BR_S5_Cube_StartMove",
"activeUntil": config.Events.cubeLakeDate
},
{
"eventType": "EventFlag.BR_S5_Cube_TurnOn",
"activeUntil": config.Events.cubeLakeDate
},
{
"eventType": "EventFlag.BR_S5_Cube_MoveTo8",
"activeUntil": config.Events.cubeLakeDate
})
var EventEndDate = new Date(new Date(config.Events.cubeLakeDate).getTime() + 1.5 * 60000).toISOString();
states.push({
validFrom: EventEndDate,
activeEvents: activeEvents.slice(),
state: stateTemplate
})
states[2].activeEvents.push({
"eventType": "EventFlag.BR_S5_Cube_Destination",
"activeUntil": "9999-01-01T00:00:00.000Z"
})
}
}
res.json({
"channels": {
"client-matchmaking": {