Код:
	#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ ◆ Skill Categorizations - KGC_CategorizeSkill ◆ VX ◆
#_/ ◇  Last Update: 03/08/2008
#_/ ◆ Written by TOMY     
#_/ ◆ Translation by Mr. Anonymous                  
#_/ ◆ KGC Site:                                                   
#_/ ◆  http://ytomy.sakura.ne.jp/                                   
#_/ ◆ Translator's Blog:                                             
#_/ ◆  http://mraprojects.wordpress.com     
#_/-----------------------------------------------------------------------------
#_/  Adds a function to the Skills screen which allows the player to display 
#_/  skillss by catagory.
#_/  To assign a category to an skill, you must add <category IDENTIFIER> to the
#_/  notes on the specified item.
#_/  EX. Fire would be listed as <category Offensive Magic> and Dual Strike 
#_/  listed as <category Offensive Skills>, provided you use the default 
#_/  terminology. Parts of this script are untested, however it should work as
#_/  it is just fine. Areas untested will be highlighted by comments.
#_/=============================================================================
#_/ Install: Insert above other skill-related scripts.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
$data_system = load_data("Data/System.rvdata") if $data_system == nil
#==============================================================================#
#                             ★ Customization ★                                #
#==============================================================================#
module KGC
 module CategorizeSkill
  #              ◆ Enable Skill Categorization (Non-Combat) ◆
  #   If this is set to true, the Skill Categories menu will be in effect in
  #   the main skills menu.
  #   If set to false, it will not. If that's the case, you must set 
  #   USE_SAME_MENU to false.
  ENABLE_NOT_IN_BATTLE = true
  #                ◆ Enable Skill Categorization (Combat) ◆
  #   If this is set to true, the Skill Categories menu will be in effect in
  #   the skills menu during battle sequences.
  #   If set to false, it will not. If that's the case, you must set 
  #   USE_SAME_MENU to false.
  ENABLE_IN_BATTLE     = true
  #             ◆ Combat and Non-Combat Categorization Syncronize ◆
  #   If ENABLE_NOT_IN_BATTLE & ENABLE_IN_BATTLE are set to true, set this to
  #   true. Otherwise, set it to false.
  #   Essentially, under the true condition, the Skill Categories menu will be
  #   the same in and out of battle. Under the false condition, you may use 
  #   different categories or text for battle and non-battle menus.
  USE_SAME_CATEGORY = true
  #                    ◆ Automatically Catagorize Skills ◆
  #   If you intend to actually utilize this script, this must be set to true.
  ENABLE_AUTO_CATEGORIZE = true
  #                   ◆ Duplicate Category Entries. ◆
  #  Set to false, items can have multiple categories.
  #  Set to true, items will be classified under the last tag (In the item
  #   database "Notes")
  NOT_ALLOW_DUPLICATE = false
  
  #                  ◆ Recall Skill Category (Combat) ◆
  #   true = Automatically highlight the category of skills last used.
  #   false = Reset to the value in SKILL_DEFAULT_CATEGORY_BATTLE.
  REMEMBER_INDEX_IN_BATTLE = true
  #                    ◆ Vocabulary Modifications ◆
  #                      ◆ Category Identifier ◆ 
  #  Arrange names in order to syncronize a category with the category 
  #  identifier. 
  #  The comments to the right of each identifier are supposed to be how the
  #  RESERVED_CATEGORY_IDENTIFIER sorts extra categories into these fields.
  #  However, this is untested.
  #  These are the default skill catagories translated for future reference.
  #  "Recovery", "Offensive Magic", "Offensive Skills", 
  #  "Assist", "Special Skills", "All Skills" 
  CATEGORY_IDENTIFIER = [
    "Recovery",         # Recovery / Recovery Magic / Recovery Skills
    "Magical",  # Offensive Magic
    "Physical", # Offensive Skills
    "Assist",    # Assist / Assist Magic / Assist Skills
    "Special",   # Special Skills
    "All Skills", # All Skills
  ]
  
  #                     ◆ Default Catagory Display ◆
  #  Affects which category is highlighted by default.
  SKILL_DEFAULT_CATEGORY = "All Skills"
  #                    ◆ Skill Screen Category Name ◆
  #  Allows you to change the names of the skill categories that are displayed
  #  in-game. These must be arranged in the same order as CATAGORY_IDENTIFIER.
  CATEGORY_NAME = [
    "Восстановление",
    "Магические",
    "Физические",
    "Резисторы",
    "Специальные",
    "Все скиллы",
  ]
  #                       ◆ Descriptive Text ◆
  #  This affects the text displayed in the skill description ("help") window.
  #  These must be arranged in the same order as CATAGORY_IDENTIFIER.
  CATEGORY_DESCRIPTION = [
    "Viewing Recovery #{Vocab.skill}.",
    "Viewing Offensive Magic.",
    "Viewing Physical Skills.",
    "Viewing Assist #{Vocab.skill}.",
    "Viewing Special #{Vocab.skill}.",
    "Viewing All #{Vocab.skill}.",
  ]
  #-------------------------- Battle Categories ------------------------------#
  #    You ONLY a need to modify these if USE_SAME_CATEGORY is set to false.  #   
  #---------------------------------------------------------------------------#
  #                 ◆ Battle Category Identifier ◆
  #  Arrange names in order to syncronize a category with the category 
  #  identifier. 
  CATEGORY_IDENTIFIER_BATTLE = [
    "Recovery",
    "Magical",
    "Physical",
    "Assist",
    "Special",
    "All Skills",
  ]
  #                ◆ Default Battle Catagory Display ◆
  #  See DEFAULT_CATEGORY_BATTLE
  SKILL_DEFAULT_CATEGORY_BATTLE = "All Skills"
  #               ◆ Battle Skill Screen Category Name ◆
  #  Allows you to change the names of the skill categories (for battle).
  #  Must be arranged in the same order as CATAGORY_IDENTIFIER.
  CATEGORY_NAME_BATTLE = [
    "Recovery",
    "Magical",
    "Physical",
    "Assist",
    "Special",
    "All Skills",
  ]
  #                 ◆ Battle Skill Descriptive Text ◆
  #  This affects the text displayed in the skill description "help" window.
  #  Must be arranged in the same order as CATAGORY_IDENTIFIER
  CATEGORY_DESCRIPTION_BATTLE = [
    "Viewing Recovery #{Vocab.skill}.",
    "Viewing Offensive Magic.",
    "Viewing Physical Skills.",
    "Viewing Assist #{Vocab.skill}.",
    "Viewing Special #{Vocab.skill}.",
    "Viewing All #{Vocab.skill}.",
  ]
  if USE_SAME_CATEGORY
    # When USE_SAME_CATEGORY = true
    CATEGORY_IDENTIFIER_BATTLE    = CATEGORY_IDENTIFIER
    SKILL_DEFAULT_CATEGORY_BATTLE = SKILL_DEFAULT_CATEGORY
    CATEGORY_NAME_BATTLE          = CATEGORY_NAME
    CATEGORY_DESCRIPTION_BATTLE   = CATEGORY_DESCRIPTION
  end
  # Catagory Window Position Properties
  # ◆ Coordinates of skill description window. [ x, y ]
  CATEGORY_WINDOW_POSITION  = [1, 48]
  # ◆ Number of rows in the skill description window.
  CATEGORY_WINDOW_COLUMNS   = 6
  # ◆ Skill description window column line width.
  CATEGORY_WINDOW_COL_WIDTH = 84
  # ◆ Skill description window column spacer width.
  CATEGORY_WINDOW_COL_SPACE = 1
  # Battle Catagory Window Position Properties
  # ◆ Coordinates of skill description window. [ x, y ]
  CATEGORY_WINDOW_POSITION_BATTLE  = [1, 48]
  # ◆ Number of rows in the skill description window.
  CATEGORY_WINDOW_COLUMNS_BATTLE   = 6
  # ◆ Skill description window column line width.
  CATEGORY_WINDOW_COL_WIDTH_BATTLE = 84
  # ◆ Skill description window column spacer width.
  CATEGORY_WINDOW_COL_SPACE_BATTLE = 1
  end
end
#---------------------- Reserved Categories and Indexes -----------------------#
$imported = {} if $imported == nil
$imported["CategorizeSkill"] = true
module KGC::CategorizeSkill
  # CATEGORY_IDENTIFIER index
  SKILL_DEFAULT_CATEGORY_INDEX =
    CATEGORY_IDENTIFIER.index(SKILL_DEFAULT_CATEGORY)
  # CATEGORY_IDENTIFIER_BATTLE index (Battle)
  SKILL_DEFAULT_CATEGORY_INDEX_BATTLE =
    CATEGORY_IDENTIFIER_BATTLE.index(SKILL_DEFAULT_CATEGORY_BATTLE)
  #                     ◆ Reserved Category Index ◆
  #  To be honest I'm not entirely sure what this affects.
  #  According to the original scripter(s), you can assign these categories to
  #  skills and they'll be sorted automatically into the approperiate category.
  #  However, I haven't tested this. If anyone does, please let me know.
  #  These are the default reserved skill catagories for future reference.
  #  "All Skills", "Recovery", "Recovery Magic", "Recovery Skills", "Attack", 
  #  "Attack Magic", "Attack Skills", "Assist", "Assist Magic", 
  #  "Assist Skills"
  RESERVED_CATEGORIES = [
    "All Skills", "Recovery", "Recovery Magic", "Recovery Skills", "Attack", 
    "Magical", "Physical", "Assist", "Assist Magic", 
    "Assist Skills"
  ]
  # RESERVED_CATEGORY index
  RESERVED_CATEGORY_INDEX = {}
  # RESERVED_CATEGORY_INDEX_BATTLE index (Battle)
  RESERVED_CATEGORY_INDEX_BATTLE = {}
  # 予約カテゴリ index 作成
  RESERVED_CATEGORIES.each { |c|
    RESERVED_CATEGORY_INDEX[c] = CATEGORY_IDENTIFIER.index(c)
    RESERVED_CATEGORY_INDEX_BATTLE[c] = CATEGORY_IDENTIFIER_BATTLE.index(c)
  }
  
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
#  Unless you know what you're doing, it's best not to alter anything beyond  #
#  this point, as this only affects the tags used for "Notes" in database.    #
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
#  Whatever word(s) are after the separator ( | ) in the following lines are 
#   what are used to determine what is searched for in the "Notes" section.
  # Regular Expression Defined
  module Regexp
    # Base Skill Module
    module Skill
      # Catagory Tag String
      CATEGORY = /<(?:CATEGORY|classification|category?)[ ]*(.*)>/i
    end
  end
