Class: PfrpgCore::WeaponTrainingCalculator

Inherits:
Object
  • Object
show all
Defined in:
lib/pfrpg_core/weapon_training_calculator.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(character) ⇒ WeaponTrainingCalculator

Returns a new instance of WeaponTrainingCalculator.



4
5
6
7
# File 'lib/pfrpg_core/weapon_training_calculator.rb', line 4

def initialize(character)
  @character = character
  @trained_types = gen_trained_types
end

Instance Attribute Details

#characterObject (readonly)

Returns the value of attribute character.



3
4
5
# File 'lib/pfrpg_core/weapon_training_calculator.rb', line 3

def character
  @character
end

#trained_typesObject (readonly)

Returns the value of attribute trained_types.



3
4
5
# File 'lib/pfrpg_core/weapon_training_calculator.rb', line 3

def trained_types
  @trained_types
end

Instance Method Details

#feature_trained?(weapon, feature) ⇒ Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/pfrpg_core/weapon_training_calculator.rb', line 19

def feature_trained?(weapon, feature)
  PfrpgTables::Tables::Weapons.weapon_training_members(feature.ability_name).include? weapon.get_base_name
end

#gen_trained_typesObject



9
10
11
12
13
14
15
16
17
# File 'lib/pfrpg_core/weapon_training_calculator.rb', line 9

def gen_trained_types
  types = []
  trains = character.class_features.select { |x| x.type['WeaponTraining'] }
  trains.sort! { |x,y| x.created < y.created }
  trains.each do |train|
    types << train.ability_name
  end
  types
end

#trained_value(weapon, feature) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/pfrpg_core/weapon_training_calculator.rb', line 23

def trained_value(weapon, feature)
  return 0 unless feature_trained?(weapon, feature)
  bonus = trained_types.size
  weapon_name = weapon.get_base_name
  trained_types.each do |t|
    if PfrpgTables::Tables::Weapons.weapon_training_members(t).include? weapon_name
      return bonus
    end
    bonus -= 1
  end
  return 0
end