summaryrefslogtreecommitdiff
path: root/app/controllers/game_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/game_controller.rb')
-rw-r--r--app/controllers/game_controller.rb14
1 files changed, 13 insertions, 1 deletions
diff --git a/app/controllers/game_controller.rb b/app/controllers/game_controller.rb
index 3516056..f5fd4a9 100644
--- a/app/controllers/game_controller.rb
+++ b/app/controllers/game_controller.rb
@@ -3,17 +3,29 @@ class GameController < ApplicationController
@results = []
return unless current_char.activity_time_remaining <= 0
current_char.update(activity_started_at: Time.now)
+
current_char.activity.whatnot["results"].each do |result|
type = result["type"]
case type
when "item"
next if rand > result["chance"]
table_roll = rand
+
result["table"].sort_by { |_, v| -v["score"] }.each do |item_gid, item_data|
quantity = item_data["quantity"] || 1
if table_roll >= item_data["score"]
+ item = Item.find_by_gid(item_gid)
+ xp_awards = {}
+ if item.whatnot && item.whatnot.key?("xp_value")
+ xp_awards = item.whatnot["xp_value"]
+ .map { |gid, amount| { skill: Skill.find_by_gid(gid), amount: amount } }
+ xp_awards.each do |award|
+ current_char.add_skill_xp(award[:skill], award[:amount])
+ end
+ end
current_char.shift_item(item_gid, quantity)
- @results.push({ type: type, item: Item.find_by_gid(item_gid), quantity: quantity })
+ @results.push({ type: type, item: Item.find_by_gid(item_gid), quantity: quantity,
+ xp: xp_awards })
break
end
end