修复 bug
# @taroxd metadata 1.0
# @display 修复 bug
# @desciption 修复默认系统的一些 bug。详见下方的注释
# @id rgss_bugfix
module Taroxd
  module BugFix
    # Plane#visible 永远返回 true 的 bug。需要主动 include。
    module PlaneVisible

      def initialize(_)
        super
        @__visible = true
      end

      def visible
        @__visible
      end

      def visible=(v)
        @__visible = v
        super
      end
    end
  end
end

class Game_BattlerBase
  # max_tp 不为 100 时,以下两方法返回值错误的 bug
  def tp_rate
    @tp.fdiv(max_tp)
  end

  def regenerate_tp
    self.tp += max_tp * trg
  end
end

class Game_Interpreter
  # 震动画面后等待时间不正确的 bug
  def command_225
    screen.start_shake(@params[0], @params[1], @params[2])
    wait(@params[2]) if @params[3]
  end
end
重复设置事件
# @taroxd metadata 1.0
# @require taroxd_core
# @id render_event
# @display 重复设置事件
# @help 
#     那么这个事件会完全被该地图中的事件 event_id 代替。
#   在事件名称上备注 <render event_id map_id>
#     那么这个事件会完全被地图 map_id 中的事件 event_id 代替。

module Taroxd::RenderEvent

  # 获取地图(RPG::Map)。map_id 为 0 时获取当前地图。
  def self.load_map(map_id)
    case map_id
    when 0, $game_map.map_id
      $game_map.data_object
    when @last_map_id
      @last_map
    else
      @last_map_id = map_id
      @last_map = load_data sprintf("Data/Map%03d.rvdata2", map_id)
    end
  end
end

class RPG::Event

  # 重定义:获取事件页
  def pages
    @rendered_pages ||= rendered_pages
  end

  private

  def rendered_pages
    return @pages unless @name =~ /<render\s+(\d+)(\s+\d+)?>/i
    Taroxd::RenderEvent.load_map($2.to_i).events[$1.to_i].pages
  end

end
删除部分 rescue
# @taroxd metadata 1.0
# @display 删除部分 rescue
# @help 测试模式下,删除默认脚本中的部分 rescue
# @id remove_rescue
module Taroxd
  RemoveRescue = $TEST
end

if Taroxd::RemoveRescue
  class RPG::UsableItem::Damage
    def eval(a, b, v)
      [Kernel.eval(@formula), 0].max * sign
    end
  end

  class << DataManager

    def savedata_exist(index)
      filename = make_filename(index)
      return unless File.exist?(filename)
      block_given? ? yield(filename) : filename
    end

    alias_method :save_game, :save_game_without_rescue

    def load_game(index)
      load_game_without_rescue(index) if savedata_exist(index)
    end

    def load_header(index)
      load_header_without_rescue(index) if savedata_exist(index)
    end

    def delete_save_file(index)
      savedata_exist(index) { |f| File.delete(f) }
    end

    def savefile_time_stamp(index)
      savedata_exist(index) { |f| File.mtime(f) } || Time.at(0)
    end
  end
end