summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorDavid Gay <david@davidgay.org>2021-07-14 17:08:56 -0400
committerDavid Gay <david@davidgay.org>2021-07-14 17:08:56 -0400
commitf02a38cfc1a38a0c1fdc4d00cc10f47bb987b7d0 (patch)
tree2c4c02063d2585d720eee4bde06b35106dc0c097 /app/models
parent847ee6ee3d41efe04a46b263e56027db0cf3ee64 (diff)
Only allow one living monster_spawn per location
Diffstat (limited to 'app/models')
-rw-r--r--app/models/monster_spawn.rb8
1 files changed, 8 insertions, 0 deletions
diff --git a/app/models/monster_spawn.rb b/app/models/monster_spawn.rb
index 5162cc6..42db98a 100644
--- a/app/models/monster_spawn.rb
+++ b/app/models/monster_spawn.rb
@@ -7,6 +7,7 @@ class MonsterSpawn < ApplicationRecord
after_create :send_chat_message
validates :starting_hp, presence: true, numericality: { greater_than_or_equal_to: 1, only_integer: true }
+ validate :one_living_leviathan_per_location, on: :create
def alive?
self.remaining_hp > 0
@@ -28,4 +29,11 @@ class MonsterSpawn < ApplicationRecord
ChatRoomChannel.broadcast_chat_message(chat_message)
end
end
+
+ def one_living_leviathan_per_location
+ # TODO: Don't load into memory
+ if location.monster_spawns.find { |ms| ms.alive? && ms != self }
+ errors.add(:chat, "A location can only have one monster spawn at a time.")
+ end
+ end
end