monitor regulator extra points (as micropoints)
parent
53e68e74b2
commit
09d63704d9
|
@ -171,6 +171,9 @@ object mon {
|
|||
object distribution {
|
||||
def byPerfAndRating(perfKey: String, rating: Int): Rate = rate(s"rating.distribution.$perfKey.$rating")
|
||||
}
|
||||
object regulator {
|
||||
def micropoints(perfKey: String) = rec(s"rating.regulator.$perfKey")
|
||||
}
|
||||
}
|
||||
|
||||
object round {
|
||||
|
|
|
@ -4,16 +4,17 @@ case object RatingRegulator {
|
|||
|
||||
def apply(factors: RatingFactors)(perfType: PerfType, before: Perf, after: Perf): Perf =
|
||||
factors.get(perfType).filter(1!=).fold(after) {
|
||||
apply(_, before, after)
|
||||
apply(_, perfType, before, after)
|
||||
}
|
||||
|
||||
def apply(factor: RatingFactor, before: Perf, after: Perf): Perf =
|
||||
def apply(factor: RatingFactor, perfType: PerfType, before: Perf, after: Perf): Perf =
|
||||
if ({
|
||||
(after.nb == before.nb + 1) && // after playing one game
|
||||
(after.glicko.rating > before.glicko.rating) // and gaining rating
|
||||
}) {
|
||||
val diff = (after.glicko.rating - before.glicko.rating).abs
|
||||
val extra = diff * factor.value
|
||||
lila.mon.rating.regulator.micropoints(perfType.key)((extra * 1000 * 1000).toLong)
|
||||
after.copy(
|
||||
glicko = after.glicko.copy(
|
||||
rating = after.glicko.rating + extra
|
||||
|
|
Loading…
Reference in New Issue