Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #-------------------------------------------------------------------------------
- # Fast Travel Script By Black Mage (Credit required to use)
- # Version : 1.3
- #
- # https://burningwizard.wordpress.com/2017/05/03/fast-travel-script/
- #-------------------------------------------------------------------------------
- #
- # * The script creates a map that hover through listed locations.
- #
- # * The background image is named "Map_Select", and placed inside
- # Graphics/System folder.
- #
- # * The image named "Empty" is required as dummy and placeholder in several cases.
- # You can use an empty PNG files for it.
- # The image is placed inside Graphics/System folder.
- #
- # * The image named "Window_Map" is used as the location selection window.
- # The image is placed inside Graphics/System folder.
- #
- #-------------------------------------------------------------------------------
- #
- # * How to use:
- #
- # * Enlist every available location into MAP_LIST.
- #
- # * Assign a switch for each location. Put them on SWITCH_LIST.
- #
- # * When you want a map is listed on the Map Select menu, simply turn their
- # respective switch value to "true".
- #
- # * Assign x and y variables for the screen to hover when a location is
- # highlighted. Put them on LOCATION_COORDINATE
- #
- # * Assign where to teleport when a location is selected. Put them on
- # TELEPORT_LIST.
- #
- # * Call the map using this script call:
- # fast_travel
- # use fast_travel(int) to highlight certain choice. The int value are taken
- # from MAP_LIST order.
- #
- # * Enjoy your map select menu.
- #
- #-------------------------------------------------------------------------------
- #
- # * There's several additional option below. Feel free to edit them.
- #
- #-------------------------------------------------------------------------------
- module BLACK_MAP_LIST
- #-----------------------------------------------------------------------------
- # Map name list. This is needed for metaprogramming.
- #-----------------------------------------------------------------------------
- MAP_LIST = ["Australia",
- "Russia",
- "America"]
- #-----------------------------------------------------------------------------
- # Switches that enable the map.
- #-----------------------------------------------------------------------------
- SWITCH_LIST = [1, # When switch 01 is on, you can transfer to Australia.
- 1, # When switch 03 is on, you can transfer to Russia.
- 2] # And so on.
- #-----------------------------------------------------------------------------
- # Assign each map name where to teleport.
- #-----------------------------------------------------------------------------
- # Map ID, x, y, player direction
- TELEPORT_LIST = [[2, 8, 1, 2], # This is where "Australia" is going to be.
- [3, 8, 11, 8], # "Russia".
- [1, 15, 7, 4]] # and so on.
- #-----------------------------------------------------------------------------
- # Assign overworld location coordinate.
- #-----------------------------------------------------------------------------
- LOCATION_COORDINATE = [[-470,-100], #The map will move here when "Australia" is highlighted
- [-120,560],
- [880,300]]
- #-----------------------------------------------------------------------------
- # Assign text color for location selection. The color depends on Window
- # graphic that you use. 0 is the default color.
- #-----------------------------------------------------------------------------
- TEXT_LOCA_COLOR = [0,
- 3,
- 2]
- #-----------------------------------------------------------------------------
- # Position of the background image.
- #-----------------------------------------------------------------------------
- MAP_POSITION = [0,0] #[x,y]
- #-----------------------------------------------------------------------------
- # How far the background image is zoomed out.
- #-----------------------------------------------------------------------------
- MAP_ZOOM_OUT = [0.25, 0.25] #[zoom_x, zoom_y]
- #-----------------------------------------------------------------------------
- # How far the background image is zoomed in when a location is selected.
- #-----------------------------------------------------------------------------
- MAP_ZOOM_IN = [1, 1] #[x, y]
- #-----------------------------------------------------------------------------
- # Maximum magnify speed when the scene is started.
- #-----------------------------------------------------------------------------
- MAX_ZOOM_SPEED = 0.01
- #-----------------------------------------------------------------------------
- # Position of the available choices.
- #-----------------------------------------------------------------------------
- CHOICE_POSITION = [0,0] #[x,y]
- #-----------------------------------------------------------------------------
- # Position of window that hold list of the available choices.
- #-----------------------------------------------------------------------------
- WINDOW_POSITION = [0,10] #[x,y]
- #-----------------------------------------------------------------------------
- # The width for location selection choices.
- #-----------------------------------------------------------------------------
- MAP_WINDOW_WIDTH = 132
- #-----------------------------------------------------------------------------
- # The height for location selection choices.
- #-----------------------------------------------------------------------------
- MAP_WINDOW_HEIGHT = 10 # Amount of visible choices in the window.
- #-----------------------------------------------------------------------------
- # Maximum scroll speed when scrolling through the map.
- #-----------------------------------------------------------------------------
- MAX_SCROLL_SPEED = 20
- #-----------------------------------------------------------------------------
- # The map won't scrolled until the zoom are above this number for x and y.
- #-----------------------------------------------------------------------------
- SCROLL_BOUNDARY = [0.5, 0.5] #[zoom_x, zoom_y]
- #-----------------------------------------------------------------------------
- # Position of location selection window picture.
- #-----------------------------------------------------------------------------
- WINDOW_PIC_POSITION = [0, 0] #[x, y]
- #-----------------------------------------------------------------------------
- # Opacity of location selection window picture.
- #-----------------------------------------------------------------------------
- WINDOW_PIC_OPACITY = 200
- #-----------------------------------------------------------------------------
- # Map Menu BGM.
- #-----------------------------------------------------------------------------
- MAP_MENU_BGM = ["Field3", 100, 100] #["BGM name", Volume, Pitch]
- #-----------------------------------------------------------------------------
- # SFX played when the selection is changed.
- #-----------------------------------------------------------------------------
- MAP_MENU_SFX = ["Wind1", 100, 100] #["SFX name", Volume, Pitch]
- #-----------------------------------------------------------------------------
- #
- # * Below is the configuration of additional information window.
- #
- #-----------------------------------------------------------------------------
- #-----------------------------------------------------------------------------
- # Location name.
- #-----------------------------------------------------------------------------
- ADD_LOC_NAME = true # Set this to true to enable the location name info
- #-----------------------------------------------------------------------------
- # Location name info position.
- #-----------------------------------------------------------------------------
- ADD_LOC_NAME_POS = [347,0]
- #-----------------------------------------------------------------------------
- # Location name info width & height.
- #-----------------------------------------------------------------------------
- ADD_LOC_NAME_W_H = [200,100] # [width, height]
- #-----------------------------------------------------------------------------
- # Location name font size.
- #-----------------------------------------------------------------------------
- ADD_LOC_NAME_F_SIZE = 20
- #-----------------------------------------------------------------------------
- # Location description.
- #-----------------------------------------------------------------------------
- ADD_LOC_DESC = true # Set this to true to enable the location description info
- #-----------------------------------------------------------------------------
- # Location description position.
- #-----------------------------------------------------------------------------
- ADD_LOC_DESC_POS = [347,155] # [x, y]
- #-----------------------------------------------------------------------------
- # Location description width & height.
- #-----------------------------------------------------------------------------
- ADD_LOC_DESC_W_H = [300,100] # [width, height]
- #-----------------------------------------------------------------------------
- # Location description font size.
- #-----------------------------------------------------------------------------
- ADD_LOC_DESC_F_SIZE = 20
- #-----------------------------------------------------------------------------
- # Description for each location.
- #-----------------------------------------------------------------------------
- ADD_LOC_DESC_VALUE = ["Australia is, well," + "\n" + "Australia.", # Desc. for Australia.
- "Russia..." + "\n" + "Yeah, Russia.", # Desc. for Russia.
- "America is America."] # and so on.
- #-----------------------------------------------------------------------------
- # Location thumbnail.
- #-----------------------------------------------------------------------------
- ADD_LOC_THUMB = true # Set this to true to enable the location thumbnail.
- #-----------------------------------------------------------------------------
- # Location description position.
- #-----------------------------------------------------------------------------
- ADD_LOC_THUMB_POS = [376,47] # [x, y]
- #-----------------------------------------------------------------------------
- # Location quests.
- #-----------------------------------------------------------------------------
- ADD_LOC_QUEST = true
- #-----------------------------------------------------------------------------
- # Location quests switches.
- #-----------------------------------------------------------------------------
- ADD_LOC_QUEST_S = [[],
- [6],
- [4,5]]
- #-----------------------------------------------------------------------------
- # Location quests text.
- #-----------------------------------------------------------------------------
- # [switch number, text to show when the value is true]
- ADD_LOC_Q_TEXT = [[4, "* Find a way to" + "\n" + "Russia!"],
- [5, "* Get the package!"],
- [6, "* Deliver the package"]]
- #-----------------------------------------------------------------------------
- # Location quests position.
- #-----------------------------------------------------------------------------
- ADD_LOC_QUEST_POS = [347,200] # [x, y]
- #-----------------------------------------------------------------------------
- # Location quests width & height.
- #-----------------------------------------------------------------------------
- ADD_LOC_QUEST_W_H = [300,300] # [width, height]
- #-----------------------------------------------------------------------------
- # Location quests font size.
- #-----------------------------------------------------------------------------
- ADD_LOC_QUEST_F_SIZE = 20
- #-----------------------------------------------------------------------------
- # Information Window Picture.
- #-----------------------------------------------------------------------------
- ADD_WIN_PIC = true # Set this to true to enable the information window picture.
- #-----------------------------------------------------------------------------
- # Position of additional information window picture.
- #-----------------------------------------------------------------------------
- ADD_WIN_PIC_POS = [350, 3] #[x, y]
- #-----------------------------------------------------------------------------
- # Opacity of additional information window picture.
- #-----------------------------------------------------------------------------
- ADD_WIN_PIC_OPA = 200
- #-----------------------------------------------------------------------------
- # Current Party Window.
- #-----------------------------------------------------------------------------
- ADD_CUR_PARTY = true
- #-----------------------------------------------------------------------------
- # Location quests position.
- #-----------------------------------------------------------------------------
- ADD_CUR_PARTY_POS = [352,340] # [x, y]
- #-----------------------------------------------------------------------------
- # Location quests width & height.
- #-----------------------------------------------------------------------------
- ADD_CUR_PARTY_W_H = [180,80] # [width, height]
- #-----------------------------------------------------------------------------
- # This is an instruction if you want to use an icon for your location. This
- # icon also can serve as a cursor. Note that the icon use different files for
- # each location.
- # * First, the icon canvas mus be as big as the overworld canvas. This is
- # the case to make sure the scrolling is as smooth as possible.
- # * Second, the icon must be named after the location found in MAP_LIST.
- # * Third, after the icon name, put the frame number of the icon. The number
- # is start from 0.
- #-----------------------------------------------------------------------------
- #-----------------------------------------------------------------------------
- # * Location animated icon.
- #-----------------------------------------------------------------------------
- LOC_ANI_ICON = true
- #-----------------------------------------------------------------------------
- # * Set this to false to disable the icon fade. Note that the fade might
- # conflict with the frame animation.
- #-----------------------------------------------------------------------------
- LOC_ANI_ICON_FADE = true
- #-----------------------------------------------------------------------------
- # * Location animated icon delay.
- # You can call this animation speed. Decrease the value to make the
- # animation faster.
- #-----------------------------------------------------------------------------
- LOC_ANI_ICON_DELAY = 10
- #-----------------------------------------------------------------------------
- # Previously, we fix the maximum frame for each icon, that is 1000 frames.
- # However, this cause some problems with Krosk's "unable to find" script.
- # To make sure that this script compatible with script similar with Krosk's,
- # we add an additional configuration to specify how many frames will be used
- # in total for the icon animation.
- #-----------------------------------------------------------------------------
- LOC_ANI_ICON_TOTAL = [2, # Numbers of total frame used for 1st location icon.
- 2,
- 2,
- ] # Note that the file name start with zero, so you'll
- # end up with frame numbered n-1 if you put n as the
- # frame number.
- #-----------------------------------------------------------------------------
- # This section is for static location icon. Unlike the animated icon, this
- # icon will always appear on the map as long as it's unlocked. The files are
- # named the same as the location found in MAP_LIST, followed by "STAT".
- # ex. your location is "America", then the file should be named "AmericaSTAT".
- #-----------------------------------------------------------------------------
- #-----------------------------------------------------------------------------
- # * Set this to true to enable the static location icon.
- #-----------------------------------------------------------------------------
- LOC_STATIC_ICON = true
- end
- #-------------------------------------------------------------------------------
- # * Beyond this is the sacred land of code. You need programming qualification
- # to dwelve deeper, or it'll cause many unnecessary problems. Proceed on your
- # own risk.
- #-------------------------------------------------------------------------------
- class Game_Interpreter
- def fast_travel(int = -1)
- $game_system.fast_travel_index = int
- SceneManager.call(Scene_Map_Select)
- end
- end
- class Game_System
- attr_accessor :fast_travel_index
- alias b_fst_trvl_initialize initialize
- def initialize; b_fst_trvl_initialize; @fast_travel_index = -1; end
- end
- class Scene_Map_Select < Scene_Base
- include BLACK_MAP_LIST
- def start
- super
- @last_map = "placeholder"
- @first_sfx = false
- @last_position = [MAP_POSITION[0], MAP_POSITION[1]]
- @distance_x = 0; @distance_y = 0
- @last_zoom = [MAP_ZOOM_OUT[0], MAP_ZOOM_OUT[1]]
- @icon_max = 0; @icon_current = 0; @icon_delay_cur = 0
- create_maplist
- create_information_window
- create_command_window
- create_background
- create_map_icon
- create_stat_icon if LOC_STATIC_ICON
- create_map_window
- load_icon_pic if LOC_ANI_ICON
- # Method to set starting position of map index
- @starting_index_list = @command_window.get_map_list
- for i in 0..(@starting_index_list.size - 1)
- break if $game_system.fast_travel_index == -1
- if @starting_index_list[i].to_s == MAP_LIST[$game_system.fast_travel_index].to_s
- @command_window.index = i
- end
- end
- location_update_index
- RPG::BGM.new(MAP_MENU_BGM[0], MAP_MENU_BGM[1], MAP_MENU_BGM[2]).play
- end
- # Load all icon frame into the RAM so the next load shall be faster.
- def load_icon_pic
- for i in 0..(@map_list.size - 1)
- @map_name = @map_list[i].to_s
- for index in 0..0
- picture = Cache.system(@map_name + index.to_s).nil?
- end
- end
- end
- def create_information_window
- if ADD_LOC_NAME
- @information_window_1 = Window_Information_1.new
- @information_window_1.opacity = 0
- end
- if ADD_LOC_DESC
- @information_window_2 = Window_Information_2.new
- @information_window_2.opacity = 0
- end
- if ADD_LOC_THUMB
- @information_window_3 = Sprite.new
- @information_window_3.bitmap = Cache.system("Empty")
- @information_window_3.ox = 0
- @information_window_3.oy = 0
- @information_window_3.x = ADD_LOC_THUMB_POS[0]
- @information_window_3.y = ADD_LOC_THUMB_POS[1]
- @information_window_3.z = 2
- end
- if ADD_LOC_QUEST
- @information_window_4 = Window_Information_4.new
- @information_window_4.opacity = 0
- end
- if ADD_WIN_PIC
- @info_window = Sprite.new
- @info_window.bitmap = Cache.system("Window_Info")
- @info_window.ox = 0
- @info_window.oy = 0
- @info_window.x = ADD_WIN_PIC_POS[0]
- @info_window.y = ADD_WIN_PIC_POS[1]
- @info_window.z = 2
- @info_window.opacity = 0
- end
- if ADD_CUR_PARTY
- @current_party_window = Window_Current_Party.new
- @current_party_window.opacity = 0; @current_party_window.refresh
- end
- end
- def create_map_window
- @map_window = Sprite.new
- @map_window.bitmap = Cache.system("Window_Map")
- @map_window.ox = 0
- @map_window.oy = 0
- @map_window.x = WINDOW_PIC_POSITION[0]
- @map_window.y = WINDOW_PIC_POSITION[1]
- @map_window.z = 2
- @map_window.opacity = 0
- end
- def create_maplist
- @map_list = []
- for i in 0..MAP_LIST.size - 1
- @map_list.push(MAP_LIST[i]) if $game_switches[SWITCH_LIST[i]] == true
- end
- end
- alias black_update update
- def update
- black_update
- if @map_list.size != 0
- icon_update if @map_window != nil
- end
- end
- def location_update_index
- if @command_window != nil
- @last_map = @map_list[@command_window.index].to_s
- if LOC_ANI_ICON
- @map_name = assigned_number(@map_list[@command_window.index].to_s)
- @map_name = @map_list[@command_window.index].to_s
- @map_icon.bitmap = Cache.system(@map_name + "0")
- @icon_max = pic_list_number
- @icon_current = 0
- else
- @map_icon.bitmap = Cache.system("Empty")
- end
- end
- if @first_sfx == true
- RPG::SE.new(MAP_MENU_SFX[0], MAP_MENU_SFX[1], MAP_MENU_SFX[2]).play
- end
- end
- def pic_list_number
- @pic_frames = []
- total_frame = LOC_ANI_ICON_TOTAL[assigned_number(@map_name)]
- for index in 0..(total_frame - 1)
- begin
- picture = Cache.system(@map_name + index.to_s).nil?
- rescue
- nil
- else
- @pic_frames[index] = index
- end
- break if @pic_frames[index] == nil
- end
- return @pic_frames.size
- end
- def icon_update
- if @background_sprite.zoom_x > SCROLL_BOUNDARY[0] and @background_sprite.zoom_y > SCROLL_BOUNDARY[1]
- if LOC_ANI_ICON
- if @icon_delay_cur < LOC_ANI_ICON_DELAY
- @icon_delay_cur += 1
- else
- @icon_delay_cur = 0
- if @icon_current.to_i < (@icon_max - 1)
- @map_icon.bitmap = Cache.system(@map_name + (@icon_current.to_i + 1).to_s)
- @icon_current += 1
- else
- @map_icon.bitmap = Cache.system(@map_name + "0")
- @icon_current = 0
- end
- end
- end
- end
- if @map_icon != nil && @map_icon.bitmap != nil && LOC_ANI_ICON_FADE
- if @map_icon.opacity < 255 && @map_icon_opa == false
- @map_icon.opacity += 7
- @map_icon_opa = true if @map_icon.opacity > 254
- else
- @map_icon.opacity -= 7
- @map_icon_opa = false if @map_icon.opacity < 1
- end
- end
- @map_window.opacity = WINDOW_PIC_OPACITY
- @info_window.opacity = ADD_WIN_PIC_OPA if ADD_WIN_PIC
- @map_index = assigned_number(@map_list[@command_window.index].to_s)
- map_move(@last_position[0], @last_position[1],
- LOCATION_COORDINATE[@map_index][0], LOCATION_COORDINATE[@map_index][1],
- 255)
- #---------------------------------------------------------------------------
- # Define the magnifying speed.
- #---------------------------------------------------------------------------
- @magnify_x = (MAP_ZOOM_IN[0] - @last_zoom[0])/10
- if @magnify_x > 0
- @magnify_x = [MAX_ZOOM_SPEED, @magnify_x].min
- end
- if @magnify_x < 0
- @magnify_x = [MAX_ZOOM_SPEED, @magnify_x].max
- end
- if @magnify_x < 0.005 and @magnify_x > 0
- @magnify_x = 0.005
- elsif @magnify_x > -0.005 and @magnify_x < 0
- @magnify_x = -0.005
- end
- @magnify_y = (MAP_ZOOM_IN[1] - @last_zoom[1])/10
- if @magnify_y > 0
- @magnify_y = [MAX_ZOOM_SPEED, @magnify_y].min
- end
- if @magnify_y < 0
- @magnify_y = [MAX_ZOOM_SPEED, @magnify_y].max
- end
- if @magnify_y < 0.005 and @magnify_y > 0
- @magnify_y = 0.005
- elsif @magnify_y > -0.005 and @magnify_y < 0
- @magnify_y = -0.005
- end
- #---------------------------------------------------------------------------
- # Scrolling.
- #---------------------------------------------------------------------------
- if @background_sprite.zoom_x > SCROLL_BOUNDARY[0] and @background_sprite.zoom_y > SCROLL_BOUNDARY[1]
- if @first_sfx == false
- RPG::SE.new(MAP_MENU_SFX[0], MAP_MENU_SFX[1], MAP_MENU_SFX[2]).play
- @first_sfx = true
- end
- @background_sprite.x = @background_sprite.x + @distance_x
- @background_sprite.y = @background_sprite.y + @distance_y
- @map_icon.x = @map_icon.x + @distance_x
- @map_icon.y = @map_icon.y + @distance_y
- @stat_icon.each do |pic|
- pic.x = pic.x + @distance_x
- pic.y = pic.y + @distance_y
- end
- end
- @background_sprite.zoom_x = @background_sprite.zoom_x + @magnify_x
- @map_icon.zoom_x = @map_icon.zoom_x + @magnify_x
- @stat_icon.each do |pic|
- pic.zoom_x = pic.zoom_x + @magnify_x
- end
- if @magnify_x == 0.005
- if @background_sprite.zoom_x > MAP_ZOOM_IN[0]
- @background_sprite.zoom_x = MAP_ZOOM_IN[0]
- @map_icon.zoom_x = MAP_ZOOM_IN[0]
- @stat_icon.each do |pic|
- pic.zoom_x = MAP_ZOOM_IN[0]
- end
- end
- elsif @magnify_x == -0.005
- if @background_sprite.zoom_x < MAP_ZOOM_IN[0]
- @background_sprite.zoom_x = MAP_ZOOM_IN[0]
- @map_icon.zoom_x = MAP_ZOOM_IN[0]
- @stat_icon.each do |pic|
- pic.zoom_x = MAP_ZOOM_IN[0]
- end
- end
- end
- @background_sprite.zoom_y = @background_sprite.zoom_y + @magnify_y
- @map_icon.zoom_y = @map_icon.zoom_y + @magnify_y
- @stat_icon.each do |pic|
- pic.zoom_y = pic.zoom_y + @magnify_y
- end
- if @magnify_y == 0.005
- if @background_sprite.zoom_y > MAP_ZOOM_IN[1]
- @background_sprite.zoom_y = MAP_ZOOM_IN[1]
- @map_icon.zoom_y = MAP_ZOOM_IN[1]
- @stat_icon.each do |pic|
- pic.zoom_y = MAP_ZOOM_IN[1]
- end
- end
- elsif @magnify_y == -0.005
- if @background_sprite.zoom_y < MAP_ZOOM_IN[1]
- @background_sprite.zoom_y = MAP_ZOOM_IN[1]
- @map_icon.zoom_y = MAP_ZOOM_IN[1]
- @stat_icon.each do |pic|
- pic.zoom_y = MAP_ZOOM_IN[1]
- end
- end
- end
- #---------------------------------------------------------------------------
- # Adjust the position.
- #---------------------------------------------------------------------------
- @last_position[0] = @background_sprite.x
- @last_position[1] = @background_sprite.y
- @last_zoom[0] = @background_sprite.zoom_x
- @last_zoom[1] = @background_sprite.zoom_y
- end
- def map_move(f_x, f_y, x, y, opacity)
- @distance_x = (x - f_x)/10
- if @distance_x > 0
- @distance_x = [MAX_SCROLL_SPEED, @distance_x].min
- end
- if @distance_x < 0
- @distance_x = [(MAX_SCROLL_SPEED*(-1)), @distance_x].max
- end
- if @distance_x == 0
- if @last_position[0] == LOCATION_COORDINATE[@map_index][0]
- elsif (x - f_x) < 0
- @distance_x = -1
- else
- @distance_x = 1
- end
- end
- @distance_y = (y - f_y)/10
- if @distance_y > 0
- @distance_y = [MAX_SCROLL_SPEED, @distance_y].min
- end
- if @distance_y < 0
- @distance_y = [(MAX_SCROLL_SPEED*(-1)), @distance_y].max
- end
- if @distance_y == 0
- if @last_position[1] == LOCATION_COORDINATE[@map_index][1]
- elsif (y - f_y) < 0
- @distance_y = -1
- else
- @distance_y = 1
- end
- end
- end
- def create_command_window
- @command_window = Window_MapSelect.new
- @command_window.x = WINDOW_POSITION[0]
- @command_window.y = WINDOW_POSITION[1]
- for i in 0..MAP_LIST.size - 1
- @command_window.set_handler(MAP_LIST[i].to_sym, method(MAP_LIST[i].to_sym))
- end
- @command_window.set_handler(:cancel, method(:return_scene))
- @command_window.information_window_1 = @information_window_1
- @command_window.information_window_2 = @information_window_2
- @command_window.information_window_4 = @information_window_4
- @command_window.information_1_update if ADD_LOC_NAME
- @command_window.information_2_update if ADD_LOC_DESC
- information_3_update if ADD_LOC_THUMB
- @command_window.information_4_update if ADD_LOC_QUEST
- end
- def information_3_update
- if @information_window_3 != nil and @command_window !=nil
- bitmap_pic = @map_list[@command_window.index].to_s + "_Thumb"
- @information_window_3.bitmap = Cache.system(bitmap_pic)
- end
- end
- def create_background
- @background_sprite = Sprite.new
- @background_sprite.bitmap = Cache.system("Map_Select")
- @background_sprite.ox = @background_sprite.bitmap.width / 2
- @background_sprite.oy = @background_sprite.bitmap.height / 2
- @background_sprite.x = Graphics.width / 2
- @background_sprite.y = Graphics.height / 2
- @background_sprite.zoom_x = MAP_ZOOM_OUT[0]
- @background_sprite.zoom_y = MAP_ZOOM_OUT[1]
- end
- def create_stat_icon
- @stat_icon = []
- @map_list.each do |loc|
- a = Sprite.new
- a.bitmap = Cache.system(loc + "STAT")
- a.ox = @background_sprite.bitmap.width / 2
- a.oy = @background_sprite.bitmap.height / 2
- a.zoom_x = MAP_ZOOM_OUT[0]
- a.zoom_y = MAP_ZOOM_OUT[1]
- a.x = Graphics.width / 2
- a.y = Graphics.height / 2
- a.z = 1
- @stat_icon.push(a)
- end
- end
- def create_map_icon
- @map_icon = Sprite.new
- @map_icon.bitmap = Cache.system("Empty")
- @map_icon.ox = @background_sprite.bitmap.width / 2
- @map_icon.oy = @background_sprite.bitmap.height / 2
- @map_icon.zoom_x = MAP_ZOOM_OUT[0]
- @map_icon.zoom_y = MAP_ZOOM_OUT[1]
- @map_icon.x = Graphics.width / 2
- @map_icon.y = Graphics.height / 2
- @map_icon.z = 2
- end
- MAP_LIST.each do |map_name|
- define_method(map_name) do
- list_number = assigned_number(map_name)
- p map_name
- transfer_map(list_number)
- end
- end
- def assigned_number(map_name)
- for i in 0..MAP_LIST.size - 1
- return i if MAP_LIST[i] == map_name
- end
- end
- def transfer_map(a)
- b = TELEPORT_LIST; $game_temp.fade_type = 2
- $game_player.reserve_transfer(b[a][0],b[a][1],b[a][2],b[a][3])
- return_scene
- end
- def close_command_window
- @command_window.close
- update until @command_window.close?
- fadeout_all
- @background_sprite.bitmap = nil
- end
- def black_dispose
- @map_window.bitmap.dispose ; @map_window.dispose ; @map_window = nil
- @map_icon.bitmap.dispose ; @map_icon.dispose ; @map_icon = nil
- if ADD_WIN_PIC
- @info_window.bitmap.dispose
- @info_window.dispose
- @info_window = nil
- end
- if @background_sprite.bitmap != nil
- @background_sprite.bitmap.dispose
- end
- @background_sprite.dispose
- @background_sprite = nil
- @information_window_1.dispose if ADD_LOC_NAME
- @information_window_2.dispose if ADD_LOC_DESC
- if ADD_LOC_THUMB
- @information_window_3.bitmap.dispose
- @information_window_3.dispose
- @information_window_3 = nil
- end
- if LOC_STATIC_ICON
- @stat_icon.each do |pic|
- pic.bitmap.dispose; pic.dispose; pic = nil
- end
- end
- @information_window_4.dispose if ADD_LOC_QUEST
- @current_party_window.dispose if ADD_CUR_PARTY
- end
- def return_scene
- close_command_window; black_dispose
- super; RPG::BGM.fade(500)
- $game_map.autoplay; Cache.clear
- end
- end
- #-------------------------------------------------------------------------------
- # * Map Command List Window
- #-------------------------------------------------------------------------------
- class Window_MapSelect < Window_Command
- include BLACK_MAP_LIST
- #-----------------------------------------------------------------------------
- # * Object Initialization
- #-----------------------------------------------------------------------------
- def initialize
- create_maplist; super(0, 0); self.openness = 0; open; self.opacity = 0
- end
- def window_height; fitting_height(MAP_WINDOW_HEIGHT); end
- def window_width; return MAP_WINDOW_WIDTH; end
- #-----------------------------------------------------------------------------
- # * Create Command List
- #-----------------------------------------------------------------------------
- def make_command_list
- for i in 0..@map_list.size - 1
- add_command(@map_list[i], @map_list[i].to_sym) if @map_list.size != 0
- end
- end
- #-----------------------------------------------------------------------------
- # * Get unlocked map list
- #-----------------------------------------------------------------------------
- def create_maplist
- @map_list = []
- for i in 0..MAP_LIST.size - 1
- @map_list.push(MAP_LIST[i]) if $game_switches[SWITCH_LIST[i]] == true
- end
- end
- def index=(index)
- super
- SceneManager.scene.location_update_index
- information_1_update if ADD_LOC_NAME
- information_2_update if ADD_LOC_DESC
- SceneManager.scene.information_3_update if ADD_LOC_THUMB
- information_4_update if ADD_LOC_QUEST
- end
- #-----------------------------------------------------------------------------
- # * Draw Item
- #-----------------------------------------------------------------------------
- def draw_item(index)
- font_color = assigned_number(command_name(index))
- change_color(text_color(TEXT_LOCA_COLOR[font_color]), command_enabled?(index))
- draw_text(item_rect_for_text(index), command_name(index), alignment)
- end
- #-----------------------------------------------------------------------------
- # * Information Window stuff
- #-----------------------------------------------------------------------------
- def information_window_1=(information_window)
- @information_window_1 = information_window
- end
- def information_window_2=(information_window)
- @information_window_2 = information_window
- end
- def information_window_4=(information_window)
- @information_window_4 = information_window
- end
- def information_1_update
- if @information_window_1 != nil
- @information_window_1.clear
- text = @map_list[self.index].to_s
- @information_window_1.set_text(text)
- end
- end
- def information_2_update
- if @information_window_2 != nil
- @information_window_2.clear
- text = ADD_LOC_DESC_VALUE[assigned_number(@map_list[self.index].to_s)]
- @information_window_2.set_text(text)
- end
- end
- def information_4_update
- if @information_window_4 != nil
- @information_window_4.clear; text = ""
- map_num = assigned_number(@map_list[self.index].to_s)
- for i in 0..ADD_LOC_QUEST_S[map_num].size - 1
- if ADD_LOC_QUEST_S[map_num].size != -1
- if $game_switches[ADD_LOC_QUEST_S[map_num][i]]
- quest_desc = assigned_quest(ADD_LOC_QUEST_S[map_num][i])
- text = text + "\n" + ADD_LOC_Q_TEXT[quest_desc][1]
- end
- end
- end
- @information_window_4.set_text(text)
- end
- end
- #-----------------------------------------------------------------------------
- #-----------------------------------------------------------------------------
- # * Return location number from location name
- #-----------------------------------------------------------------------------
- def assigned_number(map_name)
- for i in 0..MAP_LIST.size - 1
- return i if MAP_LIST[i] == map_name
- end
- end
- #-----------------------------------------------------------------------------
- # * Return quest number from quest switch
- #-----------------------------------------------------------------------------
- def assigned_quest(quest_switch)
- for i in 0..ADD_LOC_Q_TEXT.size - 1
- return i if ADD_LOC_Q_TEXT[i][0] == quest_switch
- end
- end
- def get_map_list; return @map_list; end
- end
- #-------------------------------------------------------------------------------
- #-------------------------------------------------------------------------------
- # * Map Additional Location Name Window
- #-------------------------------------------------------------------------------
- class Window_Inf_Base < Window_Base
- include BLACK_MAP_LIST
- def set_text(text); (@text = text; refresh) if text != @text; end
- def clear; set_text(""); end
- def refresh; contents.clear; draw_text_ex(4, 0, @text); end
- end
- class Window_Information_1 < Window_Inf_Base
- include BLACK_MAP_LIST
- def initialize
- super(ADD_LOC_NAME_POS[0], ADD_LOC_NAME_POS[1], ADD_LOC_NAME_W_H[0], ADD_LOC_NAME_W_H[1])
- end
- def reset_font_settings
- super # run's Window_Base's reset_font_settings
- contents.font.size = ADD_LOC_NAME_F_SIZE
- end
- end
- class Window_Information_2 < Window_Inf_Base
- include BLACK_MAP_LIST
- def initialize
- super(ADD_LOC_DESC_POS[0], ADD_LOC_DESC_POS[1], ADD_LOC_DESC_W_H[0], ADD_LOC_DESC_W_H[1])
- end
- def reset_font_settings
- super # run's Window_Base's reset_font_settings
- contents.font.size = ADD_LOC_DESC_F_SIZE
- end
- end
- # Where is Window_Information_3, you ask? Good question, as I too wondering
- # why there isn't any here. Why the fuck do I skipped over it?
- class Window_Information_4 < Window_Inf_Base
- include BLACK_MAP_LIST
- def initialize
- super(ADD_LOC_QUEST_POS[0], ADD_LOC_QUEST_POS[1], ADD_LOC_QUEST_W_H[0], ADD_LOC_QUEST_W_H[1])
- end
- def reset_font_settings
- super # run's Window_Base's reset_font_settings
- contents.font.size = ADD_LOC_QUEST_F_SIZE
- end
- end
- #-------------------------------------------------------------------------------
- #-------------------------------------------------------------------------------
- # * Window Current Party
- #-------------------------------------------------------------------------------
- class Window_Current_Party < Window_Base
- include BLACK_MAP_LIST
- def initialize
- super(ADD_CUR_PARTY_POS[0], ADD_CUR_PARTY_POS[1], ADD_CUR_PARTY_W_H[0], ADD_CUR_PARTY_W_H[1])
- end
- def item_max; return $game_party.members.size; end
- def draw_all_items; item_max.times {|i| draw_item(i) }; end
- def draw_item(index)
- @actor = $game_party.members[index]
- (x_pos = 60; draw_actor_graphic(@actor, index*40 + 20, 45)) if @actor != nil
- end
- def refresh; contents.clear; draw_all_items end
- end
- #-------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement