The only way I can think to do this without a script is to make a new map for each floor.
You can make the height of the map however tall you'd like (for the scrolling) but make sure that you keep your player's move-able panels beneath eight panels and place the move-able space against the edge of the map. Then, upon player touch condition change your main character's graphics to "none" and use the "scroll map" event to reset the y position of the map. You should never have to tinker with the x value at all. After the map is finished scrolling into the new map, then transfer without fade.
Edit:LMAO...well, I solved your problem with a switch, and two lines of additional code in the Game_Player script. I feel stupid...Lol. I should've listened to you earlier. I spent about an hour dicking around with maps trying to set this up, and I concluded that there actually
isn't a way to do this without using some script syntax somewhere, so I apologize for being stubborn.
Anyway...
Create an additional switch in your editor and remember it ID. Call it "Dungeon" or something (anything that reminds you that you're currently in a dungeon). Then, open the script editor and highlight the Game_Player script. Scroll down to line 230. In that general area you'll see the code that processes the scroll feature that forces the player to stay in the middle of the map. You will only be working with the
Down and
Up codes.
The original looks like this:
# If character moves down and is positioned lower than the center of the screen
if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
# Scroll map down
$game_map.scroll_down(@real_y - last_real_y)
end
# If character moves left and is positioned more let on-screen than center
if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
# Scroll map left
$game_map.scroll_left(last_real_x - @real_x)
end
# If character moves right and is positioned more right on-screen than center
if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
# Scroll map right
$game_map.scroll_right(@real_x - last_real_x)
end
# If character moves up and is positioned higher than the center of the screen
if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
# Scroll map up
$game_map.scroll_up(last_real_y - @real_y)
end
Replace it with this:
# If you are in a dungeon
if $game_switches[1] == true (This will be your switch you added)
else
# If character moves down and is positioned lower than the center of the screen
if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
# Scroll map down
$game_map.scroll_down(@real_y - last_real_y)
end
end
# If character moves left and is positioned more let on-screen than center
if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
# Scroll map left
$game_map.scroll_left(last_real_x - @real_x)
end
# If character moves right and is positioned more right on-screen than center
if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
# Scroll map right
$game_map.scroll_right(@real_x - last_real_x)
end
# If you are in a dungeon
if $game_switches[1] == true (This will be your switch you added)
else
# If character moves up and is positioned higher than the center of the screen
if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
# Scroll map up
$game_map.scroll_up(last_real_y - @real_y)
end
end
Now, when you enter a dungeon make sure to turn that switch ON before anything. (Parallel Process processes that fastest)
When you exit the dungeon make sure that map turns this switch OFF.
Tested and works...
-Calintz-