package fmon.stat abstract class Secondary { val chance : Int val boosts : Map[Stat, Int] val status : StatusTemplate val volatile: StatusTemplate //val onHit : // val self } case class SecondaryToken( val chance : Int, val boosts : Map[String, Int], val status : String, val volatileStatus: String, val onHit : String ) { def instantiate() : Secondary = { val self = this new Secondary { val chance = self.chance val boosts = if (self.boosts != null) self.boosts.map{case (s, i) => (Statistic(s), i)} else Map() val status = if (self.status != null) Status(self.status) else null val volatile = if (self.volatileStatus != null) Status(self.volatileStatus) else null } } } object Secondary { }