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
-
#initialize(skill, character, skill_filters) ⇒ PrettySkill
constructor
A new instance of PrettySkill.
- #is_class_skill?(skill, character) ⇒ Boolean
- #total_bonuses ⇒ Object
Methods included from Filterable
Constructor Details
#initialize(skill, character, skill_filters) ⇒ PrettySkill
Returns a new instance of 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
64 65 66 67 68 69 70 |
# File 'lib/pfrpg_core/skills.rb', line 64 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
72 73 74 75 |
# File 'lib/pfrpg_core/skills.rb', line 72 def calculate_attribute_bonus(skill, character) attribute = skill[:skill].attribute character.attributes.send("#{attribute}_mod") || 0 end |
#calculate_misc_bonus(skill, character) ⇒ Object
83 84 85 86 87 88 89 |
# File 'lib/pfrpg_core/skills.rb', line 83 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
59 60 61 62 |
# File 'lib/pfrpg_core/skills.rb', line 59 def class_skill_bonuses(character) bonuses = character.get_bonus("class_skill") return bonuses || [] end |
#is_class_skill?(skill, character) ⇒ Boolean
45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/pfrpg_core/skills.rb', line 45 def is_class_skill?(skill, character) found = character.levels.any? do |l| l.heroclass.skills.find { |x| x.to_s == skill[:skill].to_s } 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 |
#total_bonuses ⇒ Object
77 78 79 80 81 |
# File 'lib/pfrpg_core/skills.rb', line 77 def total_bonuses total = @misc_bonus + @stat_bonus - @ac_penalty + @trained_rank total += 3 if (@class_skill && @trained_rank > 0) total end |