Module: PfrpgCore::Derived::Misc
- Included in:
- Character
- Defined in:
- lib/pfrpg_core/derived/misc.rb
Instance Method Summary collapse
- #calc_speed(speed_type, base) ⇒ Object
- #explode_levels ⇒ Object
- #get_caster_level ⇒ Object
- #get_class_level(heroclass) ⇒ Object
- #hit_dice ⇒ Object
- #hit_die ⇒ Object
- #hit_points ⇒ Object
- #initiative ⇒ Object
- #level_string ⇒ Object
- #misc_json ⇒ Object
- #parse_speed_bonuses(speed_bonuses) ⇒ Object
- #size ⇒ Object
- #speed ⇒ Object
- #total_level ⇒ Object
Instance Method Details
#calc_speed(speed_type, base) ⇒ Object
33 34 35 |
# File 'lib/pfrpg_core/derived/misc.rb', line 33 def calc_speed(speed_type, base) base + get_bonus("#{speed_type}_speed") end |
#explode_levels ⇒ Object
79 80 81 82 |
# File 'lib/pfrpg_core/derived/misc.rb', line 79 def explode_levels # TODO: implement me [] end |
#get_caster_level ⇒ Object
88 89 90 91 92 93 94 95 |
# File 'lib/pfrpg_core/derived/misc.rb', line 88 def get_caster_level # TODO constantize somewhere better caster_classes = ['Bard', 'Cleric', 'Druid', 'Paladin', 'Ranger', 'Sorcerer', 'Wizard'] caster_levels = latest_levels.select { |x| caster_classes.include? x.class_name } max_caster_level = caster_levels.map { |x| x.class_number }.max || 0 ek_level = get_class_level(PfrpgClasses::Heroclass.by_name('Eldritch Knight')) return (max_caster_level + ek_level) || 0 end |
#get_class_level(heroclass) ⇒ Object
70 71 72 73 74 75 76 77 |
# File 'lib/pfrpg_core/derived/misc.rb', line 70 def get_class_level(heroclass) l = latest_levels.find { |x| x.class_name[heroclass.name] } if l return l.class_number else return 0 end end |
#hit_dice ⇒ Object
84 85 86 |
# File 'lib/pfrpg_core/derived/misc.rb', line 84 def hit_dice hit_die end |
#hit_die ⇒ Object
66 67 68 |
# File 'lib/pfrpg_core/derived/misc.rb', line 66 def hit_die total_level end |
#hit_points ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/pfrpg_core/derived/misc.rb', line 45 def hit_points hp = @character.hit_points # TODO : potentially move off this method when multiple hp affect stats exist if (@feats.find { |x| x.name == 'Toughness' }) hp += 3 if (total_level > 3) hp += total_level - 3 end end return hp end |
#initiative ⇒ Object
14 15 16 17 18 19 |
# File 'lib/pfrpg_core/derived/misc.rb', line 14 def initiative initiative = 0 initiative += @attributes.dex_mod initiative += get_bonus("initiative").to_i return initiative end |
#level_string ⇒ Object
5 6 7 8 9 10 11 12 |
# File 'lib/pfrpg_core/derived/misc.rb', line 5 def level_string str = "#{@alignment} :" @levels.each do |l| str += "#{l.name}/#{l.rank}" str += "*" if l.favored end str end |
#misc_json ⇒ Object
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/pfrpg_core/derived/misc.rb', line 97 def misc_json { :initiative => initiative, :alignment => @alignment, :speed => speed, :hit_points => hit_points, :feats => @feats, :class_features => @class_features, :levels => @levels, :total_level => @total_level, :size => size, :level_string => level_string, :temporary => @character.temp_values } end |
#parse_speed_bonuses(speed_bonuses) ⇒ Object
37 38 39 40 41 42 43 |
# File 'lib/pfrpg_core/derived/misc.rb', line 37 def parse_speed_bonuses(speed_bonuses) speed_bonus = 0 speed_bonuses.each do |s| speed_bonus += s.to_i if MathHelper.is_number(s) end speed_bonus end |
#size ⇒ Object
57 58 59 60 |
# File 'lib/pfrpg_core/derived/misc.rb', line 57 def size return @race.size if @race return nil end |
#speed ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/pfrpg_core/derived/misc.rb', line 21 def speed base_speed = NullObject.maybe(@race).speed || 0 base_speed += parse_speed_bonuses(get_bonus("speed")) base_speed -= armor_speed_penalty speeds = {} ['land','fly','climb','swim'].each do |type| speeds["#{type}_speed"] = calc_speed(type, base_speed) end speeds['speed'] = speeds['land_speed'] return speeds end |
#total_level ⇒ Object
62 63 64 |
# File 'lib/pfrpg_core/derived/misc.rb', line 62 def total_level @levels.inject(0) {|sum, x| sum = sum + x.rank } end |