summaryrefslogtreecommitdiff
path: root/app/models/character.rb
diff options
context:
space:
mode:
authorDavid Gay <david@davidgay.org>2021-05-04 17:55:28 -0400
committerDavid Gay <david@davidgay.org>2021-05-04 17:57:12 -0400
commit73744a9c6840fb0ba6f285ca81f9fba75ec22d5f (patch)
tree837333e9e46c5ccc6cf50214a94c2b9b6d0bb7f3 /app/models/character.rb
parentdddbf75428477f5e073584939d098e55d6324be3 (diff)
Initial draft of timer setup, with results outputting and items being awarded
Diffstat (limited to 'app/models/character.rb')
-rw-r--r--app/models/character.rb15
1 files changed, 15 insertions, 0 deletions
diff --git a/app/models/character.rb b/app/models/character.rb
index 1e75b63..aa434ef 100644
--- a/app/models/character.rb
+++ b/app/models/character.rb
@@ -19,6 +19,21 @@ class Character < ApplicationRecord
end
end
+ def skill_level(gid)
+ self.character_skills.find_by(skill: Skill.find_by_gid(gid.to_s)).level
+ end
+
+ def activity_time_remaining
+ return nil unless self.activity
+ duration_data = self.activity.whatnot["duration"]
+ duration = duration_data["base"]
+ duration_data["scaling"].each do |skill, scaling_amount|
+ duration -= self.skill_level(skill) * scaling_amount
+ end
+ duration = [duration, duration_data["minimum"]].max
+ duration - (Time.now - self.activity_started_at)
+ end
+
private
def create_skills
Skill.all.each { |skill| self.character_skills.create(skill: skill, xp: 0) }