mirror of
https://github.com/2006-Scape/apollo.git
synced 2026-07-03 16:49:11 +00:00
87 lines
3.0 KiB
Ruby
87 lines
3.0 KiB
Ruby
require 'java'
|
|
|
|
java_import 'org.apollo.game.action.Action'
|
|
java_import 'org.apollo.game.model.Animation'
|
|
|
|
BURY_BONE_ANIMATION = 827
|
|
BONES = {}
|
|
|
|
# A bone with an id and experience value.
|
|
class Bone
|
|
attr_reader :id, :experience
|
|
|
|
def initialize(id, experience)
|
|
@id = id
|
|
@experience = experience
|
|
end
|
|
|
|
end
|
|
|
|
|
|
# An action where a bone in a player's inventory is buried.
|
|
class BuryBoneAction < Action
|
|
attr_reader :slot, :bone
|
|
|
|
def initialize(mob, slot, bone)
|
|
super(1, true, mob)
|
|
@slot = slot
|
|
@bone = bone
|
|
@executions = 0
|
|
end
|
|
|
|
def execute
|
|
if @executions == 0
|
|
mob.send_message('You dig a hole in the ground...')
|
|
@executions += 1
|
|
elsif @executions == 1
|
|
if mob.inventory.get(@slot).id == @bone.id
|
|
mob.play_animation(Animation.new(BURY_BONE_ANIMATION))
|
|
mob.send_message('You bury the bones.')
|
|
mob.inventory.reset(@slot)
|
|
mob.skill_set.add_experience(PRAYER_SKILL_ID, @bone.experience)
|
|
end
|
|
stop
|
|
end
|
|
end
|
|
|
|
def equals(other)
|
|
return (get_class == other.get_class and @bone == other.bone)
|
|
end
|
|
end
|
|
|
|
# Intercepts the first item option message.
|
|
on :message, :first_item_option do |ctx, player, message|
|
|
bone = BONES[message.id]
|
|
unless bone == nil
|
|
player.start_action(BuryBoneAction.new(player, message.slot, bone))
|
|
ctx.break_handler_chain
|
|
end
|
|
end
|
|
|
|
# Appends a bone to the array
|
|
def append_bone(hash)
|
|
raise 'Hash must contain an id and an experience value.' unless hash.has_key?(:id) && hash.has_key?(:experience)
|
|
id = hash[:id]
|
|
BONES[id] = Bone.new(id, hash[:experience])
|
|
end
|
|
|
|
append_bone :name => :regular_bones, :id => 526, :experience => 5
|
|
append_bone :name => :burnt_bones, :id => 528, :experience => 5
|
|
append_bone :name => :bat_bones, :id => 530, :experience => 4
|
|
append_bone :name => :big_bones, :id => 532, :experience => 45
|
|
append_bone :name => :babydragon_bones, :id => 534, :experience => 30
|
|
append_bone :name => :dragon_bones, :id => 536, :experience => 72
|
|
append_bone :name => :wolf_bones, :id => 2859, :experience => 14
|
|
append_bone :name => :shaikahan_bones, :id => 3123, :experience => 25
|
|
append_bone :name => :jogre_bones, :id => 3125, :experience => 15
|
|
append_bone :name => :burnt_zogre_bones, :id => 3127, :experience => 25
|
|
append_bone :name => :monkey_bones, :id => 3179, :experience => 14 # smallish
|
|
append_bone :name => :monkey_bones, :id => 3180, :experience => 14 # medium
|
|
append_bone :name => :monkey_bones, :id => 3181, :experience => 14 # quite large
|
|
append_bone :name => :monkey_bones, :id => 3182, :experience => 14 # quite large
|
|
append_bone :name => :monkey_bones, :id => 3183, :experience => 14 # small
|
|
append_bone :name => :shaking_bones, :id => 3187, :experience => 14
|
|
append_bone :name => :zogre_bones, :id => 4812, :experience => 23
|
|
append_bone :name => :fayrg_bones, :id => 4830, :experience => 84
|
|
append_bone :name => :raurg_bones, :id => 4832, :experience => 96
|
|
append_bone :name => :ourg_bones, :id => 4834, :experience => 140 |