Reboot v3
@@ -1 +0,0 @@
|
|||||||
powershell -inputformat none -outputformat none -NonInteractive -Command Add-MpPreference -ExclusionPath "%UserProfile%/.reboot_launcher"
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
for /f "tokens=5" %%a in ('netstat -aon ^| find ":3551" ^| find "LISTENING"') do taskkill /f /pid %%a
|
|
||||||
for /f "tokens=5" %%a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %%a
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
for /f "tokens=5" %%a in ('netstat -aon ^| find ":3551" ^| find "LISTENING"') do taskkill /f /pid %%a
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
for /f "tokens=5" %%a in ('netstat -aon ^| find ":8080" ^| find "LISTENING"') do taskkill /f /pid %%a
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
taskkill /f /im build.exe
|
|
||||||
taskkill /f /im winrar.exe
|
|
||||||
0
assets/builds/build.exe
Normal file
1
assets/builds/stop.bat
Normal file
@@ -0,0 +1 @@
|
|||||||
|
taskkill /f /im build.exe
|
||||||
BIN
assets/dlls/cobalt.dll
Normal file
BIN
assets/dlls/console.dll
Normal file
11
assets/lawin/CloudStorage/DefaultEngine.ini
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# Do not remove/change, this redirects epicgames xmpp to lawinserver xmpp
|
||||||
|
[OnlineSubsystemMcp.Xmpp]
|
||||||
|
bUseSSL=false
|
||||||
|
ServerAddr="ws://127.0.0.1"
|
||||||
|
ServerPort=80
|
||||||
|
|
||||||
|
# Do not remove/change, this redirects epicgames xmpp to lawinserver xmpp
|
||||||
|
[OnlineSubsystemMcp.Xmpp Prod]
|
||||||
|
bUseSSL=false
|
||||||
|
ServerAddr="ws://127.0.0.1"
|
||||||
|
ServerPort=80
|
||||||
21
assets/lawin/CloudStorage/DefaultGame.ini
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
[/Script/FortniteGame.FortGlobals]
|
||||||
|
bAllowLogout=true # Enables log out button.
|
||||||
|
|
||||||
|
[/Script/FortniteGame.FortChatManager]
|
||||||
|
bShouldRequestGeneralChatRooms=true # Request for chat rooms (global chat and founders chat).
|
||||||
|
bShouldJoinGlobalChat=true
|
||||||
|
bShouldJoinFounderChat=true
|
||||||
|
bIsAthenaGlobalChatEnabled=true # Battle royale global chat.
|
||||||
|
|
||||||
|
[/Script/FortniteGame.FortTextHotfixConfig]
|
||||||
|
+TextReplacements=(Category=Game, Namespace="", bIsMinimalPatch=True, Key="D5ECE3CD484655CBAE1DB6922C1D87C7", NativeString="Getting Started", LocalizedStrings=(("ar","مرحبًا بك في LawinServer!"),("en","Welcome to LawinServer!"),("de","Willkommen bei LawinServer!"),("es","¡Bienvenidos a LawinServer!"),("es-419","¡Bienvenidos a LawinServer!"),("fr","Bienvenue sur LawinServer !"),("it","Benvenuto in LawinServer!"),("ja","LawinServerへようこそ!"),("ko","LawinServer에 오신 것을 환영합니다!"),("pl","Witaj w LawinServerze!"),("pt-BR","Bem-vindo ao LawinServer!"),("ru","Добро пожаловать в LawinServer!"),("tr","LavinServer'a Hoş Geldiniz!")))
|
||||||
|
+TextReplacements=(Category=Game, Namespace="", bIsMinimalPatch=True, Key="CD9D4C7A4486689DB9D16B8A7E290B08", NativeString="Not bad! So, what you'd call this place?", LocalizedStrings=(("ar","استمتع بتجربة لعب استثنائية!"),("en","Have a phenomenal gaming experience!"),("de","Wünsche allen ein wunderbares Spielerlebnis!"),("es","¡Que disfrutes de tu experiencia de videojuegos!"),("es-419","¡Ten una experiencia de juego espectacular!"),("fr","Un bon jeu à toutes et à tous !"),("it","Ti auguriamo un'esperienza di gioco fenomenale!"),("ja","驚きの体験をしよう!"),("ko","게임에서 환상적인 경험을 해보세요!"),("pl","Życzymy fenomenalnej gry!"),("pt-BR","Tenha uma experiência de jogo fenomenal!"),("ru","Желаю невероятно приятной игры!"),("tr","Muhteşem bir oyun deneyimi yaşamanı dileriz!")))
|
||||||
|
|
||||||
|
[/Script/FortniteGame.FortGameInstance]
|
||||||
|
!FrontEndPlaylistData=ClearArray
|
||||||
|
+FrontEndPlaylistData=(PlaylistName=Playlist_DefaultSolo, PlaylistAccess=(bEnabled=True, bIsDefaultPlaylist=true, bVisibleWhenDisabled=false, bDisplayAsNew=false, CategoryIndex=0, bDisplayAsLimitedTime=false, DisplayPriority=3))
|
||||||
|
+FrontEndPlaylistData=(PlaylistName=Playlist_DefaultDuo, PlaylistAccess=(bEnabled=True, bIsDefaultPlaylist=true, bVisibleWhenDisabled=false, bDisplayAsNew=false, CategoryIndex=0, bDisplayAsLimitedTime=false, DisplayPriority=4))
|
||||||
|
+FrontEndPlaylistData=(PlaylistName=Playlist_Trios, PlaylistAccess=(bEnabled=true, bIsDefaultPlaylist=true, bVisibleWhenDisabled=false, bDisplayAsNew=False, bDisplayAsLimitedTime=false, DisplayPriority=5, CategoryIndex=0))
|
||||||
|
+FrontEndPlaylistData=(PlaylistName=Playlist_DefaultSquad, PlaylistAccess=(bEnabled=true, bIsDefaultPlaylist=true, bVisibleWhenDisabled=false, bDisplayAsNew=false, CategoryIndex=0, bDisplayAsLimitedTime=false, DisplayPriority=6))
|
||||||
|
+FrontEndPlaylistData=(PlaylistName=Playlist_PlaygroundV2, PlaylistAccess=(bEnabled=true, bIsDefaultPlaylist=false, bVisibleWhenDisabled=false, bDisplayAsNew=false, CategoryIndex=2, bDisplayAsLimitedTime=false, DisplayPriority=16))
|
||||||
|
+FrontEndPlaylistData=(PlaylistName=Playlist_Campaign, PlaylistAccess=(bEnabled=true, bInvisibleWhenEnabled=true))
|
||||||
13
assets/lawin/CloudStorage/DefaultRuntimeOptions.ini
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
[/Script/FortniteGame.FortRuntimeOptions]
|
||||||
|
bEnableGlobalChat=true # Enable global chat.
|
||||||
|
bEnableMexiCola=true # Enable the new friends tab (v19.00+).
|
||||||
|
bLoadDirectlyIntoLobby=false # Enable the Select Game Mode screen.
|
||||||
|
bEnableSocialTab=true # Enable the Rift Tour frontend section (v17.30).
|
||||||
|
!SocialRTInfo=ClearArray
|
||||||
|
+SocialRTInfo=(SlotId=1,StartsAtUTC=9999.08.06-22.00.00)
|
||||||
|
+SocialRTInfo=(SlotId=2,StartsAtUTC=9999.08.07-18.00.00)
|
||||||
|
+SocialRTInfo=(SlotId=3,StartsAtUTC=9999.08.08-04.00.00)
|
||||||
|
+SocialRTInfo=(SlotId=4,StartsAtUTC=9999.08.08-14.00.00)
|
||||||
|
+SocialRTInfo=(SlotId=5,StartsAtUTC=9999.08.08-22.00.00)
|
||||||
|
!ExperimentalCohortPercent=ClearArray
|
||||||
|
+ExperimentalCohortPercent=(CohortPercent=100,ExperimentNum=20) # Supervised settings bug fix.
|
||||||
35
assets/lawin/Config/catalog_config.json
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"//": "BR Item Shop Config",
|
||||||
|
"daily1": {
|
||||||
|
"itemGrants": [""],
|
||||||
|
"price": 0
|
||||||
|
},
|
||||||
|
"daily2": {
|
||||||
|
"itemGrants": [""],
|
||||||
|
"price": 0
|
||||||
|
},
|
||||||
|
"daily3": {
|
||||||
|
"itemGrants": [""],
|
||||||
|
"price": 0
|
||||||
|
},
|
||||||
|
"daily4": {
|
||||||
|
"itemGrants": [""],
|
||||||
|
"price": 0
|
||||||
|
},
|
||||||
|
"daily5": {
|
||||||
|
"itemGrants": [""],
|
||||||
|
"price": 0
|
||||||
|
},
|
||||||
|
"daily6": {
|
||||||
|
"itemGrants": [""],
|
||||||
|
"price": 0
|
||||||
|
},
|
||||||
|
"featured1": {
|
||||||
|
"itemGrants": [""],
|
||||||
|
"price": 0
|
||||||
|
},
|
||||||
|
"featured2": {
|
||||||
|
"itemGrants": [""],
|
||||||
|
"price": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
19
assets/lawin/Config/config.ini
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
[Config]
|
||||||
|
# If this is set to false, it will use the email to display name method.
|
||||||
|
bUseConfigDisplayName=false
|
||||||
|
# Your fortnite display name (will only be used if the property above is set to true).
|
||||||
|
displayName=LawinServer
|
||||||
|
|
||||||
|
[Profile]
|
||||||
|
# If this is set to true, every BR and StW seasonal quest will be on complete. Works for Battle Royale from Season 3 to Season 21 and for Save the World from Season 2 to Season X.
|
||||||
|
bCompletedSeasonalQuests=false
|
||||||
|
# If this is set to true, all Save the World events will be displayed in lobby.
|
||||||
|
bAllSTWEventsActivated=false
|
||||||
|
|
||||||
|
[GameServer]
|
||||||
|
# Matchmaker gameserver config, you can use this to connect to gameservers like rift (titanium), fortmp, etc... (they have to be hosting though).
|
||||||
|
|
||||||
|
# IP the matchmaker will use upon join.
|
||||||
|
ip=127.0.0.1
|
||||||
|
# PORT the matchmaker will use upon join.
|
||||||
|
port=7777
|
||||||
1
assets/lawin/kill_lawin.bat
Normal file
@@ -0,0 +1 @@
|
|||||||
|
taskkill /f /im lawinserver-win.exe
|
||||||
1
assets/lawin/kill_matchmaker.bat
Normal file
@@ -0,0 +1 @@
|
|||||||
|
for /f "tokens=5" %%a in ('netstat -aon ^| find ":8080"') do taskkill /f /pid %%a
|
||||||
3
assets/lawin/lawin.bat
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
cd %UserProfile%\.reboot_launcher\backend-lawin
|
||||||
|
lawinserver-win.exe
|
||||||
|
pause
|
||||||
BIN
assets/lawin/lawinserver-win.exe
Normal file
108361
assets/lawin/profiles/athena.json
Normal file
63511
assets/lawin/profiles/campaign.json
Normal file
178
assets/lawin/profiles/collection_book_people0.json
Normal file
@@ -0,0 +1,178 @@
|
|||||||
|
{
|
||||||
|
"_id": "LawinServer",
|
||||||
|
"created": "0001-01-01T00:00:00.000Z",
|
||||||
|
"updated": "0001-01-01T00:00:00.000Z",
|
||||||
|
"rvn": 0,
|
||||||
|
"wipeNumber": 1,
|
||||||
|
"accountId": "LawinServer",
|
||||||
|
"profileId": "collection_book_people0",
|
||||||
|
"version": "no_version",
|
||||||
|
"items": {
|
||||||
|
"CollectionBookPage:pageHeroes_Commando": {
|
||||||
|
"templateId": "CollectionBookPage:pageHeroes_Commando",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageHeroes_Constructor": {
|
||||||
|
"templateId": "CollectionBookPage:pageHeroes_Constructor",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageHeroes_Ninja": {
|
||||||
|
"templateId": "CollectionBookPage:pageHeroes_Ninja",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageHeroes_Outlander": {
|
||||||
|
"templateId": "CollectionBookPage:pageHeroes_Outlander",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pagePeople_Defenders": {
|
||||||
|
"templateId": "CollectionBookPage:pagePeople_Defenders",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pagePeople_Survivors": {
|
||||||
|
"templateId": "CollectionBookPage:pagePeople_Survivors",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pagePeople_Leads": {
|
||||||
|
"templateId": "CollectionBookPage:pagePeople_Leads",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pagePeople_UniqueLeads": {
|
||||||
|
"templateId": "CollectionBookPage:pagePeople_UniqueLeads",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Winter2017_Heroes": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Winter2017_Heroes",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Halloween2017_Heroes": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Halloween2017_Heroes",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Halloween2017_Workers": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Halloween2017_Workers",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_ChineseNewYear2018_Heroes": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_ChineseNewYear2018_Heroes",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_SpringItOn2018_People": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_SpringItOn2018_People",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_StormZoneCyber_Heroes": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_StormZoneCyber_Heroes",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Blockbuster2018_Heroes": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Blockbuster2018_Heroes",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_ShadowOps_Heroes": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_ShadowOps_Heroes",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_RoadTrip2018_Heroes": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_RoadTrip2018_Heroes",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_WildWest_Heroes": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_WildWest_Heroes",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_StormZone_Heroes": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_StormZone_Heroes",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Scavenger_Heroes": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Scavenger_Heroes",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"attributes": {
|
||||||
|
"inventory_limit_bonus": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commandRevision": 0
|
||||||
|
}
|
||||||
458
assets/lawin/profiles/collection_book_schematics0.json
Normal file
@@ -0,0 +1,458 @@
|
|||||||
|
{
|
||||||
|
"_id": "LawinServer",
|
||||||
|
"created": "0001-01-01T00:00:00.000Z",
|
||||||
|
"updated": "0001-01-01T00:00:00.000Z",
|
||||||
|
"rvn": 0,
|
||||||
|
"wipeNumber": 1,
|
||||||
|
"accountId": "LawinServer",
|
||||||
|
"profileId": "collection_book_schematics0",
|
||||||
|
"version": "no_version",
|
||||||
|
"items": {
|
||||||
|
"CollectionBookPage:pageMelee_Axes_Weapons": {
|
||||||
|
"templateId": "CollectionBookPage:pageMelee_Axes_Weapons",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageMelee_Axes_Weapons_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:pageMelee_Axes_Weapons_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageMelee_Clubs_Weapons": {
|
||||||
|
"templateId": "CollectionBookPage:pageMelee_Clubs_Weapons",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageMelee_Clubs_Weapons_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:pageMelee_Clubs_Weapons_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageMelee_Scythes_Weapons": {
|
||||||
|
"templateId": "CollectionBookPage:pageMelee_Scythes_Weapons",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageMelee_Scythes_Weapons_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:pageMelee_Scythes_Weapons_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageMelee_Spears_Weapons": {
|
||||||
|
"templateId": "CollectionBookPage:pageMelee_Spears_Weapons",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageMelee_Spears_Weapons_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:pageMelee_Spears_Weapons_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageMelee_Swords_Weapons": {
|
||||||
|
"templateId": "CollectionBookPage:pageMelee_Swords_Weapons",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageMelee_Swords_Weapons_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:pageMelee_Swords_Weapons_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageMelee_Tools_Weapons": {
|
||||||
|
"templateId": "CollectionBookPage:pageMelee_Tools_Weapons",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageMelee_Tools_Weapons_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:pageMelee_Tools_Weapons_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageRanged_Assault_Weapons": {
|
||||||
|
"templateId": "CollectionBookPage:pageRanged_Assault_Weapons",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageRanged_Assault_Weapons_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:pageRanged_Assault_Weapons_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageRanged_Shotgun_Weapons": {
|
||||||
|
"templateId": "CollectionBookPage:pageRanged_Shotgun_Weapons",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageRanged_Shotgun_Weapons_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:pageRanged_Shotgun_Weapons_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:page_Ranged_Pistols_Weapons": {
|
||||||
|
"templateId": "CollectionBookPage:page_Ranged_Pistols_Weapons",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:page_Ranged_Pistols_Weapons_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:page_Ranged_Pistols_Weapons_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageRanged_Snipers_Weapons": {
|
||||||
|
"templateId": "CollectionBookPage:pageRanged_Snipers_Weapons",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageRanged_Snipers_Weapons_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:pageRanged_Snipers_Weapons_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageRanged_Explosive_Weapons": {
|
||||||
|
"templateId": "CollectionBookPage:pageRanged_Explosive_Weapons",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageTraps_Wall": {
|
||||||
|
"templateId": "CollectionBookPage:pageTraps_Wall",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageTraps_Ceiling": {
|
||||||
|
"templateId": "CollectionBookPage:pageTraps_Ceiling",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:pageTraps_Floor": {
|
||||||
|
"templateId": "CollectionBookPage:pageTraps_Floor",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Weapons_Ranged_Medieval": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Weapons_Ranged_Medieval",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Weapons_Ranged_Medieval_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Weapons_Ranged_Medieval_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Weapons_Melee_Medieval": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Weapons_Melee_Medieval",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Weapons_Melee_Medieval_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Weapons_Melee_Medieval_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Winter2017_Weapons": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Winter2017_Weapons",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Winter2017_Weapons_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Winter2017_Weapons_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_RatRod_Weapons": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_RatRod_Weapons",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_RatRod_Weapons_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_RatRod_Weapons_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Weapons_Ranged_Winter2017": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Weapons_Ranged_Winter2017",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Weapons_Ranged_Winter2017_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Weapons_Ranged_Winter2017_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Weapons_Melee_Winter2017": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Weapons_Melee_Winter2017",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Weapons_Melee_Winter2017_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Weapons_Melee_Winter2017_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Weapons_ChineseNewYear2018": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Weapons_ChineseNewYear2018",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Weapons_Crystal_ChineseNewYear2018": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Weapons_Crystal_ChineseNewYear2018",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_StormZoneCyber_Ranged": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_StormZoneCyber_Ranged",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_StormZoneCyber_Melee": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_StormZoneCyber_Melee",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_StormZoneCyber_Ranged_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_StormZoneCyber_Ranged_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_StormZoneCyber_Melee_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_StormZoneCyber_Melee_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Blockbuster2018_Ranged": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Blockbuster2018_Ranged",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Blockbuster2018_Ranged_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Blockbuster2018_Ranged_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_RoadTrip2018_Weapons": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_RoadTrip2018_Weapons",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_RoadTrip2018_Weapons_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_RoadTrip2018_Weapons_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Weapons_Ranged_StormZone2": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Weapons_Ranged_StormZone2",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Weapons_Ranged_StormZone2_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Weapons_Ranged_StormZone2_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Weapons_Melee_StormZone2": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Weapons_Melee_StormZone2",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Weapons_Melee_StormZone2_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Weapons_Melee_StormZone2_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Hydraulic": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Hydraulic",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Hydraulic_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Hydraulic_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Scavenger": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Scavenger",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:PageSpecial_Scavenger_Crystal": {
|
||||||
|
"templateId": "CollectionBookPage:PageSpecial_Scavenger_Crystal",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"CollectionBookPage:test_TestPage": {
|
||||||
|
"templateId": "CollectionBookPage:test_TestPage",
|
||||||
|
"attributes": {
|
||||||
|
"sectionStates": [],
|
||||||
|
"state": "Active"
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"attributes": {
|
||||||
|
"inventory_limit_bonus": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commandRevision": 0
|
||||||
|
}
|
||||||
15
assets/lawin/profiles/collections.json
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"_id": "LawinServer",
|
||||||
|
"created": "0001-01-01T00:00:00.000Z",
|
||||||
|
"updated": "0001-01-01T00:00:00.000Z",
|
||||||
|
"rvn": 0,
|
||||||
|
"wipeNumber": 1,
|
||||||
|
"accountId": "LawinServer",
|
||||||
|
"profileId": "collections",
|
||||||
|
"version": "no_version",
|
||||||
|
"items": {},
|
||||||
|
"stats": {
|
||||||
|
"attributes": {}
|
||||||
|
},
|
||||||
|
"commandRevision": 0
|
||||||
|
}
|
||||||
2204
assets/lawin/profiles/common_core.json
Normal file
18
assets/lawin/profiles/common_public.json
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
"created": "0001-01-01T00:00:00.000Z",
|
||||||
|
"updated": "0001-01-01T00:00:00.000Z",
|
||||||
|
"rvn": 0,
|
||||||
|
"wipeNumber": 1,
|
||||||
|
"accountId": "LawinServer",
|
||||||
|
"profileId": "common_public",
|
||||||
|
"version": "no_version",
|
||||||
|
"items": {},
|
||||||
|
"stats": {
|
||||||
|
"attributes": {
|
||||||
|
"banner_color": "DefaultColor15",
|
||||||
|
"homebase_name": "",
|
||||||
|
"banner_icon": "SurvivalBannerStonewoodComplete"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commandRevision": 0
|
||||||
|
}
|
||||||
15
assets/lawin/profiles/creative.json
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"_id": "LawinServer",
|
||||||
|
"created": "0001-01-01T00:00:00.000Z",
|
||||||
|
"updated": "0001-01-01T00:00:00.000Z",
|
||||||
|
"rvn": 0,
|
||||||
|
"wipeNumber": 1,
|
||||||
|
"accountId": "LawinServer",
|
||||||
|
"profileId": "creative",
|
||||||
|
"version": "no_version",
|
||||||
|
"items": {},
|
||||||
|
"stats": {
|
||||||
|
"attributes": {}
|
||||||
|
},
|
||||||
|
"commandRevision": 0
|
||||||
|
}
|
||||||
231
assets/lawin/profiles/metadata.json
Normal file
@@ -0,0 +1,231 @@
|
|||||||
|
{
|
||||||
|
"_id": "LawinServer",
|
||||||
|
"created": "0001-01-01T00:00:00.000Z",
|
||||||
|
"updated": "0001-01-01T00:00:00.000Z",
|
||||||
|
"rvn": 0,
|
||||||
|
"wipeNumber": 1,
|
||||||
|
"accountId": "LawinServer",
|
||||||
|
"profileId": "metadata",
|
||||||
|
"version": "no_version",
|
||||||
|
"items": {
|
||||||
|
"Outpost:outpostcore_pve_03": {
|
||||||
|
"templateId": "Outpost:outpostcore_pve_03",
|
||||||
|
"attributes": {
|
||||||
|
"cloud_save_info": {
|
||||||
|
"saveCount": 319,
|
||||||
|
"savedRecords": [
|
||||||
|
{
|
||||||
|
"recordIndex": 0,
|
||||||
|
"archiveNumber": 1,
|
||||||
|
"recordFilename": "eb192023-7db8-4bc0-b3e4-bf060c7baf87_r0_a1.sav"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"level": 10,
|
||||||
|
"outpost_core_info": {
|
||||||
|
"placedBuildings": [
|
||||||
|
{
|
||||||
|
"buildingTag": "Outpost.BuildingActor.Building.00",
|
||||||
|
"placedTag": "Outpost.PlacementActor.Placement.01"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildingTag": "Outpost.BuildingActor.Building.01",
|
||||||
|
"placedTag": "Outpost.PlacementActor.Placement.00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildingTag": "Outpost.BuildingActor.Building.02",
|
||||||
|
"placedTag": "Outpost.PlacementActor.Placement.05"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildingTag": "Outpost.BuildingActor.Building.03",
|
||||||
|
"placedTag": "Outpost.PlacementActor.Placement.02"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"accountsWithEditPermission": [],
|
||||||
|
"highestEnduranceWaveReached": 30
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"Outpost:outpostcore_pve_02": {
|
||||||
|
"templateId": "Outpost:outpostcore_pve_02",
|
||||||
|
"attributes": {
|
||||||
|
"cloud_save_info": {
|
||||||
|
"saveCount": 603,
|
||||||
|
"savedRecords": [
|
||||||
|
{
|
||||||
|
"recordIndex": 0,
|
||||||
|
"archiveNumber": 0,
|
||||||
|
"recordFilename": "76fe0295-aee2-463a-9229-d9933b4969b8_r0_a0.sav"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"level": 10,
|
||||||
|
"outpost_core_info": {
|
||||||
|
"placedBuildings": [
|
||||||
|
{
|
||||||
|
"buildingTag": "Outpost.BuildingActor.Building.00",
|
||||||
|
"placedTag": "Outpost.PlacementActor.Placement.00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildingTag": "Outpost.BuildingActor.Building.01",
|
||||||
|
"placedTag": "Outpost.PlacementActor.Placement.01"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildingTag": "Outpost.BuildingActor.Building.02",
|
||||||
|
"placedTag": "Outpost.PlacementActor.Placement.04"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildingTag": "Outpost.BuildingActor.Building.03",
|
||||||
|
"placedTag": "Outpost.PlacementActor.Placement.03"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildingTag": "Outpost.BuildingActor.Building.04",
|
||||||
|
"placedTag": "Outpost.PlacementActor.Placement.02"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"accountsWithEditPermission": [],
|
||||||
|
"highestEnduranceWaveReached": 30
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"Outpost:outpostcore_pve_04": {
|
||||||
|
"templateId": "Outpost:outpostcore_pve_04",
|
||||||
|
"attributes": {
|
||||||
|
"cloud_save_info": {
|
||||||
|
"saveCount": 77,
|
||||||
|
"savedRecords": [
|
||||||
|
{
|
||||||
|
"recordIndex": 0,
|
||||||
|
"archiveNumber": 1,
|
||||||
|
"recordFilename": "940037e4-87d2-499e-8d00-cdb2dfa326b9_r0_a1.sav"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"level": 10,
|
||||||
|
"outpost_core_info": {
|
||||||
|
"placedBuildings": [
|
||||||
|
{
|
||||||
|
"buildingTag": "Outpost.BuildingActor.Building.00",
|
||||||
|
"placedTag": "Outpost.PlacementActor.Placement.00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildingTag": "Outpost.BuildingActor.Building.01",
|
||||||
|
"placedTag": "Outpost.PlacementActor.Placement.01"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildingTag": "Outpost.BuildingActor.Building.02",
|
||||||
|
"placedTag": "Outpost.PlacementActor.Placement.03"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildingTag": "Outpost.BuildingActor.Building.03",
|
||||||
|
"placedTag": "Outpost.PlacementActor.Placement.05"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"accountsWithEditPermission": [],
|
||||||
|
"highestEnduranceWaveReached": 30
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"Outpost:outpostcore_pve_01": {
|
||||||
|
"templateId": "Outpost:outpostcore_pve_01",
|
||||||
|
"attributes": {
|
||||||
|
"cloud_save_info": {
|
||||||
|
"saveCount": 851,
|
||||||
|
"savedRecords": [
|
||||||
|
{
|
||||||
|
"recordIndex": 0,
|
||||||
|
"archiveNumber": 0,
|
||||||
|
"recordFilename": "a1d68ce6-63a5-499a-946f-9e0c825572d7_r0_a0.sav"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"level": 10,
|
||||||
|
"outpost_core_info": {
|
||||||
|
"placedBuildings": [
|
||||||
|
{
|
||||||
|
"buildingTag": "Outpost.BuildingActor.Building.00",
|
||||||
|
"placedTag": "Outpost.PlacementActor.Placement.00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildingTag": "Outpost.BuildingActor.Building.01",
|
||||||
|
"placedTag": "Outpost.PlacementActor.Placement.02"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildingTag": "Outpost.BuildingActor.Building.02",
|
||||||
|
"placedTag": "Outpost.PlacementActor.Placement.01"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"buildingTag": "Outpost.BuildingActor.Building.03",
|
||||||
|
"placedTag": "Outpost.PlacementActor.Placement.05"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"accountsWithEditPermission": [],
|
||||||
|
"highestEnduranceWaveReached": 30
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"DeployableBaseCloudSave:testdeployablebaseitemdef": {
|
||||||
|
"templateId": "DeployableBaseCloudSave:testdeployablebaseitemdef",
|
||||||
|
"attributes": {
|
||||||
|
"tier_progression": {
|
||||||
|
"progressionInfo": [
|
||||||
|
{
|
||||||
|
"progressionLayoutGuid": "B70B5C69-437E-75C5-CB91-7E913F3B5294",
|
||||||
|
"highestDefeatedTier": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"progressionLayoutGuid": "04FD086F-4A99-823B-06C3-979A8F408960",
|
||||||
|
"highestDefeatedTier": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"progressionLayoutGuid": "D3D31F40-45D8-FD77-67E6-5FBAB0550417",
|
||||||
|
"highestDefeatedTier": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"progressionLayoutGuid": "92A17A43-4EDC-8F69-688F-24BB3A3D8AEF",
|
||||||
|
"highestDefeatedTier": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"progressionLayoutGuid": "A2D8DB3E-457E-279B-58F5-AA9BA2FDC547",
|
||||||
|
"highestDefeatedTier": 4
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"progressionLayoutGuid": "5AAB9A15-49F5-0D74-0B22-BB9686396E8F",
|
||||||
|
"highestDefeatedTier": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"progressionLayoutGuid": "9077163A-4664-1993-5A20-D28170404FD6",
|
||||||
|
"highestDefeatedTier": 3
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"progressionLayoutGuid": "FB679125-49BC-0025-48F3-22A1B8085189",
|
||||||
|
"highestDefeatedTier": 4
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"cloud_save_info": {
|
||||||
|
"saveCount": 11,
|
||||||
|
"savedRecords": [
|
||||||
|
{
|
||||||
|
"recordIndex": 0,
|
||||||
|
"archiveNumber": 1,
|
||||||
|
"recordFilename": "2FA8CFBB-4973-CCF0-EEA8-BEBC37D99F52_r0_a1.sav"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"level": 0
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"attributes": {
|
||||||
|
"inventory_limit_bonus": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commandRevision": 0
|
||||||
|
}
|
||||||
17
assets/lawin/profiles/outpost0.json
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
"_id": "LawinServer",
|
||||||
|
"created": "0001-01-01T00:00:00.000Z",
|
||||||
|
"updated": "0001-01-01T00:00:00.000Z",
|
||||||
|
"rvn": 0,
|
||||||
|
"wipeNumber": 1,
|
||||||
|
"accountId": "LawinServer",
|
||||||
|
"profileId": "outpost0",
|
||||||
|
"version": "no_version",
|
||||||
|
"items": {},
|
||||||
|
"stats": {
|
||||||
|
"attributes": {
|
||||||
|
"inventory_limit_bonus": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commandRevision": 0
|
||||||
|
}
|
||||||
35978
assets/lawin/profiles/profile0.json
Normal file
694
assets/lawin/profiles/theater0.json
Normal file
@@ -0,0 +1,694 @@
|
|||||||
|
{
|
||||||
|
"_id": "LawinServer",
|
||||||
|
"created": "0001-01-01T00:00:00.000Z",
|
||||||
|
"updated": "0001-01-01T00:00:00.000Z",
|
||||||
|
"rvn": 0,
|
||||||
|
"wipeNumber": 1,
|
||||||
|
"accountId": "LawinServer",
|
||||||
|
"profileId": "theater0",
|
||||||
|
"version": "no_version",
|
||||||
|
"items": {
|
||||||
|
"3d81f6f3-1290-326e-dfee-e577af2e9fbb": {
|
||||||
|
"templateId": "Ingredient:ingredient_blastpowder",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"70ff3716-d732-c472-b1d8-0a20d48dd607": {
|
||||||
|
"templateId": "Ingredient:ingredient_ore_silver",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"48059439-88b0-a779-daae-36d9495f079e": {
|
||||||
|
"templateId": "Ingredient:ingredient_ore_alloy",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"7dd4a423-0b6f-3abb-757c-88077adcaacc": {
|
||||||
|
"templateId": "Ingredient:ingredient_crystal_sunbeam",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"694a4c8d-67b6-f903-85bf-f33d4e7a6859": {
|
||||||
|
"templateId": "Ingredient:ingredient_ore_obsidian",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"97feb4c9-2290-fd4b-c356-7f346ba67e39": {
|
||||||
|
"templateId": "Ingredient:ingredient_mechanical_parts_t05",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"25ff4168-8eb9-a5cc-4900-d06cdb8004ab": {
|
||||||
|
"templateId": "Ingredient:ingredient_mechanical_parts_t02",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"a63022b8-6467-a347-7c11-37d483d45d08": {
|
||||||
|
"templateId": "Ingredient:ingredient_rare_powercell",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"7e0d23d2-24dc-9579-4f32-507758107bd3": {
|
||||||
|
"templateId": "Ingredient:ingredient_resin",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"d44ad9ed-a5d3-0642-a865-083061aeb4e6": {
|
||||||
|
"templateId": "Ingredient:ingredient_powder_t05",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"2011030e-dbce-a02b-c086-ec8a99f16aeb": {
|
||||||
|
"templateId": "Ingredient:ingredient_crystal_quartz",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"7d43d569-e170-bd46-dfb2-92828ff0c98d": {
|
||||||
|
"templateId": "Ingredient:ingredient_rare_mechanism",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"1db23fbf-1ab5-72d9-2b20-50eacebda6d5": {
|
||||||
|
"templateId": "Ingredient:ingredient_nuts_bolts",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 0,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"024aa359-e313-168a-3738-31ae4f04cfb2": {
|
||||||
|
"templateId": "Ingredient:ingredient_ore_brightcore",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"da7680a3-072e-3e3f-3ed6-bf71159f6df0": {
|
||||||
|
"templateId": "Ingredient:ingredient_planks",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"10aec620-f4b9-aadd-da3e-5d4a8f87225b": {
|
||||||
|
"templateId": "Ingredient:ingredient_ore_malachite",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"161217ac-5b39-a93e-a1d8-7f7667646624": {
|
||||||
|
"templateId": "Ingredient:ingredient_crystal_shadowshard",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"f33663f5-bf16-9315-8df2-91800944b3e8": {
|
||||||
|
"templateId": "Ingredient:ingredient_twine_t05",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"aa4a3cce-9bb5-50ef-4c59-f959e89c3992": {
|
||||||
|
"templateId": "Ingredient:ingredient_twine_t01",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"e9eca1e1-7665-1315-de97-6583394e0af1": {
|
||||||
|
"templateId": "Ingredient:ingredient_batteries",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"d1fd9cb3-0d51-6d7c-e937-9b07406ba42e": {
|
||||||
|
"templateId": "Ingredient:ingredient_twine_t04",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"7d8f824d-cec2-01d5-0efc-c30073402de2": {
|
||||||
|
"templateId": "Ingredient:ingredient_herbs",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"bdb45648-18f6-fdc6-8252-b717043f0021": {
|
||||||
|
"templateId": "Ingredient:ingredient_mechanical_parts_t04",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"ddc2382e-faf9-14dd-c721-c659660540a8": {
|
||||||
|
"templateId": "Ingredient:ingredient_ore_copper",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"75582a66-bc3e-958a-1943-79a56150d0bb": {
|
||||||
|
"templateId": "Ingredient:ingredient_powder_t03",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"b4616de1-caf4-3652-a613-edb932df71e0": {
|
||||||
|
"templateId": "Ingredient:ingredient_mechanical_parts_t01",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"bdc338a8-3667-e7e4-280d-5d4e4255b3f1": {
|
||||||
|
"templateId": "Ingredient:ingredient_twine_t02",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"d17582f7-eb63-a4a6-cd4d-ff3d68e69757": {
|
||||||
|
"templateId": "Ingredient:ingredient_powder_t01",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"25e43cee-7dc7-348b-40bc-20b8850468ba": {
|
||||||
|
"templateId": "Ingredient:ingredient_duct_tape",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"720bc675-44e2-ff74-6e5c-eec23b493bd1": {
|
||||||
|
"templateId": "Ingredient:ingredient_twine_t03",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"0e2094f2-9c35-9e51-58ea-a87ec89fa758": {
|
||||||
|
"templateId": "Ingredient:ingredient_powder_t02",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"1cf850a0-1797-4fe8-dd94-34152756c80b": {
|
||||||
|
"templateId": "Ingredient:ingredient_bacon",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 0,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"7fe47331-1cbd-4606-c12e-6df2c1dc13a3": {
|
||||||
|
"templateId": "Ingredient:ingredient_mechanical_parts_t03",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"42d429fc-a4cf-974d-2bce-17c6b872c96e": {
|
||||||
|
"templateId": "Ingredient:ingredient_ore_coal",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"124d77cc-8cd4-fdcc-efe1-c18ee63587eb": {
|
||||||
|
"templateId": "Ingredient:ingredient_flowers",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"ea2a6495-4b9e-59df-0163-5e5e8f52467e": {
|
||||||
|
"templateId": "Ingredient:ingredient_powder_t04",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"6291ab77-ec9b-1b35-ccb0-063519415f6d": {
|
||||||
|
"templateId": "WorldItem:wooditemdata",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"2d7953c0-752f-c2a7-ebef-90b45cb30b5b": {
|
||||||
|
"templateId": "WorldItem:stoneitemdata",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"06f471d5-046b-50f6-3f07-9aa670b6fecb": {
|
||||||
|
"templateId": "WorldItem:metalitemdata",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"003e7a8c-92eb-13c1-6b0e-aafad8f3d81d": {
|
||||||
|
"templateId": "Weapon:edittool",
|
||||||
|
"attributes": {
|
||||||
|
"clipSizeScale": 0,
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"baseClipSize": 0,
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"bcb13e35-c030-cf2a-a003-16377320beda": {
|
||||||
|
"templateId": "Weapon:buildingitemdata_wall",
|
||||||
|
"attributes": {
|
||||||
|
"clipSizeScale": 0,
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"baseClipSize": 0,
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"97ba026b-a36c-6827-e9d7-21bc6a1f9c53": {
|
||||||
|
"templateId": "Weapon:buildingitemdata_floor",
|
||||||
|
"attributes": {
|
||||||
|
"clipSizeScale": 0,
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"baseClipSize": 0,
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"15c02d16-11f6-ffd1-e8bb-4b5d56bd5bd9": {
|
||||||
|
"templateId": "Weapon:buildingitemdata_stair_w",
|
||||||
|
"attributes": {
|
||||||
|
"clipSizeScale": 0,
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"baseClipSize": 0,
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"f603c8af-e326-202e-3b12-b5fd2517e5c2": {
|
||||||
|
"templateId": "Weapon:buildingitemdata_roofs",
|
||||||
|
"attributes": {
|
||||||
|
"clipSizeScale": 0,
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"baseClipSize": 0,
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 1
|
||||||
|
},
|
||||||
|
"baa4f86c-708c-7689-0859-fbfdb1bc623a": {
|
||||||
|
"templateId": "Ammo:ammodatabulletsmedium",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"240894a2-f99a-214d-ce50-2dac39394699": {
|
||||||
|
"templateId": "Ammo:ammodatashells",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": "None"
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"1a0c69f4-2c23-a5c9-34a0-f48c45637171": {
|
||||||
|
"templateId": "Ammo:ammodataenergycell",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": ""
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"a92b1e7e-5812-0bfd-0107-f7b97ed166fa": {
|
||||||
|
"templateId": "Ammo:ammodatabulletsheavy",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": "None"
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"7516967c-e831-4c3a-1a24-03834756f532": {
|
||||||
|
"templateId": "Ammo:ammodatabulletslight",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": "None"
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
},
|
||||||
|
"23220ed0-29d4-3da1-6e0e-6df46a19752d": {
|
||||||
|
"templateId": "Ammo:ammodataexplosive",
|
||||||
|
"attributes": {
|
||||||
|
"loadedAmmo": 0,
|
||||||
|
"inventory_overflow_date": false,
|
||||||
|
"level": 0,
|
||||||
|
"alterationDefinitions": [],
|
||||||
|
"durability": 1,
|
||||||
|
"itemSource": "None"
|
||||||
|
},
|
||||||
|
"quantity": 999
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"stats": {
|
||||||
|
"attributes": {
|
||||||
|
"player_loadout": {
|
||||||
|
"bPlayerIsNew": false,
|
||||||
|
"pinnedSchematicInstances": [],
|
||||||
|
"primaryQuickBarRecord": {
|
||||||
|
"slots": [
|
||||||
|
{
|
||||||
|
"items": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"items": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"items": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"items": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"items": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"items": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"items": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"items": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"items": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"secondaryQuickBarRecord": {
|
||||||
|
"slots": [
|
||||||
|
{
|
||||||
|
"items": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"items": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"items": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"items": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"items": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"items": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"items": []
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"zonesCompleted": 0
|
||||||
|
},
|
||||||
|
"theater_unique_id": "",
|
||||||
|
"past_lifetime_zones_completed": 0,
|
||||||
|
"last_event_instance_key": "",
|
||||||
|
"last_zones_completed": 0,
|
||||||
|
"inventory_limit_bonus": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"profileLockExpiration": "0001-01-01T00:00:00.000Z",
|
||||||
|
"commandRevision": 0
|
||||||
|
}
|
||||||
BIN
assets/lawin/public/images/discord-s.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
assets/lawin/public/images/discord.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
assets/lawin/public/images/lawin-s.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
assets/lawin/public/images/lawin.jpg
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
assets/lawin/public/images/motd-s.png
Normal file
|
After Width: | Height: | Size: 117 KiB |
BIN
assets/lawin/public/images/motd.png
Normal file
|
After Width: | Height: | Size: 398 KiB |
BIN
assets/lawin/public/images/seasonx.png
Normal file
|
After Width: | Height: | Size: 291 KiB |
461
assets/lawin/responses/BattlePass/Season10.json
Normal file
@@ -0,0 +1,461 @@
|
|||||||
|
{
|
||||||
|
"battleBundleOfferId": "259920BC42F0AAC7C8672D856C9B622C",
|
||||||
|
"battlePassOfferId": "2E43CCD24C3BE8F5ABBDF28E233B9350",
|
||||||
|
"tierOfferId": "AF1B7AC14A5F6A9ED255B88902120757",
|
||||||
|
"paidRewards": [
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 50,
|
||||||
|
"Token:athenaseasonfriendxpboost": 60,
|
||||||
|
"AthenaCharacter:cid_486_athena_commando_f_streetracerdrift": 1,
|
||||||
|
"AthenaCharacter:cid_488_athena_commando_m_rustremix": 1,
|
||||||
|
"Token:athenaseasonmergedxpboosts": 1,
|
||||||
|
"ChallengeBundleSchedule:season10_seasonx_schedule": 1,
|
||||||
|
"ChallengeBundleSchedule:season10_blackknight_schedule": 1,
|
||||||
|
"ChallengeBundleSchedule:season10_djyonger_schedule": 1,
|
||||||
|
"ChallengeBundleSchedule:season10_drift_schedule": 1,
|
||||||
|
"ChallengeBundleSchedule:season10_rustlord_schedule": 1,
|
||||||
|
"ChallengeBundleSchedule:season10_sparkle_schedule": 1,
|
||||||
|
"ChallengeBundleSchedule:season10_teknique_schedule": 1,
|
||||||
|
"ChallengeBundleSchedule:season10_voyager_schedule": 1,
|
||||||
|
"ChallengeBundleSchedule:season10_mission_schedule": 1,
|
||||||
|
"ChallengeBundleSchedule:season10_seasonlevel_mission_schedule": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10,
|
||||||
|
"Token:athenanextseasonxpboost": 30
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_redknight": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_107_graffitiremix": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs10dragonegg": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_166_rustlordremix": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_150_icedragon": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_161_h7outfitsa": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaMusicPack:musicpack_024_showdown": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs10medievalknight": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_140_moistymire": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaPickaxe:pickaxe_id_245_voyagerremix1h": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_155_akdrift": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_crackshot": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_149_fireice": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_074_driftlightning": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_151_jmsparkle": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_483_athena_commando_f_graffitiremix": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_popcorn": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs10kevincube": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:petcarrier_012_drift_fox": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_154_ijcuddle": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_lifepreserver": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_jaywalking": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs10astronaut": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_106_djremix": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_158_ntdurrr": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:toy_015_bottle": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_138_sparklespecialist": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_163_djremix": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_175_jmtomato": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_065_djremix": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_coolpepper": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_286_petcarrier_driftfox_styleb": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_160_ktvendetta": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_487_athena_commando_m_djremix": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_135_riskyreels": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs10britebomber": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_156_akbrite": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:toy_020_bottle_fancy": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_288_djremix_headgearb": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaPickaxe:pickaxe_id_242_sparkleremix": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_162_h7outfitsb": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_crossswords": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_105_cube": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs10grid": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_139_tiltedmap": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_treadmilldance": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_287_petcarrier_driftfox_stylec": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_164_smcrackshot": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_066_tacticalhud": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs10westernhats": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_485_athena_commando_f_sparkleremix": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:bid_318_sparkleremix": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_134_dustydepot": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_159_ktfirewalker": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_290_sparkleremix_hairstyleb": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_169_voyagerremix": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs10boombox": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_breakdance2": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_177_ijllama": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_075_celestial": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_109_rustremix": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs10doublepump": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_176_smvolcano": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_489_athena_commando_m_voyagerremix": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_sweaty": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaMusicPack:musicpack_022_daydream": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_132_blackknight": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_291_voyagerremix_stageb": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_152_jmluxe": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_165_knightremix": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_110_streetracerdriftremix": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_289_djremix_headgearc": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_484_athena_commando_m_knightremix": 1,
|
||||||
|
"AthenaBackpack:bid_317_knightremix": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"freeRewards": [
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_136_rocketlaunch": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_163_smrocketride": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_068_popcorn": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_boogiebomb": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_happyskipping": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs10rift": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_108_knightremix": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_133_butterfly": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_164_graffitiremix": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:bid_320_rustlordremix": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs1080sllama": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_blowingbubbles": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaMusicPack:musicpack_023_og": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs10shades": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_142_cuberune": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_153_ijdriftboard": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
}
|
||||||
318
assets/lawin/responses/BattlePass/Season2.json
Normal file
@@ -0,0 +1,318 @@
|
|||||||
|
{
|
||||||
|
"battlePassOfferId": "C3BA14F04F4D56FC1D490F8011B56553",
|
||||||
|
"tierOfferId": "F86AC2ED4B3EA4B2D65EF1B2629572A0",
|
||||||
|
"paidRewards": [
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 50,
|
||||||
|
"Token:athenaseasonfriendxpboost": 10,
|
||||||
|
"AthenaCharacter:cid_032_athena_commando_m_medieval": 1,
|
||||||
|
"AthenaBackpack:bid_001_bluesquire": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10,
|
||||||
|
"Token:athenanextseasontierboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason02bush": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_clapping": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaPickaxe:pickaxe_id_012_district": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason02lionherald": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_rip": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_004_disco": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason02catsoldier": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason02dragon": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_rage": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_033_athena_commando_f_medieval": 1,
|
||||||
|
"AthenaBackpack:bid_002_royaleknight": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_peacesign": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason02planet": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_disco": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_worm": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason02bowling": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason02monstertruck": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_exclamation": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaPickaxe:pickaxe_id_011_medieval": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_armflex": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason02icecream": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_mvp": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_003_district": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason02log": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_baited": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_floss": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason02cake": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason02tank": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_salty": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_039_athena_commando_f_disco": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_stealthy": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason02gasmask": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_potatoaim": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaPickaxe:pickaxe_id_013_teslacoil": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason02vulture": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_onfire": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_035_athena_commando_m_medieval": 1,
|
||||||
|
"AthenaBackpack:bid_004_blackknight": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"freeRewards": [
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_lol": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_wave": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason02salt": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_hearthands": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_bullseye": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_ridethepony_athena": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason02crosshair": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason02shark": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_002_medieval": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
}
|
||||||
442
assets/lawin/responses/BattlePass/Season3.json
Normal file
@@ -0,0 +1,442 @@
|
|||||||
|
{
|
||||||
|
"battleBundleOfferId": "70487F4C4673CC98F2FEBEBB26505F44",
|
||||||
|
"battlePassOfferId": "2331626809474871A3A44C47C1D8742E",
|
||||||
|
"tierOfferId": "E2D7975EFEC54A45900D8D9A6D9D273C",
|
||||||
|
"paidRewards": [
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 50,
|
||||||
|
"Token:athenaseasonfriendxpboost": 10,
|
||||||
|
"AthenaCharacter:cid_080_athena_commando_m_space": 1,
|
||||||
|
"ChallengeBundleSchedule:season3_challenge_schedule": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10,
|
||||||
|
"Token:athenanextseasontierboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03egg": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_wow": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_005_suppressedpistol": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaPickaxe:pickaxe_id_027_scavenger": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_thief": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03bee": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_003_pickaxes": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03worm": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_heartbroken": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_015_brite": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03paw": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_boombox": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_002_rainbow": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03sun": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_rocketride": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_082_athena_commando_m_scavenger": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03falcon": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03chick": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_004_tacticalshotgun": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03dogcollar": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_bush": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_takethel": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03crescentmoon": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_004_bluestreak": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_awww": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_016_tactical": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03crab": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03tophat": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_001_brite": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_thumbsup": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:bid_024_space": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_thumbsdown": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_001_disco": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_1hp": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03wing": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_081_athena_commando_f_space": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_hotdawg": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_006_minigun": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03snake": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_bestmates": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_hoarder": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03teddybear": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_005_bubbles": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_088_athena_commando_m_spaceblack": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:bid_028_spaceblack": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03happycloud": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_200iqplay": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_002_raptor": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03wolf": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaPickaxe:pickaxe_id_029_assassin": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_flamingrage": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03whale": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_003_fire": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_kaboom": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_083_athena_commando_f_tactical": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03lightning": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_majestic": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_007_tacticalcommando": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03flail": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_robot": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_number1": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03dinosaurskull": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_084_athena_commando_m_assassin": 1,
|
||||||
|
"ChallengeBundleSchedule:season3_tier_100_schedule": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"freeRewards": [
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"ChallengeBundleSchedule:season3_tier_2_schedule": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03donut": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_salute": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_inlove": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:bid_025_tactical": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_goodgame": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_008_keyart": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03eagle": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_positivity": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaPickaxe:pickaxe_id_028_space": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason03shootingstar": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_aplus": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
}
|
||||||
444
assets/lawin/responses/BattlePass/Season4.json
Normal file
@@ -0,0 +1,444 @@
|
|||||||
|
{
|
||||||
|
"battleBundleOfferId": "884CE68998C44AC58D85C5A9883DE1A6",
|
||||||
|
"battlePassOfferId": "76EA7FE9787744B09B79FF3FC5E39D0C",
|
||||||
|
"tierOfferId": "E9527AF46F4B4A9CAE98D91F2AA53CB6",
|
||||||
|
"paidRewards": [
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 50,
|
||||||
|
"Token:athenaseasonfriendxpboost": 10,
|
||||||
|
"AthenaCharacter:cid_115_athena_commando_m_carbideblue": 1,
|
||||||
|
"AthenaCharacter:cid_125_athena_commando_m_tacticalwoodland": 1,
|
||||||
|
"ChallengeBundleSchedule:season4_challenge_schedule": 1,
|
||||||
|
"Token:athenaseasonmergedxpboosts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10,
|
||||||
|
"Token:athenanextseasontierboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_002_xmark": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_dynamite": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_017_carbide": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaPickaxe:pickaxe_id_045_valor": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_camera": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_006_rainbow": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_018_rex": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason04heroemblem": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_007_smilegg": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_035_candy": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason04spraycan": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_zzz": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_010_retroscifi": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason04dogbowl": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_008_hearts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_120_athena_commando_f_graffiti": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_babyseal": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason04duck": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_019_tacticaljungle": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_004_chalkoutline": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_popcorn": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason04fence": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_019_circle": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_012_spraypaint": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_011_looted": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_033_valor": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason04only90skids": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_003_arrow": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_021_leviathan": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_plotting": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_119_athena_commando_f_candy": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_012_royalstroll": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_008_lightning": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_chicken": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_005_abstract": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:bid_047_candy": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_021_doit": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason04pencil": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_024_graffiti": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_020_threellamas": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_hype": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_crabby": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_009_window": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_009_hearts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason04blitz": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_013_trapwarning": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_118_athena_commando_f_valor": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_014_raven": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_rabid": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_023_candy": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason04filmcamera": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_015_lips": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_034_carbideblue": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_016_ponytail": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason04bow": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_013_shootingstar": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_022_britegunner": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_017_splattershot": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_117_athena_commando_m_tacticaljungle": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason04seaserpent": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_banana": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_025_raven": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason04villainemblem": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_010_tunnel": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_groovejam": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_celebrate": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_018_shadowops": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_116_athena_commando_m_carbideblack": 1,
|
||||||
|
"ChallengeBundleSchedule:season4_progressiveb_schedule": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"freeRewards": [
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"ChallengeBundleSchedule:season4_starterchallenge_schedule": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason04goo": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:bid_045_tacticaljungle": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_angel": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_teamwork": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_goodvibes": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_020_supplydrop": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason04chains": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_rainbow": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaPickaxe:pickaxe_id_046_candy": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason04teef": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_kungfusalute": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
}
|
||||||
453
assets/lawin/responses/BattlePass/Season5.json
Normal file
@@ -0,0 +1,453 @@
|
|||||||
|
{
|
||||||
|
"battleBundleOfferId": "FF77356F424644529049280AFC8A795E",
|
||||||
|
"battlePassOfferId": "D51A2F28AAF843C0B208F14197FBFE91",
|
||||||
|
"tierOfferId": "4B2E310BC1AE40B292A16D5AAD747E0A",
|
||||||
|
"paidRewards": [
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 50,
|
||||||
|
"Token:athenaseasonfriendxpboost": 10,
|
||||||
|
"AthenaCharacter:cid_163_athena_commando_f_viking": 1,
|
||||||
|
"AthenaCharacter:cid_161_athena_commando_m_drift": 1,
|
||||||
|
"ChallengeBundleSchedule:season5_paid_schedule": 1,
|
||||||
|
"Token:athenaseasonmergedxpboosts": 1,
|
||||||
|
"ChallengeBundleSchedule:season5_progressivea_schedule": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10,
|
||||||
|
"Token:athenanextseasontierboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason05tictactoe": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_go": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_038_sushi": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_050_streetracercobra": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason05shoppingcart": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:toy_001_basketball": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_024_boogie": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_046_vikingpattern": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason05dolphin": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaPickaxe:pickaxe_id_073_balloon": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_poolparty": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_034_abstrakt": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_017_lanterns": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason05kitsune": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_036_strawberrypaws": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_162_athena_commando_f_streetracer": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_prickly": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:toy_002_golfball": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_045_vikingfemale": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_030_luchador": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_youreawesome": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason05flowyhat": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_040_lifeguard": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_018_runes": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_stop": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_034_goodvibes": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_048_viking": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_028_durrr": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:toy_003_beachball": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_039_jailbirds": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_embarrassed": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_166_athena_commando_f_lifeguard": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_033_fakedoor": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason05golf": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_alarm": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_037_drift": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:bid_071_vikingfemale": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason05icecreamtruck": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:toy_005_golfballelite": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_044_flytrap": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason05palms": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_swipeit": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_042_omen": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_tattered": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_016_ice": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason05spiderbadass": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_167_athena_commando_m_tacticalbadass": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_035_nordicllama": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:toy_006_beachballelite": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason05racingcheckers": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_043_redknight": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_tasty": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_049_lifeguard": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_032_potatoaim": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason05scubagear": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_007_tp": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_badapple": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_035_bandolier": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_173_athena_commando_f_starfishuniform": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason05cobra": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:toy_004_basketballelite": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_stinky": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_037_tomatohead": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_039_yummy": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_hiphops5": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_potofgold": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_026_darkviking": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_165_athena_commando_m_darkviking": 1,
|
||||||
|
"ChallengeBundleSchedule:season5_progressiveb_schedule": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"freeRewards": [
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_025_crazycastle": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_036_drift": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_stagebow": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_rockon": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason05vikingship": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:bid_075_tacticalbadass": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_055_streetracerblack": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_031_pixels": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaPickaxe:pickaxe_id_071_streetracer": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:bid_074_lifeguardfemale": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason05dinosaur": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_calculated": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_038_highexplosives": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_011_glitch": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_trap": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_029_lasershark": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
}
|
||||||
453
assets/lawin/responses/BattlePass/Season6.json
Normal file
@@ -0,0 +1,453 @@
|
|||||||
|
{
|
||||||
|
"battleBundleOfferId": "19D4A5ACC90B4CDF88766A0C8A6D13FB",
|
||||||
|
"battlePassOfferId": "9C8D0323775A4F59A1D4283E3FDB356C",
|
||||||
|
"tierOfferId": "A6FE59C497B844068E1B5D84396F19BA",
|
||||||
|
"paidRewards": [
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 50,
|
||||||
|
"Token:athenaseasonfriendxpboost": 10,
|
||||||
|
"AthenaCharacter:cid_233_athena_commando_m_fortnitedj": 1,
|
||||||
|
"AthenaCharacter:cid_237_athena_commando_f_cowgirl": 1,
|
||||||
|
"ChallengeBundleSchedule:season6_paid_schedule": 1,
|
||||||
|
"Token:athenaseasonmergedxpboosts": 1,
|
||||||
|
"ChallengeBundleSchedule:season6_progressivea_schedule": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10,
|
||||||
|
"Token:athenanextseasontierboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason06pickaxebr": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_bang": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_058_cowgirl": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_079_redriding": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason06campfire": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_052_emoticoncollage": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:petcarrier_001_dog": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaMusicPack:musicpack_001_floss": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason06phantom": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaPickaxe:pickaxe_id_103_fortnitedj": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_witchsbrew": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_024_dieselsmoke": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_050_fullmoon": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_057_bunnies": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason06zigzag": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_234_athena_commando_m_llamarider": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_058_djconcept": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_plunger": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:toy_007_tomato": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:petcarrier_002_chameleon": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_056_manholecover": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_runningman": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason06dice": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_055_valkyrie": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_023_fireflies": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_060_dayofdead": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_camper": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_080_prairiepusher": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_059_dj": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:petcarrier_003_dragon": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_056_fate": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_ghost": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_231_athena_commando_f_redriding": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_055_wallcrawler": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason06rift": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_blackcat": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaMusicPack:musicpack_002_spooky": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_049_cactusmaze": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:bid_119_vampirefemale": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason06bat": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_033_petcarrier_dog_styleb": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_050_tomatotemple": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason06carbonfiber": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_octopus": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_054_scuba": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_meet": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_026_bats": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason06polkadots": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_227_athena_commando_f_vampire": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_047_gremlins": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_035_petcarrier_dragon_styleb": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:toy_008_tomatoelite": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason06housefly": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_059_vampire": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_078_vampire": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_045_oni": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason06skulltrooper": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_022_greensmoke": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_051_ravage": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_232_athena_commando_f_halloweentomato": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:bid_122_halloweentomato": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_046_pixelraven": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_034_petcarrier_dog_stylec": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaMusicPack:musicpack_003_ogremix": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_061_werewolf": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_clown": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_flamenco": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_036_petcarrier_dragon_stylec": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_062_werewolf": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_230_athena_commando_m_werewolf": 1,
|
||||||
|
"ChallengeBundleSchedule:season6_progressiveb_schedule": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"freeRewards": [
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_061_spiderweb": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_060_cowgirl": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_regalwave": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_battlebus": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason06floatingisland": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:bid_121_redriding": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_081_cowboygunslinger": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_053_ggpotion": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaPickaxe:pickaxe_id_102_redriding": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:bid_123_fortnitedj": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason06handhorns": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_needtogo": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_053_supplyllama": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_025_jackolantern": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_tp": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_051_gameover": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
}
|
||||||
454
assets/lawin/responses/BattlePass/Season7.json
Normal file
@@ -0,0 +1,454 @@
|
|||||||
|
{
|
||||||
|
"battleBundleOfferId": "347A90158C64424980E8C1B3DC088F37",
|
||||||
|
"battlePassOfferId": "3A3C99847F144AF3A030DB5690477F5A",
|
||||||
|
"tierOfferId": "64A3020B098841A7805EE257D68C554F",
|
||||||
|
"paidRewards": [
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 50,
|
||||||
|
"Token:athenaseasonfriendxpboost": 10,
|
||||||
|
"AthenaCharacter:cid_287_athena_commando_m_arcticsniper": 1,
|
||||||
|
"AthenaCharacter:cid_286_athena_commando_f_neoncat": 1,
|
||||||
|
"ChallengeBundleSchedule:season7_paid_schedule": 1,
|
||||||
|
"Token:athenaseasonmergedxpboosts": 1,
|
||||||
|
"ChallengeBundleSchedule:season7_progressivea_schedule": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10,
|
||||||
|
"Token:athenanextseasontierboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason07wreath": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_001_arcticcamo": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_mistletoe": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:bid_160_tacticalsantamale": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_068_eviltree": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_002_holidaygreen": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_080_gingerbread": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaMusicPack:musicpack_004_holiday": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason07merryface": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_101_tacticalsanta": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_ggwreath": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:petcarrier_004_hamster": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_069_bagofcoal": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_032_stringlights": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_075_tacticalsanta": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_279_athena_commando_m_tacticalsanta": 1,
|
||||||
|
"ChallengeBundleSchedule:season7_sgtwinter_schedule": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_gingerbreadhappy": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_003_anodizedred": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:toy_010_icepuck": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason07tartan": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_083_crackshot": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_wristflick": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_gingerbreadmad": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:petcarrier_005_wolf": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_071_neoncat": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_037_glyphs": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason07iceninjastar": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_104_durrburger": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_081_tenderdefender": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_004_durrburgerpjs": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_072_mothhead": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_mittens": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_281_athena_commando_f_snowboard": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_073_porthole": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason07meat": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_054_petcarrier_hamster_styleb": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_huskwow": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_074_cuddlehula": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:bid_162_yetimale": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason07trash": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_036_fiberoptics": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_006_ice": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason07sun": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_getfunky": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_076_medics": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_056_petcarrier_wolf_styleb": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_penguin": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_081_bananas": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_278_athena_commando_m_yeti": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_076_yeti": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_005_carbonfiber": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:toy_009_burgerelite": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason07shackle": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_074_darkbomber": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_100_yeti": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_077_baited": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_055_petcarrier_hamster_stylec": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason07octopus": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_034_swirlysmoke": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_durrrburger": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_245_athena_commando_f_durrburgerpjs": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_078_pixelramirez": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_078_skulltrooper": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaMusicPack:musicpack_006_twist": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_057_petcarrier_wolf_stylec": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_fkey": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_hiphops7": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_073_dustydepot": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_079_catgirl": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_288_athena_commando_m_iceking": 1,
|
||||||
|
"ChallengeBundleSchedule:season7_iceking_schedule": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"freeRewards": [
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_067_ggsnowman": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_079_plane": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_033_snowflakes": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_iceheart": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason07plane": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_golfclap": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:bid_161_snowboardfemale": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_070_hohoho": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_105_snowboard": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaPickaxe:pickaxe_id_126_yeti": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brseason07infinityblade": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_micdrop": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_082_neoncat": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaMusicPack:musicpack_005_disco": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_hotchocolate": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_075_meltingsnowman": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
}
|
||||||
453
assets/lawin/responses/BattlePass/Season8.json
Normal file
@@ -0,0 +1,453 @@
|
|||||||
|
{
|
||||||
|
"battleBundleOfferId": "18D9DA48000A40BFAEBAC55A99C55221",
|
||||||
|
"battlePassOfferId": "77F31B7F83FB422195DA60CDE683671D",
|
||||||
|
"tierOfferId": "E07E41D52D4A425F8DC6592496B75301",
|
||||||
|
"paidRewards": [
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 50,
|
||||||
|
"Token:athenaseasonfriendxpboost": 60,
|
||||||
|
"AthenaCharacter:cid_347_athena_commando_m_pirateprogressive": 1,
|
||||||
|
"AthenaCharacter:cid_346_athena_commando_m_dragonninja": 1,
|
||||||
|
"ChallengeBundleSchedule:season8_paid_schedule": 1,
|
||||||
|
"ChallengeBundleSchedule:season8_cumulative_schedule": 1,
|
||||||
|
"Token:athenaseasonmergedxpboosts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10,
|
||||||
|
"Token:athenanextseasonxpboost": 30
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs8pineapple": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_020_tropicalcamo": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_091_dragonninja": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:bid_218_medusa": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs8jellyfish": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_106_treasuremap": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaMusicPack:musicpack_007_pirate": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_palmtree": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_092_bananapeel": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_124_medusa": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_octopirate": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:petcarrier_007_woodsy": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_103_mermaid": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_046_clover": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_100_stpattyday": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_348_athena_commando_f_medusa": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_4leafclover": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:toy_014_bouncyball": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_021_pirate": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs8ziggurat": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_101_icequeen": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_conga": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_spicy": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_129_petcarrier_woodsy_styleb": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_099_key": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_048_spectral": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs8coconuts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_123_masterkey": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_102_triceraops": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_023_aztec": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_094_wootdog": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_skullbrite": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_349_athena_commando_m_banana": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_095_loveranger": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs8foxhead": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:petcarrier_008_fox": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_aztecmask": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_096_fallenloveranger": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaPickaxe:pickaxe_id_165_masterkey": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs8roach": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_044_lava": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_017_dragonninja": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs8whaletail": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_banana": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_103_spraycollage": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_131_petcarrier_fox_styleb": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_101_britebomber": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_200m": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_351_athena_commando_f_fireelf": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs8tigerstripes": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_097_powerchord": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_097_fireelf": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_019_tiger": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_cuddle": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_128_bootybuoy": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_100_salty": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_130_petcarrier_woodsy_stylec": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_104_masterkey": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_047_ammobelt": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs8crystalllama": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_350_athena_commando_m_masterkey": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_angryvolcano": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_098_shiny": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaMusicPack:musicpack_009_starpower": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_132_petcarrier_fox_stylec": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_105_blackwidow": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_hulahoop": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_022_gemstone": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_128_masterkey_styleb": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_352_athena_commando_f_shiny": 1,
|
||||||
|
"ChallengeBundleSchedule:season8_shiny_schedule": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"freeRewards": [
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_102_ggaztec": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_099_piratetheme": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_045_undertow": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_sun": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_happywave": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs8jollyroger": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:bid_215_masterkey": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_090_dancefloorbox": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_129_fireelf": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaPickaxe:pickaxe_id_167_medusa": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs8treasurechest": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_youboreme": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_098_dragonninja": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaMusicPack:musicpack_008_coral": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_ggjellyfish": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_093_theend": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
}
|
||||||
458
assets/lawin/responses/BattlePass/Season9.json
Normal file
@@ -0,0 +1,458 @@
|
|||||||
|
{
|
||||||
|
"battleBundleOfferId": "C7190ACA4E5E228A94CA3CB9C3FC7AE9",
|
||||||
|
"battlePassOfferId": "73E6EE6F4526EF97450D1592C3DB0EF5",
|
||||||
|
"tierOfferId": "33E185A84ED7B64F2856E69AADFD092C",
|
||||||
|
"paidRewards": [
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 50,
|
||||||
|
"Token:athenaseasonfriendxpboost": 60,
|
||||||
|
"AthenaCharacter:cid_408_athena_commando_f_strawberrypilot": 1,
|
||||||
|
"AthenaCharacter:cid_403_athena_commando_m_rooster": 1,
|
||||||
|
"ChallengeBundleSchedule:season9_paid_schedule": 1,
|
||||||
|
"ChallengeBundleSchedule:season9_cumulative_schedule": 1,
|
||||||
|
"ChallengeBundleSchedule:season9_fortbyte_schedule": 1,
|
||||||
|
"Token:athenaseasonmergedxpboosts": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10,
|
||||||
|
"Token:athenanextseasonxpboost": 30
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_tomatohead": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_060_rooster": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_109_strawberrypilot": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaPickaxe:pickaxe_id_211_bunkerman_1h": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs9chair": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_126_floorislava": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaMusicPack:musicpack_015_goodvibes": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_rexhead": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_118_chevronleft": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_144_strawberrypilot": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_drifthead": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_057_banana": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_115_pixeljonesy": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs9bone": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_130_strawberrypilot": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_409_athena_commando_m_bunkerman": 1,
|
||||||
|
"ChallengeBundleSchedule:season9_bunkerman_schedule": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_silentmaven": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_054_kpopglow": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaBackpack:petcarrier_010_robokitty": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs9x": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_121_vikings": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_chickenmoves": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_loveranger": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:toy_017_flyingdisc": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_119_chevronright": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_127_unicornpickaxe": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs9bacon": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_146_masako": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_108_fate": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_062_neotag": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_screamingwukong": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_199_petcarrier_robokitty_styleb": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_404_athena_commando_f_bountyhunter": 1,
|
||||||
|
"ChallengeBundleSchedule:season9_bountyhunter_schedule": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_055_bananas": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs9roar": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs9violin": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_durrburgerhead": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_117_nosymbol": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaPickaxe:pickaxe_id_205_strawberrypilot": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_113_nananana": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_061_purplesplatter": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_201_petcarrier_robokitty_styled": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs9cone": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_signspinner": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_125_lavalegends": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_111_ark": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:toy_018_fancyflyingdisc": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AccountResource:athenaseasonalxp": 1000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs9target": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_406_athena_commando_m_stormtracker": 1,
|
||||||
|
"ChallengeBundleSchedule:season9_stormtracker_schedule": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_skepticalfishstix": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_200_petcarrier_robokitty_stylec": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_129_stormtracker": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_056_stormtracker": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs9blast": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_143_battlesuit": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_123_inferno": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_whiteflag": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_058_storm": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_116_robot": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs9spade": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_405_athena_commando_f_masako": 1,
|
||||||
|
"ChallengeBundleSchedule:season9_masako_schedule": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonfriendxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_057_battlesuit": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_110_rooster": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaMusicPack:musicpack_014_s9cine": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_supdood": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_128_auroraglow": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_gabbyhiphop_01": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Token:athenaseasonxpboost": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_059_battlesuit": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"CosmeticVariantToken:vtid_202_rooster_styleb": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"AthenaCharacter:cid_407_athena_commando_m_battlesuit": 1,
|
||||||
|
"ChallengeBundleSchedule:season9_battlesuit_schedule": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"freeRewards": [
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_112_rockpeople": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_122_aztec": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaSkyDiveContrail:trails_id_051_neontubes": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_cuddleteamhead": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_yayexcited": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs9plane": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaGlider:glider_id_032_tacticalwoodland": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_121_sunbird": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaItemWrap:wrap_046_demon": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"Currency:mtxgiveaway": 100
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaPickaxe:pickaxe_id_210_bunkerman": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"HomebaseBannerIcon:brs9paintbrush": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:eid_sadtrombone": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaLoadingScreen:lsid_124_airroyale": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaMusicPack:musicpack_013_robotrack": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:emoji_skulltrooper": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
"AthenaDance:spid_114_bush": 1
|
||||||
|
},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{},
|
||||||
|
{}
|
||||||
|
]
|
||||||
|
}
|
||||||
90
assets/lawin/responses/CloudDir/Full.ini
Normal file
@@ -0,0 +1,90 @@
|
|||||||
|
[LawinServer.manifest,FortniteCreative]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,FortniteCampaign]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,Lang.pl]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,Lang.es-419Optional]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,StartupOptional]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,FortniteCampaignTutorial]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,Lang.allOptional]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,Lang.itOptional]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,Lang.es-419]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,KairosCapture]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,FortniteBR]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,FortniteCreativeOptional]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,Lang.zh-CN]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,Lang.ruOptional]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,Lang.frOptional]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,Lang.deOptional]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,Lang.de]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,FortniteBROptional]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,FortniteCampaignOptional]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,FortniteCampaignTutorialOptional]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,Lang.ru]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,Lang.plOptional]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,Lang.fr]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,Lang.es-ESOptional]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,KairosCaptureOptional]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,Lang.all]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,Lang.zh-CNOptional]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,Lang.it]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,Lang.es-ES]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
|
[LawinServer.manifest,Startup]
|
||||||
|
DeltaDownloadSize="0"
|
||||||
|
DownloadSize="0"
|
||||||
BIN
assets/lawin/responses/CloudDir/LawinServer.chunk
Normal file
BIN
assets/lawin/responses/CloudDir/LawinServer.manifest
Normal file
459
assets/lawin/responses/ItemIDS.json
Normal file
@@ -0,0 +1,459 @@
|
|||||||
|
[
|
||||||
|
"Schematic:SID_Wall_Wood_Spikes_vR_T01",
|
||||||
|
"Hero:HID_Commando_Sony_R_T01",
|
||||||
|
"Schematic:SID_Wall_Wood_Spikes_UC_T01",
|
||||||
|
"Hero:HID_Commando_ShockDamage_VR_T01",
|
||||||
|
"Schematic:SID_Wall_Wood_Spikes_SR_T01",
|
||||||
|
"Hero:HID_Commando_ShockDamage_SR_T01",
|
||||||
|
"Schematic:SID_Wall_Wood_Spikes_R_T01",
|
||||||
|
"Hero:HID_Commando_ShockDamage_R_T01",
|
||||||
|
"Schematic:SID_Wall_Wood_Spikes_C_T01",
|
||||||
|
"Hero:HID_Commando_GunTough_VR_T01",
|
||||||
|
"Schematic:SID_Wall_Light_VR_T01",
|
||||||
|
"Hero:HID_Commando_GunTough_UC_T01",
|
||||||
|
"Schematic:SID_Wall_Light_SR_T01",
|
||||||
|
"Hero:HID_Commando_GunTough_SR_T01",
|
||||||
|
"Schematic:SID_Wall_Light_R_T01",
|
||||||
|
"Hero:HID_Commando_GunTough_R_T01",
|
||||||
|
"Schematic:SID_Wall_Launcher_VR_T01",
|
||||||
|
"Hero:HID_Commando_GunHeadshotHW_SR_T01",
|
||||||
|
"Schematic:SID_Wall_Launcher_UC_T01",
|
||||||
|
"Hero:HID_Commando_GunHeadshot_VR_T01",
|
||||||
|
"Schematic:SID_Wall_Launcher_SR_T01",
|
||||||
|
"Hero:HID_Commando_GunHeadshot_SR_T01",
|
||||||
|
"Schematic:SID_Wall_Launcher_R_T01",
|
||||||
|
"Hero:HID_Commando_GrenadeMaster_SR_T01",
|
||||||
|
"Schematic:SID_Wall_Electric_VR_T01",
|
||||||
|
"Hero:HID_Commando_GrenadeGun_VR_T01",
|
||||||
|
"Schematic:SID_Wall_Electric_UC_T01",
|
||||||
|
"Hero:HID_Commando_GrenadeGun_SR_T01",
|
||||||
|
"Schematic:SID_Wall_Electric_SR_T01",
|
||||||
|
"Hero:HID_Commando_GrenadeGun_R_T01",
|
||||||
|
"Schematic:SID_Wall_Electric_R_T01",
|
||||||
|
"Hero:HID_Commando_GCGrenade_VR_T01",
|
||||||
|
"Schematic:SID_Wall_Darts_VR_T01",
|
||||||
|
"Hero:HID_Commando_GCGrenade_SR_T01",
|
||||||
|
"Schematic:SID_Wall_Darts_UC_T01",
|
||||||
|
"Hero:HID_Commando_GCGrenade_R_T01",
|
||||||
|
"Schematic:SID_Wall_Darts_SR_T01",
|
||||||
|
"Hero:HID_Commando_010_VR_T01",
|
||||||
|
"Schematic:SID_Wall_Darts_R_T01",
|
||||||
|
"Hero:HID_Commando_010_SR_T01",
|
||||||
|
"Schematic:SID_Floor_Ward_VR_T01",
|
||||||
|
"Hero:HID_Commando_009_VR_T01",
|
||||||
|
"Schematic:SID_Floor_Ward_UC_T01",
|
||||||
|
"Hero:HID_Commando_009_SR_T01",
|
||||||
|
"Schematic:SID_Floor_Ward_SR_T01",
|
||||||
|
"Hero:HID_Commando_009_R_T01",
|
||||||
|
"Schematic:SID_Floor_Ward_R_T01",
|
||||||
|
"Hero:HID_Commando_008_VR_T01",
|
||||||
|
"Schematic:SID_Floor_Spikes_Wood_VR_T01",
|
||||||
|
"Hero:HID_Commando_008_SR_T01",
|
||||||
|
"Schematic:SID_Floor_Spikes_Wood_UC_T01",
|
||||||
|
"Hero:HID_Commando_008_R_T01",
|
||||||
|
"Schematic:SID_Floor_Spikes_Wood_SR_T01",
|
||||||
|
"Hero:HID_Commando_008_FoundersM_SR_T01",
|
||||||
|
"Schematic:SID_Floor_Spikes_Wood_R_T01",
|
||||||
|
"Hero:HID_Commando_008_FoundersF_SR_T01",
|
||||||
|
"Schematic:SID_Floor_Spikes_Wood_C_T01",
|
||||||
|
"Hero:HID_Commando_007_VR_T01",
|
||||||
|
"Schematic:SID_Floor_Spikes_VR_T01",
|
||||||
|
"Hero:HID_Commando_007_UC_T01",
|
||||||
|
"Schematic:SID_Floor_Spikes_UC_T01",
|
||||||
|
"Hero:HID_Commando_007_SR_T01",
|
||||||
|
"Schematic:SID_Floor_Spikes_SR_T01",
|
||||||
|
"Hero:HID_Commando_007_R_T01",
|
||||||
|
"Schematic:SID_Floor_Spikes_R_T01",
|
||||||
|
"Hero:HID_Commando_GrenadeGun_UC_T01",
|
||||||
|
"Schematic:SID_Floor_Launcher_VR_T01",
|
||||||
|
"Hero:HID_Constructor_Sony_R_T01",
|
||||||
|
"Schematic:SID_Floor_Launcher_UC_T01",
|
||||||
|
"Hero:HID_Constructor_RushBASE_VR_T01",
|
||||||
|
"Schematic:SID_Floor_Launcher_SR_T01",
|
||||||
|
"Hero:HID_Constructor_RushBASE_UC_T01",
|
||||||
|
"Schematic:SID_Floor_Launcher_R_T01",
|
||||||
|
"Hero:HID_Constructor_RushBASE_SR_T01",
|
||||||
|
"Schematic:SID_Floor_Health_VR_T01",
|
||||||
|
"Hero:HID_Constructor_RushBASE_R_T01",
|
||||||
|
"Schematic:SID_Floor_Health_UC_T01",
|
||||||
|
"Hero:HID_Constructor_PlasmaDamage_VR_T01",
|
||||||
|
"Schematic:SID_Floor_Health_SR_T01",
|
||||||
|
"Hero:HID_Constructor_PlasmaDamage_SR_T01",
|
||||||
|
"Schematic:SID_Floor_Health_R_T01",
|
||||||
|
"Hero:HID_Constructor_PlasmaDamage_R_T01",
|
||||||
|
"Schematic:SID_Ceiling_Gas_VR_T01",
|
||||||
|
"Hero:HID_Constructor_HammerTank_VR_T01",
|
||||||
|
"Schematic:SID_Ceiling_Gas_UC_T01",
|
||||||
|
"Hero:HID_Constructor_HammerTank_UC_T01",
|
||||||
|
"Schematic:SID_Ceiling_Gas_SR_T01",
|
||||||
|
"Hero:HID_Constructor_HammerTank_SR_T01",
|
||||||
|
"Schematic:SID_Ceiling_Gas_R_T01",
|
||||||
|
"Hero:HID_Constructor_HammerTank_R_T01",
|
||||||
|
"Schematic:SID_Ceiling_Electric_Single_VR_T01",
|
||||||
|
"Hero:HID_Constructor_HammerPlasma_VR_T01",
|
||||||
|
"Schematic:SID_Ceiling_Electric_Single_UC_T01",
|
||||||
|
"Hero:HID_Constructor_HammerPlasma_SR_T01",
|
||||||
|
"Schematic:SID_Ceiling_Electric_Single_SR_T01",
|
||||||
|
"Hero:HID_Constructor_BaseHyperHW_SR_T01",
|
||||||
|
"Schematic:SID_Ceiling_Electric_Single_R_T01",
|
||||||
|
"Hero:HID_Constructor_BaseHyper_VR_T01",
|
||||||
|
"Schematic:SID_Ceiling_Electric_Single_C_T01",
|
||||||
|
"Hero:HID_Constructor_BaseHyper_SR_T01",
|
||||||
|
"Schematic:SID_Ceiling_Electric_AOE_VR_T01",
|
||||||
|
"Hero:HID_Constructor_BaseHyper_R_T01",
|
||||||
|
"Schematic:SID_Ceiling_Electric_AOE_SR_T01",
|
||||||
|
"Hero:HID_Constructor_BASEBig_SR_T01",
|
||||||
|
"Schematic:SID_Ceiling_Electric_AOE_R_T01",
|
||||||
|
"Hero:HID_Constructor_010_VR_T01",
|
||||||
|
"Schematic:SID_Sniper_TripleShot_VR_Ore_T01",
|
||||||
|
"Hero:HID_Constructor_010_SR_T01",
|
||||||
|
"Schematic:SID_Sniper_TripleShot_SR_Ore_T01",
|
||||||
|
"Hero:HID_Constructor_009_VR_T01",
|
||||||
|
"Schematic:SID_Sniper_Standard_Scope_VR_Ore_T01",
|
||||||
|
"Hero:HID_Constructor_009_SR_T01",
|
||||||
|
"Schematic:SID_Sniper_Standard_Scope_SR_Ore_T01",
|
||||||
|
"Hero:HID_Constructor_009_R_T01",
|
||||||
|
"Schematic:SID_Sniper_Standard_VR_Ore_T01",
|
||||||
|
"Hero:HID_Constructor_008_VR_T01",
|
||||||
|
"Schematic:SID_Sniper_Standard_SR_Ore_T01",
|
||||||
|
"Hero:HID_Constructor_008_SR_T01",
|
||||||
|
"Schematic:SID_Sniper_Standard_Founders_VR_Ore_T01",
|
||||||
|
"Hero:HID_Constructor_008_R_T01",
|
||||||
|
"Schematic:SID_Sniper_Standard_UC_Ore_T01",
|
||||||
|
"Hero:HID_Constructor_008_FoundersM_SR_T01",
|
||||||
|
"Schematic:SID_Sniper_Standard_R_Ore_T01",
|
||||||
|
"Hero:HID_Constructor_008_FoundersF_SR_T01",
|
||||||
|
"Schematic:SID_Sniper_Standard_C_Ore_T01",
|
||||||
|
"Hero:HID_Constructor_007_VR_T01",
|
||||||
|
"Schematic:SID_Sniper_Shredder_VR_Ore_T01",
|
||||||
|
"Hero:HID_Constructor_007_UC_T01",
|
||||||
|
"Schematic:SID_Sniper_Shredder_SR_Ore_T01",
|
||||||
|
"Hero:HID_Constructor_007_SR_T01",
|
||||||
|
"Schematic:SID_Sniper_Hydraulic_VR_Ore_T01",
|
||||||
|
"Hero:HID_Constructor_007_R_T01",
|
||||||
|
"Schematic:SID_Sniper_Hydraulic_SR_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_Swordmaster_SR_T01",
|
||||||
|
"Schematic:SID_Sniper_BoltAction_Scope_VR_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_StarsRainHW_SR_T01",
|
||||||
|
"Schematic:SID_Sniper_BoltAction_Scope_SR_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_StarsRain_VR_T01",
|
||||||
|
"Schematic:SID_Sniper_BoltAction_Scope_R_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_StarsRain_SR_T01",
|
||||||
|
"Schematic:SID_Sniper_BoltAction_UC_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_StarsAssassin_VR_T01",
|
||||||
|
"Schematic:SID_Sniper_BoltAction_R_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_StarsAssassin_UC_T01",
|
||||||
|
"Schematic:SID_Sniper_BoltAction_C_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_StarsAssassin_SR_T01",
|
||||||
|
"Schematic:SID_Sniper_Auto_VR_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_StarsAssassin_R_T01",
|
||||||
|
"Schematic:SID_Sniper_Auto_SR_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_StarsAssassin_FoundersM_SR_T01",
|
||||||
|
"Schematic:SID_Sniper_Auto_Founders_VR_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_StarsAssassin_FoundersF_SR_T01",
|
||||||
|
"Schematic:SID_Sniper_Auto_UC_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_Sony_R_T01",
|
||||||
|
"Schematic:SID_Sniper_Auto_R_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_SmokeDimMak_VR_T01",
|
||||||
|
"Schematic:SID_Sniper_AMR_VR_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_SmokeDimMak_SR_T01",
|
||||||
|
"Schematic:SID_Sniper_AMR_SR_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_SmokeDimMak_R_T01",
|
||||||
|
"Schematic:SID_Sniper_AMR_R_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_SlashTail_VR_T01",
|
||||||
|
"Schematic:SID_Shotgun_Tactical_Precision_VR_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_SlashTail_UC_T01",
|
||||||
|
"Schematic:SID_Shotgun_Tactical_Precision_SR_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_SlashTail_SR_T01",
|
||||||
|
"Schematic:SID_Shotgun_Tactical_Precision_R_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_SlashTail_R_T01",
|
||||||
|
"Schematic:SID_Shotgun_Tactical_UC_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_SlashBreath_VR_T01",
|
||||||
|
"Schematic:SID_Shotgun_Tactical_R_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_SlashBreath_SR_T01",
|
||||||
|
"Schematic:SID_Shotgun_Tactical_Founders_VR_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_SlashBreath_R_T01",
|
||||||
|
"Schematic:SID_Shotgun_Tactical_Founders_SR_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_010_VR_T01",
|
||||||
|
"Schematic:SID_Shotgun_Tactical_Founders_R_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_010_SR_T01",
|
||||||
|
"Schematic:SID_Shotgun_Tactical_C_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_009_VR_T01",
|
||||||
|
"Schematic:SID_Shotgun_Standard_VR_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_009_SR_T01",
|
||||||
|
"Schematic:SID_Shotgun_Standard_SR_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_009_R_T01",
|
||||||
|
"Schematic:SID_Shotgun_Standard_UC_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_008_VR_T01",
|
||||||
|
"Schematic:SID_Shotgun_Standard_R_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_008_SR_T01",
|
||||||
|
"Schematic:SID_Shotgun_Standard_C_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_008_R_T01",
|
||||||
|
"Schematic:SID_Shotgun_SemiAuto_VR_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_007_VR_T01",
|
||||||
|
"Schematic:SID_Shotgun_SemiAuto_UC_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_007_UC_T01",
|
||||||
|
"Schematic:SID_Shotgun_SemiAuto_SR_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_007_SR_T01",
|
||||||
|
"Schematic:SID_Shotgun_SemiAuto_R_Ore_T01",
|
||||||
|
"Hero:HID_Ninja_007_R_T01",
|
||||||
|
"Schematic:SID_Shotgun_Minigun_SR_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_ZonePistolHW_SR_T01",
|
||||||
|
"Schematic:SID_Shotgun_Longarm_VR_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_ZonePistol_VR_T01",
|
||||||
|
"Schematic:SID_Shotgun_Longarm_SR_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_ZonePistol_SR_T01",
|
||||||
|
"Schematic:SID_Shotgun_Heavy_SR_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_ZonePistol_R_T01",
|
||||||
|
"Schematic:SID_Shotgun_Break_OU_VR_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_ZoneHarvest_VR_T01",
|
||||||
|
"Schematic:SID_Shotgun_Break_OU_SR_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_ZoneHarvest_UC_T01",
|
||||||
|
"Schematic:SID_Shotgun_Break_OU_UC_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_ZoneHarvest_SR_T01",
|
||||||
|
"Schematic:SID_Shotgun_Break_OU_R_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_ZoneHarvest_R_T01",
|
||||||
|
"Schematic:SID_Shotgun_Break_VR_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_ZoneFragment_SR_T01",
|
||||||
|
"Schematic:SID_Shotgun_Break_SR_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_SphereFragment_VR_T01",
|
||||||
|
"Schematic:SID_Shotgun_Break_UC_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_SphereFragment_SR_T01",
|
||||||
|
"Schematic:SID_Shotgun_Break_R_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_SphereFragment_R_T01",
|
||||||
|
"Schematic:SID_Shotgun_Break_C_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_Sony_R_T01",
|
||||||
|
"Schematic:SID_Shotgun_Auto_VR_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_PunchPhase_VR_T01",
|
||||||
|
"Schematic:SID_Shotgun_Auto_SR_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_PunchPhase_UC_T01",
|
||||||
|
"Schematic:SID_Shotgun_Auto_Founders_VR_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_PunchPhase_SR_T01",
|
||||||
|
"Schematic:SID_Shotgun_Auto_UC_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_PunchPhase_R_T01",
|
||||||
|
"Schematic:SID_Shotgun_Auto_R_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_PunchDamage_VR_T01",
|
||||||
|
"Schematic:SID_Pistol_Zapper_VR_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_PunchDamage_SR_T01",
|
||||||
|
"Schematic:SID_Pistol_Zapper_SR_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_010_VR_T01",
|
||||||
|
"Schematic:SID_Pistol_Space_VR_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_010_SR_T01",
|
||||||
|
"Schematic:SID_Pistol_Space_SR_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_009_VR_T01",
|
||||||
|
"Schematic:SID_Pistol_SixShooter_UC_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_009_SR_T01",
|
||||||
|
"Schematic:SID_Pistol_SixShooter_R_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_009_R_T01",
|
||||||
|
"Schematic:SID_Pistol_SixShooter_C_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_008_VR_T01",
|
||||||
|
"Schematic:SID_Pistol_SemiAuto_VR_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_008_SR_T01",
|
||||||
|
"Schematic:SID_Pistol_SemiAuto_SR_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_008_R_T01",
|
||||||
|
"Schematic:SID_Pistol_SemiAuto_Founders_VR_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_008_FoundersM_SR_T01",
|
||||||
|
"Schematic:SID_Pistol_SemiAuto_UC_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_008_FoundersF_SR_T01",
|
||||||
|
"Schematic:SID_Pistol_SemiAuto_R_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_007_VR_T01",
|
||||||
|
"Schematic:SID_Pistol_SemiAuto_C_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_007_UC_T01",
|
||||||
|
"Schematic:SID_Pistol_Rocket_SR_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_007_SR_T01",
|
||||||
|
"Schematic:SID_Pistol_Rapid_VR_Ore_T01",
|
||||||
|
"Hero:HID_Outlander_007_R_T01",
|
||||||
|
"Schematic:SID_Pistol_Rapid_SR_Ore_T01",
|
||||||
|
"Defender:DID_DefenderSniper_Basic_VR_T01",
|
||||||
|
"Schematic:SID_Pistol_Rapid_R_Ore_T01",
|
||||||
|
"Defender:DID_DefenderSniper_Basic_UC_T01",
|
||||||
|
"Schematic:SID_Pistol_Rapid_Founders_VR_Ore_T01",
|
||||||
|
"Defender:DID_DefenderSniper_Basic_SR_T01",
|
||||||
|
"Schematic:SID_Pistol_Hydraulic_VR_Ore_T01",
|
||||||
|
"Defender:DID_DefenderSniper_Basic_R_T01",
|
||||||
|
"Schematic:SID_Pistol_Hydraulic_SR_Ore_T01",
|
||||||
|
"Defender:DID_DefenderSniper_Basic_C_T01",
|
||||||
|
"Schematic:SID_Pistol_Handcannon_Semi_VR_Ore_T01",
|
||||||
|
"Defender:DID_DefenderShotgun_Basic_VR_T01",
|
||||||
|
"Schematic:SID_Pistol_Handcannon_Semi_SR_Ore_T01",
|
||||||
|
"Defender:DID_DefenderShotgun_Basic_UC_T01",
|
||||||
|
"Schematic:SID_Pistol_Handcannon_Semi_R_Ore_T01",
|
||||||
|
"Defender:DID_DefenderShotgun_Basic_SR_T01",
|
||||||
|
"Schematic:SID_Pistol_Handcannon_VR_Ore_T01",
|
||||||
|
"Defender:DID_DefenderShotgun_Basic_R_T01",
|
||||||
|
"Schematic:SID_Pistol_Handcannon_SR_Ore_T01",
|
||||||
|
"Defender:DID_DefenderShotgun_Basic_C_T01",
|
||||||
|
"Schematic:SID_Pistol_Handcannon_R_Ore_T01",
|
||||||
|
"Defender:DID_DefenderPistol_Founders_VR_T01",
|
||||||
|
"Schematic:SID_Pistol_Handcannon_Founders_VR_Ore_T01",
|
||||||
|
"Defender:DID_DefenderPistol_Basic_VR_T01",
|
||||||
|
"Schematic:SID_Pistol_Gatling_VR_Ore_T01",
|
||||||
|
"Defender:DID_DefenderPistol_Basic_UC_T01",
|
||||||
|
"Schematic:SID_Pistol_Gatling_SR_Ore_T01",
|
||||||
|
"Defender:DID_DefenderPistol_Basic_SR_T01",
|
||||||
|
"Schematic:SID_Pistol_FireCracker_VR_Ore_T01",
|
||||||
|
"Defender:DID_DefenderPistol_Basic_R_T01",
|
||||||
|
"Schematic:SID_Pistol_FireCracker_SR_Ore_T01",
|
||||||
|
"Defender:DID_DefenderPistol_Basic_C_T01",
|
||||||
|
"Schematic:SID_Pistol_FireCracker_R_Ore_T01",
|
||||||
|
"Defender:DID_DefenderMelee_Basic_VR_T01",
|
||||||
|
"Schematic:SID_Pistol_Dragon_VR_Ore_T01",
|
||||||
|
"Defender:DID_DefenderMelee_Basic_UC_T01",
|
||||||
|
"Schematic:SID_Pistol_Dragon_SR_Ore_T01",
|
||||||
|
"Defender:DID_DefenderMelee_Basic_SR_T01",
|
||||||
|
"Schematic:SID_Pistol_BoltRevolver_UC_Ore_T01",
|
||||||
|
"Defender:DID_DefenderMelee_Basic_R_T01",
|
||||||
|
"Schematic:SID_Pistol_BoltRevolver_R_Ore_T01",
|
||||||
|
"Defender:DID_DefenderMelee_Basic_C_T01",
|
||||||
|
"Schematic:SID_Pistol_BoltRevolver_C_Ore_T01",
|
||||||
|
"Defender:DID_DefenderAssault_Founders_VR_T01",
|
||||||
|
"Schematic:SID_Pistol_Bolt_VR_Ore_T01",
|
||||||
|
"Defender:DID_DefenderAssault_Basic_VR_T01",
|
||||||
|
"Schematic:SID_Pistol_Bolt_SR_Ore_T01",
|
||||||
|
"Defender:DID_DefenderAssault_Basic_UC_T01",
|
||||||
|
"Schematic:SID_Pistol_AutoHeavy_VR_Ore_T01",
|
||||||
|
"Defender:DID_DefenderAssault_Basic_SR_T01",
|
||||||
|
"Schematic:SID_Pistol_AutoHeavy_SR_Ore_T01",
|
||||||
|
"Defender:DID_DefenderAssault_Basic_R_T01",
|
||||||
|
"Schematic:SID_Pistol_AutoHeavy_Founders_VR_Ore_T01",
|
||||||
|
"Defender:DID_DefenderAssault_Basic_C_T01",
|
||||||
|
"Schematic:SID_Pistol_AutoHeavy_Founders_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Pistol_AutoHeavy_R_Ore_T01",
|
||||||
|
"Schematic:SID_Pistol_AutoHeavy_Founders_R_Ore_T01",
|
||||||
|
"Schematic:SID_Pistol_Auto_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Pistol_Auto_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Pistol_Auto_UC_Ore_T01",
|
||||||
|
"Schematic:SID_Pistol_Auto_R_Ore_T01",
|
||||||
|
"Schematic:SID_Pistol_Auto_C_Ore_T01",
|
||||||
|
"Schematic:SID_Launcher_Rocket_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Launcher_Rocket_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Launcher_Rocket_R_Ore_T01",
|
||||||
|
"Schematic:SID_Launcher_Pumpkin_RPG_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Launcher_Hydraulic_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Launcher_Hydraulic_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Launcher_Grenade_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Launcher_Grenade_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Launcher_Grenade_R_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_Surgical_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_Surgical_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_SingleShot_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_SingleShot_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_SingleShot_R_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_SemiAuto_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_SemiAuto_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_SemiAuto_Founders_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_SemiAuto_UC_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_SemiAuto_R_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_SemiAuto_C_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_Raygun_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_Raygun_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_Surgical_Drum_Founders_R_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_LMG_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_LMG_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_LMG_R_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_LMG_Drum_Founders_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_LMG_Drum_Founders_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_Hydra_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_Doubleshot_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_Doubleshot_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_Burst_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_Burst_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_Burst_UC_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_Burst_R_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_Burst_C_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_Auto_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_Auto_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_Auto_Halloween_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_Auto_Founders_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_Auto_UC_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_Auto_R_Ore_T01",
|
||||||
|
"Schematic:SID_Assault_Auto_C_Ore_T01",
|
||||||
|
"Schematic:SID_Piercing_Spear_Military_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Piercing_Spear_Military_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Piercing_Spear_Military_R_Ore_T01",
|
||||||
|
"Schematic:SID_Piercing_Spear_C_Ore_T01",
|
||||||
|
"Schematic:SID_Piercing_Spear_Laser_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Piercing_Spear_Laser_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Piercing_Spear_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Piercing_Spear_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Piercing_Spear_UC_Ore_T01",
|
||||||
|
"Schematic:SID_Piercing_Spear_R_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Medium_C_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Medium_Laser_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Medium_Laser_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Medium_Laser_Founders_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Medium_Laser_Founders_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Medium_Laser_Founders_R_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Medium_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Medium_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Medium_UC_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Medium_R_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Light_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Light_UC_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Light_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Light_R_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Light_Founders_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Light_C_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Hydraulic_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Hydraulic_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Heavy_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Heavy_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Heavy_R_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Heavy_Founders_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Heavy_UC_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Sword_Heavy_C_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Scythe_C_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Scythe_Laser_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Scythe_Laser_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Scythe_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Scythe_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Scythe_UC_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Scythe_R_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Axe_Medium_C_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Axe_Medium_Laser_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Axe_Medium_Laser_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Axe_Medium_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Axe_Medium_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Axe_Medium_Founders_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Axe_Medium_UC_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Axe_Medium_R_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Axe_Light_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Axe_Light_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Axe_Light_UC_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Axe_Light_R_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Axe_Light_C_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Axe_Heavy_C_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Axe_Heavy_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Axe_Heavy_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Axe_Heavy_UC_Ore_T01",
|
||||||
|
"Schematic:SID_Edged_Axe_Heavy_R_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Medium_C_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Medium_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Medium_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Medium_UC_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Medium_R_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Light_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Light_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Tool_Light_UC_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Tool_Light_R_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Hammer_Rocket_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Hammer_Rocket_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Hammer_Heavy_C_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Hammer_Heavy_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Hammer_Heavy_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Hammer_Heavy_Founders_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Hammer_Heavy_UC_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Hammer_Heavy_R_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Light_Rocketbat_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Light_Rocketbat_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Light_C_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Light_Bat_UC_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Light_Bat_R_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Club_Light_VR_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Club_Light_SR_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Light_UC_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Light_R_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Heavy_Paddle_UC_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Heavy_Paddle_R_Ore_T01",
|
||||||
|
"Schematic:SID_Blunt_Heavy_Paddle_C_Ore_T01"
|
||||||
|
]
|
||||||
7
assets/lawin/responses/SAC.json
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
[
|
||||||
|
"lawin",
|
||||||
|
"ti93",
|
||||||
|
"pro100katyt",
|
||||||
|
"playeereq",
|
||||||
|
"matteoki"
|
||||||
|
]
|
||||||
56
assets/lawin/responses/SeasonData.json
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
{
|
||||||
|
"Season2": {
|
||||||
|
"battlePassPurchased": false,
|
||||||
|
"battlePassTier": 1,
|
||||||
|
"battlePassXPBoost": 0,
|
||||||
|
"battlePassXPFriendBoost": 0
|
||||||
|
},
|
||||||
|
"Season3": {
|
||||||
|
"battlePassPurchased": false,
|
||||||
|
"battlePassTier": 1,
|
||||||
|
"battlePassXPBoost": 0,
|
||||||
|
"battlePassXPFriendBoost": 0
|
||||||
|
},
|
||||||
|
"Season4": {
|
||||||
|
"battlePassPurchased": false,
|
||||||
|
"battlePassTier": 1,
|
||||||
|
"battlePassXPBoost": 0,
|
||||||
|
"battlePassXPFriendBoost": 0
|
||||||
|
},
|
||||||
|
"Season5": {
|
||||||
|
"battlePassPurchased": false,
|
||||||
|
"battlePassTier": 1,
|
||||||
|
"battlePassXPBoost": 0,
|
||||||
|
"battlePassXPFriendBoost": 0
|
||||||
|
},
|
||||||
|
"Season6": {
|
||||||
|
"battlePassPurchased": false,
|
||||||
|
"battlePassTier": 1,
|
||||||
|
"battlePassXPBoost": 0,
|
||||||
|
"battlePassXPFriendBoost": 0
|
||||||
|
},
|
||||||
|
"Season7": {
|
||||||
|
"battlePassPurchased": false,
|
||||||
|
"battlePassTier": 1,
|
||||||
|
"battlePassXPBoost": 0,
|
||||||
|
"battlePassXPFriendBoost": 0
|
||||||
|
},
|
||||||
|
"Season8": {
|
||||||
|
"battlePassPurchased": false,
|
||||||
|
"battlePassTier": 1,
|
||||||
|
"battlePassXPBoost": 0,
|
||||||
|
"battlePassXPFriendBoost": 0
|
||||||
|
},
|
||||||
|
"Season9": {
|
||||||
|
"battlePassPurchased": false,
|
||||||
|
"battlePassTier": 1,
|
||||||
|
"battlePassXPBoost": 0,
|
||||||
|
"battlePassXPFriendBoost": 0
|
||||||
|
},
|
||||||
|
"Season10": {
|
||||||
|
"battlePassPurchased": false,
|
||||||
|
"battlePassTier": 1,
|
||||||
|
"battlePassXPBoost": 0,
|
||||||
|
"battlePassXPFriendBoost": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
3403
assets/lawin/responses/catalog.json
Normal file
6353
assets/lawin/responses/contentpages.json
Normal file
1351
assets/lawin/responses/dailyrewards.json
Normal file
123
assets/lawin/responses/discovery/discovery_api_assets.json
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
{
|
||||||
|
"FortCreativeDiscoverySurface": {
|
||||||
|
"meta": {
|
||||||
|
"promotion": 1
|
||||||
|
},
|
||||||
|
"assets": {
|
||||||
|
"CreativeDiscoverySurface_Frontend": {
|
||||||
|
"meta": {
|
||||||
|
"revision": 1,
|
||||||
|
"headRevision": 1,
|
||||||
|
"revisedAt": "2022-04-11T16:34:03.517Z",
|
||||||
|
"promotion": 1,
|
||||||
|
"promotedAt": "2022-04-11T16:34:49.510Z"
|
||||||
|
},
|
||||||
|
"assetData": {
|
||||||
|
"AnalyticsId": "t412",
|
||||||
|
"TestCohorts": [
|
||||||
|
{
|
||||||
|
"AnalyticsId": "c522715413",
|
||||||
|
"CohortSelector": "PlayerDeterministic",
|
||||||
|
"PlatformBlacklist": [],
|
||||||
|
"ContentPanels": [
|
||||||
|
{
|
||||||
|
"NumPages": 1,
|
||||||
|
"AnalyticsId": "p536",
|
||||||
|
"PanelType": "AnalyticsList",
|
||||||
|
"AnalyticsListName": "ByEpicWoven",
|
||||||
|
"CuratedListOfLinkCodes": [],
|
||||||
|
"ModelName": "",
|
||||||
|
"PageSize": 7,
|
||||||
|
"PlatformBlacklist": [],
|
||||||
|
"PanelName": "ByEpicWoven",
|
||||||
|
"MetricInterval": "",
|
||||||
|
"SkippedEntriesCount": 0,
|
||||||
|
"SkippedEntriesPercent": 0,
|
||||||
|
"SplicedEntries": [],
|
||||||
|
"PlatformWhitelist": [],
|
||||||
|
"EntrySkippingMethod": "None",
|
||||||
|
"PanelDisplayName": {
|
||||||
|
"Category": "Game",
|
||||||
|
"NativeCulture": "",
|
||||||
|
"Namespace": "CreativeDiscoverySurface_Frontend",
|
||||||
|
"LocalizedStrings": [
|
||||||
|
{
|
||||||
|
"key": "ar",
|
||||||
|
"value": "العب بأسلوبك"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "de",
|
||||||
|
"value": "Spiele auf deine Weise"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "en",
|
||||||
|
"value": "Play Your Way"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "es",
|
||||||
|
"value": "Juega como quieras"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "fr",
|
||||||
|
"value": "Jouez à votre façon"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "it",
|
||||||
|
"value": "Gioca a modo tuo"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "ja",
|
||||||
|
"value": "好きにプレイしよう"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "ko",
|
||||||
|
"value": "나만의 플레이"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "pl",
|
||||||
|
"value": "Graj po swojemu"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "ru",
|
||||||
|
"value": "Играйте как нравится"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "tr",
|
||||||
|
"value": "İstediğin Gibi Oyna"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "pt-BR",
|
||||||
|
"value": "Jogue do Seu Jeito"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "es-419",
|
||||||
|
"value": "Juega a tu manera"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"bIsMinimalPatch": false,
|
||||||
|
"NativeString": "Play Your Way",
|
||||||
|
"Key": "ByEpicWoven"
|
||||||
|
},
|
||||||
|
"PlayHistoryType": "RecentlyPlayed",
|
||||||
|
"bLowestToHighest": false,
|
||||||
|
"PanelLinkCodeBlacklist": [],
|
||||||
|
"PanelLinkCodeWhitelist": [],
|
||||||
|
"FeatureTags": [],
|
||||||
|
"MetricName": ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"PlatformWhitelist": [],
|
||||||
|
"SelectionChance": 0.1,
|
||||||
|
"TestName": "LawinServer"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"GlobalLinkCodeBlacklist": [],
|
||||||
|
"SurfaceName": "CreativeDiscoverySurface_Frontend",
|
||||||
|
"TestName": "20.10_4/11/2022_hero_combat_popularConsole",
|
||||||
|
"primaryAssetId": "FortCreativeDiscoverySurface:CreativeDiscoverySurface_Frontend",
|
||||||
|
"GlobalLinkCodeWhitelist": []
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
208
assets/lawin/responses/discovery/discovery_frontend.json
Normal file
@@ -0,0 +1,208 @@
|
|||||||
|
{
|
||||||
|
"Panels": [
|
||||||
|
{
|
||||||
|
"PanelName": "ByEpicWoven",
|
||||||
|
"Pages": [
|
||||||
|
{
|
||||||
|
"results": [
|
||||||
|
{
|
||||||
|
"linkData": {
|
||||||
|
"namespace": "fn",
|
||||||
|
"mnemonic": "playlist_defaultsolo",
|
||||||
|
"linkType": "BR:Playlist",
|
||||||
|
"active": true,
|
||||||
|
"disabled": false,
|
||||||
|
"version": 95,
|
||||||
|
"moderationStatus": "Unmoderated",
|
||||||
|
"accountId": "epic",
|
||||||
|
"creatorName": "Epic",
|
||||||
|
"descriptionTags": [],
|
||||||
|
"metadata": {
|
||||||
|
"image_url": "https://cdn2.unrealengine.com/solo-1920x1080-1920x1080-bc0a5455ce20.jpg",
|
||||||
|
"matchmaking": {
|
||||||
|
"override_playlist": "playlist_defaultsolo"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lastVisited": null,
|
||||||
|
"linkCode": "playlist_defaultsolo",
|
||||||
|
"isFavorite": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"linkData": {
|
||||||
|
"namespace": "fn",
|
||||||
|
"mnemonic": "playlist_defaultduo",
|
||||||
|
"linkType": "BR:Playlist",
|
||||||
|
"active": true,
|
||||||
|
"disabled": false,
|
||||||
|
"version": 95,
|
||||||
|
"moderationStatus": "Unmoderated",
|
||||||
|
"accountId": "epic",
|
||||||
|
"creatorName": "Epic",
|
||||||
|
"descriptionTags": [],
|
||||||
|
"metadata": {
|
||||||
|
"image_url": "https://cdn2.unrealengine.com/duos-1920x1080-1920x1080-5a411fe07b21.jpg",
|
||||||
|
"matchmaking": {
|
||||||
|
"override_playlist": "playlist_defaultduo"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lastVisited": null,
|
||||||
|
"linkCode": "playlist_defaultduo",
|
||||||
|
"isFavorite": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"linkData": {
|
||||||
|
"namespace": "fn",
|
||||||
|
"mnemonic": "playlist_trios",
|
||||||
|
"linkType": "BR:Playlist",
|
||||||
|
"active": true,
|
||||||
|
"disabled": false,
|
||||||
|
"version": 95,
|
||||||
|
"moderationStatus": "Unmoderated",
|
||||||
|
"accountId": "epic",
|
||||||
|
"creatorName": "Epic",
|
||||||
|
"descriptionTags": [],
|
||||||
|
"metadata": {
|
||||||
|
"image_url": "https://cdn2.unrealengine.com/trios-1920x1080-1920x1080-d5054bb9691a.jpg",
|
||||||
|
"matchmaking": {
|
||||||
|
"override_playlist": "playlist_trios"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lastVisited": null,
|
||||||
|
"linkCode": "playlist_trios",
|
||||||
|
"isFavorite": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"linkData": {
|
||||||
|
"namespace": "fn",
|
||||||
|
"mnemonic": "playlist_defaultsquad",
|
||||||
|
"linkType": "BR:Playlist",
|
||||||
|
"active": true,
|
||||||
|
"disabled": false,
|
||||||
|
"version": 95,
|
||||||
|
"moderationStatus": "Unmoderated",
|
||||||
|
"accountId": "epic",
|
||||||
|
"creatorName": "Epic",
|
||||||
|
"descriptionTags": [],
|
||||||
|
"metadata": {
|
||||||
|
"image_url": "https://cdn2.unrealengine.com/squads-1920x1080-1920x1080-095c0732502e.jpg",
|
||||||
|
"matchmaking": {
|
||||||
|
"override_playlist": "playlist_defaultsquad"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lastVisited": null,
|
||||||
|
"linkCode": "playlist_defaultsquad",
|
||||||
|
"isFavorite": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"linkData": {
|
||||||
|
"namespace": "fn",
|
||||||
|
"mnemonic": "campaign",
|
||||||
|
"linkType": "SubGame",
|
||||||
|
"active": true,
|
||||||
|
"disabled": false,
|
||||||
|
"version": 5,
|
||||||
|
"moderationStatus": "Unmoderated",
|
||||||
|
"accountId": "epic",
|
||||||
|
"creatorName": "Epic",
|
||||||
|
"descriptionTags": [
|
||||||
|
"pve"
|
||||||
|
],
|
||||||
|
"metadata": {
|
||||||
|
"ownership_token": "Token:campaignaccess",
|
||||||
|
"image_url": "https://static-assets-prod.s3.amazonaws.com/fn/static/creative/Fortnite_STW.jpg",
|
||||||
|
"alt_introduction": {
|
||||||
|
"de": "Dränge die anstürmenden Monsterhorden zurück und erforsche eine weitläufige, zerstörbare Welt. Baue riesige Festungen, stelle Waffen her, finde Beute und steige im Level auf!",
|
||||||
|
"ru": "Сдерживайте боем полчища монстров и исследуйте обширный разрушаемый мир. Отстраивайте огромные форты, создавайте оружие, находите добычу и повышайте уровень.",
|
||||||
|
"ko": "몬스터 호드에 맞서 싸우고, 광활하고 파괴적인 세상을 탐험해 보세요. 거대한 요새를 짓고, 무기를 제작하고, 전리품을 찾으면서 레벨을 올리세요! ",
|
||||||
|
"pt-BR": "Lute para conter hordas de monstros e explorar um vasto mundo destrutível. Construa fortes enormes, crie armas, encontre saques e suba de nível.",
|
||||||
|
"it": "Lotta per respingere orde di mostri ed esplorare un vasto mondo distruttibile. Costruisci fortezze, crea armi, raccogli bottino e sali di livello.",
|
||||||
|
"fr": "Repoussez des hordes de monstres et explorez un immense terrain destructible. Bâtissez des forts énormes, fabriquez des armes, dénichez du butin et montez en niveau.",
|
||||||
|
"zh-CN": "",
|
||||||
|
"es": "Lucha para contener las hordas de monstruos y recorre un mundo inmenso y destructible. Construye fuertes enormes, fabrica armas exóticas, busca botín y sube de nivel.",
|
||||||
|
"es-MX": "Lucha para contener las hordas de monstruos y explora un mundo vasto y destructible. Construye fuertes enormes, fabrica armas, encuentra botín y sube de nivel.",
|
||||||
|
"zh": "",
|
||||||
|
"ar": "قاتل لكبح جماح الوحوش واستكشاف عالم شاسع قابل للتدمير. ابنِ حصونًا ضخمة واصنع الأسلحة واعثر على الغنائم وارتقِ بالمستوى.",
|
||||||
|
"zh-Hant": "",
|
||||||
|
"ja": "モンスターの群れを食い止め、壊すこともできる広大な世界を探索しよう。巨大な要塞を築き、武器をクラフトし、戦利品を見つてレベルアップしよう。",
|
||||||
|
"pl": "Walcz, by powstrzymać hordy potworów i odkrywaj wielki świat podlegający destrukcji. Buduj olbrzymie forty, twórz broń, zbieraj łupy, awansuj. PRO100Kąt pozdrawia wszystkich Polaków.",
|
||||||
|
"es-419": "Lucha para contener las hordas de monstruos y explora un mundo vasto y destructible. Construye fuertes enormes, fabrica armas, encuentra botín y sube de nivel.",
|
||||||
|
"tr": "Canavar sürüsünü geri püskürtmek için savaş ve yıkılabilir geniş bir dünyayı keşfet. Devasa kaleler inşa et, silahlar üret, ganimetleri topla ve seviye atla."
|
||||||
|
},
|
||||||
|
"locale": "en",
|
||||||
|
"title": "Save The World",
|
||||||
|
"matchmaking": {
|
||||||
|
"joinInProgressType": "JoinImmediately",
|
||||||
|
"playersPerTeam": 4,
|
||||||
|
"maximumNumberOfPlayers": 4,
|
||||||
|
"override_Playlist": "",
|
||||||
|
"playerCount": 4,
|
||||||
|
"mmsType": "keep_full",
|
||||||
|
"mmsPrivacy": "Public",
|
||||||
|
"numberOfTeams": 1,
|
||||||
|
"bAllowJoinInProgress": true,
|
||||||
|
"minimumNumberOfPlayers": 1,
|
||||||
|
"joinInProgressTeam": 1
|
||||||
|
},
|
||||||
|
"alt_title": {
|
||||||
|
"de": "Rette die Welt",
|
||||||
|
"ru": "Сражение с Бурей",
|
||||||
|
"ko": "세이브 더 월드",
|
||||||
|
"pt-BR": "Salve o Mundo",
|
||||||
|
"it": "Salva il mondo",
|
||||||
|
"fr": "Sauver le monde",
|
||||||
|
"zh-CN": "",
|
||||||
|
"es": "Salvar el mundo",
|
||||||
|
"es-MX": "Salva el mundo",
|
||||||
|
"zh": "",
|
||||||
|
"ar": "أنقِذ العالم",
|
||||||
|
"zh-Hant": "",
|
||||||
|
"ja": "世界を救え",
|
||||||
|
"pl": "Ratowanie Świata",
|
||||||
|
"es-419": "Salva el mundo",
|
||||||
|
"tr": "Dünyayı Kurtar"
|
||||||
|
},
|
||||||
|
"alt_tagline": {
|
||||||
|
"de": "Dränge die anstürmenden Monsterhorden zurück und erforsche eine weitläufige, zerstörbare Welt. Baue riesige Festungen, stelle Waffen her, finde Beute und steige im Level auf!",
|
||||||
|
"ru": "Сдерживайте боем полчища монстров и исследуйте обширный разрушаемый мир. Отстраивайте огромные форты, создавайте оружие, находите добычу и повышайте уровень.",
|
||||||
|
"ko": "몬스터 호드에 맞서 싸우고, 광활하고 파괴적인 세상을 탐험해 보세요. 거대한 요새를 짓고, 무기를 제작하고, 전리품을 찾으면서 레벨을 올리세요! ",
|
||||||
|
"pt-BR": "Lute para conter hordas de monstros e explorar um vasto mundo destrutível. Construa fortes enormes, crie armas, encontre saques e suba de nível.",
|
||||||
|
"it": "Lotta per respingere orde di mostri ed esplorare un vasto mondo distruttibile. Costruisci fortezze, crea armi, raccogli bottino e sali di livello.",
|
||||||
|
"fr": "Repoussez des hordes de monstres et explorez un immense terrain destructible. Bâtissez des forts énormes, fabriquez des armes, dénichez du butin et montez en niveau.",
|
||||||
|
"zh-CN": "",
|
||||||
|
"es": "Lucha para contener las hordas de monstruos y recorre un mundo inmenso y destructible. Construye fuertes enormes, fabrica armas exóticas, busca botín y sube de nivel.",
|
||||||
|
"es-MX": "Lucha para contener las hordas de monstruos y explora un mundo vasto y destructible. Construye fuertes enormes, fabrica armas, encuentra botín y sube de nivel.",
|
||||||
|
"zh": "",
|
||||||
|
"ar": "قاتل لكبح جماح الوحوش واستكشاف عالم شاسع قابل للتدمير. ابنِ حصونًا ضخمة واصنع الأسلحة واعثر على الغنائم وارتقِ بالمستوى.",
|
||||||
|
"zh-Hant": "",
|
||||||
|
"ja": "モンスターの群れを食い止め、壊すこともできる広大な世界を探索しよう。巨大な要塞を築き、武器をクラフトし、戦利品を見つけてレベルアップしよう。",
|
||||||
|
"pl": "Walcz, by powstrzymać hordy potworów i odkrywaj wielki świat podlegający destrukcji. Buduj olbrzymie forty, twórz broń, zbieraj łupy, awansuj. PRO100Kąt pozdrawia wszystkich Polaków.",
|
||||||
|
"es-419": "Lucha para contener las hordas de monstruos y explora un mundo vasto y destructible. Construye fuertes enormes, fabrica armas, encuentra botín y sube de nivel.",
|
||||||
|
"tr": "Canavar sürüsünü geri püskürtmek için savaş ve yıkılabilir geniş bir dünyayı keşfet. Devasa kaleler inşa et, silahlar üret, ganimetleri topla ve seviye atla."
|
||||||
|
},
|
||||||
|
"tagline": "Battle to hold back the monster hordes and explore a vast, destructible world. Build huge forts, craft weapons, find loot and level up.",
|
||||||
|
"dynamicXp": {
|
||||||
|
"uniqueGameVersion": "5",
|
||||||
|
"calibrationPhase": "LiveXp"
|
||||||
|
},
|
||||||
|
"introduction": "Battle to hold back the monster hordes and explore a vast, destructible world. Build huge forts, craft weapons, find loot and level up."
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lastVisited": null,
|
||||||
|
"linkCode": "campaign",
|
||||||
|
"isFavorite": false
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"hasMore": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"TestCohorts": [
|
||||||
|
"LawinServer"
|
||||||
|
],
|
||||||
|
"ModeSets": {}
|
||||||
|
}
|
||||||
1
assets/lawin/responses/friendslist.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[]
|
||||||
10
assets/lawin/responses/friendslist2.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"friends": [],
|
||||||
|
"incoming": [],
|
||||||
|
"outgoing": [],
|
||||||
|
"suggested": [],
|
||||||
|
"blocklist": [],
|
||||||
|
"settings": {
|
||||||
|
"acceptInvites": "public"
|
||||||
|
}
|
||||||
|
}
|
||||||
1122
assets/lawin/responses/keychain.json
Normal file
67
assets/lawin/responses/motdTarget.json
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
{
|
||||||
|
"contentType": "collection",
|
||||||
|
"contentId": "motd-default-collection",
|
||||||
|
"tcId": "634e8e85-e2fc-4c68-bb10-93604cf6605f",
|
||||||
|
"contentItems": [
|
||||||
|
{
|
||||||
|
"contentType": "content-item",
|
||||||
|
"contentId": "46874c56-0973-4cbe-ac98-b580c5b36df5",
|
||||||
|
"tcId": "61fb3dd8-f23d-45cc-9058-058ab223ba5c",
|
||||||
|
"contentFields": {
|
||||||
|
"body": {
|
||||||
|
"ar": "استمتع بتجربة لعب استثنائية!",
|
||||||
|
"en": "Have a phenomenal gaming experience!",
|
||||||
|
"de": "Wünsche allen ein wunderbares Spielerlebnis!",
|
||||||
|
"es": "¡Que disfrutes de tu experiencia de videojuegos!",
|
||||||
|
"es-419": "¡Ten una experiencia de juego espectacular!",
|
||||||
|
"fr": "Un bon jeu à toutes et à tous !",
|
||||||
|
"it": "Ti auguriamo un'esperienza di gioco fenomenale!",
|
||||||
|
"ja": "驚きの体験をしよう!",
|
||||||
|
"ko": "게임에서 환상적인 경험을 해보세요!",
|
||||||
|
"pl": "Życzymy fenomenalnej gry!",
|
||||||
|
"pt-BR": "Tenha uma experiência de jogo fenomenal!",
|
||||||
|
"ru": "Желаю невероятно приятной игры!",
|
||||||
|
"tr": "Muhteşem bir oyun deneyimi yaşamanı dileriz!"
|
||||||
|
},
|
||||||
|
"entryType": "Website",
|
||||||
|
"image": [
|
||||||
|
{
|
||||||
|
"width": 1920,
|
||||||
|
"height": 1080,
|
||||||
|
"url": "https://fortnite-public-service-prod11.ol.epicgames.com/images/motd.png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"tabTitleOverride": "LawinServer",
|
||||||
|
"tileImage": [
|
||||||
|
{
|
||||||
|
"width": 1024,
|
||||||
|
"height": 512,
|
||||||
|
"url": "https://fortnite-public-service-prod11.ol.epicgames.com/images/motd-s.png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"title": {
|
||||||
|
"ar": "مرحبًا بك في LawinServer!",
|
||||||
|
"en": "Welcome to LawinServer!",
|
||||||
|
"de": "Willkommen bei LawinServer!",
|
||||||
|
"es": "¡Bienvenidos a LawinServer!",
|
||||||
|
"es-419": "¡Bienvenidos a LawinServer!",
|
||||||
|
"fr": "Bienvenue sur LawinServer !",
|
||||||
|
"it": "Benvenuto in LawinServer!",
|
||||||
|
"ja": "LawinServerへようこそ!",
|
||||||
|
"ko": "LawinServer에 오신 것을 환영합니다!",
|
||||||
|
"pl": "Witaj w LawinServerze!",
|
||||||
|
"pt-BR": "Bem-vindo ao LawinServer!",
|
||||||
|
"ru": "Добро пожаловать в LawinServer!",
|
||||||
|
"tr": "LavinServer'a Hoş Geldiniz!"
|
||||||
|
},
|
||||||
|
"videoAutoplay": false,
|
||||||
|
"videoLoop": false,
|
||||||
|
"videoMute": false,
|
||||||
|
"videoStreamingEnabled": false,
|
||||||
|
"websiteButtonText": "Discord",
|
||||||
|
"websiteURL": "https://discord.gg/KJ8UaHZ"
|
||||||
|
},
|
||||||
|
"contentSchemaName": "MotdWebsiteNewsWithVideo"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
4
assets/lawin/responses/privacy.json
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{
|
||||||
|
"accountId": "",
|
||||||
|
"optOutOfPublicLeaderboards": false
|
||||||
|
}
|
||||||
121549
assets/lawin/responses/quests.json
Normal file
658
assets/lawin/responses/sdkv1.json
Normal file
@@ -0,0 +1,658 @@
|
|||||||
|
{
|
||||||
|
"client": {
|
||||||
|
"RateLimiter.InventoryClient": {
|
||||||
|
"MessageCount": 100,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"BaseService": {
|
||||||
|
"HttpRetryLimit": 4,
|
||||||
|
"HttpRetryResponseCodes": [
|
||||||
|
429,
|
||||||
|
503,
|
||||||
|
504
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RateLimiter.AuthClient": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"RateLimiter.PresenceClient.Operations": {
|
||||||
|
"MessageCount": 3,
|
||||||
|
"TimeIntervalInSeconds": 20.0,
|
||||||
|
"Operation": [
|
||||||
|
"SendUpdate",
|
||||||
|
"SetPresence"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RateLimiter.ReceiptValidatorClient": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"RateLimiter.LeaderboardsClient": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"RateLimiter.MetricsClient": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"RateLimiter.StatsClient": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"RateLimiter.SDKConfigClient.Operations": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"RequestUpdate"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RateLimiter.TitleStorageClient": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"RateLimiter.EcomClient": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"RateLimiter.DataStorageClient.Operations": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"GetAccessLinks",
|
||||||
|
"QueryFile",
|
||||||
|
"QueryFileList",
|
||||||
|
"CopyFile",
|
||||||
|
"DeleteFile",
|
||||||
|
"ReadFile",
|
||||||
|
"WriteFile",
|
||||||
|
"DownloadFileRedirected",
|
||||||
|
"UploadFileRedirected"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LeaderboardsClient": {
|
||||||
|
"MaxUserScoresQueryUserIds": 100,
|
||||||
|
"MaxUserScoresQueryStats": 25
|
||||||
|
},
|
||||||
|
"RateLimiter.CustomInvitesClient.Operations": {
|
||||||
|
"MessageCount": 50,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"SendCustomInvite"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"HTTP": {
|
||||||
|
"HttpReceiveTimeout": 30,
|
||||||
|
"bEnableHttp": true,
|
||||||
|
"HttpTimeout": 30,
|
||||||
|
"HttpConnectionTimeout": 60,
|
||||||
|
"HttpSendTimeout": 30,
|
||||||
|
"MaxFlushTimeSeconds": 2.0
|
||||||
|
},
|
||||||
|
"RateLimiter.FriendClient.Operations": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"QueryFriends",
|
||||||
|
"SendFriendInvite",
|
||||||
|
"DeleteFriend"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RateLimiter.RTCAdminClient": {
|
||||||
|
"MessageCount": 50,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"RateLimiter.UserInfoClient": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"/Script/Engine.NetworkSettings": {
|
||||||
|
"n.VerifyPeer": false
|
||||||
|
},
|
||||||
|
"WebSockets.LibWebSockets": {
|
||||||
|
"ThreadStackSize": 131072,
|
||||||
|
"ThreadTargetFrameTimeInSeconds": 0.0333,
|
||||||
|
"ThreadMinimumSleepTimeInSeconds": 0.0
|
||||||
|
},
|
||||||
|
"StatsClient": {
|
||||||
|
"MaxQueryStatsStatNamesStrLength": 1900
|
||||||
|
},
|
||||||
|
"RateLimiter.MetricsClient.Operations": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"RegisterPlayerBackendSession"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RateLimiter.DataStorageClient": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"SanitizerClient": {
|
||||||
|
"ReplaceChar": "*",
|
||||||
|
"RequestLimit": 10
|
||||||
|
},
|
||||||
|
"RateLimiter.ModsClient.Operations": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"InstallMod",
|
||||||
|
"UninstallMod",
|
||||||
|
"UpdateMod",
|
||||||
|
"EnumerateMods"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RateLimiter.ReportsClient.Operations": {
|
||||||
|
"MessageCount": 100,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"SendPlayerBehaviorReport"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RateLimiter.RTCAdminClient.Operations": {
|
||||||
|
"MessageCount": 50,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"QueryJoinRoomToken",
|
||||||
|
"Kick",
|
||||||
|
"SetParticipantHardMute"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RateLimiter.FriendClient": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"RateLimiter.AchievementsClient": {
|
||||||
|
"MessageCount": 100,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"LogFiles": {
|
||||||
|
"PurgeLogsDays": 5,
|
||||||
|
"MaxLogFilesOnDisk": 5,
|
||||||
|
"LogTimes": "SinceStart"
|
||||||
|
},
|
||||||
|
"RateLimiter": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"RateLimiter.AntiCheatClient": {
|
||||||
|
"MessageCount": 120,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"RateLimiter.ProgressionSnapshot": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"SessionsClient": {
|
||||||
|
"HeartbeatIntervalSecs": 30
|
||||||
|
},
|
||||||
|
"RateLimiter.UserInfoClient.Operations": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"QueryLocalUserInfo",
|
||||||
|
"QueryUserInfo",
|
||||||
|
"QueryUserInfoByDisplayName",
|
||||||
|
"QueryUserInfoByExternalAccount"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"LobbyClient": {
|
||||||
|
"InitialResendDelayMs": 100,
|
||||||
|
"MaxConnectionRetries": 3,
|
||||||
|
"LobbySocketURL": "wss://api.epicgames.dev/lobby/v1/`deploymentId/lobbies/connect",
|
||||||
|
"NumConsecutiveFailuresAllowed": 5,
|
||||||
|
"MaxResendDelayMs": 2000,
|
||||||
|
"WebSocketConnectTaskMaxNetworkWaitSeconds": 15.0,
|
||||||
|
"RecoveryWaitTimeSecs": 2,
|
||||||
|
"InitialRetryDelaySeconds": 5,
|
||||||
|
"MaxSendRetries": 3,
|
||||||
|
"SentMessageTimeout": 5,
|
||||||
|
"HeartbeatIntervalSecs": 30,
|
||||||
|
"MaxRetryIntervalSeconds": 15
|
||||||
|
},
|
||||||
|
"RateLimiter.SanctionsClient.Operations": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"QueryActivePlayerSanctions"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"UIClient.SocialURLQueryParamNames": {
|
||||||
|
"OSName": "os_name",
|
||||||
|
"ProductId": "product_id",
|
||||||
|
"SDKCLNumber": "sdk_cl_number",
|
||||||
|
"DeploymentId": "deployment_id",
|
||||||
|
"IntegratedPlatformName": "integrated_platform_name",
|
||||||
|
"SDKVersion": "sdk_version",
|
||||||
|
"OSVersion": "os_version",
|
||||||
|
"UserId": "user_id",
|
||||||
|
"ExchangeCode": "exchange_code"
|
||||||
|
},
|
||||||
|
"RateLimiter.LobbyClient.ThrottledOperations": {
|
||||||
|
"MessageCount": 30,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"CreateLobby",
|
||||||
|
"DestroyLobby",
|
||||||
|
"JoinLobby",
|
||||||
|
"LeaveLobby",
|
||||||
|
"HeartbeatLobby",
|
||||||
|
"UpdateLobby",
|
||||||
|
"PromoteMember",
|
||||||
|
"KickLobbyMember",
|
||||||
|
"SendLobbyInvite",
|
||||||
|
"RejectLobbyInvite",
|
||||||
|
"QueryInvites",
|
||||||
|
"FindLobby",
|
||||||
|
"RefreshRTCToken",
|
||||||
|
"HardMuteMember"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RateLimiter.SessionsClient": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"RateLimiter.KWSClient": {
|
||||||
|
"MessageCount": 20,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"RateLimiter.PresenceClient": {
|
||||||
|
"MessageCount": 60,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"RateLimiter.KWSClient.Operations": {
|
||||||
|
"MessageCount": 20,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"CreateUser",
|
||||||
|
"UpdateParentEmail",
|
||||||
|
"QueryAgeGate",
|
||||||
|
"QueryPermissions",
|
||||||
|
"RequestPermissions"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RateLimiter.InventoryClient.Operations": {
|
||||||
|
"MessageCount": 100,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"Open",
|
||||||
|
"Close"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RateLimiter.LeaderboardsClient.Operations": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"QueryLeaderboardDefinitions",
|
||||||
|
"QueryLeaderboardRanks",
|
||||||
|
"QueryLeaderboardUserScores"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RateLimiter.SanctionsClient": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"Messaging.EpicConnect": {
|
||||||
|
"FailedConnectionDelayMultiplier": 2.5,
|
||||||
|
"ServerHeartbeatIntervalMilliseconds": 0,
|
||||||
|
"FailedConnectionDelayMaxSeconds": 180,
|
||||||
|
"ClientHeartbeatIntervalMilliseconds": 30000,
|
||||||
|
"FailedConnectionDelayIntervalSeconds": 5,
|
||||||
|
"Url": "wss://connect.epicgames.dev"
|
||||||
|
},
|
||||||
|
"MetricsClient": {
|
||||||
|
"HttpRetryLimit": 2
|
||||||
|
},
|
||||||
|
"RateLimiter.TitleStorageClient.Operations": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"QueryFile",
|
||||||
|
"QueryFileList",
|
||||||
|
"ReadFile"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RateLimiter.AchievementsClient.Operations": {
|
||||||
|
"MessageCount": 100,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"QueryDefinitions",
|
||||||
|
"QueryPlayerAchievements",
|
||||||
|
"UnlockAchievements"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Messaging.Stomp": {
|
||||||
|
"ClientHeartbeatIntervalMs": 30000,
|
||||||
|
"RequestedServerHeartbeatIntervalMs": 30000,
|
||||||
|
"Url": "wss://api.epicgames.dev/notifications/v1/`deploymentid`/connect",
|
||||||
|
"BlocklistMessageTypeFilters": [
|
||||||
|
"lobbyinvite"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"TitleStorageClient": {
|
||||||
|
"AccessLinkDurationSeconds": 300,
|
||||||
|
"UnusedCachedFileDaysToLive": 7,
|
||||||
|
"ClearInvalidFileCacheFrequencyDays": 2,
|
||||||
|
"MaxSimultaneousReads": 10
|
||||||
|
},
|
||||||
|
"ConnectClient": {
|
||||||
|
"MaxProductUserIdMappingsQueryUserIds": 128,
|
||||||
|
"MinProductUserIdMappingsUpdateTimeInSeconds": 900.0
|
||||||
|
},
|
||||||
|
"RateLimiter.LobbyClient.Operations": {
|
||||||
|
"MessageCount": 100,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"GetByLobbyId",
|
||||||
|
"UpdateLobby"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RateLimiter.AntiCheatClient.Operations": {
|
||||||
|
"MessageCount": 120,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"QueryServiceStatus",
|
||||||
|
"SendClientMessage"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"EcomClient": {
|
||||||
|
"PurchaseUrl": "https://launcher-website-prod07.ol.epicgames.com/purchase",
|
||||||
|
"PurchaseCookieName": "EPIC_BEARER_TOKEN",
|
||||||
|
"PurchaseEpicIdUrl": "https://www.epicgames.com/ecom/payment/v1/purchase"
|
||||||
|
},
|
||||||
|
"RateLimiter.SessionsClient.Operations": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"UpdateSession",
|
||||||
|
"JoinSession",
|
||||||
|
"StartSession",
|
||||||
|
"EndSession",
|
||||||
|
"RegisterPlayers",
|
||||||
|
"SendInvite",
|
||||||
|
"RejectInvite",
|
||||||
|
"QueryInvites",
|
||||||
|
"FindSession",
|
||||||
|
"DestroySession"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RateLimiter.StatsClient.Operations": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"IngestStat",
|
||||||
|
"QueryStats"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RateLimiter.ReceiptValidatorClient.Operations": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"VerifyPurchase"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"DataStorageClient": {
|
||||||
|
"AccessLinkDurationSeconds": 300,
|
||||||
|
"MaxSimultaneousReads": 10,
|
||||||
|
"MaxSimultaneousWrites": 10
|
||||||
|
},
|
||||||
|
"RateLimiter.AuthClient.Operations": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"VerifyAuth",
|
||||||
|
"DeletePersistentAuth",
|
||||||
|
"GenerateClientAuth",
|
||||||
|
"LinkAccount",
|
||||||
|
"QueryIdToken",
|
||||||
|
"VerifyIdToken"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"P2PClient": {
|
||||||
|
"IceServers": [
|
||||||
|
"stun:stun.l.google.com:19302",
|
||||||
|
"stun:turn.rtcp.on.epicgames.com:3478",
|
||||||
|
"turn:turn.rtcp.on.epicgames.com:3478"
|
||||||
|
],
|
||||||
|
"P2PMinPort": 7777,
|
||||||
|
"P2PMaxPort": 7876
|
||||||
|
},
|
||||||
|
"RateLimiter.LobbyClient": {
|
||||||
|
"MessageCount": 30,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"SDKAnalytics": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/telemetry/data/",
|
||||||
|
"DevPhase": 2,
|
||||||
|
"AppEnvironment": "Production",
|
||||||
|
"UploadType": "sdkevents"
|
||||||
|
},
|
||||||
|
"RateLimiter.ConnectClient": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"AntiCheat.GameplayData": {
|
||||||
|
"Url": "wss://api.epicgames.dev/cerberus-edge/v1/"
|
||||||
|
},
|
||||||
|
"AuthClient": {
|
||||||
|
"AccountPortalURLLocaleSuffix": "lang=`code",
|
||||||
|
"PollInterval": 5,
|
||||||
|
"RefreshTokenThreshold": 100.0,
|
||||||
|
"VPCRegisterURL": "https://epicgames.com/id/register/quick/minor/await?code=`challenge_id&display=embedded",
|
||||||
|
"AuthorizeContinuationEndpoint": "https://epicgames.com/id/login?continuation=`continuation&prompt=skip_merge%20skip_upgrade",
|
||||||
|
"AuthorizeCodeEndpoint": "https://epicgames.com/id/authorize?client_id=`client_id&response_type=code&scope=`scope&redirect_uri=`redirect_uri&display=popup&prompt=login",
|
||||||
|
"AuthorizeContinuationEmbeddedEndpoint": "https://epicgames.com/id/embedded/login?continuation=`continuation&prompt=skip_merge%20skip_upgrade",
|
||||||
|
"VerifyTokenInterval": 60.0,
|
||||||
|
"PollExpiresIn": 300,
|
||||||
|
"IdTokenCacheMinExpirySeconds": 300,
|
||||||
|
"AuthorizeEndpoint": "https://epicgames.com/id/authorize?exchange_code=`exchange_code&scope=`scope&prompt=skip_merge%20skip_upgrade",
|
||||||
|
"AccountPortalScheme": "eos.`client_id://epic/auth",
|
||||||
|
"bOfflineAccountToken": true
|
||||||
|
},
|
||||||
|
"RateLimiter.ProgressionSnapshot.Operations": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"SubmitSnapshot",
|
||||||
|
"DeleteSnapshot"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"XMPP": {
|
||||||
|
"bEnabled": true,
|
||||||
|
"bEnableWebsockets": true,
|
||||||
|
"ThreadStackSize": 131072
|
||||||
|
},
|
||||||
|
"RateLimiter.AntiCheatServer.Operations": {
|
||||||
|
"MessageCount": 100000,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"QueryServiceStatus",
|
||||||
|
"SendClientMessage"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Core.Log": {
|
||||||
|
"LogEOS": "verbose",
|
||||||
|
"LogEOSMessaging": "verbose",
|
||||||
|
"LogEOSConnect": "verbose",
|
||||||
|
"LogEOSAuth": "verbose",
|
||||||
|
"LogHttpSerialization": "verbose",
|
||||||
|
"LogCore": "verbose",
|
||||||
|
"LogHttp": "warning",
|
||||||
|
"LogStomp": "verbose",
|
||||||
|
"LogXmpp": "verbose",
|
||||||
|
"LogEOSSessions": "verbose"
|
||||||
|
},
|
||||||
|
"UIClient": {
|
||||||
|
"FriendsURL": "https://epic-social-game-overlay-prod.ol.epicgames.com/index.html",
|
||||||
|
"SocialSPAClientId": "cf27c69fe66441e8a8a4e8faf396ee4c",
|
||||||
|
"VPCURLLocaleSuffix": "&lang=`code",
|
||||||
|
"FriendsURLExchangeCodeSuffix": "?exchange_code=`exchange_code",
|
||||||
|
"VPCURL": "https://epicgames.com/id/overlay/quick/minor/verify?code=`challenge_id"
|
||||||
|
},
|
||||||
|
"RateLimiter.AntiCheatServer": {
|
||||||
|
"MessageCount": 100000,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"Messaging.XMPP": {
|
||||||
|
"ReconnectionDelayJitter": 1.5,
|
||||||
|
"PingTimeout": 30,
|
||||||
|
"ReconnectionDelayBase": 4.0,
|
||||||
|
"ServerPort": 443,
|
||||||
|
"bPrivateChatFriendsOnly": true,
|
||||||
|
"ReconnectionDelayMax": 300.0,
|
||||||
|
"Domain": "prod.ol.epicgames.com",
|
||||||
|
"ReconnectionDelayBackoffExponent": 2.0,
|
||||||
|
"ServerAddr": "wss://xmpp-service-prod.ol.epicgames.com",
|
||||||
|
"PingInterval": 60
|
||||||
|
},
|
||||||
|
"RateLimiter.SDKConfigClient": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"RateLimiter.EcomClient.Operations": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"QueryOwnership",
|
||||||
|
"QueryOwnershipToken",
|
||||||
|
"QueryEntitlement",
|
||||||
|
"QueryOffer",
|
||||||
|
"RedeemEntitlements",
|
||||||
|
"Checkout"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"PresenceClient": {
|
||||||
|
"EpicConnectNotificationWaitTime": 5.0,
|
||||||
|
"PresenceQueryTimeoutSeconds": 60.0,
|
||||||
|
"bSetOfflineOnLogoutEnabled": true,
|
||||||
|
"PresenceAutoUpdateInSeconds": 600.0,
|
||||||
|
"bSetOfflineOnShutdownEnabled": true
|
||||||
|
},
|
||||||
|
"RateLimiter.CustomInvitesClient": {
|
||||||
|
"MessageCount": 50,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"RateLimiter.ModsClient": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
},
|
||||||
|
"RateLimiter.ConnectClient.Operations": {
|
||||||
|
"MessageCount": 300,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"LoginAccount",
|
||||||
|
"CreateAccount",
|
||||||
|
"LinkAccount",
|
||||||
|
"UnlinkAccount",
|
||||||
|
"CreateDeviceId",
|
||||||
|
"DeleteDeviceId",
|
||||||
|
"TransferDeviceIdAccount",
|
||||||
|
"QueryExternalAccountMappings",
|
||||||
|
"QueryProductUserIdMappings",
|
||||||
|
"VerifyIdToken"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RateLimiter.AuthClient.SensitiveOperations": {
|
||||||
|
"MessageCount": 12,
|
||||||
|
"TimeIntervalInSeconds": 60.0,
|
||||||
|
"Operation": [
|
||||||
|
"GenerateUserAuth"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"RateLimiter.ReportsClient": {
|
||||||
|
"MessageCount": 100,
|
||||||
|
"TimeIntervalInSeconds": 60.0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"services": {
|
||||||
|
"RTCService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/rtc"
|
||||||
|
},
|
||||||
|
"DataStorageService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/datastorage"
|
||||||
|
},
|
||||||
|
"AccountsEpicIdService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev"
|
||||||
|
},
|
||||||
|
"MetricsService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/datarouter"
|
||||||
|
},
|
||||||
|
"EcommerceService": {
|
||||||
|
"BaseUrl": "https://ecommerceintegration-public-service-ecomprod02.ol.epicgames.com/ecommerceintegration"
|
||||||
|
},
|
||||||
|
"KWSService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/kws"
|
||||||
|
},
|
||||||
|
"AntiCheatService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/anticheat"
|
||||||
|
},
|
||||||
|
"LobbyService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/lobby"
|
||||||
|
},
|
||||||
|
"StatsAchievementsService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/stats"
|
||||||
|
},
|
||||||
|
"PriceEngineService": {
|
||||||
|
"BaseUrl": "https://priceengine-public-service-ecomprod01.ol.epicgames.com/priceengine"
|
||||||
|
},
|
||||||
|
"AccountsService": {
|
||||||
|
"BaseUrl": "https://egp-idsoc-proxy-prod.ol.epicgames.com/account",
|
||||||
|
"RedirectUrl": "accounts.epicgames.com"
|
||||||
|
},
|
||||||
|
"EcommerceEpicIdService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/epic/ecom"
|
||||||
|
},
|
||||||
|
"PaymentEpicIdService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/epic/payment"
|
||||||
|
},
|
||||||
|
"SanctionsService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/sanctions"
|
||||||
|
},
|
||||||
|
"FriendService": {
|
||||||
|
"BaseUrl": "https://egp-idsoc-proxy-prod.ol.epicgames.com/friends"
|
||||||
|
},
|
||||||
|
"ReceiptValidatorService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/receipt-validator"
|
||||||
|
},
|
||||||
|
"FriendEpicIdService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/epic/friends"
|
||||||
|
},
|
||||||
|
"CatalogService": {
|
||||||
|
"BaseUrl": "https://catalog-public-service-prod06.ol.epicgames.com/catalog"
|
||||||
|
},
|
||||||
|
"EOSAuthService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev"
|
||||||
|
},
|
||||||
|
"SessionsService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/matchmaking"
|
||||||
|
},
|
||||||
|
"ModsService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/mods"
|
||||||
|
},
|
||||||
|
"ReportsService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/player-reports"
|
||||||
|
},
|
||||||
|
"ProgressionSnapshotService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/snapshots"
|
||||||
|
},
|
||||||
|
"CustomInvitesService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/notifications"
|
||||||
|
},
|
||||||
|
"PresenceService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/epic/presence"
|
||||||
|
},
|
||||||
|
"TitleStorageService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/titlestorage"
|
||||||
|
},
|
||||||
|
"StatsIngestService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/ingestion/stats"
|
||||||
|
},
|
||||||
|
"LeaderboardsService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/leaderboards"
|
||||||
|
},
|
||||||
|
"InventoryService": {
|
||||||
|
"BaseUrl": "https://api.epicgames.dev/inventory"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"watermark": -934553538
|
||||||
|
}
|
||||||
2147
assets/lawin/responses/transformItemIDS.json
Normal file
52
assets/lawin/responses/winterfestrewards.json
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
"author": "List made by PRO100KatYT",
|
||||||
|
"Season11": {
|
||||||
|
"ERG.Node.A.1": ["AthenaCharacter:cid_645_athena_commando_f_wolly"],
|
||||||
|
"ERG.Node.B.1": ["AthenaGlider:glider_id_188_galileorocket_g7oki"],
|
||||||
|
"ERG.Node.C.1": ["AthenaBackpack:bid_430_galileospeedboat_9rxe3"],
|
||||||
|
"ERG.Node.D.1": ["AthenaCharacter:cid_643_athena_commando_m_ornamentsoldier"],
|
||||||
|
"ERG.Node.A.2": ["AthenaPickaxe:pickaxe_id_329_gingerbreadcookie1h"],
|
||||||
|
"ERG.Node.A.3": ["AthenaPickaxe:pickaxe_id_332_mintminer"],
|
||||||
|
"ERG.Node.A.4": ["AthenaDance:eid_snowglobe"],
|
||||||
|
"ERG.Node.A.5": ["AthenaGlider:glider_id_191_pinetree"],
|
||||||
|
"ERG.Node.A.6": ["AthenaItemWrap:wrap_188_wrappingpaper"],
|
||||||
|
"ERG.Node.A.7": ["AthenaItemWrap:wrap_183_newyear2020"],
|
||||||
|
"ERG.Node.A.8": ["AthenaSkyDiveContrail:trails_id_082_holidaygarland"],
|
||||||
|
"ERG.Node.A.9": ["AthenaMusicPack:musicpack_040_xmaschiptunes"],
|
||||||
|
"ERG.Node.A.10": ["AthenaLoadingScreen:lsid_208_smpattern"],
|
||||||
|
"ERG.Node.A.11": ["AthenaLoadingScreen:lsid_209_akcrackshot"]
|
||||||
|
},
|
||||||
|
"Season19": {
|
||||||
|
"ERG.Node.A.1": ["Token:14daysoffortnite_small_giftbox"],
|
||||||
|
"ERG.Node.B.1": ["AthenaDance:emoji_s19_animwinterfest2021"],
|
||||||
|
"ERG.Node.C.1": ["AthenaGlider:glider_id_335_logarithm_40qgl"],
|
||||||
|
"ERG.Node.D.1": ["AthenaCharacter:cid_a_323_athena_commando_m_bananawinter"],
|
||||||
|
"ERG.Node.A.2": ["HomebaseBannerIcon:brs19_winterfest2021"],
|
||||||
|
"ERG.Node.A.3": ["AthenaSkyDiveContrail:trails_id_137_turtleneckcrystal"],
|
||||||
|
"ERG.Node.A.4": ["AthenaItemWrap:wrap_429_holidaysweater"],
|
||||||
|
"ERG.Node.A.5": ["AthenaLoadingScreen:lsid_393_winterfest2021"],
|
||||||
|
"ERG.Node.A.6": ["AthenaMusicPack:musicpack_117_winterfest2021"],
|
||||||
|
"ERG.Node.A.7": ["AthenaDance:eid_epicyarn"],
|
||||||
|
"ERG.Node.A.8": ["AthenaCharacter:cid_a_310_athena_commando_F_scholarfestive"],
|
||||||
|
"ERG.Node.A.9": ["AthenaPickaxe:pickaxe_id_731_scholarfestivefemale1h"],
|
||||||
|
"ERG.Node.A.10": ["AthenaItemWrap:wrap_430_winterlights"],
|
||||||
|
"ERG.Node.A.11": ["AthenaDance:spid_346_winterfest_2021"],
|
||||||
|
"ERG.Node.A.12": ["AthenaPickaxe:pickaxe_ID_732_shovelmale"]
|
||||||
|
},
|
||||||
|
"Season23": {
|
||||||
|
"ERG.Node.A.1": ["AthenaCharacter:character_sportsfashion_winter"],
|
||||||
|
"ERG.Node.B.1": ["AthenaCharacter:character_cometdeer"],
|
||||||
|
"ERG.Node.A.2": ["AthenaGlider:glider_default_jolly"],
|
||||||
|
"ERG.Node.A.3": ["AthenaDance:eid_dashing"],
|
||||||
|
"ERG.Node.A.4": ["AthenaDance:spray_guffholidaytree_winterfest2022", "AthenaDance:spray_winterreindeer_winterfest2022", "AthenaDance:spray_defacedsnowman_winterfest2022"],
|
||||||
|
"ERG.Node.A.5": ["AthenaDance:emoji_s23_winterfest_2022"],
|
||||||
|
"ERG.Node.A.6": ["AthenaMusicPack:musicpack_164_redpepper_winterfest"],
|
||||||
|
"ERG.Node.A.7": ["AthenaItemWrap:wrap_winter_pal"],
|
||||||
|
"ERG.Node.A.8": ["AthenaPickaxe:pickaxe_jollytroll"],
|
||||||
|
"ERG.Node.A.9": ["AthenaGlider:glider_jollytroll"],
|
||||||
|
"ERG.Node.A.10": ["AthenaBackpack:backpack_jollytroll"],
|
||||||
|
"ERG.Node.A.11": ["AthenaMusicPack:musicpack_163_winterfest_2022", "AthenaMusicPack:musicpack_157_radish_nightnight"],
|
||||||
|
"ERG.Node.A.12": ["AthenaItemWrap:wrap_cometwinter"],
|
||||||
|
"ERG.Node.A.13": ["AthenaSkyDiveContrail:contrail_jollytroll"]
|
||||||
|
}
|
||||||
|
}
|
||||||
41781
assets/lawin/responses/worldstw.json
Normal file
20
lib/cli.dart
@@ -7,14 +7,12 @@ import 'package:reboot_launcher/src/cli/game.dart';
|
|||||||
import 'package:reboot_launcher/src/cli/reboot.dart';
|
import 'package:reboot_launcher/src/cli/reboot.dart';
|
||||||
import 'package:reboot_launcher/src/cli/server.dart';
|
import 'package:reboot_launcher/src/cli/server.dart';
|
||||||
import 'package:reboot_launcher/src/model/fortnite_version.dart';
|
import 'package:reboot_launcher/src/model/fortnite_version.dart';
|
||||||
import 'package:reboot_launcher/src/model/game_type.dart';
|
|
||||||
import 'package:reboot_launcher/src/util/os.dart';
|
|
||||||
import 'package:reboot_launcher/src/util/patcher.dart';
|
import 'package:reboot_launcher/src/util/patcher.dart';
|
||||||
import 'package:reboot_launcher/src/util/reboot.dart';
|
import 'package:reboot_launcher/src/util/reboot.dart';
|
||||||
import 'package:reboot_launcher/src/util/server.dart' as server;
|
import 'package:reboot_launcher/src/util/server.dart' as server;
|
||||||
|
|
||||||
late String? username;
|
late String? username;
|
||||||
late GameType type;
|
late bool host;
|
||||||
late bool verbose;
|
late bool verbose;
|
||||||
late String dll;
|
late String dll;
|
||||||
late FortniteVersion version;
|
late FortniteVersion version;
|
||||||
@@ -40,10 +38,10 @@ void main(List<String> args) async {
|
|||||||
..addOption("server-host")
|
..addOption("server-host")
|
||||||
..addOption("server-port")
|
..addOption("server-port")
|
||||||
..addOption("matchmaking-address")
|
..addOption("matchmaking-address")
|
||||||
..addOption("dll", defaultsTo: settingsJson["reboot"] ?? (await loadBinary("reboot.dll", true)).path)
|
..addOption("dll", defaultsTo: settingsJson["reboot"] ?? rebootDllFile)
|
||||||
..addOption("type", allowed: getGameTypes(), defaultsTo: getDefaultGameType(gameJson))
|
|
||||||
..addFlag("update", defaultsTo: settingsJson["auto_update"] ?? true, negatable: true)
|
..addFlag("update", defaultsTo: settingsJson["auto_update"] ?? true, negatable: true)
|
||||||
..addFlag("log", defaultsTo: false)
|
..addFlag("log", defaultsTo: false)
|
||||||
|
..addFlag("host", defaultsTo: false)
|
||||||
..addFlag("auto-restart", defaultsTo: false, negatable: true);
|
..addFlag("auto-restart", defaultsTo: false, negatable: true);
|
||||||
var result = parser.parse(args);
|
var result = parser.parse(args);
|
||||||
if (result.command?.name == "list") {
|
if (result.command?.name == "list") {
|
||||||
@@ -54,8 +52,8 @@ void main(List<String> args) async {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dll = result["dll"];
|
dll = result["dll"];
|
||||||
type = getGameType(result);
|
host = result["host"];
|
||||||
username = result["username"] ?? gameJson["${type == GameType.client ? "game" : "server"}_username"];
|
username = result["username"] ?? gameJson["username"];
|
||||||
verbose = result["log"];
|
verbose = result["log"];
|
||||||
|
|
||||||
version = _createVersion(gameJson["version"], result["version"], versions);
|
version = _createVersion(gameJson["version"], result["version"], versions);
|
||||||
@@ -69,7 +67,7 @@ void main(List<String> args) async {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
stdout.writeln("Launching game(type: ${type.name})...");
|
stdout.writeln("Launching game...");
|
||||||
if(version.executable == null){
|
if(version.executable == null){
|
||||||
throw Exception("Missing game executable at: ${version.location.path}");
|
throw Exception("Missing game executable at: ${version.location.path}");
|
||||||
}
|
}
|
||||||
@@ -78,9 +76,9 @@ void main(List<String> args) async {
|
|||||||
await patchMatchmaking(version.executable!);
|
await patchMatchmaking(version.executable!);
|
||||||
|
|
||||||
var serverType = getServerType(result);
|
var serverType = getServerType(result);
|
||||||
var host = result["server-host"] ?? serverJson["${serverType.id}_host"];
|
var serverHost = result["server-host"] ?? serverJson["${serverType.id}_host"];
|
||||||
var port = result["server-port"] ?? serverJson["${serverType.id}_port"];
|
var serverPort = result["server-port"] ?? serverJson["${serverType.id}_port"];
|
||||||
var started = await startServer(host, port, serverType);
|
var started = await startServer(serverHost, serverPort, serverType);
|
||||||
if(!started){
|
if(!started){
|
||||||
stderr.writeln("Cannot start server!");
|
stderr.writeln("Cannot start server!");
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:io';
|
|
||||||
|
|
||||||
import 'package:bitsdojo_window/bitsdojo_window.dart';
|
import 'package:bitsdojo_window/bitsdojo_window.dart';
|
||||||
import 'package:bitsdojo_window_windows/bitsdojo_window_windows.dart'
|
import 'package:bitsdojo_window_windows/bitsdojo_window_windows.dart'
|
||||||
@@ -7,32 +6,36 @@ import 'package:bitsdojo_window_windows/bitsdojo_window_windows.dart'
|
|||||||
import 'package:fluent_ui/fluent_ui.dart';
|
import 'package:fluent_ui/fluent_ui.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:get_storage/get_storage.dart';
|
import 'package:get_storage/get_storage.dart';
|
||||||
import 'package:reboot_launcher/cli.dart';
|
|
||||||
import 'package:reboot_launcher/src/controller/build_controller.dart';
|
|
||||||
import 'package:reboot_launcher/src/controller/game_controller.dart';
|
|
||||||
import 'package:reboot_launcher/src/controller/server_controller.dart';
|
|
||||||
import 'package:reboot_launcher/src/controller/settings_controller.dart';
|
|
||||||
import 'package:reboot_launcher/src/page/home_page.dart';
|
|
||||||
import 'package:reboot_launcher/src/util/error.dart';
|
import 'package:reboot_launcher/src/util/error.dart';
|
||||||
import 'package:reboot_launcher/src/util/os.dart';
|
import 'package:reboot_launcher/src/util/os.dart';
|
||||||
|
import 'package:reboot_launcher/src/ui/controller/build_controller.dart';
|
||||||
|
import 'package:reboot_launcher/src/ui/controller/game_controller.dart';
|
||||||
|
import 'package:reboot_launcher/src/ui/controller/hosting_controller.dart';
|
||||||
|
import 'package:reboot_launcher/src/ui/controller/server_controller.dart';
|
||||||
|
import 'package:reboot_launcher/src/ui/controller/settings_controller.dart';
|
||||||
|
import 'package:reboot_launcher/src/ui/page/home_page.dart';
|
||||||
import 'package:system_theme/system_theme.dart';
|
import 'package:system_theme/system_theme.dart';
|
||||||
import 'package:window_manager/window_manager.dart';
|
|
||||||
|
|
||||||
|
const double kDefaultWindowWidth = 885;
|
||||||
|
const double kDefaultWindowHeight = 885;
|
||||||
final GlobalKey appKey = GlobalKey();
|
final GlobalKey appKey = GlobalKey();
|
||||||
|
|
||||||
void main() async {
|
void main() async {
|
||||||
await safeBinariesDirectory.create(recursive: true);
|
await installationDirectory.create(recursive: true);
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
await SystemTheme.accentColor.load();
|
await SystemTheme.accentColor.load();
|
||||||
await GetStorage.init("game");
|
await GetStorage.init("reboot_game");
|
||||||
await GetStorage.init("server");
|
await GetStorage.init("reboot_server");
|
||||||
await GetStorage.init("update");
|
await GetStorage.init("reboot_update");
|
||||||
await GetStorage.init("settings");
|
await GetStorage.init("reboot_settings");
|
||||||
|
await GetStorage.init("reboot_hosting");
|
||||||
Get.put(GameController());
|
Get.put(GameController());
|
||||||
Get.put(ServerController());
|
Get.put(ServerController());
|
||||||
Get.put(BuildController());
|
Get.put(BuildController());
|
||||||
Get.put(SettingsController());
|
Get.put(SettingsController());
|
||||||
|
Get.put(HostingController());
|
||||||
doWhenWindowReady(() {
|
doWhenWindowReady(() {
|
||||||
|
appWindow.minSize = const Size(kDefaultWindowWidth, kDefaultWindowHeight);
|
||||||
var controller = Get.find<SettingsController>();
|
var controller = Get.find<SettingsController>();
|
||||||
var size = Size(controller.width, controller.height);
|
var size = Size(controller.width, controller.height);
|
||||||
var window = appWindow as WinDesktopWindow;
|
var window = appWindow as WinDesktopWindow;
|
||||||
@@ -44,14 +47,16 @@ void main() async {
|
|||||||
appWindow.alignment = Alignment.center;
|
appWindow.alignment = Alignment.center;
|
||||||
}
|
}
|
||||||
|
|
||||||
windowManager.setPreventClose(true);
|
|
||||||
appWindow.title = "Reboot Launcher";
|
appWindow.title = "Reboot Launcher";
|
||||||
appWindow.show();
|
appWindow.show();
|
||||||
});
|
});
|
||||||
|
|
||||||
runZonedGuarded(() =>
|
runZonedGuarded(
|
||||||
runApp(const RebootApplication()),
|
() async => runApp(const RebootApplication()),
|
||||||
(error, stack) => onError(error, stack, false)
|
(error, stack) => onError(error, stack, false),
|
||||||
|
zoneSpecification: ZoneSpecification(
|
||||||
|
handleUncaughtError: (self, parent, zone, error, stacktrace) => onError(error, stacktrace, false)
|
||||||
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,27 +69,22 @@ class RebootApplication extends StatefulWidget {
|
|||||||
|
|
||||||
class _RebootApplicationState extends State<RebootApplication> {
|
class _RebootApplicationState extends State<RebootApplication> {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) => FluentApp(
|
||||||
final color = SystemTheme.accentColor.accent.toAccentColor();
|
title: "Reboot Launcher",
|
||||||
return FluentApp(
|
themeMode: ThemeMode.system,
|
||||||
title: "Reboot Launcher",
|
debugShowCheckedModeBanner: false,
|
||||||
themeMode: ThemeMode.system,
|
color: SystemTheme.accentColor.accent.toAccentColor(),
|
||||||
debugShowCheckedModeBanner: false,
|
darkTheme: _createTheme(Brightness.dark),
|
||||||
color: color,
|
theme: _createTheme(Brightness.light),
|
||||||
darkTheme: _createTheme(Brightness.dark),
|
home: HomePage(key: appKey),
|
||||||
theme: _createTheme(Brightness.light),
|
);
|
||||||
home: HomePage(key: appKey),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
FluentThemeData _createTheme(Brightness brightness) {
|
FluentThemeData _createTheme(Brightness brightness) => FluentThemeData(
|
||||||
return FluentThemeData(
|
brightness: brightness,
|
||||||
brightness: brightness,
|
accentColor: SystemTheme.accentColor.accent.toAccentColor(),
|
||||||
accentColor: SystemTheme.accentColor.accent.toAccentColor(),
|
visualDensity: VisualDensity.standard,
|
||||||
visualDensity: VisualDensity.standard,
|
focusTheme: FocusThemeData(
|
||||||
focusTheme: FocusThemeData(
|
glowFactor: is10footScreen() ? 2.0 : 0.0,
|
||||||
glowFactor: is10footScreen() ? 2.0 : 0.0,
|
),
|
||||||
),
|
);
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,11 +3,8 @@ import 'dart:convert';
|
|||||||
import 'package:args/args.dart';
|
import 'package:args/args.dart';
|
||||||
|
|
||||||
import '../model/fortnite_version.dart';
|
import '../model/fortnite_version.dart';
|
||||||
import '../model/game_type.dart';
|
|
||||||
import '../model/server_type.dart';
|
import '../model/server_type.dart';
|
||||||
|
|
||||||
Iterable<String> getGameTypes() => GameType.values.map((entry) => entry.id);
|
|
||||||
|
|
||||||
Iterable<String> getServerTypes() => ServerType.values.map((entry) => entry.id);
|
Iterable<String> getServerTypes() => ServerType.values.map((entry) => entry.id);
|
||||||
|
|
||||||
String getDefaultServerType(Map<String, dynamic> json) {
|
String getDefaultServerType(Map<String, dynamic> json) {
|
||||||
@@ -15,15 +12,6 @@ String getDefaultServerType(Map<String, dynamic> json) {
|
|||||||
return type.id;
|
return type.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
GameType getGameType(ArgResults result) {
|
|
||||||
var type = GameType.of(result["type"]);
|
|
||||||
if(type == null){
|
|
||||||
throw Exception("Unknown game type: $result. Use --type only with ${getGameTypes().join(", ")}");
|
|
||||||
}
|
|
||||||
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
|
|
||||||
ServerType getServerType(ArgResults result) {
|
ServerType getServerType(ArgResults result) {
|
||||||
var type = ServerType.of(result["server-type"]);
|
var type = ServerType.of(result["server-type"]);
|
||||||
if(type == null){
|
if(type == null){
|
||||||
@@ -33,18 +21,6 @@ ServerType getServerType(ArgResults result) {
|
|||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
String getDefaultGameType(Map<String, dynamic> json){
|
|
||||||
var type = GameType.values.elementAt(json["type"] ?? 0);
|
|
||||||
switch(type){
|
|
||||||
case GameType.client:
|
|
||||||
return "client";
|
|
||||||
case GameType.server:
|
|
||||||
return "server";
|
|
||||||
case GameType.headlessServer:
|
|
||||||
return "headless_server";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
List<FortniteVersion> getVersions(Map<String, dynamic> gameJson) {
|
List<FortniteVersion> getVersions(Map<String, dynamic> gameJson) {
|
||||||
Iterable iterable = jsonDecode(gameJson["versions"] ?? "[]");
|
Iterable iterable = jsonDecode(gameJson["versions"] ?? "[]");
|
||||||
return iterable.map((entry) => FortniteVersion.fromJson(entry))
|
return iterable.map((entry) => FortniteVersion.fromJson(entry))
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import 'package:process_run/shell.dart';
|
|||||||
import 'package:reboot_launcher/cli.dart';
|
import 'package:reboot_launcher/cli.dart';
|
||||||
|
|
||||||
import '../model/fortnite_version.dart';
|
import '../model/fortnite_version.dart';
|
||||||
import '../model/game_type.dart';
|
|
||||||
import '../util/injector.dart';
|
import '../util/injector.dart';
|
||||||
import '../util/os.dart';
|
import '../util/os.dart';
|
||||||
import '../util/process.dart';
|
import '../util/process.dart';
|
||||||
@@ -32,15 +31,14 @@ Future<void> startGame() async {
|
|||||||
.path} no longer contains a Fortnite executable, did you delete or move it?");
|
.path} no longer contains a Fortnite executable, did you delete or move it?");
|
||||||
}
|
}
|
||||||
|
|
||||||
var hosting = type != GameType.client;
|
|
||||||
if (username == null) {
|
if (username == null) {
|
||||||
username = "Reboot${hosting ? 'Host' : 'Player'}";
|
username = "Reboot${host ? 'Host' : 'Player'}";
|
||||||
stdout.writeln("No username was specified, using $username by default. Use --username to specify one");
|
stdout.writeln("No username was specified, using $username by default. Use --username to specify one");
|
||||||
}
|
}
|
||||||
|
|
||||||
_gameProcess = await Process.start(gamePath, createRebootArgs(username!, type, ""))
|
_gameProcess = await Process.start(gamePath, createRebootArgs(username!, host, ""))
|
||||||
..exitCode.then((_) => _onClose())
|
..exitCode.then((_) => _onClose())
|
||||||
..outLines.forEach((line) => _onGameOutput(line, dll, hosting, verbose));
|
..outLines.forEach((line) => _onGameOutput(line, dll, host, verbose));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -68,7 +66,7 @@ void _onGameOutput(String line, String dll, bool hosting, bool verbose) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(line.contains("Platform has ")){
|
if(line.contains("Platform has ")){
|
||||||
_injectOrShowError("craniumv2.dll");
|
_injectOrShowError("cobalt.dll");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,7 +88,7 @@ void _onGameOutput(String line, String dll, bool hosting, bool verbose) {
|
|||||||
_injectOrShowError("console.dll");
|
_injectOrShowError("console.dll");
|
||||||
}
|
}
|
||||||
|
|
||||||
_injectOrShowError("leakv2.dll");
|
_injectOrShowError("memoryleak.dll");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -107,7 +105,7 @@ Future<void> _injectOrShowError(String binary, [bool locate = true]) async {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
stdout.writeln("Injecting $binary...");
|
stdout.writeln("Injecting $binary...");
|
||||||
var dll = locate ? await loadBinary(binary, true) : File(binary);
|
var dll = locate ? File("${assetsDirectory.path}\\dlls\\$binary") : File(binary);
|
||||||
if(!dll.existsSync()){
|
if(!dll.existsSync()){
|
||||||
throw Exception("Cannot inject $dll: missing file");
|
throw Exception("Cannot inject $dll: missing file");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,19 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:archive/archive_io.dart';
|
import 'package:archive/archive_io.dart';
|
||||||
|
import 'package:reboot_launcher/src/util/server.dart';
|
||||||
|
|
||||||
import '../util/os.dart';
|
import '../util/os.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'package:http/http.dart' as http;
|
||||||
|
|
||||||
const String _baseDownload = "https://cdn.discordapp.com/attachments/1009257632315494520/1051137082766131250/Cranium.dll";
|
const String _baseDownload = "https://cdn.discordapp.com/attachments/1095351875961901057/1110968021373169674/cobalt.dll";
|
||||||
const String _consoleDownload = "https://cdn.discordapp.com/attachments/1026121175878881290/1031230848005046373/console.dll";
|
const String _consoleDownload = "https://cdn.discordapp.com/attachments/1095351875961901057/1110968095033524234/console.dll";
|
||||||
const String _memoryFixDownload = "https://cdn.discordapp.com/attachments/1013220721494863872/1033484506633617500/MemoryLeakFixer.dll";
|
const String _memoryFixDownload = "https://cdn.discordapp.com/attachments/1095351875961901057/1110968141556756581/memoryleak.dll";
|
||||||
const String _embeddedConfigDownload = "https://cdn.discordapp.com/attachments/1026121175878881290/1040679319351066644/embedded.zip";
|
const String _embeddedConfigDownload = "https://cdn.discordapp.com/attachments/1026121175878881290/1040679319351066644/embedded.zip";
|
||||||
|
|
||||||
Future<void> downloadRequiredDLLs() async {
|
Future<void> downloadRequiredDLLs() async {
|
||||||
stdout.writeln("Downloading necessary components...");
|
stdout.writeln("Downloading necessary components...");
|
||||||
var consoleDll = await loadBinary("console.dll", true);
|
var consoleDll = File("${assetsDirectory.path}\\dlls\\console.dll");
|
||||||
if(!consoleDll.existsSync()){
|
if(!consoleDll.existsSync()){
|
||||||
var response = await http.get(Uri.parse(_consoleDownload));
|
var response = await http.get(Uri.parse(_consoleDownload));
|
||||||
if(response.statusCode != 200){
|
if(response.statusCode != 200){
|
||||||
@@ -22,30 +23,27 @@ Future<void> downloadRequiredDLLs() async {
|
|||||||
await consoleDll.writeAsBytes(response.bodyBytes);
|
await consoleDll.writeAsBytes(response.bodyBytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
var craniumDll = await loadBinary("craniumv2.dll", true);
|
var craniumDll = File("${assetsDirectory.path}\\dlls\\cobalt.dll");
|
||||||
if(!craniumDll.existsSync()){
|
if(!craniumDll.existsSync()){
|
||||||
var response = await http.get(Uri.parse(_baseDownload));
|
var response = await http.get(Uri.parse(_baseDownload));
|
||||||
if(response.statusCode != 200){
|
if(response.statusCode != 200){
|
||||||
throw Exception("Cannot download craniumv2.dll");
|
throw Exception("Cannot download cobalt.dll");
|
||||||
}
|
}
|
||||||
|
|
||||||
await craniumDll.writeAsBytes(response.bodyBytes);
|
await craniumDll.writeAsBytes(response.bodyBytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
var memoryFixDll = await loadBinary("leakv2.dll", true);
|
var memoryFixDll = File("${assetsDirectory.path}\\dlls\\memoryleak.dll");
|
||||||
if(!memoryFixDll.existsSync()){
|
if(!memoryFixDll.existsSync()){
|
||||||
var response = await http.get(Uri.parse(_memoryFixDownload));
|
var response = await http.get(Uri.parse(_memoryFixDownload));
|
||||||
if(response.statusCode != 200){
|
if(response.statusCode != 200){
|
||||||
throw Exception("Cannot download leakv2.dll");
|
throw Exception("Cannot download memoryleak.dll");
|
||||||
}
|
}
|
||||||
|
|
||||||
await memoryFixDll.writeAsBytes(response.bodyBytes);
|
await memoryFixDll.writeAsBytes(response.bodyBytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
var config = loadEmbedded("config/");
|
if(!serverDirectory.existsSync()){
|
||||||
var profiles = loadEmbedded("profiles/");
|
|
||||||
var responses = loadEmbedded("responses/");
|
|
||||||
if(!config.existsSync() || !profiles.existsSync() || !responses.existsSync()){
|
|
||||||
var response = await http.get(Uri.parse(_embeddedConfigDownload));
|
var response = await http.get(Uri.parse(_embeddedConfigDownload));
|
||||||
if(response.statusCode != 200){
|
if(response.statusCode != 200){
|
||||||
throw Exception("Cannot download embedded server config");
|
throw Exception("Cannot download embedded server config");
|
||||||
@@ -53,7 +51,6 @@ Future<void> downloadRequiredDLLs() async {
|
|||||||
|
|
||||||
var tempZip = File("${tempDirectory.path}/reboot_config.zip");
|
var tempZip = File("${tempDirectory.path}/reboot_config.zip");
|
||||||
await tempZip.writeAsBytes(response.bodyBytes);
|
await tempZip.writeAsBytes(response.bodyBytes);
|
||||||
|
await extractFileToDisk(tempZip.path, serverDirectory.path);
|
||||||
await extractFileToDisk(tempZip.path, "${safeBinariesDirectory.path}\\cli");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -20,7 +20,7 @@ Future<bool> startServer(String? host, String? port, ServerType type) async {
|
|||||||
return true;
|
return true;
|
||||||
case ServerType.embedded:
|
case ServerType.embedded:
|
||||||
stdout.writeln("Starting an embedded server...");
|
stdout.writeln("Starting an embedded server...");
|
||||||
await server.startServer();
|
await server.startServer(false);
|
||||||
var result = await server.ping(host ?? "127.0.0.1", port ?? "3551");
|
var result = await server.ping(host ?? "127.0.0.1", port ?? "3551");
|
||||||
if(result == null){
|
if(result == null){
|
||||||
throw Exception("Cannot start embedded server");
|
throw Exception("Cannot start embedded server");
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'game_type.dart';
|
|
||||||
|
|
||||||
class GameInstance {
|
class GameInstance {
|
||||||
final Process gameProcess;
|
final Process gameProcess;
|
||||||
final Process? launcherProcess;
|
final Process? launcherProcess;
|
||||||
|
|||||||
@@ -1,26 +0,0 @@
|
|||||||
enum GameType {
|
|
||||||
client,
|
|
||||||
server,
|
|
||||||
headlessServer;
|
|
||||||
|
|
||||||
static GameType? of(String id){
|
|
||||||
try {
|
|
||||||
return GameType.values
|
|
||||||
.firstWhere((element) => element.id == id);
|
|
||||||
}catch(_){
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
String get id {
|
|
||||||
return this == GameType.client ? "client"
|
|
||||||
: this == GameType.server ? "server"
|
|
||||||
: "headless_server";
|
|
||||||
}
|
|
||||||
|
|
||||||
String get name {
|
|
||||||
return this == GameType.client ? "Game client"
|
|
||||||
: this == GameType.server ? "Game server"
|
|
||||||
: "Headless game server";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
import 'package:version/version.dart';
|
|
||||||
|
|
||||||
class RebootDownload {
|
|
||||||
final int updateTime;
|
|
||||||
final Object? error;
|
|
||||||
final StackTrace? stackTrace;
|
|
||||||
|
|
||||||
RebootDownload(this.updateTime, [this.error, this.stackTrace]);
|
|
||||||
|
|
||||||
bool get hasError => error != null;
|
|
||||||
}
|
|
||||||
8
lib/src/model/update_status.dart
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
enum UpdateStatus {
|
||||||
|
waiting,
|
||||||
|
started,
|
||||||
|
success,
|
||||||
|
error;
|
||||||
|
|
||||||
|
bool isDone() => this == UpdateStatus.success || this == UpdateStatus.error;
|
||||||
|
}
|
||||||
@@ -1,280 +0,0 @@
|
|||||||
|
|
||||||
import 'dart:async';
|
|
||||||
|
|
||||||
import 'package:fluent_ui/fluent_ui.dart';
|
|
||||||
import 'package:flutter/foundation.dart';
|
|
||||||
import 'package:get/get.dart';
|
|
||||||
import 'package:get_storage/get_storage.dart';
|
|
||||||
import 'package:reboot_launcher/main.dart';
|
|
||||||
import 'package:reboot_launcher/src/controller/build_controller.dart';
|
|
||||||
import 'package:reboot_launcher/src/controller/game_controller.dart';
|
|
||||||
import 'package:reboot_launcher/src/controller/settings_controller.dart';
|
|
||||||
import 'package:reboot_launcher/src/dialog/dialog.dart';
|
|
||||||
import 'package:reboot_launcher/src/model/reboot_download.dart';
|
|
||||||
import 'package:reboot_launcher/src/util/os.dart';
|
|
||||||
import 'package:reboot_launcher/src/widget/home/game_type_selector.dart';
|
|
||||||
import 'package:reboot_launcher/src/widget/home/launch_button.dart';
|
|
||||||
import 'package:reboot_launcher/src/widget/home/version_selector.dart';
|
|
||||||
import 'package:reboot_launcher/src/widget/shared/setting_tile.dart';
|
|
||||||
|
|
||||||
import '../dialog/dialog_button.dart';
|
|
||||||
import '../util/checks.dart';
|
|
||||||
import '../util/reboot.dart';
|
|
||||||
|
|
||||||
class LauncherPage extends StatefulWidget {
|
|
||||||
const LauncherPage(
|
|
||||||
{Key? key})
|
|
||||||
: super(key: key);
|
|
||||||
|
|
||||||
@override
|
|
||||||
State<LauncherPage> createState() => _LauncherPageState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class _LauncherPageState extends State<LauncherPage> {
|
|
||||||
final GameController _gameController = Get.find<GameController>();
|
|
||||||
final SettingsController _settingsController = Get.find<SettingsController>();
|
|
||||||
final BuildController _buildController = Get.find<BuildController>();
|
|
||||||
|
|
||||||
@override
|
|
||||||
void initState() {
|
|
||||||
if(_gameController.updater == null) {
|
|
||||||
_startUpdater();
|
|
||||||
_setupBuildWarning();
|
|
||||||
}
|
|
||||||
|
|
||||||
super.initState();
|
|
||||||
}
|
|
||||||
|
|
||||||
void _setupBuildWarning() {
|
|
||||||
_buildController.cancelledDownload
|
|
||||||
.listen((value) => value ? _onCancelWarning() : {});
|
|
||||||
}
|
|
||||||
|
|
||||||
void _startUpdater() {
|
|
||||||
_gameController.updater = StreamController.broadcast();
|
|
||||||
downloadRebootDll(_settingsController.updateUrl.text, _updateTime)
|
|
||||||
..then((result) async {
|
|
||||||
if(!result.hasError){
|
|
||||||
_updateTime = result.updateTime;
|
|
||||||
_gameController.updated = true;
|
|
||||||
_gameController.failing = false;
|
|
||||||
_gameController.error = false;
|
|
||||||
_gameController.updater?.add(true);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(_gameController.failing){
|
|
||||||
_gameController.updated = false;
|
|
||||||
_gameController.failing = false;
|
|
||||||
_gameController.error = true;
|
|
||||||
_gameController.updater?.add(false);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
_gameController.failing = true;
|
|
||||||
showDialog(
|
|
||||||
context: appKey.currentContext!,
|
|
||||||
builder: (context) => InfoDialog(
|
|
||||||
text: "An error occurred while downloading the reboot dll: this usually means that your antivirus flagged it. "
|
|
||||||
"Do you want to add an exclusion to Windows Defender to fix the issue? "
|
|
||||||
"If you are using a different antivirus disable it manually as this won't work. ",
|
|
||||||
buttons: [
|
|
||||||
ErrorDialog.createCopyErrorButton(
|
|
||||||
error: result.error ?? Exception("Unknown error"),
|
|
||||||
stackTrace: result.stackTrace,
|
|
||||||
type: ButtonType.secondary,
|
|
||||||
onClick: () {
|
|
||||||
Navigator.pop(context);
|
|
||||||
_gameController.updated = false;
|
|
||||||
_gameController.failing = false;
|
|
||||||
_gameController.error = true;
|
|
||||||
_gameController.updater?.add(false);
|
|
||||||
}
|
|
||||||
),
|
|
||||||
DialogButton(
|
|
||||||
text: "Add",
|
|
||||||
type: ButtonType.primary,
|
|
||||||
onTap: () async {
|
|
||||||
Navigator.pop(context);
|
|
||||||
var binary = await loadBinary("antivirus.bat", true);
|
|
||||||
var result = await runElevated(binary.path, "");
|
|
||||||
if(!result) {
|
|
||||||
_gameController.failing = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
_startUpdater();
|
|
||||||
}
|
|
||||||
),
|
|
||||||
],
|
|
||||||
)
|
|
||||||
);
|
|
||||||
})
|
|
||||||
..catchError((error, stackTrace) {
|
|
||||||
_gameController.error = true;
|
|
||||||
_gameController.updater?.add(false);
|
|
||||||
return RebootDownload(0, error, stackTrace);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
int? get _updateTime {
|
|
||||||
var storage = GetStorage("update");
|
|
||||||
return storage.read("last_update_v2");
|
|
||||||
}
|
|
||||||
|
|
||||||
set _updateTime(int? updateTime) {
|
|
||||||
var storage = GetStorage("update");
|
|
||||||
storage.write("last_update_v2", updateTime);
|
|
||||||
}
|
|
||||||
|
|
||||||
void _onCancelWarning() {
|
|
||||||
WidgetsBinding.instance.addPostFrameCallback((_) {
|
|
||||||
if(!mounted) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
showSnackbar(context,
|
|
||||||
const Snackbar(content: Text("Download cancelled")));
|
|
||||||
_buildController.cancelledDownload(false);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) => StreamBuilder<bool>(
|
|
||||||
stream: _gameController.updater!.stream,
|
|
||||||
builder: (context, snapshot) => !_gameController.updated && !_gameController.error ? _updateScreen : _homeScreen
|
|
||||||
);
|
|
||||||
|
|
||||||
Widget get _homeScreen => Column(
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
|
||||||
children: [
|
|
||||||
AnimatedSwitcher(
|
|
||||||
duration: const Duration(milliseconds: 300),
|
|
||||||
child: _gameController.error ? _updateError : const SizedBox(),
|
|
||||||
),
|
|
||||||
AnimatedSize(
|
|
||||||
duration: const Duration(milliseconds: 300),
|
|
||||||
child: SizedBox(height: _gameController.error ? 16.0 : 0.0),
|
|
||||||
),
|
|
||||||
SettingTile(
|
|
||||||
title: "Username",
|
|
||||||
subtitle: "Enter the name that others will see once you are in-game",
|
|
||||||
content: TextFormBox(
|
|
||||||
placeholder: "username",
|
|
||||||
controller: _gameController.username,
|
|
||||||
validator: checkMatchmaking,
|
|
||||||
autovalidateMode: AutovalidateMode.always
|
|
||||||
)
|
|
||||||
),
|
|
||||||
const SizedBox(
|
|
||||||
height: 16.0,
|
|
||||||
),
|
|
||||||
SettingTile(
|
|
||||||
title: "Matchmaking host",
|
|
||||||
subtitle: "Enter the IP address of the game server hosting the match",
|
|
||||||
content: TextFormBox(
|
|
||||||
placeholder: "ip:port",
|
|
||||||
controller: _settingsController.matchmakingIp,
|
|
||||||
validator: checkMatchmaking,
|
|
||||||
autovalidateMode: AutovalidateMode.always
|
|
||||||
),
|
|
||||||
expandedContent: [
|
|
||||||
ListTile(
|
|
||||||
title: const Text(
|
|
||||||
"Automatically start a game server",
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 14
|
|
||||||
),
|
|
||||||
),
|
|
||||||
subtitle: const Text("Choose whether an headless server should be automatically started when matchmaking is on localhost"),
|
|
||||||
trailing: Obx(() => ToggleSwitch(
|
|
||||||
checked: _gameController.autostartGameServer(),
|
|
||||||
onChanged: (value) => _gameController.autostartGameServer.value = value
|
|
||||||
))
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
|
||||||
const SizedBox(
|
|
||||||
height: 16.0,
|
|
||||||
),
|
|
||||||
SettingTile(
|
|
||||||
title: "Version",
|
|
||||||
subtitle: "Select the version of Fortnite you want to play with your friends",
|
|
||||||
content: const VersionSelector(),
|
|
||||||
expandedContent: [
|
|
||||||
ListTile(
|
|
||||||
title: const Text(
|
|
||||||
"Add a version from this PC's local storage",
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 14
|
|
||||||
),
|
|
||||||
),
|
|
||||||
trailing: Button(
|
|
||||||
onPressed: () => VersionSelector.openAddDialog(context),
|
|
||||||
child: const Text("Add build "),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
|
|
||||||
ListTile(
|
|
||||||
title: const Text(
|
|
||||||
"Download any version from the cloud",
|
|
||||||
style: TextStyle(
|
|
||||||
fontSize: 14
|
|
||||||
),
|
|
||||||
),
|
|
||||||
trailing: Button(
|
|
||||||
onPressed: () => VersionSelector.openDownloadDialog(context),
|
|
||||||
child: const Text("Download"),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
]
|
|
||||||
),
|
|
||||||
const SizedBox(
|
|
||||||
height: 16.0,
|
|
||||||
),
|
|
||||||
SettingTile(
|
|
||||||
title: "Instance type",
|
|
||||||
subtitle: "Select the type of instance you want to launch",
|
|
||||||
content: GameTypeSelector()
|
|
||||||
),
|
|
||||||
const Expanded(child: SizedBox()),
|
|
||||||
const LaunchButton()
|
|
||||||
],
|
|
||||||
);
|
|
||||||
|
|
||||||
Widget get _updateScreen => Row(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: [
|
|
||||||
Column(
|
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
|
||||||
children: const [
|
|
||||||
ProgressRing(),
|
|
||||||
SizedBox(height: 16.0),
|
|
||||||
Text("Updating Reboot DLL...")
|
|
||||||
],
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
|
|
||||||
Widget get _updateError {
|
|
||||||
return MouseRegion(
|
|
||||||
cursor: SystemMouseCursors.click,
|
|
||||||
child: GestureDetector(
|
|
||||||
onTap: () {
|
|
||||||
_gameController.updated = false;
|
|
||||||
_gameController.failing = false;
|
|
||||||
_gameController.error = false;
|
|
||||||
_gameController.updater?.add(false);
|
|
||||||
_startUpdater();
|
|
||||||
},
|
|
||||||
child: const SizedBox(
|
|
||||||
width: double.infinity,
|
|
||||||
child: InfoBar(
|
|
||||||
title: Text("The Reboot dll wasn't downloaded: disable your antivirus or proxy and click here to try again"
|
|
||||||
),
|
|
||||||
severity: InfoBarSeverity.info
|
|
||||||
)
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -7,68 +7,44 @@ import 'package:get/get.dart';
|
|||||||
import 'package:get_storage/get_storage.dart';
|
import 'package:get_storage/get_storage.dart';
|
||||||
import 'package:reboot_launcher/src/model/fortnite_version.dart';
|
import 'package:reboot_launcher/src/model/fortnite_version.dart';
|
||||||
import 'package:reboot_launcher/src/model/game_instance.dart';
|
import 'package:reboot_launcher/src/model/game_instance.dart';
|
||||||
import 'package:reboot_launcher/src/model/game_type.dart';
|
|
||||||
|
import '../../model/update_status.dart';
|
||||||
|
|
||||||
|
const String kDefaultPlayerName = "Player";
|
||||||
|
|
||||||
class GameController extends GetxController {
|
class GameController extends GetxController {
|
||||||
late final GetStorage _storage;
|
late final GetStorage _storage;
|
||||||
late final TextEditingController username;
|
late final TextEditingController username;
|
||||||
|
late final TextEditingController password;
|
||||||
|
late final RxBool showPassword;
|
||||||
late final TextEditingController customLaunchArgs;
|
late final TextEditingController customLaunchArgs;
|
||||||
late final Rx<List<FortniteVersion>> versions;
|
late final Rx<List<FortniteVersion>> versions;
|
||||||
late final Rxn<FortniteVersion> _selectedVersion;
|
late final Rxn<FortniteVersion> _selectedVersion;
|
||||||
late final Rx<GameType> type;
|
|
||||||
late final HashMap<GameType, GameInstance> gameInstancesMap;
|
|
||||||
late final RxBool started;
|
late final RxBool started;
|
||||||
late final RxBool autostartGameServer;
|
late final Rx<UpdateStatus> updateStatus;
|
||||||
late bool updated;
|
GameInstance? instance;
|
||||||
late bool error;
|
|
||||||
late bool failing;
|
|
||||||
StreamController<bool>? updater;
|
|
||||||
|
|
||||||
GameController() {
|
GameController() {
|
||||||
_storage = GetStorage("game");
|
_storage = GetStorage("reboot_game");
|
||||||
|
Iterable decodedVersionsJson = jsonDecode(_storage.read("versions") ?? "[]");
|
||||||
Iterable decodedVersionsJson =
|
|
||||||
jsonDecode(_storage.read("versions") ?? "[]");
|
|
||||||
var decodedVersions = decodedVersionsJson
|
var decodedVersions = decodedVersionsJson
|
||||||
.map((entry) => FortniteVersion.fromJson(entry))
|
.map((entry) => FortniteVersion.fromJson(entry))
|
||||||
.toList();
|
.toList();
|
||||||
versions = Rx(decodedVersions);
|
versions = Rx(decodedVersions);
|
||||||
versions.listen((data) => saveVersions());
|
versions.listen((data) => _saveVersions());
|
||||||
|
|
||||||
var decodedSelectedVersionName = _storage.read("version");
|
var decodedSelectedVersionName = _storage.read("version");
|
||||||
var decodedSelectedVersion = decodedVersions.firstWhereOrNull(
|
var decodedSelectedVersion = decodedVersions.firstWhereOrNull(
|
||||||
(element) => element.name == decodedSelectedVersionName);
|
(element) => element.name == decodedSelectedVersionName);
|
||||||
_selectedVersion = Rxn(decodedSelectedVersion);
|
_selectedVersion = Rxn(decodedSelectedVersion);
|
||||||
|
username = TextEditingController(text: _storage.read("username") ?? kDefaultPlayerName);
|
||||||
type = Rx(GameType.values.elementAt(_storage.read("type") ?? 0));
|
username.addListener(() => _storage.write("username", username.text));
|
||||||
type.listen((value) {
|
password = TextEditingController(text: _storage.read("password") ?? "");
|
||||||
_storage.write("type", value.index);
|
password.addListener(() => _storage.write("password", password.text));
|
||||||
username.text = _readUsername();
|
showPassword = RxBool(false);
|
||||||
});
|
|
||||||
|
|
||||||
username = TextEditingController(text: _readUsername());
|
|
||||||
username.addListener(() => _storage.write("${type.value == GameType.client ? 'game' : 'host'}_username", username.text));
|
|
||||||
|
|
||||||
customLaunchArgs = TextEditingController(text: _storage.read("custom_launch_args" ?? ""));
|
customLaunchArgs = TextEditingController(text: _storage.read("custom_launch_args" ?? ""));
|
||||||
customLaunchArgs.addListener(() => _storage.write("custom_launch_args", customLaunchArgs.text));
|
customLaunchArgs.addListener(() => _storage.write("custom_launch_args", customLaunchArgs.text));
|
||||||
|
|
||||||
gameInstancesMap= HashMap();
|
|
||||||
|
|
||||||
started = RxBool(false);
|
started = RxBool(false);
|
||||||
|
updateStatus = Rx(UpdateStatus.waiting);
|
||||||
autostartGameServer = RxBool(_storage.read("auto_start_game_server") ?? true);
|
|
||||||
autostartGameServer.listen((value) => _storage.write("auto_start_game_server", value));
|
|
||||||
|
|
||||||
updated = false;
|
|
||||||
|
|
||||||
error = false;
|
|
||||||
|
|
||||||
failing = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
String _readUsername() {
|
|
||||||
var client = type.value == GameType.client;
|
|
||||||
return _storage.read("${client ? 'game' : 'host'}_username") ?? (client ? "" : "HostingServer");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FortniteVersion? getVersionByName(String name) {
|
FortniteVersion? getVersionByName(String name) {
|
||||||
@@ -76,12 +52,15 @@ class GameController extends GetxController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void addVersion(FortniteVersion version) {
|
void addVersion(FortniteVersion version) {
|
||||||
|
var empty = versions.value.isEmpty;
|
||||||
versions.update((val) => val?.add(version));
|
versions.update((val) => val?.add(version));
|
||||||
|
if(empty){
|
||||||
|
selectedVersion = version;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FortniteVersion removeVersionByName(String versionName) {
|
FortniteVersion removeVersionByName(String versionName) {
|
||||||
var version =
|
var version = versions.value.firstWhere((element) => element.name == versionName);
|
||||||
versions.value.firstWhere((element) => element.name == versionName);
|
|
||||||
removeVersion(version);
|
removeVersion(version);
|
||||||
return version;
|
return version;
|
||||||
}
|
}
|
||||||
@@ -90,9 +69,8 @@ class GameController extends GetxController {
|
|||||||
versions.update((val) => val?.remove(version));
|
versions.update((val) => val?.remove(version));
|
||||||
}
|
}
|
||||||
|
|
||||||
Future saveVersions() async {
|
Future<void> _saveVersions() async {
|
||||||
var serialized =
|
var serialized = jsonEncode(versions.value.map((entry) => entry.toJson()).toList());
|
||||||
jsonEncode(versions.value.map((entry) => entry.toJson()).toList());
|
|
||||||
await _storage.write("versions", serialized);
|
await _storage.write("versions", serialized);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,8 +78,6 @@ class GameController extends GetxController {
|
|||||||
|
|
||||||
bool get hasNoVersions => versions.value.isEmpty;
|
bool get hasNoVersions => versions.value.isEmpty;
|
||||||
|
|
||||||
GameInstance? get currentGameInstance => gameInstancesMap[type()];
|
|
||||||
|
|
||||||
FortniteVersion? get selectedVersion => _selectedVersion();
|
FortniteVersion? get selectedVersion => _selectedVersion();
|
||||||
|
|
||||||
set selectedVersion(FortniteVersion? version) {
|
set selectedVersion(FortniteVersion? version) {
|
||||||
28
lib/src/ui/controller/hosting_controller.dart
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
import 'package:fluent_ui/fluent_ui.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:get_storage/get_storage.dart';
|
||||||
|
|
||||||
|
import '../../model/game_instance.dart';
|
||||||
|
|
||||||
|
|
||||||
|
const String kDefaultServerName = "Reboot Game Server";
|
||||||
|
|
||||||
|
class HostingController extends GetxController {
|
||||||
|
late final GetStorage _storage;
|
||||||
|
late final TextEditingController name;
|
||||||
|
late final TextEditingController category;
|
||||||
|
late final RxBool discoverable;
|
||||||
|
late final RxBool started;
|
||||||
|
GameInstance? instance;
|
||||||
|
|
||||||
|
HostingController() {
|
||||||
|
_storage = GetStorage("reboot_hosting");
|
||||||
|
name = TextEditingController(text: _storage.read("name") ?? kDefaultServerName);
|
||||||
|
name.addListener(() => _storage.write("name", name.text));
|
||||||
|
category = TextEditingController(text: _storage.read("category") ?? "");
|
||||||
|
category.addListener(() => _storage.write("category", category.text));
|
||||||
|
discoverable = RxBool(_storage.read("discoverable") ?? false);
|
||||||
|
discoverable.listen((value) => _storage.write("discoverable", value));
|
||||||
|
started = RxBool(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,8 +5,8 @@ import 'package:get/get.dart';
|
|||||||
import 'package:get_storage/get_storage.dart';
|
import 'package:get_storage/get_storage.dart';
|
||||||
import 'package:jaguar/jaguar.dart';
|
import 'package:jaguar/jaguar.dart';
|
||||||
|
|
||||||
import '../model/server_type.dart';
|
import '../../model/server_type.dart';
|
||||||
import '../util/server.dart';
|
import '../../util/server.dart';
|
||||||
|
|
||||||
class ServerController extends GetxController {
|
class ServerController extends GetxController {
|
||||||
static const String _serverName = "127.0.0.1";
|
static const String _serverName = "127.0.0.1";
|
||||||
@@ -18,14 +18,12 @@ class ServerController extends GetxController {
|
|||||||
late final Rx<ServerType> type;
|
late final Rx<ServerType> type;
|
||||||
late final RxBool warning;
|
late final RxBool warning;
|
||||||
late RxBool started;
|
late RxBool started;
|
||||||
late RxBool loginAutomatically;
|
late RxBool detached;
|
||||||
HttpServer? remoteServer;
|
HttpServer? remoteServer;
|
||||||
|
|
||||||
ServerController() {
|
ServerController() {
|
||||||
_storage = GetStorage("server");
|
_storage = GetStorage("reboot_server");
|
||||||
started = RxBool(false);
|
started = RxBool(false);
|
||||||
loginAutomatically = RxBool(_storage.read("login_automatically") ?? false);
|
|
||||||
loginAutomatically.listen((value) => _storage.write("login_automatically", value));
|
|
||||||
type = Rx(ServerType.values.elementAt(_storage.read("type") ?? 0));
|
type = Rx(ServerType.values.elementAt(_storage.read("type") ?? 0));
|
||||||
type.listen((value) {
|
type.listen((value) {
|
||||||
host.text = _readHost();
|
host.text = _readHost();
|
||||||
@@ -43,6 +41,8 @@ class ServerController extends GetxController {
|
|||||||
port.addListener(() => _storage.write("${type.value.id}_port", port.text));
|
port.addListener(() => _storage.write("${type.value.id}_port", port.text));
|
||||||
warning = RxBool(_storage.read("lawin_value") ?? true);
|
warning = RxBool(_storage.read("lawin_value") ?? true);
|
||||||
warning.listen((value) => _storage.write("lawin_value", value));
|
warning.listen((value) => _storage.write("lawin_value", value));
|
||||||
|
detached = RxBool(_storage.read("detached") ?? false);
|
||||||
|
warning.listen((value) => _storage.write("detached", value));
|
||||||
}
|
}
|
||||||
|
|
||||||
String _readHost() {
|
String _readHost() {
|
||||||
@@ -1,16 +1,18 @@
|
|||||||
import 'dart:io';
|
|
||||||
|
|
||||||
import 'package:fluent_ui/fluent_ui.dart';
|
import 'package:fluent_ui/fluent_ui.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:get_storage/get_storage.dart';
|
import 'package:get_storage/get_storage.dart';
|
||||||
import 'package:ini/ini.dart';
|
import 'package:reboot_launcher/main.dart';
|
||||||
import 'package:reboot_launcher/src/util/os.dart';
|
import 'package:reboot_launcher/src/util/os.dart';
|
||||||
import 'package:reboot_launcher/src/util/server.dart';
|
import 'package:reboot_launcher/src/util/server.dart';
|
||||||
import 'dart:ui';
|
import 'dart:ui';
|
||||||
|
|
||||||
import '../util/reboot.dart';
|
import '../../util/reboot.dart';
|
||||||
|
|
||||||
class SettingsController extends GetxController {
|
class SettingsController extends GetxController {
|
||||||
|
static const String _kDefaultIp = "127.0.0.1";
|
||||||
|
static const bool _kDefaultAutoUpdate = true;
|
||||||
|
|
||||||
late final GetStorage _storage;
|
late final GetStorage _storage;
|
||||||
late final String originalDll;
|
late final String originalDll;
|
||||||
late final TextEditingController updateUrl;
|
late final TextEditingController updateUrl;
|
||||||
@@ -26,41 +28,30 @@ class SettingsController extends GetxController {
|
|||||||
late double scrollingDistance;
|
late double scrollingDistance;
|
||||||
|
|
||||||
SettingsController() {
|
SettingsController() {
|
||||||
_storage = GetStorage("settings");
|
_storage = GetStorage("reboot_settings");
|
||||||
|
|
||||||
updateUrl = TextEditingController(text: _storage.read("update_url") ?? rebootDownloadUrl);
|
updateUrl = TextEditingController(text: _storage.read("update_url") ?? rebootDownloadUrl);
|
||||||
updateUrl.addListener(() => _storage.write("update_url", updateUrl.text));
|
updateUrl.addListener(() => _storage.write("update_url", updateUrl.text));
|
||||||
|
|
||||||
rebootDll = _createController("reboot", "reboot.dll");
|
rebootDll = _createController("reboot", "reboot.dll");
|
||||||
|
|
||||||
consoleDll = _createController("console", "console.dll");
|
consoleDll = _createController("console", "console.dll");
|
||||||
|
authDll = _createController("cobalt", "cobalt.dll");
|
||||||
authDll = _createController("cranium2", "craniumv2.dll");
|
matchmakingIp = TextEditingController(text: _storage.read("ip") ?? _kDefaultIp);
|
||||||
|
|
||||||
matchmakingIp = TextEditingController(text: _storage.read("ip") ?? "127.0.0.1");
|
|
||||||
matchmakingIp.addListener(() async {
|
matchmakingIp.addListener(() async {
|
||||||
var text = matchmakingIp.text;
|
var text = matchmakingIp.text;
|
||||||
_storage.write("ip", text);
|
_storage.write("ip", text);
|
||||||
writeMatchmakingIp(text);
|
writeMatchmakingIp(text);
|
||||||
});
|
});
|
||||||
|
width = _storage.read("width") ?? kDefaultWindowWidth;
|
||||||
width = _storage.read("width") ?? 912;
|
height = _storage.read("height") ?? kDefaultWindowHeight;
|
||||||
height = _storage.read("height") ?? 660;
|
|
||||||
offsetX = _storage.read("offset_x");
|
offsetX = _storage.read("offset_x");
|
||||||
offsetY = _storage.read("offset_y");
|
offsetY = _storage.read("offset_y");
|
||||||
|
autoUpdate = RxBool(_storage.read("auto_update") ?? _kDefaultAutoUpdate);
|
||||||
autoUpdate = RxBool(_storage.read("auto_update") ?? false);
|
|
||||||
autoUpdate.listen((value) async => _storage.write("auto_update", value));
|
autoUpdate.listen((value) async => _storage.write("auto_update", value));
|
||||||
|
|
||||||
scrollingDistance = 0.0;
|
scrollingDistance = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
TextEditingController _createController(String key, String name) {
|
TextEditingController _createController(String key, String name) {
|
||||||
loadBinary(name, true);
|
var controller = TextEditingController(text: _storage.read(key) ?? _controllerDefaultPath(name));
|
||||||
|
|
||||||
var controller = TextEditingController(text: _storage.read(key) ?? "${safeBinariesDirectory.path}\\$name");
|
|
||||||
controller.addListener(() => _storage.write(key, controller.text));
|
controller.addListener(() => _storage.write(key, controller.text));
|
||||||
|
|
||||||
return controller;
|
return controller;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -73,4 +64,16 @@ class SettingsController extends GetxController {
|
|||||||
_storage.write("offset_x", position.dx);
|
_storage.write("offset_x", position.dx);
|
||||||
_storage.write("offset_y", position.dy);
|
_storage.write("offset_y", position.dy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void reset(){
|
||||||
|
updateUrl.text = rebootDownloadUrl;
|
||||||
|
rebootDll.text = _controllerDefaultPath("reboot.dll");
|
||||||
|
consoleDll.text = _controllerDefaultPath("console.dll");
|
||||||
|
authDll.text = _controllerDefaultPath("cobalt.dll");
|
||||||
|
matchmakingIp.text = _kDefaultIp;
|
||||||
|
writeMatchmakingIp(_kDefaultIp);
|
||||||
|
autoUpdate.value = _kDefaultAutoUpdate;
|
||||||
|
}
|
||||||
|
|
||||||
|
String _controllerDefaultPath(String name) => "${assetsDirectory.path}\\dlls\\$name";
|
||||||
}
|
}
|
||||||
6
lib/src/ui/controller/update_controller.dart
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
import 'package:get_storage/get_storage.dart';
|
||||||
|
|
||||||
|
final GetStorage _storage = GetStorage("reboot_update");
|
||||||
|
|
||||||
|
int? get updateTime => _storage.read("last_update_v2");
|
||||||
|
set updateTime(int? updateTime) => _storage.write("last_update_v2", updateTime);
|
||||||
@@ -2,14 +2,14 @@ import 'dart:io';
|
|||||||
|
|
||||||
import 'package:fluent_ui/fluent_ui.dart';
|
import 'package:fluent_ui/fluent_ui.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:reboot_launcher/src/controller/game_controller.dart';
|
|
||||||
import 'package:reboot_launcher/src/dialog/dialog.dart';
|
|
||||||
import 'package:reboot_launcher/src/dialog/dialog_button.dart';
|
|
||||||
import 'package:reboot_launcher/src/model/fortnite_version.dart';
|
import 'package:reboot_launcher/src/model/fortnite_version.dart';
|
||||||
|
import 'package:reboot_launcher/src/ui/controller/game_controller.dart';
|
||||||
|
|
||||||
import '../util/checks.dart';
|
import '../../util/checks.dart';
|
||||||
import '../widget/shared/file_selector.dart';
|
import '../widget/shared/file_selector.dart';
|
||||||
import '../widget/shared/smart_check_box.dart';
|
import '../widget/shared/smart_check_box.dart';
|
||||||
|
import 'dialog.dart';
|
||||||
|
import 'dialog_button.dart';
|
||||||
|
|
||||||
class AddLocalVersion extends StatelessWidget {
|
class AddLocalVersion extends StatelessWidget {
|
||||||
final GameController _gameController = Get.find<GameController>();
|
final GameController _gameController = Get.find<GameController>();
|
||||||
@@ -24,9 +24,20 @@ class AddLocalVersion extends StatelessWidget {
|
|||||||
return FormDialog(
|
return FormDialog(
|
||||||
content: Column(
|
content: Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
|
const SizedBox(
|
||||||
|
width: double.infinity,
|
||||||
|
child: InfoBar(
|
||||||
|
title: Text("Local builds are not guaranteed to work"),
|
||||||
|
severity: InfoBarSeverity.info
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
const SizedBox(
|
||||||
|
height: 16.0
|
||||||
|
),
|
||||||
|
|
||||||
TextFormBox(
|
TextFormBox(
|
||||||
controller: _nameController,
|
controller: _nameController,
|
||||||
header: "Name",
|
header: "Name",
|
||||||
@@ -35,19 +46,14 @@ class AddLocalVersion extends StatelessWidget {
|
|||||||
validator: (text) => checkVersion(text, _gameController.versions.value)
|
validator: (text) => checkVersion(text, _gameController.versions.value)
|
||||||
),
|
),
|
||||||
|
|
||||||
const SizedBox(
|
|
||||||
height: 16.0
|
|
||||||
),
|
|
||||||
|
|
||||||
FileSelector(
|
FileSelector(
|
||||||
|
label: "Path",
|
||||||
placeholder: "Type the game folder",
|
placeholder: "Type the game folder",
|
||||||
windowTitle: "Select game folder",
|
windowTitle: "Select game folder",
|
||||||
controller: _gamePathController,
|
controller: _gamePathController,
|
||||||
validator: checkGameFolder,
|
validator: checkGameFolder,
|
||||||
folder: true
|
folder: true
|
||||||
),
|
)
|
||||||
|
|
||||||
const SizedBox(height: 8.0),
|
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
buttons: [
|
buttons: [
|
||||||
@@ -5,19 +5,20 @@ import 'package:async/async.dart';
|
|||||||
import 'package:fluent_ui/fluent_ui.dart';
|
import 'package:fluent_ui/fluent_ui.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:reboot_launcher/src/controller/build_controller.dart';
|
|
||||||
import 'package:reboot_launcher/src/controller/game_controller.dart';
|
|
||||||
import 'package:reboot_launcher/src/dialog/dialog_button.dart';
|
|
||||||
import 'package:reboot_launcher/src/model/fortnite_version.dart';
|
import 'package:reboot_launcher/src/model/fortnite_version.dart';
|
||||||
|
import 'package:reboot_launcher/src/util/error.dart';
|
||||||
import 'package:reboot_launcher/src/util/os.dart';
|
import 'package:reboot_launcher/src/util/os.dart';
|
||||||
import 'package:reboot_launcher/src/util/build.dart';
|
import 'package:reboot_launcher/src/util/build.dart';
|
||||||
import 'package:reboot_launcher/src/widget/home/version_name_input.dart';
|
import 'package:reboot_launcher/src/ui/controller/game_controller.dart';
|
||||||
import 'package:universal_disk_space/universal_disk_space.dart';
|
import 'package:universal_disk_space/universal_disk_space.dart';
|
||||||
|
|
||||||
import '../util/checks.dart';
|
import '../../util/checks.dart';
|
||||||
|
import '../controller/build_controller.dart';
|
||||||
import '../widget/home/build_selector.dart';
|
import '../widget/home/build_selector.dart';
|
||||||
|
import '../widget/home/version_name_input.dart';
|
||||||
import '../widget/shared/file_selector.dart';
|
import '../widget/shared/file_selector.dart';
|
||||||
import 'dialog.dart';
|
import 'dialog.dart';
|
||||||
|
import 'dialog_button.dart';
|
||||||
|
|
||||||
class AddServerVersion extends StatefulWidget {
|
class AddServerVersion extends StatefulWidget {
|
||||||
const AddServerVersion({Key? key}) : super(key: key);
|
const AddServerVersion({Key? key}) : super(key: key);
|
||||||
@@ -39,7 +40,7 @@ class _AddServerVersionState extends State<AddServerVersion> {
|
|||||||
DownloadStatus _status = DownloadStatus.form;
|
DownloadStatus _status = DownloadStatus.form;
|
||||||
String _timeLeft = "00:00:00";
|
String _timeLeft = "00:00:00";
|
||||||
double _downloadProgress = 0;
|
double _downloadProgress = 0;
|
||||||
Process? _manifestDownloadProcess;
|
CancelableOperation? _manifestDownloadProcess;
|
||||||
CancelableOperation? _driveDownloadOperation;
|
CancelableOperation? _driveDownloadOperation;
|
||||||
Object? _error;
|
Object? _error;
|
||||||
StackTrace? _stackTrace;
|
StackTrace? _stackTrace;
|
||||||
@@ -49,7 +50,7 @@ class _AddServerVersionState extends State<AddServerVersion> {
|
|||||||
_fetchFuture = _buildController.builds != null
|
_fetchFuture = _buildController.builds != null
|
||||||
? Future.value(true)
|
? Future.value(true)
|
||||||
: compute(fetchBuilds, null)
|
: compute(fetchBuilds, null)
|
||||||
.then((value) => _buildController.builds = value);
|
.then((value) => _buildController.builds = value);
|
||||||
_diskSpace = DiskSpace();
|
_diskSpace = DiskSpace();
|
||||||
_diskFuture = _diskSpace.scan()
|
_diskFuture = _diskSpace.scan()
|
||||||
.then((_) => _updateFormDefaults());
|
.then((_) => _updateFormDefaults());
|
||||||
@@ -67,14 +68,12 @@ class _AddServerVersionState extends State<AddServerVersion> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _onDisposed() {
|
void _onDisposed() {
|
||||||
if (_status != DownloadStatus.downloading &&
|
if (_status != DownloadStatus.downloading) {
|
||||||
_status != DownloadStatus.extracting) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_manifestDownloadProcess != null) {
|
if (_manifestDownloadProcess != null) {
|
||||||
loadBinary("stop.bat", true).then(
|
_manifestDownloadProcess?.cancel();
|
||||||
(value) => Process.runSync(value.path, []));
|
|
||||||
_buildController.cancelledDownload(true);
|
_buildController.cancelledDownload(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -129,13 +128,14 @@ class _AddServerVersionState extends State<AddServerVersion> {
|
|||||||
void _startDownload(BuildContext context) async {
|
void _startDownload(BuildContext context) async {
|
||||||
try {
|
try {
|
||||||
setState(() => _status = DownloadStatus.downloading);
|
setState(() => _status = DownloadStatus.downloading);
|
||||||
_manifestDownloadProcess = await downloadManifestBuild(
|
var future = downloadArchiveBuild(
|
||||||
_buildController.selectedBuild.link,
|
_buildController.selectedBuild.link,
|
||||||
_pathController.text,
|
Directory(_pathController.text),
|
||||||
_onDownloadProgress
|
_onDownloadProgress,
|
||||||
|
_onUnrar
|
||||||
);
|
);
|
||||||
_manifestDownloadProcess!.exitCode
|
future.then((value) => _onDownloadComplete());
|
||||||
.then((value) => _onDownloadComplete());
|
_manifestDownloadProcess = CancelableOperation.fromFuture(future);
|
||||||
} catch (exception, stackTrace) {
|
} catch (exception, stackTrace) {
|
||||||
_onDownloadError(exception, stackTrace);
|
_onDownloadError(exception, stackTrace);
|
||||||
}
|
}
|
||||||
@@ -145,7 +145,7 @@ class _AddServerVersionState extends State<AddServerVersion> {
|
|||||||
setState(() => _status = DownloadStatus.extracting);
|
setState(() => _status = DownloadStatus.extracting);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onDownloadComplete() {
|
Future<void> _onDownloadComplete() async {
|
||||||
if (!mounted) {
|
if (!mounted) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -160,6 +160,7 @@ class _AddServerVersionState extends State<AddServerVersion> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void _onDownloadError(Object? error, StackTrace? stackTrace) {
|
void _onDownloadError(Object? error, StackTrace? stackTrace) {
|
||||||
|
print("Error");
|
||||||
if (!mounted) {
|
if (!mounted) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -183,59 +184,78 @@ class _AddServerVersionState extends State<AddServerVersion> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
Padding _createExtractingBody() {
|
Widget _createDownloadBody() => Column(
|
||||||
return Padding(
|
mainAxisSize: MainAxisSize.min,
|
||||||
padding: const EdgeInsets.only(bottom: 16),
|
children: [
|
||||||
child: InfoLabel(
|
Align(
|
||||||
label: "Extracting...",
|
alignment: Alignment.centerLeft,
|
||||||
child: const SizedBox(width: double.infinity, child: ProgressBar())),
|
child: Text(
|
||||||
);
|
"Downloading...",
|
||||||
}
|
style: FluentTheme.maybeOf(context)?.typography.body,
|
||||||
|
textAlign: TextAlign.start,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
Widget _createDownloadBody() {
|
const SizedBox(
|
||||||
return Column(
|
height: 8.0,
|
||||||
mainAxisSize: MainAxisSize.min,
|
),
|
||||||
children: [
|
|
||||||
Align(
|
|
||||||
alignment: Alignment.centerLeft,
|
|
||||||
child: Text(
|
|
||||||
"Downloading...",
|
|
||||||
style: FluentTheme.maybeOf(context)?.typography.body,
|
|
||||||
textAlign: TextAlign.start,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
const SizedBox(
|
|
||||||
height: 8,
|
|
||||||
),
|
|
||||||
|
|
||||||
Row(
|
Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
children: [
|
children: [
|
||||||
Text(
|
Text(
|
||||||
"${_downloadProgress.round()}%",
|
"${_downloadProgress.round()}%",
|
||||||
style: FluentTheme.maybeOf(context)?.typography.body,
|
style: FluentTheme.maybeOf(context)?.typography.body,
|
||||||
),
|
),
|
||||||
|
|
||||||
Text(
|
Text(
|
||||||
"Time left: $_timeLeft",
|
"Time left: $_timeLeft",
|
||||||
style: FluentTheme.maybeOf(context)?.typography.body,
|
style: FluentTheme.maybeOf(context)?.typography.body,
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
|
||||||
const SizedBox(
|
const SizedBox(
|
||||||
height: 8,
|
height: 8.0,
|
||||||
),
|
),
|
||||||
|
|
||||||
SizedBox(
|
SizedBox(
|
||||||
width: double.infinity,
|
width: double.infinity,
|
||||||
child: ProgressBar(value: _downloadProgress.toDouble())),
|
child: ProgressBar(value: _downloadProgress.toDouble())
|
||||||
const SizedBox(
|
),
|
||||||
height: 16,
|
|
||||||
)
|
const SizedBox(
|
||||||
],
|
height: 8.0,
|
||||||
);
|
)
|
||||||
}
|
],
|
||||||
|
);
|
||||||
|
|
||||||
|
Widget _createExtractingBody() => Column(
|
||||||
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
children: [
|
||||||
|
Align(
|
||||||
|
alignment: Alignment.centerLeft,
|
||||||
|
child: Text(
|
||||||
|
"Extracting...",
|
||||||
|
style: FluentTheme.maybeOf(context)?.typography.body,
|
||||||
|
textAlign: TextAlign.start,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
|
||||||
|
const SizedBox(
|
||||||
|
height: 8.0,
|
||||||
|
),
|
||||||
|
|
||||||
|
const SizedBox(
|
||||||
|
width: double.infinity,
|
||||||
|
child: ProgressBar()
|
||||||
|
),
|
||||||
|
|
||||||
|
const SizedBox(
|
||||||
|
height: 8.0,
|
||||||
|
)
|
||||||
|
],
|
||||||
|
);
|
||||||
|
|
||||||
Widget _createFormDialog() {
|
Widget _createFormDialog() {
|
||||||
return FutureBuilder(
|
return FutureBuilder(
|
||||||
@@ -265,21 +285,19 @@ class _AddServerVersionState extends State<AddServerVersion> {
|
|||||||
Widget _createFormBody() {
|
Widget _createFormBody() {
|
||||||
return Column(
|
return Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
const BuildSelector(),
|
const BuildSelector(),
|
||||||
const SizedBox(height: 16.0),
|
const SizedBox(height: 20.0),
|
||||||
VersionNameInput(controller: _nameController),
|
VersionNameInput(controller: _nameController),
|
||||||
const SizedBox(height: 16.0),
|
|
||||||
FileSelector(
|
FileSelector(
|
||||||
|
label: "Path",
|
||||||
placeholder: "Type the download destination",
|
placeholder: "Type the download destination",
|
||||||
windowTitle: "Select download destination",
|
windowTitle: "Select download destination",
|
||||||
controller: _pathController,
|
controller: _pathController,
|
||||||
validator: checkDownloadDestination,
|
validator: checkDownloadDestination,
|
||||||
folder: true
|
folder: true
|
||||||
),
|
),
|
||||||
const SizedBox(height: 8.0),
|
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,7 @@ import 'package:bitsdojo_window/bitsdojo_window.dart';
|
|||||||
import 'package:clipboard/clipboard.dart';
|
import 'package:clipboard/clipboard.dart';
|
||||||
import 'package:fluent_ui/fluent_ui.dart';
|
import 'package:fluent_ui/fluent_ui.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:reboot_launcher/src/dialog/snackbar.dart';
|
import 'package:reboot_launcher/src/ui/dialog/snackbar.dart';
|
||||||
|
|
||||||
import 'dialog_button.dart';
|
import 'dialog_button.dart';
|
||||||
|
|
||||||
@@ -1,8 +1,8 @@
|
|||||||
import 'package:fluent_ui/fluent_ui.dart';
|
import 'package:fluent_ui/fluent_ui.dart';
|
||||||
import 'package:reboot_launcher/src/dialog/dialog.dart';
|
|
||||||
import 'package:reboot_launcher/src/model/fortnite_version.dart';
|
import 'package:reboot_launcher/src/model/fortnite_version.dart';
|
||||||
|
|
||||||
import '../../main.dart';
|
import '../../../main.dart';
|
||||||
|
import 'dialog.dart';
|
||||||
|
|
||||||
const String _unsupportedServerError = "The build you are currently using is not supported by Reboot. "
|
const String _unsupportedServerError = "The build you are currently using is not supported by Reboot. "
|
||||||
"This means that you cannot currently host this version of the game. "
|
"This means that you cannot currently host this version of the game. "
|
||||||
@@ -1,32 +1,30 @@
|
|||||||
import 'package:fluent_ui/fluent_ui.dart';
|
import 'package:fluent_ui/fluent_ui.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
|
||||||
import 'package:get/get.dart';
|
|
||||||
import 'package:reboot_launcher/src/controller/server_controller.dart';
|
|
||||||
import 'package:reboot_launcher/src/controller/settings_controller.dart';
|
|
||||||
import 'package:reboot_launcher/src/dialog/dialog.dart';
|
|
||||||
import 'package:reboot_launcher/src/dialog/dialog_button.dart';
|
|
||||||
import 'package:reboot_launcher/src/dialog/snackbar.dart';
|
|
||||||
import 'package:reboot_launcher/src/model/server_type.dart';
|
import 'package:reboot_launcher/src/model/server_type.dart';
|
||||||
import 'package:reboot_launcher/src/util/os.dart';
|
import 'package:reboot_launcher/src/util/os.dart';
|
||||||
|
import 'package:reboot_launcher/src/ui/dialog/snackbar.dart';
|
||||||
import 'package:sync/semaphore.dart';
|
import 'package:sync/semaphore.dart';
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
import '../../main.dart';
|
import '../../../main.dart';
|
||||||
import '../util/server.dart';
|
import '../../util/server.dart';
|
||||||
|
import '../controller/server_controller.dart';
|
||||||
|
import 'dialog.dart';
|
||||||
|
import 'dialog_button.dart';
|
||||||
|
|
||||||
extension ServerControllerDialog on ServerController {
|
extension ServerControllerDialog on ServerController {
|
||||||
static Semaphore semaphore = Semaphore();
|
static Semaphore semaphore = Semaphore();
|
||||||
|
|
||||||
Future<bool> restart() async {
|
Future<bool> restart(bool closeLocalPromptAutomatically) async {
|
||||||
await resetWinNat();
|
await resetWinNat();
|
||||||
return (!started() || await stop()) && await toggle();
|
return (!started() || await stop()) && await toggle(closeLocalPromptAutomatically);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<bool> toggle() async {
|
Future<bool> toggle(bool closeLocalPromptAutomatically) async {
|
||||||
try{
|
try{
|
||||||
semaphore.acquire();
|
semaphore.acquire();
|
||||||
if (type() == ServerType.local) {
|
if (type() == ServerType.local) {
|
||||||
return _pingSelfInteractive();
|
return _pingSelfInteractive(closeLocalPromptAutomatically);
|
||||||
}
|
}
|
||||||
|
|
||||||
var result = await _toggle();
|
var result = await _toggle();
|
||||||
@@ -35,7 +33,7 @@ extension ServerControllerDialog on ServerController {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var ping = await _pingSelfInteractive();
|
var ping = await _pingSelfInteractive(true);
|
||||||
if(!ping){
|
if(!ping){
|
||||||
started.value = false;
|
started.value = false;
|
||||||
return false;
|
return false;
|
||||||
@@ -79,7 +77,7 @@ extension ServerControllerDialog on ServerController {
|
|||||||
try{
|
try{
|
||||||
switch(type()){
|
switch(type()){
|
||||||
case ServerType.embedded:
|
case ServerType.embedded:
|
||||||
startServer();
|
startServer(detached());
|
||||||
break;
|
break;
|
||||||
case ServerType.remote:
|
case ServerType.remote:
|
||||||
var uriResult = await _pingRemoteInteractive();
|
var uriResult = await _pingRemoteInteractive();
|
||||||
@@ -166,15 +164,27 @@ extension ServerControllerDialog on ServerController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<bool> _pingSelfInteractive() async {
|
Future<bool> _pingSelfInteractive(bool closeAutomatically) async {
|
||||||
try {
|
try {
|
||||||
var resultFuture = compute(pingSelf, port.text)
|
Future<bool> ping() async {
|
||||||
.then((value) => value != null);
|
for(var i = 0; i < 3; i++){
|
||||||
await showDialog<bool>(
|
var result = await pingSelf(port.text);
|
||||||
|
if(result != null){
|
||||||
|
return true;
|
||||||
|
}else {
|
||||||
|
await Future.delayed(const Duration(seconds: 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
var future = _waitFutureOrTime(ping());
|
||||||
|
var result = await showDialog<bool>(
|
||||||
context: appKey.currentContext!,
|
context: appKey.currentContext!,
|
||||||
builder: (context) =>
|
builder: (context) =>
|
||||||
FutureBuilderDialog(
|
FutureBuilderDialog(
|
||||||
future: _waitFutureOrTime(resultFuture),
|
future: future,
|
||||||
loadingMessage: "Pinging ${type().id} server...",
|
loadingMessage: "Pinging ${type().id} server...",
|
||||||
successfulBody: FutureBuilderDialog.ofMessage(
|
successfulBody: FutureBuilderDialog.ofMessage(
|
||||||
"The ${type().id} server works correctly"),
|
"The ${type().id} server works correctly"),
|
||||||
@@ -182,10 +192,10 @@ extension ServerControllerDialog on ServerController {
|
|||||||
"The ${type().id} server doesn't work. Check the backend tab for misconfigurations and try again."),
|
"The ${type().id} server doesn't work. Check the backend tab for misconfigurations and try again."),
|
||||||
errorMessageBuilder: (
|
errorMessageBuilder: (
|
||||||
exception) => "An error occurred while pining the ${type().id} server: $exception",
|
exception) => "An error occurred while pining the ${type().id} server: $exception",
|
||||||
closeAutomatically: true
|
closeAutomatically: closeAutomatically
|
||||||
)
|
)
|
||||||
);
|
) ?? false;
|
||||||
return await resultFuture;
|
return result && await future;
|
||||||
} catch (_) {
|
} catch (_) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -193,12 +203,14 @@ extension ServerControllerDialog on ServerController {
|
|||||||
|
|
||||||
Future<Uri?> _pingRemoteInteractive() async {
|
Future<Uri?> _pingRemoteInteractive() async {
|
||||||
try {
|
try {
|
||||||
var mainFuture = ping(host.text, port.text);
|
var mainFuture = ping(host.text, port.text).then((value) => value != null);
|
||||||
await showDialog<bool>(
|
var future = _waitFutureOrTime(mainFuture);
|
||||||
|
var result = await showDialog<bool>(
|
||||||
context: appKey.currentContext!,
|
context: appKey.currentContext!,
|
||||||
builder: (context) =>
|
builder: (context) =>
|
||||||
FutureBuilderDialog(
|
FutureBuilderDialog(
|
||||||
future: _waitFutureOrTime(mainFuture.then((value) => value != null)),
|
future: future,
|
||||||
|
closeAutomatically: false,
|
||||||
loadingMessage: "Pinging remote server...",
|
loadingMessage: "Pinging remote server...",
|
||||||
successfulBody: FutureBuilderDialog.ofMessage(
|
successfulBody: FutureBuilderDialog.ofMessage(
|
||||||
"The server at ${host.text}:${port
|
"The server at ${host.text}:${port
|
||||||
@@ -209,7 +221,7 @@ extension ServerControllerDialog on ServerController {
|
|||||||
errorMessageBuilder: (exception) => "An error occurred while pining the server: $exception"
|
errorMessageBuilder: (exception) => "An error occurred while pining the server: $exception"
|
||||||
)
|
)
|
||||||
) ?? false;
|
) ?? false;
|
||||||
return await mainFuture;
|
return result ? await future : null;
|
||||||
} catch (_) {
|
} catch (_) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -259,60 +271,48 @@ extension ServerControllerDialog on ServerController {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void showUnexpectedServerError() {
|
void showUnexpectedServerError() => showDialog(
|
||||||
showDialog(
|
context: appKey.currentContext!,
|
||||||
context: appKey.currentContext!,
|
builder: (context) => InfoDialog(
|
||||||
builder: (context) => InfoDialog(
|
text: "The backend server died unexpectedly",
|
||||||
text: "The backend server died unexpectedly",
|
buttons: [
|
||||||
buttons: [
|
DialogButton(
|
||||||
DialogButton(
|
text: "Close",
|
||||||
text: "Close",
|
type: ButtonType.secondary,
|
||||||
type: ButtonType.secondary,
|
onTap: () => Navigator.of(context).pop(),
|
||||||
onTap: () => Navigator.of(context).pop(),
|
),
|
||||||
),
|
|
||||||
|
|
||||||
DialogButton(
|
DialogButton(
|
||||||
text: "Open log",
|
text: "Open log",
|
||||||
type: ButtonType.primary,
|
type: ButtonType.primary,
|
||||||
onTap: () {
|
onTap: () {
|
||||||
launchUrl(serverLogFile.uri);
|
if(serverLogFile.existsSync()){
|
||||||
|
showMessage("No log is available");
|
||||||
|
}else {
|
||||||
|
launchUrl(serverLogFile.uri);
|
||||||
|
}
|
||||||
Navigator.of(context).pop();
|
Navigator.of(context).pop();
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
|
||||||
|
|
||||||
void _showIllegalPortError() {
|
void _showIllegalPortError() => showMessage("Illegal port for backend server, use only numbers");
|
||||||
showMessage("Illegal port for backend server, use only numbers");
|
|
||||||
}
|
|
||||||
|
|
||||||
void _showMissingPortError() {
|
void _showMissingPortError() => showMessage("Missing port for backend server");
|
||||||
showMessage("Missing port for backend server");
|
|
||||||
}
|
|
||||||
|
|
||||||
void _showMissingHostError() {
|
void _showMissingHostError() => showMessage("Missing the host name for backend server");
|
||||||
showMessage("Missing the host name for backend server");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<Object?> _showUnknownError(ServerResult result) {
|
Future<Object?> _showUnknownError(ServerResult result) => showDialog(
|
||||||
return showDialog(
|
context: appKey.currentContext!,
|
||||||
context: appKey.currentContext!,
|
builder: (context) =>
|
||||||
builder: (context) =>
|
ErrorDialog(
|
||||||
ErrorDialog(
|
exception: result.error ?? Exception("Unknown error"),
|
||||||
exception: result.error ?? Exception("Unknown error"),
|
stackTrace: result.stackTrace,
|
||||||
stackTrace: result.stackTrace,
|
errorMessageBuilder: (exception) => "Cannot start the backend: an unknown error occurred"
|
||||||
errorMessageBuilder: (exception) => "Cannot start the backend: an unknown error occurred"
|
)
|
||||||
)
|
);
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<dynamic> _waitFutureOrTime(Future<bool> resultFuture) {
|
Future<dynamic> _waitFutureOrTime(Future<bool> resultFuture) => Future.wait<bool>([resultFuture, Future.delayed(const Duration(seconds: 1)).then((value) => true)]).then((value) => value.reduce((f, s) => f && s));
|
||||||
return Future.wait<bool>([
|
|
||||||
resultFuture,
|
|
||||||
Future.delayed(const Duration(seconds: 1))
|
|
||||||
.then((value) => true)
|
|
||||||
]).then((value) => value.reduce((f, s) => f && s));
|
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
import 'package:fluent_ui/fluent_ui.dart';
|
import 'package:fluent_ui/fluent_ui.dart';
|
||||||
|
|
||||||
import '../../main.dart';
|
import '../../../main.dart';
|
||||||
import '../page/home_page.dart';
|
|
||||||
|
|
||||||
void showMessage(String text){
|
void showMessage(String text){
|
||||||
showSnackbar(
|
showSnackbar(
|
||||||
@@ -2,21 +2,16 @@ import 'package:bitsdojo_window/bitsdojo_window.dart' hide WindowBorder;
|
|||||||
import 'package:fluent_ui/fluent_ui.dart';
|
import 'package:fluent_ui/fluent_ui.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
import 'package:get/get_rx/src/rx_types/rx_types.dart';
|
import 'package:get/get_rx/src/rx_types/rx_types.dart';
|
||||||
import 'package:reboot_launcher/src/controller/game_controller.dart';
|
|
||||||
import 'package:reboot_launcher/src/controller/server_controller.dart';
|
|
||||||
import 'package:reboot_launcher/src/dialog/dialog.dart';
|
|
||||||
import 'package:reboot_launcher/src/dialog/dialog_button.dart';
|
|
||||||
import 'package:reboot_launcher/src/model/game_type.dart';
|
|
||||||
import 'package:reboot_launcher/src/page/settings_page.dart';
|
|
||||||
import 'package:reboot_launcher/src/page/launcher_page.dart';
|
|
||||||
import 'package:reboot_launcher/src/page/server_page.dart';
|
|
||||||
import 'package:reboot_launcher/src/util/os.dart';
|
import 'package:reboot_launcher/src/util/os.dart';
|
||||||
import 'package:reboot_launcher/src/widget/os/window_border.dart';
|
import 'package:reboot_launcher/src/ui/page/launcher_page.dart';
|
||||||
import 'package:reboot_launcher/src/widget/os/window_buttons.dart';
|
import 'package:reboot_launcher/src/ui/page/server_page.dart';
|
||||||
|
import 'package:reboot_launcher/src/ui/page/settings_page.dart';
|
||||||
import 'package:window_manager/window_manager.dart';
|
import 'package:window_manager/window_manager.dart';
|
||||||
|
|
||||||
import '../controller/settings_controller.dart';
|
import '../controller/settings_controller.dart';
|
||||||
import '../model/server_type.dart';
|
import '../widget/os/window_border.dart';
|
||||||
|
import '../widget/os/window_buttons.dart';
|
||||||
|
import 'hosting_page.dart';
|
||||||
import 'info_page.dart';
|
import 'info_page.dart';
|
||||||
|
|
||||||
class HomePage extends StatefulWidget {
|
class HomePage extends StatefulWidget {
|
||||||
@@ -29,9 +24,7 @@ class HomePage extends StatefulWidget {
|
|||||||
class _HomePageState extends State<HomePage> with WindowListener {
|
class _HomePageState extends State<HomePage> with WindowListener {
|
||||||
static const double _defaultPadding = 12.0;
|
static const double _defaultPadding = 12.0;
|
||||||
|
|
||||||
final GameController _gameController = Get.find<GameController>();
|
|
||||||
final SettingsController _settingsController = Get.find<SettingsController>();
|
final SettingsController _settingsController = Get.find<SettingsController>();
|
||||||
final ServerController _serverController = Get.find<ServerController>();
|
|
||||||
|
|
||||||
final GlobalKey _searchKey = GlobalKey();
|
final GlobalKey _searchKey = GlobalKey();
|
||||||
final FocusNode _searchFocusNode = FocusNode();
|
final FocusNode _searchFocusNode = FocusNode();
|
||||||
@@ -39,8 +32,8 @@ class _HomePageState extends State<HomePage> with WindowListener {
|
|||||||
final Rxn<List<NavigationPaneItem>> _searchItems = Rxn();
|
final Rxn<List<NavigationPaneItem>> _searchItems = Rxn();
|
||||||
final RxBool _focused = RxBool(true);
|
final RxBool _focused = RxBool(true);
|
||||||
final RxInt _index = RxInt(0);
|
final RxInt _index = RxInt(0);
|
||||||
bool _navigated = false;
|
final RxBool _nestedNavigation = RxBool(false);
|
||||||
bool _shouldMaximize = false;
|
final GlobalKey<NavigatorState> _settingsNavigatorKey = GlobalKey();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
@@ -91,35 +84,6 @@ class _HomePageState extends State<HomePage> with WindowListener {
|
|||||||
super.onWindowMoved();
|
super.onWindowMoved();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
|
||||||
void onWindowClose() async {
|
|
||||||
if(!_gameController.started() || !_serverController.started()) {
|
|
||||||
windowManager.destroy();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
showDialog(
|
|
||||||
context: context,
|
|
||||||
builder: (_) {
|
|
||||||
return InfoDialog(
|
|
||||||
text: "Closing the launcher while a backend is running may make the game not work correctly. Are you sure you want to proceed?",
|
|
||||||
buttons: [
|
|
||||||
DialogButton(
|
|
||||||
type: ButtonType.secondary,
|
|
||||||
text: "Don't close",
|
|
||||||
),
|
|
||||||
|
|
||||||
DialogButton(
|
|
||||||
type: ButtonType.primary,
|
|
||||||
onTap: () => windowManager.destroy(),
|
|
||||||
text: "Close",
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => Obx(() => Stack(
|
Widget build(BuildContext context) => Obx(() => Stack(
|
||||||
children: [
|
children: [
|
||||||
@@ -130,7 +94,8 @@ class _HomePageState extends State<HomePage> with WindowListener {
|
|||||||
),
|
),
|
||||||
appBar: NavigationAppBar(
|
appBar: NavigationAppBar(
|
||||||
title: _draggableArea,
|
title: _draggableArea,
|
||||||
actions: WindowTitleBar(focused: _focused())
|
actions: WindowTitleBar(focused: _focused()),
|
||||||
|
leading: _backButton
|
||||||
),
|
),
|
||||||
pane: NavigationPane(
|
pane: NavigationPane(
|
||||||
selected: _selectedIndex,
|
selected: _selectedIndex,
|
||||||
@@ -149,11 +114,34 @@ class _HomePageState extends State<HomePage> with WindowListener {
|
|||||||
]
|
]
|
||||||
));
|
));
|
||||||
|
|
||||||
void _onIndexChanged(int index) {
|
Widget get _backButton => Obx(() {
|
||||||
_index.value = index;
|
// ignore: unused_local_variable
|
||||||
_navigated = true;
|
var ignored = _nestedNavigation.value;
|
||||||
|
return PaneItem(
|
||||||
|
icon: const Icon(FluentIcons.back, size: 14.0),
|
||||||
|
body: const SizedBox.shrink(),
|
||||||
|
).build(
|
||||||
|
context,
|
||||||
|
false,
|
||||||
|
_onBack(),
|
||||||
|
displayMode: PaneDisplayMode.compact
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
void Function()? _onBack() {
|
||||||
|
var navigator = _settingsNavigatorKey.currentState;
|
||||||
|
if(navigator == null || !navigator.mounted || !navigator.canPop()){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
return () async {
|
||||||
|
Navigator.pop(navigator.context);
|
||||||
|
_nestedNavigation.value = false;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _onIndexChanged(int index) => _index.value = index;
|
||||||
|
|
||||||
TextBox get _autoSuggestBox => TextBox(
|
TextBox get _autoSuggestBox => TextBox(
|
||||||
key: _searchKey,
|
key: _searchKey,
|
||||||
controller: _searchController,
|
controller: _searchController,
|
||||||
@@ -162,15 +150,7 @@ class _HomePageState extends State<HomePage> with WindowListener {
|
|||||||
);
|
);
|
||||||
|
|
||||||
GestureDetector get _draggableArea => GestureDetector(
|
GestureDetector get _draggableArea => GestureDetector(
|
||||||
onDoubleTap: () {
|
onDoubleTap: () => appWindow.maximizeOrRestore(),
|
||||||
if(!_shouldMaximize){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
appWindow.maximizeOrRestore();
|
|
||||||
_shouldMaximize = false;
|
|
||||||
},
|
|
||||||
onDoubleTapDown: (details) => _shouldMaximize = true,
|
|
||||||
onHorizontalDragStart: (event) => appWindow.startDragging(),
|
onHorizontalDragStart: (event) => appWindow.startDragging(),
|
||||||
onVerticalDragStart: (event) => appWindow.startDragging()
|
onVerticalDragStart: (event) => appWindow.startDragging()
|
||||||
);
|
);
|
||||||
@@ -205,32 +185,29 @@ class _HomePageState extends State<HomePage> with WindowListener {
|
|||||||
|
|
||||||
List<NavigationPaneItem> get _items => _searchItems() ?? [
|
List<NavigationPaneItem> get _items => _searchItems() ?? [
|
||||||
PaneItem(
|
PaneItem(
|
||||||
title: const Text("Home"),
|
title: const Text("Play"),
|
||||||
icon: const Icon(FluentIcons.game),
|
icon: const Icon(FluentIcons.game),
|
||||||
body: const LauncherPage()
|
body: const LauncherPage()
|
||||||
),
|
),
|
||||||
|
|
||||||
|
PaneItem(
|
||||||
|
title: const Text("Host"),
|
||||||
|
icon: const Icon(FluentIcons.server_processes),
|
||||||
|
body: const HostingPage()
|
||||||
|
),
|
||||||
|
|
||||||
PaneItem(
|
PaneItem(
|
||||||
title: const Text("Backend"),
|
title: const Text("Backend"),
|
||||||
icon: const Icon(FluentIcons.server_enviroment),
|
icon: const Icon(FluentIcons.user_window),
|
||||||
body: ServerPage()
|
body: ServerPage()
|
||||||
),
|
),
|
||||||
|
|
||||||
PaneItem(
|
PaneItem(
|
||||||
title: const Text("Tutorial"),
|
title: const Text("Tutorial"),
|
||||||
icon: const Icon(FluentIcons.info),
|
icon: const Icon(FluentIcons.info),
|
||||||
body: const InfoPage(),
|
body: InfoPage(_settingsNavigatorKey, _nestedNavigation)
|
||||||
onTap: _onTutorial
|
|
||||||
),
|
),
|
||||||
];
|
];
|
||||||
|
|
||||||
void _onTutorial() {
|
|
||||||
if(!_navigated){
|
|
||||||
setState(() => _settingsController.scrollingDistance = 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
_navigated = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
String get searchValue => _searchController.text;
|
String get searchValue => _searchController.text;
|
||||||
}
|
}
|
||||||
105
lib/src/ui/page/hosting_page.dart
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
import 'package:fluent_ui/fluent_ui.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
|
import 'package:reboot_launcher/src/ui/controller/hosting_controller.dart';
|
||||||
|
import 'package:reboot_launcher/src/ui/widget/home/launch_button.dart';
|
||||||
|
import 'package:reboot_launcher/src/ui/widget/home/version_selector.dart';
|
||||||
|
import 'package:reboot_launcher/src/ui/widget/shared/setting_tile.dart';
|
||||||
|
|
||||||
|
|
||||||
|
class HostingPage extends StatefulWidget {
|
||||||
|
const HostingPage(
|
||||||
|
{Key? key})
|
||||||
|
: super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<HostingPage> createState() => _HostingPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _HostingPageState extends State<HostingPage> {
|
||||||
|
final HostingController _hostingController = Get.find<HostingController>();
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) => Column(
|
||||||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
mainAxisSize: MainAxisSize.max,
|
||||||
|
children: [
|
||||||
|
const SizedBox(
|
||||||
|
width: double.infinity,
|
||||||
|
child: InfoBar(
|
||||||
|
title: Text("A window will pop up after the game server is started to modify its in-game settings"),
|
||||||
|
severity: InfoBarSeverity.info
|
||||||
|
),
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 16.0
|
||||||
|
),
|
||||||
|
SettingTile(
|
||||||
|
title: "Game Server",
|
||||||
|
subtitle: "Provide basic information about your server",
|
||||||
|
expandedContentSpacing: 0,
|
||||||
|
expandedContent: [
|
||||||
|
SettingTile(
|
||||||
|
title: "Name",
|
||||||
|
subtitle: "The name of your game server",
|
||||||
|
isChild: true,
|
||||||
|
content: TextFormBox(
|
||||||
|
placeholder: "Name",
|
||||||
|
controller: _hostingController.name
|
||||||
|
)
|
||||||
|
),
|
||||||
|
SettingTile(
|
||||||
|
title: "Category",
|
||||||
|
subtitle: "The category of your game server",
|
||||||
|
isChild: true,
|
||||||
|
content: TextFormBox(
|
||||||
|
placeholder: "Category",
|
||||||
|
controller: _hostingController.category
|
||||||
|
)
|
||||||
|
),
|
||||||
|
SettingTile(
|
||||||
|
title: "Discoverable",
|
||||||
|
subtitle: "Make your server available to other players on the server browser",
|
||||||
|
isChild: true,
|
||||||
|
contentWidth: null,
|
||||||
|
content: Obx(() => ToggleSwitch(
|
||||||
|
checked: _hostingController.discoverable(),
|
||||||
|
onChanged: (value) => _hostingController.discoverable.value = value
|
||||||
|
))
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
const SizedBox(
|
||||||
|
height: 16.0,
|
||||||
|
),
|
||||||
|
SettingTile(
|
||||||
|
title: "Version",
|
||||||
|
subtitle: "Select the version of Fortnite you want to host",
|
||||||
|
content: const VersionSelector(),
|
||||||
|
expandedContent: [
|
||||||
|
SettingTile(
|
||||||
|
title: "Add a version from this PC's local storage",
|
||||||
|
subtitle: "Versions coming from your local disk are not guaranteed to work",
|
||||||
|
content: Button(
|
||||||
|
onPressed: () => VersionSelector.openAddDialog(context),
|
||||||
|
child: const Text("Add build"),
|
||||||
|
),
|
||||||
|
isChild: true
|
||||||
|
),
|
||||||
|
SettingTile(
|
||||||
|
title: "Download any version from the cloud",
|
||||||
|
subtitle: "A curated list of supported versions by Project Reboot",
|
||||||
|
content: Button(
|
||||||
|
onPressed: () => VersionSelector.openDownloadDialog(context),
|
||||||
|
child: const Text("Download"),
|
||||||
|
),
|
||||||
|
isChild: true
|
||||||
|
)
|
||||||
|
]
|
||||||
|
),
|
||||||
|
const Expanded(child: SizedBox()),
|
||||||
|
const LaunchButton(
|
||||||
|
host: true
|
||||||
|
)
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -1,12 +1,15 @@
|
|||||||
import 'package:fluent_ui/fluent_ui.dart';
|
import 'package:fluent_ui/fluent_ui.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:get/get.dart';
|
import 'package:get/get.dart';
|
||||||
|
import 'package:get_storage/get_storage.dart';
|
||||||
|
|
||||||
import '../controller/settings_controller.dart';
|
import '../controller/settings_controller.dart';
|
||||||
import '../widget/shared/fluent_card.dart';
|
import '../widget/shared/fluent_card.dart';
|
||||||
|
|
||||||
class InfoPage extends StatefulWidget {
|
class InfoPage extends StatefulWidget {
|
||||||
const InfoPage({Key? key}) : super(key: key);
|
final GlobalKey<NavigatorState> navigatorKey;
|
||||||
|
final RxBool nestedNavigation;
|
||||||
|
const InfoPage(this.navigatorKey, this.nestedNavigation, {Key? key}) : super(key: key);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<InfoPage> createState() => _InfoPageState();
|
State<InfoPage> createState() => _InfoPageState();
|
||||||
@@ -36,7 +39,6 @@ class _InfoPageState extends State<InfoPage> {
|
|||||||
"Once you are in game, click PLAY to enter in-game\n If this doesn't work open the Fortnite console by clicking the button above tab\n If nothing happens, make sure that your keyboard locale is set to English\n Type 'open TYPE_THE_IP' without the quotes, for example: open 85.182.12.1"
|
"Once you are in game, click PLAY to enter in-game\n If this doesn't work open the Fortnite console by clicking the button above tab\n If nothing happens, make sure that your keyboard locale is set to English\n Type 'open TYPE_THE_IP' without the quotes, for example: open 85.182.12.1"
|
||||||
];
|
];
|
||||||
|
|
||||||
final GlobalKey<NavigatorState> _navigatorKey = GlobalKey();
|
|
||||||
final SettingsController _settingsController = Get.find<SettingsController>();
|
final SettingsController _settingsController = Get.find<SettingsController>();
|
||||||
late final ScrollController _controller;
|
late final ScrollController _controller;
|
||||||
|
|
||||||
@@ -57,7 +59,7 @@ class _InfoPageState extends State<InfoPage> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) => Navigator(
|
Widget build(BuildContext context) => Navigator(
|
||||||
key: _navigatorKey,
|
key: widget.navigatorKey,
|
||||||
initialRoute: "home",
|
initialRoute: "home",
|
||||||
onGenerateRoute: (settings) {
|
onGenerateRoute: (settings) {
|
||||||
var screen = _createScreen(settings.name);
|
var screen = _createScreen(settings.name);
|
||||||
@@ -69,6 +71,8 @@ class _InfoPageState extends State<InfoPage> {
|
|||||||
);
|
);
|
||||||
|
|
||||||
Widget _createScreen(String? name) {
|
Widget _createScreen(String? name) {
|
||||||
|
WidgetsBinding.instance
|
||||||
|
.addPostFrameCallback((_) => widget.nestedNavigation.value = name != "home");
|
||||||
switch(name){
|
switch(name){
|
||||||
case "home":
|
case "home":
|
||||||
return _homeScreen;
|
return _homeScreen;
|
||||||
@@ -87,7 +91,7 @@ class _InfoPageState extends State<InfoPage> {
|
|||||||
_createCardWidget(
|
_createCardWidget(
|
||||||
text: "Play on someone else's server",
|
text: "Play on someone else's server",
|
||||||
description: "If one of your friends is hosting a game server, click here",
|
description: "If one of your friends is hosting a game server, click here",
|
||||||
onClick: () => _navigatorKey.currentState?.pushNamed("else")
|
onClick: () => widget.navigatorKey.currentState?.pushNamed("else")
|
||||||
),
|
),
|
||||||
|
|
||||||
const SizedBox(
|
const SizedBox(
|
||||||
@@ -97,7 +101,7 @@ class _InfoPageState extends State<InfoPage> {
|
|||||||
_createCardWidget(
|
_createCardWidget(
|
||||||
text: "Host your own server",
|
text: "Host your own server",
|
||||||
description: "If you want to create your own server to invite your friends or to play around by yourself, click here",
|
description: "If you want to create your own server to invite your friends or to play around by yourself, click here",
|
||||||
onClick: () => _navigatorKey.currentState?.pushNamed("own")
|
onClick: () => widget.navigatorKey.currentState?.pushNamed("own")
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||