X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=data%2Frbot%2Fplugins%2Fdice.rb;h=5de1af8e76220cedfa08caae3b7a19ce8cbdb430;hb=16336b4a240a4265d1f2df1e30d7b68d3a924287;hp=29ce53c87d36488113978302286cf3b7f11114b6;hpb=51b13b3c7dd7622b1f54d4fb49f678f76a2c160c;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git diff --git a/data/rbot/plugins/dice.rb b/data/rbot/plugins/dice.rb index 29ce53c8..5de1af8e 100644 --- a/data/rbot/plugins/dice.rb +++ b/data/rbot/plugins/dice.rb @@ -1,11 +1,14 @@ -################## -# Filename: dice.rb -# Description: Rbot plugin. Rolls rpg style dice -# Author: David Dorward (http://david.us-lot.org/ - you might find a more up to date version of this plugin there) -# Version: 0.3.2 -# Date: Sat 6 Apr 2002 +#-- vim:sw=2:et +#++ # -# You can get rbot from: http://www.linuxbrit.co.uk/rbot/ +# :title: dice plugin for rbot +# +# Author:: David Dorward (http://david.us-lot.org/ - you might find a more up to date version of this plugin there) +# Author:: Moritz Augsburger +# +# Description:: Rolls rpg style dice +# Version:: 0.4 +# Date:: Mon 8 Feb 2008 # # Changelog # 0.1 - Initial release @@ -14,11 +17,11 @@ # - Return results of each roll # 0.3.1 - Minor documentation update # 0.3.2 - Bug fix, could not subtract numbers (String can't be coerced into Fixnum) +# 0.4 - Limit number of dices and number of sides per dice # -# TODO: Test! Test! Test! -# Comment! -# Fumble/Critical counter (1's and x's where x is sides on dice) -#################################################### +# TODO:: Test! Test! Test! +# Comment! +# Fumble/Critical counter (1's and x's where x is sides on dice) class DiceDisplay attr_reader :total, :view, :dice @@ -50,7 +53,7 @@ class DicePlugin < Plugin dice = d.split(/d/) repr = [] r = 0 - unless dice[0] =~ /^[0-9]+/ + unless dice[0] =~ /^\d+/ dice[0] = 1 end for i in 0...dice[0].to_i @@ -83,28 +86,28 @@ class DicePlugin < Plugin def privmsg(m) # If either not given parameters or given incorrect parameters, return with # the help message - unless(m.params && m.params =~ /^[0-9]*d[0-9]+(\s*[+-]\s*([0-9]+|[0-9]*d[0-9])+)*$/) - m.nickreply "incorrect usage: " + help(m.plugin) + unless m.params && m.params =~ /^\d*d\d+(\s*[-]\s*(\d+|\d*d\d)+)*$/ + m.reply "incorrect usage: " + help(m.plugin) return end # Extract the actual dice request from the message parameters, splitting it # into dice and modifiers - a = m.params.gsub(/\s+/,'').scan(/^[0-9]*d[0-9]+|[+-][0-9]*d[0-9]+|[+-][0-9]+/) + a = m.params.gsub(/\s+/,'').scan(/^\d*d\d+|[+-]\d*d\d+|[+-]\d+/) # check nr of total dices and sides per dice nr = 0 a.each { |dice| dc, ds = dice.split(/d/) # check sides if ds.to_i > @bot.config['dice.max_sides'] - m.reply "sorry, don't have any dices with more than %u sides" % @bot.config['dice.max_sides'] + m.reply "sorry, don't have any dices with more than %u sides" % @bot.config['dice.max_sides'], :nick => true return end # We use .max with 1 so that specs such as d6 count as 1 and not as 0 nr += [dc.to_i, 1].max } if nr > @bot.config['dice.max_dices'] - m.reply "can't handle more than %u dices" % @bot.config['dice.max_dices'] + m.reply "can't handle more than %u dices" % @bot.config['dice.max_dices'], :nick => true return end @@ -120,7 +123,7 @@ class DicePlugin < Plugin t = t + tmp.get_view end t.chop! - m.nickreply r.to_s + " || " + m.params + ": " + t + m.reply(r.to_s + " || " + m.params + ": " + t, :nick => true) end end plugin = DicePlugin.new