I know you don't want a script... but I really think you do
It can do everything you want, without the need for complex eventing on every map.
Can control the current amount of run points in a script call from an event
$game_player.max_run_points = 0That would allow you to set there current max run points to zero, so they can't run, just store the previous amount after.
$game_player.run_points = 0Alternatively have that run as a parallel process on a map and that will set their CURRENT run points to 0, so they can't run, without their maximum being altered.
Even has and _dash and _idle call for running/idle graphics... speaking of which if I use it in additon to a mouse control script, it also gets the weird floaty movement coming out of idle... just thought I'd mention it.
Anyhoo, I know you didn't want a script, but I can't help directly, just offering it out as a possibility.
# Written by Synthesize# Version 2.70# January 26, 2008 (v1)# Revised: March 1, 2008 (v2)# Revised: September 4, 2010 (v2.5)# Revised: 8 May, 2012 (2.6, NREdit)# Revised: 15 Nov, 2013 (2.7, NREdit)#===============================================================================# Customization#-------------------------------------------------------------------------------module StandWalkRun Use_run = true # Use Run Points? Use_run_sprite = true# Use a Running sprite? Run_speed = 5 # Player speed while running Walk_speed = 4 # Player speed while walking Run_sprite_suffix = '_dash' # Running Sprite Suffix Run_points = 100 # The maximum amount of Run Points Run_points_restore = 20 # 1 Run Point is restored in X Frames Restore_run_while_walking = true # Restore points while walking? Use_idle_sprite = false # Use Idle Sprite? Idle_sprite_suffix = '_idle' # idle Sprite Suffix Use_anime = true # Animate your Idle Sprite? Idle_time = 40 # Time before sprite is animatedend#-------------------------------------------------------------------------------# Scene_Map:: The main functions of the script are here#-------------------------------------------------------------------------------class Scene_Map # Aliases alias syn_map_update update #----------------------------------------------------------------------------- # Initiate variables #----------------------------------------------------------------------------- def initialize if $game_player.old_character_name == nil $game_player.old_character_name = $game_player.character_name end @wait_time = 0 @wait_time2 = 0 end #----------------------------------------------------------------------------- # Update:: Update the scene #----------------------------------------------------------------------------- def update syn_map_update if Input.dir4 == 0 wait(1, false) if StandWalkRun::Use_idle_sprite if $game_player.move_route_forcing == false call_idle($game_player.character_name + StandWalkRun::Idle_sprite_suffix, StandWalkRun::Use_anime) if @wait_time == StandWalkRun::Idle_time $game_temp.syn_state = "idle" end restore_run if StandWalkRun::Use_run else $game_temp.syn_state = "" restore_run if StandWalkRun::Restore_run_while_walking call_idle($game_player.old_character_name, false) if $game_player.character_name != $game_player.old_character_name @wait_time = 0 end if $game_temp.sprite_changed == true $game_player.old_character_name = $game_player.character_name $game_temp.sprite_changed = false end end #----------------------------------------------------------------------------- # Call_Idle:: Sets and animates the idle Sprite #----------------------------------------------------------------------------- def call_idle(sprite, anime) $game_player.set_step_anime(anime) $game_player.set_graphic(sprite) end #----------------------------------------------------------------------------- # Restore_Run: Restore Run Points #----------------------------------------------------------------------------- def restore_run if $game_player.run_points < $game_player.max_run_points wait(1, true) $game_player.run_points += 1 if @wait_time2 == StandWalkRun::Run_points_restore @wait_time2 = 0 if @wait_time2 == StandWalkRun::Run_points_restore end end #----------------------------------------------------------------------------- # Wait:: Allows Wait Times #----------------------------------------------------------------------------- def wait(duration, value) for i in 0...duration @wait_time += 1 if value == false @wait_time2 += 1 if value break if i >= duration / 2 end endend #-------------------------------------------------------------------------------# Game_Temp:: Create current state#-------------------------------------------------------------------------------class Game_Temp attr_accessor :syn_state attr_accessor :sprite_changed alias syn_temp_init initialize def initialize @syn_state = "" @sprite_changed = false syn_temp_init endend#-------------------------------------------------------------------------------# Game_Character:: Create the Change_Sprite method#-------------------------------------------------------------------------------class Game_Character # Attr(s) attr_accessor

ld_character_name attr_accessor :run_points attr_accessor :max_run_points alias syn_ch_init initialize #----------------------------------------------------------------------------- # Initialize Variables #----------------------------------------------------------------------------- def initialize @run_points = StandWalkRun::Run_points @max_run_points = @run_points syn_ch_init end #----------------------------------------------------------------------------- # Set Setp Animation #----------------------------------------------------------------------------- def set_step_anime(value) @step_anime = value return @step_anime endend#-------------------------------------------------------------------------------# Game_Player:: This handles the dash process#-------------------------------------------------------------------------------class Game_Player < Game_Character alias syn_player_initialize initialize alias syn_player_update update alias syn_player_refresh refresh alias syn_player_move_type_custom move_type_custom def initialize(*args, &blk) ret_val = syn_player_initialize(*args, &blk) set_walk_speed(StandWalkRun::Walk_speed) set_run_speed(StandWalkRun::Run_speed) end def dash? return false if @run_points == 0 and StandWalkRun::Use_run return true if Input.press?(Input::A) end def refresh syn_player_refresh self.old_character_name = @character_name end def set_run_speed(val) @ty_RunWalk_run_speed = [[@ty_RunWalk_walk_speed + 1, val.to_i].max, 7].min end def set_walk_speed(val) @ty_RunWalk_walk_speed = [[val.to_i, 1].max, 6].min set_run_speed(val + 1) end #----------------------------------------------------------------------------- # Update:: Update the scene #---------------------------------------------------------------------------- def update if dash? if Input.dir4 == 0 $game_player.set_graphic($game_player.old_character_name) end unless $game_temp.syn_state == "idle" if StandWalkRun::Use_run_sprite set_graphic(@character_name + StandWalkRun::Run_sprite_suffix) end @move_speed = @ty_RunWalk_run_speed @run_points -= 1 syn_player_update end else @move_speed = @ty_RunWalk_walk_speed syn_player_update end end def set_graphic(character_name) @tile_id = 0 @character_name = character_name end #-------------------------------------------------------------------------- # * Move Type : Custom #-------------------------------------------------------------------------- def move_type_custom old_ch_name = @character_name syn_player_move_type_custom if old_ch_name != @character_name # Change Graphic self.old_character_name = @character_name end endend#-------------------------------------------------------------------------------# * This script is not compatible with RPG Maker XP * YES IT IS LOL#-------------------------------------------------------------------------------# Written by Synthesize# Version 2.7# Requested by Cerulean SkyThat's a custon modification (by Night Runner) of an original script. So have a look through before implementation. Like line 20, I have idle animation off.