summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorDavid Gay <david@davidgay.org>2021-06-15 19:54:29 -0400
committerDavid Gay <david@davidgay.org>2021-06-15 20:00:06 -0400
commitd2a31e04d19796a600a932a3491e056fe2c89af2 (patch)
tree36c43f03b12883c6dc4e2899e3c0ab1b8726b307 /app/models
parent53c9df5feb8ad4ebef8f40840d29255a81edb6df (diff)
Basic spellcasting
Diffstat (limited to 'app/models')
-rw-r--r--app/models/character.rb6
-rw-r--r--app/models/concerns/has_costs_and_requirements.rb2
-rw-r--r--app/models/item_infix.rb4
3 files changed, 11 insertions, 1 deletions
diff --git a/app/models/character.rb b/app/models/character.rb
index 4ee1f71..5ff067c 100644
--- a/app/models/character.rb
+++ b/app/models/character.rb
@@ -273,6 +273,9 @@ class Character < ApplicationRecord
case requirement[:type]
when "equipment"
return false unless self.equipment_with_gid(requirement[:gid])
+ when "stat"
+ # TODO: HACK: This won't work with built-in stats! Need to change this to work with power and whatnot.
+ return false unless self.total_stat_change(requirement[:gid]) >= requirement[:value]
when "skill"
return false unless self.skill_level(requirement[:gid]) >= requirement[:level]
when "hearth_amenity"
@@ -331,7 +334,8 @@ class Character < ApplicationRecord
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 }
state_effects = self.states.filter_map { |a| a.effects if a.effects && !a.expired? }
- (hearth_amenity_effects + equipment_effects + state_effects).flatten
+ item_infix_effects = self.item_infixes.filter_map { |a| a.effects if a.effects }
+ (hearth_amenity_effects + equipment_effects + state_effects + item_infix_effects).flatten
end
def total_stat_change(gid)
diff --git a/app/models/concerns/has_costs_and_requirements.rb b/app/models/concerns/has_costs_and_requirements.rb
index 34ff0f3..9f859f5 100644
--- a/app/models/concerns/has_costs_and_requirements.rb
+++ b/app/models/concerns/has_costs_and_requirements.rb
@@ -19,6 +19,8 @@ module HasCostsAndRequirements
case req[:type]
when "skill"
requirements.push "level #{req[:level]} #{Skill.find_by_gid(req[:gid]).name}"
+ when "stat"
+ requirements.push "#{req[:value]} #{req[:gid]}"
when "equipment"
requirements.push "equipped #{Item.find_by_gid(req[:gid]).name}"
when "hearth_amenity"
diff --git a/app/models/item_infix.rb b/app/models/item_infix.rb
index cc99ee7..3167320 100644
--- a/app/models/item_infix.rb
+++ b/app/models/item_infix.rb
@@ -5,6 +5,10 @@ class ItemInfix < ApplicationRecord
before_create :check_max_infixes
+ def effects
+ self.item.whatnot[:infix_effects]
+ end
+
private
def check_max_infixes
current_infixes = character.item_infixes.where(skill: skill)