83 lines
1.5 KiB
Ruby
83 lines
1.5 KiB
Ruby
class Spell
|
|
ARCANA = [:death, :fate, :forces, :life, :matter, :mind, :prime, :space, :spirit, :time]
|
|
RANKS = ["Initiate", "Apprentice", "Disciple", "Adept", "Master"]
|
|
ARCANA.each do |arcanum|
|
|
attr_accessor arcanum
|
|
end
|
|
|
|
attr_accessor :name,
|
|
:practice,
|
|
:primary_factor,
|
|
:withstand,
|
|
:suggested_rote_skills,
|
|
:reaches,
|
|
:adds,
|
|
:rules_text,
|
|
:cost
|
|
|
|
attr_accessor :authors
|
|
|
|
def initialize(
|
|
death: 0,
|
|
fate: 0,
|
|
forces: 0,
|
|
life: 0,
|
|
matter: 0,
|
|
mind: 0,
|
|
prime: 0,
|
|
space: 0,
|
|
spirit: 0,
|
|
time: 0,
|
|
name:,
|
|
practice:,
|
|
primary_factor:,
|
|
withstand: nil,
|
|
suggested_rote_skills:,
|
|
reaches: [],
|
|
rules_text:,
|
|
authors:,
|
|
adds: [],
|
|
cost: nil)
|
|
|
|
@death = death
|
|
@fate = fate
|
|
@forces = forces
|
|
@life = life
|
|
@matter = matter
|
|
@mind = mind
|
|
@prime = prime
|
|
@space = space
|
|
@spirit = spirit
|
|
@time = time
|
|
@name = name
|
|
@practice = practice
|
|
@primary_factor = primary_factor
|
|
@withstand = withstand
|
|
@suggested_rote_skills = suggested_rote_skills
|
|
@reaches = reaches
|
|
@rules_text = rules_text
|
|
@authors = authors
|
|
@adds = adds
|
|
@cost = cost
|
|
end
|
|
|
|
def primary_arcanum
|
|
ARCANA.max { |arcanum1, arcanum2| self.send(arcanum1) <=> self.send(arcanum2) }
|
|
end
|
|
|
|
def full_title
|
|
"#{name} (#{arcana_with_dots.join(', ')})"
|
|
end
|
|
|
|
def arcana
|
|
ARCANA.select { |arcanum| self.send(arcanum) > 0}
|
|
end
|
|
|
|
def arcana_with_dots
|
|
arcana.collect { |arcanum| arcanum_with_dots(arcanum) }
|
|
end
|
|
|
|
def arcanum_with_dots(arcanum)
|
|
[arcanum, self.send(arcanum)].to_arcanum_with_dots
|
|
end
|
|
end |