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.
Files changed (56) hide show
  1. data/.gitignore +1 -0
  2. data/Rakefile +1 -1
  3. data/doc/Fixnum.html +313 -0
  4. data/doc/Tabletop/Coin.html +351 -0
  5. data/doc/Tabletop/Die.html +480 -0
  6. data/doc/Tabletop/FudgeDie.html +315 -0
  7. data/doc/Tabletop/NotEnoughTokensError.html +146 -0
  8. data/doc/Tabletop/Pool.html +770 -0
  9. data/doc/Tabletop/Possibility.html +235 -0
  10. data/doc/Tabletop/Roll.html +731 -0
  11. data/doc/Tabletop/TokenStack.html +394 -0
  12. data/doc/Tabletop.html +185 -0
  13. data/doc/created.rid +8 -0
  14. data/doc/images/brick.png +0 -0
  15. data/doc/images/brick_link.png +0 -0
  16. data/doc/images/bug.png +0 -0
  17. data/doc/images/bullet_black.png +0 -0
  18. data/doc/images/bullet_toggle_minus.png +0 -0
  19. data/doc/images/bullet_toggle_plus.png +0 -0
  20. data/doc/images/date.png +0 -0
  21. data/doc/images/find.png +0 -0
  22. data/doc/images/loadingAnimation.gif +0 -0
  23. data/doc/images/macFFBgHack.png +0 -0
  24. data/doc/images/package.png +0 -0
  25. data/doc/images/page_green.png +0 -0
  26. data/doc/images/page_white_text.png +0 -0
  27. data/doc/images/page_white_width.png +0 -0
  28. data/doc/images/plugin.png +0 -0
  29. data/doc/images/ruby.png +0 -0
  30. data/doc/images/tag_green.png +0 -0
  31. data/doc/images/wrench.png +0 -0
  32. data/doc/images/wrench_orange.png +0 -0
  33. data/doc/images/zoom.png +0 -0
  34. data/doc/index.html +167 -0
  35. data/doc/js/darkfish.js +116 -0
  36. data/doc/js/jquery.js +32 -0
  37. data/doc/js/quicksearch.js +114 -0
  38. data/doc/js/thickbox-compressed.js +10 -0
  39. data/doc/lib/fixnum_rb.html +54 -0
  40. data/doc/lib/tabletop/pool_rb.html +54 -0
  41. data/doc/lib/tabletop/randomizers_rb.html +52 -0
  42. data/doc/lib/tabletop/roll_rb.html +52 -0
  43. data/doc/lib/tabletop/token_rb.html +52 -0
  44. data/doc/lib/tabletop/version_rb.html +52 -0
  45. data/doc/lib/tabletop_rb.html +52 -0
  46. data/doc/rdoc.css +763 -0
  47. data/lib/fixnum.rb +8 -0
  48. data/lib/tabletop/pool.rb +32 -1
  49. data/lib/tabletop/randomizers.rb +22 -1
  50. data/lib/tabletop/roll.rb +65 -10
  51. data/lib/tabletop/token.rb +7 -4
  52. data/lib/tabletop/version.rb +1 -1
  53. data/spec/randomizers_spec.rb +6 -1
  54. data/spec/spec_helper.rb +1 -1
  55. data/tabletop.gemspec +1 -0
  56. 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&amp;height=550&amp;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>, &amp;<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>(&amp;<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">&lt;&lt;</span> <span class="ruby-constant">Possibility</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">outcomes</span>, <span class="ruby-value">:&gt;=</span> =<span class="ruby-operator">&gt;</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">&lt;&lt;</span> <span class="ruby-string">&quot;Success&quot;</span> <span class="ruby-keyword">if</span> <span class="ruby-identifier">result</span> <span class="ruby-operator">&gt;=</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">&lt;&lt;</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">&lt;&lt;</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">&lt;&lt;</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">&lt;&lt;</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">&gt;</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">&lt;&lt;</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">&gt;</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">:&gt;=</span>]
465
+ <span class="ruby-keyword">if</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">conditions</span>[<span class="ruby-value">:&gt;=</span>] <span class="ruby-operator">&gt;</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">&gt;=</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">&gt;=</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
+