Munkis' Event Dependant Travel System
Version: 4.5
Author: munkis
Release Date: 01/03/2011
Exclusive Script at RPG RPG Revolution
Introduction
Easy-to-use, feature-rich travel system.
Features
Nearly every aspect of this script can be changed from within the config module, to the point where you can re-purpose it to do (almost) whatever you want.
Script
Munkis' Event Dependant Travel System
CODE
#------------------------------------------------------------------------------
# * Munkis' Event Dependant Travel System V 4.5
# * Made by munkis
# * Basically I got bored one weekend and decided to write this.
# •”•••••••••••—
# •‘ FEATURES •‘
# •š•••••••••••
# * 99% Compatible; uses 4 custom classes, internally overwrites the
# draw_currency_value method of Window_Base, so this script will need to go
# under other scripts that change the curency symbol. Even then, I can't
# guarantee compatability.
# * 90% Plug & Play; You'll need to use images; also requires modern_algebra's
# paragraph formatter. It's also a pretty good idea to use zeriab's fixed
# font algorithm (makes the text look neater), but it isn't required per se.
# * In-depth cinfiguration module; nearly every aspect of this script can be
# changed from within the configuration module, so there's no need to do any
# other edits that may make the script blow computer chips in your face;D
# * You can call this script with: $scene = Munkis_Travel.new
# * If you want to edit this, you'll need to be a passable scripter and
# eventer, as this script will activate different in-game switches depending
# on what choice you select. Just make a new event page and have it look
# for the switch to be "ON" and put whatever travel related eventing stuff
# you want there. As for the scripting part, if you want to have more (or
# less) than the 7 choices this script comes with, there are several parts
# of this script that will need to be changed to make it work properly. You
# have been warned.
# * V 1.0: Initial Release
# * V 2.0: Added ability to show\hide all windows except for command window.
# Can also determine wether or not the currency symbol gets changed.
# * V 3.0: Crammed all but three variables into arrays. Added ability to
# resize all windows from config module.
# * V 3.5: n00bfix; some of the information in Window_Picture didn't update
# properly. Didn't remember to change the array indexes that were looked
# for in the different "when x" blocks.
# * V 4.0: Full implementation of arrays (no more bulky "case" blocks); also
# added second page of information to Window_Text. You can change what
# button is used to flip pages in the config module, as well as toggle its
# appearance. This should be the final update to the script.
# * V 4.1: Removed sound effect from config module, as it made things sound
# bad, I thought (changing the sound played to "cursor" would just make it
# make a "double-clicking"-like sound). You still can change the button
# used for flipping pages from the config module, however. Also fixed a bug
# where nil was somehow being passed as an invalid argument.
# * V 4.11: The choice window now scrolls when you add more commands than can
# fit in the window.
# * V 4.5: Made the INFO_TEXT_ARRAY easier to edit for long strings.
#------------------------------------------------------------------------------
#[module]
module MNK_Travel_Choice
#----------------------------------------------------------------------------
# * Set the switches to be used by the event here.
#----------------------------------------------------------------------------
CHOICE_SWITCHES = [1,2,3,4,5,6,7]
#----------------------------------------------------------------------------
# * Change the in-game variable used to determine travel cost here.
#----------------------------------------------------------------------------
COST_VARIABLES = [1,2,3,4,5,6,7]
#----------------------------------------------------------------------------
# * Set the choice text here.
#----------------------------------------------------------------------------
CHOICE_TEXT_ARRAY = ["Island 1","Island 2","Island 3","Island 4","Island 5","Island 6","Island 7","Stay Here."]
#----------------------------------------------------------------------------
# * Change the Information Window text here.
#----------------------------------------------------------------------------
#The strings shouldn't be longer than 225 characters (including spaces)
#because the information window doesn't scroll. It probably never will, so
#don't ask.
INFO_TEXT_ARRAY = []
INFO_TEXT_ARRAY[0] = ["This is the island you start on in the demo.."]
INFO_TEXT_ARRAY[1] = ["DAMN it's cold!"]
INFO_TEXT_ARRAY[2] = ["Lots of mountains; a climber's dream."]
INFO_TEXT_ARRAY[3] = ["The sand gets into EVERYWHERE!"]
INFO_TEXT_ARRAY[4] = ["Damn it's cold!"]
INFO_TEXT_ARRAY[5] = ["Gotta love swamps... unless you have allergies, then they're hell :)"]
INFO_TEXT_ARRAY[6] = ["This place is so beautiful, I couldn't find a picture for it :)"]
INFO_TEXT_ARRAY[7] = ["Stay here."]
#Use "" for no battler pic.
PAGE_2_BATTLER_PICS = ["Slime","Bat","Hornet","Spider","Rat","Willowisp","Snake"]
#Setting this to true will move the text over to make room for the batler pic.
PAGE_2_BATTLER_SHOWN = true
#What level should the character be before they go to a particular area?
PAGE_2_LEVELS = [5,10,15,20,25,30,35]
#Change the in-game switches used to determine wether or not the player has
#been to an area previously here.
PAGE_2_VISITED_SWITCHES = [8,9,10,11,12,13,14]
#Change the pageflip button used when you flip pages in Window_Text. Using
#(Input::C) or (Input::B) isn't recommended.
INFO_PAGEFLIP_COMMAND = (Input::A)
#----------------------------------------------------------------------------
# * Change the Static Window message here.
#----------------------------------------------------------------------------
STATIC_MESSAGE = "Where ye headed?"
#----------------------------------------------------------------------------
# * Travel choice window sizing is handled here. The first two numbers in
# the array cannot be zero or negative. The second two can be zero or
# negative, however.
#----------------------------------------------------------------------------
#CHOICE_WINDOW_DIM = [width, height, columns, center_x, center_y]
CHOICE_WINDOW_DIM = [544,104,3,0,315]
#----------------------------------------------------------------------------
# * All the pretty graphical stuff happens here.
#----------------------------------------------------------------------------
#Change the gold window properites here.
#GOLD_WINDOW = [icon, x, y]
GOLD_WINDOW = [147,384,0]
#Change the pictures used in the Location Window here. Use "" for none. The
#pictures should be 240 X 184, depending on the size of the window. Put the
#pictures you're going to use in the Graphics\Pictures folder.
LOCATION_PICTURE_ARRAY = ["Castle","Woods","Mine","Desert","Snowfield","Swamp","Beach"]
#Change the in-game variable used to indicate where you are here.
CURRENT_LOCATION_VARIABLE = 8
#Change the text tag used in Window_Picture to indicate where you are here.
CURRENT_LOCATION_TEXT = "[Current Location]"
#Change the properties of the Location window contents here.
#PICTURE_WINDOW_PROPERTIES = [picture_width, picture_height, picture_position_x, picture_position_y, text_and_icon_position_x, text_and_icon_position_y]
PICTURE_WINDOW_PROPERTIES = [240,184,0,0,0,20]
#Toggle the windows and wether or not the gold icon is changed here.
#You can also toggle page 2 of Window_Text here.
#WINDOW_TOGGLES = [gold window, picture window, text window, static window, gold icon, text window page 2]
WINDOW_TOGGLES = [true,true,true,true,false,true]
#Change other window sizes here.
#WINDOW_<whatever>_DIM = [top_corner_x, top_corner_y, bottom_corner_x, bottom_corner_y]
WINDOW_STATIC_DIM = [0,0,385,56]
WINDOW_PICTURE_DIM = [0,56,272,257]
WINDOW_TEXT_DIM = [272,56,272,257]
end
#[/module]
#------------------------------------------------------------------------------
# * This draws the Static window.
#------------------------------------------------------------------------------
class Window_Static < Window_Base
def initialize
if MNK_Travel_Choice::WINDOW_TOGGLES[3] == true
super(MNK_Travel_Choice::WINDOW_STATIC_DIM[0],MNK_Travel_Choice::WINDOW_STATIC_DIM[1],MNK_Travel_Choice::WINDOW_STATIC_DIM[2],MNK_Travel_Choice::WINDOW_STATIC_DIM[3])
self.contents.draw_paragraph (MNK_Travel_Choice::WINDOW_STATIC_DIM[0], MNK_Travel_Choice::WINDOW_STATIC_DIM[1], MNK_Travel_Choice::WINDOW_STATIC_DIM[2], MNK_Travel_Choice::WINDOW_STATIC_DIM[3], MNK_Travel_Choice::STATIC_MESSAGE)
end
end
end
#------------------------------------------------------------------------------
# * This draws the Location window.
#------------------------------------------------------------------------------
class Window_Picture < Window_Base
def initialize
if MNK_Travel_Choice::WINDOW_TOGGLES[1] == true
super(MNK_Travel_Choice::WINDOW_PICTURE_DIM[0], MNK_Travel_Choice::WINDOW_PICTURE_DIM[1], MNK_Travel_Choice::WINDOW_PICTURE_DIM[2], MNK_Travel_Choice::WINDOW_PICTURE_DIM[3])
end
end
def refresh(window_contents)
if MNK_Travel_Choice::WINDOW_TOGGLES[1] == true
self.contents.clear
bitmap = Cache.picture(MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents]) unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil
rect = Rect.new(0, 0, 0, 0)
rect.x = MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[2]
rect.y = MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[3]
rect.width = MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[0]
rect.height = MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[1]
self.contents.blt(x, y, bitmap, rect) unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil
bitmap.dispose unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil
self.contents.draw_text(MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[4], MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[5], self.width, WLH, "Cost to travel:") unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil
self.draw_icon(MNK_Travel_Choice::GOLD_WINDOW[0], MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[4] + 128, MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[5]) unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil
self.contents.draw_text(MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[4], MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[5] - 20, self.width, WLH, MNK_Travel_Choice::CHOICE_TEXT_ARRAY[window_contents]) unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil
self.contents.draw_text(MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[4] + 160, MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[5], self.width, WLH, $game_variables[MNK_Travel_Choice::COST_VARIABLES[window_contents]])unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil
if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == window_contents + 1
self.contents.draw_text(MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[4] + 80, MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[5] - 20, self.width, WLH, MNK_Travel_Choice::CURRENT_LOCATION_TEXT) unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil
end
end
end
end
#------------------------------------------------------------------------------
# * This draws the Information window.
#------------------------------------------------------------------------------
class Window_Text < Window_Base
def initialize
if MNK_Travel_Choice::WINDOW_TOGGLES[2] == true
super(MNK_Travel_Choice::WINDOW_TEXT_DIM[0], MNK_Travel_Choice::WINDOW_TEXT_DIM[1], MNK_Travel_Choice::WINDOW_TEXT_DIM[2], MNK_Travel_Choice::WINDOW_TEXT_DIM[3])
@page_1 = true
end
end
def refresh(window_contents)
if MNK_Travel_Choice::WINDOW_TOGGLES[2] == true
self.contents.clear
if MNK_Travel_Choice::WINDOW_TOGGLES[5] == true
if Input.trigger?(MNK_Travel_Choice::INFO_PAGEFLIP_COMMAND) and @page_1 == true
if MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] != nil
Sound.play_cursor
@page_1 = false
else
Sound.play_buzzer
end
elsif Input.trigger?(MNK_Travel_Choice::INFO_PAGEFLIP_COMMAND) and @page_1 == false
if MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] != nil
Sound.play_cursor
@page_1 = true
else
Sound.play_buzzer
end
elsif Input.trigger?(Input.dir4) and @page_1 == false
@page_1 = true
end
end
if @page_1 == true
self.contents.draw_paragraph (0, 0, 240, 257, MNK_Travel_Choice::INFO_TEXT_ARRAY[window_contents])
elsif @page_1 == false
if MNK_Travel_Choice::PAGE_2_BATTLER_SHOWN == true
bitmap = Cache.battler(MNK_Travel_Choice::PAGE_2_BATTLER_PICS[window_contents], 0)
bw = bitmap.width < 160 ? (160 - bitmap.width) / 2 : 0
bh = contents.height - bitmap.height
self.contents.blt(bw - 32, bh - 15, bitmap, bitmap.rect)
bitmap.dispose
self.contents.draw_text (70, 0, 240, 25, "Monsters:")
self.contents.draw_text (160, 0, 240, 25, MNK_Travel_Choice::PAGE_2_BATTLER_PICS[window_contents])
self.contents.draw_text (70, 20, 240, 25, "Recommended")
self.contents.draw_text (70, 40, 240, 25, "Character Level:")
self.contents.draw_text (215, 40, 240, 25, MNK_Travel_Choice::PAGE_2_LEVELS[window_contents])
self.contents.draw_text (70, 60, 240, 25, "Area Visited:")
if MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] != nil
if $game_switches[MNK_Travel_Choice::PAGE_2_VISITED_SWITCHES[window_contents]] == true
self.contents.draw_text (185, 60, 240, 25, "YES")
else
self.contents.draw_text (185, 60, 240, 25, "NO")
end
end
else
self.contents.draw_text (0, 0, 240, 25, "Monsters:")
self.contents.draw_text (90, 0, 240, 25, MNK_Travel_Choice::PAGE_2_BATTLER_PICS[window_contents])
self.contents.draw_text (0, 20, 240, 25, "Recommended Character")
self.contents.draw_text (0, 40, 240, 25, "Level:")
self.contents.draw_text (55, 40, 240, 25, MNK_Travel_Choice::PAGE_2_LEVELS[window_contents])
self.contents.draw_text (0, 60, 240, 25, "Area Visited:")
if MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] != nil
if $game_switches[MNK_Travel_Choice::PAGE_2_VISITED_SWITCHES[window_contents]] == true
self.contents.draw_text (115, 60, 240, 25, "YES")
else
self.contents.draw_text (115, 60, 240, 25, "NO")
end
end
end
end
else
self.contents.draw_paragraph (0, 0, 240, 257, MNK_Travel_Choice::INFO_TEXT_ARRAY[window_contents])
end
end
end
#------------------------------------------------------------------------------
# * This changes the currency symbol in the gold window to match the icon
# used in Window_Picture if CHANGE_GOLD_ICON == true.
#------------------------------------------------------------------------------
class Window_Base
def draw_currency_value(value, x, y, width)
if MNK_Travel_Choice::WINDOW_TOGGLES[4] == true
self.contents.font.color = normal_color
self.contents.draw_text(x, y, width, WLH, value, 2)
draw_icon(MNK_Travel_Choice::GOLD_WINDOW[0], x, y)
else
cx = contents.text_size(Vocab::gold).width
self.contents.font.color = normal_color
self.contents.draw_text(x, y, width-cx-2, WLH, value, 2)
self.contents.font.color = system_color
self.contents.draw_text(x, y, width, WLH, Vocab::gold, 2)
end
end
end
#------------------------------------------------------------------------------
# * This draws the Travel Choices menu.
#------------------------------------------------------------------------------
class Munkis_Travel < Scene_Base
#----------------------------------------------------------------------------
# * Start processing
#----------------------------------------------------------------------------
def start
super
create_menu_background
create_command_window
if MNK_Travel_Choice::WINDOW_TOGGLES[0] == true
@gold_window = Window_Gold.new(MNK_Travel_Choice::GOLD_WINDOW[1], MNK_Travel_Choice::GOLD_WINDOW[2])
end
if MNK_Travel_Choice::WINDOW_TOGGLES[1] == true
@picturewindow = Window_Picture.new()
end
if MNK_Travel_Choice::WINDOW_TOGGLES[2] == true
@textwindow = Window_Text.new()
end
if MNK_Travel_Choice::WINDOW_TOGGLES[3] == true
@staticwindow = Window_Static.new()
end
end
#----------------------------------------------------------------------------
# * Post-Start Processing
#----------------------------------------------------------------------------
def post_start
super
open_command_window
end
#----------------------------------------------------------------------------
# * Pre-termination Processing
#----------------------------------------------------------------------------
def pre_terminate
super
close_command_window
end
#----------------------------------------------------------------------------
# * Termination Processing
#----------------------------------------------------------------------------
def terminate
super
dispose_command_window
dispose_menu_background
if MNK_Travel_Choice::WINDOW_TOGGLES[0] == true
@gold_window.dispose
end
if MNK_Travel_Choice::WINDOW_TOGGLES[1] == true
@picturewindow.dispose
end
if MNK_Travel_Choice::WINDOW_TOGGLES[2] == true
@textwindow.dispose
end
if MNK_Travel_Choice::WINDOW_TOGGLES[3] == true
@staticwindow.dispose
end
end
#----------------------------------------------------------------------------
# * Return to Original Screen
#----------------------------------------------------------------------------
def return_scene
$scene = Scene_Map.new
end
#----------------------------------------------------------------------------
# * Frame Update
#----------------------------------------------------------------------------
def update
super
update_menu_background
@command_window.update
if MNK_Travel_Choice::WINDOW_TOGGLES[0] == true
@gold_window.refresh
end
if @window_contents != @command_window.index
@window_contents = @command_window.index
end
if MNK_Travel_Choice::WINDOW_TOGGLES[1] == true
@picturewindow.refresh(@window_contents)
end
if MNK_Travel_Choice::WINDOW_TOGGLES[2] == true
@textwindow.refresh(@window_contents)
end
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C)
case @command_window.index
when 0
choice_1
when 1
choice_2
when 2
choice_3
when 3
choice_4
when 4
choice_5
when 5
choice_6
when 6
choice_7
when 7
cancel
end
end
end
#----------------------------------------------------------------------------
# * Update Background for Menu Screen
#----------------------------------------------------------------------------
def update_menu_background
super
@menuback_sprite.tone.set(0, 0, 0, 128)
end
#----------------------------------------------------------------------------
# * Create Command Window
#----------------------------------------------------------------------------
def create_command_window
s1 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[0]
s2 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[1]
s3 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[2]
s4 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[3]
s5 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[4]
s6 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[5]
s7 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[6]
s8 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[7]
@command_window = Window_Command.new(MNK_Travel_Choice::CHOICE_WINDOW_DIM[0], [s1, s2, s3, s4, s5, s6, s7, s8], MNK_Travel_Choice::CHOICE_WINDOW_DIM[2])
@command_window.x = (544 - @command_window.width + MNK_Travel_Choice::CHOICE_WINDOW_DIM[3]) / 2
@command_window.y = (416 - @command_window.height + MNK_Travel_Choice::CHOICE_WINDOW_DIM[4]) / 2
@command_window.openness = 0
@command_window.height = MNK_Travel_Choice::CHOICE_WINDOW_DIM[1]
end
#----------------------------------------------------------------------------
# * Dispose of Choice Window
#----------------------------------------------------------------------------
def dispose_command_window
@command_window.dispose
end
#----------------------------------------------------------------------------
# * Open Choice Window
#----------------------------------------------------------------------------
def open_command_window
@command_window.open
begin
@command_window.update
Graphics.update
end until @command_window.openness == 255
end
#----------------------------------------------------------------------------
# * Close Choice Window
#----------------------------------------------------------------------------
def close_command_window
@command_window.close
begin
@command_window.update
Graphics.update
end until @command_window.openness == 0
end
#----------------------------------------------------------------------------
# * The choices are executed here
#----------------------------------------------------------------------------
def choice_1
$game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[0]] = true
if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 1
Sound.play_buzzer
return_scene
else
Sound.play_decision
return_scene
end
end
def choice_2
$game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[1]] = true
if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 2
Sound.play_buzzer
return_scene
else
Sound.play_decision
return_scene
end
end
def choice_3
$game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[2]] = true
if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 3
Sound.play_buzzer
return_scene
else
Sound.play_decision
return_scene
end
end
def choice_4
$game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[3]] = true
if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 4
Sound.play_buzzer
return_scene
else
Sound.play_decision
return_scene
end
end
def choice_5
$game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[4]] = true
if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 5
Sound.play_buzzer
return_scene
else
Sound.play_decision
return_scene
end
end
def choice_6
$game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[5]] = true
if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 6
Sound.play_buzzer
return_scene
else
Sound.play_decision
return_scene
end
end
def choice_7
$game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[6]] = true
if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 7
Sound.play_buzzer
return_scene
else
Sound.play_decision
return_scene
end
end
def cancel
Sound.play_decision
return_scene
end
end
# * Munkis' Event Dependant Travel System V 4.5
# * Made by munkis
# * Basically I got bored one weekend and decided to write this.
# •”•••••••••••—
# •‘ FEATURES •‘
# •š•••••••••••
# * 99% Compatible; uses 4 custom classes, internally overwrites the
# draw_currency_value method of Window_Base, so this script will need to go
# under other scripts that change the curency symbol. Even then, I can't
# guarantee compatability.
# * 90% Plug & Play; You'll need to use images; also requires modern_algebra's
# paragraph formatter. It's also a pretty good idea to use zeriab's fixed
# font algorithm (makes the text look neater), but it isn't required per se.
# * In-depth cinfiguration module; nearly every aspect of this script can be
# changed from within the configuration module, so there's no need to do any
# other edits that may make the script blow computer chips in your face;D
# * You can call this script with: $scene = Munkis_Travel.new
# * If you want to edit this, you'll need to be a passable scripter and
# eventer, as this script will activate different in-game switches depending
# on what choice you select. Just make a new event page and have it look
# for the switch to be "ON" and put whatever travel related eventing stuff
# you want there. As for the scripting part, if you want to have more (or
# less) than the 7 choices this script comes with, there are several parts
# of this script that will need to be changed to make it work properly. You
# have been warned.
# * V 1.0: Initial Release
# * V 2.0: Added ability to show\hide all windows except for command window.
# Can also determine wether or not the currency symbol gets changed.
# * V 3.0: Crammed all but three variables into arrays. Added ability to
# resize all windows from config module.
# * V 3.5: n00bfix; some of the information in Window_Picture didn't update
# properly. Didn't remember to change the array indexes that were looked
# for in the different "when x" blocks.
# * V 4.0: Full implementation of arrays (no more bulky "case" blocks); also
# added second page of information to Window_Text. You can change what
# button is used to flip pages in the config module, as well as toggle its
# appearance. This should be the final update to the script.
# * V 4.1: Removed sound effect from config module, as it made things sound
# bad, I thought (changing the sound played to "cursor" would just make it
# make a "double-clicking"-like sound). You still can change the button
# used for flipping pages from the config module, however. Also fixed a bug
# where nil was somehow being passed as an invalid argument.
# * V 4.11: The choice window now scrolls when you add more commands than can
# fit in the window.
# * V 4.5: Made the INFO_TEXT_ARRAY easier to edit for long strings.
#------------------------------------------------------------------------------
#[module]
module MNK_Travel_Choice
#----------------------------------------------------------------------------
# * Set the switches to be used by the event here.
#----------------------------------------------------------------------------
CHOICE_SWITCHES = [1,2,3,4,5,6,7]
#----------------------------------------------------------------------------
# * Change the in-game variable used to determine travel cost here.
#----------------------------------------------------------------------------
COST_VARIABLES = [1,2,3,4,5,6,7]
#----------------------------------------------------------------------------
# * Set the choice text here.
#----------------------------------------------------------------------------
CHOICE_TEXT_ARRAY = ["Island 1","Island 2","Island 3","Island 4","Island 5","Island 6","Island 7","Stay Here."]
#----------------------------------------------------------------------------
# * Change the Information Window text here.
#----------------------------------------------------------------------------
#The strings shouldn't be longer than 225 characters (including spaces)
#because the information window doesn't scroll. It probably never will, so
#don't ask.
INFO_TEXT_ARRAY = []
INFO_TEXT_ARRAY[0] = ["This is the island you start on in the demo.."]
INFO_TEXT_ARRAY[1] = ["DAMN it's cold!"]
INFO_TEXT_ARRAY[2] = ["Lots of mountains; a climber's dream."]
INFO_TEXT_ARRAY[3] = ["The sand gets into EVERYWHERE!"]
INFO_TEXT_ARRAY[4] = ["Damn it's cold!"]
INFO_TEXT_ARRAY[5] = ["Gotta love swamps... unless you have allergies, then they're hell :)"]
INFO_TEXT_ARRAY[6] = ["This place is so beautiful, I couldn't find a picture for it :)"]
INFO_TEXT_ARRAY[7] = ["Stay here."]
#Use "" for no battler pic.
PAGE_2_BATTLER_PICS = ["Slime","Bat","Hornet","Spider","Rat","Willowisp","Snake"]
#Setting this to true will move the text over to make room for the batler pic.
PAGE_2_BATTLER_SHOWN = true
#What level should the character be before they go to a particular area?
PAGE_2_LEVELS = [5,10,15,20,25,30,35]
#Change the in-game switches used to determine wether or not the player has
#been to an area previously here.
PAGE_2_VISITED_SWITCHES = [8,9,10,11,12,13,14]
#Change the pageflip button used when you flip pages in Window_Text. Using
#(Input::C) or (Input::B) isn't recommended.
INFO_PAGEFLIP_COMMAND = (Input::A)
#----------------------------------------------------------------------------
# * Change the Static Window message here.
#----------------------------------------------------------------------------
STATIC_MESSAGE = "Where ye headed?"
#----------------------------------------------------------------------------
# * Travel choice window sizing is handled here. The first two numbers in
# the array cannot be zero or negative. The second two can be zero or
# negative, however.
#----------------------------------------------------------------------------
#CHOICE_WINDOW_DIM = [width, height, columns, center_x, center_y]
CHOICE_WINDOW_DIM = [544,104,3,0,315]
#----------------------------------------------------------------------------
# * All the pretty graphical stuff happens here.
#----------------------------------------------------------------------------
#Change the gold window properites here.
#GOLD_WINDOW = [icon, x, y]
GOLD_WINDOW = [147,384,0]
#Change the pictures used in the Location Window here. Use "" for none. The
#pictures should be 240 X 184, depending on the size of the window. Put the
#pictures you're going to use in the Graphics\Pictures folder.
LOCATION_PICTURE_ARRAY = ["Castle","Woods","Mine","Desert","Snowfield","Swamp","Beach"]
#Change the in-game variable used to indicate where you are here.
CURRENT_LOCATION_VARIABLE = 8
#Change the text tag used in Window_Picture to indicate where you are here.
CURRENT_LOCATION_TEXT = "[Current Location]"
#Change the properties of the Location window contents here.
#PICTURE_WINDOW_PROPERTIES = [picture_width, picture_height, picture_position_x, picture_position_y, text_and_icon_position_x, text_and_icon_position_y]
PICTURE_WINDOW_PROPERTIES = [240,184,0,0,0,20]
#Toggle the windows and wether or not the gold icon is changed here.
#You can also toggle page 2 of Window_Text here.
#WINDOW_TOGGLES = [gold window, picture window, text window, static window, gold icon, text window page 2]
WINDOW_TOGGLES = [true,true,true,true,false,true]
#Change other window sizes here.
#WINDOW_<whatever>_DIM = [top_corner_x, top_corner_y, bottom_corner_x, bottom_corner_y]
WINDOW_STATIC_DIM = [0,0,385,56]
WINDOW_PICTURE_DIM = [0,56,272,257]
WINDOW_TEXT_DIM = [272,56,272,257]
end
#[/module]
#------------------------------------------------------------------------------
# * This draws the Static window.
#------------------------------------------------------------------------------
class Window_Static < Window_Base
def initialize
if MNK_Travel_Choice::WINDOW_TOGGLES[3] == true
super(MNK_Travel_Choice::WINDOW_STATIC_DIM[0],MNK_Travel_Choice::WINDOW_STATIC_DIM[1],MNK_Travel_Choice::WINDOW_STATIC_DIM[2],MNK_Travel_Choice::WINDOW_STATIC_DIM[3])
self.contents.draw_paragraph (MNK_Travel_Choice::WINDOW_STATIC_DIM[0], MNK_Travel_Choice::WINDOW_STATIC_DIM[1], MNK_Travel_Choice::WINDOW_STATIC_DIM[2], MNK_Travel_Choice::WINDOW_STATIC_DIM[3], MNK_Travel_Choice::STATIC_MESSAGE)
end
end
end
#------------------------------------------------------------------------------
# * This draws the Location window.
#------------------------------------------------------------------------------
class Window_Picture < Window_Base
def initialize
if MNK_Travel_Choice::WINDOW_TOGGLES[1] == true
super(MNK_Travel_Choice::WINDOW_PICTURE_DIM[0], MNK_Travel_Choice::WINDOW_PICTURE_DIM[1], MNK_Travel_Choice::WINDOW_PICTURE_DIM[2], MNK_Travel_Choice::WINDOW_PICTURE_DIM[3])
end
end
def refresh(window_contents)
if MNK_Travel_Choice::WINDOW_TOGGLES[1] == true
self.contents.clear
bitmap = Cache.picture(MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents]) unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil
rect = Rect.new(0, 0, 0, 0)
rect.x = MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[2]
rect.y = MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[3]
rect.width = MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[0]
rect.height = MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[1]
self.contents.blt(x, y, bitmap, rect) unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil
bitmap.dispose unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil
self.contents.draw_text(MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[4], MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[5], self.width, WLH, "Cost to travel:") unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil
self.draw_icon(MNK_Travel_Choice::GOLD_WINDOW[0], MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[4] + 128, MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[5]) unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil
self.contents.draw_text(MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[4], MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[5] - 20, self.width, WLH, MNK_Travel_Choice::CHOICE_TEXT_ARRAY[window_contents]) unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil
self.contents.draw_text(MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[4] + 160, MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[5], self.width, WLH, $game_variables[MNK_Travel_Choice::COST_VARIABLES[window_contents]])unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil
if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == window_contents + 1
self.contents.draw_text(MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[4] + 80, MNK_Travel_Choice::PICTURE_WINDOW_PROPERTIES[5] - 20, self.width, WLH, MNK_Travel_Choice::CURRENT_LOCATION_TEXT) unless MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] == nil
end
end
end
end
#------------------------------------------------------------------------------
# * This draws the Information window.
#------------------------------------------------------------------------------
class Window_Text < Window_Base
def initialize
if MNK_Travel_Choice::WINDOW_TOGGLES[2] == true
super(MNK_Travel_Choice::WINDOW_TEXT_DIM[0], MNK_Travel_Choice::WINDOW_TEXT_DIM[1], MNK_Travel_Choice::WINDOW_TEXT_DIM[2], MNK_Travel_Choice::WINDOW_TEXT_DIM[3])
@page_1 = true
end
end
def refresh(window_contents)
if MNK_Travel_Choice::WINDOW_TOGGLES[2] == true
self.contents.clear
if MNK_Travel_Choice::WINDOW_TOGGLES[5] == true
if Input.trigger?(MNK_Travel_Choice::INFO_PAGEFLIP_COMMAND) and @page_1 == true
if MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] != nil
Sound.play_cursor
@page_1 = false
else
Sound.play_buzzer
end
elsif Input.trigger?(MNK_Travel_Choice::INFO_PAGEFLIP_COMMAND) and @page_1 == false
if MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] != nil
Sound.play_cursor
@page_1 = true
else
Sound.play_buzzer
end
elsif Input.trigger?(Input.dir4) and @page_1 == false
@page_1 = true
end
end
if @page_1 == true
self.contents.draw_paragraph (0, 0, 240, 257, MNK_Travel_Choice::INFO_TEXT_ARRAY[window_contents])
elsif @page_1 == false
if MNK_Travel_Choice::PAGE_2_BATTLER_SHOWN == true
bitmap = Cache.battler(MNK_Travel_Choice::PAGE_2_BATTLER_PICS[window_contents], 0)
bw = bitmap.width < 160 ? (160 - bitmap.width) / 2 : 0
bh = contents.height - bitmap.height
self.contents.blt(bw - 32, bh - 15, bitmap, bitmap.rect)
bitmap.dispose
self.contents.draw_text (70, 0, 240, 25, "Monsters:")
self.contents.draw_text (160, 0, 240, 25, MNK_Travel_Choice::PAGE_2_BATTLER_PICS[window_contents])
self.contents.draw_text (70, 20, 240, 25, "Recommended")
self.contents.draw_text (70, 40, 240, 25, "Character Level:")
self.contents.draw_text (215, 40, 240, 25, MNK_Travel_Choice::PAGE_2_LEVELS[window_contents])
self.contents.draw_text (70, 60, 240, 25, "Area Visited:")
if MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] != nil
if $game_switches[MNK_Travel_Choice::PAGE_2_VISITED_SWITCHES[window_contents]] == true
self.contents.draw_text (185, 60, 240, 25, "YES")
else
self.contents.draw_text (185, 60, 240, 25, "NO")
end
end
else
self.contents.draw_text (0, 0, 240, 25, "Monsters:")
self.contents.draw_text (90, 0, 240, 25, MNK_Travel_Choice::PAGE_2_BATTLER_PICS[window_contents])
self.contents.draw_text (0, 20, 240, 25, "Recommended Character")
self.contents.draw_text (0, 40, 240, 25, "Level:")
self.contents.draw_text (55, 40, 240, 25, MNK_Travel_Choice::PAGE_2_LEVELS[window_contents])
self.contents.draw_text (0, 60, 240, 25, "Area Visited:")
if MNK_Travel_Choice::LOCATION_PICTURE_ARRAY[window_contents] != nil
if $game_switches[MNK_Travel_Choice::PAGE_2_VISITED_SWITCHES[window_contents]] == true
self.contents.draw_text (115, 60, 240, 25, "YES")
else
self.contents.draw_text (115, 60, 240, 25, "NO")
end
end
end
end
else
self.contents.draw_paragraph (0, 0, 240, 257, MNK_Travel_Choice::INFO_TEXT_ARRAY[window_contents])
end
end
end
#------------------------------------------------------------------------------
# * This changes the currency symbol in the gold window to match the icon
# used in Window_Picture if CHANGE_GOLD_ICON == true.
#------------------------------------------------------------------------------
class Window_Base
def draw_currency_value(value, x, y, width)
if MNK_Travel_Choice::WINDOW_TOGGLES[4] == true
self.contents.font.color = normal_color
self.contents.draw_text(x, y, width, WLH, value, 2)
draw_icon(MNK_Travel_Choice::GOLD_WINDOW[0], x, y)
else
cx = contents.text_size(Vocab::gold).width
self.contents.font.color = normal_color
self.contents.draw_text(x, y, width-cx-2, WLH, value, 2)
self.contents.font.color = system_color
self.contents.draw_text(x, y, width, WLH, Vocab::gold, 2)
end
end
end
#------------------------------------------------------------------------------
# * This draws the Travel Choices menu.
#------------------------------------------------------------------------------
class Munkis_Travel < Scene_Base
#----------------------------------------------------------------------------
# * Start processing
#----------------------------------------------------------------------------
def start
super
create_menu_background
create_command_window
if MNK_Travel_Choice::WINDOW_TOGGLES[0] == true
@gold_window = Window_Gold.new(MNK_Travel_Choice::GOLD_WINDOW[1], MNK_Travel_Choice::GOLD_WINDOW[2])
end
if MNK_Travel_Choice::WINDOW_TOGGLES[1] == true
@picturewindow = Window_Picture.new()
end
if MNK_Travel_Choice::WINDOW_TOGGLES[2] == true
@textwindow = Window_Text.new()
end
if MNK_Travel_Choice::WINDOW_TOGGLES[3] == true
@staticwindow = Window_Static.new()
end
end
#----------------------------------------------------------------------------
# * Post-Start Processing
#----------------------------------------------------------------------------
def post_start
super
open_command_window
end
#----------------------------------------------------------------------------
# * Pre-termination Processing
#----------------------------------------------------------------------------
def pre_terminate
super
close_command_window
end
#----------------------------------------------------------------------------
# * Termination Processing
#----------------------------------------------------------------------------
def terminate
super
dispose_command_window
dispose_menu_background
if MNK_Travel_Choice::WINDOW_TOGGLES[0] == true
@gold_window.dispose
end
if MNK_Travel_Choice::WINDOW_TOGGLES[1] == true
@picturewindow.dispose
end
if MNK_Travel_Choice::WINDOW_TOGGLES[2] == true
@textwindow.dispose
end
if MNK_Travel_Choice::WINDOW_TOGGLES[3] == true
@staticwindow.dispose
end
end
#----------------------------------------------------------------------------
# * Return to Original Screen
#----------------------------------------------------------------------------
def return_scene
$scene = Scene_Map.new
end
#----------------------------------------------------------------------------
# * Frame Update
#----------------------------------------------------------------------------
def update
super
update_menu_background
@command_window.update
if MNK_Travel_Choice::WINDOW_TOGGLES[0] == true
@gold_window.refresh
end
if @window_contents != @command_window.index
@window_contents = @command_window.index
end
if MNK_Travel_Choice::WINDOW_TOGGLES[1] == true
@picturewindow.refresh(@window_contents)
end
if MNK_Travel_Choice::WINDOW_TOGGLES[2] == true
@textwindow.refresh(@window_contents)
end
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C)
case @command_window.index
when 0
choice_1
when 1
choice_2
when 2
choice_3
when 3
choice_4
when 4
choice_5
when 5
choice_6
when 6
choice_7
when 7
cancel
end
end
end
#----------------------------------------------------------------------------
# * Update Background for Menu Screen
#----------------------------------------------------------------------------
def update_menu_background
super
@menuback_sprite.tone.set(0, 0, 0, 128)
end
#----------------------------------------------------------------------------
# * Create Command Window
#----------------------------------------------------------------------------
def create_command_window
s1 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[0]
s2 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[1]
s3 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[2]
s4 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[3]
s5 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[4]
s6 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[5]
s7 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[6]
s8 = MNK_Travel_Choice::CHOICE_TEXT_ARRAY[7]
@command_window = Window_Command.new(MNK_Travel_Choice::CHOICE_WINDOW_DIM[0], [s1, s2, s3, s4, s5, s6, s7, s8], MNK_Travel_Choice::CHOICE_WINDOW_DIM[2])
@command_window.x = (544 - @command_window.width + MNK_Travel_Choice::CHOICE_WINDOW_DIM[3]) / 2
@command_window.y = (416 - @command_window.height + MNK_Travel_Choice::CHOICE_WINDOW_DIM[4]) / 2
@command_window.openness = 0
@command_window.height = MNK_Travel_Choice::CHOICE_WINDOW_DIM[1]
end
#----------------------------------------------------------------------------
# * Dispose of Choice Window
#----------------------------------------------------------------------------
def dispose_command_window
@command_window.dispose
end
#----------------------------------------------------------------------------
# * Open Choice Window
#----------------------------------------------------------------------------
def open_command_window
@command_window.open
begin
@command_window.update
Graphics.update
end until @command_window.openness == 255
end
#----------------------------------------------------------------------------
# * Close Choice Window
#----------------------------------------------------------------------------
def close_command_window
@command_window.close
begin
@command_window.update
Graphics.update
end until @command_window.openness == 0
end
#----------------------------------------------------------------------------
# * The choices are executed here
#----------------------------------------------------------------------------
def choice_1
$game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[0]] = true
if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 1
Sound.play_buzzer
return_scene
else
Sound.play_decision
return_scene
end
end
def choice_2
$game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[1]] = true
if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 2
Sound.play_buzzer
return_scene
else
Sound.play_decision
return_scene
end
end
def choice_3
$game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[2]] = true
if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 3
Sound.play_buzzer
return_scene
else
Sound.play_decision
return_scene
end
end
def choice_4
$game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[3]] = true
if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 4
Sound.play_buzzer
return_scene
else
Sound.play_decision
return_scene
end
end
def choice_5
$game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[4]] = true
if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 5
Sound.play_buzzer
return_scene
else
Sound.play_decision
return_scene
end
end
def choice_6
$game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[5]] = true
if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 6
Sound.play_buzzer
return_scene
else
Sound.play_decision
return_scene
end
end
def choice_7
$game_switches[MNK_Travel_Choice::CHOICE_SWITCHES[6]] = true
if $game_variables[MNK_Travel_Choice::CURRENT_LOCATION_VARIABLE] == 7
Sound.play_buzzer
return_scene
else
Sound.play_decision
return_scene
end
end
def cancel
Sound.play_decision
return_scene
end
end
Customization
In-depth cinfiguration module; nearly every aspect of this script can be changed from within the configuration module, so there's no need to do any other edits that may make the script blow computer chips in your face
Compatibility
99% Compatible; uses 4 custom classes, internally overwrites the draw_currency_value method of Window_Base, so this script will need to go under other scripts that change the curency symbol. Even then, I can't guarantee compatability.
Screenshot

DEMO
http://www.mediafire.com/?zzlzmmljhyj
(the script in the demo is out-dated, but the structure of the events is still valid. The demo also includes images.)
Installation
Place in MATERIALS, above MAIN.
FAQ
Q: ZOMG teh scriptz doesn't werk!!!
A: First of all, be more specific. Second, all reports typed in chat-speak or 1337-speak will be ignored.
Terms and Conditions
I don't mind this script being posted or linked on other sites AS LONG AS YOU GIVE CREDIT!!! Same goes for using this in your project. Contact me if you want to use this in a commercial project.
Credits
Credit goes to me for the script. I don't remember who made the images included in the demo.
