diff --git a/athena_template.json b/athena_template.json index 94e2c32..3079167 100644 --- a/athena_template.json +++ b/athena_template.json @@ -103,6 +103,55 @@ "favorite": false }, "quantity": 1 + }, + "characterloadout": { + "templateId": "CosmeticLoadout:LoadoutSchema_Character", + "attributes": { + "slots": [], + "display_name": "LawinServer" + }, + "quantity": 1 + }, + "emotesloadout": { + "templateId": "CosmeticLoadout:LoadoutSchema_Emotes", + "attributes": { + "slots": [], + "display_name": "LawinServer" + }, + "quantity": 1 + }, + "platformloadout": { + "templateId": "CosmeticLoadout:LoadoutSchema_Platform", + "attributes": { + "slots": [ + { + "slot_template": "CosmeticLoadoutSlotTemplate:LoadoutSlot_Banner_Icon", + "equipped_item": "HomebaseBannerIcon:StandardBanner1" + }, + { + "slot_template": "CosmeticLoadoutSlotTemplate:LoadoutSlot_Banner_Color", + "equipped_item": "HomebaseBannerColor:DefaultColor1" + } + ], + "display_name": "LawinServer" + }, + "quantity": 1 + }, + "wrapsloadout": { + "templateId": "CosmeticLoadout:LoadoutSchema_Wraps", + "attributes": { + "slots": [], + "display_name": "LawinServer" + }, + "quantity": 1 + }, + "vehicleloadout": { + "templateId": "CosmeticLoadout:LoadoutSchema_Vehicle", + "attributes": { + "slots": [], + "display_name": "LawinServer" + }, + "quantity": 1 } }, "stats": { @@ -112,6 +161,23 @@ "loadouts": [ "loadout1" ], + "loadout_presets": { + "CosmeticLoadout:LoadoutSchema_Character": { + "0": "characterloadout" + }, + "CosmeticLoadout:LoadoutSchema_Emotes": { + "0": "emotesloadout" + }, + "CosmeticLoadout:LoadoutSchema_Platform": { + "0": "platformloadout" + }, + "CosmeticLoadout:LoadoutSchema_Wraps": { + "0": "wrapsloadout" + }, + "CosmeticLoadout:LoadoutSchema_Vehicle": { + "0": "vehicleloadout" + } + }, "favorite_victorypose": "", "mfa_reward_claimed": false, "quest_manager": { diff --git a/index.js b/index.js index 341c81d..e83adc8 100644 --- a/index.js +++ b/index.js @@ -2,45 +2,60 @@ const { default: request } = require("axios"); const fs = require("fs"); let athena = require("./athena_template.json"); -console.log("Fortnite Athena Profile Generator by Lawin v1.0.2\n"); -request.get("https://fortnite-api.com/v2/cosmetics/br").then(resp => { +const fixedBackendValues = { + "AthenaEmoji": "AthenaDance", + "AthenaSpray": "AthenaDance", + "AthenaToy": "AthenaDance", + "AthenaPetCarrier": "AthenaBackpack", + "AthenaPet": "AthenaBackpack", + "SparksDrum": "SparksDrums", + "SparksMic": "SparksMicrophone" +} + +console.log("Fortnite Athena Profile Generator by Lawin v1.0.3\n"); +request.get("https://fortnite-api.com/v2/cosmetics").then(resp => { let data = resp.data.data; console.log("[GEN] Starting to generate...\n"); - data.forEach(item => { - if (item.id.toLowerCase().includes("random")) return; + for (var mode in data) { + if (mode == "lego") continue; // Adding lego characters to the profile is unnecessary - // Credits to PRO100KatYT for backendValue fixes - if (item.type.backendValue == "AthenaEmoji" || item.type.backendValue == "AthenaSpray" || item.type.backendValue == "AthenaToy") item.type.backendValue = "AthenaDance"; - if (item.type.backendValue == "AthenaPetCarrier") item.type.backendValue = "AthenaBackpack"; + data[mode].forEach(item => { + if (item.id.toLowerCase().includes("random")) return; - let id = `${item.type.backendValue}:${item.id}`; - let variants = []; + if (mode == "tracks") item.type = {"backendValue": "SparksSong"}; - if (item.variants) { - item.variants.forEach(obj => { - variants.push({ - "channel": obj.channel || "", - "active": obj.options[0].tag || "", - "owned": obj.options.map(variant => variant.tag || "") + // Credits to PRO100KatYT for backendValue fixes + if (fixedBackendValues.hasOwnProperty(item.type.backendValue)) item.type.backendValue = fixedBackendValues[item.type.backendValue]; + + let id = `${item.type.backendValue}:${item.id}`; + let variants = []; + + if (item.variants) { + item.variants.forEach(obj => { + variants.push({ + "channel": obj.channel || "", + "active": obj.options[0].tag || "", + "owned": obj.options.map(variant => variant.tag || "") + }) }) - }) - } + } - athena.items[id] = { - "templateId": id, - "attributes": { - "max_level_bonus": 0, - "level": 1, - "item_seen": true, - "xp": 0, - "variants": variants, - "favorite": false - }, - "quantity": 1 - } - }) + athena.items[id] = { + "templateId": id, + "attributes": { + "max_level_bonus": 0, + "level": 1, + "item_seen": true, + "xp": 0, + "variants": variants, + "favorite": false + }, + "quantity": 1 + } + }) + } fs.writeFileSync("./athena.json", JSON.stringify(athena, null, 2)); const stats = fs.statSync("./athena.json");