Simple Diagonal Movement

Shaz

Veteran
Veteran
Joined
Mar 2, 2012
Messages
38,522
Reaction score
12,054
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
38,522
Reaction score
12,054
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
Member
Joined
Mar 17, 2012
Messages
1,149
Reaction score
369
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
1,883
Reaction score
410
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.
 

slimmmeiske2

Little Red Riding Hood
Global Mod
Joined
Sep 6, 2012
Messages
6,057
Reaction score
4,263
First Language
Dutch
Primarily Uses
RMXP
@Nightshade Then you should ask that question in the correct forum, not on an Ace script thread.
 

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

Latest Threads

Latest Profile Posts

Well it's been almost a whole year since I joined RMW, so i figured I should update my status.
This is my updated status.
Here's a sample of some pixel edits I made.

Maybe for use as sidewalks.
If there are any mods or admins online, could you please see about the re-translation pages for RPG Maker MV? They are all down :rsad:
Werewolf cons: you lose control of yourself once a month and could accidentally kill your friends. Vampire cons: no garlic bread. The choice is simple. Werewolf for sure.
2 huge market drops in 2 days. So glad I sold my non-dividend stocks about 2 weeks ago. And if the dividend ones drop heavily, hey more cheap stocks for me!

Forum statistics

Threads
94,525
Messages
921,603
Members
124,377
Latest member
Darkyyy
Top