Class: PfrpgCore::PrettySkill
- Inherits:
-
Object
- Object
- PfrpgCore::PrettySkill
- Includes:
- Filterable
- Defined in:
- lib/pfrpg_core/skills.rb
Instance Attribute Summary collapse
-
#ac_penalty ⇒ Object
readonly
Returns the value of attribute ac_penalty.
-
#attribute ⇒ Object
readonly
Returns the value of attribute attribute.
-
#class_skill ⇒ Object
readonly
Returns the value of attribute class_skill.
-
#filter_str ⇒ Object
readonly
Returns the value of attribute filter_str.
-
#filters ⇒ Object
readonly
Returns the value of attribute filters.
-
#misc_bonus ⇒ Object
Returns the value of attribute misc_bonus.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#stat_bonus ⇒ Object
readonly
Returns the value of attribute stat_bonus.
-
#total_bonus ⇒ Object
readonly
Returns the value of attribute total_bonus.
-
#trained_rank ⇒ Object
readonly
Returns the value of attribute trained_rank.
Instance Method Summary collapse
- #as_json(options = {}) ⇒ Object
- #calculate_ac_penalty(skill, character) ⇒ Object
- #calculate_attribute_bonus(skill, character) ⇒ Object
- #calculate_misc_bonus(skill, character) ⇒ Object
- #class_skill_bonuses(character) ⇒ Object
- #crafty(class_skills, skill) ⇒ Object
-
#initialize(skill, character, skill_filters) ⇒ PrettySkill
constructor
A new instance of PrettySkill.
- #is_class_skill?(skill, character) ⇒ Boolean
- #professional(class_skills, skill) ⇒ Object
- #total_bonuses ⇒ Object
Methods included from Filterable
Constructor Details
#initialize(skill, character, skill_filters) ⇒ PrettySkill
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/pfrpg_core/skills.rb', line 10 def initialize(skill, character, skill_filters) @class_skill = is_class_skill?(skill, character) @ac_penalty = calculate_ac_penalty(skill, character) @name = skill[:skill].description if skill[:char_skill] @trained_rank = skill[:char_skill]['trained_rank'] else @trained_rank = 0 end @stat_bonus = calculate_attribute_bonus(skill, character) @misc_bonus = calculate_misc_bonus(skill, character) @attribute = skill[:skill].attribute @total_bonus = total_bonuses @filters = skill_filters @filter_str = [] apply_filters end |
Instance Attribute Details
#ac_penalty ⇒ Object (readonly)
Returns the value of attribute ac_penalty.
6 7 8 |
# File 'lib/pfrpg_core/skills.rb', line 6 def ac_penalty @ac_penalty end |
#attribute ⇒ Object (readonly)
Returns the value of attribute attribute.
6 7 8 |
# File 'lib/pfrpg_core/skills.rb', line 6 def attribute @attribute end |
#class_skill ⇒ Object (readonly)
Returns the value of attribute class_skill.
6 7 8 |
# File 'lib/pfrpg_core/skills.rb', line 6 def class_skill @class_skill end |
#filter_str ⇒ Object (readonly)
Returns the value of attribute filter_str.
6 7 8 |
# File 'lib/pfrpg_core/skills.rb', line 6 def filter_str @filter_str end |
#filters ⇒ Object (readonly)
Returns the value of attribute filters.
6 7 8 |
# File 'lib/pfrpg_core/skills.rb', line 6 def filters @filters end |
#misc_bonus ⇒ Object
Returns the value of attribute misc_bonus.
6 7 8 |
# File 'lib/pfrpg_core/skills.rb', line 6 def misc_bonus @misc_bonus end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
6 7 8 |
# File 'lib/pfrpg_core/skills.rb', line 6 def name @name end |
#stat_bonus ⇒ Object (readonly)
Returns the value of attribute stat_bonus.
6 7 8 |
# File 'lib/pfrpg_core/skills.rb', line 6 def stat_bonus @stat_bonus end |
#total_bonus ⇒ Object (readonly)
Returns the value of attribute total_bonus.
6 7 8 |
# File 'lib/pfrpg_core/skills.rb', line 6 def total_bonus @total_bonus end |
#trained_rank ⇒ Object (readonly)
Returns the value of attribute trained_rank.
6 7 8 |
# File 'lib/pfrpg_core/skills.rb', line 6 def trained_rank @trained_rank end |
Instance Method Details
#as_json(options = {}) ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/pfrpg_core/skills.rb', line 32 def as_json(={}) { :class_skill => @class_skill, :ac_penalty => @ac_penalty, :name => @name, :trained_rank => @trained_rank, :stat_bonus => @stat_bonus, :misc_bonus => @misc_bonus, :total_bonus => @total_bonus, :attribute => @attribute } end |
#calculate_ac_penalty(skill, character) ⇒ Object
76 77 78 79 80 81 82 |
# File 'lib/pfrpg_core/skills.rb', line 76 def calculate_ac_penalty(skill, character) ac_penalty = 0 if skill[:skill].ac_penalty? ac_penalty = character.get_ac_penalty end ac_penalty end |
#calculate_attribute_bonus(skill, character) ⇒ Object
84 85 86 87 |
# File 'lib/pfrpg_core/skills.rb', line 84 def calculate_attribute_bonus(skill, character) attribute = skill[:skill].attribute character.attributes.send("#{attribute}_mod") || 0 end |
#calculate_misc_bonus(skill, character) ⇒ Object
95 96 97 98 99 100 101 |
# File 'lib/pfrpg_core/skills.rb', line 95 def calculate_misc_bonus(skill, character) if skill[:skill].respond_to? "bonus_str" return character.get_bonus(skill[:skill].bonus_str).to_i else return character.get_bonus(skill[:skill].description).to_i end end |
#class_skill_bonuses(character) ⇒ Object
71 72 73 74 |
# File 'lib/pfrpg_core/skills.rb', line 71 def class_skill_bonuses(character) bonuses = character.get_bonus("class_skill") return bonuses || [] end |
#crafty(class_skills, skill) ⇒ Object
50 51 52 53 |
# File 'lib/pfrpg_core/skills.rb', line 50 def crafty(class_skills, skill) class_skills.find { |x| x.to_s.downcase['craft']} && skill[:skill].to_s.downcase['craft'] end |
#is_class_skill?(skill, character) ⇒ Boolean
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/pfrpg_core/skills.rb', line 55 def is_class_skill?(skill, character) found = character.levels.any? do |l| (l.heroclass.skills.find { |x| x.to_s == skill[:skill].to_s } || professional(l.heroclass.skills, skill) || crafty(l.heroclass.skills, skill)) end found ||= class_skill_bonuses(character).find do |x| if x x.downcase == skill[:skill].description.downcase else false end end return (found != nil) end |
#professional(class_skills, skill) ⇒ Object
45 46 47 48 |
# File 'lib/pfrpg_core/skills.rb', line 45 def professional(class_skills, skill) class_skills.find { |x| x.to_s.downcase['profession']} && skill[:skill].to_s.downcase['profession'] end |
#total_bonuses ⇒ Object
89 90 91 92 93 |
# File 'lib/pfrpg_core/skills.rb', line 89 def total_bonuses total = @misc_bonus + @stat_bonus - @ac_penalty + @trained_rank total += 3 if (@class_skill && @trained_rank > 0) total end |