#!/usr/bin/env ruby class Combatant attr_accessor :attacks, :ws def initialize(ws, a) self.ws = ws.to_i self.attacks = a.to_i end end class Combat def initialize(a, b) @a = a @b = b end def fight a_dice = (1..@a.attacks).inject([]){|arr, i| arr << (rand(6) + 1)} b_dice = (1..@b.attacks).inject([]){|arr, i| arr << (rand(6) + 1)} #base score a_score = a_dice.max + @a.ws b_score = b_dice.max + @b.ws #fumbles a_score += b_dice.find_all{|i| i == 1}.size b_score += a_dice.find_all{|i| i == 1}.size #criticals a_score += a_dice.find_all{|i| i == 6}.size - 1 if a_dice.include?(6) b_score += b_dice.find_all{|i| i == 6}.size - 1 if b_dice.include?(6) return a_score - b_score end end times = ARGV[0].to_i || 10 if ARGV[1] fighter1 = Combatant.new(*ARGV[1].split(':')) else fighter1 = Combatant.new(4, 2) end if ARGV[2] fighter2 = Combatant.new(*ARGV[2].split(':')) else fighter2 = Combatant.new(3, 3) end cc = Combat.new(fighter1, fighter2) 1.upto(times) do |i| puts cc.fight end