From ec139dec8d3fed850980015a73ad8cfebba2a18c Mon Sep 17 00:00:00 2001 From: Nat Lasseter Date: Sat, 2 Jan 2021 23:46:21 +0000 Subject: Added remind, moxie, init, and help --- iada.rb | 59 ++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file 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 -- cgit v1.2.3