package fmon.stat import scala.util.Random import fmon._ import Statistic._ object Nature extends Enumeration { case class Val protected(boosts : Map[Stat, Double]) extends super.Val { def apply(s : Stat) = boosts.getOrElse(s, 1.0) } val Hardy = Val(Map()) val Lonely = Val(Map(PAtk -> 1.1, PDef -> 0.9)) val Brave = Val(Map(PAtk -> 1.1, Speed -> 0.9)) val Adamant = Val(Map(PAtk -> 1.1, MAtk -> 0.9)) val Naughty = Val(Map(PAtk -> 1.1, MDef -> 0.9)) val Bold = Val(Map(PDef -> 1.1, PAtk -> 0.9)) val Docile = Val(Map()) val Relaxed = Val(Map(PDef -> 1.1, Speed -> 0.9)) val Impish = Val(Map(PDef -> 1.1, MAtk -> 0.9)) val Lax = Val(Map(PDef -> 1.1, MDef -> 0.9)) val Timid = Val(Map(Speed -> 1.1, PAtk -> 0.9)) val Hasty = Val(Map(Speed -> 1.1, PDef -> 0.9)) val Serious = Val(Map()) val Jolly = Val(Map(Speed -> 1.1, MAtk -> 0.9)) val Naive = Val(Map(Speed -> 1.1, MDef -> 0.9)) val Modest = Val(Map(MAtk -> 1.1, PAtk -> 0.9)) val Mild = Val(Map(MAtk -> 1.1, PDef -> 0.9)) val Quiet = Val(Map(MAtk -> 1.1, Speed -> 0.9)) val Bashful = Val(Map()) val Rash = Val(Map(MAtk -> 1.1, MDef -> 0.9)) val Calm = Val(Map(MDef -> 1.1, PAtk -> 0.9)) val Gentle = Val(Map(MDef -> 1.1, PDef -> 0.9)) val Sassy = Val(Map(MDef -> 1.1, Speed -> 0.9)) val Careful = Val(Map(MDef -> 1.1, MAtk -> 0.9)) val Quirky = Val(Map()) def randomNature(implicit rng: Random) : Nature = rng.pick(natures) val natures = values.toIndexedSeq.map(_.asInstanceOf[Val]) }