• Do not use Discord to host any images you post, these links expire quickly! You can learn how to add images to your posts here.
  • Reminder: AI-generated content is not allowed on the forums per the Rules and Regulations. Please contact us if you have any questions!
Resource icon

v21.1 Marin Side Stairs - v21 2025-06-10

This resource pertains to version 21.1 of Pokémon Essentials.
Pokémon Essentials Version
v21.1 ✅
Also compatible with
  1. v21.1
I have this working on my project, but with fixes all over the place which made it harder to find all the changes I did.
I will leave a small disclaimer, when I was fiddling with this I may have cut out parts that weren't of use to me which may have removed certain features.
I downloaded a clean essentials just with hotfixes and following pkmn plugins to make sure I found all the code I edited, hopefully I didn't miss anything.

This still works like the old plugin: https://eeveeexpo.com/resources/396/
(I encourage to not use offset : 0 tho (personally I use 16), in my testing if I was fast enough going on and off stairs I could desync the follower with 0 offset for some reason)
I just made it compatible with v21.1 and made the stair events be kept separately for faster access, this way you can use side stairs in a map with dozens of events and not lag since it won't be looping through all the events, just the stair events.

I don't intend to update or improve this any further! In the case I missed something important to make this work I'll do my best to make it work, but that's all.

Instructions:
1. Download the .txt file attached to this post, copy its contents, paste it in an empty page above main.
2. Ctrl + Shift + F "class Game_Map".
Add:
Ruby:
Expand Collapse Copy
attr_accessor :side_stairs
After this line:
Ruby:
Expand Collapse Copy
attr_accessor :need_refresh             # refresh request flag
3. Next, in the same page, find " def setup(map_id) " (The one in the Game_Map tab)
And overwrite it with this:
Ruby:
Expand Collapse Copy
def setup(map_id)
    @map_id = map_id
    @map = load_data(sprintf("Data/Map%03d.rxdata", map_id))
    @side_stairs = {}  #Keep side stair events here
    tileset = $data_tilesets[@map.tileset_id]
    updateTileset
    @fog_ox                  = 0
    @fog_oy                  = 0
    @fog_tone                = Tone.new(0, 0, 0, 0)
    @fog_tone_target         = Tone.new(0, 0, 0, 0)
    @fog_tone_duration       = 0
    @fog_tone_timer_start    = nil
    @fog_opacity_duration    = 0
    @fog_opacity_target      = 0
    @fog_opacity_timer_start = nil
    self.display_x           = 0
    self.display_y           = 0
    @need_refresh            = false
    EventHandlers.trigger(:on_game_map_setup, map_id, @map, tileset)
    @events                  = {}
    @map.events.each_key do |i|
      @events[i]             = Game_Event.new(@map_id, @map.events[i], self)
    end
    #mss stores all side stairs
    @events.values.each do |event|
      add_side_stair(map_id, event)
    end
    #mss
    @common_events           = {}
    (1...$data_common_events.size).each do |i|
      @common_events[i]      = Game_CommonEvent.new(i)
    end
    @scroll_distance_x       = 0
    @scroll_distance_y       = 0
    @scroll_speed            = 4
  end
4. Next, find " def fancy_moveto(new_x, new_y, leader)" in Game_Follower page
And overwrite that function with this:
Ruby:
Expand Collapse Copy
def fancy_moveto(new_x, new_y, leader)
    if self.x - new_x == 1 && self.y == new_y
      move_fancy(4)
    elsif self.x - new_x == -1 && self.y == new_y
      move_fancy(6)
    elsif self.x == new_x && self.y - new_y == 1
      move_fancy(8)
    elsif self.x == new_x && self.y - new_y == -1
      move_fancy(2)
    elsif self.x - new_x == 2 && self.y == new_y
      jump_fancy(4, leader)
    elsif self.x - new_x == -2 && self.y == new_y
      jump_fancy(6, leader)
    elsif self.x == new_x && self.y - new_y == 2
      jump_fancy(8, leader)
    elsif self.x == new_x && self.y - new_y == -2
      jump_fancy(2, leader)
    #fix follower on stairs
    elsif self.x - new_x == -1
      move_fancy(6)
    elsif self.x - new_x == 1
      move_fancy(4)
    #fix follower on stairs
    elsif self.x != new_x || self.y != new_y
      moveto(new_x, new_y)
    end
  end
Credits
Marin for the OG Side Stairs
Aioros for the update and performance change
Author
Aioros
Downloads
266
Views
1,774
First release
Last update

Ratings

0.00 star(s) 0 ratings

More resources from Aioros

Back
Top