class HDeck::CardCaster
Manager class for Card
Caster
Attributes
alignment[RW]
deck[RW]
Public Class Methods
new(alignment: 'CN')
click to toggle source
# File lib/hdeck/card_caster.rb, line 8 def initialize(alignment: 'CN') @alignment = alignment @deck = Deck.new end
Public Instance Methods
detect_alignment_match(card)
click to toggle source
# File lib/hdeck/card_caster.rb, line 53 def detect_alignment_match(card) return :full if card.morality == @alignment @alignment.each_char do |sign| return :partial if card.morality.include?(sign) end :none end
draw_card(amount: 1)
click to toggle source
# File lib/hdeck/card_caster.rb, line 13 def draw_card(amount: 1) copy = Marshal.load(Marshal.dump(deck)) (0...amount).each do |_| card = copy.draw if card.nil? puts "Out of cards. Create a new deck with 'hdeck new'" return end puts "\n#{card}\n\n" end end
throw_card(amount: 1)
click to toggle source
# File lib/hdeck/card_caster.rb, line 27 def throw_card(amount: 1) (0...amount).each do |_| card = deck.draw if card.nil? puts "Out of cards. Create a new deck with 'hdeck new'" return end # Bonuses applied via Role Dealer feat case detect_alignment_match(card) when :full puts "Full alignment match!\n"\ "--------------------\n"\ "crit range: 19-20\n"\ "crit damage bonus: x3\n"\ "+4 bonus to confirmation roll\n" when :partial puts "Partial alignment match!\n"\ "--------------------\n"\ "crit range: 19-20\n" end puts "\n#{card}\n\n" end end