Class: PfrpgClasses::Heroclass
- Inherits:
-
Object
- Object
- PfrpgClasses::Heroclass
show all
- Defined in:
- lib/pfrpg_classes/heroclass.rb
Direct Known Subclasses
ArcaneArcher, ArcaneTrickster, Assassin, Barbarian, Bard, Cleric, DragonDisciple, Druid, Duelist, EldritchKnight, Fighter, Loremaster, Monk, MysticTheurge, Paladin, PathfinderChronicler, Ranger, Rogue, Shadowdancer, Sorcerer, Wizard
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(level_for_json = 1) ⇒ Heroclass
Returns a new instance of Heroclass.
5
6
7
8
|
# File 'lib/pfrpg_classes/heroclass.rb', line 5
def initialize(level_for_json=1)
@level_for_json = level_for_json
@level_for_json -= 1 if (level_for_json > 20 || (prestige && level_for_json > 10))
end
|
Instance Attribute Details
#level_for_json ⇒ Object
Returns the value of attribute level_for_json.
4
5
6
|
# File 'lib/pfrpg_classes/heroclass.rb', line 4
def level_for_json
@level_for_json
end
|
Class Method Details
.by_name(name) ⇒ Object
11
12
13
|
# File 'lib/pfrpg_classes/heroclass.rb', line 11
def self.by_name(name)
self.fetch(name)
end
|
.class_list(level = 1) ⇒ Object
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# File 'lib/pfrpg_classes/heroclass.rb', line 23
def self.class_list(level=1)
[
Barbarian.new(level),
Bard.new(level),
Cleric.new(level),
Druid.new(level),
Fighter.new(level),
Monk.new(level),
Paladin.new(level),
Ranger.new(level),
Rogue.new(level),
Sorcerer.new(level),
Wizard.new(level)
]
end
|
.class_list_json ⇒ Object
58
59
60
|
# File 'lib/pfrpg_classes/heroclass.rb', line 58
def self.class_list_json
self.class_list.map { |x| x.as_json }
end
|
.fetch(name) ⇒ Object
15
16
17
18
19
20
21
|
# File 'lib/pfrpg_classes/heroclass.rb', line 15
def self.fetch(name)
c = class_list.find { |x| x.name == name }
unless c
c = prestige_class_list.find { |x| x.name == name }
end
return c
end
|
.prestige_class_list(level = 1) ⇒ Object
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/pfrpg_classes/heroclass.rb', line 39
def self.prestige_class_list(level=1)
[
ArcaneArcher.new(level),
ArcaneTrickster.new(level),
Assassin.new(level),
Duelist.new(level),
DragonDisciple.new(level),
EldritchKnight.new(level),
Loremaster.new(level),
MysticTheurge.new(level),
PathfinderChronicler.new(level),
Shadowdancer.new(level),
]
end
|
.prestige_list_json ⇒ Object
62
63
64
|
# File 'lib/pfrpg_classes/heroclass.rb', line 62
def self.prestige_list_json
self.prestige_class_list.map { |x| x.as_json }
end
|
Instance Method Details
#as_json(options = {}) ⇒ Object
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
# File 'lib/pfrpg_classes/heroclass.rb', line 66
def as_json(options={})
{ :description => description,
:skills => skills.map { |x| x.to_s },
:skills_per_level => skills_per_level,
:heroclass_name => name,
:alignment => alignment,
:starting_wealth => starting_wealth_str,
:hit_die => hit_die.to_s,
:bab => bab,
:saves => saves,
:features => features,
:spells => spells,
:current_level => (@level_for_json - 1)
}
end
|
#bab ⇒ Object
82
83
84
|
# File 'lib/pfrpg_classes/heroclass.rb', line 82
def bab
bonuses_for_level(level_for_json)[:base_attack_bonus]
end
|
#bonus_choices_for_level(level) ⇒ Object
142
143
144
|
# File 'lib/pfrpg_classes/heroclass.rb', line 142
def bonus_choices_for_level(level)
bonuses_for_level(level)[:choices]
end
|
#bonus_features_for_level(level) ⇒ Object
146
147
148
|
# File 'lib/pfrpg_classes/heroclass.rb', line 146
def bonus_features_for_level(level)
bonuses_for_level(level)[:granted_features]
end
|
#features ⇒ Object
99
100
101
102
103
104
105
106
107
108
109
110
|
# File 'lib/pfrpg_classes/heroclass.rb', line 99
def features
f = bonus_features_for_level(level_for_json) || []
c = bonus_choices_for_level(level_for_json) || []
pretty = []
f.each do |feature|
pretty << pretty_feature_string(feature)
end
c.each do |choice|
pretty << pretty_choice_string(choice)
end
pretty
end
|
#meets_prerequisites?(c) ⇒ Boolean
154
155
156
157
158
159
160
161
162
163
164
|
# File 'lib/pfrpg_classes/heroclass.rb', line 154
def meets_prerequisites?(c)
return true unless prestige
prerequisites.each do |x|
matched = x.match(c)
return false unless matched
end
return true
end
|
#prestige ⇒ Object
150
151
152
|
# File 'lib/pfrpg_classes/heroclass.rb', line 150
def prestige
false
end
|
#pretty_choice_string(choice) ⇒ Object
120
121
122
123
124
|
# File 'lib/pfrpg_classes/heroclass.rb', line 120
def pretty_choice_string(choice)
string = ""
c = choice.class.name.split /(?=[A-Z])/
return c.join(" ")
end
|
#pretty_feature_string(feature) ⇒ Object
112
113
114
115
116
117
118
|
# File 'lib/pfrpg_classes/heroclass.rb', line 112
def pretty_feature_string(feature)
string = ""
feature.split("_").each do |s|
string += s.capitalize + " "
end
return string
end
|
#saves ⇒ Object
86
87
88
89
|
# File 'lib/pfrpg_classes/heroclass.rb', line 86
def saves
b = bonuses_for_level(level_for_json)
return "Fort: +#{b[:fort_save]}, Ref: +#{b[:ref_save]}, Will: +#{b[:will_save]}"
end
|
#spells ⇒ Object
91
92
93
94
95
96
97
|
# File 'lib/pfrpg_classes/heroclass.rb', line 91
def spells
begin
get_spells_table(level_for_json)
rescue Exception => e
return "None"
end
end
|
#spells_per_day(char_level) ⇒ Object
138
139
140
|
# File 'lib/pfrpg_classes/heroclass.rb', line 138
def spells_per_day(char_level)
get_spells_table(char_level)
end
|
#starting_feats ⇒ Object
126
127
128
|
# File 'lib/pfrpg_classes/heroclass.rb', line 126
def starting_feats
[]
end
|
#starting_wealth ⇒ Object
130
131
132
|
# File 'lib/pfrpg_classes/heroclass.rb', line 130
def starting_wealth
0
end
|
#starting_wealth_avg ⇒ Object
134
135
136
|
# File 'lib/pfrpg_classes/heroclass.rb', line 134
def starting_wealth_avg
0
end
|
#starting_wealth_str ⇒ Object
54
55
56
|
# File 'lib/pfrpg_classes/heroclass.rb', line 54
def starting_wealth_str
"#{starting_wealth.to_s} (#{starting_wealth_avg}gp average)"
end
|