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 ++++++++++++++- app/views/characters/show.html.erb | 4 ++-- 3 files changed, 20 insertions(+), 3 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 diff --git a/app/views/characters/show.html.erb b/app/views/characters/show.html.erb index 84e1ff5..382cdc7 100644 --- a/app/views/characters/show.html.erb +++ b/app/views/characters/show.html.erb @@ -29,8 +29,8 @@ - - + + -- cgit v1.2.3
Current Wounds<%= @character.wounds %>Wounds<%= @character.wounds %> / <%= @character.max_wounds %>
Max HP