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 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.health_points -= right_hp right_fighter.health_points -= right_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