class Interpreter
alias sailcat_clear clear
def clear
sailcat_clear
@line_max = 4 # 信息最大行数
end
#--------------------------------------------------------------------------
# ● 显示文章
#--------------------------------------------------------------------------
def command_101
# 另外的文章已经设置过 message_text 的情况下
if $game_temp.message_text != nil
# 结束
return false
end
# 设置信息结束后待机和返回调用标志
@message_waiting = true
$game_temp.message_proc = Proc.new { @message_waiting = false }
# message_text 设置为第 1 行
$game_temp.message_text = @list[@index].parameters[0] + "\n"
line_count = 1
# 循环
loop do
# 下一个事件指令为文章两行以上的情况
if @list[@index+1].code == 401
# message_text 添加到第 2 行以下
$game_temp.message_text += @list[@index+1].parameters[0] + "\n"
line_count += 1
# 下一个事件指令为显示文章并且是长文的情况
elsif @line_max != 4 and @list[@index+1].code == 101
# 如果文章长度足够
if line_count < @line_max
# message_text 添加到现有文章以后
$game_temp.message_text += @list[@index+1].parameters[0] + "\n"
line_count += 1
# 文章长度不够的情况下
else
# 继续
return true
end
# 事件指令不在文章两行以下的情况
else
# 下一个事件指令为显示选择项的情况下
if @list[@index+1].code == 102
# 如果选择项能收纳在画面里
if @list[@index+1].parameters[0].size <= @line_max - line_count
# 推进索引
@index += 1
# 设置选择项
$game_temp.choice_start = line_count
setup_choices(@list[@index].parameters)
end
# 下一个事件指令为处理输入数值的情况下
elsif @list[@index+1].code == 103
# 如果数值输入窗口能收纳在画面里
if line_count < @line_max
# 推进索引
@index += 1
# 设置输入数值
$game_temp.num_input_start = line_count
$game_temp.num_input_variable_id = @list[@index].parameters[0]
$game_temp.num_input_digits_max = @list[@index].parameters[1]
end
end
# 继续
return true
end
# 推进索引
@index += 1
end
end
#--------------------------------------------------------------------------
# ● 注释
#--------------------------------------------------------------------------
def command_108
# 注释关键字解释
case @parameters[0]
# 长文开始标记
when "LN_start"
if $game_temp.in_battle
@line_max = 4
else
case $game_system.message_position
when 0
@line_max = 12
when 1
@line_max = 8
when 2
@line_max = 4
end
end
# 长文结束标记
when "LN_end"
@line_max = 4
end
# 继续
return true
end
end