end
#==============================================================================
# ■ RPG::Skill
#==============================================================================
class RPG::Skill < RPG::UsableItem
  #--------------------------------------------------------------------------
  # ○ スキル分類のキャッシュ生成 (非戦闘時)
  #--------------------------------------------------------------------------
  def create_categorize_skill_cache
    @__skill_category = []
    # 自動振り分け
    if KGC::CategorizeSkill::ENABLE_AUTO_CATEGORIZE
      prefix = auto_categorize_prefix
      if prefix != nil
        suffix = auto_categorize_suffix
        @__skill_category <<
          KGC::CategorizeSkill::RESERVED_CATEGORY_INDEX[prefix]
        @__skill_category <<
          KGC::CategorizeSkill::RESERVED_CATEGORY_INDEX[prefix + suffix]
      end
      @__skill_category.compact!
    end
    # メモ欄
    self.note.split(/[\r\n]+/).each { |line|
      if line =~ KGC::CategorizeSkill::Regexp::Skill::CATEGORY
        # カテゴリ
        c = KGC::CategorizeSkill::CATEGORY_IDENTIFIER.index($1)
        @__skill_category << c if c != nil
      end
    }
    if @__skill_category.empty?
      @__skill_category << KGC::CategorizeSkill::SKILL_DEFAULT_CATEGORY_INDEX
    elsif KGC::CategorizeSkill::NOT_ALLOW_DUPLICATE
      # 最後に指定したカテゴリに配置
      @__skill_category = [@__skill_category.pop]
    end
  end
  #--------------------------------------------------------------------------
  # ○ スキル分類のキャッシュ生成 (戦闘時)
  #--------------------------------------------------------------------------
  def create_categorize_skill_battle_cache
    @__skill_category_battle = []
    # 自動振り分け
    if KGC::CategorizeSkill::ENABLE_AUTO_CATEGORIZE
      prefix = auto_categorize_prefix
      if prefix != nil
        suffix = auto_categorize_suffix
        @__skill_category_battle <<
          KGC::CategorizeSkill::RESERVED_CATEGORY_INDEX_BATTLE[prefix]
        @__skill_category_battle <<
          KGC::CategorizeSkill::RESERVED_CATEGORY_INDEX_BATTLE[prefix + suffix]
      end
      @__skill_category_battle.compact!
    end
    # メモ欄
    self.note.split(/[\r\n]+/).each { |line|
      if line =~ KGC::CategorizeSkill::Regexp::Skill::CATEGORY
        # カテゴリ
        c = KGC::CategorizeSkill::CATEGORY_IDENTIFIER_BATTLE.index($1)
        @__skill_category_battle << c if c != nil
      end
    }
    if @__skill_category_battle.empty?
      @__skill_category_battle <<
        KGC::CategorizeSkill::SKILL_DEFAULT_CATEGORY_INDEX_BATTLE
    elsif KGC::CategorizeSkill::NOT_ALLOW_DUPLICATE
      # 最後に指定したカテゴリに配置
      @__skill_category_battle = [@__skill_category_battle.pop]
    end
  end
  #--------------------------------------------------------------------------
  # ○ 自動振り分け先の接頭辞
  #--------------------------------------------------------------------------
  def auto_categorize_prefix
    if is_recover?
      return "Recovery"
    elsif is_attack?
      return "Attack"
    elsif is_assist?
      return "Assist"
    else
      return nil
    end
  end
  #--------------------------------------------------------------------------
  # ○ 自動振り分け先の接尾辞
  #--------------------------------------------------------------------------
  def auto_categorize_suffix
    return (physical_attack ? "Skill" : "Magic")
  end
  #--------------------------------------------------------------------------
  # ○ 回復スキル判定
  #--------------------------------------------------------------------------
  def is_recover?
    result = for_friend?            # 対象が味方
    result &= (occasion != 3)       # 使用不可でない
    result &= (base_damage < 0) ||  # ダメージ量が負、または
      (plus_state_set.empty? &&     # ステートを付加せずに解除する
       !minus_state_set.empty?)
    return result
  end
  #--------------------------------------------------------------------------
  # ○ 攻撃スキル判定
  #--------------------------------------------------------------------------
  def is_attack?
    result = for_opponent?       # 対象が敵
    result &= battle_ok?         # 戦闘中に使用可能
    result &= (base_damage > 0)  # ダメージ量が正
    return result
  end
  #--------------------------------------------------------------------------
  # ○ 補助スキル判定
  #--------------------------------------------------------------------------
  def is_assist?
    result = (scope != 0)                 # 対象が [なし] 以外
    result &= battle_ok?                  # 戦闘中に使用可能
    result &= !(plus_state_set.empty? &&
      minus_state_set.empty?)             # ステートが変化する
    return result
  end
  #--------------------------------------------------------------------------
  # ○ スキルのカテゴリ (非戦闘時)
  #--------------------------------------------------------------------------
  def skill_category
    create_categorize_skill_cache if @__skill_category == nil
    return @__skill_category
  end
  #--------------------------------------------------------------------------
  # ○ スキルのカテゴリ (戦闘時)
  #--------------------------------------------------------------------------
  def skill_category_battle
    create_categorize_skill_battle_cache if @__skill_category_battle == nil
    return @__skill_category_battle
  end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_writer   :last_skill_category      # カーソル記憶用 : スキルカテゴリ
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     actor_id : アクター ID
  #--------------------------------------------------------------------------
  alias initialize_KGC_CategorizeSkill initialize
  def initialize(actor_id)
    initialize_KGC_CategorizeSkill(actor_id)
    @last_skill_category = 0
  end
  #--------------------------------------------------------------------------
  # ○ カーソル記憶用のカテゴリ取得
  #--------------------------------------------------------------------------
  def last_skill_category
    @last_skill_category = 0 if @last_skill_category == nil
    return @last_skill_category
  end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Window_Skill
