tabletop 0.2.0 → 0.2.1
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/.gitignore +1 -0
- data/Rakefile +1 -1
- data/doc/Fixnum.html +313 -0
- data/doc/Tabletop/Coin.html +351 -0
- data/doc/Tabletop/Die.html +480 -0
- data/doc/Tabletop/FudgeDie.html +315 -0
- data/doc/Tabletop/NotEnoughTokensError.html +146 -0
- data/doc/Tabletop/Pool.html +770 -0
- data/doc/Tabletop/Possibility.html +235 -0
- data/doc/Tabletop/Roll.html +731 -0
- data/doc/Tabletop/TokenStack.html +394 -0
- data/doc/Tabletop.html +185 -0
- data/doc/created.rid +8 -0
- data/doc/images/brick.png +0 -0
- data/doc/images/brick_link.png +0 -0
- data/doc/images/bug.png +0 -0
- data/doc/images/bullet_black.png +0 -0
- data/doc/images/bullet_toggle_minus.png +0 -0
- data/doc/images/bullet_toggle_plus.png +0 -0
- data/doc/images/date.png +0 -0
- data/doc/images/find.png +0 -0
- data/doc/images/loadingAnimation.gif +0 -0
- data/doc/images/macFFBgHack.png +0 -0
- data/doc/images/package.png +0 -0
- data/doc/images/page_green.png +0 -0
- data/doc/images/page_white_text.png +0 -0
- data/doc/images/page_white_width.png +0 -0
- data/doc/images/plugin.png +0 -0
- data/doc/images/ruby.png +0 -0
- data/doc/images/tag_green.png +0 -0
- data/doc/images/wrench.png +0 -0
- data/doc/images/wrench_orange.png +0 -0
- data/doc/images/zoom.png +0 -0
- data/doc/index.html +167 -0
- data/doc/js/darkfish.js +116 -0
- data/doc/js/jquery.js +32 -0
- data/doc/js/quicksearch.js +114 -0
- data/doc/js/thickbox-compressed.js +10 -0
- data/doc/lib/fixnum_rb.html +54 -0
- data/doc/lib/tabletop/pool_rb.html +54 -0
- data/doc/lib/tabletop/randomizers_rb.html +52 -0
- data/doc/lib/tabletop/roll_rb.html +52 -0
- data/doc/lib/tabletop/token_rb.html +52 -0
- data/doc/lib/tabletop/version_rb.html +52 -0
- data/doc/lib/tabletop_rb.html +52 -0
- data/doc/rdoc.css +763 -0
- data/lib/fixnum.rb +8 -0
- data/lib/tabletop/pool.rb +32 -1
- data/lib/tabletop/randomizers.rb +22 -1
- data/lib/tabletop/roll.rb +65 -10
- data/lib/tabletop/token.rb +7 -4
- data/lib/tabletop/version.rb +1 -1
- data/spec/randomizers_spec.rb +6 -1
- data/spec/spec_helper.rb +1 -1
- data/tabletop.gemspec +1 -0
- metadata +60 -5
|
@@ -0,0 +1,731 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
|
3
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
5
|
+
<head>
|
|
6
|
+
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
|
|
7
|
+
|
|
8
|
+
<title>Class: Tabletop::Roll</title>
|
|
9
|
+
|
|
10
|
+
<link rel="stylesheet" href="../rdoc.css" type="text/css" media="screen" />
|
|
11
|
+
|
|
12
|
+
<script src="../js/jquery.js" type="text/javascript" charset="utf-8"></script>
|
|
13
|
+
<script src="../js/thickbox-compressed.js" type="text/javascript" charset="utf-8"></script>
|
|
14
|
+
<script src="../js/quicksearch.js" type="text/javascript" charset="utf-8"></script>
|
|
15
|
+
<script src="../js/darkfish.js" type="text/javascript" charset="utf-8"></script>
|
|
16
|
+
|
|
17
|
+
</head>
|
|
18
|
+
<body id="top" class="class">
|
|
19
|
+
|
|
20
|
+
<div id="metadata">
|
|
21
|
+
<div id="home-metadata">
|
|
22
|
+
<div id="home-section" class="section">
|
|
23
|
+
<h3 class="section-header">
|
|
24
|
+
<a href="../index.html">Home</a>
|
|
25
|
+
<a href="../index.html#classes">Classes</a>
|
|
26
|
+
<a href="../index.html#methods">Methods</a>
|
|
27
|
+
</h3>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
|
|
31
|
+
<div id="file-metadata">
|
|
32
|
+
<div id="file-list-section" class="section">
|
|
33
|
+
<h3 class="section-header">In Files</h3>
|
|
34
|
+
<div class="section-body">
|
|
35
|
+
<ul>
|
|
36
|
+
|
|
37
|
+
<li><a href="../lib/tabletop/roll_rb.html?TB_iframe=true&height=550&width=785"
|
|
38
|
+
class="thickbox" title="lib/tabletop/roll.rb">lib/tabletop/roll.rb</a></li>
|
|
39
|
+
|
|
40
|
+
</ul>
|
|
41
|
+
</div>
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
<div id="class-metadata">
|
|
48
|
+
|
|
49
|
+
<!-- Parent Class -->
|
|
50
|
+
<div id="parent-class-section" class="section">
|
|
51
|
+
<h3 class="section-header">Parent</h3>
|
|
52
|
+
|
|
53
|
+
<p class="link">Object</p>
|
|
54
|
+
|
|
55
|
+
</div>
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
<!-- Method Quickref -->
|
|
64
|
+
<div id="method-list-section" class="section">
|
|
65
|
+
<h3 class="section-header">Methods</h3>
|
|
66
|
+
<ul class="link-list">
|
|
67
|
+
|
|
68
|
+
<li><a href="#method-c-new">::new</a></li>
|
|
69
|
+
|
|
70
|
+
<li><a href="#method-i-add">#add</a></li>
|
|
71
|
+
|
|
72
|
+
<li><a href="#method-i-at_least">#at_least</a></li>
|
|
73
|
+
|
|
74
|
+
<li><a href="#method-i-effects">#effects</a></li>
|
|
75
|
+
|
|
76
|
+
<li><a href="#method-i-equals">#equals</a></li>
|
|
77
|
+
|
|
78
|
+
<li><a href="#method-i-meets-3F">#meets?</a></li>
|
|
79
|
+
|
|
80
|
+
<li><a href="#method-i-result">#result</a></li>
|
|
81
|
+
|
|
82
|
+
<li><a href="#method-i-roll">#roll</a></li>
|
|
83
|
+
|
|
84
|
+
<li><a href="#method-i-set_result">#set_result</a></li>
|
|
85
|
+
|
|
86
|
+
<li><a href="#method-i-sides">#sides</a></li>
|
|
87
|
+
|
|
88
|
+
<li><a href="#method-i-sum">#sum</a></li>
|
|
89
|
+
|
|
90
|
+
</ul>
|
|
91
|
+
</div>
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
</div>
|
|
96
|
+
|
|
97
|
+
<div id="project-metadata">
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
<div id="classindex-section" class="section project-section">
|
|
102
|
+
<h3 class="section-header">Class/Module Index
|
|
103
|
+
<span class="search-toggle"><img src="../images/find.png"
|
|
104
|
+
height="16" width="16" alt="[+]"
|
|
105
|
+
title="show/hide quicksearch" /></span></h3>
|
|
106
|
+
<form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
|
|
107
|
+
<fieldset>
|
|
108
|
+
<legend>Quicksearch</legend>
|
|
109
|
+
<input type="text" name="quicksearch" value=""
|
|
110
|
+
class="quicksearch-field" />
|
|
111
|
+
</fieldset>
|
|
112
|
+
</form>
|
|
113
|
+
|
|
114
|
+
<ul class="link-list">
|
|
115
|
+
|
|
116
|
+
<li><a href="../Tabletop.html">Tabletop</a></li>
|
|
117
|
+
|
|
118
|
+
<li><a href="../Tabletop/Coin.html">Tabletop::Coin</a></li>
|
|
119
|
+
|
|
120
|
+
<li><a href="../Tabletop/Die.html">Tabletop::Die</a></li>
|
|
121
|
+
|
|
122
|
+
<li><a href="../Tabletop/FudgeDie.html">Tabletop::FudgeDie</a></li>
|
|
123
|
+
|
|
124
|
+
<li><a href="../Tabletop/NotEnoughTokensError.html">Tabletop::NotEnoughTokensError</a></li>
|
|
125
|
+
|
|
126
|
+
<li><a href="../Tabletop/Pool.html">Tabletop::Pool</a></li>
|
|
127
|
+
|
|
128
|
+
<li><a href="../Tabletop/Roll.html">Tabletop::Roll</a></li>
|
|
129
|
+
|
|
130
|
+
<li><a href="../Tabletop/TokenStack.html">Tabletop::TokenStack</a></li>
|
|
131
|
+
|
|
132
|
+
<li><a href="../Fixnum.html">Fixnum</a></li>
|
|
133
|
+
|
|
134
|
+
</ul>
|
|
135
|
+
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
|
136
|
+
</div>
|
|
137
|
+
|
|
138
|
+
|
|
139
|
+
</div>
|
|
140
|
+
</div>
|
|
141
|
+
|
|
142
|
+
<div id="documentation">
|
|
143
|
+
<h1 class="class">Tabletop::Roll</h1>
|
|
144
|
+
|
|
145
|
+
<div id="description" class="description">
|
|
146
|
+
|
|
147
|
+
</div><!-- description -->
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
<div id="5Buntitled-5D" class="documentation-section">
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
<!-- Attributes -->
|
|
161
|
+
<div id="attribute-method-details" class="method-section section">
|
|
162
|
+
<h3 class="section-header">Attributes</h3>
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
<div id="pool-attribute-method" class="method-detail">
|
|
166
|
+
<a name="pool"></a>
|
|
167
|
+
|
|
168
|
+
<a name="pool="></a>
|
|
169
|
+
|
|
170
|
+
<div class="method-heading attribute-method-heading">
|
|
171
|
+
<span class="method-name">pool</span><span
|
|
172
|
+
class="attribute-access-type">[RW]</span>
|
|
173
|
+
</div>
|
|
174
|
+
|
|
175
|
+
<div class="method-description">
|
|
176
|
+
|
|
177
|
+
<p>Rolls of necessity have a <a href="Pool.html">Pool</a> object against which
|
|
178
|
+
they check possible results.</p>
|
|
179
|
+
|
|
180
|
+
</div>
|
|
181
|
+
</div>
|
|
182
|
+
|
|
183
|
+
</div><!-- attribute-method-details -->
|
|
184
|
+
|
|
185
|
+
|
|
186
|
+
<!-- Methods -->
|
|
187
|
+
|
|
188
|
+
<div id="public-class-method-details" class="method-section section">
|
|
189
|
+
<h3 class="section-header">Public Class Methods</h3>
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
<div id="new-method" class="method-detail ">
|
|
193
|
+
<a name="method-c-new"></a>
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
<div class="method-heading">
|
|
197
|
+
<span class="method-name">new</span><span
|
|
198
|
+
class="method-args">(pool=nil, &block)</span>
|
|
199
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
200
|
+
</div>
|
|
201
|
+
|
|
202
|
+
|
|
203
|
+
<div class="method-description">
|
|
204
|
+
|
|
205
|
+
<p>The block contains methods that further detail the roll, as described
|
|
206
|
+
below. pool must be (surprise!) a <a href="Pool.html">Pool</a>. It’s
|
|
207
|
+
optional, because if <a href="Roll.html#method-i-sides">sides</a> is passed
|
|
208
|
+
in the block, then <a href="Roll.html#method-i-roll">roll</a> can be called
|
|
209
|
+
with a number of dice to roll, and a new <a href="Pool.html">Pool</a>
|
|
210
|
+
object will be instantiated every time this is done.</p>
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
<div class="method-source-code" id="new-source">
|
|
215
|
+
<pre>
|
|
216
|
+
<span class="ruby-comment"># File lib/tabletop/roll.rb, line 24</span>
|
|
217
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">pool</span>=<span class="ruby-keyword">nil</span>, &<span class="ruby-identifier">block</span>)
|
|
218
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">pool</span>
|
|
219
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">pool</span>.<span class="ruby-identifier">class</span> <span class="ruby-operator">!=</span> <span class="ruby-constant">Tabletop</span><span class="ruby-operator">::</span><span class="ruby-constant">Pool</span>
|
|
220
|
+
<span class="ruby-keyword">end</span>
|
|
221
|
+
<span class="ruby-ivar">@pool</span> = <span class="ruby-identifier">pool</span>
|
|
222
|
+
<span class="ruby-ivar">@possibilities</span> = []
|
|
223
|
+
<span class="ruby-ivar">@die_sides</span> = <span class="ruby-keyword">nil</span>
|
|
224
|
+
<span class="ruby-ivar">@static_modifier</span> = <span class="ruby-value">0</span>
|
|
225
|
+
<span class="ruby-ivar">@roll_modifier</span> = <span class="ruby-value">0</span>
|
|
226
|
+
<span class="ruby-ivar">@result_set</span> = <span class="ruby-keyword">false</span>
|
|
227
|
+
<span class="ruby-identifier">instance_eval</span>(&<span class="ruby-identifier">block</span>)
|
|
228
|
+
<span class="ruby-keyword">unless</span> <span class="ruby-ivar">@result_set</span>
|
|
229
|
+
<span class="ruby-identifier">set_result</span>(<span class="ruby-value">:sum</span>)
|
|
230
|
+
<span class="ruby-keyword">end</span>
|
|
231
|
+
<span class="ruby-keyword">end</span></pre>
|
|
232
|
+
</div><!-- new-source -->
|
|
233
|
+
|
|
234
|
+
</div>
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
</div><!-- new-method -->
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
</div><!-- public-class-method-details -->
|
|
243
|
+
|
|
244
|
+
<div id="public-instance-method-details" class="method-section section">
|
|
245
|
+
<h3 class="section-header">Public Instance Methods</h3>
|
|
246
|
+
|
|
247
|
+
|
|
248
|
+
<div id="add-method" class="method-detail ">
|
|
249
|
+
<a name="method-i-add"></a>
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
<div class="method-heading">
|
|
253
|
+
<span class="method-name">add</span><span
|
|
254
|
+
class="method-args">(mod)</span>
|
|
255
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
256
|
+
</div>
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
<div class="method-description">
|
|
260
|
+
|
|
261
|
+
<p>Sets a modifier that’s added to <a href="Roll.html#method-i-sum">sum</a>.</p>
|
|
262
|
+
|
|
263
|
+
<p>Meant to be used in the initialize block.</p>
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
<div class="method-source-code" id="add-source">
|
|
268
|
+
<pre>
|
|
269
|
+
<span class="ruby-comment"># File lib/tabletop/roll.rb, line 177</span>
|
|
270
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">add</span>(<span class="ruby-identifier">mod</span>)
|
|
271
|
+
<span class="ruby-ivar">@static_modifier</span> = <span class="ruby-identifier">mod</span>
|
|
272
|
+
<span class="ruby-keyword">end</span></pre>
|
|
273
|
+
</div><!-- add-source -->
|
|
274
|
+
|
|
275
|
+
</div>
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
</div><!-- add-method -->
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
<div id="at_least-method" class="method-detail ">
|
|
284
|
+
<a name="method-i-at_least"></a>
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
<div class="method-heading">
|
|
288
|
+
<span class="method-name">at_least</span><span
|
|
289
|
+
class="method-args">(value, *outcomes)</span>
|
|
290
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
291
|
+
</div>
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
<div class="method-description">
|
|
295
|
+
|
|
296
|
+
<p>Attaches an object to work with <a
|
|
297
|
+
href="Roll.html#method-i-meets-3F">meets?</a>.</p>
|
|
298
|
+
<table class="rdoc-list"><tr><td class="rdoc-term"><p>value</p></td>
|
|
299
|
+
<td>
|
|
300
|
+
<p>An integer.</p>
|
|
301
|
+
</td></tr><tr><td class="rdoc-term"><p>outcomes</p></td>
|
|
302
|
+
<td>
|
|
303
|
+
<p>An array of values to contribute to <a
|
|
304
|
+
href="Roll.html#method-i-effects">effects</a> if <a
|
|
305
|
+
href="Roll.html#method-i-meets-3F">meets?</a> is true.</p>
|
|
306
|
+
</td></tr></table>
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
|
|
310
|
+
<div class="method-source-code" id="at_least-source">
|
|
311
|
+
<pre>
|
|
312
|
+
<span class="ruby-comment"># File lib/tabletop/roll.rb, line 124</span>
|
|
313
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">at_least</span>(<span class="ruby-identifier">value</span>, *<span class="ruby-identifier">outcomes</span>)
|
|
314
|
+
<span class="ruby-ivar">@possibilities</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">Possibility</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">outcomes</span>, <span class="ruby-value">:>=</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">value</span>)
|
|
315
|
+
<span class="ruby-keyword">end</span></pre>
|
|
316
|
+
</div><!-- at_least-source -->
|
|
317
|
+
|
|
318
|
+
</div>
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
</div><!-- at_least-method -->
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
<div id="effects-method" class="method-detail ">
|
|
327
|
+
<a name="method-i-effects"></a>
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
<div class="method-heading">
|
|
331
|
+
<span class="method-name">effects</span><span
|
|
332
|
+
class="method-args">()</span>
|
|
333
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
334
|
+
</div>
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
<div class="method-description">
|
|
338
|
+
|
|
339
|
+
<p>Returns an array. + The first value in the array is <a
|
|
340
|
+
href="Roll.html#method-i-result">result</a> + If a “difficulty” was set in
|
|
341
|
+
the most call of <a href="Roll.html#method-i-roll">roll</a>, and <a
|
|
342
|
+
href="Roll.html#method-i-result">result</a> meets or exceeds it, then the
|
|
343
|
+
second element will be “Success”. + if the conditions of any of the roll’s
|
|
344
|
+
@possibilities are met (see <a
|
|
345
|
+
href="Roll.html#method-i-meets-3F">meets?</a>), then their outcomes will be
|
|
346
|
+
all following elements. + if none of the above conditions are met, the
|
|
347
|
+
second and final element is nil.</p>
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
<div class="method-source-code" id="effects-source">
|
|
352
|
+
<pre>
|
|
353
|
+
<span class="ruby-comment"># File lib/tabletop/roll.rb, line 46</span>
|
|
354
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">effects</span>
|
|
355
|
+
<span class="ruby-identifier">results</span> = []
|
|
356
|
+
|
|
357
|
+
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@difficulty</span>
|
|
358
|
+
<span class="ruby-identifier">results</span> <span class="ruby-operator"><<</span> <span class="ruby-string">"Success"</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">result</span> <span class="ruby-operator">>=</span> <span class="ruby-ivar">@difficulty</span>
|
|
359
|
+
<span class="ruby-keyword">end</span>
|
|
360
|
+
|
|
361
|
+
<span class="ruby-ivar">@possibilities</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">poss</span><span class="ruby-operator">|</span>
|
|
362
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">meets?</span>(<span class="ruby-identifier">poss</span>)
|
|
363
|
+
<span class="ruby-identifier">poss</span>.<span class="ruby-identifier">outcomes</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">outcome</span><span class="ruby-operator">|</span>
|
|
364
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">outcome</span>.<span class="ruby-identifier">instance_of?</span>(<span class="ruby-constant">Roll</span>)
|
|
365
|
+
<span class="ruby-identifier">results</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">outcome</span>.<span class="ruby-identifier">roll</span>.<span class="ruby-identifier">effects</span>
|
|
366
|
+
<span class="ruby-keyword">else</span>
|
|
367
|
+
<span class="ruby-identifier">results</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">outcome</span>
|
|
368
|
+
<span class="ruby-keyword">end</span>
|
|
369
|
+
<span class="ruby-keyword">end</span>
|
|
370
|
+
<span class="ruby-keyword">end</span>
|
|
371
|
+
<span class="ruby-keyword">end</span>
|
|
372
|
+
|
|
373
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">results</span>.<span class="ruby-identifier">empty?</span>
|
|
374
|
+
<span class="ruby-identifier">results</span> <span class="ruby-operator"><<</span> <span class="ruby-keyword">nil</span>
|
|
375
|
+
<span class="ruby-keyword">end</span>
|
|
376
|
+
|
|
377
|
+
<span class="ruby-identifier">results</span>.<span class="ruby-identifier">unshift</span>(<span class="ruby-identifier">result</span>)
|
|
378
|
+
<span class="ruby-keyword">end</span></pre>
|
|
379
|
+
</div><!-- effects-source -->
|
|
380
|
+
|
|
381
|
+
</div>
|
|
382
|
+
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
</div><!-- effects-method -->
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
<div id="equals-method" class="method-detail ">
|
|
390
|
+
<a name="method-i-equals"></a>
|
|
391
|
+
|
|
392
|
+
|
|
393
|
+
<div class="method-heading">
|
|
394
|
+
<span class="method-name">equals</span><span
|
|
395
|
+
class="method-args">(values, *outcomes)</span>
|
|
396
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
397
|
+
</div>
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
<div class="method-description">
|
|
401
|
+
|
|
402
|
+
<p>Attaches an object to work with <a
|
|
403
|
+
href="Roll.html#method-i-meets-3F">meets?</a>.</p>
|
|
404
|
+
<table class="rdoc-list"><tr><td class="rdoc-term"><p>values</p></td>
|
|
405
|
+
<td>
|
|
406
|
+
<p>Can be either an integer, or a Range. If it’s a range, then <a
|
|
407
|
+
href="Roll.html#method-i-equals">equals</a> creates an object for each
|
|
408
|
+
number in the range. If it’s an integer, it creates just one.</p>
|
|
409
|
+
</td></tr><tr><td class="rdoc-term"><p>outcomes</p></td>
|
|
410
|
+
<td>
|
|
411
|
+
<p>An array of values to contribute to <a
|
|
412
|
+
href="Roll.html#method-i-effects">effects</a> if <a
|
|
413
|
+
href="Roll.html#method-i-meets-3F">meets?</a> is true.</p>
|
|
414
|
+
</td></tr></table>
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
<div class="method-source-code" id="equals-source">
|
|
419
|
+
<pre>
|
|
420
|
+
<span class="ruby-comment"># File lib/tabletop/roll.rb, line 134</span>
|
|
421
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">equals</span>(<span class="ruby-identifier">values</span>, *<span class="ruby-identifier">outcomes</span>)
|
|
422
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">values</span>.<span class="ruby-identifier">instance_of?</span>(<span class="ruby-constant">Range</span>)
|
|
423
|
+
<span class="ruby-identifier">values</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">val</span><span class="ruby-operator">|</span>
|
|
424
|
+
<span class="ruby-ivar">@possibilities</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">Possibility</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">outcomes</span>, <span class="ruby-value">:==</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">val</span>)
|
|
425
|
+
<span class="ruby-keyword">end</span>
|
|
426
|
+
<span class="ruby-keyword">else</span>
|
|
427
|
+
<span class="ruby-ivar">@possibilities</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">Possibility</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">outcomes</span>, <span class="ruby-value">:==</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">values</span>)
|
|
428
|
+
<span class="ruby-keyword">end</span>
|
|
429
|
+
<span class="ruby-keyword">end</span></pre>
|
|
430
|
+
</div><!-- equals-source -->
|
|
431
|
+
|
|
432
|
+
</div>
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
</div><!-- equals-method -->
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
<div id="meets-3F-method" class="method-detail ">
|
|
441
|
+
<a name="method-i-meets-3F"></a>
|
|
442
|
+
|
|
443
|
+
|
|
444
|
+
<div class="method-heading">
|
|
445
|
+
<span class="method-name">meets?</span><span
|
|
446
|
+
class="method-args">(p)</span>
|
|
447
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
448
|
+
</div>
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
<div class="method-description">
|
|
452
|
+
|
|
453
|
+
<p>Takes an object, returns false if anything set in the object’s conditions
|
|
454
|
+
hash are not met by <a href="Roll.html#method-i-sum">sum</a>, otherwise
|
|
455
|
+
returns true</p>
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
<div class="method-source-code" id="meets-3F-source">
|
|
460
|
+
<pre>
|
|
461
|
+
<span class="ruby-comment"># File lib/tabletop/roll.rb, line 101</span>
|
|
462
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">meets?</span>(<span class="ruby-identifier">p</span>)
|
|
463
|
+
<span class="ruby-identifier">answer</span> = <span class="ruby-keyword">true</span>
|
|
464
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">conditions</span>[<span class="ruby-value">:>=</span>]
|
|
465
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">conditions</span>[<span class="ruby-value">:>=</span>] <span class="ruby-operator">></span> <span class="ruby-identifier">sum</span>
|
|
466
|
+
<span class="ruby-identifier">answer</span> = <span class="ruby-keyword">false</span>
|
|
467
|
+
<span class="ruby-keyword">end</span>
|
|
468
|
+
<span class="ruby-keyword">end</span>
|
|
469
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">conditions</span>[<span class="ruby-value">:==</span>]
|
|
470
|
+
<span class="ruby-identifier">answer</span> = <span class="ruby-keyword">false</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">conditions</span>[<span class="ruby-value">:==</span>] <span class="ruby-operator">!=</span> <span class="ruby-identifier">sum</span>
|
|
471
|
+
<span class="ruby-keyword">end</span>
|
|
472
|
+
<span class="ruby-identifier">answer</span>
|
|
473
|
+
<span class="ruby-keyword">end</span></pre>
|
|
474
|
+
</div><!-- meets-3F-source -->
|
|
475
|
+
|
|
476
|
+
</div>
|
|
477
|
+
|
|
478
|
+
|
|
479
|
+
|
|
480
|
+
|
|
481
|
+
</div><!-- meets-3F-method -->
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
<div id="result-method" class="method-detail ">
|
|
485
|
+
<a name="method-i-result"></a>
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
<div class="method-heading">
|
|
489
|
+
<span class="method-name">result</span><span
|
|
490
|
+
class="method-args">()</span>
|
|
491
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
492
|
+
</div>
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
<div class="method-description">
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
|
|
500
|
+
|
|
501
|
+
<div class="method-source-code" id="result-source">
|
|
502
|
+
<pre>
|
|
503
|
+
<span class="ruby-comment"># File lib/tabletop/roll.rb, line 161</span>
|
|
504
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">result</span>
|
|
505
|
+
<span class="ruby-identifier">normal</span> = <span class="ruby-ivar">@pool</span>.<span class="ruby-identifier">count</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">die</span><span class="ruby-operator">|</span> <span class="ruby-identifier">die</span>.<span class="ruby-identifier">value</span> <span class="ruby-operator">>=</span> <span class="ruby-ivar">@count_at_least</span>}
|
|
506
|
+
<span class="ruby-identifier">extra</span> = <span class="ruby-ivar">@count_doubles</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@pool</span>.<span class="ruby-identifier">count</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">die</span><span class="ruby-operator">|</span> <span class="ruby-identifier">die</span>.<span class="ruby-identifier">value</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@count_doubles</span>} <span class="ruby-operator">:</span> <span class="ruby-value">0</span>
|
|
507
|
+
<span class="ruby-identifier">normal</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">extra</span>
|
|
508
|
+
<span class="ruby-keyword">end</span></pre>
|
|
509
|
+
</div><!-- result-source -->
|
|
510
|
+
|
|
511
|
+
</div>
|
|
512
|
+
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
</div><!-- result-method -->
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
<div id="roll-method" class="method-detail ">
|
|
520
|
+
<a name="method-i-roll"></a>
|
|
521
|
+
|
|
522
|
+
|
|
523
|
+
<div class="method-heading">
|
|
524
|
+
<span class="method-name">roll</span><span
|
|
525
|
+
class="method-args">(opts={})</span>
|
|
526
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
527
|
+
</div>
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
<div class="method-description">
|
|
531
|
+
|
|
532
|
+
<p>Without any options passed, calls <a
|
|
533
|
+
href="Pool.html#method-i-roll">Pool#roll</a> on the roll’s pool. Returns
|
|
534
|
+
the <a href="Roll.html">Roll</a>.</p>
|
|
535
|
+
|
|
536
|
+
<p>opts can have a few different values:</p>
|
|
537
|
+
<table class="rdoc-list"><tr><td class="rdoc-term"><p>:modifier</p></td>
|
|
538
|
+
<td>
|
|
539
|
+
<p>adds to all subsequent calls to <a href="Roll.html#method-i-sum">sum</a>,
|
|
540
|
+
until <a href="Roll.html#method-i-roll">roll</a> is called again</p>
|
|
541
|
+
</td></tr><tr><td class="rdoc-term"><p>:pool</p></td>
|
|
542
|
+
<td>
|
|
543
|
+
<p>if <a href="Roll.html#method-i-sides">sides</a> was called in the
|
|
544
|
+
initialize block, and this is set, then a <a href="Pool.html">Pool</a> of
|
|
545
|
+
appropriate sides and number is created and assigned to @pool.</p>
|
|
546
|
+
</td></tr><tr><td class="rdoc-term"><p>:difficulty</p></td>
|
|
547
|
+
<td>
|
|
548
|
+
<p>see <a href="Roll.html#method-i-effects">effects</a></p>
|
|
549
|
+
</td></tr></table>
|
|
550
|
+
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
<div class="method-source-code" id="roll-source">
|
|
554
|
+
<pre>
|
|
555
|
+
<span class="ruby-comment"># File lib/tabletop/roll.rb, line 81</span>
|
|
556
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">roll</span>(<span class="ruby-identifier">opts</span>={})
|
|
557
|
+
<span class="ruby-ivar">@roll_modifier</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-value">:modifier</span>] <span class="ruby-operator">?</span> <span class="ruby-identifier">opts</span>[<span class="ruby-value">:modifier</span>] <span class="ruby-operator">:</span> <span class="ruby-value">0</span>
|
|
558
|
+
<span class="ruby-keyword">if</span> <span class="ruby-ivar">@die_sides</span>
|
|
559
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">opts</span>[<span class="ruby-value">:pool</span>]
|
|
560
|
+
<span class="ruby-ivar">@pool</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-value">:pool</span>].<span class="ruby-identifier">dX</span>(<span class="ruby-ivar">@die_sides</span>)
|
|
561
|
+
<span class="ruby-keyword">else</span>
|
|
562
|
+
<span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>
|
|
563
|
+
<span class="ruby-keyword">end</span>
|
|
564
|
+
<span class="ruby-keyword">end</span>
|
|
565
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">opts</span>[<span class="ruby-value">:difficulty</span>]
|
|
566
|
+
<span class="ruby-ivar">@difficulty</span> = <span class="ruby-identifier">opts</span>[<span class="ruby-value">:difficulty</span>]
|
|
567
|
+
<span class="ruby-keyword">end</span>
|
|
568
|
+
<span class="ruby-ivar">@pool</span>.<span class="ruby-identifier">roll</span>
|
|
569
|
+
<span class="ruby-keyword">self</span>
|
|
570
|
+
<span class="ruby-keyword">end</span></pre>
|
|
571
|
+
</div><!-- roll-source -->
|
|
572
|
+
|
|
573
|
+
</div>
|
|
574
|
+
|
|
575
|
+
|
|
576
|
+
|
|
577
|
+
|
|
578
|
+
</div><!-- roll-method -->
|
|
579
|
+
|
|
580
|
+
|
|
581
|
+
<div id="set_result-method" class="method-detail ">
|
|
582
|
+
<a name="method-i-set_result"></a>
|
|
583
|
+
|
|
584
|
+
|
|
585
|
+
<div class="method-heading">
|
|
586
|
+
<span class="method-name">set_result</span><span
|
|
587
|
+
class="method-args">(symbol, args={})</span>
|
|
588
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
589
|
+
</div>
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
<div class="method-description">
|
|
593
|
+
|
|
594
|
+
<p>Defines a <a href="Roll.html#method-i-result">result</a> method, used by <a
|
|
595
|
+
href="Roll.html#method-i-effects">effects</a>.</p>
|
|
596
|
+
|
|
597
|
+
<p>If symbol is ‘:count’, then args must include a :<a
|
|
598
|
+
href="Roll.html#method-i-at_least">at_least</a> option, and <a
|
|
599
|
+
href="Roll.html#method-i-result">result</a> will be equal to the number of
|
|
600
|
+
dice in @pool of value equal or greater than <a
|
|
601
|
+
href="http://:at_least">args</a>.</p>
|
|
602
|
+
|
|
603
|
+
<p>Optionally, args can also include a :doubles option, for values that add 2
|
|
604
|
+
to <a href="Roll.html#method-i-result">result</a></p>
|
|
605
|
+
|
|
606
|
+
<p>In all other cases, <a href="Roll.html#method-i-result">result</a> is
|
|
607
|
+
aliased to <a href="Roll.html#method-i-sum">sum</a></p>
|
|
608
|
+
|
|
609
|
+
<p>Meant to be used in the initialize block.</p>
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
|
|
613
|
+
<div class="method-source-code" id="set_result-source">
|
|
614
|
+
<pre>
|
|
615
|
+
<span class="ruby-comment"># File lib/tabletop/roll.rb, line 157</span>
|
|
616
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">set_result</span>(<span class="ruby-identifier">symbol</span>, <span class="ruby-identifier">args</span>={})
|
|
617
|
+
<span class="ruby-keyword">if</span> <span class="ruby-identifier">symbol</span> <span class="ruby-operator">==</span> <span class="ruby-value">:count</span>
|
|
618
|
+
<span class="ruby-ivar">@count_at_least</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">:at_least</span>]
|
|
619
|
+
<span class="ruby-ivar">@count_doubles</span> = <span class="ruby-identifier">args</span>[<span class="ruby-value">:doubles</span>]
|
|
620
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">result</span>
|
|
621
|
+
<span class="ruby-identifier">normal</span> = <span class="ruby-ivar">@pool</span>.<span class="ruby-identifier">count</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">die</span><span class="ruby-operator">|</span> <span class="ruby-identifier">die</span>.<span class="ruby-identifier">value</span> <span class="ruby-operator">>=</span> <span class="ruby-ivar">@count_at_least</span>}
|
|
622
|
+
<span class="ruby-identifier">extra</span> = <span class="ruby-ivar">@count_doubles</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@pool</span>.<span class="ruby-identifier">count</span> {<span class="ruby-operator">|</span><span class="ruby-identifier">die</span><span class="ruby-operator">|</span> <span class="ruby-identifier">die</span>.<span class="ruby-identifier">value</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@count_doubles</span>} <span class="ruby-operator">:</span> <span class="ruby-value">0</span>
|
|
623
|
+
<span class="ruby-identifier">normal</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">extra</span>
|
|
624
|
+
<span class="ruby-keyword">end</span>
|
|
625
|
+
<span class="ruby-keyword">else</span>
|
|
626
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">result</span>
|
|
627
|
+
<span class="ruby-identifier">sum</span>
|
|
628
|
+
<span class="ruby-keyword">end</span>
|
|
629
|
+
<span class="ruby-keyword">end</span>
|
|
630
|
+
<span class="ruby-ivar">@result_set</span> = <span class="ruby-keyword">true</span>
|
|
631
|
+
<span class="ruby-keyword">end</span></pre>
|
|
632
|
+
</div><!-- set_result-source -->
|
|
633
|
+
|
|
634
|
+
</div>
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
|
|
638
|
+
|
|
639
|
+
</div><!-- set_result-method -->
|
|
640
|
+
|
|
641
|
+
|
|
642
|
+
<div id="sides-method" class="method-detail ">
|
|
643
|
+
<a name="method-i-sides"></a>
|
|
644
|
+
|
|
645
|
+
|
|
646
|
+
<div class="method-heading">
|
|
647
|
+
<span class="method-name">sides</span><span
|
|
648
|
+
class="method-args">(num_sides)</span>
|
|
649
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
650
|
+
</div>
|
|
651
|
+
|
|
652
|
+
|
|
653
|
+
<div class="method-description">
|
|
654
|
+
|
|
655
|
+
<p>Sets a default die size. If set, roll can be called with a :pool argument
|
|
656
|
+
to create and roll a new <a href="Pool.html">Pool</a> of the indicated
|
|
657
|
+
number and type of dice.</p>
|
|
658
|
+
|
|
659
|
+
<p>Can be an integer other than zero, or :fudge for fudgedice.</p>
|
|
660
|
+
|
|
661
|
+
<p>Meant to be used in the initialize block.</p>
|
|
662
|
+
|
|
663
|
+
|
|
664
|
+
|
|
665
|
+
<div class="method-source-code" id="sides-source">
|
|
666
|
+
<pre>
|
|
667
|
+
<span class="ruby-comment"># File lib/tabletop/roll.rb, line 187</span>
|
|
668
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">sides</span>(<span class="ruby-identifier">num_sides</span>)
|
|
669
|
+
<span class="ruby-ivar">@die_sides</span> = <span class="ruby-identifier">num_sides</span>
|
|
670
|
+
<span class="ruby-keyword">end</span></pre>
|
|
671
|
+
</div><!-- sides-source -->
|
|
672
|
+
|
|
673
|
+
</div>
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
|
|
677
|
+
|
|
678
|
+
</div><!-- sides-method -->
|
|
679
|
+
|
|
680
|
+
|
|
681
|
+
<div id="sum-method" class="method-detail ">
|
|
682
|
+
<a name="method-i-sum"></a>
|
|
683
|
+
|
|
684
|
+
|
|
685
|
+
<div class="method-heading">
|
|
686
|
+
<span class="method-name">sum</span><span
|
|
687
|
+
class="method-args">()</span>
|
|
688
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
689
|
+
</div>
|
|
690
|
+
|
|
691
|
+
|
|
692
|
+
<div class="method-description">
|
|
693
|
+
|
|
694
|
+
<p>The sum of the values of dice in the pool, and any modifier set in
|
|
695
|
+
instantiation (see <a href="Roll.html#method-i-add">add</a>), or the most
|
|
696
|
+
recent call to <a href="Roll.html#method-i-roll">roll</a>.</p>
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
<div class="method-source-code" id="sum-source">
|
|
701
|
+
<pre>
|
|
702
|
+
<span class="ruby-comment"># File lib/tabletop/roll.rb, line 116</span>
|
|
703
|
+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">sum</span>
|
|
704
|
+
<span class="ruby-ivar">@pool</span>.<span class="ruby-identifier">sum</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@static_modifier</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@roll_modifier</span>
|
|
705
|
+
<span class="ruby-keyword">end</span></pre>
|
|
706
|
+
</div><!-- sum-source -->
|
|
707
|
+
|
|
708
|
+
</div>
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
</div><!-- sum-method -->
|
|
714
|
+
|
|
715
|
+
|
|
716
|
+
</div><!-- public-instance-method-details -->
|
|
717
|
+
|
|
718
|
+
</div><!-- 5Buntitled-5D -->
|
|
719
|
+
|
|
720
|
+
|
|
721
|
+
</div><!-- documentation -->
|
|
722
|
+
|
|
723
|
+
<div id="validator-badges">
|
|
724
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
|
725
|
+
<p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
|
|
726
|
+
Rdoc Generator</a> 2</small>.</p>
|
|
727
|
+
</div>
|
|
728
|
+
|
|
729
|
+
</body>
|
|
730
|
+
</html>
|
|
731
|
+
|