65 lines
2.2 KiB
Python
65 lines
2.2 KiB
Python
from data import data_api
|
|
|
|
# Faktor für die Punkte Inflation. Um diesen Wert verliert der Verlierer weniger Punkte als der Sieger bekommt. Über Kurz oder Lang werden
|
|
# die meisten Spieler über 1000MMR sein. Sprich: Neueinsteiger, oder leute die weniger spielen sind eher im unteren Ende als in der Mitte.
|
|
point_inflation = 0.7 # => entspricht % ! z.B. 0.7 = 70%
|
|
|
|
def calc_mmr_change(systemname, winner_id, looser_id, winner_points, looser_points, match_is_draw, rules):
|
|
#Rang der Spieler holen.
|
|
gamesystem_id = data_api.get_gamesystem_id_by_name(systemname)
|
|
winner_rank = data_api.get_player_rank(winner_id,gamesystem_id)
|
|
looser_rank = data_api.get_player_rank(looser_id, gamesystem_id)
|
|
|
|
if match_is_draw:
|
|
mmr_change = rules["rank_matrix"][str(max(-10, min(10, winner_rank-looser_rank)))]["draw"]
|
|
else:
|
|
mmr_change = rules["rank_matrix"][str(max(-10, min(10, winner_rank-looser_rank)))]["win"]
|
|
|
|
# Slaanesh Points berechnen und dem Change hinzufügen.
|
|
mmr_change += (sla_points := slaanesh_delight(winner_points, looser_points, rules))
|
|
|
|
# Variablen für den mmr_change anlegen. Sieger-Verlierer sind unterschiedlich!
|
|
winner_mmr_change = 0 + (mmr_change + wrath_of_khorne(winner_id))
|
|
looser_mmr_change = 0 + (mmr_change + wrath_of_khorne(looser_id))
|
|
|
|
if not match_is_draw:
|
|
# Verlierer verliert nur einen Teil der Punkte
|
|
looser_mmr_change = -int(winner_mmr_change * point_inflation)
|
|
|
|
return winner_mmr_change, looser_mmr_change
|
|
|
|
|
|
|
|
|
|
# -----------------
|
|
khorne_days = 16
|
|
khorne_bonus = 8
|
|
|
|
|
|
# -----------------
|
|
def wrath_of_khorne(player_id):
|
|
last_played = data_api.get_days_since_last_game(player_id)["days_ago"]
|
|
if last_played <= khorne_days:
|
|
return khorne_bonus
|
|
else:
|
|
return 0
|
|
|
|
|
|
def slaanesh_delight(winner_points, looser_points, rules):
|
|
|
|
point_diff = winner_points - looser_points
|
|
# Standardwert, falls gar nichts zutrifft
|
|
bonus = 0
|
|
|
|
for threshold in rules["score_bonus"]:
|
|
if point_diff >= threshold["min_diff"]:
|
|
bonus = threshold["bonus"]
|
|
break
|
|
return bonus
|
|
|
|
|
|
def tzeentch_scemes():
|
|
print("k")
|
|
|
|
def nurgles_entropy():
|
|
print("k") |