diff options
Diffstat (limited to 'app/models/ptu_pokemon.rb')
-rw-r--r-- | app/models/ptu_pokemon.rb | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/app/models/ptu_pokemon.rb b/app/models/ptu_pokemon.rb index c34d32a..a351701 100644 --- a/app/models/ptu_pokemon.rb +++ b/app/models/ptu_pokemon.rb @@ -14,4 +14,36 @@ class PtuPokemon < ApplicationRecord "No gender" end end + + def random_stat_hash(level: 1) + nature = PtuNature.find(PtuNature.pluck(:id).sample) + points_to_assign = 10 + level + if self.male_chance + gender = 1 + rand(100) <= self.male_chance ? "Male" : "Female" + else + gender = "No gender" + end + hash = { + name: self.name, + level: level, + gender: gender, + nature: nature.name, + stats: { + hp: self.base_hp, + atk: self.base_atk, + def: self.base_def, + spatk: self.base_spatk, + spdef: self.base_spdef, + speed: self.base_speed, + } + } + points_to_assign.times do + stat = hash[:stats].keys.sample + hash[:stats][stat] += stat == :hp ? 1 : 2 + end + hash[:stats][nature.raises.to_sym] += nature.raises.to_sym == :hp ? 1 : 2 + hash[:stats][nature.lowers.to_sym] -= nature.lowers.to_sym == :hp ? 1 : 2 + hash[:stats][nature.lowers.to_sym] = [1, hash[:stats][nature.lowers.to_sym]].max + hash + end end |