Class: PfrpgCore::FeatFinder

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(entity, feats) ⇒ FeatFinder

Returns a new instance of FeatFinder.



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

def initialize(entity, feats)
  @entity = entity
  @feats = feats
end

Instance Attribute Details

#entityObject (readonly)

Returns the value of attribute entity.



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

def entity
  @entity
end

#featsObject (readonly)

Returns the value of attribute feats.



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

def feats
  @feats
end

Instance Method Details

#doesnt_include_feat(feats, feat) ⇒ Object



24
25
26
# File 'lib/pfrpg_core/feat_finder.rb', line 24

def doesnt_include_feat(feats, feat)
  !(feats.find { |x| x.name == feat.name })
end

#filter_feats_by_owned(feats, entity) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/pfrpg_core/feat_finder.rb', line 16

def filter_feats_by_owned(feats, entity)
  owned_feats = entity.feats
  feats.select do |f|
      repeat_list.include?(f.name) ||
      doesnt_include_feat(owned_feats, f)
  end
end

#filter_feats_by_prereq(feats, entity) ⇒ Object



28
29
30
31
32
# File 'lib/pfrpg_core/feat_finder.rb', line 28

def filter_feats_by_prereq(feats, entity)
  feats.select do |f|
    prereq_check(entity, f)
  end
end

#find_featsObject



9
10
11
12
13
14
# File 'lib/pfrpg_core/feat_finder.rb', line 9

def find_feats
  feats = @feats
  feats = filter_feats_by_owned(feats, entity)
  feats = filter_feats_by_prereq(feats, entity)
  return feats
end

#prereq_check(entity, feat) ⇒ Object



34
35
36
37
# File 'lib/pfrpg_core/feat_finder.rb', line 34

def prereq_check(entity, feat)
  prereqs = PfrpgUtility::Prerequisite.load(feat.prereq_code)
  prereqs.all? { |x| x.match(entity) }
end

#repeat_listObject



39
40
41
42
43
44
45
46
47
# File 'lib/pfrpg_core/feat_finder.rb', line 39

def repeat_list
  [
    'Exotic Weapon Proficiency',
    'Martial Weapon Proficiency',
    'Weapon Focus',
    'Spell Focus',
    'Custom Feat'
  ]
end