diff options
author | Nat Lasseter <user@4574.co.uk> | 2021-01-02 23:46:21 +0000 |
---|---|---|
committer | Nat Lasseter <user@4574.co.uk> | 2021-01-02 23:46:21 +0000 |
commit | ec139dec8d3fed850980015a73ad8cfebba2a18c (patch) | |
tree | d00a1ac3a7207afc6c042e8d96902be4fb85bca9 /iada.rb | |
parent | 94763da601524ed92565d4bcdbbcf37653d7f191 (diff) |
Added remind, moxie, init, and help
Diffstat (limited to 'iada.rb')
-rwxr-xr-x | iada.rb | 59 |
1 files changed, 48 insertions, 11 deletions
@@ -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 |