cinch-dicebag 1.0.3 → 1.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/cinch-dicebag.rb
CHANGED
@@ -5,8 +5,8 @@ require 'cinch/cooldown'
|
|
5
5
|
require 'cinch-storage'
|
6
6
|
require 'time-lord'
|
7
7
|
|
8
|
-
|
9
8
|
module Cinch::Plugins
|
9
|
+
# Cinch Plugin to allow dice rolling.
|
10
10
|
class Dicebag
|
11
11
|
include Cinch::Plugin
|
12
12
|
|
@@ -14,7 +14,9 @@ module Cinch::Plugins
|
|
14
14
|
|
15
15
|
attr_accessor :storage
|
16
16
|
|
17
|
-
self.help =
|
17
|
+
self.help = 'Roll a random bag of dice with .dicebag, you can also ' +
|
18
|
+
'use .roll (dice count)d(sides) to roll specific dice ' +
|
19
|
+
'(e.g. .roll 4d6 3d20)'
|
18
20
|
|
19
21
|
match /dicebag/, method: :roll_dicebag
|
20
22
|
match /roll (.*)/, method: :roll
|
@@ -26,26 +28,22 @@ module Cinch::Plugins
|
|
26
28
|
|
27
29
|
# Roll a random assortment of dice, total the rolls, and record the score.
|
28
30
|
# @param [String] nick Nickname of the user rolling.
|
29
|
-
# @param [Cinch::Channel] channel The Channel object where the roll took
|
31
|
+
# @param [Cinch::Channel] channel The Channel object where the roll took
|
32
|
+
# place.
|
30
33
|
# @return [String] A description of the roll that took place
|
31
34
|
def roll_dicebag(m)
|
32
35
|
if m.channel.nil?
|
33
|
-
m.reply
|
36
|
+
m.reply 'You must use that command in the main channel'
|
34
37
|
return
|
35
38
|
end
|
36
39
|
|
37
|
-
nick = m.user.nick
|
38
|
-
channel = m.channel.name
|
39
|
-
|
40
40
|
dice = { d4: rand(250), d6: rand(500), d10: rand(750), d20: rand(1000) }
|
41
|
-
|
42
41
|
total = roll_dice(dice.map { |die, count| "#{count}#{die}" })
|
43
42
|
size = get_bag_size(dice.values.inject(:+))
|
44
43
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
m.reply message
|
44
|
+
m.reply "#{m.user.nick} rolls a #{size} bag of dice totalling " +
|
45
|
+
"#{total}. " +
|
46
|
+
score_check(m.user.nick.downcase, m.channel.name, total)
|
49
47
|
end
|
50
48
|
|
51
49
|
# Roll a specific set of dice and return the pretty result
|
@@ -58,10 +56,11 @@ module Cinch::Plugins
|
|
58
56
|
|
59
57
|
result = roll_dice(dice.split(' '))
|
60
58
|
|
61
|
-
|
59
|
+
unless result.nil?
|
60
|
+
m.reply "#{m.user.nick} rolls #{dice} totalling #{result}"
|
61
|
+
end
|
62
62
|
end
|
63
63
|
|
64
|
-
|
65
64
|
# Takes an Array of dice rolls, sanitizes them, parses them, and dispatches
|
66
65
|
# their calculation to `roll_die`.
|
67
66
|
# @param [Array] dice Array of strings that correspond to valid die rolls.
|
@@ -93,7 +92,7 @@ module Cinch::Plugins
|
|
93
92
|
return 0 if sides < 1 || count < 1
|
94
93
|
total = 0
|
95
94
|
count.times { total += rand(sides) + 1 }
|
96
|
-
|
95
|
+
total
|
97
96
|
end
|
98
97
|
|
99
98
|
# Simple method to return a flavor text 'size' description based on
|
@@ -102,18 +101,12 @@ module Cinch::Plugins
|
|
102
101
|
# @return [String] Description of the size of the bag.
|
103
102
|
def get_bag_size(size)
|
104
103
|
case size
|
105
|
-
when 0..100
|
106
|
-
|
107
|
-
when
|
108
|
-
|
109
|
-
when
|
110
|
-
|
111
|
-
when 1001..1500
|
112
|
-
'large'
|
113
|
-
when 1501..2000
|
114
|
-
'hefty'
|
115
|
-
else
|
116
|
-
'huge'
|
104
|
+
when 0..100 then 'tiny'
|
105
|
+
when 101..500 then 'small'
|
106
|
+
when 501..1000 then 'medium'
|
107
|
+
when 1001..1500 then 'large'
|
108
|
+
when 1501..2000 then 'hefty'
|
109
|
+
else 'huge'
|
117
110
|
end
|
118
111
|
end
|
119
112
|
|
@@ -126,18 +119,17 @@ module Cinch::Plugins
|
|
126
119
|
# to that effect, otherwise returns a blank string.
|
127
120
|
def score_check(nick, channel, score)
|
128
121
|
# If the chennel or nick are not already initialized, spin them up
|
129
|
-
@storage.data[channel] ||=
|
130
|
-
@storage.data[channel][nick] ||= { :
|
122
|
+
@storage.data[channel] ||= {}
|
123
|
+
@storage.data[channel][nick] ||= { score: score, time: Time.now }
|
131
124
|
|
132
125
|
# Check and see if this is a higher score.
|
133
126
|
old = @storage.data[channel][nick]
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
end
|
127
|
+
return '' unless @storage.data[channel][nick][:score] < score
|
128
|
+
|
129
|
+
@storage.data[channel][nick] = { score: score, time: Time.now }
|
130
|
+
@storage.synced_save(@bot)
|
131
|
+
"A new high score! Their old high roll was #{old[:score]}, " +
|
132
|
+
"#{old[:time].ago.to_words}."
|
141
133
|
end
|
142
134
|
end
|
143
135
|
end
|
data/spec/cinch-dicebag_spec.rb
CHANGED
@@ -54,7 +54,7 @@ describe Cinch::Plugins::Dicebag do
|
|
54
54
|
|
55
55
|
it "should return an error if the user is not in a channel" do
|
56
56
|
get_replies(make_message(@bot, '!dicebag' , { nick: 'ted' })).first.text.
|
57
|
-
should be_eql("You must use that command in the main channel
|
57
|
+
should be_eql("You must use that command in the main channel")
|
58
58
|
end
|
59
59
|
|
60
60
|
it "should return a string describing the user's bag roll" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cinch-dicebag
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-12-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -171,7 +171,7 @@ files:
|
|
171
171
|
- Rakefile
|
172
172
|
- cinch-dicebag.gemspec
|
173
173
|
- lib/cinch-dicebag.rb
|
174
|
-
- lib/cinch/plugins/dicebag
|
174
|
+
- lib/cinch/plugins/dicebag.rb
|
175
175
|
- lib/cinch/plugins/dicebag/version.rb
|
176
176
|
- spec/cinch-dicebag_spec.rb
|
177
177
|
- spec/spec_helper.rb
|
@@ -202,3 +202,4 @@ summary: ! 'Cinch Plugin: Dicebag and Dice rolls'
|
|
202
202
|
test_files:
|
203
203
|
- spec/cinch-dicebag_spec.rb
|
204
204
|
- spec/spec_helper.rb
|
205
|
+
has_rdoc:
|