summaryrefslogtreecommitdiff
path: root/app/models/character.rb
diff options
context:
space:
mode:
authorDavid Gay <david@davidgay.org>2021-05-28 10:21:12 -0400
committerDavid Gay <david@davidgay.org>2021-05-28 10:21:12 -0400
commit04a81a4517c33d86cdebed9116bbd0a7656bd68d (patch)
tree3b817d0a4af5fc948c5d336dd7d9ecf825a7d889 /app/models/character.rb
parent87d006ed6b34d00274c72dba055ba4fbc2980212 (diff)
Refactor HA effects and equipment equip effects to use the same format, then include them both in Character#effects
Diffstat (limited to 'app/models/character.rb')
-rw-r--r--app/models/character.rb10
1 files changed, 6 insertions, 4 deletions
diff --git a/app/models/character.rb b/app/models/character.rb
index 1ff0a06..b06220b 100644
--- a/app/models/character.rb
+++ b/app/models/character.rb
@@ -174,7 +174,7 @@ class Character < ApplicationRecord
stats = {}
self.equipment.each do |eq|
eq.item.whatnot[:equip_effects]&.each do |effect|
- if effect[:type] == "stat"
+ if effect[:type] == "stat_change"
stats[effect[:gid]] ||= 0
stats[effect[:gid]] += effect[:modifier]
end
@@ -185,11 +185,13 @@ class Character < ApplicationRecord
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
+ hearth_amenity_effects = self.hearth.built_hearth_amenities.filter_map { |a| a.effects if a.effects }
+ equipment_effects = self.equipment.filter_map { |a| a.effects if a.effects }
+ (hearth_amenity_effects + equipment_effects).flatten
end
- def total_stat_change(stat)
- effects.filter_map { |e| e[:modifier] if e[:type] == "stat_change" && e[:stat] == stat }.sum
+ def total_stat_change(gid)
+ effects.filter_map { |e| e[:modifier] if e[:type] == "stat_change" && e[:gid] == gid }.sum
end
def can_fight?