haha - that's very cool
:D Only left/right movement implemented. Let me know if you bump into something that requires up/down transition to slopes.
Okay, the following lets you use either terrain tags or region ids to indicate tiles where you should move up or down when going from left to right (and of course, the reverse when going in the opposite direction). Set the 3 constants at the top of the script appropriately.
This handles the player, followers, and events. If you have events that fly, they will also be affected by this, even though they probably shouldn't be.
Spoiler
TERRAIN_LOOKUP = false # true for terrain tags, false for region idsUPLR = 62 # terrain or region to go up when moving right DOWNLR = 63 # terrain or region to go down when moving rightclass Game_CharacterBase #-------------------------------------------------------------------------- # * Method aliases #-------------------------------------------------------------------------- alias shaz_sdm_move_straight move_straight #-------------------------------------------------------------------------- # * Diagonal Override # d: Direction (2,4,6,8) #-------------------------------------------------------------------------- def diagonal_override(d) this_override = TERRAIN_LOOKUP ? $game_map.terrain_tag(@x, @y) : $game_map.region_id(@x, @y) new_x = $game_map.round_x_with_direction(@x, d) new_y = $game_map.round_y_with_direction(@y, d) new_override = TERRAIN_LOOKUP ? $game_map.terrain_tag(new_x, new_y) : $game_map.region_id(new_x, new_y) if (new_override == UPLR && d == 6) return 6, 8 elsif (new_override == DOWNLR && d == 4) return 4, 8 elsif (this_override == UPLR && d == 4) return 4, 2 elsif (this_override == DOWNLR && d == 6) return 6, 2 else return 0, 0 end end #-------------------------------------------------------------------------- # * Move Straight # d: Direction (2,4,6,8) # turn_ok : Allows change of direction on the spot #-------------------------------------------------------------------------- def move_straight(d, turn_ok = true) ovh, ovv = diagonal_override(d) if ovh != 0 && ovv != 0 move_diagonal(ovh, ovv) else shaz_sdm_move_straight(d, turn_ok) end endend
This should be placed below any other script that overrides or replaces the Game_CharacterBase.move_straight method.