283 lines
8.6 KiB
Ruby
283 lines
8.6 KiB
Ruby
|
#==============================================================================
|
||
|
# ** Interpreter (part 7)
|
||
|
#------------------------------------------------------------------------------
|
||
|
# This interpreter runs event commands. This class is used within the
|
||
|
# Game_System class and the Game_Event class.
|
||
|
#==============================================================================
|
||
|
|
||
|
class Interpreter
|
||
|
#--------------------------------------------------------------------------
|
||
|
# * Change Enemy HP
|
||
|
#--------------------------------------------------------------------------
|
||
|
def command_331
|
||
|
# Get operate value
|
||
|
value = operate_value(@parameters[1], @parameters[2], @parameters[3])
|
||
|
# Process with iterator
|
||
|
iterate_enemy(@parameters[0]) do |enemy|
|
||
|
# If HP is not 0
|
||
|
if enemy.hp > 0
|
||
|
# Change HP (if death is not permitted then change HP to 1)
|
||
|
if @parameters[4] == false and enemy.hp + value <= 0
|
||
|
enemy.hp = 1
|
||
|
else
|
||
|
enemy.hp += value
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
# Continue
|
||
|
return true
|
||
|
end
|
||
|
#--------------------------------------------------------------------------
|
||
|
# * Change Enemy SP
|
||
|
#--------------------------------------------------------------------------
|
||
|
def command_332
|
||
|
# Get operate value
|
||
|
value = operate_value(@parameters[1], @parameters[2], @parameters[3])
|
||
|
# Process with iterator
|
||
|
iterate_enemy(@parameters[0]) do |enemy|
|
||
|
# Change SP
|
||
|
enemy.sp += value
|
||
|
end
|
||
|
# Continue
|
||
|
return true
|
||
|
end
|
||
|
#--------------------------------------------------------------------------
|
||
|
# * Change Enemy State
|
||
|
#--------------------------------------------------------------------------
|
||
|
def command_333
|
||
|
# Process with iterator
|
||
|
iterate_enemy(@parameters[0]) do |enemy|
|
||
|
# If [regard HP 0] state option is valid
|
||
|
if $data_states[@parameters[2]].zero_hp
|
||
|
# Clear immortal flag
|
||
|
enemy.immortal = false
|
||
|
end
|
||
|
# Change
|
||
|
if @parameters[1] == 0
|
||
|
enemy.add_state(@parameters[2])
|
||
|
else
|
||
|
enemy.remove_state(@parameters[2])
|
||
|
end
|
||
|
end
|
||
|
# Continue
|
||
|
return true
|
||
|
end
|
||
|
#--------------------------------------------------------------------------
|
||
|
# * Enemy Recover All
|
||
|
#--------------------------------------------------------------------------
|
||
|
def command_334
|
||
|
# Process with iterator
|
||
|
iterate_enemy(@parameters[0]) do |enemy|
|
||
|
# Recover all
|
||
|
enemy.recover_all
|
||
|
end
|
||
|
# Continue
|
||
|
return true
|
||
|
end
|
||
|
#--------------------------------------------------------------------------
|
||
|
# * Enemy Appearance
|
||
|
#--------------------------------------------------------------------------
|
||
|
def command_335
|
||
|
# Get enemy
|
||
|
enemy = $game_troop.enemies[@parameters[0]]
|
||
|
# Clear hidden flag
|
||
|
if enemy != nil
|
||
|
enemy.hidden = false
|
||
|
end
|
||
|
# Continue
|
||
|
return true
|
||
|
end
|
||
|
#--------------------------------------------------------------------------
|
||
|
# * Enemy Transform
|
||
|
#--------------------------------------------------------------------------
|
||
|
def command_336
|
||
|
# Get enemy
|
||
|
enemy = $game_troop.enemies[@parameters[0]]
|
||
|
# Transform processing
|
||
|
if enemy != nil
|
||
|
enemy.transform(@parameters[1])
|
||
|
end
|
||
|
# Continue
|
||
|
return true
|
||
|
end
|
||
|
#--------------------------------------------------------------------------
|
||
|
# * Show Battle Animation
|
||
|
#--------------------------------------------------------------------------
|
||
|
def command_337
|
||
|
# Process with iterator
|
||
|
iterate_battler(@parameters[0], @parameters[1]) do |battler|
|
||
|
# If battler exists
|
||
|
if battler.exist?
|
||
|
# Set animation ID
|
||
|
battler.animation_id = @parameters[2]
|
||
|
end
|
||
|
end
|
||
|
# Continue
|
||
|
return true
|
||
|
end
|
||
|
#--------------------------------------------------------------------------
|
||
|
# * Deal Damage
|
||
|
#--------------------------------------------------------------------------
|
||
|
def command_338
|
||
|
# Get operate value
|
||
|
value = operate_value(0, @parameters[2], @parameters[3])
|
||
|
# Process with iterator
|
||
|
iterate_battler(@parameters[0], @parameters[1]) do |battler|
|
||
|
# If battler exists
|
||
|
if battler.exist?
|
||
|
# Change HP
|
||
|
battler.hp -= value
|
||
|
# If in battle
|
||
|
if $game_temp.in_battle
|
||
|
# Set damage
|
||
|
battler.damage = value
|
||
|
battler.damage_pop = true
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
# Continue
|
||
|
return true
|
||
|
end
|
||
|
#--------------------------------------------------------------------------
|
||
|
# * Force Action
|
||
|
#--------------------------------------------------------------------------
|
||
|
def command_339
|
||
|
# Ignore if not in battle
|
||
|
unless $game_temp.in_battle
|
||
|
return true
|
||
|
end
|
||
|
# Ignore if number of turns = 0
|
||
|
if $game_temp.battle_turn == 0
|
||
|
return true
|
||
|
end
|
||
|
# Process with iterator (For convenience, this process won't be repeated)
|
||
|
iterate_battler(@parameters[0], @parameters[1]) do |battler|
|
||
|
# If battler exists
|
||
|
if battler.exist?
|
||
|
# Set action
|
||
|
battler.current_action.kind = @parameters[2]
|
||
|
if battler.current_action.kind == 0
|
||
|
battler.current_action.basic = @parameters[3]
|
||
|
else
|
||
|
battler.current_action.skill_id = @parameters[3]
|
||
|
end
|
||
|
# Set action target
|
||
|
if @parameters[4] == -2
|
||
|
if battler.is_a?(Game_Enemy)
|
||
|
battler.current_action.decide_last_target_for_enemy
|
||
|
else
|
||
|
battler.current_action.decide_last_target_for_actor
|
||
|
end
|
||
|
elsif @parameters[4] == -1
|
||
|
if battler.is_a?(Game_Enemy)
|
||
|
battler.current_action.decide_random_target_for_enemy
|
||
|
else
|
||
|
battler.current_action.decide_random_target_for_actor
|
||
|
end
|
||
|
elsif @parameters[4] >= 0
|
||
|
battler.current_action.target_index = @parameters[4]
|
||
|
end
|
||
|
# Set force flag
|
||
|
battler.current_action.forcing = true
|
||
|
# If action is valid and [run now]
|
||
|
if battler.current_action.valid? and @parameters[5] == 1
|
||
|
# Set battler being forced into action
|
||
|
$game_temp.forcing_battler = battler
|
||
|
# Advance index
|
||
|
@index += 1
|
||
|
# End
|
||
|
return false
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
# Continue
|
||
|
return true
|
||
|
end
|
||
|
#--------------------------------------------------------------------------
|
||
|
# * Abort Battle
|
||
|
#--------------------------------------------------------------------------
|
||
|
def command_340
|
||
|
# Set battle abort flag
|
||
|
$game_temp.battle_abort = true
|
||
|
# Advance index
|
||
|
@index += 1
|
||
|
# End
|
||
|
return false
|
||
|
end
|
||
|
#--------------------------------------------------------------------------
|
||
|
# * Call Menu Screen
|
||
|
#--------------------------------------------------------------------------
|
||
|
def command_351
|
||
|
# Set battle abort flag
|
||
|
$game_temp.battle_abort = true
|
||
|
# Set menu calling flag
|
||
|
$game_temp.menu_calling = true
|
||
|
# Advance index
|
||
|
@index += 1
|
||
|
# End
|
||
|
return false
|
||
|
end
|
||
|
#--------------------------------------------------------------------------
|
||
|
# * Call Save Screen
|
||
|
#--------------------------------------------------------------------------
|
||
|
def command_352
|
||
|
# Set battle abort flag
|
||
|
$game_temp.battle_abort = true
|
||
|
# Set save calling flag
|
||
|
$game_temp.save_calling = true
|
||
|
# Advance index
|
||
|
@index += 1
|
||
|
# End
|
||
|
return false
|
||
|
end
|
||
|
#--------------------------------------------------------------------------
|
||
|
# * Game Over
|
||
|
#--------------------------------------------------------------------------
|
||
|
def command_353
|
||
|
# Set game over flag
|
||
|
$game_temp.gameover = true
|
||
|
# End
|
||
|
return false
|
||
|
end
|
||
|
#--------------------------------------------------------------------------
|
||
|
# * Return to Title Screen
|
||
|
#--------------------------------------------------------------------------
|
||
|
def command_354
|
||
|
# Set return to title screen flag
|
||
|
$game_temp.to_title = true
|
||
|
# End
|
||
|
return false
|
||
|
end
|
||
|
#--------------------------------------------------------------------------
|
||
|
# * Script
|
||
|
#--------------------------------------------------------------------------
|
||
|
def command_355
|
||
|
# Set first line to script
|
||
|
script = @list[@index].parameters[0] + "\n"
|
||
|
# Loop
|
||
|
loop do
|
||
|
# If next event command is second line of script or after
|
||
|
if @list[@index+1].code == 655
|
||
|
# Add second line or after to script
|
||
|
script += @list[@index+1].parameters[0] + "\n"
|
||
|
# If event command is not second line or after
|
||
|
else
|
||
|
# Abort loop
|
||
|
break
|
||
|
end
|
||
|
# Advance index
|
||
|
@index += 1
|
||
|
end
|
||
|
# Evaluation
|
||
|
#result = eval(script)
|
||
|
# If return value is false
|
||
|
#if result == false
|
||
|
# # End
|
||
|
# return false
|
||
|
#end
|
||
|
# Continue
|
||
|
eval(script)
|
||
|
return true
|
||
|
end
|
||
|
end
|