From 7247a6fb0b3b374f3dac651bd2b133bcb5303534 Mon Sep 17 00:00:00 2001 From: David Gay Date: Wed, 26 May 2021 21:26:58 -0400 Subject: Simple effect checking allows listern font level 2 to have an effect --- app/models/built_hearth_amenity.rb | 4 ++++ app/models/character.rb | 15 ++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) (limited to 'app/models') 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 -- cgit v1.2.3