mirror of
https://github.com/2006-Scape/apollo.git
synced 2026-07-03 16:49:11 +00:00
53 lines
1.8 KiB
Ruby
53 lines
1.8 KiB
Ruby
require 'java'
|
|
|
|
# The hash of runes.
|
|
RUNES = {}
|
|
|
|
# Represents a rune that can be crafted.
|
|
class Rune
|
|
attr_reader :name, :id, :level, :experience
|
|
|
|
def initialize(id, level, experience, multiplier)
|
|
@id = id
|
|
@name = name_of(:item, id)
|
|
@level = level
|
|
@experience = experience
|
|
@multiplier = multiplier
|
|
end
|
|
|
|
def equals(other)
|
|
get_class == other.get_class && id == other.id
|
|
end
|
|
|
|
def multiplier(level)
|
|
@multiplier.call(level)
|
|
end
|
|
|
|
end
|
|
|
|
# Appends a rune to the list.
|
|
def rune(name, hash)
|
|
unless hash.has_keys?(:altar, :id, :level, :reward)
|
|
fail "#{name} is missing one of id, altar, level, or reward."
|
|
end
|
|
|
|
id, altar, level, experience = hash[:id], hash[:altar], hash[:level], hash[:reward]
|
|
bonus = hash[:bonus] || ->(_) { 1 }
|
|
|
|
RUNES[altar] = Rune.new(id, level, experience, bonus)
|
|
end
|
|
|
|
rune :air, altar: 2478, id: 556, level: 1, reward: 5, bonus: ->(level) { (level / 11).floor + 1 }
|
|
rune :mind, altar: 2479, id: 558, level: 1, reward: 5.5, bonus: ->(level) { (level / 14).floor + 1 }
|
|
rune :water, altar: 2480, id: 555, level: 5, reward: 6, bonus: ->(level) { (level / 19).floor + 1 }
|
|
rune :earth, altar: 2481, id: 557, level: 9, reward: 6.5,
|
|
bonus: ->(level) { (level / 26).floor + 1 }
|
|
rune :fire, altar: 2482, id: 554, level: 14, reward: 7, bonus: ->(level) { (level / 35).floor + 1 }
|
|
rune :body, altar: 2483, id: 559, level: 20, reward: 7.5,
|
|
bonus: ->(level) { (level / 46).floor + 1 }
|
|
rune :cosmic, altar: 2484, id: 564, level: 27, reward: 8, bonus: ->(level) { level >= 59 ? 2 : 1 }
|
|
rune :chaos, altar: 2487, id: 562, level: 35, reward: 8.5, bonus: ->(level) { level >= 74 ? 2 : 1 }
|
|
rune :nature, altar: 2486, id: 561, level: 44, reward: 9, bonus: ->(level) { level >= 91 ? 2 : 1 }
|
|
rune :law, altar: 2485, id: 563, level: 54, reward: 9.5
|
|
rune :death, altar: 2488, id: 560, level: 65, reward: 10
|