aboutsummaryrefslogtreecommitdiff
path: root/iada.rb
blob: 17aaa8295072239956b71c6fac4b53c2a3b84efd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/usr/bin/env ruby

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)

  case roll
  when 0
    crit = true
    success = true
    diff = max(vs - roll, 0)
  when 99
    crit = true
    success = false
    diff = (vs - roll).abs
  else
    crit = roll.to_s[0] == roll.to_s[1]
    success = roll <= vs
    diff = (vs - roll).abs
  end

  sig = diff > 30

  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"})."

  puts res
  res
end

bot.run