Module: Lich::Gemstone::SK

Defined in:
documented/gemstone/sk.rb

Class Method Summary collapse

Class Method Details

.add(*numbers) ⇒ void

This method returns an undefined value.

Adds one or more spell numbers to the known SK spells.

Parameters:

  • numbers (Array<String>)

    the spell numbers to add.



69
70
71
72
# File 'documented/gemstone/sk.rb', line 69

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.



55
56
57
58
59
60
61
62
63
# File 'documented/gemstone/sk.rb', line 55

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.

Parameters:

  • spell (Object)

    the spell to check for knowledge.

Returns:

  • (Boolean)

    true if the spell is known, false otherwise.



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

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.



48
49
50
51
# File 'documented/gemstone/sk.rb', line 48

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.

Parameters:

  • action (Symbol) (defaults to: help)

    the action to perform (e.g., :add, :rm, :list).

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

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



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'documented/gemstone/sk.rb', line 88

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 one or more spell numbers from the known SK spells.

Parameters:

  • numbers (Array<String>)

    the spell numbers to remove.



78
79
80
81
# File 'documented/gemstone/sk.rb', line 78

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

.sk_knownArray<String>?

Retrieves the known SK spells.

Returns:

  • (Array<String>, nil)

    the list of known SK spells or nil if not set.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'documented/gemstone/sk.rb', line 9

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) ⇒ void

This method returns an undefined value.

Sets the known SK spells.

Parameters:

  • val (Array<String>)

    the list of SK spells to be known.



30
31
32
33
34
35
# File 'documented/gemstone/sk.rb', line 30

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