Наконец нашел время на живом погонять...
Вот, вроде это решение должно подойти (в стойках ставь тогда не десятую, а %, то есть не 0.05, а 5)

Код:
 # если активна стойка, считаем плюсы и минусы с неё
  def param_plus(param_id)
    plus = equips.compact.inject(super) {|r, item| r += item.params[param_id] }
    if last_stand != nil
      case param_id
        when 0 
          plus += last_stand.hp*param_base(0)/100
        when 1
          plus += last_stand.mp*param_base(1)/100
        when 2 
          plus += last_stand.atk*param_base(2)/100
        when 3 
          plus += last_stand.pdf*param_base(3)/100
        when 4 
          plus += last_stand.mat*param_base(4)/100
        when 5 
          plus += last_stand.mdf*param_base(5)/100
        when 6 
          plus += last_stand.agi*param_base(6)/100
        when 7 
          plus += last_stand.luk*param_base(7)/100
      end
    end
    return plus
  end