Module: Lich::Gemstone::Spells

Defined in:
documented/attributes/spells.rb

Constant Summary collapse

@@spell_lists =

A list of spell types available in the game.

Examples:

@@spell_lists # => [:major_elemental, :major_spiritual, :minor_elemental, :minor_mental, :minor_spiritual, :bard, :cleric, :empath, :paladin, :ranger, :sorcerer, :wizard]
%i(major_elemental major_spiritual minor_elemental minor_mental minor_spiritual bard cleric empath paladin ranger sorcerer wizard)

Class Method Summary collapse

Class Method Details

.activeArray<Spell>

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Returns a list of active spells.

Returns:

  • (Array<Spell>)

    an array of active spells



41
42
43
# File 'documented/attributes/spells.rb', line 41

def self.active
  Spell.active
end

.get_circle_name(num) ⇒ String

Returns the name of the spell circle corresponding to the given number.

Parameters:

  • num (Integer)

    the circle number

Returns:

  • (String)

    the name of the spell circle



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'documented/attributes/spells.rb', line 10

def self.get_circle_name(num)
  case num.to_s
  when '1' then 'Minor Spirit'
  when '2' then 'Major Spirit'
  when '3' then 'Cleric'
  when '4' then 'Minor Elemental'
  when '5' then 'Major Elemental'
  when '6' then 'Ranger'
  when '7' then 'Sorcerer'
  when '8' then 'Old Healing List'
  when '9' then 'Wizard'
  when '10' then 'Bard'
  when '11' then 'Empath'
  when '12' then 'Minor Mental'
  when '16' then 'Paladin'
  when '17' then 'Arcane'
  when '65' then 'Imbedded Enchantment'
  when '66' then 'Death'
  when '90' then 'Micellaneous'
  when '95' then 'Armor Specialization'
  when '96' then 'Combat Maneuvers'
  when '97' then 'Guardians of Sunfist'
  when '98' then 'Order of Voln'
  when '99' then 'Council of Light'
  else 'Unknown Circle'
  end
end

.knownArray<Spell>

Returns a list of known spells.

Returns:

  • (Array<Spell>)

    an array of known spells



47
48
49
50
51
# File 'documented/attributes/spells.rb', line 47

def self.known
  known_spells = Array.new
  Spell.list.each { |spell| known_spells.push(spell) if spell.known? }
  return known_spells
end

.require_cooldown(spell) ⇒ Symbol

Checks if a cooldown is required for the given spell and applies it if necessary.

Parameters:

  • spell (Spell)

    the spell to check

Returns:

  • (Symbol)

    :ok if no cooldown is required



57
58
59
60
61
62
63
64
65
66
# File 'documented/attributes/spells.rb', line 57

def self.require_cooldown(spell)
  if (spell.num.to_i > 9013) && (spell.num.to_i < 9042) # Assume Aspect: Ranger
    cooldown_spell = Spell[spell.num + 1]
    cooldown_spell.putup
  elsif (spell.num == 515) && (recovery = Spell[599]) # Rapid Fire: Major Elemental
    recovery.putup
  else
    :ok
  end
end

.serializeArray<Integer>

Serializes the spell lists into an array.

Returns:

  • (Array<Integer>)

    an array of spell ranks



70
71
72
# File 'documented/attributes/spells.rb', line 70

def self.serialize
  [self.minor_elemental, self.major_elemental, self.minor_spiritual, self.major_spiritual, self.wizard, self.sorcerer, self.ranger, self.paladin, self.empath, self.cleric, self.bard, self.minormental]
end