summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
Diffstat (limited to 'app/models')
-rw-r--r--app/models/character.rb6
-rw-r--r--app/models/item_infix.rb13
2 files changed, 19 insertions, 0 deletions
diff --git a/app/models/character.rb b/app/models/character.rb
index d386002..03bd510 100644
--- a/app/models/character.rb
+++ b/app/models/character.rb
@@ -9,6 +9,7 @@ class Character < ApplicationRecord
has_many :character_items
has_many :learned_activities
has_many :items, through: :character_items
+ has_many :item_infixes
has_many :character_skills
has_many :conditions, through: :states
has_many :states
@@ -182,6 +183,11 @@ class Character < ApplicationRecord
end
end
+ def max_infixes(skill)
+ skill = Skill.find_by_gid(skill) if skill.is_a? String
+ 1 + (skill_level(skill) / 20).floor
+ end
+
def add_skill_xp(skill, amount)
skill = Skill.find_by_gid(skill) if skill.is_a? String
Character.transaction do
diff --git a/app/models/item_infix.rb b/app/models/item_infix.rb
new file mode 100644
index 0000000..cc99ee7
--- /dev/null
+++ b/app/models/item_infix.rb
@@ -0,0 +1,13 @@
+class ItemInfix < ApplicationRecord
+ belongs_to :character
+ belongs_to :item
+ belongs_to :skill
+
+ before_create :check_max_infixes
+
+ private
+ def check_max_infixes
+ current_infixes = character.item_infixes.where(skill: skill)
+ raise :abort if current_infixes.count >= character.max_infixes(skill)
+ end
+end