diff --git a/src/endpoints/general.py b/src/endpoints/general.py index 0961129..a771e4b 100644 --- a/src/endpoints/general.py +++ b/src/endpoints/general.py @@ -17,44 +17,13 @@ def gamenews(): faction = request.args.get('faction') playerLevel = request.args.get('playerLevel') print("Responded to game news api call GET") - return jsonify({"data": [ - { - "Id": "1", - "MessageType": "Daily", - "IsOneTimeGameNews": False, - "ShouldQuitTheGame": False, - "OnlyForPlayersThatCompletedAtLeastOneMatch": False, - "RedirectMode": "None", - "EmbeddedBackgroundImage": "game/UI/ImageAssets/NewsAssets/GeneralAnnouncement_Large", - "EmbeddedInGameNewsBackgroundImage": "game/UI/ImageAssets/NewsAssets/ClosedAlphaWelcomeBanner", - "EmbeddedInGameNewsThumbnailImage": "game/UI/ImageAssets/NewsAssets/CrossPromo", - "FromDate": 1655511433, - "ToDate": 1718669833, - "Translations": [ - { - "Language": "EN", - "Body": "Test EN" - }, - { - "Language": "FR", - "Body": "Test Fr" - }, - { - "Language": "IT", - "Body": "Test IT" - }, - { - "Language": "ES", - "Body": "Test Es" - } - ] - } - ]}) + output = json.load(open(os.path.join(app.root_path, "json", "placeholders", "gamenews.json"), "r")) + return jsonify(output) except TimeoutError: print("Timeout error") return jsonify({"status": "error"}) except Exception as e: - logger.graylog_logger(level="error", handler="general-Game-News", message=f"Error in gamenews: {e}") + logger.graylog_logger(level="error", handler="general-Game-News", message=e) @app.route("/api/v1/config/VER_LATEST_CLIENT_DATA", methods=["GET"]) @@ -67,7 +36,7 @@ def config_ver_latest_client_data(): print("Timeout error") return jsonify({"status": "error"}) except Exception as e: - logger.graylog_logger(level="error", handler="general-ver-latest-data", message=f"Error in config_ver_latest_client_data: {e}") + logger.graylog_logger(level="error", handler="general-ver-latest-data", message=e) @app.route("/api/v1/utils/contentVersion/latest/", methods=["GET"]) @@ -81,7 +50,7 @@ def content_version_latest(version): print("Timeout error") return jsonify({"status": "error"}) except Exception as e: - logger.graylog_logger(level="error", handler="general-content-version", message=f"Error in content_version_latest: {e}") + logger.graylog_logger(level="error", handler="general-content-version", message=e) @app.route("/gameservers.dev", methods=["POST", "GET"]) @@ -95,7 +64,7 @@ def gameservers_dev(): print("Timeout error") return jsonify({"status": "error"}) except Exception as e: - logger.graylog_logger(level="error", handler="general-gameserver-dev", message=f"Error in gameservers_dev: {e}") + logger.graylog_logger(level="error", handler="general-gameserver-dev", message=e) @app.route("/gameservers.uat", methods=["POST"]) @@ -125,7 +94,7 @@ def gameservers_live(): print("Timeout error") return jsonify({"status": "error"}) except Exception as e: - logger.graylog_logger(level="error", handler="general-gameserver-dev", message=f"Error in gameservers_dev: {e}") + logger.graylog_logger(level="error", handler="general-gameserver-dev", message=e) @app.route("/api/v1/config/UseMirrorsMM_Steam", methods=["GET"]) # What is this even??? @@ -138,7 +107,7 @@ def config_use_mirrors_mm_steam(): print("Timeout error") return jsonify({"status": "error"}) except Exception as e: - logger.graylog_logger(level="error", handler="general-use-mirrors-mm-steam", message=f"Error in config_use_mirrors_mm_steam: {e}") + logger.graylog_logger(level="error", handler="general-use-mirrors-mm-steam", message=e) @app.route("/crashreport/unreal/CrashReporter/Ping", methods=["GET"]) @@ -151,7 +120,7 @@ def crashreporter_ping(): print("Timeout error") return jsonify({"status": "error"}) except Exception as e: - logger.graylog_logger(level="error", handler="general-crashreporter-ping", message=f"Error in crashreporter_ping: {e}") + logger.graylog_logger(level="error", handler="general-crashreporter-ping", message=e) @app.route("/tex", methods=["GET"]) @@ -163,7 +132,7 @@ def tex_get(): print("Timeout error") return jsonify({"status": "error"}) except Exception as e: - logger.graylog_logger(level="error", handler="general-tex", message=f"Error in tex_get: {e}") + logger.graylog_logger(level="error", handler="general-tex", message=e) @app.route('/favicon.ico') @@ -176,7 +145,7 @@ def favicon(): print("Timeout error") return jsonify({"status": "error"}) except Exception as e: - logger.graylog_logger(level="error", handler="general-favicon", message=f"Error in favicon: {e}") + logger.graylog_logger(level="error", handler="general-favicon", message=e) @app.route("/api/v1/healthcheck", methods=["GET"]) @@ -184,13 +153,13 @@ def healthcheck(): get_remote_ip() try: # return jsonify({"status": "success", "online": "true"}) - return jsonify({"PublicIp": "192.168.1.1", "KrakenVersion": "3.6.1", "Kraken": [{"Running": False, "Errors": {}}]}) + return jsonify({"Health": "Alive"}) # {"Health": "Alive"} except TimeoutError: print("Timeout error") return jsonify({"status": "error"}) except Exception as e: - logger.graylog_logger(level="error", handler="general-healthcheck", message=f"Error in healthcheck: {e}") + logger.graylog_logger(level="error", handler="general-healthcheck", message=e) @app.route("/api/v1/services/tex") @@ -206,7 +175,7 @@ def services_tex(): print("Timeout error") return jsonify({"status": "error"}) except Exception as e: - logger.graylog_logger(level="error", handler="general-services-tex", message=f"Error in services_tex: {e}") + logger.graylog_logger(level="error", handler="general-services-tex", message=e) @app.route("/api/v1/consent/eula2", methods=["PUT", "GET"]) @@ -234,7 +203,7 @@ def consent_eula(): else: return jsonify({"isGiven": False}) except Exception as e: - logger.graylog_logger(level="error", handler="general-consent-eula", message=f"Error in consent_eula: {e}") + logger.graylog_logger(level="error", handler="general-consent-eula", message=e) @app.route("/api/v1/consent/eula", methods=["GET"]) @@ -242,14 +211,13 @@ def consent_eula0(): get_remote_ip() try: print("Responded to consent eula api call GET") - return jsonify({"id": "eula", "language": ["de", "en", "es", "es-MX", "fr", "it", "ja", "ko", "nl", "pl", - "pt-BR", "ru", "sv", "th", "tr", "zh-Hans", "zh-Hant"], - "platform": ["steam", "xbox", "xsx", "switch", "grdk", "stadia"]}) # Don't know. Added as Placeholder. + output = json.load(open(os.path.join(app.root_path, "json", "eula.json"), "r")) + return jsonify(output) except TimeoutError: print("Timeout error") return jsonify({"status": "error"}) except Exception as e: - logger.graylog_logger(level="error", handler="general-consent-eula0", message=f"Error in consent_eula0: {e}") + logger.graylog_logger(level="error", handler="general-consent-eula0", message=e) @app.route("/api/v1/consent/privacyPolicy", methods=["GET"]) @@ -257,14 +225,13 @@ def privacy_policy(): get_remote_ip() try: print("Responded to consent privacyPolicy api call GET") - return jsonify({"id":"privacy","language":["de","en","es","es-MX","fr","it","ja","ko","nl","pl","pt-BR","ru", - "sv","th","tr","zh-Hans","zh-Hant"], - "platform":["steam","xbox","xsx","switch","grdk","ps4","ps5","stadia"]}) + output = json.load(open(os.path.join(app.root_path, "json", "eula.json"), "r")) + return jsonify(output) except TimeoutError: print("Timeout error") return jsonify({"status": "error"}) except Exception as e: - logger.graylog_logger(level="error", handler="general-privacy-policy", message=f"Error in consent_eula0: {e}") + logger.graylog_logger(level="error", handler="general-privacy-policy", message=e) @app.route("/file///", methods=["POST", "GET"]) @@ -299,16 +266,8 @@ def leaderboard_get_scores(): if request.method == "POST": print("Responded to leaderboard getScores api call POST") logger.graylog_logger(level="info", handler="general-leaderboard-get-scores", message=f"Leaderboard getScores: {request.get_json()}") - return jsonify({"TopScores":{"Scores":[{"playerID": "a-1-b-2", "PlayerName": "Hans", "Rank": 1, "Score": 10, "Percentile": 1}, - {"playerID": "a-2-b-2", "PlayerName": "Peter", "Rank": 2, "Score": 9, "Percentile": 2}, - {"playerID": "a-3-b-3", "PlayerName": "Lukas", "Rank": 3, "Score": 8, "Percentile": 3}, - {"playerID": "a-4-b-4", "PlayerName": "Jonas", "Rank": 4, "Score": 7, "Percentile": 4}, - {"playerID": "a-5-b-5", "PlayerName": "Mark", "Rank": 5, "Score": 6, "Percentile": 5}]}, - "PlayerScores": {"Scores":[{"playerID": "a-1-b-2", "PlayerName": "Hans", "Rank": 1, "Score": 10, "Percentile": 1}, - {"playerID": "a-2-b-2", "PlayerName": "Peter", "Rank": 2, "Score": 9, "Percentile": 2}, - {"playerID": "a-3-b-3", "PlayerName": "Lukas", "Rank": 3, "Score": 8, "Percentile": 3}, - {"playerID": "a-4-b-4", "PlayerName": "Jonas", "Rank": 4, "Score": 7, "Percentile": 4}, - {"playerID": "a-5-b-5", "PlayerName": "Mark", "Rank": 5, "Score": 6, "Percentile": 5}]}}) + data = json.load(open(os.path.join(app.root_path, "json", "placeholders", "leaderboard.json"), "r")) + return jsonify(data) else: try: print("Responded to leaderboard getScores api call GET") @@ -317,7 +276,7 @@ def leaderboard_get_scores(): print("Timeout error") return jsonify({"status": "error"}) except Exception as e: - logger.graylog_logger(level="error", handler="general-leaderboard-get-scores", message=f"Error in leaderboard_get_scores: {e}") + logger.graylog_logger(level="error", handler="general-leaderboard-get-scores", message=e) @app.route("/submit/", methods=["POST"]) diff --git a/src/endpoints/unknown.py b/src/endpoints/unknown.py index 8e36cfd..05d4a02 100644 --- a/src/endpoints/unknown.py +++ b/src/endpoints/unknown.py @@ -1,6 +1,4 @@ from flask_definitions import * -import json -import os # Do NOT change Result to ANYTHING or Add anything before it. Game will crash. Doesnt mean it 100% works tho XD @@ -9,7 +7,6 @@ def catalog_get(game_version): print("Game Version of Catalog: " + game_version) get_remote_ip() try: - # output = json.load(open(os.path.join(app.root_path, "catalog", game_version, "catalog.json"), "r")) output = json.load(open(os.path.join(app.root_path, "json", "catalog", game_version, "catalog.json"), "r")) return jsonify(output) @@ -21,5 +18,6 @@ def catalog_get(game_version): @app.errorhandler(404) -def debug_404(e): +def debug_404(): + logger.graylog_logger(level="error", handler="404-handler", message=f"Path: {request.path} Endpoint: {request.endpoint}") return jsonify({"message": "Endpoint not found"}), 404 diff --git a/src/endpoints/user_handeling.py b/src/endpoints/user_handeling.py index 910da48..2c246a4 100644 --- a/src/endpoints/user_handeling.py +++ b/src/endpoints/user_handeling.py @@ -1,3 +1,5 @@ +import time + from flask_definitions import * import requests from logic.mongodb_handler import mongo @@ -250,6 +252,7 @@ def progression_groups(): get_remote_ip() try: print("Responded to progression groups api call GET") + return jsonify({"ObjectId": "FSTRING", "Version": 11, "SchemaVersion": 11, "Data": {}}) return jsonify({"List": [{"ObjectId": "Runner.Sawbones", "SchemaVersion": 11111111, "Version": 11111111, @@ -274,15 +277,28 @@ def ban_status(): get_remote_ip() login_cookie = request.cookies.get("bhvrSession") try: - ban_data = mongo.get_data_with_list(login=login_cookie, login_steam=False, items={"is_banned", "ban_reason", "ban_start", "ban_expire"}, server=mongo_host, db=mongo_db, collection=mongo_collection) + time.sleep(0.5) + ban_data = mongo.get_data_with_list(login=login_cookie, login_steam=False, + items={"is_banned", "ban_reason", "ban_start", "ban_expire"}, + server=mongo_host, db=mongo_db, collection=mongo_collection) if ban_data == None: print("Error in ban_data_database") return jsonify({"status": "error"}) - return jsonify({"IsBanned": ban_data["is_banned"], "BanInfo": {"BanPeriod": 10, + elif ban_data["is_banned"] == True: + return jsonify({"IsBanned": ban_data["is_banned"], "BanInfo": {"BanPeriod": 10, "BanReason": ban_data["ban_reason"], "BanStart": ban_data["ban_start"], "BanEnd": ban_data["ban_expire"], - "Confirmed": True, "Pending": False}}) + "Confirmed": False, "Pending": False}}) + elif ban_data["is_banned"] == False: + return jsonify({"IsBanned": ban_data["is_banned"], "BanInfo": {"BanPeriod": 0, + "BanReason": "None", + "BanStart": 0, + "BanEnd": 0, + "Confirmed": False, "Pending": False}}) + else: + print("Error in ban_data_database") + return jsonify({"status": "error"}) except TimeoutError: print("Timeout error") return jsonify({"status": "error"}) @@ -386,11 +402,8 @@ def messages_list(): get_remote_ip() try: limit = request.args.get("limit") - return jsonify({"Messages": [{"Received": 1687192383, "Flag": "Reliable", "Message": - {"Title": "Message from the Rebirth Team.", "Body": "Welcome to Project Deathgarden Rebirth! The goal of " - "this Project is to rebuild the Deathgarden API. " - "For more Info visit our Github Repo!", "Claimable": [{}]}, "Tag": "Direct", "ExpireAt": 1787192383, - "Origin": "Warning", "RecipientId": "6969696969696969"}], "NetPage": "None"}) + output = json.load(open(os.path.join(app.root_path, "json", "placeholders", "messages.json"), "r")) + return jsonify(output) except TimeoutError: print("Timeout error") return jsonify({"status": "error"}) diff --git a/src/flask_definitions.py b/src/flask_definitions.py index 3575ca3..481f939 100644 --- a/src/flask_definitions.py +++ b/src/flask_definitions.py @@ -1,6 +1,8 @@ from flask import Flask, jsonify, request, send_from_directory, abort, render_template, url_for from logic.global_handlers import get_remote_ip, load_config from logic.logging_handler import logger +import json +import os app = Flask(__name__) diff --git a/src/json/catalog/te-18f25613-36778-ue4-374f864b/catalog.json b/src/json/catalog/te-18f25613-36778-ue4-374f864b/catalog.json index c294359..ccc04fd 100644 --- a/src/json/catalog/te-18f25613-36778-ue4-374f864b/catalog.json +++ b/src/json/catalog/te-18f25613-36778-ue4-374f864b/catalog.json @@ -6040,6 +6040,2243 @@ } ] } + }, + { + "Id":"759E44DD-469C2841-75C2D6A1-AB0B0FA7", + "DisplayName":"Runner_Dash_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost": { + "CurrencyId": 3, + "Price": 10 + }, + "MetaData": { + "BundleDiscountPercent": 69, + "MinPlayerLevel": 1, + "MinCharacterLevel": 1, + "Origin": "None", + "BundleItems": [ + "907E22C4-48D304A8-4147B19A-F958089E", + "18D077C2-4D7418C1-2CDE2297-CC661AF7", + "7B2C394F-46245407-23117D83-A6752CED", + "33E6325A-4E098D5D-47DBD48A-DE746024" + ], + "RewardBundleItems": [ + "907E22C4-48D304A8-4147B19A-F958089E", + "18D077C2-4D7418C1-2CDE2297-CC661AF7", + "7B2C394F-46245407-23117D83-A6752CED", + "33E6325A-4E098D5D-47DBD48A-DE746024" + ] + }, + "Faction": "Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Runner.Dash" + } + ], + "ParentTags":[ + { + "TagName":"Entity.Character" + } + ] + }, + "Gender": "Male" +}, + + + { + "Id":"B10CB7224F4BDF11444119B22D1AB381", + "DisplayName":"Scavenger_SMOKE_Vambrace_STR001_Bloodbeige_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyC", + "Price":1000 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Smoke" + } + ] + }, + "CustomizationGameplayTagByFaction": [ + "Runner", + { + "TagName": "Class.Runner" + } + ], + "Gender": "Male" + }, + + { + "Id":"92CC1AC0-4868D1F9-A99E6EA3-5BCDAD56", + "DisplayName":"Scavenger_Dash_Vambrace_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyA", + "Price":10 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Dash" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Dash" + } + ] + } + }, + { + "Id":"3D4A5A79-4DC103C0-54FB6EB5-83FEAF68", + "DisplayName":"Scavenger_Dash_Vambrace002_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyA", + "Price":10 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Dash" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Dash" + } + ] + } + }, + { + "Id":"915A26C6-4B1F2F76-534DC5A0-B3141749", + "DisplayName":"Scavenger_Dash_Vambrace002_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyA", + "Price":10 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Dash" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Dash" + } + ] + } + }, + { + "Id":"5846CD4A-4B6E464F-32723D84-87E11379", + "DisplayName":"Scavenger_DASH_Vambrace_STR001_GreenCammo_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":500 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Dash" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Dash" + } + ] + } + }, + { + "Id":"75318E84-4DF7BE0D-EFEFC6A3-39A76544", + "DisplayName":"Scavenger_DASH_Vambrace_STR001_Fluo01_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":750 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Dash" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Dash" + } + ] + } + }, + { + "Id":"07A39BEA-4A74DBA6-A1E09AAA-4B101EB7", + "DisplayName":"Scavenger_DASH_Vambrace_STR001_Angel_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":750 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Dash" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Dash" + } + ] + } + }, + { + "Id":"5D7EFE87-4FAE8D10-C38067A9-F861AA56", + "DisplayName":"Scavenger_DASH_Head_STR001_Black_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":500 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Dash" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Dash" + } + ] + } + }, + { + "Id":"040D3AC1-4C54057D-E570A2A2-A55801EF", + "DisplayName":"Scavenger_GHOST_Vambrace_STR001_Woodcammo_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":750 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Dash" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Dash" + } + ] + } + }, + { + "Id":"0743E9B4-4190283D-81A76480-701EB07E", + "DisplayName":"Scavenger_Fog_Vambrace_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyA", + "Price":10 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Smoke" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Smoke" + } + ] + } + }, + { + "Id":"33E6325A-4E098D5D-47DBD48A-DE746024", + "DisplayName":"Scavenger_Fog_Vambrace002_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyA", + "Price":10 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Smoke" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Smoke" + } + ] + } + }, + { + "Id":"E5010955-45F87E64-AAFC74A0-4F1CFF5B", + "DisplayName":"Scavenger_Pathfinder_Vambrace_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyA", + "Price":10 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Smoke" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Smoke" + } + ] + } + }, + { + "Id":"CC66E9B4-4329F1D7-718012AB-C3FB642D", + "DisplayName":"Scavenger_SMOKE_Vambrace_STR001_Surplus_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":750 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Smoke" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Smoke" + } + ] + } + }, + { + "Id":"B10CB722-4F4BDF11-444119B2-2D1AB381", + "DisplayName":"Scavenger_SMOKE_Vambrace_STR001_Bloodbeige_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":500 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Smoke" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Smoke" + } + ] + } + }, + { + "Id":"0750EEF6-4D7D37E1-3C18119E-F3890DD9", + "DisplayName":"Scavenger_SMOKE_Vambrace_STR001_Sienna_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":750 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Smoke" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Smoke" + } + ] + } + }, + { + "Id":"CC151AA3-4237A2D8-4DBD7EA5-DDB4C287", + "DisplayName":"Scavenger_SMOKE_Vambrace_STR001_Black_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":500 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Smoke" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Smoke" + } + ] + } + }, + { + "Id":"248D60AC-47F987E8-95AD65B7-22D8912B", + "DisplayName":"Scavenger_SMOKE_Vambrace_STR001_Winter01_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":750 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Smoke" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Smoke" + } + ] + } + }, + { + "Id":"0DC09EDD-42D7C884-D58C9E9A-6FE00CA5", + "DisplayName":"Scavenger_SMOKE_Vambrace_STR001_Longcoat_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":1250 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Smoke" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Smoke" + } + ] + } + }, + { + "Id":"E3C6E6BC-4B224BF0-EF414BB7-2A0EA7F4", + "DisplayName":"Scavenger_SMOKE_Vambrace_STR001_Lightcoat_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":1250 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Smoke" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Smoke" + } + ] + } + }, + { + "Id":"BE23A8F1-4E783C51-E662DCAD-D9AA76FF", + "DisplayName":"Scavenger_Ghost_Vambrace_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyA", + "Price":10 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ghost" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ghost" + } + ] + } + }, + { + "Id":"480C6E34-4376EAF9-C6572C83-DA1725F6", + "DisplayName":"Scavenger_GHOST_Vambrace_OR001_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyC", + "Price":2000 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ghost" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ghost" + } + ] + } + }, + { + "Id":"29625783-40E6FC73-9889BEB2-D9918BBA", + "DisplayName":"Scavenger_GHOST_Vambrace_OR002_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":2500 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ghost" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ghost" + } + ] + } + }, + { + "Id":"8F0011C4-4146ACD0-A6F0BCBB-44E368DB", + "DisplayName":"Scavenger_GHOST_Vambrace_OR003_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyC", + "Price":2000 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ghost" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ghost" + } + ] + } + }, + { + "Id":"970853F3-4E047E1D-445092B7-712D98C2", + "DisplayName":"Scavenger_Ghost_Vambrace002_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyA", + "Price":10 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ghost" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ghost" + } + ] + } + }, + { + "Id":"996F45A6-4E6E2E7B-2B72B9BA-BA86F86D", + "DisplayName":"Scavenger_Ghost_SuperNova_Vambrace_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyA", + "Price":10 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ghost" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ghost" + } + ] + } + }, + { + "Id":"17CB8A13-4E308E60-97D8CA91-4FE919DE", + "DisplayName":"Scavenger_GHOST_Vambrace_STR001_Cardinal_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":750 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ghost" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ghost" + } + ] + } + }, + { + "Id":"374A760E-428AAFD5-D99450AA-ECE052A2", + "DisplayName":"Scavenger_GHOST_Vambrace_STR001_Construction_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":750 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ghost" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ghost" + } + ] + } + }, + { + "Id":"EB37BD9E-42EA32C8-53F47099-23EC20B1", + "DisplayName":"Scavenger_GHOST_Vambrace_STR001_Black_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":500 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ghost" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ghost" + } + ] + } + }, + { + "Id":"51F76859-4F8CA371-4BF87A8C-F56FF9D9", + "DisplayName":"Scavenger_GHOST_Vambrace_STR001_Cerulean_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":500 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ghost" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ghost" + } + ] + } + }, + { + "Id":"0C76DE7F-4D1C0ADC-84E802A7-D71C7AA1", + "DisplayName":"Scavenger_GHOST_Vambrace_STR001_Mulberrygreen_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":750 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ghost" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ghost" + } + ] + } + }, + { + "Id":"540DB191-4938D04F-524DC985-0A325B21", + "DisplayName":"Scavenger_Inked_Vambrace_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyA", + "Price":10 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ink" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ink" + } + ] + } + }, + { + "Id":"10704A34-4BE021FB-82B92485-262FEB57", + "DisplayName":"Scavenger_Inked_Vambrace002_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyA", + "Price":10 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ink" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ink" + } + ] + } + }, + { + "Id":"8968BDBD-4AB5F701-7A446BB7-8416EB29", + "DisplayName":"Scavenger_Blockade_Vambrace_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyA", + "Price":10 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ink" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ink" + } + ] + } + }, + { + "Id":"2A08E143-44CA5E68-95E76CAF-8750B737", + "DisplayName":"Scavenger_Inked_Vambrace_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyA", + "Price":10 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ink" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ink" + } + ] + } + }, + { + "Id":"49FCCB5D-49AD7F5E-79639E80-2CA236C1", + "DisplayName":"Scavenger_Inked_Vambrace_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyA", + "Price":10 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ink" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ink" + } + ] + } + }, + { + "Id":"6EFB91B8-42CAD7BF-61F76D89-72AF9FE0", + "DisplayName":"Scavenger_INK_Vambrace_STR001_Surplus_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":750 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ink" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ink" + } + ] + } + }, + { + "Id":"724E0528-4D2CE2D9-A75583AC-C7087A79", + "DisplayName":"Scavenger_INK_Vambrace_STR001_Aquaperu_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":750 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ink" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ink" + } + ] + } + }, + { + "Id":"587F7BFF-490BFC4C-AD93489D-131F0520", + "DisplayName":"Scavenger_INK_Vambrace_STR001_Desert01_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":500 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ink" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ink" + } + ] + } + }, + { + "Id":"5BFE81D8-42FF85A4-23FC958C-2C04537F", + "DisplayName":"Scavenger_INK_Vambrace_STR001_Black_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":500 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ink" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ink" + } + ] + } + }, + { + "Id":"805CDB66-49EE1D43-A315AEA8-7CD0C29E", + "DisplayName":"Scavenger_INK_Vambrace_STR001_Winter01_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":750 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Ink" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Ink" + } + ] + } + }, + { + "Id":"AD900FC9-4C6608A4-F88E8B8A-87402F0F", + "DisplayName":"Scavenger_Sawbones_Vambrace_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyA", + "Price":10 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Sawbones" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Sawbones" + } + ] + } + }, + { + "Id":"BA9BED31-442755AC-D2FCD386-7501B22D", + "DisplayName":"Scavenger_SAWBONES_Vambrace_OR001_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":2500 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Sawbones" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Sawbones" + } + ] + } + }, + { + "Id":"1AB1CFA7-43D595B0-5A872F8F-DC6202D8", + "DisplayName":"Scavenger_SAWBONES_Vambrace_OR002_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyC", + "Price":2000 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Sawbones" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Sawbones" + } + ] + } + }, + { + "Id":"E7A22D4C-44FB3997-2A5E3685-7D0DF88A", + "DisplayName":"Scavenger_SAWBONES_Vambrace_OR003_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyC", + "Price":2000 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Sawbones" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Sawbones" + } + ] + } + }, + { + "Id":"5881CA7B-47C74C8D-15DAF09B-5860EBC9", + "DisplayName":"Scavenger_Sawbones_Vambrace002_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyA", + "Price":10 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Sawbones" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Sawbones" + } + ] + } + }, + { + "Id":"3EF7ED34-49B8EA4E-19BEDFBD-100B1DFA", + "DisplayName":"Scavenger_Sentinel_Vambrace_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyA", + "Price":10 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Sawbones" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Sawbones" + } + ] + } + }, + { + "Id":"9FC661AF-41D9A1EB-67B95B8B-1D0AEB01", + "DisplayName":"Scavenger_SAWBONES_Vambrace_STR001_Teal_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":750 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Sawbones" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Sawbones" + } + ] + } + }, + { + "Id":"D363B1AA-4B455ED5-585CA582-0DB8A9EA", + "DisplayName":"Scavenger_SAWBONES_Vambrace_STR001_Daliah_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":500 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Sawbones" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Sawbones" + } + ] + } + }, + { + "Id":"74C6A5E4-4C495542-5A7D0C9C-A95F45B8", + "DisplayName":"Scavenger_SAWBONES_Vambrace_STR001_Cammo_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":750 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Sawbones" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Sawbones" + } + ] + } + }, + { + "Id":"8F4355AF-4AFD5BA6-2A77F79C-320705E0", + "DisplayName":"Scavenger_SAWBONES_Vambrace_STR001_Black_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":750 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Sawbones" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Sawbones" + } + ] + } + }, + { + "Id":"86D9421E-48F35231-B9449592-1A9F3D68", + "DisplayName":"Scavenger_SAWBONES_Vambrace_STR001_Heliotrope_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":500 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Sawbones" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Sawbones" + } + ] + } + }, + { + "Id":"42224D73-4D8E6BE1-462D70AF-6F7B1372", + "DisplayName":"Scavenger_Switch_Mask003_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyA", + "Price":10 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Switch" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Switch" + } + ] + } + }, + { + "Id":"C619BC10-49C2C0FA-C3907A91-4FD26469", + "DisplayName":"Scavenger_Switch_Vambrace_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyA", + "Price":10 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Switch" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Switch" + } + ] + } + }, + { + "Id":"366AD9E0-44FC80BB-E29C348F-893D21F4", + "DisplayName":"Scavenger_Switch_Vambrace002_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"CurrencyA", + "Price":10 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Switch" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Switch" + } + ] + } + }, + { + "Id":"A3C93CBB-41722267-1807AC82-BA664088", + "DisplayName":"Scavenger_SUBAI_Vambrace_STR001_Muscat_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":500 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Switch" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Switch" + } + ] + } + }, + { + "Id":"8BFF72F7-4D836A8D-023714BE-A56E0948", + "DisplayName":"Scavenger_SUBAI_Vambrace_STR001_Candy_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":750 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Switch" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Switch" + } + ] + } + }, + { + "Id":"5C2934B0-4D7979EC-C6C8DBBF-215EAC2B", + "DisplayName":"Scavenger_SUBAI_Vambrace_STR001_Desert_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":500 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Switch" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Switch" + } + ] + } + }, + { + "Id":"B49CDB64-4728C011-70936792-70D0897A", + "DisplayName":"Scavenger_SUBAI_Vambrace_STR001_Black_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":500 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Switch" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Switch" + } + ] + } + }, + { + "Id":"FDD79243-418C1722-EC92DEA9-9316AD83", + "DisplayName":"Scavenger_SUBAI_Vambrace_STR001_Harlequin_NAME", + "Purchasable":true, + "Consumable":false, + "IsWeapon":false, + "InitialQuantity":1, + "DefaultCost":[ + { + "CurrencyId":"EGMCurrency::CurrencyB", + "Price":1000 + } + ], + "MetaData":{ + "GameplayTags":[ + { + "TagName":"Runner.Switch" + } + ], + "MinPlayerLevel":1, + "MinCharacterLevel":1, + "Origin":"None" + }, + "Faction":"Runner", + "GameplayTagContainer":{ + "GameplayTags":[ + { + "TagName":"Customization.RN.Character.Vambrace" + } + ], + "ParentTags":[ + { + "TagName":"Runner.Switch" + } + ] + } } ] } \ No newline at end of file diff --git a/src/json/eula.json b/src/json/eula.json new file mode 100644 index 0000000..280eecf --- /dev/null +++ b/src/json/eula.json @@ -0,0 +1,30 @@ +{ + "id":"eula", + "language":[ + "de", + "en", + "es", + "es-MX", + "fr", + "it", + "ja", + "ko", + "nl", + "pl", + "pt-BR", + "ru", + "sv", + "th", + "tr", + "zh-Hans", + "zh-Hant" + ], + "platform":[ + "steam", + "xbox", + "xsx", + "switch", + "grdk", + "stadia" + ] +} \ No newline at end of file diff --git a/src/json/placeholders/gamenews.json b/src/json/placeholders/gamenews.json new file mode 100644 index 0000000..43489bf --- /dev/null +++ b/src/json/placeholders/gamenews.json @@ -0,0 +1,35 @@ +{ + "data":[ + { + "Id":"1", + "MessageType":"Daily", + "IsOneTimeGameNews":false, + "ShouldQuitTheGame":false, + "OnlyForPlayersThatCompletedAtLeastOneMatch":false, + "RedirectMode":"None", + "EmbeddedBackgroundImage":"game/UI/ImageAssets/NewsAssets/GeneralAnnouncement_Large", + "EmbeddedInGameNewsBackgroundImage":"game/UI/ImageAssets/NewsAssets/ClosedAlphaWelcomeBanner", + "EmbeddedInGameNewsThumbnailImage":"game/UI/ImageAssets/NewsAssets/CrossPromo", + "FromDate":1655511433, + "ToDate":1718669833, + "Translations":[ + { + "Language":"EN", + "Body":"Test EN" + }, + { + "Language":"FR", + "Body":"Test Fr" + }, + { + "Language":"IT", + "Body":"Test IT" + }, + { + "Language":"ES", + "Body":"Test Es" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/json/placeholders/leaderboard.json b/src/json/placeholders/leaderboard.json new file mode 100644 index 0000000..5ba713d --- /dev/null +++ b/src/json/placeholders/leaderboard.json @@ -0,0 +1,80 @@ +{ + "TopScores":{ + "Scores":[ + { + "playerID":"a-1-b-2", + "PlayerName":"Hans", + "Rank":1, + "Score":10, + "Percentile":1 + }, + { + "playerID":"a-2-b-2", + "PlayerName":"Peter", + "Rank":2, + "Score":9, + "Percentile":2 + }, + { + "playerID":"a-3-b-3", + "PlayerName":"Lukas", + "Rank":3, + "Score":8, + "Percentile":3 + }, + { + "playerID":"a-4-b-4", + "PlayerName":"Jonas", + "Rank":4, + "Score":7, + "Percentile":4 + }, + { + "playerID":"a-5-b-5", + "PlayerName":"Mark", + "Rank":5, + "Score":6, + "Percentile":5 + } + ] + }, + "PlayerScores":{ + "Scores":[ + { + "playerID":"a-1-b-2", + "PlayerName":"Hans", + "Rank":1, + "Score":10, + "Percentile":1 + }, + { + "playerID":"a-2-b-2", + "PlayerName":"Peter", + "Rank":2, + "Score":9, + "Percentile":2 + }, + { + "playerID":"a-3-b-3", + "PlayerName":"Lukas", + "Rank":3, + "Score":8, + "Percentile":3 + }, + { + "playerID":"a-4-b-4", + "PlayerName":"Jonas", + "Rank":4, + "Score":7, + "Percentile":4 + }, + { + "playerID":"a-5-b-5", + "PlayerName":"Mark", + "Rank":5, + "Score":6, + "Percentile":5 + } + ] + } +} \ No newline at end of file diff --git a/src/json/placeholders/messages.json b/src/json/placeholders/messages.json new file mode 100644 index 0000000..67f7386 --- /dev/null +++ b/src/json/placeholders/messages.json @@ -0,0 +1,22 @@ +{ + "Messages":[ + { + "Received":1687192383, + "Flag":"Reliable", + "Message":{ + "Title":"Message from the Rebirth Team.", + "Body":"Welcome to Project Deathgarden Rebirth! The goal of this Project is to rebuild the Deathgarden API. For more Info visit our Github Repo!", + "Claimable":[ + { + + } + ] + }, + "Tag":"Direct", + "ExpireAt":1787192383, + "Origin":"Warning", + "RecipientId":"6969696969696969" + } + ], + "NetPage":"None" +}