From 292fd1d9ced6d6d8965ba3aed3f11ac97c01c870 Mon Sep 17 00:00:00 2001 From: ZKWolf <34097612+wolfswolke@users.noreply.github.com> Date: Thu, 25 Apr 2024 03:27:38 +0200 Subject: [PATCH] Added Leveling --- src/flask_definitions.py | 1 + src/logic/level_handler.py | 131 +++++++++++++++++++++++++++++++++++++ 2 files changed, 132 insertions(+) create mode 100644 src/logic/level_handler.py diff --git a/src/flask_definitions.py b/src/flask_definitions.py index e29950e..97a912c 100644 --- a/src/flask_definitions.py +++ b/src/flask_definitions.py @@ -10,6 +10,7 @@ from logic.time_handler import get_lifetime # from logic.challenge_handler import get_progression_batch, update_progression_batch, get_time_based_challenges from logic.hash_handler import hash_handler from logic.challenge_handler_new import new_challenge_handler, get_challenge_ids_from_inventory +from logic.level_handler import update_user_xp import json import os diff --git a/src/logic/level_handler.py b/src/logic/level_handler.py new file mode 100644 index 0000000..e4c9fb3 --- /dev/null +++ b/src/logic/level_handler.py @@ -0,0 +1,131 @@ +import math + +from flask_definitions import * + +# 'RunnerGroupA': { +# 'prestige': 0, +# 'experience': { +# 'level': 1, +# 'experienceToReach': 5403, +# 'currentExperience': 0 +# }, +# }, +# 'RunnerGroupB': { +# 'prestige': 0, +# 'experience': { +# 'level': 1, +# 'experienceToReach': 5403, +# 'currentExperience': 0 +# }, +# }, +# 'RunnerGroupC': { +# 'prestige': 0, +# 'experience': { +# 'level': 1, +# 'experienceToReach': 5403, +# 'currentExperience': 0 +# }, +# }, +# 'RunnerGroupD': { +# 'prestige': 0, +# 'experience': { +# 'level': 1, +# 'experienceToReach': 5403, +# 'currentExperience': 0 +# }, +# }, +# 'RunnerGroupE': { +# 'prestige': 0, +# 'experience': { +# 'level': 1, +# 'experienceToReach': 5403, +# 'currentExperience': 0 +# }, +# }, +# 'RunnerGroupF': { +# 'prestige': 0, +# 'experience': { +# 'level': 1, +# 'experienceToReach': 5403, +# 'currentExperience': 0 +# }, +# }, +# 'HunterGroupA': { +# 'prestige': 0, +# 'experience': { +# 'level': 1, +# 'experienceToReach': 5403, +# 'currentExperience': 0 +# }, +# }, +# 'HunterGroupB': { +# 'prestige': 0, +# 'experience': { +# 'level': 1, +# 'experienceToReach': 5403, +# 'currentExperience': 0 +# }, +# }, +# 'HunterGroupC': { +# 'prestige': 0, +# 'experience': { +# 'level': 1, +# 'experienceToReach': 5403, +# 'currentExperience': 0 +# }, +# }, +# 'HunterGroupD': { +# 'prestige': 0, +# 'experience': { +# 'level': 1, +# 'experienceToReach': 5403, +# 'currentExperience': 0 +# }, +# }, +# 'RunnerProgression':{ +# "experience": { +# "level": 1, +# "experienceToReach": 5, +# "currentExperience": 3 +# } +# }, +# 'HunterProgression': { +# "experience": { +# "level": 1, +# "experienceToReach": 5, +# "currentExperience": 3 +# } +# }, +# 'PlayerProgression': { +# "experience": { +# "level": 1, +# "experienceToReach": 5, +# "currentExperience": 3 +# } +# }, +# 'ProfileMetaData': { +# 'characterCumulativeExperience': 0 +# } + +def get_xp_for_new_level(level): + xp = 5000 * 1.2 ** level - 1 + xp = math.ceil(xp) + return xp + +def update_user_xp(user_id, xp, characterGroup): + # todo Find out what PlayerProgression, HunterProgression and RunnerProgression are + user_data_raw = mongo.get_data_with_list(login=user_id, login_steam=False, items={characterGroup, "ProfileMetaData"}) + user_data = user_data_raw[characterGroup] + profile_meta_data = user_data_raw['ProfileMetaData'] + current_xp = user_data['experience']['currentExperience'] + new_experience = current_xp + xp + if new_experience >= user_data['experience']['experienceToReach']: + overflow = new_experience - user_data['experience']['experienceToReach'] + user_data['experience']['level'] += 1 + user_data['experience']['experienceToReach'] = get_xp_for_new_level(user_data['experience']['level']) + user_data['experience']['currentExperience'] = overflow + else: + user_data['experience']['currentExperience'] = new_experience + profile_meta_data['characterCumulativeExperience'] += xp + mongo.write_data_with_list(login=user_id, login_steam=False, items_dict={characterGroup: user_data, + "ProfileMetaData": profile_meta_data})