class MonsterSpawn < ApplicationRecord belongs_to :monster belongs_to :location has_many :monster_spawn_combats after_create :send_chat_message def alive? self.remaining_hp > 0 end def remaining_hp self.monster.max_hp - MonsterSpawnCombat.where(monster_spawn: self).sum(:hp_lost) end private def send_chat_message chat_message = ChatMessage.new(body: "A leviathan has appeared in #{location.name}!", chat_room: ChatRoom.find_by_gid("news")) if chat_message.save ChatRoomChannel.broadcast_chat_message(chat_message) end end end