Class: Natural20::Roller
- Inherits:
-
Object
- Object
- Natural20::Roller
- Defined in:
- lib/natural_20/die_roll.rb
Instance Attribute Summary collapse
-
#advantage ⇒ Object
readonly
Returns the value of attribute advantage.
-
#battle ⇒ Object
readonly
Returns the value of attribute battle.
-
#crit ⇒ Object
readonly
Returns the value of attribute crit.
-
#description ⇒ Object
readonly
Returns the value of attribute description.
-
#disadvantage ⇒ Object
readonly
Returns the value of attribute disadvantage.
-
#entity ⇒ Object
readonly
Returns the value of attribute entity.
-
#roll_str ⇒ Object
readonly
Returns the value of attribute roll_str.
Instance Method Summary collapse
-
#initialize(roll_str, crit: false, disadvantage: false, advantage: false, description: nil, entity: nil, battle: nil) ⇒ Roller
constructor
A new instance of Roller.
- #roll(lucky: false, description_override: nil) ⇒ Object
- #t(key, options = {}) ⇒ Object
Constructor Details
#initialize(roll_str, crit: false, disadvantage: false, advantage: false, description: nil, entity: nil, battle: nil) ⇒ Roller
Returns a new instance of Roller.
20 21 22 23 24 25 26 27 28 |
# File 'lib/natural_20/die_roll.rb', line 20 def initialize(roll_str, crit: false, disadvantage: false, advantage: false, description: nil, entity: nil, battle: nil) @roll_str = roll_str @crit = crit @advantage = advantage @disadvantage = disadvantage @description = description @entity = entity @battle = battle end |
Instance Attribute Details
#advantage ⇒ Object (readonly)
Returns the value of attribute advantage.
18 19 20 |
# File 'lib/natural_20/die_roll.rb', line 18 def advantage @advantage end |
#battle ⇒ Object (readonly)
Returns the value of attribute battle.
18 19 20 |
# File 'lib/natural_20/die_roll.rb', line 18 def battle @battle end |
#crit ⇒ Object (readonly)
Returns the value of attribute crit.
18 19 20 |
# File 'lib/natural_20/die_roll.rb', line 18 def crit @crit end |
#description ⇒ Object (readonly)
Returns the value of attribute description.
18 19 20 |
# File 'lib/natural_20/die_roll.rb', line 18 def description @description end |
#disadvantage ⇒ Object (readonly)
Returns the value of attribute disadvantage.
18 19 20 |
# File 'lib/natural_20/die_roll.rb', line 18 def disadvantage @disadvantage end |
#entity ⇒ Object (readonly)
Returns the value of attribute entity.
18 19 20 |
# File 'lib/natural_20/die_roll.rb', line 18 def entity @entity end |
#roll_str ⇒ Object (readonly)
Returns the value of attribute roll_str.
18 19 20 |
# File 'lib/natural_20/die_roll.rb', line 18 def roll_str @roll_str end |
Instance Method Details
#roll(lucky: false, description_override: nil) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/natural_20/die_roll.rb', line 31 def roll(lucky: false, description_override: nil) die_sides = 20 detail = DieRoll.parse(roll_str) number_of_die = detail.die_count die_type_str = detail.die_type modifier_str = detail.modifier modifier_op = detail.modifier_op if die_type_str.blank? return Natural20::DieRoll.new([number_of_die], "#{modifier_op}#{modifier_str}".to_i, 0, roller: self) end die_sides = die_type_str.to_i number_of_die *= 2 if crit description = t('dice_roll.description', description: description_override.presence || @description, roll_str: roll_str) description = lucky ? "(lucky) #{description}" : description description = '(with advantage)'.colorize(:blue) + description if advantage description = '(with disadvantage)'.colorize(:red) + description if disadvantage rolls = if advantage || disadvantage if battle battle.roll_for(entity, die_sides, number_of_die, description, advantage: advantage, disadvantage: disadvantage) else number_of_die.times.map { [(1..die_sides).to_a.sample, (1..die_sides).to_a.sample] } end elsif battle battle.roll_for(entity, die_sides, number_of_die, description) else number_of_die.times.map { (1..die_sides).to_a.sample } end Natural20::DieRoll.new(rolls, modifier_str.blank? ? 0 : "#{modifier_op}#{modifier_str}".to_i, die_sides, advantage: advantage, disadvantage: disadvantage, roller: self) end |
#t(key, options = {}) ⇒ Object
71 72 73 |
# File 'lib/natural_20/die_roll.rb', line 71 def t(key, = {}) I18n.t(key, **) end |