pfrpg_classes 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/pfrpg_classes/heroclass/alchemist.rb +92 -0
- data/lib/pfrpg_classes/heroclass/arcane_archer.rb +57 -0
- data/lib/pfrpg_classes/heroclass/arcane_trickster.rb +76 -0
- data/lib/pfrpg_classes/heroclass/assassin.rb +67 -0
- data/lib/pfrpg_classes/heroclass/barbarian.rb +77 -0
- data/lib/pfrpg_classes/heroclass/bard.rb +98 -0
- data/lib/pfrpg_classes/heroclass/cavalier.rb +92 -0
- data/lib/pfrpg_classes/heroclass/cleric.rb +87 -0
- data/lib/pfrpg_classes/heroclass/dragon_disciple.rb +66 -0
- data/lib/pfrpg_classes/heroclass/druid.rb +175 -0
- data/lib/pfrpg_classes/heroclass/duelist.rb +60 -0
- data/lib/pfrpg_classes/heroclass/eldritch_knight.rb +60 -0
- data/lib/pfrpg_classes/heroclass/fighter.rb +75 -0
- data/lib/pfrpg_classes/heroclass/gunslinger.rb +92 -0
- data/lib/pfrpg_classes/heroclass/inquisitor.rb +92 -0
- data/lib/pfrpg_classes/heroclass/loremaster.rb +95 -0
- data/lib/pfrpg_classes/heroclass/magus.rb +92 -0
- data/lib/pfrpg_classes/heroclass/monk.rb +96 -0
- data/lib/pfrpg_classes/heroclass/mystic_theurge.rb +58 -0
- data/lib/pfrpg_classes/heroclass/oracle.rb +92 -0
- data/lib/pfrpg_classes/heroclass/paladin.rb +119 -0
- data/lib/pfrpg_classes/heroclass/pathfinder_chronicler.rb +82 -0
- data/lib/pfrpg_classes/heroclass/ranger.rb +97 -0
- data/lib/pfrpg_classes/heroclass/rogue.rb +90 -0
- data/lib/pfrpg_classes/heroclass/shadowdancer.rb +62 -0
- data/lib/pfrpg_classes/heroclass/sorcerer.rb +81 -0
- data/lib/pfrpg_classes/heroclass/summoner.rb +92 -0
- data/lib/pfrpg_classes/heroclass/version.rb +3 -0
- data/lib/pfrpg_classes/heroclass/witch.rb +92 -0
- data/lib/pfrpg_classes/heroclass/wizard.rb +92 -0
- data/lib/pfrpg_classes/heroclass.rb +160 -0
- data/lib/pfrpg_classes/version.rb +3 -0
- data/lib/pfrpg_classes.rb +25 -0
- metadata +104 -0
@@ -0,0 +1,160 @@
|
|
1
|
+
module PfrpgClasses
|
2
|
+
class PfrpgClasses::Heroclass
|
3
|
+
|
4
|
+
attr_reader :level_for_json
|
5
|
+
def initialize(level_for_json=1)
|
6
|
+
@level_for_json = level_for_json
|
7
|
+
@level_for_json -= 1 if (level_for_json > 20 || (prestige && level_for_json > 10))
|
8
|
+
end
|
9
|
+
|
10
|
+
def self.by_name(name)
|
11
|
+
c = class_list.find { |x| x.name == name }
|
12
|
+
unless c
|
13
|
+
c = prestige_class_list.find { |x| x.name == name }
|
14
|
+
end
|
15
|
+
return c
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.class_list(level=1)
|
19
|
+
[
|
20
|
+
Barbarian.new(level),
|
21
|
+
Bard.new(level),
|
22
|
+
Cleric.new(level),
|
23
|
+
Druid.new(level),
|
24
|
+
Fighter.new(level),
|
25
|
+
Monk.new(level),
|
26
|
+
Paladin.new(level),
|
27
|
+
Ranger.new(level),
|
28
|
+
Rogue.new(level),
|
29
|
+
Sorcerer.new(level),
|
30
|
+
Wizard.new(level)
|
31
|
+
]
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.prestige_class_list(level=1)
|
35
|
+
[
|
36
|
+
ArcaneArcher.new(level),
|
37
|
+
ArcaneTrickster.new(level),
|
38
|
+
Assassin.new(level),
|
39
|
+
Duelist.new(level),
|
40
|
+
DragonDisciple.new(level),
|
41
|
+
EldritchKnight.new(level),
|
42
|
+
Loremaster.new(level),
|
43
|
+
MysticTheurge.new(level),
|
44
|
+
PathfinderChronicler.new(level),
|
45
|
+
Shadowdancer.new(level),
|
46
|
+
]
|
47
|
+
end
|
48
|
+
|
49
|
+
def starting_wealth_str
|
50
|
+
"#{starting_wealth.to_s} (#{starting_wealth_avg}gp average)"
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.class_list_json
|
54
|
+
self.class_list.map { |x| x.as_json }
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.prestige_list_json
|
58
|
+
self.prestige_class_list.map { |x| x.as_json }
|
59
|
+
end
|
60
|
+
|
61
|
+
def as_json(options={})
|
62
|
+
{ :description => description,
|
63
|
+
:skills => skills.map { |x| x.to_s },
|
64
|
+
:skills_per_level => skills_per_level,
|
65
|
+
:heroclass_name => name,
|
66
|
+
:alignment => alignment,
|
67
|
+
:starting_wealth => starting_wealth_str,
|
68
|
+
:hit_die => hit_die.to_s,
|
69
|
+
:bab => bab,
|
70
|
+
:saves => saves,
|
71
|
+
:features => features,
|
72
|
+
:spells => spells,
|
73
|
+
:current_level => (@level_for_json - 1)
|
74
|
+
}
|
75
|
+
end
|
76
|
+
|
77
|
+
def bab
|
78
|
+
bonuses_for_level(level_for_json)[:base_attack_bonus]
|
79
|
+
end
|
80
|
+
|
81
|
+
def saves
|
82
|
+
b = bonuses_for_level(level_for_json)
|
83
|
+
return "Fort: +#{b[:fort_save]}, Ref: +#{b[:ref_save]}, Will: +#{b[:will_save]}"
|
84
|
+
end
|
85
|
+
|
86
|
+
def spells
|
87
|
+
begin
|
88
|
+
get_spells_table(level_for_json)
|
89
|
+
rescue Exception => e
|
90
|
+
return "None"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
def features
|
95
|
+
f = bonus_features_for_level(level_for_json) || []
|
96
|
+
c = bonus_choices_for_level(level_for_json) || []
|
97
|
+
pretty = []
|
98
|
+
f.each do |feature|
|
99
|
+
pretty << pretty_feature_string(feature)
|
100
|
+
end
|
101
|
+
c.each do |choice|
|
102
|
+
pretty << pretty_choice_string(choice)
|
103
|
+
end
|
104
|
+
pretty
|
105
|
+
end
|
106
|
+
|
107
|
+
def pretty_feature_string(feature)
|
108
|
+
string = ""
|
109
|
+
feature.split("_").each do |s|
|
110
|
+
string += s.capitalize + " "
|
111
|
+
end
|
112
|
+
return string
|
113
|
+
end
|
114
|
+
|
115
|
+
def pretty_choice_string(choice)
|
116
|
+
string = ""
|
117
|
+
c = choice.class.name.split /(?=[A-Z])/
|
118
|
+
return c.join(" ")
|
119
|
+
end
|
120
|
+
|
121
|
+
def starting_feats
|
122
|
+
[]
|
123
|
+
end
|
124
|
+
|
125
|
+
def starting_wealth
|
126
|
+
0
|
127
|
+
end
|
128
|
+
|
129
|
+
def starting_wealth_avg
|
130
|
+
0
|
131
|
+
end
|
132
|
+
|
133
|
+
def spells_per_day(char_level)
|
134
|
+
get_spells_table(char_level)
|
135
|
+
end
|
136
|
+
|
137
|
+
def bonus_choices_for_level(level)
|
138
|
+
bonuses_for_level(level)[:choices]
|
139
|
+
end
|
140
|
+
|
141
|
+
def bonus_features_for_level(level)
|
142
|
+
bonuses_for_level(level)[:granted_features]
|
143
|
+
end
|
144
|
+
|
145
|
+
def prestige
|
146
|
+
false
|
147
|
+
end
|
148
|
+
|
149
|
+
def meets_prerequisites?(c)
|
150
|
+
return true unless prestige
|
151
|
+
prerequisites.each do |x|
|
152
|
+
#ap "Looking for :"
|
153
|
+
#ap x
|
154
|
+
#ap "Match? #{x.match(c)}"
|
155
|
+
return false unless x.match(c)
|
156
|
+
end
|
157
|
+
return true
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'pfrpg_classes/heroclass'
|
2
|
+
require 'pfrpg_classes/heroclass/barbarian'
|
3
|
+
require 'pfrpg_classes/heroclass/bard'
|
4
|
+
require 'pfrpg_classes/heroclass/cleric'
|
5
|
+
require 'pfrpg_classes/heroclass/druid'
|
6
|
+
require 'pfrpg_classes/heroclass/fighter'
|
7
|
+
require 'pfrpg_classes/heroclass/monk'
|
8
|
+
require 'pfrpg_classes/heroclass/paladin'
|
9
|
+
require 'pfrpg_classes/heroclass/ranger'
|
10
|
+
require 'pfrpg_classes/heroclass/rogue'
|
11
|
+
require 'pfrpg_classes/heroclass/sorcerer'
|
12
|
+
require 'pfrpg_classes/heroclass/wizard'
|
13
|
+
require 'pfrpg_classes/heroclass/arcane_archer'
|
14
|
+
require 'pfrpg_classes/heroclass/arcane_trickster'
|
15
|
+
require 'pfrpg_classes/heroclass/assassin'
|
16
|
+
require 'pfrpg_classes/heroclass/duelist'
|
17
|
+
require 'pfrpg_classes/heroclass/dragon_disciple'
|
18
|
+
require 'pfrpg_classes/heroclass/eldritch_knight'
|
19
|
+
require 'pfrpg_classes/heroclass/loremaster'
|
20
|
+
require 'pfrpg_classes/heroclass/mystic_theurge'
|
21
|
+
require 'pfrpg_classes/heroclass/pathfinder_chronicler'
|
22
|
+
require 'pfrpg_classes/heroclass/shadowdancer'
|
23
|
+
|
24
|
+
module PfrpgClasses
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: pfrpg_classes
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jordan OMara
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-11-11 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.1.1
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.1.1
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: sqlite3
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: pfrpg classes
|
42
|
+
email:
|
43
|
+
- jordan@herosheets.com
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- lib/pfrpg_classes.rb
|
49
|
+
- lib/pfrpg_classes/heroclass.rb
|
50
|
+
- lib/pfrpg_classes/heroclass/alchemist.rb
|
51
|
+
- lib/pfrpg_classes/heroclass/arcane_archer.rb
|
52
|
+
- lib/pfrpg_classes/heroclass/arcane_trickster.rb
|
53
|
+
- lib/pfrpg_classes/heroclass/assassin.rb
|
54
|
+
- lib/pfrpg_classes/heroclass/barbarian.rb
|
55
|
+
- lib/pfrpg_classes/heroclass/bard.rb
|
56
|
+
- lib/pfrpg_classes/heroclass/cavalier.rb
|
57
|
+
- lib/pfrpg_classes/heroclass/cleric.rb
|
58
|
+
- lib/pfrpg_classes/heroclass/dragon_disciple.rb
|
59
|
+
- lib/pfrpg_classes/heroclass/druid.rb
|
60
|
+
- lib/pfrpg_classes/heroclass/duelist.rb
|
61
|
+
- lib/pfrpg_classes/heroclass/eldritch_knight.rb
|
62
|
+
- lib/pfrpg_classes/heroclass/fighter.rb
|
63
|
+
- lib/pfrpg_classes/heroclass/gunslinger.rb
|
64
|
+
- lib/pfrpg_classes/heroclass/inquisitor.rb
|
65
|
+
- lib/pfrpg_classes/heroclass/loremaster.rb
|
66
|
+
- lib/pfrpg_classes/heroclass/magus.rb
|
67
|
+
- lib/pfrpg_classes/heroclass/monk.rb
|
68
|
+
- lib/pfrpg_classes/heroclass/mystic_theurge.rb
|
69
|
+
- lib/pfrpg_classes/heroclass/oracle.rb
|
70
|
+
- lib/pfrpg_classes/heroclass/paladin.rb
|
71
|
+
- lib/pfrpg_classes/heroclass/pathfinder_chronicler.rb
|
72
|
+
- lib/pfrpg_classes/heroclass/ranger.rb
|
73
|
+
- lib/pfrpg_classes/heroclass/rogue.rb
|
74
|
+
- lib/pfrpg_classes/heroclass/shadowdancer.rb
|
75
|
+
- lib/pfrpg_classes/heroclass/sorcerer.rb
|
76
|
+
- lib/pfrpg_classes/heroclass/summoner.rb
|
77
|
+
- lib/pfrpg_classes/heroclass/version.rb
|
78
|
+
- lib/pfrpg_classes/heroclass/witch.rb
|
79
|
+
- lib/pfrpg_classes/heroclass/wizard.rb
|
80
|
+
- lib/pfrpg_classes/version.rb
|
81
|
+
homepage: http://herosheets.com
|
82
|
+
licenses: []
|
83
|
+
metadata: {}
|
84
|
+
post_install_message:
|
85
|
+
rdoc_options: []
|
86
|
+
require_paths:
|
87
|
+
- lib
|
88
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
requirements: []
|
99
|
+
rubyforge_project:
|
100
|
+
rubygems_version: 2.2.2
|
101
|
+
signing_key:
|
102
|
+
specification_version: 4
|
103
|
+
summary: PFRPG Class Information
|
104
|
+
test_files: []
|