pfrpg_tables 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +7 -0
  2. data/lib/pfrpg_tables/tables/attribute_modifier.rb +5 -0
  3. data/lib/pfrpg_tables/tables/attributes.rb +13 -0
  4. data/lib/pfrpg_tables/tables/bonus.rb +17 -0
  5. data/lib/pfrpg_tables/tables/equipment_totaler.rb +14 -0
  6. data/lib/pfrpg_tables/tables/feat_options.rb +28 -0
  7. data/lib/pfrpg_tables/tables/feat_totaler.rb +61 -0
  8. data/lib/pfrpg_tables/tables/feature_totaler.rb +86 -0
  9. data/lib/pfrpg_tables/tables/heroclasses/alchemist.rb +189 -0
  10. data/lib/pfrpg_tables/tables/heroclasses/arcane_archer.rb +98 -0
  11. data/lib/pfrpg_tables/tables/heroclasses/arcane_trickster.rb +89 -0
  12. data/lib/pfrpg_tables/tables/heroclasses/assassin.rb +79 -0
  13. data/lib/pfrpg_tables/tables/heroclasses/barbarian.rb +171 -0
  14. data/lib/pfrpg_tables/tables/heroclasses/bard.rb +190 -0
  15. data/lib/pfrpg_tables/tables/heroclasses/cavalier.rb +189 -0
  16. data/lib/pfrpg_tables/tables/heroclasses/cleric.rb +186 -0
  17. data/lib/pfrpg_tables/tables/heroclasses/dragon_disciple.rb +92 -0
  18. data/lib/pfrpg_tables/tables/heroclasses/druid.rb +190 -0
  19. data/lib/pfrpg_tables/tables/heroclasses/duelist.rb +79 -0
  20. data/lib/pfrpg_tables/tables/heroclasses/eldritch_knight.rb +86 -0
  21. data/lib/pfrpg_tables/tables/heroclasses/fighter.rb +170 -0
  22. data/lib/pfrpg_tables/tables/heroclasses/gunslinger.rb +189 -0
  23. data/lib/pfrpg_tables/tables/heroclasses/inquisitor.rb +189 -0
  24. data/lib/pfrpg_tables/tables/heroclasses/loremaster.rb +112 -0
  25. data/lib/pfrpg_tables/tables/heroclasses/magus.rb +189 -0
  26. data/lib/pfrpg_tables/tables/heroclasses/monk.rb +202 -0
  27. data/lib/pfrpg_tables/tables/heroclasses/mystic_theurge.rb +89 -0
  28. data/lib/pfrpg_tables/tables/heroclasses/oracle.rb +189 -0
  29. data/lib/pfrpg_tables/tables/heroclasses/paladin.rb +188 -0
  30. data/lib/pfrpg_tables/tables/heroclasses/pathfinder_chronicler.rb +79 -0
  31. data/lib/pfrpg_tables/tables/heroclasses/ranger.rb +313 -0
  32. data/lib/pfrpg_tables/tables/heroclasses/rogue.rb +168 -0
  33. data/lib/pfrpg_tables/tables/heroclasses/shadowdancer.rb +82 -0
  34. data/lib/pfrpg_tables/tables/heroclasses/sorcerer.rb +169 -0
  35. data/lib/pfrpg_tables/tables/heroclasses/summoner.rb +189 -0
  36. data/lib/pfrpg_tables/tables/heroclasses/witch.rb +189 -0
  37. data/lib/pfrpg_tables/tables/heroclasses/wizard.rb +189 -0
  38. data/lib/pfrpg_tables/tables/heroclasses.rb +4 -0
  39. data/lib/pfrpg_tables/tables/languages.rb +53 -0
  40. data/lib/pfrpg_tables/tables/level_table.rb +195 -0
  41. data/lib/pfrpg_tables/tables/size.rb +25 -0
  42. data/lib/pfrpg_tables/tables/spells/spells_per_day.rb +239 -0
  43. data/lib/pfrpg_tables/tables/spells.rb +28 -0
  44. data/lib/pfrpg_tables/tables/weapons.rb +57 -0
  45. data/lib/pfrpg_tables/tables.rb +10 -0
  46. data/lib/pfrpg_tables/version.rb +3 -0
  47. data/lib/pfrpg_tables.rb +8 -0
  48. metadata +117 -0
