class Natural20::Roller
Attributes
advantage[R]
battle[R]
crit[R]
description[R]
disadvantage[R]
entity[R]
roll_str[R]
Public Class Methods
new(roll_str, crit: false, disadvantage: false, advantage: false, description: nil, entity: nil, battle: nil)
click to toggle source
# 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
Public Instance Methods
roll(lucky: false, description_override: nil)
click to toggle source
@param lucky [Boolean] This is a lucky feat reroll
# 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 = {})
click to toggle source
# File lib/natural_20/die_roll.rb, line 71 def t(key, options = {}) I18n.t(key, **options) end