Ideally it's best to scale outside of the way system borders on the y-axis only, but that's not always possible. In regards to changing the way system, it's possible, but you need to store the all the relevant destination data into variables before changing the way system then immediately update them afterwards to have the character resume walking. The reason it stops walking is because the engine doesn't know if the character will still be able to walk to the destination in the new way system as that would require it recalculating if it's possible & what the best/direct route is.
Before changing the way system...
Store destination:
execute a script >
t_dest =
{
dest = game.CurrentCharacter.Destination,
obj = game.CurrentCharacter.DestinationObject,
cmd = game.DestinationCommand,
evt = game.DestinationEvent,
itm = game.DestinationItem,
itm_picked = game.DestinationItemPicked
}
After changing the way system...
Restore destination:
execute a script >
game.CurrentCharacter.Destination = t_dest["dest"]
game.CurrentCharacter.DestinationObject = t_dest["obj"]
game.DestinationCommand = t_dest["cmd"]
game.DestinationEvent = t_dest["evt"]
game.DestinationItem = t_dest["itm"]
game.DestinationItemPicked = t_dest["itm_picked"]
Hopefully that will be of some help.
P.S: the problem isn't that the way system is too complicated, the problem is using complicated perspectives that require scaling on both the x & y axis.