Module: Lich::Gemstone::SK

Defined in:
documented/gemstone/sk.rb

Overview

SK module This module manages the spells known by the SK character class.

Examples:

Using the SK module

Lich::Gemstone::SK.add(123)
Lich::Gemstone::SK.list

Class Method Summary collapse

Class Method Details

.add(*numbers) ⇒ void

This method returns an undefined value.

Adds spell numbers to the list of known SK spells.

Examples:

Lich::Gemstone::SK.add(123, 456)

Parameters:

  • numbers (Array<Integer>)

    The spell numbers to add.



86
87
88
89
# File 'documented/gemstone/sk.rb', line 86

def self.add(*numbers)
  self.sk_known = (@sk_known + numbers).uniq
  self.list
end

.helpvoid

This method returns an undefined value.

Provides help information for managing SK spells.

Examples:

Lich::Gemstone::SK.help


71
72
73
74
75
76
77
78
79
# File 'documented/gemstone/sk.rb', line 71

def self.help
  respond "   Script to add SK spells to be known and used with Spell API calls."
  respond ""
  respond "   ;sk add <SPELL_NUMBER>  - Add spell number to saved list"
  respond "   ;sk rm <SPELL_NUMBER>   - Remove spell number from saved list"
  respond "   ;sk list                - Show all currently saved SK spell numbers"
  respond "   ;sk help                - Show this menu"
  respond ""
end

.known?(spell) ⇒ Boolean

Checks if a specific spell is known.

Examples:

is_known = Lich::Gemstone::SK.known?(some_spell)

Parameters:

  • spell (Object)

    The spell object to check.

Returns:

  • (Boolean)

    True if the spell is known, false otherwise.



53
54
55
56
# File 'documented/gemstone/sk.rb', line 53

def self.known?(spell)
  self.sk_known if @sk_known.nil?
  @sk_known.include?(spell.num.to_s)
end

.listvoid

This method returns an undefined value.

Lists the current known SK spells.

Examples:

Lich::Gemstone::SK.list


62
63
64
65
# File 'documented/gemstone/sk.rb', line 62

def self.list
  respond "Current SK Spells: #{@sk_known.inspect}"
  respond ""
end

.main(action = help, spells = nil) ⇒ void

This method returns an undefined value.

Main entry point for managing SK spells based on the action provided.

Examples:

Lich::Gemstone::SK.main(:add, "123 456")

Parameters:

  • action (Symbol) (defaults to: help)

    The action to perform (:add, :rm, :list, or :help).

  • spells (String, nil) (defaults to: nil)

    The spell numbers to add or remove, as a space-separated string.



107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# File 'documented/gemstone/sk.rb', line 107

def self.main(action = help, spells = nil)
  self.sk_known if @sk_known.nil?
  action = action.to_sym
  spells = spells.split(" ").uniq
  case action
  when :add
    self.add(*spells) unless spells.empty?
    self.help if spells.empty?
  when :rm
    self.remove(*spells) unless spells.empty?
    self.help if spells.empty?
  when :list
    self.list
  else
    self.help
  end
end

.remove(*numbers) ⇒ void

This method returns an undefined value.

Removes spell numbers from the list of known SK spells.

Examples:

Lich::Gemstone::SK.remove(123)

Parameters:

  • numbers (Array<Integer>)

    The spell numbers to remove.



96
97
98
99
# File 'documented/gemstone/sk.rb', line 96

def self.remove(*numbers)
  self.sk_known = (@sk_known - numbers).uniq
  self.list
end

.sk_knownArray<String>

Note:

This method initializes the known spells if they are not already set.

Retrieves the list of known SK spells.

Examples:

known_spells = Lich::Gemstone::SK.sk_known

Returns:

  • (Array<String>)

    An array of known spell numbers as strings.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'documented/gemstone/sk.rb', line 20

def self.sk_known
  if @sk_known.nil?
    val = DB_Store.read("#{XMLData.game}:#{XMLData.name}", "sk_known")
    if val.nil? || (val.is_a?(Hash) && val.empty?)
      old_settings = DB_Store.read("#{XMLData.game}:#{XMLData.name}", "vars")["sk/known"]
      if old_settings.is_a?(Array)
        val = old_settings
      else
        val = []
      end
      self.sk_known = val
    end
    @sk_known = val unless val.nil?
  end
  return @sk_known
end

.sk_known=(val) ⇒ Array<String>

Sets the list of known SK spells.

Examples:

Lich::Gemstone::SK.sk_known = ["123", "456"]

Parameters:

  • val (Array<String>)

    An array of spell numbers to be set as known.

Returns:

  • (Array<String>)

    The updated list of known spells.



42
43
44
45
46
# File 'documented/gemstone/sk.rb', line 42

def self.sk_known=(val)
  return @sk_known if @sk_known == val
  DB_Store.save("#{XMLData.game}:#{XMLData.name}", "sk_known", val)
  @sk_known = val
end