diff options
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/character.rb | 31 |
1 files changed, 24 insertions, 7 deletions
diff --git a/app/models/character.rb b/app/models/character.rb index 003f8af..fd0f540 100644 --- a/app/models/character.rb +++ b/app/models/character.rb @@ -45,7 +45,7 @@ class Character < ApplicationRecord item = Item.find_by_gid(item) if item.is_a? String CharacterItem.transaction do ci = self.character_items.find_or_initialize_by(item: item) - ci.increment!(:quantity, amount) + ci.increment(:quantity, amount) ci.save! end end @@ -138,32 +138,49 @@ class Character < ApplicationRecord self.update(activity: activity, activity_started_at: Time.now) if self.can_do_activity?(activity) end + def equipment_stats + stats = {} + self.equipment.each do |eq| + eq.item.whatnot[:effects]&.each do |effect| + if effect[:type] == "stat" + stats[effect[:gid]] ||= 0 + stats[effect[:gid]] += effect[:modifier] + end + end + end + stats + end + def can_fight? self.wounds < 1 end def max_hp - 10 + self.beastslay_level + 10 + self.beastslay_level + (equipment_stats["max_hp"] || 0) end def speed - self.beastslay_level + self.beastslay_level + (equipment_stats["speed"] || 0) end def accuracy - self.beastslay_level + self.beastslay_level + (equipment_stats["accuracy"] || 0) end def power - self.beastslay_level + self.beastslay_level + (equipment_stats["power"] || 0) end def evasion - self.beastslay_level + self.beastslay_level + (equipment_stats["evasion"] || 0) end def block - self.beastslay_level + self.beastslay_level + (equipment_stats["block"] || 0) + end + + def block_value + equipment_stats["block_value"] || 0 end private |