Нашел скрипт убирающий эти тени. Теперь думаю как из этого можно сделать то что необходимо.
Спойлер код:
Код:
class Game_Map
  attr_reader :auto_shadows

  def setup(map_id)
    @map_id = map_id
    @map = load_data(sprintf("Data/Map%03d.rvdata2", @map_id))
    @tileset_id = @map.tileset_id
    @display_x = 0
    @display_y = 0
    referesh_vehicles
    setup_events
    setup_scroll
    setup_parallax
    setup_battleback
    init_auto_shadows
    @need_refresh = false
  end

  def init_auto_shadows
    @auto_shadows ||= []
    @auto_shadows.clear
    data.xsize.times do |x|
      data.ysize.times do |y|
        shadow_id = data[x, y, 3] & 0b1111
        data[x, y, 3] -= shadow_id
        next if shadow_id == 0
        case shadow_id
        when  3; @auto_shadows << [x*32, y*32, 32, 16]
        when  5; @auto_shadows << [x*32, y*32, 16, 32]
        when 10; @auto_shadows << [x*32+16, y*32, 16, 32]
        when 12; @auto_shadows << [x*32, y*32+16, 32, 16]
        when 15; @auto_shadows << [x*32, y*32, 32, 32]
        else
          4.times do |i|
            if shadow_id[i] == 1
              @auto_shadows << [x*32 + i%2*16, y*32 + i/2*16, 16, 16]
            end
          end
        end
      end
    end
  end
end