mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-06 06:01:46 +00:00
1028 lines
41 KiB
Ruby
1028 lines
41 KiB
Ruby
#===============================================================================
|
|
# ** Interpreter
|
|
#-------------------------------------------------------------------------------
|
|
# This interpreter runs event commands. This class is used within the
|
|
# Game_System class and the Game_Event class.
|
|
#===============================================================================
|
|
class Interpreter
|
|
#-----------------------------------------------------------------------------
|
|
# * Event Command Execution
|
|
#-----------------------------------------------------------------------------
|
|
def execute_command
|
|
# Reached end of list of commands
|
|
if @index >= @list.size - 1
|
|
command_end
|
|
return true
|
|
end
|
|
# Make current command's parameters available for reference via @parameters
|
|
@parameters = @list[@index].parameters
|
|
# Branch by command code
|
|
case @list[@index].code
|
|
when 101 then return command_101 # Show Text
|
|
when 102 then return command_102 # Show Choices
|
|
when 402 then return command_402 # When [**]
|
|
when 403 then return command_403 # When Cancel
|
|
when 103 then return command_103 # Input Number
|
|
when 104 then return command_104 # Change Text Options
|
|
when 105 then return command_105 # Button Input Processing
|
|
when 106 then return command_106 # Wait
|
|
when 111 then return command_111 # Conditional Branch
|
|
when 411 then return command_411 # Else
|
|
when 112 then return command_112 # Loop
|
|
when 413 then return command_413 # Repeat Above
|
|
when 113 then return command_113 # Break Loop
|
|
when 115 then return command_115 # Exit Event Processing
|
|
when 116 then return command_116 # Erase Event
|
|
when 117 then return command_117 # Call Common Event
|
|
when 118 then return command_118 # Label
|
|
when 119 then return command_119 # Jump to Label
|
|
when 121 then return command_121 # Control Switches
|
|
when 122 then return command_122 # Control Variables
|
|
when 123 then return command_123 # Control Self Switch
|
|
when 124 then return command_124 # Control Timer
|
|
when 125 then return command_125 # Change Gold
|
|
when 126 then return command_126 # Change Items
|
|
when 127 then return command_127 # Change Weapons
|
|
when 128 then return command_128 # Change Armor
|
|
when 129 then return command_129 # Change Party Member
|
|
when 131 then return command_131 # Change Windowskin
|
|
when 132 then return command_132 # Change Battle BGM
|
|
when 133 then return command_133 # Change Battle End ME
|
|
when 134 then return command_134 # Change Save Access
|
|
when 135 then return command_135 # Change Menu Access
|
|
when 136 then return command_136 # Change Encounter
|
|
when 201 then return command_201 # Transfer Player
|
|
when 202 then return command_202 # Set Event Location
|
|
when 203 then return command_203 # Scroll Map
|
|
when 204 then return command_204 # Change Map Settings
|
|
when 205 then return command_205 # Change Fog Color Tone
|
|
when 206 then return command_206 # Change Fog Opacity
|
|
when 207 then return command_207 # Show Animation
|
|
when 208 then return command_208 # Change Transparent Flag
|
|
when 209 then return command_209 # Set Move Route
|
|
when 210 then return command_210 # Wait for Move's Completion
|
|
when 221 then return command_221 # Prepare for Transition
|
|
when 222 then return command_222 # Execute Transition
|
|
when 223 then return command_223 # Change Screen Color Tone
|
|
when 224 then return command_224 # Screen Flash
|
|
when 225 then return command_225 # Screen Shake
|
|
when 231 then return command_231 # Show Picture
|
|
when 232 then return command_232 # Move Picture
|
|
when 233 then return command_233 # Rotate Picture
|
|
when 234 then return command_234 # Change Picture Color Tone
|
|
when 235 then return command_235 # Erase Picture
|
|
when 236 then return command_236 # Set Weather Effects
|
|
when 241 then return command_241 # Play BGM
|
|
when 242 then return command_242 # Fade Out BGM
|
|
when 245 then return command_245 # Play BGS
|
|
when 246 then return command_246 # Fade Out BGS
|
|
when 247 then return command_247 # Memorize BGM/BGS
|
|
when 248 then return command_248 # Restore BGM/BGS
|
|
when 249 then return command_249 # Play ME
|
|
when 250 then return command_250 # Play SE
|
|
when 251 then return command_251 # Stop SE
|
|
when 301 then return command_301 # Battle Processing
|
|
when 601 then return command_601 # If Win
|
|
when 602 then return command_602 # If Escape
|
|
when 603 then return command_603 # If Lose
|
|
when 302 then return command_302 # Shop Processing
|
|
when 303 then return command_303 # Name Input Processing
|
|
when 311 then return command_311 # Change HP
|
|
when 312 then return command_312 # Change SP
|
|
when 313 then return command_313 # Change State
|
|
when 314 then return command_314 # Recover All
|
|
when 315 then return command_315 # Change EXP
|
|
when 316 then return command_316 # Change Level
|
|
when 317 then return command_317 # Change Parameters
|
|
when 318 then return command_318 # Change Skills
|
|
when 319 then return command_319 # Change Equipment
|
|
when 320 then return command_320 # Change Actor Name
|
|
when 321 then return command_321 # Change Actor Class
|
|
when 322 then return command_322 # Change Actor Graphic
|
|
when 331 then return command_331 # Change Enemy HP
|
|
when 332 then return command_332 # Change Enemy SP
|
|
when 333 then return command_333 # Change Enemy State
|
|
when 334 then return command_334 # Enemy Recover All
|
|
when 335 then return command_335 # Enemy Appearance
|
|
when 336 then return command_336 # Enemy Transform
|
|
when 337 then return command_337 # Show Battle Animation
|
|
when 338 then return command_338 # Deal Damage
|
|
when 339 then return command_339 # Force Action
|
|
when 340 then return command_340 # Abort Battle
|
|
when 351 then return command_351 # Call Menu Screen
|
|
when 352 then return command_352 # Call Save Screen
|
|
when 353 then return command_353 # Game Over
|
|
when 354 then return command_354 # Return to Title Screen
|
|
when 355 then return command_355 # Script
|
|
else return true # Other
|
|
end
|
|
end
|
|
|
|
def command_dummy
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * End Event
|
|
#-----------------------------------------------------------------------------
|
|
def command_end
|
|
@list = nil
|
|
# If main map event and event ID are valid, unlock event
|
|
if @main and @event_id > 0 && $game_map.events[@event_id]
|
|
$game_map.events[@event_id].unlock
|
|
end
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Command Skip
|
|
#-----------------------------------------------------------------------------
|
|
def command_skip
|
|
indent = @list[@index].indent
|
|
loop do
|
|
return true if @list[@index + 1].indent == indent
|
|
@index += 1
|
|
end
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Command If
|
|
#-----------------------------------------------------------------------------
|
|
def command_if(value)
|
|
if @branch[@list[@index].indent] == value
|
|
@branch.delete(@list[@index].indent)
|
|
return true
|
|
end
|
|
return command_skip
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Show Text
|
|
#-----------------------------------------------------------------------------
|
|
def command_101
|
|
return false if $game_temp.message_window_showing
|
|
message = @list[@index].parameters[0]
|
|
message_end = ""
|
|
commands = nil
|
|
number_input_variable = nil
|
|
number_input_max_digits = nil
|
|
# Check the next command(s) for things to add on to this text
|
|
loop do
|
|
next_index = pbNextIndex(@index)
|
|
case @list[next_index].code
|
|
when 401 # Continuation of 101 Show Text
|
|
text = @list[next_index].parameters[0]
|
|
message += " " if text != "" && message[message.length - 1, 1] != " "
|
|
message += text
|
|
@index = next_index
|
|
next
|
|
when 101 # Show Text
|
|
message_end = "\1"
|
|
when 102 # Show Choices
|
|
commands = @list[next_index].parameters
|
|
@index = next_index
|
|
when 103 # Input Number
|
|
number_input_variable = @list[next_index].parameters[0]
|
|
number_input_max_digits = @list[next_index].parameters[1]
|
|
@index = next_index
|
|
end
|
|
break
|
|
end
|
|
# Translate the text
|
|
message = _MAPINTL($game_map.map_id, message)
|
|
# Display the text, with commands/number choosing if appropriate
|
|
@message_waiting = true # Lets parallel process events work while a message is displayed
|
|
if commands
|
|
cmd_texts = []
|
|
for cmd in commands[0]
|
|
cmd_texts.push(_MAPINTL($game_map.map_id, cmd))
|
|
end
|
|
command = pbMessage(message + message_end, cmd_texts, commands[1])
|
|
@branch[@list[@index].indent] = command
|
|
elsif number_input_variable
|
|
params = ChooseNumberParams.new
|
|
params.setMaxDigits(number_input_max_digits)
|
|
params.setDefaultValue($game_variables[number_input_variable])
|
|
$game_variables[number_input_variable] = pbMessageChooseNumber(message + message_end, params)
|
|
$game_map.need_refresh = true if $game_map
|
|
else
|
|
pbMessage(message + message_end)
|
|
end
|
|
@message_waiting = false
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Show Choices
|
|
#-----------------------------------------------------------------------------
|
|
def command_102
|
|
@message_waiting = true
|
|
command = pbShowCommands(nil, @list[@index].parameters[0], @list[@index].parameters[1])
|
|
@message_waiting = false
|
|
@branch[@list[@index].indent] = command
|
|
Input.update # Must call Input.update again to avoid extra triggers
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * When [**]
|
|
#-----------------------------------------------------------------------------
|
|
def command_402
|
|
if @branch[@list[@index].indent] == @parameters[0]
|
|
@branch.delete(@list[@index].indent)
|
|
return true
|
|
end
|
|
return command_skip
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * When Cancel
|
|
#-----------------------------------------------------------------------------
|
|
def command_403
|
|
if @branch[@list[@index].indent] == 4
|
|
@branch.delete(@list[@index].indent)
|
|
return true
|
|
end
|
|
return command_skip
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Input Number
|
|
#-----------------------------------------------------------------------------
|
|
def command_103
|
|
@message_waiting = true
|
|
variable_number = @list[@index].parameters[0]
|
|
params = ChooseNumberParams.new
|
|
params.setMaxDigits(@list[@index].parameters[1])
|
|
params.setDefaultValue($game_variables[variable_number])
|
|
$game_variables[variable_number] = pbChooseNumber(nil, params)
|
|
$game_map.need_refresh = true if $game_map
|
|
@message_waiting = false
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Change Text Options
|
|
#-----------------------------------------------------------------------------
|
|
def command_104
|
|
return false if $game_temp.message_window_showing
|
|
$game_system.message_position = @parameters[0]
|
|
$game_system.message_frame = @parameters[1]
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Button Input Processing
|
|
#-----------------------------------------------------------------------------
|
|
def pbButtonInputProcessing(variable_number = 0, timeout_frames = 0)
|
|
ret = 0
|
|
timer = timeout_frames * Graphics.frame_rate / 20
|
|
loop do
|
|
Graphics.update
|
|
Input.update
|
|
pbUpdateSceneMap
|
|
# Check for input and break if there is one
|
|
for i in 1..18
|
|
ret = i if Input.trigger?(i)
|
|
end
|
|
break if ret != 0
|
|
# Count down the timer and break if it runs out
|
|
if timeout_frames > 0
|
|
timer -= 1
|
|
break if timer <= 0
|
|
end
|
|
end
|
|
Input.update
|
|
if variable_number && variable_number > 0
|
|
$game_variables[variable_number] = ret
|
|
$game_map.need_refresh = true if $game_map
|
|
end
|
|
return ret
|
|
end
|
|
|
|
def command_105
|
|
return false if @buttonInput
|
|
@buttonInput = true
|
|
pbButtonInputProcessing(@list[@index].parameters[0])
|
|
@buttonInput = false
|
|
@index += 1
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Wait
|
|
#-----------------------------------------------------------------------------
|
|
def command_106
|
|
@wait_count = @parameters[0] * Graphics.frame_rate / 20
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Conditional Branch
|
|
#-----------------------------------------------------------------------------
|
|
def command_111
|
|
result = false
|
|
case @parameters[0]
|
|
when 0 # switch
|
|
switch_name = $data_system.switches[@parameters[1]]
|
|
if switch_name && switch_name[/^s\:/]
|
|
result = (eval($~.post_match) == (@parameters[2] == 0))
|
|
else
|
|
result = ($game_switches[@parameters[1]] == (@parameters[2] == 0))
|
|
end
|
|
when 1 # variable
|
|
value1 = $game_variables[@parameters[1]]
|
|
value2 = (@parameters[2] == 0) ? @parameters[3] : $game_variables[@parameters[3]]
|
|
case @parameters[4]
|
|
when 0 then result = (value1 == value2)
|
|
when 1 then result = (value1 >= value2)
|
|
when 2 then result = (value1 <= value2)
|
|
when 3 then result = (value1 > value2)
|
|
when 4 then result = (value1 < value2)
|
|
when 5 then result = (value1 != value2)
|
|
end
|
|
when 2 # self switch
|
|
if @event_id > 0
|
|
key = [$game_map.map_id, @event_id, @parameters[1]]
|
|
result = ($game_self_switches[key] == (@parameters[2] == 0))
|
|
end
|
|
when 3 # timer
|
|
if $game_system.timer_working
|
|
sec = $game_system.timer / Graphics.frame_rate
|
|
result = (@parameters[2] == 0) ? (sec >= @parameters[1]) : (sec <= @parameters[1])
|
|
end
|
|
# when 4, 5 # actor, enemy
|
|
when 6 # character
|
|
character = get_character(@parameters[1])
|
|
result = (character.direction == @parameters[2]) if character
|
|
when 7 # gold
|
|
gold = $Trainer.money
|
|
result = (@parameters[2] == 0) ? (gold >= @parameters[1]) : (gold <= @parameters[1])
|
|
# when 8, 9, 10 # item, weapon, armor
|
|
when 11 # button
|
|
result = Input.press?(@parameters[1])
|
|
when 12 # script
|
|
result = execute_script(@parameters[1])
|
|
end
|
|
# Store result in hash
|
|
@branch[@list[@index].indent] = result
|
|
if @branch[@list[@index].indent]
|
|
@branch.delete(@list[@index].indent)
|
|
return true
|
|
end
|
|
return command_skip
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Else
|
|
#-----------------------------------------------------------------------------
|
|
def command_411
|
|
if !@branch[@list[@index].indent]
|
|
@branch.delete(@list[@index].indent)
|
|
return true
|
|
end
|
|
return command_skip
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Loop
|
|
#-----------------------------------------------------------------------------
|
|
def command_112
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Repeat Above
|
|
#-----------------------------------------------------------------------------
|
|
def command_413
|
|
indent = @list[@index].indent
|
|
loop do
|
|
@index -= 1
|
|
return true if @list[@index].indent == indent
|
|
end
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Break Loop
|
|
#-----------------------------------------------------------------------------
|
|
def command_113
|
|
indent = @list[@index].indent
|
|
temp_index = @index
|
|
loop do
|
|
temp_index += 1
|
|
return true if temp_index >= @list.size - 1 # Reached end of commands
|
|
# Skip ahead to after the [Repeat Above] end of the current loop
|
|
if @list[temp_index].code == 413 and @list[temp_index].indent < indent
|
|
@index = temp_index
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Exit Event Processing
|
|
#-----------------------------------------------------------------------------
|
|
def command_115
|
|
command_end
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Erase Event
|
|
#-----------------------------------------------------------------------------
|
|
def command_116
|
|
if @event_id > 0
|
|
$game_map.events[@event_id].erase if $game_map.events[@event_id]
|
|
$PokemonMap.addErasedEvent(@event_id) if $PokemonMap
|
|
end
|
|
@index += 1
|
|
return false
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Call Common Event
|
|
#-----------------------------------------------------------------------------
|
|
def command_117
|
|
common_event = $data_common_events[@parameters[0]]
|
|
if common_event
|
|
@child_interpreter = Interpreter.new(@depth + 1)
|
|
@child_interpreter.setup(common_event.list, @event_id)
|
|
end
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Label
|
|
#-----------------------------------------------------------------------------
|
|
def command_118
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Jump to Label
|
|
#-----------------------------------------------------------------------------
|
|
def command_119
|
|
label_name = @parameters[0]
|
|
temp_index = 0
|
|
loop do
|
|
return true if temp_index >= @list.size - 1 # Reached end of commands
|
|
# Check whether this command is a label with the desired name
|
|
if @list[temp_index].code == 118 &&
|
|
@list[temp_index].parameters[0] == label_name
|
|
@index = temp_index
|
|
return true
|
|
end
|
|
# Command isn't the desired label, increment temp_index and keep looking
|
|
temp_index += 1
|
|
end
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Control Switches
|
|
#-----------------------------------------------------------------------------
|
|
def command_121
|
|
should_refresh = false
|
|
for i in @parameters[0]..@parameters[1]
|
|
next if $game_switches[i] == (@parameters[2] == 0)
|
|
$game_switches[i] = (@parameters[2] == 0)
|
|
should_refresh = true
|
|
end
|
|
# Refresh map
|
|
$game_map.need_refresh = true if should_refresh
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Control Variables
|
|
#-----------------------------------------------------------------------------
|
|
def command_122
|
|
value = 0
|
|
case @parameters[3]
|
|
when 0 # invariable (fixed value)
|
|
value = @parameters[4]
|
|
when 1 # variable
|
|
value = $game_variables[@parameters[4]]
|
|
when 2 # random number
|
|
value = @parameters[4] + rand(@parameters[5] - @parameters[4] + 1)
|
|
# when 3, 4, 5 # item, actor, enemy
|
|
when 6 # character
|
|
character = get_character(@parameters[4])
|
|
if character
|
|
case @parameters[5]
|
|
when 0 then value = character.x # x-coordinate
|
|
when 1 then value = character.y # y-coordinate
|
|
when 2 then value = character.direction # direction
|
|
when 3 then value = character.screen_x # screen x-coordinate
|
|
when 4 then value = character.screen_y # screen y-coordinate
|
|
when 5 then value = character.terrain_tag.id_number # terrain tag
|
|
end
|
|
end
|
|
when 7 # other
|
|
case @parameters[4]
|
|
when 0 then value = $game_map.map_id # map ID
|
|
when 1 then value = $Trainer.pokemon_party.length # party members
|
|
when 2 then value = $Trainer.money # gold
|
|
# when 3 # steps
|
|
when 4 then value = Graphics.frame_count / Graphics.frame_rate # play time
|
|
when 5 then value = $game_system.timer / Graphics.frame_rate # timer
|
|
when 6 then value = $game_system.save_count # save count
|
|
end
|
|
end
|
|
# Apply value and operation to all specified game variables
|
|
for i in @parameters[0]..@parameters[1]
|
|
case @parameters[2]
|
|
when 0 # set
|
|
next if $game_variables[i] == value
|
|
$game_variables[i] = value
|
|
when 1 # add
|
|
next if $game_variables[i] >= 99999999
|
|
$game_variables[i] += value
|
|
when 2 # subtract
|
|
next if $game_variables[i] <= -99999999
|
|
$game_variables[i] -= value
|
|
when 3 # multiply
|
|
next if value == 1
|
|
$game_variables[i] *= value
|
|
when 4 # divide
|
|
next if value == 1 || value == 0
|
|
$game_variables[i] /= value
|
|
when 5 # remainder
|
|
next if value == 1 || value == 0
|
|
$game_variables[i] %= value
|
|
end
|
|
$game_variables[i] = 99999999 if $game_variables[i] > 99999999
|
|
$game_variables[i] = -99999999 if $game_variables[i] < -99999999
|
|
$game_map.need_refresh = true
|
|
end
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Control Self Switch
|
|
#-----------------------------------------------------------------------------
|
|
def command_123
|
|
if @event_id > 0
|
|
new_value = (@parameters[1] == 0)
|
|
key = [$game_map.map_id, @event_id, @parameters[0]]
|
|
if $game_self_switches[key] != new_value
|
|
$game_self_switches[key] = new_value
|
|
$game_map.need_refresh = true
|
|
end
|
|
end
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Control Timer
|
|
#-----------------------------------------------------------------------------
|
|
def command_124
|
|
$game_system.timer_working = (@parameters[0] == 0)
|
|
$game_system.timer = @parameters[1] * Graphics.frame_rate if @parameters[0] == 0
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Change Gold
|
|
#-----------------------------------------------------------------------------
|
|
def command_125
|
|
value = (@parameters[1] == 0) ? @parameters[2] : $game_variables[@parameters[2]]
|
|
value = -value if @parameters[0] == 1 # Decrease
|
|
$Trainer.money += value
|
|
return true
|
|
end
|
|
|
|
def command_126; command_dummy; end # Change Items
|
|
def command_127; command_dummy; end # Change Weapons
|
|
def command_128; command_dummy; end # Change Armor
|
|
def command_129; command_dummy; end # Change Party Member
|
|
#-----------------------------------------------------------------------------
|
|
# * Change Windowskin
|
|
#-----------------------------------------------------------------------------
|
|
def command_131
|
|
for i in 0...Settings::SPEECH_WINDOWSKINS.length
|
|
next if Settings::SPEECH_WINDOWSKINS[i] != @parameters[0]
|
|
$PokemonSystem.textskin = i
|
|
MessageConfig.pbSetSpeechFrame("Graphics/Windowskins/" + Settings::SPEECH_WINDOWSKINS[i])
|
|
return true
|
|
end
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Change Battle BGM
|
|
#-----------------------------------------------------------------------------
|
|
def command_132
|
|
($PokemonGlobal.nextBattleBGM = @parameters[0]) ? @parameters[0].clone : nil
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Change Battle End ME
|
|
#-----------------------------------------------------------------------------
|
|
def command_133
|
|
($PokemonGlobal.nextBattleME = @parameters[0]) ? @parameters[0].clone : nil
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Change Save Access
|
|
#-----------------------------------------------------------------------------
|
|
def command_134
|
|
$game_system.save_disabled = (@parameters[0] == 0)
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Change Menu Access
|
|
#-----------------------------------------------------------------------------
|
|
def command_135
|
|
$game_system.menu_disabled = (@parameters[0] == 0)
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Change Encounter
|
|
#-----------------------------------------------------------------------------
|
|
def command_136
|
|
$game_system.encounter_disabled = (@parameters[0] == 0)
|
|
$game_player.make_encounter_count
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Transfer Player
|
|
#-----------------------------------------------------------------------------
|
|
def command_201
|
|
return true if $game_temp.in_battle
|
|
return false if $game_temp.player_transferring ||
|
|
$game_temp.message_window_showing ||
|
|
$game_temp.transition_processing
|
|
# Set up the transfer and the player's new coordinates
|
|
$game_temp.player_transferring = true
|
|
if @parameters[0] == 0 # Direct appointment
|
|
$game_temp.player_new_map_id = @parameters[1]
|
|
$game_temp.player_new_x = @parameters[2]
|
|
$game_temp.player_new_y = @parameters[3]
|
|
$game_temp.player_new_direction = @parameters[4]
|
|
else # Appoint with variables
|
|
$game_temp.player_new_map_id = $game_variables[@parameters[1]]
|
|
$game_temp.player_new_x = $game_variables[@parameters[2]]
|
|
$game_temp.player_new_y = $game_variables[@parameters[3]]
|
|
$game_temp.player_new_direction = @parameters[4]
|
|
end
|
|
@index += 1
|
|
# If transition happens with a fade, do the fade
|
|
if @parameters[5] == 0
|
|
Graphics.freeze
|
|
$game_temp.transition_processing = true
|
|
$game_temp.transition_name = ""
|
|
end
|
|
return false
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Set Event Location
|
|
#-----------------------------------------------------------------------------
|
|
def command_202
|
|
return true if $game_temp.in_battle
|
|
character = get_character(@parameters[0])
|
|
return true if character.nil?
|
|
# Move the character
|
|
if @parameters[1] == 0 # Direct appointment
|
|
character.moveto(@parameters[2], @parameters[3])
|
|
elsif @parameters[1] == 1 # Appoint with variables
|
|
character.moveto($game_variables[@parameters[2]], $game_variables[@parameters[3]])
|
|
else # Exchange with another event
|
|
character2 = get_character(@parameters[2])
|
|
if character2
|
|
old_x = character.x
|
|
old_y = character.y
|
|
character.moveto(character2.x, character2.y)
|
|
character2.moveto(old_x, old_y)
|
|
end
|
|
end
|
|
# Set character's direction
|
|
case @parameters[4]
|
|
when 2 then character.turn_down
|
|
when 4 then character.turn_left
|
|
when 6 then character.turn_right
|
|
when 8 then character.turn_up
|
|
end
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Scroll Map
|
|
#-----------------------------------------------------------------------------
|
|
def command_203
|
|
return true if $game_temp.in_battle
|
|
return false if $game_map.scrolling?
|
|
$game_map.start_scroll(@parameters[0], @parameters[1], @parameters[2])
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Change Map Settings
|
|
#-----------------------------------------------------------------------------
|
|
def command_204
|
|
case @parameters[0]
|
|
when 0 # panorama
|
|
$game_map.panorama_name = @parameters[1]
|
|
$game_map.panorama_hue = @parameters[2]
|
|
when 1 # fog
|
|
$game_map.fog_name = @parameters[1]
|
|
$game_map.fog_hue = @parameters[2]
|
|
$game_map.fog_opacity = @parameters[3]
|
|
$game_map.fog_blend_type = @parameters[4]
|
|
$game_map.fog_zoom = @parameters[5]
|
|
$game_map.fog_sx = @parameters[6]
|
|
$game_map.fog_sy = @parameters[7]
|
|
when 2 # battleback
|
|
$game_map.battleback_name = @parameters[1]
|
|
$game_temp.battleback_name = @parameters[1]
|
|
end
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Change Fog Color Tone
|
|
#-----------------------------------------------------------------------------
|
|
def command_205
|
|
$game_map.start_fog_tone_change(@parameters[0], @parameters[1] * Graphics.frame_rate / 20)
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Change Fog Opacity
|
|
#-----------------------------------------------------------------------------
|
|
def command_206
|
|
$game_map.start_fog_opacity_change(@parameters[0], @parameters[1] * Graphics.frame_rate / 20)
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Show Animation
|
|
#-----------------------------------------------------------------------------
|
|
def command_207
|
|
character = get_character(@parameters[0])
|
|
return true if character.nil?
|
|
character.animation_id = @parameters[1]
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Change Transparent Flag
|
|
#-----------------------------------------------------------------------------
|
|
def command_208
|
|
$game_player.transparent = (@parameters[0] == 0)
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Set Move Route
|
|
#-----------------------------------------------------------------------------
|
|
def command_209
|
|
character = get_character(@parameters[0])
|
|
return true if character.nil?
|
|
character.force_move_route(@parameters[1])
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Wait for Move's Completion
|
|
#-----------------------------------------------------------------------------
|
|
def command_210
|
|
@move_route_waiting = true if !$game_temp.in_battle
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Prepare for Transition
|
|
#-----------------------------------------------------------------------------
|
|
def command_221
|
|
return false if $game_temp.message_window_showing
|
|
Graphics.freeze
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Execute Transition
|
|
#-----------------------------------------------------------------------------
|
|
def command_222
|
|
return false if $game_temp.transition_processing
|
|
$game_temp.transition_processing = true
|
|
$game_temp.transition_name = @parameters[0]
|
|
@index += 1
|
|
return false
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Change Screen Color Tone
|
|
#-----------------------------------------------------------------------------
|
|
def command_223
|
|
$game_screen.start_tone_change(@parameters[0], @parameters[1] * Graphics.frame_rate / 20)
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Screen Flash
|
|
#-----------------------------------------------------------------------------
|
|
def command_224
|
|
$game_screen.start_flash(@parameters[0], @parameters[1] * Graphics.frame_rate / 20)
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Screen Shake
|
|
#-----------------------------------------------------------------------------
|
|
def command_225
|
|
$game_screen.start_shake(@parameters[0], @parameters[1], @parameters[2] * Graphics.frame_rate / 20)
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Show Picture
|
|
#-----------------------------------------------------------------------------
|
|
def command_231
|
|
number = @parameters[0] + ($game_temp.in_battle ? 50 : 0)
|
|
if @parameters[3] == 0 # Direct appointment
|
|
x = @parameters[4]
|
|
y = @parameters[5]
|
|
else # Appoint with variables
|
|
x = $game_variables[@parameters[4]]
|
|
y = $game_variables[@parameters[5]]
|
|
end
|
|
$game_screen.pictures[number].show(@parameters[1], @parameters[2],
|
|
x, y, @parameters[6], @parameters[7], @parameters[8], @parameters[9])
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Move Picture
|
|
#-----------------------------------------------------------------------------
|
|
def command_232
|
|
number = @parameters[0] + ($game_temp.in_battle ? 50 : 0)
|
|
if @parameters[3] == 0 # Direct appointment
|
|
x = @parameters[4]
|
|
y = @parameters[5]
|
|
else # Appoint with variables
|
|
x = $game_variables[@parameters[4]]
|
|
y = $game_variables[@parameters[5]]
|
|
end
|
|
$game_screen.pictures[number].move(@parameters[1] * Graphics.frame_rate / 20,
|
|
@parameters[2], x, y, @parameters[6], @parameters[7], @parameters[8], @parameters[9])
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Rotate Picture
|
|
#-----------------------------------------------------------------------------
|
|
def command_233
|
|
number = @parameters[0] + ($game_temp.in_battle ? 50 : 0)
|
|
$game_screen.pictures[number].rotate(@parameters[1])
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Change Picture Color Tone
|
|
#-----------------------------------------------------------------------------
|
|
def command_234
|
|
number = @parameters[0] + ($game_temp.in_battle ? 50 : 0)
|
|
$game_screen.pictures[number].start_tone_change(@parameters[1],
|
|
@parameters[2] * Graphics.frame_rate / 20)
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Erase Picture
|
|
#-----------------------------------------------------------------------------
|
|
def command_235
|
|
number = @parameters[0] + ($game_temp.in_battle ? 50 : 0)
|
|
$game_screen.pictures[number].erase
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Set Weather Effects
|
|
#-----------------------------------------------------------------------------
|
|
def command_236
|
|
$game_screen.weather(@parameters[0], @parameters[1], @parameters[2])
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Play BGM
|
|
#-----------------------------------------------------------------------------
|
|
def command_241
|
|
pbBGMPlay(@parameters[0])
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Fade Out BGM
|
|
#-----------------------------------------------------------------------------
|
|
def command_242
|
|
pbBGMFade(@parameters[0])
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Play BGS
|
|
#-----------------------------------------------------------------------------
|
|
def command_245
|
|
pbBGSPlay(@parameters[0])
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Fade Out BGS
|
|
#-----------------------------------------------------------------------------
|
|
def command_246
|
|
pbBGSFade(@parameters[0])
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Memorize BGM/BGS
|
|
#-----------------------------------------------------------------------------
|
|
def command_247
|
|
$game_system.bgm_memorize
|
|
$game_system.bgs_memorize
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Restore BGM/BGS
|
|
#-----------------------------------------------------------------------------
|
|
def command_248
|
|
$game_system.bgm_restore
|
|
$game_system.bgs_restore
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Play ME
|
|
#-----------------------------------------------------------------------------
|
|
def command_249
|
|
pbMEPlay(@parameters[0])
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Play SE
|
|
#-----------------------------------------------------------------------------
|
|
def command_250
|
|
pbSEPlay(@parameters[0])
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Stop SE
|
|
#-----------------------------------------------------------------------------
|
|
def command_251
|
|
pbSEStop
|
|
return true
|
|
end
|
|
|
|
def command_301; command_dummy; end # Battle Processing
|
|
def command_601; command_if(0); end # If Win
|
|
def command_602; command_if(1); end # If Escape
|
|
def command_603; command_if(2); end # If Lose
|
|
def command_302; command_dummy; end # Shop Processing
|
|
#-----------------------------------------------------------------------------
|
|
# * Name Input Processing
|
|
#-----------------------------------------------------------------------------
|
|
def command_303
|
|
if $Trainer
|
|
$Trainer.name = pbEnterPlayerName(_INTL("Your name?"), 1, @parameters[1], $Trainer.name)
|
|
return true
|
|
end
|
|
if $game_actors && $data_actors && $data_actors[@parameters[0]] != nil
|
|
$game_temp.battle_abort = true
|
|
pbFadeOutIn {
|
|
sscene = PokemonEntryScene.new
|
|
sscreen = PokemonEntry.new(sscene)
|
|
$game_actors[@parameters[0]].name = sscreen.pbStartScreen(
|
|
_INTL("Enter {1}'s name.", $game_actors[@parameters[0]].name),
|
|
1, @parameters[1], $game_actors[@parameters[0]].name)
|
|
}
|
|
end
|
|
return true
|
|
end
|
|
|
|
def command_311; command_dummy; end # Change HP
|
|
def command_312; command_dummy; end # Change SP
|
|
def command_313; command_dummy; end # Change State
|
|
#-----------------------------------------------------------------------------
|
|
# * Recover All
|
|
#-----------------------------------------------------------------------------
|
|
def command_314
|
|
$Trainer.heal_party if @parameters[0] == 0
|
|
return true
|
|
end
|
|
|
|
def command_315; command_dummy; end # Change EXP
|
|
def command_316; command_dummy; end # Change Level
|
|
def command_317; command_dummy; end # Change Parameters
|
|
def command_318; command_dummy; end # Change Skills
|
|
def command_319; command_dummy; end # Change Equipment
|
|
def command_320; command_dummy; end # Change Actor Name
|
|
def command_321; command_dummy; end # Change Actor Class
|
|
def command_322; command_dummy; end # Change Actor Graphic
|
|
def command_331; command_dummy; end # Change Enemy HP
|
|
def command_332; command_dummy; end # Change Enemy SP
|
|
def command_333; command_dummy; end # Change Enemy State
|
|
def command_334; command_dummy; end # Enemy Recover All
|
|
def command_335; command_dummy; end # Enemy Appearance
|
|
def command_336; command_dummy; end # Enemy Transform
|
|
def command_337; command_dummy; end # Show Battle Animation
|
|
def command_338; command_dummy; end # Deal Damage
|
|
def command_339; command_dummy; end # Force Action
|
|
def command_340; command_dummy; end # Abort Battle
|
|
#-----------------------------------------------------------------------------
|
|
# * Call Menu Screen
|
|
#-----------------------------------------------------------------------------
|
|
def command_351
|
|
$game_temp.menu_calling = true
|
|
@index += 1
|
|
return false
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Call Save Screen
|
|
#-----------------------------------------------------------------------------
|
|
def command_352
|
|
scene = PokemonSave_Scene.new
|
|
screen = PokemonSaveScreen.new(scene)
|
|
screen.pbSaveScreen
|
|
return true
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Game Over
|
|
#-----------------------------------------------------------------------------
|
|
def command_353
|
|
pbBGMFade(1.0)
|
|
pbBGSFade(1.0)
|
|
pbFadeOutIn { pbStartOver(true) }
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Return to Title Screen
|
|
#-----------------------------------------------------------------------------
|
|
def command_354
|
|
$game_temp.to_title = true
|
|
return false
|
|
end
|
|
#-----------------------------------------------------------------------------
|
|
# * Script
|
|
#-----------------------------------------------------------------------------
|
|
def command_355
|
|
script = @list[@index].parameters[0] + "\n"
|
|
# Look for more script commands or a continuation of one, and add them to script
|
|
loop do
|
|
break if ![355, 655].include?(@list[@index + 1].code)
|
|
script += @list[@index+1].parameters[0] + "\n"
|
|
@index += 1
|
|
end
|
|
# Run the script
|
|
execute_script(script)
|
|
return true
|
|
end
|
|
end
|