Simple Diagonal Movement

Shaz

Veteran
Veteran
Joined
Mar 2, 2012
Messages
40,098
Reaction score
13,704
First Language
English
Primarily Uses
RMMV
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


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:
Set terrain tags on tiles to indicate where the player will move diagonally up or diagonally down when going from left to right:


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


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)
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.
 
Last edited by a moderator:

PK8

I sense there's something in the wind...
Veteran
Joined
Mar 17, 2012
Messages
1,220
Reaction score
152
Primarily Uses
I feel crappy not filling his request on time but you did a way better job at this than I ever could. :)
 
Last edited by a moderator:

Shaz

Veteran
Veteran
Joined
Mar 2, 2012
Messages
40,098
Reaction score
13,704
First Language
English
Primarily Uses
RMMV
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.
 

Neon Black

The Classy Prostitute
Veteran
Joined
Mar 17, 2012
Messages
1,149
Reaction score
374
First Language
Sarcasm
Primarily Uses
This was requested?  I missed that.  My region tags script does this too.  XD  Great job on it, though.
 

Nightshade

Veteran
Veteran
Joined
Oct 26, 2015
Messages
591
Reaction score
120
First Language
English
Primarily Uses
RMMV
I know this is necro but can you do this for stairs too?
 

Roninator2

Gamer
Veteran
Joined
May 22, 2016
Messages
2,660
Reaction score
563
First Language
English
Primarily Uses
RMVXA
It does. Set it up with something like this.
stairs.PNG
Of course using whatever graphic you need.
 

Nightshade

Veteran
Veteran
Joined
Oct 26, 2015
Messages
591
Reaction score
120
First Language
English
Primarily Uses
RMMV
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.
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Posts

Latest Profile Posts

Couple hours of work. Might use in my game as a secret find or something. Not sure. Fancy though no? :D
Holy stink, where have I been? Well, I started my temporary job this week. So less time to spend on game design... :(
Cartoonier cloud cover that better fits the art style, as well as (slightly) improved blending/fading... fading clouds when there are larger patterns is still somewhat abrupt for some reason.
Do you Find Tilesetting or Looking for Tilesets/Plugins more fun? Personally I like making my tileset for my Game (Cretaceous Park TM) xD
How many parameters is 'too many'??

Forum statistics

Threads
105,865
Messages
1,017,059
Members
137,575
Latest member
akekaphol101
Top