Simple Diagonal Movement

● ARCHIVED · READ-ONLY
Started by Shaz 9 posts View original ↗
  1. Simple Diagonal Movement 1.0
    Shaz
    Introduction
    This scriplet, requested by Despain, allows you to use terrain tags or regions to identify tiles where the player should automatically move diagonally when pressing the left and right arrow keys (stairs, slopes, etc). It avoids the player having to use the up/down keys, and removes the need for events to force diagonal movement.

    Features
    - Use terrain tags or map regions.
    - Affects player, followers and events.

    Screenshots
    DiagonalMovementRun.png

    How to Use
    Paste the script below others in the Materials section.

    Note - for demonstration purposes, I made all of these tiles passable in the editor. Normally you wouldn't be able to walk on them at all, and this script would not change that.

    To use with Terrain Tags:
    Spoiler
    Set terrain tags on tiles to indicate where the player will move diagonally up or diagonally down when going from left to right:
    DiagonalMovementSetupTerrain.png

    Change the script to use terrain tags:
    Code:
    TERRAIN_LOOKUP = true UPLR = 1DOWNLR = 2
    To use with Region IDs:
    Spoiler
    Paint tiles in the Region layer to indicate where the player will move diagonally up or diagonally down when going from left to right:
    DiagonalMovementSetupRegion.png

    Change the script to use regions:
    Code:
    TERRAIN_LOOKUP = falseUPLR = 62DOWNLR = 63

    Script
    Click here for the latest version of the script.

    Or get it here (may not be the latest version)
    Spoiler
    Code:
    #----------------------------------------------------------------------------# Simple Diagonal Movement 1.0# by Shaz#----------------------------------------------------------------------------# This script lets you define tiles where a player, followers or events will move# diagonally as they walk onto or off the tile - use for stairs, slopes, etc.# Avoids the need for the player to use the up/down arrows, or for you to# use events to force diagonal movement.#----------------------------------------------------------------------------# Paste script below others in the Materials section.# May not be compatible with scripts that overwrite or alias the# Game_CharacterBase.move_straight method#----------------------------------------------------------------------------# To use:# Change the three constants below to reflect whether you are using terrain# tags or regions to identify diagonal movement tiles, and what terrain tag# or region id to look for.#----------------------------------------------------------------------------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
     

    Credit and Thanks
    - Shaz


    Author's Notes
    - May not be compatible with scripts that overwrite or alias the Game_CharacterBase.move_straight method or any methods derived from it.
    - Free to use in commercial and non-commercial games.
  2. I feel crappy not filling his request on time but you did a way better job at this than I ever could. :)
  3. Nah, I don't believe that for a second. I can already think of two cases where the above script would not work as desired. I'll fix them and post an update when I can.
  4. This was requested?  I missed that.  My region tags script does this too.  XD  Great job on it, though.
  5. I know this is necro but can you do this for stairs too?
  6. It does. Set it up with something like this.
    stairs.PNG
    Of course using whatever graphic you need.
  7. that is awesome! now i got another problem on my hands. is their a version for RPG Maker MV its real important if their is one.
  8. @Nightshade Then you should ask that question in the correct forum, not on an Ace script thread.
  9. slimmmeiske2 said:
    @Nightshade Then you should ask that question in the correct forum, not on an Ace script thread.

    sorry dear >.<