You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
931 B

class Combat < ApplicationRecord
enum :result, [:draw, :domination]
belongs_to :left_fighter, class_name: 'Creature'
belongs_to :right_fighter, class_name: 'Creature'
belongs_to :winner, class_name: 'Creature', optional: true
def to_label
return "Invalid combat" unless valid?
"Combat '#{name}' entre #{left_fighter.name} et #{right_fighter.name}"
end
def baston!
return if left_fighter.nil? || right_fighter.nil?
# on récupère les PVs d'abord, sinon l'ordre de l'attaque va affecter le résultat
left_hp = left_fighter.health_points
right_hp = right_fighter.health_points
left_fighter.get_hit(right_hp)
right_fighter.get_hit(left_hp)
if left_fighter.alive?
self.winner = left_fighter
self.result = :domination
elsif right_fighter.alive?
self.winner = right_fighter
self.result = :domination
else
self.result = :draw
end
end
end