pfrpg_classes 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 (35) hide show
  1. checksums.yaml +7 -0
  2. data/lib/pfrpg_classes/heroclass/alchemist.rb +92 -0
  3. data/lib/pfrpg_classes/heroclass/arcane_archer.rb +57 -0
  4. data/lib/pfrpg_classes/heroclass/arcane_trickster.rb +76 -0
  5. data/lib/pfrpg_classes/heroclass/assassin.rb +67 -0
  6. data/lib/pfrpg_classes/heroclass/barbarian.rb +77 -0
  7. data/lib/pfrpg_classes/heroclass/bard.rb +98 -0
  8. data/lib/pfrpg_classes/heroclass/cavalier.rb +92 -0
  9. data/lib/pfrpg_classes/heroclass/cleric.rb +87 -0
  10. data/lib/pfrpg_classes/heroclass/dragon_disciple.rb +66 -0
  11. data/lib/pfrpg_classes/heroclass/druid.rb +175 -0
  12. data/lib/pfrpg_classes/heroclass/duelist.rb +60 -0
  13. data/lib/pfrpg_classes/heroclass/eldritch_knight.rb +60 -0
  14. data/lib/pfrpg_classes/heroclass/fighter.rb +75 -0
  15. data/lib/pfrpg_classes/heroclass/gunslinger.rb +92 -0
  16. data/lib/pfrpg_classes/heroclass/inquisitor.rb +92 -0
  17. data/lib/pfrpg_classes/heroclass/loremaster.rb +95 -0
  18. data/lib/pfrpg_classes/heroclass/magus.rb +92 -0
  19. data/lib/pfrpg_classes/heroclass/monk.rb +96 -0
  20. data/lib/pfrpg_classes/heroclass/mystic_theurge.rb +58 -0
  21. data/lib/pfrpg_classes/heroclass/oracle.rb +92 -0
  22. data/lib/pfrpg_classes/heroclass/paladin.rb +119 -0
  23. data/lib/pfrpg_classes/heroclass/pathfinder_chronicler.rb +82 -0
  24. data/lib/pfrpg_classes/heroclass/ranger.rb +97 -0
  25. data/lib/pfrpg_classes/heroclass/rogue.rb +90 -0
  26. data/lib/pfrpg_classes/heroclass/shadowdancer.rb +62 -0
  27. data/lib/pfrpg_classes/heroclass/sorcerer.rb +81 -0
  28. data/lib/pfrpg_classes/heroclass/summoner.rb +92 -0
  29. data/lib/pfrpg_classes/heroclass/version.rb +3 -0
  30. data/lib/pfrpg_classes/heroclass/witch.rb +92 -0
  31. data/lib/pfrpg_classes/heroclass/wizard.rb +92 -0
  32. data/lib/pfrpg_classes/heroclass.rb +160 -0
  33. data/lib/pfrpg_classes/version.rb +3 -0
  34. data/lib/pfrpg_classes.rb +25 -0
  35. 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,3 @@
1
+ module PfrpgClasses
2
+ VERSION = "0.0.1"
3
+ 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: []