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.
29 lines
809 B
29 lines
809 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 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
|