Class: TableScript::DiceRoller

Inherits:
Object
  • Object
show all
Defined in:
lib/tablescript/dice_roller.rb

Constant Summary collapse

@@DICE_REGEXP =
/(\d*)d(\d+)((dl)(\d*)|(dh)(\d*))?/

Instance Method Summary collapse

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