aboutsummaryrefslogtreecommitdiff
path: root/iada.rb
diff options
context:
space:
mode:
authorNat Lasseter <user@4574.co.uk>2021-01-02 23:46:21 +0000
committerNat Lasseter <user@4574.co.uk>2021-01-02 23:46:21 +0000
commitec139dec8d3fed850980015a73ad8cfebba2a18c (patch)
treed00a1ac3a7207afc6c042e8d96902be4fb85bca9 /iada.rb
parent94763da601524ed92565d4bcdbbcf37653d7f191 (diff)
Added remind, moxie, init, and help
Diffstat (limited to 'iada.rb')
-rwxr-xr-xiada.rb59
1 files changed, 48 insertions, 11 deletions
diff --git a/iada.rb b/iada.rb
index 0c6022d..f955564 100755
--- a/iada.rb
+++ b/iada.rb
@@ -2,13 +2,7 @@
require 'discordrb'
-bot = Discordrb::Commands::CommandBot.new token: ENV['DISCORD_TOKEN'], client_id: ENV['DISCORD_ID'], prefix: '!'
-
-bot.command :vs do |event, vs, *fr|
- vs = vs.to_i
-
- roll = rand(100)
-
+def human_result(name, roll, vs, fr, prefix = "")
case roll
when 0
crit = true
@@ -25,12 +19,55 @@ bot.command :vs do |event, vs, *fr|
end
sig = diff > 30
+ prefix + "#{name} rolled `#{roll}` against `#{vs}`" +
+ "#{fr.empty? ? "" : " for \"#{fr.join(' ')}\""}. " +
+ "That is a _#{sig ? "significant " : ""}#{crit ? "**critical** " : ""}#{success ? "success" : "failure"}_ " +
+ "by `#{diff}` (#{diff / 10} Mo#{success ? "S" : "F"})."
+end
+
+last_roll = {}
+
+bot = Discordrb::Commands::CommandBot.new token: ENV['DISCORD_TOKEN'], client_id: ENV['DISCORD_ID'], prefix: '!'
+
+bot.command(:vs, description: "Roll a d100 (0-99) against a target number, with optional comment.") do |event, vs, *fr|
+ vs = vs.to_i
+ roll = rand(100)
+
+ last_roll[event.author.id] = [roll, vs, fr]
+
+ res = human_result(event.author.display_name, roll, vs, fr)
+ puts res
+ res
+end
+
+bot.command(:moxie, description: "Perform a moxie digit swap on your last vs roll.") do |event|
+ roll, vs, fr = last_roll[event.author.id]
+ roll = ((roll % 10) * 10) + (roll / 10)
+
+ last_roll[event.author.id] = [roll, vs, fr]
+
+ res = human_result(event.author.display_name, roll, vs, fr, "Moxie swap: ")
+ puts res
+ res
+end
+
+bot.command(:remind, description: "Get a reminder of your last vs roll.") do |event|
+ roll, vs, fr = last_roll[event.author.id]
+
+ res = human_result(event.author.display_name, roll, vs, fr, "Reminder: ")
+ puts res
+ res
+end
+
+bot.command(:init, description: "Roll a d10 (1-10) and add an init modifier, with two tie-break d10 (0-9) rolloffs.") do |event, mod|
+ mod = mod.to_i
+ roll = rand(10) + 1
+ tot = roll + mod
- res = "#{event.author.display_name} rolled `#{roll}` against `#{vs}`" +
- "#{fr.empty? ? "" : " for \"#{fr.join(' ')}\""}. " +
- "That is a _#{sig ? "significant " : ""}#{crit ? "**critical** " : ""}#{success ? "success" : "failure"}_ " +
- "by `#{diff}` (#{diff / 10} Mo#{success ? "S" : "F"})."
+ d1 = rand(10)
+ d2 = rand(10)
+ res = "#{event.author.display_name} rolled `#{roll}` and scored `#{tot}.#{d1}#{d2}` for initiative."
puts res
res
end