Housekeeping

This commit is contained in:
KeepBotting
2019-03-26 14:05:40 -04:00
parent a0c78ced90
commit 739c331860
135 changed files with 4 additions and 4 deletions
+89
View File
@@ -0,0 +1,89 @@
require 'java'
java_import 'org.apollo.game.action.Action'
java_import 'org.apollo.game.model.Animation'
java_import 'org.apollo.game.model.entity.Skill'
BURY_BONE_ANIMATION = Animation.new(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...')
mob.play_animation(BURY_BONE_ANIMATION)
@executions += 1
elsif @executions == 1
if mob.inventory.get(@slot).id == @bone.id
mob.send_message('You bury the bones.')
mob.inventory.reset(@slot)
mob.skill_set.add_experience(Skill::PRAYER, @bone.experience)
end
stop
end
end
def equals(other)
get_class == other.get_class
end
end
# Intercepts the first item option message.
on :message, :first_item_option do |player, message|
bone = BONES[message.id]
unless bone.nil?
player.start_action(BuryBoneAction.new(player, message.slot, bone))
message.terminate
end
end
# Appends a bone to the array
def append_bone(hash)
fail 'Hash must contain an id and an experience value.' unless hash.has_keys?(:id, :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
+18
View File
@@ -0,0 +1,18 @@
<?xml version="1.0"?>
<plugin>
<id>skill-prayer</id>
<version>0.9</version>
<name>Prayer</name>
<description>Adds the Prayer skill.</description>
<authors>
<author>Major</author>
<author>010253</author>
</authors>
<scripts>
<script>bury.rb</script>
<script>prayers.rb</script>
</scripts>
<dependencies>
<dependency>attributes</dependency>
</dependencies>
</plugin>
+88
View File
@@ -0,0 +1,88 @@
java_import 'org.apollo.game.message.impl.ConfigMessage'
# Declares the active prayer attribute.
declare_attribute(:active_prayer, -1, :persistent)
# The hash of button ids to prayers.
PRAYERS = {}
# Intercept the ButtonMessage to toggle a prayer.
on :message, :button do |player, message|
button = message.widget_id
prayer = PRAYERS[button]
unless prayer.nil?
if prayer.level > player.skill_set.get_maximum_level(Skill::PRAYER)
update_setting(player, prayer, :off)
next
end
player.send_message('after level check')
previous = player.active_prayer
update_setting(player, PRAYERS[previous], :off) unless previous == -1
if previous != button
player.send_message("Previous: #{previous}, new: #{button}.")
update_setting(player, prayer, :on)
player.active_prayer = button
end
end
end
private
# A Prayer that can be activated by a player.
class Prayer
attr_reader :name, :level, :button, :setting, :drain
def initialize(name, level, button, setting, drain)
@name = name
@level = level
@button = button
@setting = setting
@drain = drain
end
end
def update_setting(player, prayer, state)
value = (state == :on) ? 1 : 0
player.send_message("Toggling prayer #{prayer.name}, state: #{state}.")
player.send(ConfigMessage.new(prayer.setting, value))
end
# Appends a Prayer to the hash.
def append_prayer(name, hash)
unless hash.has_keys?(:level, :button, :setting, :drain)
fail 'Error: prayer hash hash must contain a level, button, setting, and drain.'
end
button = hash[:button]
PRAYERS[button] = Prayer.new(name, hash[:level], button, hash[:setting], hash[:drain])
end
# Don't deal with the actual effect here to avoid mess (TODO do it, but with attributes?).
append_prayer :thick_skin, level: 1, button: 5609, setting: 83, drain: 0.01
append_prayer :burst_of_strength, level: 4, button: 5610, setting: 84, drain: 0.01
append_prayer :clarity_of_thought, level: 7, button: 5611, setting: 85, drain: 0.01
append_prayer :rock_skin, level: 10, button: 5612, setting: 86, drain: 0.04
append_prayer :superhuman_strength, level: 13, button: 5613, setting: 87, drain: 0.04
append_prayer :improved_reflexes, level: 16, button: 5614, setting: 88, drain: 0.04
append_prayer :rapid_restore, level: 19, button: 5615, setting: 89, drain: 0.01
append_prayer :rapid_heal, level: 22, button: 5615, setting: 90, drain: 0.01
append_prayer :protect_item, level: 25, button: 5617, setting: 91, drain: 0.01
append_prayer :steel_skin, level: 28, button: 5618, setting: 92, drain: 0.1
append_prayer :ultimate_strength, level: 31, button: 5619, setting: 93, drain: 0.1
append_prayer :incredible_reflexes, level: 34, button: 5620, setting: 94, drain: 0.1
append_prayer :protect_from_magic, level: 37, button: 5621, setting: 95, drain: 0.15
append_prayer :protect_from_missiles, level: 40, button: 5622, setting: 96, drain: 0.15
append_prayer :protect_from_melee, level: 43, button: 5623, setting: 97, drain: 0.15
append_prayer :retribution, level: 46, button: 683, setting: 98, drain: 0.15
append_prayer :redemption, level: 49, button: 684, setting: 99, drain: 0.15
append_prayer :smite, level: 52, button: 685, setting: 100, drain: 0.2