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
10
11
12
13
14
15
16
|
# File 'lib/pfrpg_classes/heroclass.rb', line 10
def self.by_name(name)
c = class_list.find { |x| x.name == name }
unless c
c = prestige_class_list.find { |x| x.name == name }
end
return c
end
|
.class_list(level = 1) ⇒ Object
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
# File 'lib/pfrpg_classes/heroclass.rb', line 18
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
53
54
55
|
# File 'lib/pfrpg_classes/heroclass.rb', line 53
def self.class_list_json
self.class_list.map { |x| x.as_json }
end
|
.prestige_class_list(level = 1) ⇒ Object
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# File 'lib/pfrpg_classes/heroclass.rb', line 34
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
57
58
59
|
# File 'lib/pfrpg_classes/heroclass.rb', line 57
def self.prestige_list_json
self.prestige_class_list.map { |x| x.as_json }
end
|
Instance Method Details
#as_json(options = {}) ⇒ Object
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
# File 'lib/pfrpg_classes/heroclass.rb', line 61
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
77
78
79
|
# File 'lib/pfrpg_classes/heroclass.rb', line 77
def bab
bonuses_for_level(level_for_json)[:base_attack_bonus]
end
|
#bonus_choices_for_level(level) ⇒ Object
137
138
139
|
# File 'lib/pfrpg_classes/heroclass.rb', line 137
def bonus_choices_for_level(level)
bonuses_for_level(level)[:choices]
end
|
#bonus_features_for_level(level) ⇒ Object
141
142
143
|
# File 'lib/pfrpg_classes/heroclass.rb', line 141
def bonus_features_for_level(level)
bonuses_for_level(level)[:granted_features]
end
|
#features ⇒ Object
94
95
96
97
98
99
100
101
102
103
104
105
|
# File 'lib/pfrpg_classes/heroclass.rb', line 94
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
149
150
151
152
153
154
155
156
157
158
|
# File 'lib/pfrpg_classes/heroclass.rb', line 149
def meets_prerequisites?(c)
return true unless prestige
prerequisites.each do |x|
return false unless x.match(c)
end
return true
end
|
#prestige ⇒ Object
145
146
147
|
# File 'lib/pfrpg_classes/heroclass.rb', line 145
def prestige
false
end
|
#pretty_choice_string(choice) ⇒ Object
115
116
117
118
119
|
# File 'lib/pfrpg_classes/heroclass.rb', line 115
def pretty_choice_string(choice)
string = ""
c = choice.class.name.split /(?=[A-Z])/
return c.join(" ")
end
|
#pretty_feature_string(feature) ⇒ Object
107
108
109
110
111
112
113
|
# File 'lib/pfrpg_classes/heroclass.rb', line 107
def pretty_feature_string(feature)
string = ""
feature.split("_").each do |s|
string += s.capitalize + " "
end
return string
end
|
#saves ⇒ Object
81
82
83
84
|
# File 'lib/pfrpg_classes/heroclass.rb', line 81
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
86
87
88
89
90
91
92
|
# File 'lib/pfrpg_classes/heroclass.rb', line 86
def spells
begin
get_spells_table(level_for_json)
rescue Exception => e
return "None"
end
end
|
#spells_per_day(char_level) ⇒ Object
133
134
135
|
# File 'lib/pfrpg_classes/heroclass.rb', line 133
def spells_per_day(char_level)
get_spells_table(char_level)
end
|
#starting_feats ⇒ Object
121
122
123
|
# File 'lib/pfrpg_classes/heroclass.rb', line 121
def starting_feats
[]
end
|
#starting_wealth ⇒ Object
125
126
127
|
# File 'lib/pfrpg_classes/heroclass.rb', line 125
def starting_wealth
0
end
|
#starting_wealth_avg ⇒ Object
129
130
131
|
# File 'lib/pfrpg_classes/heroclass.rb', line 129
def starting_wealth_avg
0
end
|
#starting_wealth_str ⇒ Object
49
50
51
|
# File 'lib/pfrpg_classes/heroclass.rb', line 49
def starting_wealth_str
"#{starting_wealth.to_s} (#{starting_wealth_avg}gp average)"
end
|