pfrpg_races 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 09d9d388d43b7d693fb9cff7beeab07635ce90ec
4
+ data.tar.gz: f100b530288b5aa9e829a9cb1bbe62494f9f3e60
5
+ SHA512:
6
+ metadata.gz: e2a96c0bf23452347078fc5457dc5f822a143231dfc42d6009ee9dfccd380bdca448d71e9551756b547b8d8860e3f9799899402ab7f2e25094b84950164303f0
7
+ data.tar.gz: 8ffa2812d75838b631fe93bffd30eef5ccb2ea3616f94e73196c49d95c7a3642c1523b5f49ce0876871cb2e8837a96ac93304f9d36bda0bddcca7148f1d28f74
@@ -0,0 +1,13 @@
1
+ require 'pfrpg_races/race'
2
+ require 'pfrpg_races/racial_trait'
3
+ require 'pfrpg_races/raced'
4
+ require 'pfrpg_races/races/elf'
5
+ require 'pfrpg_races/races/dwarf'
6
+ require 'pfrpg_races/races/halfling'
7
+ require 'pfrpg_races/races/half_orc'
8
+ require 'pfrpg_races/races/half_elf'
9
+ require 'pfrpg_races/races/gnome'
10
+ require 'pfrpg_races/races/human'
11
+
12
+ module PfrpgRules
13
+ end
@@ -0,0 +1,59 @@
1
+ module PfrpgRaces
2
+ class Race
3
+
4
+ def self.fetch(race_str)
5
+ begin
6
+ return Object::const_get(race_str).new
7
+ rescue Exception
8
+ return nil
9
+ end
10
+ end
11
+
12
+ def self.race_list
13
+ [
14
+ Dwarf.new,
15
+ Human.new,
16
+ Gnome.new,
17
+ HalfElf.new,
18
+ Elf.new,
19
+ HalfOrc.new,
20
+ Halfling.new
21
+ ]
22
+ end
23
+
24
+ def size_modifier
25
+ PfrpgTables::Tables::Size.get_size_modifier(size)
26
+ end
27
+
28
+ def bonus_feats
29
+ []
30
+ end
31
+
32
+ def attributes
33
+ if attribute_bonuses == nil
34
+ return "You will later get to choose a +2 bonus to one ability score of your choice"
35
+ else
36
+ str = ""
37
+ attribute_bonuses.each do |a|
38
+ str += "#{a.to_s}, "
39
+ end
40
+ return str
41
+ end
42
+ end
43
+
44
+ def as_json(options={})
45
+ {
46
+ :name => name,
47
+ :description => description,
48
+ :languages => languages,
49
+ :int_languages => int_languages,
50
+ :speed => speed,
51
+ :size => size,
52
+ :weapons => weapon_familiarity,
53
+ :attributes => attributes,
54
+ :traits => traits,
55
+ :source => source
56
+ }
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,25 @@
1
+ module PfrpgRaces
2
+ module Raced
3
+ def get_race
4
+ Race.fetch(self.race)
5
+ end
6
+
7
+ def racial_size
8
+ r = race
9
+ if r
10
+ self.race.size
11
+ else
12
+ nil
13
+ end
14
+ end
15
+
16
+ def get_racial_stat_bonuses
17
+ return [] if self.race == nil
18
+ bonuses = self.race.attribute_bonuses
19
+ if bonuses.nil? || bonuses.empty?
20
+ bonuses = self.racial_stat_bonuses
21
+ end
22
+ return bonuses
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,96 @@
1
+ class Dwarf < PfrpgRaces::Race
2
+
3
+ def name
4
+ "Dwarf"
5
+ end
6
+
7
+ def description
8
+ "Dwarves are both tough and wise, but also a bit gruff. They gain +2 Constitution, +2 Wisdom, and –2 Charisma."
9
+ end
10
+
11
+ def source
12
+ "PFRPG"
13
+ end
14
+
15
+ def race_id
16
+ 1
17
+ end
18
+
19
+ def attribute_bonuses
20
+ [ RacialStatBonus.dangling('CON', 2),
21
+ RacialStatBonus.dangling('WIS', 2),
22
+ RacialStatBonus.dangling('CHA',-2)
23
+ ]
24
+ end
25
+
26
+ def bonus_choices
27
+ []
28
+ end
29
+
30
+ def languages
31
+ ["Common", "Dwarven"]
32
+ end
33
+
34
+ def speed
35
+ 20
36
+ end
37
+
38
+ def int_languages
39
+ ["Giant", "Gnome", "Goblin", "Orc", "Terran", "Undercommon"]
40
+ end
41
+
42
+ def size
43
+ "MEDIUM"
44
+ end
45
+
46
+ def choose_ability_bonus?
47
+ false
48
+ end
49
+
50
+ def weapon_familiarity
51
+ [ "Battleaxe", "Heavy Pick", "Warhammer" ]
52
+ end
53
+
54
+ def noarmor_effect
55
+ p = Proc.new do |character, attribute, value|
56
+ begin
57
+ current_penalty = character.armor_speed_penalty
58
+ character.bonuses.plus('speed', current_penalty)
59
+ rescue Exception => e
60
+ raise e
61
+ end
62
+ end
63
+ Effect.new('misc', 'speed', 'noarmor', p)
64
+ end
65
+
66
+ def traits
67
+ [
68
+ RacialTrait.new( :name => "Slow and Steady",
69
+ :description =>
70
+ "20FT base speed / not modified by encumbrance or armor",
71
+ :effects =>
72
+ [
73
+ noarmor_effect
74
+ ]
75
+ ),
76
+ RacialTrait.new( :name => "Defensive Training",
77
+ :description => "+4 dodge AC bonus vs. Giants"
78
+ ),
79
+ RacialTrait.new( :name => "Greed",
80
+ :description => "+2 appraise checks w/ precious metals or gemstones"
81
+ ),
82
+ RacialTrait.new( :name => "Hatred",
83
+ :description => "+1 attack bonus vs/ orc & goblinoid"
84
+ ),
85
+ RacialTrait.new( :name => "Hardy",
86
+ :description => "+2 save vs poison, spells and spell-like abilities"
87
+ ),
88
+ RacialTrait.new( :name => "Stabililty",
89
+ :description => "+4 CMD vs bull rush or trip"
90
+ ),
91
+ RacialTrait.new( :name => "Stonecunning",
92
+ :description => "+2 perception check vs unusual stonework"
93
+ )
94
+ ]
95
+ end
96
+ end
@@ -0,0 +1,78 @@
1
+ module PfrpgRaces
2
+ class Elf < Race
3
+
4
+ def name
5
+ "Elf"
6
+ end
7
+
8
+ def description
9
+ "Elves are nimble, both in body and mind, but their form is frail. They gain +2 Dexterity, +2 Intelligence, and –2 Constitution."
10
+ end
11
+
12
+ def source
13
+ "PFRPG"
14
+ end
15
+
16
+ def attribute_bonuses
17
+ [
18
+ { 'DEX' => 2 },
19
+ { 'INT' => 2 },
20
+ { 'CON' => -2 }
21
+ ]
22
+ end
23
+
24
+ def bonus_choices
25
+ []
26
+ end
27
+
28
+ def languages
29
+ ["Common", "Elven"]
30
+ end
31
+
32
+ def speed
33
+ 30
34
+ end
35
+
36
+ def int_languages
37
+ ["Celestial", "Draconic", "Gnoll", "Gnome", "Goblin", "Orc", "Sylvan"]
38
+ end
39
+
40
+ def size
41
+ "MEDIUM"
42
+ end
43
+
44
+ def choose_ability_bonus?
45
+ false
46
+ end
47
+
48
+ def weapon_familiarity
49
+ [ "Longbow", "Composite Longbow", "Longsword", "Rapier", "Shortbow", "Composite Shortbow"]
50
+ end
51
+
52
+ def martial_weapons
53
+ "elf"
54
+ end
55
+
56
+ def traits
57
+ [
58
+ RacialTrait.new( :name => "Low-Light Vision",
59
+ :description => "See 2x as far in dim light"
60
+ ),
61
+ RacialTrait.new( :name => "Elven Immunities",
62
+ :description => "Immune to Magic Sleep, +2 save vs enchantments"
63
+ ),
64
+ RacialTrait.new( :name => "Elven Magic",
65
+ :description => "+2 racial bonus on caster level checks for spell resistance,\n
66
+ +2 racial bonus on Spellcraft to identify magic items"
67
+ ),
68
+ RacialTrait.new( :name => "Keen Senses",
69
+ :description => "+2 Perception",
70
+ :effects =>
71
+ [
72
+ PfrpgCore::Effect.new("skill", "perception", 2)
73
+ ]
74
+ )
75
+ ]
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,92 @@
1
+ module PfrpgRaces
2
+ class Gnome < Race
3
+
4
+ def name
5
+ "Gnome"
6
+ end
7
+
8
+ def description
9
+ "Gnomes are physically weak but surprisingly hardy, and their attitude makes them naturally agreeable. They gain +2 Constitution, +2 Charisma, and –2 Strength."
10
+ end
11
+
12
+ def source
13
+ "PFRPG"
14
+ end
15
+
16
+ def attribute_bonuses
17
+ [
18
+ { 'CON' => 2 },
19
+ { 'CHA' => 2 },
20
+ { 'STR' => -2 }
21
+ ]
22
+ end
23
+
24
+ def bonus_choices
25
+ []
26
+ end
27
+
28
+ def languages
29
+ ["Common", "Gnome", "Sylvan"]
30
+ end
31
+
32
+ def speed
33
+ 20
34
+ end
35
+
36
+ def int_languages
37
+ ["Draconic", "Dwarven", "Elven", "Giant", "Goblin", "Orc"]
38
+ end
39
+
40
+ def size
41
+ "SMALL"
42
+ end
43
+
44
+ def choose_ability_bonus?
45
+ false
46
+ end
47
+
48
+ def weapon_familiarity
49
+ [ ]
50
+ end
51
+
52
+ def martial_weapons
53
+ "gnome"
54
+ end
55
+
56
+ def traits
57
+ [
58
+ RacialTrait.new( :name => "Low-Light Vision",
59
+ :description => "See 2x as far in dim light"
60
+ ),
61
+ RacialTrait.new( :name => "Defensive Training",
62
+ :description => "+4 dodge AC vs giant monsters"
63
+ ),
64
+ RacialTrait.new( :name => "Hatred",
65
+ :description => "+1 ATK Bonus vs reptilian humanoids and goblinoid subtypes"
66
+ ),
67
+ RacialTrait.new( :name => "Illusion Resistance",
68
+ :description => "+2 save vs illusion spells and effects"
69
+ ),
70
+ RacialTrait.new( :name => "Obsessive",
71
+ :description => "+2 to Craft or Profession skill of your choice"
72
+ ),
73
+ RacialTrait.new( :name => "Gnome Magic",
74
+ :description => "+1 to DC of any saving throws against illusions they cast, \n
75
+ with >= 11 Charisma, gain spell-like abilities once per day:\n
76
+ \tdancing lights,\n
77
+ \tghost sound,\n
78
+ \tprestidigitation,\n
79
+ \tspeak with animals\n
80
+ The DC for these spells is 10 + spell level + CHA mod",
81
+ ),
82
+ RacialTrait.new( :name => "Keen Senses",
83
+ :description => "+2 Perception",
84
+ :effects =>
85
+ [
86
+ PfrpgCore::Effect.new("skill", "perception", 2)
87
+ ]
88
+ )
89
+ ]
90
+ end
91
+ end
92
+ end
@@ -0,0 +1,76 @@
1
+ module PfrpgRaces
2
+ class HalfElf < Race
3
+
4
+ def name
5
+ "HalfElf"
6
+ end
7
+
8
+ def description
9
+ "Half-elf characters gain a +2 bonus to one ability score of their choice at creation to represent their varied nature."
10
+ end
11
+
12
+ def source
13
+ "PFRPG"
14
+ end
15
+
16
+ def attribute_bonuses
17
+ nil
18
+ end
19
+
20
+ def bonus_feat
21
+ [ "Skill Focus" ]
22
+ end
23
+
24
+ def bonus_choices
25
+ []
26
+ end
27
+
28
+ def languages
29
+ ["Common", "Elven"]
30
+ end
31
+
32
+ def speed
33
+ 30
34
+ end
35
+
36
+ def int_languages
37
+ PfrpgTables::Tables::Languages.int_languages
38
+ end
39
+
40
+ def size
41
+ "MEDIUM"
42
+ end
43
+
44
+ def choose_ability_bonus?
45
+ true
46
+ end
47
+
48
+ def weapon_familiarity
49
+ []
50
+ end
51
+
52
+ def traits
53
+ [
54
+ RacialTrait.new( :name => "Low-Light Vision",
55
+ :description => "See 2x as far in dim light"
56
+ ),
57
+ RacialTrait.new( :name => "Elven Immunities",
58
+ :description => "Immune to Magic Sleep, +2 save vs enchantments"
59
+ ),
60
+ RacialTrait.new( :name => "Elf Blood",
61
+ :description => "Count as both Elves and Humans for effects"
62
+ ),
63
+ RacialTrait.new( :name => "Multitalented",
64
+ :description => "You have two, instead of one, favored class"
65
+ ),
66
+ RacialTrait.new( :name => "Keen Senses",
67
+ :description => "+2 Perception",
68
+ :effects =>
69
+ [
70
+ PfrpgCore::Effect.new("skill", "perception", 2)
71
+ ]
72
+ )
73
+ ]
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,75 @@
1
+ module PfrpgRaces
2
+ class HalfOrc < Race
3
+
4
+ def name
5
+ "HalfOrc"
6
+ end
7
+
8
+ def description
9
+ "Half-orcs average around 6 feet tall, with powerful builds and greenish or grayish skin. Their canine teeth often grow long enough to protrude from their mouths, and these “tusks,” combined with heavy brows and slightly pointed ears, give them their notoriously bestial appearance. While half-orcs may be impressive, few ever describe them as beautiful. Despite these obvious orc traits, half-orcs are as varied as their human parents."
10
+ end
11
+
12
+ def source
13
+ "PFRPG"
14
+ end
15
+
16
+ def attribute_bonuses
17
+ nil
18
+ end
19
+
20
+ def bonus_choices
21
+ []
22
+ end
23
+
24
+ def languages
25
+ ["Common", "Orc"]
26
+ end
27
+
28
+ def speed
29
+ 30
30
+ end
31
+
32
+ def int_languages
33
+ ["Abyssal", "Draconic", "Giant", "Gnoll", "Goblin"]
34
+ end
35
+
36
+ def size
37
+ "MEDIUM"
38
+ end
39
+
40
+ def choose_ability_bonus?
41
+ true
42
+ end
43
+
44
+ def weapon_familiarity
45
+ [ "Greataxe", 'Falchion']
46
+ end
47
+
48
+ def martial_weapons
49
+ "orc"
50
+ end
51
+
52
+ def traits
53
+ [
54
+ RacialTrait.new( :name => "Darkvision",
55
+ :description => "See in the dark up to 60 feet"
56
+ ),
57
+ RacialTrait.new( :name => "Intimidating",
58
+ :description => "+2 racial bonus to intimidate skill checks",
59
+ :effects =>
60
+ [
61
+ PfrpgCore::Effect.new("skill", "intimidate", 2)
62
+ ]
63
+ ),
64
+ RacialTrait.new( :name => "Orc Blood",
65
+ :description => "Count as both Orc and Human"
66
+ ),
67
+ RacialTrait.new( :name => "Orc Ferocity",
68
+ :description => "1/day, if you are brought below 0 HP but not killed,\n
69
+ you can fight on for one round as if disabled. You begin\n
70
+ dying and fall unconscious if are not brought above 0 HP."
71
+ )
72
+ ]
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,87 @@
1
+ module PfrpgRaces
2
+ class Halfling < Race
3
+
4
+ def name
5
+ "Halfling"
6
+ end
7
+
8
+ def description
9
+ "Halflings are nimble and strong-willed, but their small stature makes them weaker than other races. They gain +2 Dexterity, +2 Charisma, and –2 Strength."
10
+ end
11
+
12
+ def source
13
+ "PFRPG"
14
+ end
15
+
16
+ def attribute_bonuses
17
+ [ { 'DEX' => 2 },
18
+ { 'CHA' => 2 },
19
+ { 'STR' => -2 }
20
+ ]
21
+ end
22
+
23
+ def bonus_choices
24
+ []
25
+ end
26
+
27
+ def languages
28
+ ["Common", "Halfling"]
29
+ end
30
+
31
+ def speed
32
+ 20
33
+ end
34
+
35
+ def int_languages
36
+ ["Dwarven", "Elven", "Gnome", "Goblin"]
37
+ end
38
+
39
+ def size
40
+ "SMALL"
41
+ end
42
+
43
+ def choose_ability_bonus?
44
+ false
45
+ end
46
+
47
+ def weapon_familiarity
48
+ [ "Sling" ]
49
+ end
50
+
51
+ def martial_weapons
52
+ "halfling"
53
+ end
54
+
55
+ def traits
56
+ [
57
+ RacialTrait.new( :name => "Fearless",
58
+ :description => "+2 racial bonus save vs fear (This stacks with Luck)"
59
+ ),
60
+ RacialTrait.new( :name => "Halfling Luck",
61
+ :description => "+1 racial bonus to all saving throws",
62
+ :effects =>
63
+ [
64
+ PfrpgCore::Effect.new("racial", "fort_save", 1),
65
+ PfrpgCore::Effect.new("racial", "will_save", 1),
66
+ PfrpgCore::Effect.new("racial", "ref_save", 1)
67
+ ]
68
+ ),
69
+ RacialTrait.new( :name => "Sure Footed",
70
+ :description => "+2 racial bonus on Acrobatic & Climb skill checks",
71
+ :effects =>
72
+ [
73
+ PfrpgCore::Effect.new("skill", "climb", 2),
74
+ PfrpgCore::Effect.new("skill", "acrobatics", 2)
75
+ ]
76
+ ),
77
+ RacialTrait.new( :name => "Keen Senses",
78
+ :description => "+2 Perception",
79
+ :effects =>
80
+ [
81
+ PfrpgCore::Effect.new("skill", "perception", 2)
82
+ ]
83
+ )
84
+ ]
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,50 @@
1
+ class Human < PfrpgRaces::Race
2
+
3
+ def name
4
+ "Human"
5
+ end
6
+
7
+ def description
8
+ "Human characters gain a +2 racial bonus to one ability score of their choice at creation to represent their varied nature. Humans select one extra feat at 1st level, and gain an additional skill rank at first level and one additional rank whenever they gain a level."
9
+ end
10
+
11
+ def source
12
+ "PFRPG"
13
+ end
14
+
15
+ def attribute_bonuses
16
+ nil
17
+ end
18
+
19
+ def bonus_choices
20
+ [ChooseFeat.new]
21
+ end
22
+
23
+ def speed
24
+ 30
25
+ end
26
+
27
+ def languages
28
+ ["Common"]
29
+ end
30
+
31
+ def int_languages
32
+ Tables::Languages.int_languages
33
+ end
34
+
35
+ def size
36
+ "MEDIUM"
37
+ end
38
+
39
+ def choose_ability_bonus?
40
+ true
41
+ end
42
+
43
+ def weapon_familiarity
44
+ []
45
+ end
46
+
47
+ def traits
48
+ []
49
+ end
50
+ end
@@ -0,0 +1,23 @@
1
+ module PfrpgRaces
2
+ class RacialTrait
3
+
4
+ attr_accessor :name, :description, :effects
5
+ def initialize(args)
6
+ @name = args[:name]
7
+ @description = args[:description]
8
+ @effects = args[:effects]
9
+ @effects ||= []
10
+ end
11
+
12
+ def get_effects
13
+ effects
14
+ end
15
+
16
+ def as_json(options={})
17
+ { :name => name,
18
+ :description => description
19
+ }
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,7 @@
1
+ module PfrpgRaces
2
+ class Tickle
3
+ def self.print
4
+ return 'TICKLE ME!'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ module PfrpgRaces
2
+ VERSION = "0.0.1"
3
+ end
metadata ADDED
@@ -0,0 +1,84 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pfrpg_races
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: races
42
+ email:
43
+ - jordan@herosheets.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - lib/pfrpg_races.rb
49
+ - lib/pfrpg_races/race.rb
50
+ - lib/pfrpg_races/raced.rb
51
+ - lib/pfrpg_races/races/dwarf.rb
52
+ - lib/pfrpg_races/races/elf.rb
53
+ - lib/pfrpg_races/races/gnome.rb
54
+ - lib/pfrpg_races/races/half_elf.rb
55
+ - lib/pfrpg_races/races/half_orc.rb
56
+ - lib/pfrpg_races/races/halfling.rb
57
+ - lib/pfrpg_races/races/human.rb
58
+ - lib/pfrpg_races/racial_trait.rb
59
+ - lib/pfrpg_races/tickle.rb
60
+ - lib/pfrpg_races/version.rb
61
+ homepage: http://herosheets.com
62
+ licenses: []
63
+ metadata: {}
64
+ post_install_message:
65
+ rdoc_options: []
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ requirements: []
79
+ rubyforge_project:
80
+ rubygems_version: 2.2.2
81
+ signing_key:
82
+ specification_version: 4
83
+ summary: PFRPG races
84
+ test_files: []