mirror of
https://github.com/wolfswolke/DeathGarden_API_Rebirth.git
synced 2026-03-21 17:54:09 -05:00
new challenge_handler no errors
This commit is contained in:
parent
0726905329
commit
be20c267de
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -3,3 +3,4 @@ src/test/
|
|||
src/config/api_config.yaml
|
||||
important_stuff.txt
|
||||
*.pyc
|
||||
/src/app/tmp
|
||||
|
|
|
|||
|
|
@ -485,9 +485,9 @@ def challenges_get_challenges():
|
|||
response = request.get_json()
|
||||
challenge_type = sanitize_input(response["data"]["challengeType"])
|
||||
if challenge_type == "Weekly":
|
||||
return_data = new_challenge_handler.get_time_based_challenges(challenge_type="weekly", userid=userid)
|
||||
return_data = new_challenge_handler.get_time_based_challenges(challenge_type="Weekly", userid=userid)
|
||||
elif challenge_type == "Daily":
|
||||
return_data = new_challenge_handler.get_time_based_challenges(challenge_type="daily", userid=userid)
|
||||
return_data = new_challenge_handler.get_time_based_challenges(challenge_type="Daily", userid=userid)
|
||||
else:
|
||||
logger.graylog_logger(level="error", handler="getChallenges",
|
||||
message=f"Unknown challenge type {challenge_type}")
|
||||
|
|
@ -1422,10 +1422,26 @@ def challenges_get_challenge_progression_batch():
|
|||
challenge_ids = data["data"]["challengeIds"]
|
||||
challenge_list = []
|
||||
userid = data["data"]["userId"]
|
||||
|
||||
#moved this call to outside get_progression_batch to reduce the amount of database calls
|
||||
#change array to dict for quicker element access
|
||||
db_challenge = mongo.get_data_with_list(login=userid, login_steam=False, items={"challengeProgression"})[
|
||||
"challengeProgression"]
|
||||
db_challenge_dict = {}
|
||||
for challenge in db_challenge:
|
||||
#We do not want timestamp in our key otherwise duplicate weekly/daily challenges are created
|
||||
db_challenge_dict[challenge["challengeId"].split(":")[0]] = challenge
|
||||
|
||||
for challenge in challenge_ids:
|
||||
challenge_data = None
|
||||
if ":" in challenge:
|
||||
challenge = challenge.split(":")[0]
|
||||
challenge_data = new_challenge_handler.get_progression_batch(challenge, userid)
|
||||
challenge_data = new_challenge_handler.get_time_based_progression_batch(challenge,
|
||||
userid, db_challenge_dict)
|
||||
else:
|
||||
challenge_data = new_challenge_handler.get_time_based_progression_batch(challenge,
|
||||
userid, db_challenge_dict)
|
||||
|
||||
if challenge_data:
|
||||
challenge_list.append(challenge_data)
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -15,12 +15,9 @@ from src.util.challenge_data import *
|
|||
|
||||
|
||||
def update_challenge_time(current_challenge_data, challenge_type):
|
||||
if challenge_type == "daily":
|
||||
current_challenge_data["lifetime"]["creationTime"] = get_lifetime("daily")[0]
|
||||
current_challenge_data["lifetime"]["expirationTime"] = get_lifetime("daily")[1]
|
||||
elif challenge_type == "weekly":
|
||||
current_challenge_data["lifetime"]["creationTime"] = get_lifetime("weekly")[0]
|
||||
current_challenge_data["lifetime"]["expirationTime"] = get_lifetime("weekly")[1]
|
||||
if challenge_type == "Weekly" or challenge_type == "Daily":
|
||||
current_challenge_data["lifetime"]["creationTime"] = get_lifetime(challenge_type)[0]
|
||||
current_challenge_data["lifetime"]["expirationTime"] = get_lifetime(challenge_type)[1]
|
||||
else:
|
||||
logger.graylog_logger(level="Error", handler="update_challenge_time", message="Invalid challenge type")
|
||||
return None
|
||||
|
|
@ -103,44 +100,10 @@ def get_challenge_ids_from_inventory(user_id):
|
|||
|
||||
class ChallengeHandler:
|
||||
def __init__(self):
|
||||
self.weekly_challenges = [
|
||||
"Challenge_ARB_Damage_HunterWeekly",
|
||||
"Challenge_AssaultRifleWins_HunterWeekly",
|
||||
"Challenge_BleedOut_HunterWeekly",
|
||||
"Challenge_BleedOut_RunnerWeekly",
|
||||
"Challenge_Damage_HunterWeekly",
|
||||
"Challenge_Double_HunterWeekly",
|
||||
"Challenge_DroneActivation_HunterWeekly",
|
||||
"Challenge_Efficient_HunterWeekly",
|
||||
"Challenge_Emotional_HunterWeekly",
|
||||
"Challenge_Emotional_RunnerWeekly",
|
||||
"Challenge_Greed_HunterWeekly",
|
||||
"Challenge_Greed_RunnerWeekly",
|
||||
"Challenge_Headshot_HunterWeekly",
|
||||
"Challenge_HuntingShotgunWins_HunterWeekly",
|
||||
"Challenge_InDenial_HunterWeekly",
|
||||
"Challenge_LMGWins_HunterWeekly",
|
||||
"Challenge_Mines_HunterWeekly",
|
||||
"Challenge_Mines_RunnerWeekly",
|
||||
"Challenge_Reveals_hunterWeekly",
|
||||
"Challenge_RingOut_hunterWeekly",
|
||||
"Challenge_Shields_RunnerWeekly",
|
||||
"Challenge_ShotgunDowns_HunterWeekly",
|
||||
"Challenge_Speed_HunterWeekly",
|
||||
"Challenge_SpeedCapture_RunnerWeekly",
|
||||
"Challenge_Stuns_RunnerWeekly",
|
||||
"Challenge_Turrets_HunterWeekly",
|
||||
"Challenge_Turrets_RunnerWeekly",
|
||||
"Challenge_UPs_RunnerWeekly",
|
||||
"Challenge_Wasteful_HunterWeekly",
|
||||
"Challenge_Wasteful_RunnerWeekly",
|
||||
"Challenge_WUP_HunterWeekly",
|
||||
"Challenge_WUP_RunnerWeekly"
|
||||
]
|
||||
self.daily_challenges = [
|
||||
"Daily_Domination_Hunter",
|
||||
"Daily_Domination_Runner",
|
||||
]
|
||||
# imported from challenge data weekly_challenges
|
||||
self.weekly_challenges = weekly_challenges
|
||||
# imported from challenge data daily_challenges
|
||||
self.daily_challenges = daily_challenges
|
||||
self.event_challenges = []
|
||||
|
||||
def get_challenge_by_id(self, challenge_id, user_id):
|
||||
|
|
@ -236,9 +199,9 @@ class ChallengeHandler:
|
|||
}
|
||||
|
||||
def get_time_based_challenges(self, userid, challenge_type):
|
||||
if challenge_type == "daily":
|
||||
if challenge_type == "Daily":
|
||||
challenges = self.daily_challenges
|
||||
elif challenge_type == "weekly":
|
||||
elif challenge_type == "Weekly":
|
||||
challenges = self.weekly_challenges
|
||||
else:
|
||||
return None
|
||||
|
|
@ -250,12 +213,18 @@ class ChallengeHandler:
|
|||
if user_data is not None:
|
||||
for challenge in user_data:
|
||||
user_time_challenges.append(challenge["challengeId"].split(":")[0])
|
||||
else:
|
||||
logger.graylog_logger(level="info", handler="get_time_based_challenges",
|
||||
message=f"No User Challenge Data Found")
|
||||
|
||||
for challenge_id in challenges:
|
||||
|
||||
if challenge_id not in user_time_challenges:
|
||||
current_challenge_data = self.add_challenge_to_user(userid, challenge_id, challenge_type)
|
||||
else:
|
||||
logger.graylog_logger(level="info", handler="get_time_based_challenges",
|
||||
message=f"Data {user_data[user_time_challenges.index(challenge_id)]})")
|
||||
|
||||
current_challenge_data = user_data[user_time_challenges.index(challenge_id)]
|
||||
lifetime = get_lifetime(challenge_type)[0]
|
||||
if lifetime > current_challenge_data["lifetime"]["expirationTime"]:
|
||||
|
|
@ -267,13 +236,11 @@ class ChallengeHandler:
|
|||
"lifetime": current_challenge_data["lifetime"],
|
||||
"challengeType": challenge_type,
|
||||
"challengeId": current_challenge_data["challengeId"],
|
||||
"challengeCompletionValue": challenge_data[challenge_id]["ChallengeCompletionValue"],
|
||||
"faction": challenge_data[challenge_id]["faction"],
|
||||
"challengeBlueprint": challenge_data[challenge_id]["challengeBlueprint"],
|
||||
"rewards": [get_reward(challenge_data[challenge_id]["challengeBlueprint"])]
|
||||
"challengeCompletionValue": challenges[challenge_id]["ChallengeCompletionValue"],
|
||||
"faction": challenges[challenge_id]["faction"],
|
||||
"challengeBlueprint": challenges[challenge_id]["challengeBlueprint"],
|
||||
"rewards": [get_reward(challenges[challenge_id]["challengeBlueprint"])]
|
||||
})
|
||||
else:
|
||||
logger.graylog_logger(level="info", handler="get_time_based_challenges", message=f"No User Challenge Data Found ({challenge_type})")
|
||||
|
||||
return return_data
|
||||
|
||||
|
|
@ -364,21 +331,123 @@ class ChallengeHandler:
|
|||
data = {
|
||||
"challengeId": challenge_id,
|
||||
"completed": False,
|
||||
"value": 0,
|
||||
"challengeType": challenge_type
|
||||
#Seems like many functions rely on challengeType to exist
|
||||
}
|
||||
|
||||
if challenge_type.upper() == "WEEKLY" or challenge_type.upper() == "DAILY":
|
||||
if challenge_type == "Weekly" or challenge_type == "Daily":
|
||||
data["lifetime"] = {
|
||||
"creationTime": "",
|
||||
"expirationTime": ""
|
||||
}
|
||||
data = update_challenge_time(data, challenge_type)
|
||||
data["challengeId"] = challenge_id + ":" + get_lifetime(challenge_type)[0]
|
||||
|
||||
data["challengeId"] = challenge_id + ":" + get_lifetime(challenge_type)[0]
|
||||
|
||||
user_challenge_data.append(data)
|
||||
mongo.write_data_with_list(login=user_id, login_steam=False, items_dict={"challengeProgression": user_challenge_data})
|
||||
return data
|
||||
|
||||
#for each challenge id sent in request
|
||||
#look at each time based challenge
|
||||
#if challenge id is matched with a time based challenge
|
||||
# grab challenge progression from back end database
|
||||
# iterate through database challenges
|
||||
# if database challenge matches challenge id from request
|
||||
#
|
||||
#
|
||||
#
|
||||
def get_time_based_progression_batch(self, challenge_id, userid, db_challenge):
|
||||
#combine challenge dicts and see if ID is in them
|
||||
#Should not alter anything if challenge_id is not a recognized challenge
|
||||
if challenge_id in {**self.daily_challenges, **self.weekly_challenges, **challenge_data}:
|
||||
if challenge_id in db_challenge:
|
||||
challenge = db_challenge[challenge_id]
|
||||
if challenge["value"] == 0:
|
||||
data = {"challengeId": challenge["challengeId"],
|
||||
"completed": False}
|
||||
else:
|
||||
if challenge["completed"]:
|
||||
reward_key = "rewards"
|
||||
# TEST should be rewardsClaimed
|
||||
else:
|
||||
reward_key = "rewards"
|
||||
data = {
|
||||
"challengeId": challenge["challengeId"],
|
||||
"className": "ChallengeProgressionCounter",
|
||||
reward_key: [
|
||||
{
|
||||
"weight": 100,
|
||||
"type": "currency",
|
||||
"amount": 30,
|
||||
"id": "CurrencyA"
|
||||
}
|
||||
],
|
||||
"completed": challenge["completed"],
|
||||
"schemaVersion": 1,
|
||||
"value": challenge["value"]
|
||||
}
|
||||
if challenge["challengeType"] == "Daily":
|
||||
create_time, expiration_time = get_lifetime("Daily")
|
||||
elif challenge["challengeType"] == "Weekly":
|
||||
create_time, expiration_time = get_lifetime("Weekly")
|
||||
else:
|
||||
return data
|
||||
if create_time > challenge["lifetime"]["expirationTime"]:
|
||||
challenge["completed"] = False
|
||||
challenge["completion_count"] = challenge["completion_count"] + 1
|
||||
challenge["lifetime"]["creationTime"] = create_time
|
||||
challenge["lifetime"]["expirationTime"] = expiration_time
|
||||
mongo.write_data_with_list(login=userid, login_steam=False,
|
||||
items_dict={"challenges": db_challenge})
|
||||
return data
|
||||
else:
|
||||
start_data = challenge["lifetime"]["creationTime"]
|
||||
expiration_date = challenge["lifetime"]["expirationTime"]
|
||||
data["lifetime"] = {
|
||||
"creationTime": start_data,
|
||||
"expirationTime": expiration_date
|
||||
}
|
||||
return data
|
||||
|
||||
#if not found in user db_challenge create challenge
|
||||
else:
|
||||
print("CHALLENGE NOT IN DB_CHALLENGE")
|
||||
challenge_type = \
|
||||
{**self.daily_challenges, **self.weekly_challenges, **challenge_data}[challenge_id]["className"]
|
||||
|
||||
if challenge_type == "Daily":
|
||||
create_time, expiration_time = get_lifetime("Daily")
|
||||
self.add_challenge_to_user(userid, challenge_id, challenge_type)
|
||||
return {"challengeId": challenge_id, "completed": False, "className": "Weekly",
|
||||
"lifetime": {
|
||||
"creationTime": create_time,
|
||||
"expirationTime": expiration_time
|
||||
},
|
||||
"completion_count": 0}
|
||||
if challenge_type == "Weekly":
|
||||
create_time, expiration_time = get_lifetime("Weekly")
|
||||
self.add_challenge_to_user(userid, challenge_id, challenge_type)
|
||||
return {"challengeId": challenge_id, "completed": False, "className": "Weekly",
|
||||
"lifetime": {
|
||||
"creationTime": create_time,
|
||||
"expirationTime": expiration_time
|
||||
},
|
||||
"completion_count": 0}
|
||||
self.add_challenge_to_user(userid, challenge_id, challenge_type)
|
||||
return {"challengeId": challenge_id, "completed": False}
|
||||
|
||||
else:
|
||||
#A lot of challenges are sent that are not in challenge_data
|
||||
#Add them anyways
|
||||
if challenge_id not in db_challenge:
|
||||
self.add_challenge_to_user(userid, challenge_id, "ChallengeProgressionCounter")
|
||||
return {"challengeId": challenge_id, "completed": False}
|
||||
logger.graylog_logger(level="error", handler="get_progression_batch",
|
||||
message=f"Challenge KEY ERROR {challenge_id}")
|
||||
|
||||
return None;
|
||||
def get_progression_batch(self, challenge_id, userid):
|
||||
#challenge_data is now a dict
|
||||
#will loop through keys
|
||||
|
|
|
|||
|
|
@ -33,10 +33,10 @@ def get_lifetime(challenge_type):
|
|||
# "creationTime":"2019-11-25T02:17:22.484Z",
|
||||
# "expirationTime":"2019-11-25T17:59:59.000Z"
|
||||
# }
|
||||
if challenge_type == "daily":
|
||||
if challenge_type == "Daily":
|
||||
creation_time = datetime.datetime.now().isoformat(timespec='milliseconds')
|
||||
expiration_time = (datetime.datetime.now() + datetime.timedelta(days=1)).replace(hour=23, minute=59, second=59, microsecond=0).isoformat(timespec='milliseconds')
|
||||
elif challenge_type == "weekly":
|
||||
elif challenge_type == "Weekly":
|
||||
creation_time = datetime.datetime.now().isoformat(timespec='milliseconds')
|
||||
expiration_time = (datetime.datetime.now() + datetime.timedelta(days=7)).replace(hour=23, minute=59, second=59, microsecond=0).isoformat(timespec='milliseconds')
|
||||
else:
|
||||
|
|
|
|||
|
|
@ -39,7 +39,8 @@ time_based_challenge = {
|
|||
}
|
||||
]
|
||||
}
|
||||
weekly_challenges = [
|
||||
|
||||
old_weekly_challenges = [
|
||||
"Challenge_ARB_Damage_HunterWeekly",
|
||||
"Challenge_AssaultRifleWins_HunterWeekly",
|
||||
"Challenge_BleedOut_HunterWeekly",
|
||||
|
|
@ -73,11 +74,220 @@ weekly_challenges = [
|
|||
"Challenge_WUP_HunterWeekly",
|
||||
"Challenge_WUP_RunnerWeekly"
|
||||
]
|
||||
daily_challenges = [
|
||||
old_daily_challenges = [
|
||||
"Daily_Domination_Hunter",
|
||||
"Daily_Domination_Runner",
|
||||
]
|
||||
|
||||
weekly_challenges = {
|
||||
'Challenge_ARB_Damage_HunterWeekly': {'challenge_id': 'Challenge_ARB_Damage_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_ARB_Damage_HunterWeekly.Challenge_ARB_Damage_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 10000,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_AssaultRifleWins_HunterWeekly': {'challenge_id': 'Challenge_AssaultRifleWins_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_AssaultRifleWins_HunterWeekly.Challenge_AssaultRifleWins_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 100,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_BleedOut_HunterWeekly': {'challenge_id': 'Challenge_BleedOut_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_BleedOut_HunterWeekly.Challenge_BleedOut_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 15,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_BleedOut_RunnerWeekly': {'challenge_id': 'Challenge_BleedOut_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_BleedOut_RunnerWeekly.Challenge_BleedOut_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 30,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Damage_HunterWeekly': {'challenge_id': 'Challenge_Damage_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Damage_HunterWeekly.Challenge_Damage_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 10000,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Double_HunterWeekly': {'challenge_id': 'Challenge_Double_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Double_HunterWeekly.Challenge_Double_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 10,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_DroneActivation_HunterWeekly': {'challenge_id': 'Challenge_DroneActivation_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_DroneActivation_HunterWeekly.Challenge_DroneActivation_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 100,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Efficient_HunterWeekly': {'challenge_id': 'Challenge_Efficient_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Efficient_HunterWeekly.Challenge_Efficient_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 20,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Emotional_HunterWeekly': {'challenge_id': 'Challenge_Emotional_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Emotional_HunterWeekly.Challenge_Emotional_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 60,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Emotional_RunnerWeekly': {'challenge_id': 'Challenge_Emotional_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Emotional_RunnerWeekly.Challenge_Emotional_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 60,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Greed_HunterWeekly': {'challenge_id': 'Challenge_Greed_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Greed_HunterWeekly.Challenge_Greed_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 200,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Greed_RunnerWeekly': {'challenge_id': 'Challenge_Greed_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Greed_RunnerWeekly.Challenge_Greed_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 200,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Headshot_HunterWeekly': {'challenge_id': 'Challenge_Headshot_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Headshot_HunterWeekly.Challenge_Headshot_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 15,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_HuntingShotgunWins_HunterWeekly': {'challenge_id': 'Challenge_HuntingShotgunWins_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_HuntingShotgunWins_HunterWeekly.Challenge_HuntingShotgunWins_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 30,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_InDenial_HunterWeekly': {'challenge_id': 'Challenge_InDenial_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_InDenial_HunterWeekly.Challenge_InDenial_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 50,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_LMGWins_HunterWeekly': {'challenge_id': 'Challenge_LMGWins_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_LMGWins_HunterWeekly.Challenge_LMGWins_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 100,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Mines_HunterWeekly': {'challenge_id': 'Challenge_Mines_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Mines_HunterWeekly.Challenge_Mines_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 60,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Mines_RunnerWeekly': {'challenge_id': 'Challenge_Mines_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Mines_RunnerWeekly.Challenge_Mines_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 50,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Reveals_hunterWeekly': {'challenge_id': 'Challenge_Reveals_hunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Reveals_hunterWeekly.Challenge_Reveals_hunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 100,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_RingOut_hunterWeekly': {'challenge_id': 'Challenge_RingOut_hunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_RingOut_hunterWeekly.Challenge_RingOut_hunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 15,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Shields_RunnerWeekly': {'challenge_id': 'Challenge_Shields_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Shields_RunnerWeekly.Challenge_Shields_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 100,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_ShotgunDowns_HunterWeekly': {'challenge_id': 'Challenge_ShotgunDowns_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_ShotgunDowns_HunterWeekly.Challenge_ShotgunDowns_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 100,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Speed_HunterWeekly': {'challenge_id': 'Challenge_Speed_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Speed_HunterWeekly.Challenge_Speed_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 10,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_SpeedCapture_RunnerWeekly': {'challenge_id': 'Challenge_SpeedCapture_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_SpeedCapture_RunnerWeekly.Challenge_SpeedCapture_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 10,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Stuns_RunnerWeekly': {'challenge_id': 'Challenge_Stuns_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Stuns_RunnerWeekly.Challenge_Stuns_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 100,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Turrets_HunterWeekly': {'challenge_id': 'Challenge_Turrets_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Turrets_HunterWeekly.Challenge_Turrets_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 30,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Turrets_RunnerWeekly': {'challenge_id': 'Challenge_Turrets_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Turrets_RunnerWeekly.Challenge_Turrets_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 10,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_UPs_RunnerWeekly': {'challenge_id': 'Challenge_UPs_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_UPs_RunnerWeekly.Challenge_UPs_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 30,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Wasteful_HunterWeekly': {'challenge_id': 'Challenge_Wasteful_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Wasteful_HunterWeekly.Challenge_Wasteful_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 10000,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Wasteful_RunnerWeekly': {'challenge_id': 'Challenge_Wasteful_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Wasteful_RunnerWeekly.Challenge_Wasteful_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 10000,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_WUP_HunterWeekly': {'challenge_id': 'Challenge_WUP_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_WUP_HunterWeekly.Challenge_WUP_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 150,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_WUP_RunnerWeekly': {'challenge_id': 'Challenge_WUP_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_WUP_RunnerWeekly.Challenge_WUP_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 150,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'}
|
||||
}
|
||||
|
||||
daily_challenges = {
|
||||
'Daily_Domination_Hunter': {'challenge_id': 'Daily_Domination_Hunter',
|
||||
'challengeBlueprint': '/Game/Challenges/Daily/Challenge_Domination_Hunter.Challenge_Domination_Hunter',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 1,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Daily'},
|
||||
'Daily_Domination_Runner': {'challenge_id': 'Daily_Domination_Runner',
|
||||
'challengeBlueprint': '/Game/Challenges/Daily/Challenge_Domination_Runner.Challenge_Domination_Runner',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 1,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Daily'},
|
||||
}
|
||||
|
||||
challenge_data = {
|
||||
'AAA17F074165BF5D36D1029C127A0D4E': {'challenge_id': 'AAA17F074165BF5D36D1029C127A0D4E',
|
||||
|
|
@ -3248,210 +3458,6 @@ challenge_data = {
|
|||
'ChallengeCompletionValue': 58800,
|
||||
'type': 'currency',
|
||||
'challengeType': 'ChallengeProgressionCounter'},
|
||||
'Daily_Domination_Hunter': {'challenge_id': 'Daily_Domination_Hunter',
|
||||
'challengeBlueprint': '/Game/Challenges/Daily/Challenge_Domination_Hunter.Challenge_Domination_Hunter',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 1,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Daily'},
|
||||
'Daily_Domination_Runner': {'challenge_id': 'Daily_Domination_Runner',
|
||||
'challengeBlueprint': '/Game/Challenges/Daily/Challenge_Domination_Runner.Challenge_Domination_Runner',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 1,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Daily'},
|
||||
'Challenge_ARB_Damage_HunterWeekly': {'challenge_id': 'Challenge_ARB_Damage_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_ARB_Damage_HunterWeekly.Challenge_ARB_Damage_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 10000,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_AssaultRifleWins_HunterWeekly': {'challenge_id': 'Challenge_AssaultRifleWins_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_AssaultRifleWins_HunterWeekly.Challenge_AssaultRifleWins_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 100,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_BleedOut_HunterWeekly': {'challenge_id': 'Challenge_BleedOut_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_BleedOut_HunterWeekly.Challenge_BleedOut_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 15,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_BleedOut_RunnerWeekly': {'challenge_id': 'Challenge_BleedOut_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_BleedOut_RunnerWeekly.Challenge_BleedOut_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 30,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Damage_HunterWeekly': {'challenge_id': 'Challenge_Damage_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Damage_HunterWeekly.Challenge_Damage_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 10000,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Double_HunterWeekly': {'challenge_id': 'Challenge_Double_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Double_HunterWeekly.Challenge_Double_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 10,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_DroneActivation_HunterWeekly': {'challenge_id': 'Challenge_DroneActivation_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_DroneActivation_HunterWeekly.Challenge_DroneActivation_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 100,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Efficient_HunterWeekly': {'challenge_id': 'Challenge_Efficient_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Efficient_HunterWeekly.Challenge_Efficient_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 20,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Emotional_HunterWeekly': {'challenge_id': 'Challenge_Emotional_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Emotional_HunterWeekly.Challenge_Emotional_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 60,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Emotional_RunnerWeekly': {'challenge_id': 'Challenge_Emotional_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Emotional_RunnerWeekly.Challenge_Emotional_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 60,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Greed_HunterWeekly': {'challenge_id': 'Challenge_Greed_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Greed_HunterWeekly.Challenge_Greed_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 200,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Greed_RunnerWeekly': {'challenge_id': 'Challenge_Greed_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Greed_RunnerWeekly.Challenge_Greed_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 200,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Headshot_HunterWeekly': {'challenge_id': 'Challenge_Headshot_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Headshot_HunterWeekly.Challenge_Headshot_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 15,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_HuntingShotgunWins_HunterWeekly': {'challenge_id': 'Challenge_HuntingShotgunWins_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_HuntingShotgunWins_HunterWeekly.Challenge_HuntingShotgunWins_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 30,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_InDenial_HunterWeekly': {'challenge_id': 'Challenge_InDenial_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_InDenial_HunterWeekly.Challenge_InDenial_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 50,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_LMGWins_HunterWeekly': {'challenge_id': 'Challenge_LMGWins_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_LMGWins_HunterWeekly.Challenge_LMGWins_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 100,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Mines_HunterWeekly': {'challenge_id': 'Challenge_Mines_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Mines_HunterWeekly.Challenge_Mines_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 60,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Mines_RunnerWeekly': {'challenge_id': 'Challenge_Mines_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Mines_RunnerWeekly.Challenge_Mines_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 50,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Reveals_hunterWeekly': {'challenge_id': 'Challenge_Reveals_hunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Reveals_hunterWeekly.Challenge_Reveals_hunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 100,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_RingOut_hunterWeekly': {'challenge_id': 'Challenge_RingOut_hunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_RingOut_hunterWeekly.Challenge_RingOut_hunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 15,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Shields_RunnerWeekly': {'challenge_id': 'Challenge_Shields_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Shields_RunnerWeekly.Challenge_Shields_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 100,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_ShotgunDowns_HunterWeekly': {'challenge_id': 'Challenge_ShotgunDowns_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_ShotgunDowns_HunterWeekly.Challenge_ShotgunDowns_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 100,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Speed_HunterWeekly': {'challenge_id': 'Challenge_Speed_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Speed_HunterWeekly.Challenge_Speed_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 10,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_SpeedCapture_RunnerWeekly': {'challenge_id': 'Challenge_SpeedCapture_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_SpeedCapture_RunnerWeekly.Challenge_SpeedCapture_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 10,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Stuns_RunnerWeekly': {'challenge_id': 'Challenge_Stuns_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Stuns_RunnerWeekly.Challenge_Stuns_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 100,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Turrets_HunterWeekly': {'challenge_id': 'Challenge_Turrets_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Turrets_HunterWeekly.Challenge_Turrets_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 30,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Turrets_RunnerWeekly': {'challenge_id': 'Challenge_Turrets_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Turrets_RunnerWeekly.Challenge_Turrets_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 10,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_UPs_RunnerWeekly': {'challenge_id': 'Challenge_UPs_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_UPs_RunnerWeekly.Challenge_UPs_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 30,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Wasteful_HunterWeekly': {'challenge_id': 'Challenge_Wasteful_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Wasteful_HunterWeekly.Challenge_Wasteful_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 10000,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_Wasteful_RunnerWeekly': {'challenge_id': 'Challenge_Wasteful_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_Wasteful_RunnerWeekly.Challenge_Wasteful_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 10000,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_WUP_HunterWeekly': {'challenge_id': 'Challenge_WUP_HunterWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_WUP_HunterWeekly.Challenge_WUP_HunterWeekly',
|
||||
'faction': 'Hunter',
|
||||
'ChallengeCompletionValue': 150,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'Challenge_WUP_RunnerWeekly': {'challenge_id': 'Challenge_WUP_RunnerWeekly',
|
||||
'challengeBlueprint': '/Game/Challenges/Weekly/Challenge_WUP_RunnerWeekly.Challenge_WUP_RunnerWeekly',
|
||||
'faction': 'Runner',
|
||||
'ChallengeCompletionValue': 150,
|
||||
'type': 'currency',
|
||||
'challengeType': 'Weekly'},
|
||||
'B4B156CC47C8D987B9BDBEB910B12C9E': {'challenge_id': 'B4B156CC47C8D987B9BDBEB910B12C9E',
|
||||
'challengeBlueprint': '/Game/Challenges/Progression/Challenge_AmmoOpportunist_Runner.Challenge_AmmoOpportunist_Runner',
|
||||
'faction': 'Runner',
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user