Completed
Push — master ( 8d5590...2463f1 )
by Borja
03:23
created

Pet.bono()   A

Complexity

Conditions 1

Size

Total Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1.125

Importance

Changes 0
Metric Value
cc 1
dl 0
loc 3
ccs 1
cts 2
cp 0.5
crap 1.125
rs 10
c 0
b 0
f 0
1
#!/usr/bin/ruby
2
# encoding: UTF-8
3
# Clase para gestionar las minimascotas familiares del heroe.
4 1
class Pet < Hash
5 1
  attr_accessor :id, :name, :torpe
6
7 1
  def initialize(args)
8
    args.each do |k, v|
9
      instance_variable_set("@#{k}".to_sym, v) unless v.nil?
10
    end
11
  end
12
13 1
  def personajes
14
    if pet(id)['personajes'] == 'todos'
15
      ['enano', 'elfo', 'bárbaro', 'mago']
16
    else
17
      pet(id)['personajes']
18
    end
19
  end
20
21 1
  def lacra
22
    pet(id)['lacra']
23
  end
24
25 1
  def bono
26
    pet(id)['bono']
27
  end
28
29 1
  def sex
30
    pet(id)['sex']
31
  end
32
33 1
  def bicho
34
    pet(id)['name']
35
  end # > "pitufo", "rata"
36
37 1
  def img_path
38
    "'../../images/pets/#{bicho}.png'"
39
  end
40
41 1
  def nombre
42
    articulo = sex ? 'la' : 'el'
43
    "#{name.capitalize}, #{articulo} #{bicho.capitalize} #{'torpe' if torpe}"
44
  end
45
46 1
  def descripcion
47
    toprpeza = "<br><b>Penalizador: </b><i>#{lacra}</i>" if torpe
48
    "<b>Bonificador</b>: <i>#{bono}</i>#{toprpeza}"
49
  end
50
51 1
  def conocidos
52
    total = []
53
    heros.each do |h|
54
      next unless h.pet
55
      (total << h.id) if h.pet.id == id
56
    end
57
    total
58
  end
59
end
60
61
# DB Loader
62 1
def pets
63
  load_yaml('personaje/pets')
64
end
65
66 1
def pet(id)
67
  pets[id]
68 View Code Duplication
end
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
69
70
# % Statistics
71 1
def porcentaje_heroes_con_familiar
72
  h_familiares = heros.select(&:pet)
73 View Code Duplication
  ((h_familiares.count / heros.count.to_f) * 100.0).round(2)
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
74
end
75
76 1
def porcentaje_familiares_torpes
77
  h_familiares = heros.select(&:pet)
78
  familiares_torpes = h_familiares.count { |h| h.pet.torpe }
79
  ((familiares_torpes.to_f / h_familiares.count) * 100.0).round(2)
80
end
81