#==============================================================================
class Window_Skill < Window_Selectable
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_reader   :category                 # カテゴリ
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #     x      : ウィンドウの X 座標
  #     y      : ウィンドウの Y 座標
  #     width  : ウィンドウの幅
  #     height : ウィンドウの高さ
  #     actor  : アクター
  #--------------------------------------------------------------------------
  alias initialize_KGC_CategorizeSkill initialize
  def initialize(x, y, width, height, actor)
    @category = 0
    initialize_KGC_CategorizeSkill(x, y, width, height, actor)
  end
  #--------------------------------------------------------------------------
  # ○ カテゴリ設定
  #--------------------------------------------------------------------------
  def category=(value)
    @category = value
    refresh
  end
  #--------------------------------------------------------------------------
  # ○ スキルをリストに含めるかどうか
  #     skill : スキル
  #--------------------------------------------------------------------------
  unless $@
    alias include_KGC_CategorizeSkill? include? if method_defined?(:include?)
  end
  def include?(skill)
    return false if skill == nil
    if defined?(include_KGC_CategorizeSkill?)
      return false unless include_KGC_CategorizeSkill?(skill)
    end
    # 分類しない場合は含める
    if $game_temp.in_battle
      return true unless KGC::CategorizeSkill::ENABLE_IN_BATTLE
      reserved_index = KGC::CategorizeSkill::RESERVED_CATEGORY_INDEX_BATTLE
      skill_category = skill.skill_category_battle
    else
      return true unless KGC::CategorizeSkill::ENABLE_NOT_IN_BATTLE
      reserved_index = KGC::CategorizeSkill::RESERVED_CATEGORY_INDEX
      skill_category = skill.skill_category
    end
    # 「全種」なら含める
    return true if @category == reserved_index["All Skills"]
    # カテゴリ一致判定
    return (skill_category.include?(@category))
  end
  #--------------------------------------------------------------------------
  # ● リフレッシュ
  #--------------------------------------------------------------------------
  def refresh
    @data = []
    for skill in @actor.skills
      next unless include?(skill)
      @data.push(skill)
      if skill.id == @actor.last_skill_id
        self.index = @data.size - 1
      end
    end
    @item_max = @data.size
    create_contents
    for i in 0...@item_max
      draw_item(i)
    end
  end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# □ Window_SkillCategory
