summaryrefslogtreecommitdiff
path: root/app/models/character.rb
diff options
context:
space:
mode:
authorDavid Gay <david@davidgay.org>2021-05-27 18:46:16 -0400
committerDavid Gay <david@davidgay.org>2021-05-27 18:46:16 -0400
commitbff4bccd4ff502e36161a5f1b916abefd14a912c (patch)
treed295ec395c761eea0af5ab0f7c7fd18600f97b85 /app/models/character.rb
parent65c1ee3dbaf5c0a030dd28a7e3f41d47c7652cb1 (diff)
Prevent actions you lack the skill level for
Diffstat (limited to 'app/models/character.rb')
-rw-r--r--app/models/character.rb14
1 files changed, 9 insertions, 5 deletions
diff --git a/app/models/character.rb b/app/models/character.rb
index 9eb34cf..1ff0a06 100644
--- a/app/models/character.rb
+++ b/app/models/character.rb
@@ -128,7 +128,7 @@ class Character < ApplicationRecord
duration - (Time.now - self.activity_started_at)
end
- def can_do_activity?(activity, ignore_cost: false)
+ def can_do_activity?(activity, ignore_cost: false, ignore_requirements: false)
return false unless activity.innate? || self.learned_activities.exists?(activity: activity)
unless ignore_cost
activity.whatnot[:cost]&.each do |cost|
@@ -138,10 +138,14 @@ class Character < ApplicationRecord
end
end
end
- activity.whatnot[:requirements]&.each do |requirement|
- case requirement[:type]
- when "hearth_amenity"
- return false unless self.hearth.has_amenity?(requirement[:gid], requirement[:level])
+ unless ignore_requirements
+ activity.whatnot[:requirements]&.each do |requirement|
+ case requirement[:type]
+ when "skill"
+ return false unless self.skill_level(requirement[:gid]) >= requirement[:level]
+ when "hearth_amenity"
+ return false unless self.hearth.has_amenity?(requirement[:gid], requirement[:level])
+ end
end
end
true