summaryrefslogtreecommitdiff
path: root/app/lib
diff options
context:
space:
mode:
authorDavid Gay <david@davidgay.org>2021-07-08 10:05:46 -0400
committerDavid Gay <david@davidgay.org>2021-07-08 10:05:46 -0400
commit5f76daf2e8ad440bc40483d2b4309a0a78c944b4 (patch)
tree350344b6bfc79814a9250aa425be70d470b10bbd /app/lib
parent1f991995fdaabb8115e68578611df20ffba4bbf9 (diff)
Change how power works so that it can no longer more than double the rolled damage of each damage type
Diffstat (limited to 'app/lib')
-rw-r--r--app/lib/activity_processor.rb12
1 files changed, 9 insertions, 3 deletions
diff --git a/app/lib/activity_processor.rb b/app/lib/activity_processor.rb
index 5d80b15..72aa85d 100644
--- a/app/lib/activity_processor.rb
+++ b/app/lib/activity_processor.rb
@@ -289,9 +289,15 @@ class ActivityProcessor
end
end
- # Apply power to random damages
- actor.power.times do
- dealt_damage[dealt_damage.keys.sample] += 1
+ # Apply power to random damages, not allowing power to more than double the damage output
+ base_damage = dealt_damage.clone
+ remaining_power_to_distribute = actor.power
+ while remaining_power_to_distribute > 0 && dealt_damage.keys.select { |type| dealt_damage[type] < (base_damage[type] * 2) }.any? do
+ damage_type = dealt_damage.keys.sample
+ if dealt_damage[damage_type] < (base_damage[damage_type] * 2)
+ dealt_damage[dealt_damage.keys.sample] += 1
+ remaining_power_to_distribute -= 1
+ end
end
resolved_damage = {}