#------------------------------------------------------------------------------
#  スキル画面でカテゴリ選択を行うウィンドウです。
#==============================================================================
class Window_SkillCategory < Window_Command
  #--------------------------------------------------------------------------
  # ● オブジェクト初期化
  #--------------------------------------------------------------------------
  def initialize
    if $game_temp.in_battle
      cols = KGC::CategorizeSkill::CATEGORY_WINDOW_COLUMNS_BATTLE
      width = KGC::CategorizeSkill::CATEGORY_WINDOW_COL_WIDTH_BATTLE
      space = KGC::CategorizeSkill::CATEGORY_WINDOW_COL_SPACE_BATTLE
      commands = KGC::CategorizeSkill::CATEGORY_NAME_BATTLE
      position = KGC::CategorizeSkill::CATEGORY_WINDOW_POSITION_BATTLE
    else
      cols = KGC::CategorizeSkill::CATEGORY_WINDOW_COLUMNS
      width = KGC::CategorizeSkill::CATEGORY_WINDOW_COL_WIDTH
      space = KGC::CategorizeSkill::CATEGORY_WINDOW_COL_SPACE
      commands = KGC::CategorizeSkill::CATEGORY_NAME
      position = KGC::CategorizeSkill::CATEGORY_WINDOW_POSITION
    end
    width = width * cols + 32
    width += (cols - 1) * space
    super(width, commands, cols, 0, space)
    self.x = position[0]
    self.y = position[1]
    self.z = 1000
    self.index = 0
  end
  #--------------------------------------------------------------------------
  # ● ヘルプテキスト更新
  #--------------------------------------------------------------------------
  def update_help
    if $game_temp.in_battle
      text = KGC::CategorizeSkill::CATEGORY_DESCRIPTION[self.index]
    else
      text = KGC::CategorizeSkill::CATEGORY_DESCRIPTION_BATTLE[self.index]
    end
    @help_window.set_text(text)
  end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_Skill
