summaryrefslogtreecommitdiff
path: root/app/models/monster_kill.rb
blob: 24519b1ff3697038fee9ac25c5f2bc1a9e334944 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class MonsterKill < ApplicationRecord
  belongs_to :monster
  belongs_to :character

  validates :quantity, numericality: { greater_than_or_equal_to: 0, only_integer: true }
  scope :ordered_by_monster_name, -> { includes(:monster).order("monsters.name") }

  after_save :award_titles

  private
    def award_titles
      character.award_title("spiteful") if quantity >= 1000
      character.award_title("hateful") if quantity >= 10_000
      character.award_title("vicious") if quantity >= 100_000

      all_kills_quantity = character.monster_kills.sum(:quantity)
      character.award_title("slayer") if all_kills_quantity >= 1_000
      character.award_title("butcher") if all_kills_quantity >= 10_000
      character.award_title("slaughterer") if all_kills_quantity >= 100_000
      character.award_title("massacrer") if all_kills_quantity >= 1_000_000
    end
end