Class: TableScript::DiceRoller
- Inherits:
-
Object
- Object
- TableScript::DiceRoller
- Defined in:
- lib/tablescript/dice_roller.rb
Constant Summary collapse
- @@DICE_REGEXP =
/(\d*)d(\d+)((dl)(\d*)|(dh)(\d*))?/
Instance Method Summary collapse
- #random_value_in_range(range) ⇒ Object
- #roll(dice) ⇒ Object
- #roll_and_ignore(dice, args) ⇒ Object
- #roll_dice(roll_descriptor) ⇒ Object
Instance Method Details
#random_value_in_range(range) ⇒ Object
24 25 26 |
# File 'lib/tablescript/dice_roller.rb', line 24 def random_value_in_range( range ) rand( range ) end |
#roll(dice) ⇒ Object
35 36 37 38 39 40 41 |
# File 'lib/tablescript/dice_roller.rb', line 35 def roll( dice ) while m = dice.downcase.match( @@DICE_REGEXP ) do rolled_value = roll_dice( RollDescriptor.new( m ) ) dice[ m.begin( 0 )...m.end( 0 ) ] = rolled_value.to_s end eval( dice ) end |
#roll_and_ignore(dice, args) ⇒ Object
43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/tablescript/dice_roller.rb', line 43 def roll_and_ignore( dice, args ) ignored_values = collect_ignored_values( args ) rolled_value = nil while rolled_value.nil? do rolled_value = roll( dice ) if ignored_values.include? rolled_value rolled_value = nil end end rolled_value end |
#roll_dice(roll_descriptor) ⇒ Object
28 29 30 31 32 33 |
# File 'lib/tablescript/dice_roller.rb', line 28 def roll_dice( roll_descriptor ) rolled_values = roll_all_dice_from_descriptor( roll_descriptor ) drop_lowest( rolled_values, roll_descriptor ) drop_highest( rolled_values, roll_descriptor ) total( rolled_values ) end |