#==============================================================================
if KGC::CategorizeSkill::ENABLE_NOT_IN_BATTLE
class Scene_Skill < Scene_Base
  #--------------------------------------------------------------------------
  # ● 開始処理
  #--------------------------------------------------------------------------
  alias start_KGC_CategorizeSkill start
  def start
    start_KGC_CategorizeSkill
    @category_window = Window_SkillCategory.new
    @category_window.help_window = @help_window
    show_category_window
  end
  #--------------------------------------------------------------------------
  # ● 終了処理
  #--------------------------------------------------------------------------
  alias terminate_KGC_CategorizeSkill terminate
  def terminate
    terminate_KGC_CategorizeSkill
    @category_window.dispose
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias update_KGC_CategorizeSkill update
  def update
    @category_window.update
    update_KGC_CategorizeSkill
    if @category_window.active
      update_category_selection
    end
  end
  #--------------------------------------------------------------------------
  # ○ カテゴリ選択の更新
  #--------------------------------------------------------------------------
  def update_category_selection
    unless @category_activated
      @category_activated = true
      return
    end
    # 選択カテゴリー変更
    if @last_category_index != @category_window.index
      @skill_window.category = @category_window.index
      @skill_window.refresh
      @last_category_index = @category_window.index
    end
    if Input.trigger?(Input::B)
      Sound.play_cancel
      return_scene
    elsif Input.trigger?(Input::C)
      Sound.play_decision
      hide_category_window
    elsif Input.trigger?(Input::R)
      Sound.play_cursor
      next_actor
    elsif Input.trigger?(Input::L)
      Sound.play_cursor
      prev_actor
    end
  end
  #--------------------------------------------------------------------------
  # ● スキル選択の更新
  #--------------------------------------------------------------------------
  alias update_skill_selection_KGC_CategorizeSkill update_skill_selection
  def update_skill_selection
    if Input.trigger?(Input::B)
      Sound.play_cancel
      show_category_window
      return
    elsif Input.trigger?(Input::R) || Input.trigger?(Input::L)
      # 何もしない
      return
    end
    update_skill_selection_KGC_CategorizeSkill
  end
  #--------------------------------------------------------------------------
  # ○ カテゴリウィンドウの表示
  #--------------------------------------------------------------------------
  def show_category_window
    @category_window.open
    @category_window.active = true
    @skill_window.active = false
  end
  #--------------------------------------------------------------------------
  # ○ カテゴリウィンドウの非表示
  #--------------------------------------------------------------------------
  def hide_category_window
    @category_activated = false
    @category_window.close
    @category_window.active = false
    @skill_window.active = true
    # スキルウィンドウのインデックスを調整
    if @skill_window.index >= @skill_window.item_max
      @skill_window.index = [@skill_window.item_max - 1, 0].max
    end
  end
