Changeset - c234eb08d816
[Not reviewed]
tip default
0 1 0
Laman - 7 months ago 2024-09-19 11:56:49

fixed wrong rating reset
1 file changed with 8 insertions and 1 deletions:
0 comments (0 inline, 0 general)
rank_progress.py
Show inline comments
 
@@ -40,28 +40,35 @@ class Record:
 
		return s
 

	
 

	
 
class RankTracker:
 
	def __init__(self, rating):
 
		assert rating >= -900
 
		self._precise_rating = rating
 
		self._rounded_rating = round_rating(rating)
 
		self._best = self._rounded_rating
 

	
 
	@property
 
	def rank(self):
 
		return rating_to_rank(self._rounded_rating)
 

	
 
	@property
 
	def rounded_rating(self):
 
		return self._rounded_rating
 

	
 
	@property
 
	def precise_rating(self):
 
		return self._precise_rating
 

	
 
	def update(self, rating):
 
		assert rating >= -900
 
		rounded_rating = round_rating(rating)
 
		old_rank = self.rank
 

	
 
		self._precise_rating = rating
 

	
 
		if rounded_rating == self._rounded_rating:
 
			pass
 
		elif rounded_rating > self._rounded_rating:  # promotion
 
			# when pushing the best by 2 and more ranks you have to cross the hundred, not just the fifty
 
			if rounded_rating >= self._best+200 and rating < rounded_rating:
 
				self._rounded_rating = rounded_rating-100
 
@@ -114,13 +121,13 @@ def main(s, since, to, args):
 
		tourneys = list(recs)
 
		tracker = RankTracker(tourneys[0].rating_before)
 
		steps = []
 

	
 
		for r in tourneys:
 
			# omit reset ratings
 
			if tracker.rounded_rating != round_rating(r.rating_before):
 
			if tracker.precise_rating != r.rating_before:
 
				tracker = RankTracker(r.rating_before)
 

	
 
			old_rank = tracker.rank
 
			new_rank = tracker.update(r.rating_after)
 
			if new_rank is not False:
 
				r.rank_change = (old_rank, new_rank)
0 comments (0 inline, 0 general)