module Fux2 HACK_X = -11 HACK_Y = -8 HACK_WIDTH = 12 HACK_HEIGHT = 9 end class Game_Map def setup(map_id) $speclist = [] @map_id = map_id @map = load_data(sprintf("Data/Map%03d.rvdata", @map_id)) @display_x = 0 @display_y = 0 @passages = $data_system.passages referesh_vehicles setup_events setup_scroll setup_parallax @need_refresh = false end def update_events ($splist+$autolist+$speclist).uniq.sort.each{|i| $game_map.events[i].update if $game_map.events[i]} for common_event in @common_events.values common_event.update end end end class Spriteset_Map def create_characters $splist = [] $autolist = [] @character_sprites = [] for i in $game_map.events.keys.sort next if $speclist.include?(i) if $game_map.events[i].trigger >= 3 $autolist << i end if ($game_map.events[i].x-$game_map.display_x/256+Fux2::HACK_X).abs < Fux2::HACK_WIDTH+1 && ($game_map.events[i].y-$game_map.display_y/256+Fux2::HACK_Y).abs < Fux2::HACK_HEIGHT+1 sprite = Sprite_Character.new(@viewport1, $game_map.events[i]) @character_sprites.push(sprite) $splist << i end end for vehicle in $game_map.vehicles sprite = Sprite_Character.new(@viewport1, vehicle) @character_sprites.push(sprite) end @character_sprites.push(Sprite_Character.new(@viewport1, $game_player)) end def add_character(i) return if $speclist.include?(i) sprite = Sprite_Character.new(@viewport1, $game_map.events[i]) @character_sprites.insert($splist.size,sprite) $speclist << i end def update_characters if @scx != $game_map.display_x/256+Fux2::HACK_X || @scy != $game_map.display_y/256+Fux2::HACK_Y @scx = $game_map.display_x/256+Fux2::HACK_X @scy = $game_map.display_y/256+Fux2::HACK_Y $splist.each_with_index do |i,j| if ($game_map.events[i].x-$game_map.display_x/256+Fux2::HACK_X).abs > Fux2::HACK_WIDTH || ($game_map.events[i].y-$game_map.display_y/256+Fux2::HACK_Y).abs > Fux2::HACK_HEIGHT @character_sprites[j].dispose @character_sprites.delete_at(j) $splist.delete_at(j) end end for i in $game_map.events.keys.sort next if $splist.include?(i) if ($game_map.events[i].x-$game_map.display_x/256+Fux2::HACK_X).abs < Fux2::HACK_WIDTH+1 && ($game_map.events[i].y-$game_map.display_y/256+Fux2::HACK_Y).abs < Fux2::HACK_HEIGHT+1 sprite = Sprite_Character.new(@viewport1, $game_map.events[i]) @character_sprites.insert(0,sprite) $splist.insert(0,i) end end end @character_sprites.each{|i| i.update} end end class Scene_Map < Scene_Base attr_accessor :spriteset end class Game_Interpreter def command_205 if $game_map.need_refresh $game_map.refresh end character = get_character(@params[0]) if @params[0] > 0 if $scene.is_a?(Scene_Map) $scene.spriteset.add_character(@params[0]) end end if character != nil character.force_move_route(@params[1]) @moving_character = character if @params[1].wait end return true end end