I got it to work on mine by adding in a return after line 124. I don't think it breaks anything ... ?
if @picture.map_locked
self.ox, self.oy = $game_map.display_x / 8, $game_map.display_y / 8
return
end
The Z was getting overwritten (or something) after I stepped past a certain point on the map. Looks like when the map is larger than 17x13 squares, if you step too far away from the displayed image, it loses its Z order and then gets it back after you step within range again.
I shifted everything up to the far upper-left corner of the map to test, because I found that the Above Character functioned the closer it was to that point.
Weird stuff ...
EDIT : Oh, could it be that the picture Z was conflicting with Game_Character > screen_z (line 261)? Both the event and the picture would be set at a z of 200. If I change the z listed within screen_z to 201, the event remains above the picture at all times (when variable is set to '2').
So I guess the proper fix would be to drop '200' within the script to '199', then?
#--------------------------------------------------------------------------
# * Get Screen Z-Coordinates
#--------------------------------------------------------------------------
def screen_z
if @priority_type == 2
return 200
elsif @priority_type == 0
return 60
elsif @tile_id > 0
pass = $game_map.passages[@tile_id]
if pass & 0x10 == 0x10 # [?]
return 160
else
return 40
end
else
return 100
end
end