Setup proper Elo brackets with the top 1% being placed in diamond. Also changed starting Elo to 1400 (middle of Iron 1), leaving Coal as a purely regressive division.

This commit is contained in:
Joseph Prezioso Jr 2016-03-30 16:06:30 -04:00
parent 00ee594f28
commit b1c29a4fa6

View File

@ -32,7 +32,7 @@ public class EloManager extends MiniDbClientPlugin<EloClientData>
public int getElo(UUID uuid, String gameType) public int getElo(UUID uuid, String gameType)
{ {
int elo = 1000; int elo = 1400;
synchronized (_playerEloLock) synchronized (_playerEloLock)
{ {
@ -78,19 +78,29 @@ public class EloManager extends MiniDbClientPlugin<EloClientData>
double percentile = allElos.lastIndexOf(playerElo) * individualValue; double percentile = allElos.lastIndexOf(playerElo) * individualValue;
return CalculateDivision(percentile); return CalculateDivision(playerElo, percentile);
} }
public String CalculateDivision(double divPercent) public String CalculateDivision(int playerElo, double divPercent)
{ {
if (divPercent == 100) return "Diamond"; if (playerElo >= 3500 && divPercent > 99) return "Diamond";
if (divPercent <= 99 && divPercent >= 81) return "Emerald"; if (playerElo >= 3500) return "Emerald 3";
if (divPercent <= 80 && divPercent >= 61) return "Lapis"; if (playerElo < 3500 && playerElo >= 3300) return "Emerald 2";
if (divPercent <= 60 && divPercent >= 41) return "Gold"; if (playerElo < 3300 && playerElo >= 3100) return "Emerald 1";
if (divPercent <= 40 && divPercent >= 21) return "Iron"; if (playerElo < 3100 && playerElo >= 2900) return "Lapis 3";
if (playerElo < 2900 && playerElo >= 2700) return "Lapis 2";
if (playerElo < 2700 && playerElo >= 2500) return "Lapis 1";
if (playerElo < 2500 && playerElo >= 2300) return "Gold 3";
if (playerElo < 2300 && playerElo >= 2100) return "Gold 2";
if (playerElo < 2100 && playerElo >= 1900) return "Gold 1";
if (playerElo < 1900 && playerElo >= 1700) return "Iron 3";
if (playerElo < 1700 && playerElo >= 1500) return "Iron 2";
if (playerElo < 1500 && playerElo >= 1300) return "Iron 1";
if (playerElo < 1300 && playerElo >= 800) return "Coal 3";
if (playerElo < 800 && playerElo >= 600) return "Coal 2";
if (playerElo < 600 && playerElo >= 400) return "Coal 1";
//if none of the above are true, a player is in the bottom 20% return "Result not found";
return "Coal";
} }
public EloTeam getNewRatings(EloTeam teamA, EloTeam teamB, GameResult result) public EloTeam getNewRatings(EloTeam teamA, EloTeam teamB, GameResult result)