diff options
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/built_hearth_amenity.rb | 4 | ||||
-rw-r--r-- | app/models/character.rb | 15 |
2 files changed, 18 insertions, 1 deletions
diff --git a/app/models/built_hearth_amenity.rb b/app/models/built_hearth_amenity.rb index 39b6679..a1e35e8 100644 --- a/app/models/built_hearth_amenity.rb +++ b/app/models/built_hearth_amenity.rb @@ -28,4 +28,8 @@ class BuiltHearthAmenity < ApplicationRecord seconds_until_cooled_down = cooldown - (Time.now - self.last_used_at) [0, seconds_until_cooled_down].max end + + def effects + self.hearth_amenity.whatnot[:effects]&.reject { |e| e[:level] > self.level } + end end diff --git a/app/models/character.rb b/app/models/character.rb index d1faeb0..073a986 100644 --- a/app/models/character.rb +++ b/app/models/character.rb @@ -175,8 +175,21 @@ class Character < ApplicationRecord stats end + def effects + # TODO: Review this filter_map to see if it can be simplified + self.hearth.built_hearth_amenities.filter_map { |a| a.effects if a.effects }.flatten + end + + def total_stat_change(stat) + effects.filter_map { |e| e[:modifier] if e[:type] == "stat_change" }.sum + end + def can_fight? - self.wounds < 1 + self.wounds < max_wounds + end + + def max_wounds + 1 + total_stat_change("max_wounds") end def max_hp |