@@ -0,0 +1,313 @@
1
+ class PfrpgTables::Tables::Heroclasses::Ranger
2
+
3
+ def self.level_bonus(level)
4
+ bonus = nil
5
+ case level
6
+ when 1
7
+ bonus = { :base_attack_bonus => [1],
8
+ :fort_save => 2,
9
+ :ref_save => 2,
10
+ :will_save => 0,
11
+ :granted_features => [ "track", "wildempathy"],
12
+ :choices => [ ChooseFavoredEnemy.new ],
13
+ :spells_per_day => Tables::Spells::SpellsPerDay.Ranger(level)
14
+ }
15
+ when 2
16
+ bonus = { :base_attack_bonus => [2],
17
+ :fort_save => 3,
18
+ :ref_save => 3,
19
+ :will_save => 0,
20
+ :granted_features => [],
21
+ :choices => [ ChooseRangerCombatStyleFeat.new ],
22
+ :spells_per_day => Tables::Spells::SpellsPerDay.Ranger(level)
23
+ }
24
+ when 3
25
+ bonus = { :base_attack_bonus => [3],
26
+ :fort_save => 3,
27
+ :ref_save => 3,
28
+ :will_save => 1,
29
+ :granted_features => ["endurance", "favoredterrain"],
30
+ :choices => [],
31
+ :spells_per_day => Tables::Spells::SpellsPerDay.Ranger(level)
32
+ }
33
+ when 4
34
+ bonus = { :base_attack_bonus => [4],
35
+ :fort_save => 4,
36
+ :ref_save => 4,
37
+ :will_save => 1,
38
+ :granted_features => [ ],
39
+ :choices => [ChooseHuntersBond.new ],
40
+ :spells_per_day => Tables::Spells::SpellsPerDay.Ranger(level)
41
+ }
42
+ when 5
43
+ bonus = { :base_attack_bonus => [5],
44
+ :fort_save => 4,
45
+ :ref_save => 4,
46
+ :will_save => 1,
47
+ :granted_features => [],
48
+ :choices => [ChooseFavoredEnemy.new],
49
+ :spells_per_day => Tables::Spells::SpellsPerDay.Ranger(level)
50
+ }
51
+ when 6
52
+ bonus = { :base_attack_bonus => [6,1],
53
+ :fort_save => 5,
54
+ :ref_save => 5,
55
+ :will_save => 2,
56
+ :granted_features => [],
57
+ :choices => [ ChooseRangerCombatStyleFeat.new ],
58
+ :spells_per_day => Tables::Spells::SpellsPerDay.Ranger(level)
59
+ }
60
+ when 7
61
+ bonus = { :base_attack_bonus => [7,2],
62
+ :fort_save => 5,
63
+ :ref_save => 5,
64
+ :will_save => 2,
65
+ :granted_features => ["woodlandstride"],
66
+ :choices => [],
67
+ :spells_per_day => Tables::Spells::SpellsPerDay.Ranger(level)
68
+ }
69
+ when 8
70
+ bonus = { :base_attack_bonus => [8,3],
71
+ :fort_save => 6,
72
+ :ref_save => 6,
73
+ :will_save => 2,
74
+ :choices => [],
75
+ :granted_features => ["swifttracker"],
76
+ :spells_per_day => Tables::Spells::SpellsPerDay.Ranger(level)
77
+ }
78
+ when 9
79
+ bonus = { :base_attack_bonus => [9,4],
80
+ :fort_save => 6,
81
+ :ref_save => 6,
82
+ :will_save => 3,
83
+ :granted_features => ["evasion"],
84
+ :choices => [],
85
+ :spells_per_day => Tables::Spells::SpellsPerDay.Ranger(level)
86
+ }
87
+ when 10
88
+ bonus = { :base_attack_bonus => [10,5],
89
+ :fort_save => 7,
90
+ :ref_save => 7,
91
+ :will_save => 3,
92
+ :choices => [ ChooseFavoredEnemy.new, ChooseRangerCombatStyleFeat.new ],
93
+ :granted_features => [],
94
+ :spells_per_day => Tables::Spells::SpellsPerDay.Ranger(level)
95
+ }
96
+ when 11
97
+ bonus = { :base_attack_bonus => [11,6,1],
98
+ :fort_save => 7,
99
+ :ref_save => 7,
100
+ :will_save => 3,
101
+ :choices => [],
102
+ :granted_features => ["quarry"],
103
+ :spells_per_day => Tables::Spells::SpellsPerDay.Ranger(level)
104
+ }
105
+ when 12
106
+ bonus = { :base_attack_bonus => [12,7,2],
107
+ :fort_save => 8,
108
+ :ref_save => 8,
109
+ :will_save => 4,
110
+ :choices => [],
111
+ :granted_features => ["camouflage"],
112
+ :spells_per_day => Tables::Spells::SpellsPerDay.Ranger(level)
113
+ }
114
+ when 13
115
+ bonus = { :base_attack_bonus => [13,8,3],
116
+ :fort_save => 8,
117
+ :ref_save => 8,
118
+ :will_save => 4,
119
+ :granted_features => [],
120
+ :choices => [],
121
+ :spells_per_day => Tables::Spells::SpellsPerDay.Ranger(level)
122
+ }
123
+ when 14
124
+ bonus = { :base_attack_bonus => [14,9,4],
125
+ :fort_save => 9,
126
+ :ref_save => 9,
127
+ :will_save => 4,
128
+ :choices => [ ChooseRangerCombatStyleFeat.new ],
129
+ :granted_features => [],
130
+ :spells_per_day => Tables::Spells::SpellsPerDay.Ranger(level)
131
+ }
132
+ when 15
133
+ bonus = { :base_attack_bonus => [15,10,5],
134
+ :fort_save => 9,
135
+ :ref_save => 9,
136
+ :will_save => 5,
137
+ :choices => [ ChooseFavoredEnemy.new ],
138
+ :granted_features => [],
139
+ :spells_per_day => Tables::Spells::SpellsPerDay.Ranger(level)
140
+ }
141
+ when 16
142
+ bonus = { :base_attack_bonus => [16,11,6,1],
143
+ :fort_save => 10,
144
+ :ref_save => 10,
145
+ :will_save => 5,
146
+ :choices => [],
147
+ :granted_features => ["improvedevasion"],
148
+ :spells_per_day => Tables::Spells::SpellsPerDay.Ranger(level)
149
+ }
150
+ when 17
151
+ bonus = { :base_attack_bonus => [17,12,7,2],
152
+ :fort_save => 10,
153
+ :ref_save => 10,
154
+ :will_save => 5,
155
+ :choices => [],
156
+ :granted_features => ["hideinplainsight"],
157
+ :spells_per_day => Tables::Spells::SpellsPerDay.Ranger(level)
158
+ }
159
+ when 18
160
+ bonus = { :base_attack_bonus => [18,13,8,3],
161
+ :fort_save => 11,
162
+ :ref_save => 11,
163
+ :will_save => 6,
164
+ :choices => [ ChooseRangerCombatStyleFeat.new ],
165
+ :granted_features => [],
166
+ :spells_per_day => Tables::Spells::SpellsPerDay.Ranger(level)
167
+ }
168
+ when 19
169
+ bonus = { :base_attack_bonus => [19,14,9,4],
170
+ :fort_save => 11,
171
+ :ref_save => 11,
172
+ :will_save => 6,
173
+ :choices => [],
174
+ :granted_features => ["improvedquarry"],
175
+ :spells_per_day => Tables::Spells::SpellsPerDay.Ranger(level)
176
+ }
177
+ when 20
178
+ bonus = { :base_attack_bonus => [20,15,10,5],
179
+ :fort_save => 12,
180
+ :ref_save => 12,
181
+ :will_save => 6,
182
+ :choices => [ ChooseFavoredEnemy.new ],
183
+ :granted_features => ["masterhunter"],
184
+ :spells_per_day => Tables::Spells::SpellsPerDay.Ranger(level)
185
+ }
186
+ end
187
+ bonus
188
+ end
189
+
190
+ def self.favored_enemies
191
+ [ "Aberration", "Magical beast",
192
+ "Animal", "Humanoid (other subtype)",
193
+ "Construct", "Monstrousr humanoid",
194
+ "Dragon","Ooze",
195
+ "Fey", "Outsider (air)",
196
+ "Humanoid (aquatic)","Outsider (chaotic)",
197
+ "Humanoid (dwarf)","Outsider (earth)",
198
+ "Humanoid (elf)","Outsider (evil)",
199
+ "Humanoid (giant)","Outsider (fire)",
200
+ "Humanoid (goblinoid)","Outsider (good)",
201
+ "Humanoid (gnoll)","Outsider (lawful)",
202
+ "Humanoid (gnome)","Outsider (native)",
203
+ "Humanoid (halfling)", "Outsider (water)",
204
+ "Humanoid (human)","Plant",
205
+ "Humanoid (orc)","Undead",
206
+ "Humanoid (reptilian)","Vermin"
207
+ ]
208
+ end
209
+
210
+ def self.combat_style_feats(level)
211
+ base = ["Far Shot", "Point Blank Shot", "Precise Shot", "Rapid Shot",
212
+ "Double Slice", "Improved Shield Bash", "Quick Draw", "Two-Weapon Fighting" ]
213
+ if level >= 6
214
+ base << [ "Improved Precise Shot", "Manyshot", "Improved Two-Weapon Fighting", "Two-Weapon Defense" ]
215
+ end
216
+ if level >= 10
217
+ base << [ "Pinpoint Targeting", "Shot on the Run", "Greater Two-Weapon Fighting", "Two-Weapon Rend" ]
218
+ end
219
+ base.flatten
220
+ end
221
+
222
+ def self.animals
223
+ [
224
+ 'Allosaurus',
225
+ 'Ankylosaurus',
226
+ 'Ant, giant',
227
+ 'Antelope',
228
+ 'Ape',
229
+ 'Archelon',
230
+ 'Arsinoitherium',
231
+ 'Aurochs',
232
+ 'Axe beak',
233
+ 'Baboon',
234
+ 'Badger',
235
+ 'Baluchitherium',
236
+ 'Basilosaurus',
237
+ 'Bat, dire',
238
+ 'Bear',
239
+ 'Beetle, giant',
240
+ 'Bird',
241
+ 'Boar',
242
+ 'Brachiosaurus',
243
+ 'Camel',
244
+ 'Cat, big',
245
+ 'Cat, Small1',
246
+ 'Centipede, giant',
247
+ 'Chameleon, giant',
248
+ 'Crab, Giant',
249
+ 'Crocodile',
250
+ 'Deinonychus',
251
+ 'Dimetrodon',
252
+ 'Dimorphodon',
253
+ 'Dog',
254
+ 'Dolphin',
255
+ 'Eel, electric',
256
+ 'Elasmosaurus',
257
+ 'Elephant',
258
+ 'Elk',
259
+ 'Frog, giant',
260
+ 'Gar',
261
+ 'Gecko, giant',
262
+ 'Goblin dog',
263
+ 'Glyptodon',
264
+ 'Hippopotamus',
265
+ 'Horse',
266
+ 'Hyena',
267
+ 'Iguanodon',
268
+ 'Kangaroo',
269
+ 'Llama',
270
+ 'Leech, giant',
271
+ 'Manta ray',
272
+ 'Mantis, giant',
273
+ 'Megalania',
274
+ 'Megaloceros',
275
+ 'Megatherium',
276
+ 'Monitor lizard',
277
+ 'Moose',
278
+ 'Moray eel, giant',
279
+ 'Octopus',
280
+ 'Orca',
281
+ 'Pachycephalosaurus',
282
+ 'Panda',
283
+ 'Parasaurolophus',
284
+ 'Pony',
285
+ 'Pteranodon',
286
+ 'Quetzalcoatlus',
287
+ 'Ram',
288
+ 'Rat, dire',
289
+ 'Rhinoceros',
290
+ 'Roc',
291
+ 'Scorpion, giant',
292
+ 'Shark1',
293
+ 'Slug, giant',
294
+ 'Snake, constrictor',
295
+ 'Snake, viper',
296
+ 'Snapping turtle',
297
+ 'Spider, giant',
298
+ 'Spinosaurus',
299
+ 'Squid',
300
+ 'Stegosaurus',
301
+ 'Stingray',
302
+ 'Thylacine',
303
+ 'Toad, giant',
304
+ 'Triceratops',
305
+ 'Tylosaurus',
306
+ 'Tyrannosaurus',
307
+ 'Vulture, giant',
308
+ 'Walrus',
309
+ 'Wasp, giant',
310
+ 'Wolf',
311
+ ]
312
+ end
313
+ end
@@ -0,0 +1,168 @@
1
+ class PfrpgTables::Tables::Heroclasses::Rogue
2
+ def self.level_bonus(level)
3
+ bonus = nil
4
+ case level
5
+ when 1
6
+ bonus = { :base_attack_bonus => [0],
7
+ :fort_save => 0,
8
+ :ref_save => 2,
9
+ :will_save => 0,
10
+ :choices => [],
11
+ :granted_features => ["trapfinding", "sneakattack1d6"]
12
+ }
13
+ when 2
14
+ bonus = { :base_attack_bonus => [1],
15
+ :fort_save => 0,
16
+ :ref_save => 3,
17
+ :will_save => 0,
18
+ :choices => [ChooseRogueTalent.new],
19
+ :granted_features => ["evasion"]
20
+ }
21
+ when 3
22
+ bonus = { :base_attack_bonus => [2],
23
+ :fort_save => 1,
24
+ :ref_save => 3,
25
+ :will_save => 1,
26
+ :choices => [],
27
+ :granted_features => ["trapsense1", "sneakattack2d6"]
28
+ }
29
+ when 4
30
+ bonus = { :base_attack_bonus => [3],
31
+ :fort_save => 1,
32
+ :ref_save => 4,
33
+ :will_save => 1,
34
+ :choices => [ChooseRogueTalent.new],
35
+ :granted_features => ["uncanny_dodge"]
36
+ }
37
+ when 5
38
+ bonus = { :base_attack_bonus => [3],
39
+ :fort_save => 1,
40
+ :ref_save => 4,
41
+ :will_save => 1,
42
+ :choices => [],
43
+ :granted_features => ["sneakattack3d6"]
44
+ }
45
+ when 6
46
+ bonus = { :base_attack_bonus => [4],
47
+ :fort_save => 2,
48
+ :ref_save => 5,
49
+ :will_save => 2,
50
+ :choices => [ChooseRogueTalent.new],
51
+ :granted_features => ["trapsense2"]
52
+ }
53
+ when 7
54
+ bonus = { :base_attack_bonus => [5],
55
+ :fort_save => 2,
56
+ :ref_save => 5,
57
+ :will_save => 2,
58
+ :granted_features => ["sneakattack3d6"],
59
+ :choices => []
60
+ }
61
+ when 8
62
+ bonus = { :base_attack_bonus => [6,1],
63
+ :fort_save => 2,
64
+ :ref_save => 6,
65
+ :will_save => 2,
66
+ :granted_features => ["improved_uncanny_dodge"],
67
+ :choices => [ChooseRogueTalent.new]
68
+ }
69
+ when 9
70
+ bonus = { :base_attack_bonus => [6,1],
71
+ :fort_save => 3,
72
+ :ref_save => 6,
73
+ :will_save => 3,
74
+ :granted_features => ["trapsense3"],
75
+ :choices => []
76
+ }
77
+ when 10
78
+ bonus = { :base_attack_bonus => [7,2],
79
+ :fort_save => 3,
80
+ :ref_save => 7,
81
+ :will_save => 3,
82
+ :granted_features => [],
83
+ :choices => [ChooseRogueTalent.new]
84
+ }
85
+ when 11
86
+ bonus = { :base_attack_bonus => [8,3],
87
+ :fort_save => 3,
88
+ :ref_save => 7,
89
+ :will_save => 3,
90
+ :granted_features => ["sneakattack3d6"],
91
+ :choices => []
92
+ }
93
+ when 12
94
+ bonus = { :base_attack_bonus => [9,4],
95
+ :fort_save => 4,
96
+ :ref_save => 8,
97
+ :will_save => 4,
98
+ :granted_features => ["trapsense4"],
99
+ :choices => [ChooseRogueTalent.new]
100
+ }
101
+ when 13
102
+ bonus = { :base_attack_bonus => [9,4],
103
+ :fort_save => 4,
104
+ :ref_save => 8,
105
+ :will_save => 4,
106
+ :granted_features => ["sneakattack3d6"],
107
+ :choices => []
108
+ }
109
+ when 14
110
+ bonus = { :base_attack_bonus => [10,5],
111
+ :fort_save => 4,
112
+ :ref_save => 9,
113
+ :will_save => 4,
114
+ :choices => [ChooseRogueTalent.new]
115
+ }
116
+ when 15
117
+ bonus = { :base_attack_bonus => [11,6,1],
118
+ :fort_save => 5,
119
+ :ref_save => 9,
120
+ :will_save => 5,
121
+ :granted_features => ["trapsense5", "sneakattack8d6"],
122
+ :choices => []
123
+ }
124
+ when 16
125
+ bonus = { :base_attack_bonus => [12,7,2],
126
+ :fort_save => 5,
127
+ :ref_save => 10,
128
+ :will_save => 5,
129
+ :choices => [ChooseRogueTalent.new]
130
+ }
131
+ when 17
132
+ bonus = { :base_attack_bonus => [12,7,2],
133
+ :fort_save => 5,
134
+ :ref_save => 10,
135
+ :will_save => 5,
136
+ :granted_features => ["sneakattack9d6"],
137
+ :choices => []
138
+ }
139
+ when 18
140
+ bonus = { :base_attack_bonus => [13,8,3],
141
+ :fort_save => 6,
142
+ :ref_save => 11,
143
+ :will_save => 6,
144
+ :granted_features => ["trapsense6"],
145
+ :choices => [ChooseRogueTalent.new]
146
+ }
147
+ when 19
148
+ bonus = { :base_attack_bonus => [14,9,4],
149
+ :fort_save => 6,
150
+ :ref_save => 11,
151
+ :will_save => 6,
152
+ :granted_features => ["sneakattack9d6"],
153
+ :choices => []
154
+ }
155
+ when 20
156
+ bonus = { :base_attack_bonus => [15,10,5],
157
+ :fort_save => 6,
158
+ :ref_save => 12,
159
+ :will_save => 6,
160
+ :granted_features => ["master_strike"],
161
+ :choices => [ChooseRogueTalent.new]
162
+ }
163
+ end
164
+ bonus
165
+ end
166
+
167
+
168
+ end