Skip to content

Instantly share code, notes, and snippets.

@cranst0n
Created October 2, 2018 01:33
Show Gist options
  • Save cranst0n/349e34c74382f4b861e7dfc12f804283 to your computer and use it in GitHub Desktop.
Save cranst0n/349e34c74382f4b861e7dfc12f804283 to your computer and use it in GitHub Desktop.
object prizeranking {
def main(args: Array[String]): Unit = {
data.All
.map { prize =>
(prize, PrizeScore(prize))
}
.sortBy(-_._2)
.zipWithIndex
.foreach {
case ((prize, prizeScore), ix) =>
val placeString = padLeft(s"${prize.place}${numberSuffix(prize.place)}", 5)
val rankString = padLeft((ix + 1).toString, 4)
val prizeScoreString = padLeft(f"${prizeScore}%.2f", 8)
val cardScoreString = padLeft(f"${PrizeScore.cards(prize)}%.2f", 8)
val ballScoreString = padLeft(f"${PrizeScore.balls(prize)}%.2f", 8)
val totalCardString = commonText(padLeft(s"${prize.allCardCount} ", 5))
val rareCardString = rareText(padLeft(s"${prize.rareCards} ", 5))
val epicCardString = epicText(padLeft(s"${prize.epicCards} ", 5))
val cardString = totalCardString + rareCardString + epicCardString
val ballString = prize.ballPrizes.foldLeft("") { (acc, ballPrize) =>
acc + s" ${padLeft(ballPrize.count.toString, 3)} ${ballPrize.ball}s"
}
println(
consoleColorize(
prize.level,
s"$rankString ) ${prize.level.toString.padTo(7, ' ')} $placeString\t$prizeScoreString\t[Cards: $cardScoreString, Balls: $ballScoreString] "
) + " " + cardString + " " + ballString
)
}
}
sealed trait Level extends Product with Serializable
case object Rookie extends Level
case object Pro extends Level
case object Expert extends Level
case object Masters extends Level
sealed trait Ball extends Product with Serializable {
def apply(count: Int): BallPrize = BallPrize(this, count)
}
case object Berserker extends Ball
case object KingMaker extends Ball
case object Katana extends Ball
case object Titan extends Ball
case object Navigator extends Ball
case object Quasar extends Ball
case object Marlin extends Ball
case class BallPrize(ball: Ball, count: Int)
case class Prize(level: Level,
place: Int,
allCardCount: Int,
rareCards: Int,
epicCards: Int,
clanPoints: Int,
coins: Double,
ballPrizes: BallPrize*) {
val commonCount = allCardCount - rareCards - epicCards
}
object PrizeScore {
def apply(prize: Prize): Double = cards(prize) + balls(prize)
def cards(prize: Prize): Double = {
val commonWeight = prize.level match {
case Rookie => 1.0
case Pro => 2.0
case Expert => 2.0
case Masters => 2.0
}
val rareWeight = (prize.level match {
case Rookie => 3.5 // Extra Mile, Big Dawg, Goliath, Malibu
case Pro => 7.0 // Rookie + Guardian, Thorn, Hornet
case Expert => 9.0 // Pro + Rapier, Nirvana
case Masters => 9.0
}) * 3.33
val epicWeight = (prize.level match {
case Rookie => 0.5 // BT?
case Pro => 4.0 // Rookie + Hammerhead, B52, Endbringer
case Expert => 11.0 // Pro + Thor, Apoc, Cataclysm, Spit
case Masters => 11.0
}) * 10.0
(prize.commonCount * commonWeight) +
(prize.rareCards * rareWeight) +
(prize.epicCards * epicWeight)
}
def balls(prize: Prize): Double = {
prize.ballPrizes.map(prize => ballWeight(prize.ball) * prize.count).sum * 5.0
}
private[this] def ballWeight(ball: Ball): Double = {
ball match {
case KingMaker => 7.50
case Berserker => 7.00
case Katana => 4.25
case Titan => 4.00
case Navigator => 2.25
case Quasar => 2.00
case Marlin => 1.00
}
}
}
private[this] def padLeft(s: String, length: Int): String = {
s.reverse.padTo(length, ' ').reverse
}
private[this] def numberSuffix(number: Int) = {
number match {
case n if 11 <= n && n <= 13 => "th"
case _ => {
(number % 10) match {
case 1 => "st"
case 2 => "nd"
case 3 => "rd"
case _ => "th"
}
}
}
}
private[this] def consoleColorize(level: Level, s: String) = {
level match {
case Rookie => Console.BOLD + Console.WHITE + Console.GREEN_B + s + Console.RESET
case Pro => Console.BOLD + Console.WHITE + Console.CYAN_B + s + Console.RESET
case Expert => Console.BOLD + Console.WHITE + Console.YELLOW_B + s + Console.RESET
case Masters => Console.BOLD + Console.WHITE + Console.MAGENTA_B + s + Console.RESET
}
}
private[this] def commonText(s: String): String =
Console.BOLD + Console.WHITE + Console.BLUE_B + s + Console.RESET
private[this] def rareText(s: String): String =
Console.BOLD + Console.WHITE + Console.YELLOW_B + s + Console.RESET
private[this] def epicText(s: String): String =
Console.BOLD + Console.WHITE + Console.MAGENTA_B + s + Console.RESET
implicit class DoubleCoinsOps(base: Double) {
def mil = base * 1e6
def k = base * 1e3
}
object data {
lazy val All = rookie ::: pro ::: expert ::: masters
val rookie = List(
Prize(Rookie, 1, 130, 40, 40, 680, 300.k, KingMaker(25), Titan(75)),
Prize(Rookie, 2, 108, 38, 20, 510, 150.k, KingMaker(18), Titan(50)),
Prize(Rookie, 3, 98, 36, 12, 430, 90.k, KingMaker(9), Titan(40)),
Prize(Rookie, 4, 93, 35, 8, 380, 60.k, Titan(30)),
Prize(Rookie, 5, 91, 33, 8, 345, 57.k, Titan(30)),
Prize(Rookie, 6, 88, 31, 7, 320, 54.k, Titan(30)),
Prize(Rookie, 7, 87, 30, 7, 300, 51.k, Titan(30)),
Prize(Rookie, 8, 77, 20, 7, 280, 49.k, Titan(30)),
Prize(Rookie, 9, 75, 19, 6, 270, 47.k, Titan(30)),
Prize(Rookie, 10, 74, 18, 6, 255, 45.k, Titan(30)),
Prize(Rookie, 11, 71, 17, 4, 245, 30.k, Titan(15)),
Prize(Rookie, 12, 70, 16, 4, 235, 29.k, Titan(15)),
Prize(Rookie, 13, 70, 16, 4, 225, 28.k, Titan(15)),
Prize(Rookie, 14, 68, 15, 3, 220, 27.k, Titan(15)),
Prize(Rookie, 15, 67, 14, 3, 215, 26.k, Titan(15)),
Prize(Rookie, 16, 66, 13, 3, 205, 25.k, Titan(15)),
Prize(Rookie, 17, 66, 13, 3, 200, 24.k, Titan(15)),
Prize(Rookie, 18, 65, 12, 3, 195, 23.k, Titan(15)),
Prize(Rookie, 19, 65, 12, 3, 190, 22.k, Titan(15)),
Prize(Rookie, 20, 64, 11, 3, 185, 21.k, Titan(15)),
Prize(Rookie, 21, 63, 11, 2, 180, 20.k, Titan(15)),
Prize(Rookie, 22, 62, 10, 2, 180, 19.k, Titan(15)),
Prize(Rookie, 23, 59, 7, 2, 175, 18.k, Titan(15)),
Prize(Rookie, 24, 58, 6, 2, 170, 17.k, Titan(15)),
Prize(Rookie, 25, 58, 6, 2, 170, 16.k, Titan(15)),
Prize(Rookie, 26, 57, 6, 1, 165, 11.k, Quasar(15)),
Prize(Rookie, 27, 57, 6, 1, 160, 10.k, Quasar(15)),
Prize(Rookie, 28, 56, 5, 1, 160, 9.5.k, Quasar(15)),
Prize(Rookie, 29, 56, 5, 1, 155, 9.0.k, Quasar(15)),
Prize(Rookie, 30, 56, 5, 1, 155, 8.6.k, Quasar(15)),
Prize(Rookie, 31, 56, 5, 1, 150, 8.2.k, Quasar(15)),
Prize(Rookie, 32, 55, 4, 1, 150, 7.8.k, Quasar(15)),
Prize(Rookie, 33, 55, 4, 1, 145, 7.4.k, Quasar(15)),
Prize(Rookie, 34, 55, 4, 1, 145, 7.0.k, Quasar(15)),
Prize(Rookie, 35, 55, 4, 1, 140, 6.7.k, Quasar(15)),
Prize(Rookie, 36, 55, 4, 1, 140, 6.4.k, Quasar(15)),
Prize(Rookie, 37, 54, 3, 1, 135, 6.1.k, Quasar(15)),
Prize(Rookie, 38, 54, 3, 1, 135, 5.8.k, Quasar(15)),
Prize(Rookie, 39, 54, 3, 1, 135, 5.5.k, Quasar(15)),
Prize(Rookie, 40, 54, 3, 1, 130, 5.2.k, Quasar(15)),
Prize(Rookie, 41, 54, 3, 1, 130, 5.0.k, Quasar(15)),
Prize(Rookie, 42, 54, 3, 1, 125, 4.8.k, Quasar(15)),
Prize(Rookie, 43, 54, 3, 1, 125, 4.6.k, Quasar(15)),
Prize(Rookie, 44, 54, 3, 1, 125, 4.4.k, Quasar(15)),
Prize(Rookie, 45, 54, 3, 1, 120, 4.2.k, Quasar(15)),
Prize(Rookie, 46, 54, 3, 1, 120, 4.0.k, Quasar(15)),
Prize(Rookie, 47, 54, 3, 1, 120, 3.8.k, Quasar(15)),
Prize(Rookie, 48, 54, 3, 1, 120, 3.7.k, Quasar(15)),
Prize(Rookie, 49, 54, 3, 1, 115, 3.6.k, Quasar(15)),
Prize(Rookie, 50, 53, 2, 1, 115, 3.5.k, Quasar(15)),
Prize(Rookie, 51, 53, 2, 1, 115, 2.3.k, Quasar(9)),
Prize(Rookie, 52, 53, 2, 1, 110, 2.2.k, Quasar(9)),
Prize(Rookie, 53, 53, 2, 1, 110, 2.1.k, Quasar(9)),
Prize(Rookie, 54, 53, 2, 1, 110, 2.0.k, Quasar(9)),
Prize(Rookie, 55, 53, 2, 1, 110, 1.9.k, Quasar(9)),
Prize(Rookie, 56, 53, 2, 1, 105, 1.8.k, Quasar(9)),
Prize(Rookie, 57, 53, 2, 1, 105, 1.7.k, Quasar(9)),
Prize(Rookie, 58, 53, 2, 1, 105, 1.7.k, Quasar(9)),
Prize(Rookie, 59, 53, 2, 1, 105, 1.7.k, Quasar(9)),
Prize(Rookie, 60, 52, 1, 1, 100, 1.7.k, Quasar(9)),
Prize(Rookie, 61, 52, 1, 1, 100, 1.7.k, Quasar(9)),
Prize(Rookie, 62, 52, 1, 1, 99, 1.7.k, Quasar(9)),
Prize(Rookie, 63, 52, 1, 1, 98, 1.7.k, Quasar(9)),
Prize(Rookie, 64, 52, 1, 1, 97, 1.7.k, Quasar(9)),
Prize(Rookie, 65, 52, 1, 1, 96, 1.7.k, Quasar(9)),
Prize(Rookie, 66, 52, 1, 1, 95, 1.7.k, Quasar(9)),
Prize(Rookie, 67, 52, 1, 1, 94, 1.7.k, Quasar(9)),
Prize(Rookie, 68, 52, 1, 1, 92, 1.7.k, Quasar(9)),
Prize(Rookie, 69, 52, 1, 1, 91, 1.7.k, Quasar(9)),
Prize(Rookie, 70, 52, 1, 1, 90, 1.7.k, Quasar(9)),
Prize(Rookie, 71, 52, 1, 1, 89, 1.7.k, Quasar(9)),
Prize(Rookie, 72, 52, 1, 1, 88, 1.7.k, Quasar(9)),
Prize(Rookie, 73, 52, 1, 1, 87, 1.7.k, Quasar(9)),
Prize(Rookie, 74, 52, 1, 1, 86, 1.7.k, Quasar(9)),
Prize(Rookie, 75, 52, 1, 1, 85, 1.7.k, Quasar(9)),
Prize(Rookie, 76, 52, 1, 1, 84, 1.0.k, Quasar(9)),
Prize(Rookie, 77, 52, 1, 1, 83, 1.0.k, Quasar(9)),
Prize(Rookie, 78, 52, 1, 1, 83, 1.0.k, Quasar(9)),
Prize(Rookie, 79, 52, 1, 1, 82, 1.0.k, Quasar(9)),
Prize(Rookie, 80, 52, 1, 1, 81, 1.0.k, Quasar(9)),
Prize(Rookie, 81, 52, 1, 1, 80, 1.0.k, Quasar(9)),
Prize(Rookie, 82, 52, 1, 1, 79, 1.0.k, Quasar(9)),
Prize(Rookie, 83, 52, 1, 1, 78, 1.0.k, Quasar(9)),
Prize(Rookie, 84, 52, 1, 1, 77, 1.0.k, Quasar(9)),
Prize(Rookie, 85, 52, 1, 1, 76, 1.0.k, Quasar(9)),
Prize(Rookie, 86, 52, 1, 1, 75, 1.0.k, Quasar(9)),
Prize(Rookie, 87, 52, 1, 1, 75, 1.0.k, Quasar(9)),
Prize(Rookie, 88, 52, 1, 1, 74, 1.0.k, Quasar(9)),
Prize(Rookie, 89, 52, 1, 1, 73, 1.0.k, Quasar(9)),
Prize(Rookie, 90, 52, 1, 1, 72, 1.0.k, Quasar(9)),
Prize(Rookie, 91, 52, 1, 1, 71, 1.0.k, Quasar(9)),
Prize(Rookie, 92, 52, 1, 1, 71, 1.0.k, Quasar(9)),
Prize(Rookie, 93, 52, 1, 1, 70, 1.0.k, Quasar(9)),
Prize(Rookie, 94, 52, 1, 1, 69, 1.0.k, Quasar(9)),
Prize(Rookie, 95, 52, 1, 1, 68, 1.0.k, Quasar(9)),
Prize(Rookie, 96, 52, 1, 1, 67, 1.0.k, Quasar(9)),
Prize(Rookie, 97, 52, 1, 1, 67, 1.0.k, Quasar(9)),
Prize(Rookie, 98, 52, 1, 1, 66, 1.0.k, Quasar(9)),
Prize(Rookie, 99, 52, 1, 1, 65, 1.0.k, Quasar(9)),
Prize(Rookie, 100, 52, 1, 1, 64, 1.0.k, Quasar(9)),
)
val pro = List(
Prize(Pro, 1, 240, 80, 80, 1600, 3.mil, KingMaker(120), Titan(50)),
Prize(Pro, 2, 196, 76, 40, 1220, 1.5.mil, KingMaker(60), Titan(30)),
Prize(Pro, 3, 177, 73, 24, 1030, 900.k, KingMaker(50), Titan(25)),
Prize(Pro, 4, 165, 69, 16, 910, 600.k, KingMaker(30), Titan(18)),
Prize(Pro, 5, 161, 66, 15, 825, 570.k, KingMaker(30), Titan(18)),
Prize(Pro, 6, 158, 63, 15, 755, 540.k, KingMaker(30), Titan(18)),
Prize(Pro, 7, 154, 60, 14, 705, 510.k, KingMaker(30), Titan(18)),
Prize(Pro, 8, 133, 40, 13, 660, 490.k, KingMaker(30), Titan(18)),
Prize(Pro, 9, 131, 38, 13, 625, 470.k, KingMaker(30), Titan(18)),
Prize(Pro, 10, 128, 36, 12, 590, 450.k, KingMaker(30), Titan(18)),
Prize(Pro, 11, 122, 34, 8, 565, 300.k, KingMaker(25)),
Prize(Pro, 12, 121, 33, 8, 540, 290.k, KingMaker(25)),
Prize(Pro, 13, 118, 31, 7, 515, 280.k, KingMaker(25)),
Prize(Pro, 14, 117, 30, 7, 500, 270.k, KingMaker(25)),
Prize(Pro, 15, 115, 28, 7, 480, 260.k, KingMaker(25)),
Prize(Pro, 16, 113, 27, 6, 465, 250.k, KingMaker(25)),
Prize(Pro, 17, 112, 26, 6, 450, 240.k, KingMaker(25)),
Prize(Pro, 18, 110, 24, 6, 435, 230.k, KingMaker(25)),
Prize(Pro, 19, 108, 23, 5, 425, 220.k, KingMaker(25)),
Prize(Pro, 20, 107, 22, 5, 410, 210.k, KingMaker(25)),
Prize(Pro, 21, 106, 21, 5, 400, 200.k, KingMaker(25)),
Prize(Pro, 22, 105, 20, 5, 390, 190.k, KingMaker(25)),
Prize(Pro, 23, 97, 13, 4, 380, 180.k, KingMaker(25)),
Prize(Pro, 24, 97, 13, 4, 370, 170.k, KingMaker(25)),
Prize(Pro, 25, 96, 12, 4, 365, 160.k, KingMaker(25)),
Prize(Pro, 26, 95, 12, 3, 355, 110.k, Katana(25)),
Prize(Pro, 27, 94, 11, 3, 350, 100.k, Katana(25)),
Prize(Pro, 28, 92, 10, 2, 340, 95.k, Katana(25)),
Prize(Pro, 29, 92, 10, 2, 335, 90.k, Katana(25)),
Prize(Pro, 30, 92, 10, 2, 330, 86.k, Katana(25)),
Prize(Pro, 31, 91, 9, 2, 325, 82.k, Katana(25)),
Prize(Pro, 32, 91, 9, 2, 315, 78.k, Katana(25)),
Prize(Pro, 33, 90, 8, 2, 310, 74.k, Katana(25)),
Prize(Pro, 34, 90, 8, 2, 305, 70.k, Katana(25)),
Prize(Pro, 35, 89, 7, 2, 300, 67.k, Katana(25)),
Prize(Pro, 36, 89, 7, 2, 295, 64.k, Katana(25)),
Prize(Pro, 37, 89, 7, 2, 290, 61.k, Katana(25)),
Prize(Pro, 38, 88, 6, 2, 290, 58.k, Katana(25)),
Prize(Pro, 39, 88, 6, 2, 285, 55.k, Katana(25)),
Prize(Pro, 40, 88, 6, 2, 280, 52.k, Katana(25)),
Prize(Pro, 41, 88, 6, 2, 275, 50.k, Katana(25)),
Prize(Pro, 42, 88, 6, 2, 270, 48.k, Katana(25)),
Prize(Pro, 43, 87, 5, 2, 270, 46.k, Katana(25)),
Prize(Pro, 44, 87, 5, 2, 265, 44.k, Katana(25)),
Prize(Pro, 45, 87, 5, 2, 260, 42.k, Katana(25)),
Prize(Pro, 46, 87, 5, 2, 260, 40.k, Katana(25)),
Prize(Pro, 47, 87, 5, 2, 255, 38.k, Katana(25)),
Prize(Pro, 48, 85, 3, 2, 250, 37.k, Katana(25)),
Prize(Pro, 49, 85, 3, 2, 250, 36.k, Katana(25)),
Prize(Pro, 50, 85, 3, 2, 245, 35.k, Katana(25)),
Prize(Pro, 51, 85, 3, 2, 245, 23.k, Katana(15)),
Prize(Pro, 52, 85, 3, 2, 240, 22.k, Katana(15)),
Prize(Pro, 53, 85, 3, 2, 240, 21.k, Katana(15)),
Prize(Pro, 54, 85, 3, 2, 235, 20.k, Katana(15)),
Prize(Pro, 55, 84, 2, 2, 235, 19.k, Katana(15)),
Prize(Pro, 56, 84, 2, 2, 230, 18.k, Katana(15)),
Prize(Pro, 57, 84, 2, 2, 230, 17.k, Katana(15)),
Prize(Pro, 58, 84, 2, 2, 225, 17.k, Katana(15)),
Prize(Pro, 59, 84, 2, 2, 225, 17.k, Katana(15)),
Prize(Pro, 60, 84, 2, 2, 220, 17.k, Katana(15)),
Prize(Pro, 61, 84, 2, 2, 220, 17.k, Katana(15)),
Prize(Pro, 62, 84, 2, 2, 220, 17.k, Katana(15)),
Prize(Pro, 63, 84, 2, 2, 215, 17.k, Katana(15)),
Prize(Pro, 64, 84, 2, 2, 215, 17.k, Katana(15)),
Prize(Pro, 65, 84, 2, 2, 210, 17.k, Katana(15)),
Prize(Pro, 66, 84, 2, 2, 210, 17.k, Katana(15)),
Prize(Pro, 67, 84, 2, 2, 210, 17.k, Katana(15)),
Prize(Pro, 68, 84, 2, 2, 205, 17.k, Katana(15)),
Prize(Pro, 69, 84, 2, 2, 205, 17.k, Katana(15)),
Prize(Pro, 70, 84, 2, 2, 205, 17.k, Katana(15)),
Prize(Pro, 71, 84, 2, 2, 200, 17.k, Katana(15)),
Prize(Pro, 72, 84, 2, 2, 200, 17.k, Katana(15)),
Prize(Pro, 73, 84, 2, 2, 200, 17.k, Katana(15)),
Prize(Pro, 74, 84, 2, 2, 200, 17.k, Katana(15)),
Prize(Pro, 75, 84, 2, 2, 195, 17.k, Katana(15)),
Prize(Pro, 76, 84, 2, 2, 195, 10.k, Navigator(9)),
Prize(Pro, 77, 84, 2, 2, 195, 10.k, Navigator(9)),
Prize(Pro, 78, 84, 2, 2, 190, 10.k, Navigator(9)),
Prize(Pro, 79, 84, 2, 2, 190, 10.k, Navigator(9)),
Prize(Pro, 80, 84, 2, 2, 190, 10.k, Navigator(9)),
Prize(Pro, 81, 84, 2, 2, 190, 10.k, Navigator(9)),
Prize(Pro, 82, 84, 2, 2, 185, 10.k, Navigator(9)),
Prize(Pro, 83, 84, 2, 2, 185, 10.k, Navigator(9)),
Prize(Pro, 84, 84, 2, 2, 185, 10.k, Navigator(9)),
Prize(Pro, 85, 84, 2, 2, 185, 10.k, Navigator(9)),
Prize(Pro, 86, 84, 2, 2, 180, 10.k, Navigator(9)),
Prize(Pro, 87, 84, 2, 2, 180, 10.k, Navigator(9)),
Prize(Pro, 88, 84, 2, 2, 180, 10.k, Navigator(9)),
Prize(Pro, 89, 84, 2, 2, 180, 10.k, Navigator(9)),
Prize(Pro, 90, 84, 2, 2, 180, 10.k, Navigator(9)),
Prize(Pro, 91, 84, 2, 2, 175, 10.k, Navigator(9)),
Prize(Pro, 92, 84, 2, 2, 175, 10.k, Navigator(9)),
Prize(Pro, 93, 84, 2, 2, 175, 10.k, Navigator(9)),
Prize(Pro, 94, 84, 2, 2, 175, 10.k, Navigator(9)),
Prize(Pro, 95, 84, 2, 2, 175, 10.k, Navigator(9)),
Prize(Pro, 96, 84, 2, 2, 170, 10.k, Navigator(9)),
Prize(Pro, 97, 84, 2, 2, 170, 10.k, Navigator(9)),
Prize(Pro, 98, 84, 2, 2, 170, 10.k, Navigator(9)),
Prize(Pro, 99, 84, 2, 2, 170, 10.k, Navigator(9)),
Prize(Pro, 100, 84, 2, 2, 170, 10.k, Navigator(9)),
)
val expert = List(
Prize(Expert, 1, 450, 150, 150, 3840, 30.mil, KingMaker(200), Titan(100)),
Prize(Expert, 2, 368, 143, 75, 3030, 15.mil, KingMaker(150), Titan(75)),
Prize(Expert, 3, 331, 136, 45, 2610, 9.mil, KingMaker(100), Titan(50)),
Prize(Expert, 4, 310, 130, 30, 2320, 6.mil, KingMaker(50), Titan(36)),
Prize(Expert, 5, 302, 123, 29, 2110, 5.71.mil, KingMaker(50), Titan(36)),
Prize(Expert, 6, 295, 118, 27, 1950, 5.44.mil, KingMaker(50), Titan(36)),
Prize(Expert, 7, 288, 112, 26, 1810, 5.18.mil, KingMaker(50), Titan(36)),
Prize(Expert, 8, 250, 75, 25, 1700, 4.93.mil, KingMaker(50), Titan(36)),
Prize(Expert, 9, 245, 71, 24, 1610, 4.7.mil, KingMaker(50), Titan(36)),
Prize(Expert, 10, 240, 68, 22, 1520, 4.48.mil, KingMaker(50), Titan(36)),
Prize(Expert, 11, 229, 64, 15, 1450, 2.99.mil, KingMaker(25), Titan(25)),
Prize(Expert, 12, 225, 61, 14, 1390, 2.85.mil, KingMaker(25), Titan(25)),
Prize(Expert, 13, 222, 58, 14, 1330, 2.71.mil, KingMaker(25), Titan(25)),
Prize(Expert, 14, 219, 56, 13, 1280, 2.58.mil, KingMaker(25), Titan(25)),
Prize(Expert, 15, 215, 53, 12, 1230, 2.46.mil, KingMaker(25), Titan(25)),
Prize(Expert, 16, 213, 51, 12, 1180, 2.34.mil, KingMaker(25), Titan(25)),
Prize(Expert, 17, 209, 48, 11, 1140, 2.23.mil, KingMaker(25), Titan(25)),
Prize(Expert, 18, 207, 46, 11, 1110, 2.12.mil, KingMaker(25), Titan(25)),
Prize(Expert, 19, 204, 44, 10, 1070, 2.02.mil, KingMaker(25), Titan(25)),
Prize(Expert, 20, 202, 42, 10, 1040, 1.92.mil, KingMaker(25), Titan(25)),
Prize(Expert, 21, 199, 40, 9, 1010, 1.83.mil, KingMaker(25), Titan(25)),
Prize(Expert, 22, 197, 38, 9, 980, 1.74.mil, KingMaker(25), Titan(25)),
Prize(Expert, 23, 183, 25, 8, 955, 1.66.mil, KingMaker(25), Titan(25)),
Prize(Expert, 24, 182, 24, 8, 930, 1.58.mil, KingMaker(25), Titan(25)),
Prize(Expert, 25, 181, 23, 8, 905, 1.50.mil, KingMaker(25), Titan(25)),
Prize(Expert, 26, 181, 22, 10, 880, 1.00.mil, KingMaker(25)),
Prize(Expert, 27, 182, 21, 10, 860, 950.k, KingMaker(25)),
Prize(Expert, 28, 179, 20, 9, 840, 900.k, KingMaker(25)),
Prize(Expert, 29, 178, 19, 9, 820, 860.k, KingMaker(25)),
Prize(Expert, 30, 176, 18, 8, 805, 820.k, KingMaker(25)),
Prize(Expert, 31, 175, 17, 8, 785, 780.k, KingMaker(25)),
Prize(Expert, 32, 173, 16, 7, 770, 740.k, KingMaker(25)),
Prize(Expert, 33, 172, 15, 7, 755, 700.k, KingMaker(25)),
Prize(Expert, 34, 172, 15, 7, 740, 670.k, KingMaker(25)),
Prize(Expert, 35, 170, 14, 6, 725, 640.k, KingMaker(25)),
Prize(Expert, 36, 169, 13, 6, 710, 610.k, KingMaker(25)),
Prize(Expert, 37, 169, 13, 6, 695, 580.k, KingMaker(25)),
Prize(Expert, 38, 168, 12, 6, 685, 550.k, KingMaker(25)),
Prize(Expert, 39, 167, 12, 5, 670, 520.k, KingMaker(25)),
Prize(Expert, 40, 166, 11, 5, 660, 500.k, KingMaker(25)),
Prize(Expert, 41, 166, 11, 5, 650, 480.k, KingMaker(25)),
Prize(Expert, 42, 165, 10, 5, 635, 460.k, KingMaker(25)),
Prize(Expert, 43, 164, 10, 4, 625, 440.k, KingMaker(25)),
Prize(Expert, 44, 164, 10, 4, 615, 420.k, KingMaker(25)),
Prize(Expert, 45, 163, 9, 4, 605, 400.k, KingMaker(25)),
Prize(Expert, 46, 163, 9, 4, 595, 380.k, KingMaker(25)),
Prize(Expert, 47, 162, 8, 4, 585, 370.k, KingMaker(25)),
Prize(Expert, 48, 160, 6, 4, 580, 360.k, KingMaker(25)),
Prize(Expert, 49, 159, 5, 4, 570, 350.k, KingMaker(25)),
Prize(Expert, 50, 159, 5, 4, 560, 340.k, KingMaker(25)),
Prize(Expert, 51, 158, 5, 3, 555, 230.k, Titan(25)),
Prize(Expert, 52, 158, 5, 3, 545, 220.k, Titan(25)),
Prize(Expert, 53, 158, 5, 3, 535, 210.k, Titan(25)),
Prize(Expert, 54, 158, 5, 3, 530, 200.k, Titan(25)),
Prize(Expert, 55, 158, 5, 3, 520, 190.k, Titan(25)),
Prize(Expert, 56, 157, 4, 3, 515, 180.k, Titan(25)),
Prize(Expert, 57, 157, 4, 3, 510, 170.k, Titan(25)),
Prize(Expert, 58, 157, 4, 3, 500, 170.k, Titan(25)),
Prize(Expert, 59, 157, 4, 3, 495, 170.k, Titan(25)),
Prize(Expert, 60, 157, 4, 3, 490, 170.k, Titan(25)),
Prize(Expert, 61, 157, 4, 3, 485, 170.k, Titan(25)),
Prize(Expert, 62, 157, 4, 3, 475, 170.k, Titan(25)),
Prize(Expert, 63, 157, 4, 3, 470, 170.k, Titan(25)),
Prize(Expert, 64, 157, 4, 3, 465, 170.k, Titan(25)),
Prize(Expert, 65, 156, 3, 3, 460, 170.k, Titan(25)),
Prize(Expert, 66, 156, 3, 3, 455, 170.k, Titan(25)),
Prize(Expert, 67, 156, 3, 3, 450, 170.k, Titan(25)),
Prize(Expert, 68, 156, 3, 3, 445, 170.k, Titan(25)),
Prize(Expert, 69, 156, 3, 3, 440, 170.k, Titan(25)),
Prize(Expert, 70, 156, 3, 3, 435, 170.k, Titan(25)),
Prize(Expert, 71, 156, 3, 3, 430, 170.k, Titan(25)),
Prize(Expert, 72, 156, 3, 3, 425, 170.k, Titan(25)),
Prize(Expert, 73, 156, 3, 3, 420, 170.k, Titan(25)),
Prize(Expert, 74, 156, 3, 3, 415, 170.k, Titan(25)),
Prize(Expert, 75, 156, 3, 3, 410, 170.k, Titan(25)),
Prize(Expert, 76, 156, 3, 3, 405, 100.k, Titan(9)),
Prize(Expert, 77, 156, 3, 3, 405, 100.k, Titan(9)),
Prize(Expert, 78, 156, 3, 3, 400, 100.k, Titan(9)),
Prize(Expert, 79, 156, 3, 3, 395, 100.k, Titan(9)),
Prize(Expert, 80, 156, 3, 3, 390, 100.k, Titan(9)),
Prize(Expert, 81, 156, 3, 3, 390, 100.k, Titan(9)),
Prize(Expert, 82, 156, 3, 3, 385, 100.k, Titan(9)),
Prize(Expert, 83, 156, 3, 3, 380, 100.k, Titan(9)),
Prize(Expert, 84, 156, 3, 3, 375, 100.k, Titan(9)),
Prize(Expert, 85, 156, 3, 3, 375, 100.k, Titan(9)),
Prize(Expert, 86, 156, 3, 3, 370, 100.k, Titan(9)),
Prize(Expert, 87, 156, 3, 3, 365, 100.k, Titan(9)),
Prize(Expert, 88, 156, 3, 3, 365, 100.k, Titan(9)),
Prize(Expert, 89, 156, 3, 3, 360, 100.k, Titan(9)),
Prize(Expert, 90, 156, 3, 3, 355, 100.k, Titan(9)),
Prize(Expert, 91, 156, 3, 3, 355, 100.k, Titan(9)),
Prize(Expert, 92, 156, 3, 3, 350, 100.k, Titan(9)),
Prize(Expert, 93, 156, 3, 3, 350, 100.k, Titan(9)),
Prize(Expert, 94, 156, 3, 3, 345, 100.k, Titan(9)),
Prize(Expert, 95, 156, 3, 3, 345, 100.k, Titan(9)),
Prize(Expert, 96, 156, 3, 3, 340, 100.k, Titan(9)),
Prize(Expert, 97, 156, 3, 3, 335, 100.k, Titan(9)),
Prize(Expert, 98, 156, 3, 3, 335, 100.k, Titan(9)),
Prize(Expert, 99, 156, 3, 3, 330, 100.k, Titan(9)),
Prize(Expert, 100, 156, 3, 3, 330, 100.k, Titan(9)),
)
val masters = List(
Prize(Masters, 1, 750, 250, 250, 11800, 300.mil, KingMaker(250), Berserker(125)),
Prize(Masters, 2, 613, 238, 125, 9770, 150.mil, KingMaker(175), Berserker(75)),
Prize(Masters, 3, 552, 227, 75, 8640, 90.mil, KingMaker(125), Berserker(50)),
Prize(Masters, 4, 516, 216, 50, 7880, 60.mil, KingMaker(75), Berserker(36)),
Prize(Masters, 5, 504, 206, 48, 7310, 57.14.mil, KingMaker(75), Berserker(36)),
Prize(Masters, 6, 491, 196, 45, 6860, 54.42.mil, KingMaker(75), Berserker(36)),
Prize(Masters, 7, 480, 187, 43, 6480, 51.83.mil, KingMaker(75), Berserker(36)),
Prize(Masters, 8, 415, 124, 41, 6170, 49.36.mil, KingMaker(75), Berserker(36)),
Prize(Masters, 9, 407, 118, 39, 5890, 47.01.mil, KingMaker(75), Berserker(36)),
Prize(Masters, 10, 400, 113, 37, 5650, 44.77.mil, KingMaker(75), Berserker(36)),
Prize(Masters, 11, 382, 107, 25, 5430, 29.85.mil, KingMaker(50), Berserker(25)),
Prize(Masters, 12, 376, 102, 24, 5230, 28.43.mil, KingMaker(50), Berserker(25)),
Prize(Masters, 13, 370, 97, 23, 5060, 27.08.mil, KingMaker(50), Berserker(25)),
Prize(Masters, 14, 364, 93, 21, 4890, 25.79.mil, KingMaker(50), Berserker(25)),
Prize(Masters, 15, 358, 88, 20, 4740, 24.56.mil, KingMaker(50), Berserker(25)),
Prize(Masters, 16, 353, 84, 19, 4600, 23.39.mil, KingMaker(50), Berserker(25)),
Prize(Masters, 17, 349, 80, 19, 4470, 22.28.mil, KingMaker(50), Berserker(25)),
Prize(Masters, 18, 344, 76, 18, 4350, 21.22.mil, KingMaker(50), Berserker(25)),
Prize(Masters, 19, 340, 73, 17, 4230, 20.21.mil, KingMaker(50), Berserker(25)),
Prize(Masters, 20, 335, 69, 16, 4130, 19.25.mil, KingMaker(50), Berserker(25)),
Prize(Masters, 21, 331, 66, 15, 4020, 18.33.mil, KingMaker(50), Berserker(25)),
Prize(Masters, 22, 328, 63, 15, 3930, 17.46.mil, KingMaker(50), Berserker(25)),
Prize(Masters, 23, 306, 42, 14, 3830, 16.63.mil, KingMaker(50), Berserker(25)),
Prize(Masters, 24, 303, 40, 13, 3750, 15.84.mil, KingMaker(50), Berserker(25)),
Prize(Masters, 25, 301, 38, 13, 3660, 15.09.mil, KingMaker(50), Berserker(25)),
Prize(Masters, 26, 296, 36, 10, 3580, 10.06.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 27, 294, 34, 10, 3510, 9.58.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 28, 292, 33, 9, 3430, 9.12.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 29, 290, 31, 9, 3360, 8.69.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 30, 288, 30, 8, 3290, 8.28.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 31, 286, 28, 8, 3230, 7.89.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 32, 284, 27, 7, 3160, 7.51.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 33, 283, 26, 7, 3100, 7.15.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 34, 281, 24, 7, 3040, 6.81.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 35, 279, 23, 6, 2990, 6.49.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 36, 278, 22, 6, 2930, 6.18.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 37, 277, 21, 6, 2880, 5.89.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 38, 276, 20, 6, 2830, 5.61.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 39, 274, 19, 5, 2780, 5.34.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 40, 274, 19, 5, 2730, 5.09.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 41, 273, 18, 5, 2680, 4.85.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 42, 272, 17, 5, 2630, 4.66.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 43, 271, 17, 4, 2590, 4.48.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 44, 270, 16, 4, 2540, 4.31.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 45, 269, 15, 4, 2500, 4.14.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 46, 269, 15, 4, 2460, 3.98.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 47, 268, 14, 4, 2420, 3.83.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 48, 263, 9, 4, 2380, 3.68.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 49, 263, 9, 4, 2380, 3.54.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 50, 263, 9, 4, 2300, 3.40.mil, KingMaker(25), Berserker(9)),
Prize(Masters, 51, 262, 9, 3, 2260, 2.27.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 52, 261, 8, 3, 2220, 2.20.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 53, 261, 8, 3, 2190, 2.14.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 54, 261, 8, 3, 2150, 2.08.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 55, 261, 8, 3, 2120, 2.02.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 56, 260, 7, 3, 2090, 1.96.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 57, 260, 7, 3, 2050, 1.90.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 58, 260, 7, 3, 2020, 1.84.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 59, 260, 7, 3, 1990, 1.79.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 60, 260, 7, 3, 1960, 1.74.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 61, 259, 6, 3, 1930, 1.69.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 62, 259, 6, 3, 1900, 1.64.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 63, 259, 6, 3, 1870, 1.59.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 64, 259, 6, 3, 1840, 1.54.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 65, 259, 6, 3, 1810, 1.50.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 66, 259, 6, 3, 1780, 1.46.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 67, 258, 5, 3, 1750, 1.42.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 68, 258, 5, 3, 1730, 1.38.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 69, 258, 5, 3, 1700, 1.34.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 70, 258, 5, 3, 1670, 1.30.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 71, 258, 5, 3, 1650, 1.26.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 72, 258, 5, 3, 1620, 1.22.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 73, 257, 4, 3, 1600, 1.18.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 74, 257, 4, 3, 1570, 1.15.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 75, 257, 4, 3, 1550, 1.12.mil, KingMaker(9), Berserker(9)),
Prize(Masters, 76, 257, 4, 3, 1520, 660.k, Berserker(9)),
Prize(Masters, 77, 257, 4, 3, 1500, 660.k, Berserker(9)),
Prize(Masters, 78, 257, 4, 3, 1470, 660.k, Berserker(9)),
Prize(Masters, 79, 257, 4, 3, 1450, 660.k, Berserker(9)),
Prize(Masters, 80, 257, 4, 3, 1430, 660.k, Berserker(9)),
Prize(Masters, 81, 257, 4, 3, 1410, 660.k, Berserker(9)),
Prize(Masters, 82, 257, 4, 3, 1380, 660.k, Berserker(9)),
Prize(Masters, 83, 257, 4, 3, 1360, 660.k, Berserker(9)),
Prize(Masters, 84, 257, 4, 3, 1340, 660.k, Berserker(9)),
Prize(Masters, 85, 257, 4, 3, 1320, 660.k, Berserker(9)),
Prize(Masters, 86, 257, 4, 3, 1300, 660.k, Berserker(9)),
Prize(Masters, 87, 257, 4, 3, 1280, 660.k, Berserker(9)),
Prize(Masters, 88, 257, 4, 3, 1260, 660.k, Berserker(9)),
Prize(Masters, 89, 257, 4, 3, 1240, 660.k, Berserker(9)),
Prize(Masters, 90, 257, 4, 3, 1220, 660.k, Berserker(9)),
Prize(Masters, 91, 257, 4, 3, 1200, 660.k, Berserker(9)),
Prize(Masters, 92, 257, 4, 3, 1180, 660.k, Berserker(9)),
Prize(Masters, 93, 257, 4, 3, 1160, 660.k, Berserker(9)),
Prize(Masters, 94, 257, 4, 3, 1140, 660.k, Berserker(9)),
Prize(Masters, 95, 257, 4, 3, 1120, 660.k, Berserker(9)),
Prize(Masters, 96, 257, 4, 3, 1100, 660.k, Berserker(9)),
Prize(Masters, 97, 257, 4, 3, 1080, 660.k, Berserker(9)),
Prize(Masters, 98, 257, 4, 3, 1070, 660.k, Berserker(9)),
Prize(Masters, 99, 257, 4, 3, 1050, 660.k, Berserker(9)),
Prize(Masters, 100, 257, 4, 3, 1030, 660.k, Berserker(9)),
)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment