mirror of
https://github.com/2006-Scape/apollo.git
synced 2026-07-04 16:49:11 +00:00
Add wilderness area plugin.
This commit is contained in:
@@ -10,6 +10,7 @@
|
|||||||
<scripts>
|
<scripts>
|
||||||
<script>actions.rb</script>
|
<script>actions.rb</script>
|
||||||
<script>areas.rb</script>
|
<script>areas.rb</script>
|
||||||
|
<script>wilderness.rb</script>
|
||||||
</scripts>
|
</scripts>
|
||||||
<dependencies />
|
<dependencies />
|
||||||
</plugin>
|
</plugin>
|
||||||
|
|||||||
@@ -0,0 +1,52 @@
|
|||||||
|
require 'java'
|
||||||
|
|
||||||
|
java_import 'org.apollo.game.model.entity.Player'
|
||||||
|
java_import 'org.apollo.game.message.impl.OpenOverlayMessage'
|
||||||
|
java_import 'org.apollo.game.message.impl.SetWidgetTextMessage'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
MIN_X = 2945
|
||||||
|
MIN_Y = 3522
|
||||||
|
MAX_X = 3390
|
||||||
|
MAX_Y = 3972
|
||||||
|
|
||||||
|
OVERLAY_INTERFACE_ID = 197
|
||||||
|
LEVEL_STRING_ID = 199
|
||||||
|
|
||||||
|
declare_attribute(:wilderness_level, 0, :transient)
|
||||||
|
|
||||||
|
# Determines the wilderness level for the specified player's position
|
||||||
|
def wilderness_level(player)
|
||||||
|
return (player.position.y - (MIN_Y - 1) / 8).ceil
|
||||||
|
end
|
||||||
|
|
||||||
|
area_action :wilderness_level do
|
||||||
|
|
||||||
|
on_entry do |player|
|
||||||
|
player.wilderness_level = wilderness_level(player)
|
||||||
|
player.interface_set.open_overlay(OVERLAY_INTERFACE_ID)
|
||||||
|
player.send(SetWidgetTextMessage.new(LEVEL_STRING_ID, "Level: #{player.wilderness_level}"))
|
||||||
|
show_action(ATTACK_ACTION)
|
||||||
|
end
|
||||||
|
|
||||||
|
while_in do |player|
|
||||||
|
current = player.wilderness_level
|
||||||
|
updated = wilderness_level(player)
|
||||||
|
if (current != updated)
|
||||||
|
player.wilderness_level = updated
|
||||||
|
player.send(SetWidgetTextMessage.new(LEVEL_STRING_ID, "Level: #{player.wilderness_level}"))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
on_exit do |player|
|
||||||
|
player.wilderness_level = 0
|
||||||
|
player.interface_set.close() # TODO: Will this cause issues with other potentially open interfaces?
|
||||||
|
hide_action(ATTACK_ACTION)
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
area :name => :wilderness, :coordinates => MIN_X, MIN_Y, MAX_X, MAX_Y, 0, => :actions => :wilderness_level
|
||||||
Reference in New Issue
Block a user