end
end
#★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
#==============================================================================
# ■ Scene_Battle
#==============================================================================
if KGC::CategorizeSkill::ENABLE_IN_BATTLE
class Scene_Battle < Scene_Base
  #--------------------------------------------------------------------------
  # ● スキル選択の開始
  #--------------------------------------------------------------------------
  alias start_skill_selection_KGC_CategorizeSkill start_skill_selection
  def start_skill_selection
    start_skill_selection_KGC_CategorizeSkill
    # カテゴリウィンドウを作成
    @category_window = Window_SkillCategory.new
    @category_window.help_window = @help_window
    @category_window.z = @help_window.z + 10
    @skill_window.active = false
    # 記憶していたカテゴリを復元
    if KGC::CategorizeSkill::REMEMBER_INDEX_IN_BATTLE
      @category_window.index = @active_battler.last_skill_category
      @skill_window.category = @category_window.index
      @skill_window.refresh
    end
  end
  #--------------------------------------------------------------------------
  # ● スキル選択の終了
  #--------------------------------------------------------------------------
  alias end_skill_selection_KGC_CategorizeSkill end_skill_selection
  def end_skill_selection
    if @category_window != nil
      @category_window.dispose
      @category_window = nil
    end
    end_skill_selection_KGC_CategorizeSkill
  end
  #--------------------------------------------------------------------------
  # ● スキル選択の更新
  #--------------------------------------------------------------------------
  alias update_skill_selection_KGC_CategorizeSkill update_skill_selection
  def update_skill_selection
    @category_window.update
    if @category_window.active
      update_skill_category_selection
      return
    elsif Input.trigger?(Input::B)
      Sound.play_cancel
      show_category_window
      return
    end
    update_skill_selection_KGC_CategorizeSkill
  end
  #--------------------------------------------------------------------------
  # ● スキルの決定
  #--------------------------------------------------------------------------
  alias determine_skill_KGC_CategorizeSkill determine_skill
  def determine_skill
    # 選択したカテゴリを記憶
    if KGC::CategorizeSkill::REMEMBER_INDEX_IN_BATTLE && @category_window != nil
      @active_battler.last_skill_category = @category_window.index
    end
    determine_skill_KGC_CategorizeSkill
  end
  #--------------------------------------------------------------------------
  # ○ スキルのカテゴリ選択の更新
  #--------------------------------------------------------------------------
  def update_skill_category_selection
    @help_window.update
    # 選択カテゴリー変更
    if @last_category_index != @category_window.index
      @skill_window.category = @category_window.index
      @skill_window.refresh
      @last_category_index = @category_window.index
    end
    if Input.trigger?(Input::B)
      Sound.play_cancel
      end_skill_selection
    elsif Input.trigger?(Input::C)
      Sound.play_decision
      hide_category_window
    end
  end
  #--------------------------------------------------------------------------
  # ○ カテゴリウィンドウの表示
  #--------------------------------------------------------------------------
  def show_category_window
    @category_window.open
    @category_window.active = true
    @skill_window.active = false
  end
  #--------------------------------------------------------------------------
  # ○ カテゴリウィンドウの非表示
  #--------------------------------------------------------------------------
  def hide_category_window
    @category_activated = false
    @category_window.close
    @category_window.active = false
    @skill_window.active = true
    # スキルウィンドウのインデックスを調整
    if @skill_window.index >= @skill_window.item_max
      @skill_window.index = [@skill_window.item_max - 1, 0].max
    end
  end
end
end
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/  The original untranslated version of this script can be found here:
# http://f44.aaa.livedoor.jp/~ytomy/tk...ategorize_item
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
 
						
Социальные закладки