by Dargor
Version 1.0
Introduction
This script let your characters have different set of skills like White Magic, Black Magic, Sword Tech, everything you can imagine. You can give a skill as many subsets as you want. The skill subset windows will be activated by a battle command with the same name as the desired subset. So if Skill #82 has the subset 'Black', only the battle command 'Black' will open the skill subset window.
Script
Code:
#==============================================================================
# ** Skill Subsets
#------------------------------------------------------------------------------
# © Dargor, 2008
#Â 06/09/08
#Â Version 1.0
#------------------------------------------------------------------------------
#Â VERSION HISTORY:
#Â Â - 1.0 (07/09/08), Initial release
#------------------------------------------------------------------------------
#Â INTRODUCTION:
#Â Â Â This script let your characters have different set of skills like
#Â Â Â White Magic, Black Magic, Sword Tech, everything you can imagine.
#Â Â Â You can give a skill as many subsets as you want. The skill subset
#Â Â Â windows will be activated by a battle command with the same name
#Â Â Â as the desired subset. So if Skill #82 has the subset 'Black', only
#Â Â Â the battle command 'Black' will open the skill subset window.
#------------------------------------------------------------------------------
#Â INSTRUCTIONS:
#Â Â - Paste this above main
#Â Â - If you are using the Draw Skill script:
#Â Â Â Â 1) Make sure to use Draw Skill version 2.0 or higher
#Â Â Â Â 2) Place the Skill Subsets ABOVE the Draw Skill script
#Â Â - Edit the constants in Skill_Subsets module
#------------------------------------------------------------------------------
#Â NOTES:
#Â Â - This script requires the Custom Commands script version 1.10
#Â Â Â or higher.
#==============================================================================
#==============================================================================
# * Skill Subset Configuration Module
#==============================================================================
Â
module Skill_Subsets
 # Temporary System Data
 $data_system = load_data('Data/System.rvdata')
 # Skill subsets
 # SYNTAX: Skill_ID => [subset1, subset2, subset3, ...]
 Skills = {
      3 => ['Special', Vocab::skill],
      35 => ['White'],
      82 => ['Black']
      }
 # Available skill subsets (commands)
 Subsets = ['White','Black','Special']
 # Default skill subset
 Skills.default = Vocab::skill
end
#==============================================================================
# ** Window_Skill
#------------------------------------------------------------------------------
#Â This window displays a list of usable skills on the skill screen, etc.
#==============================================================================
class Window_Skill < Window_Selectable
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh
  create_data
  create_contents
  for i in 0...@item_max
   draw_item(i)
  end
 end
 #--------------------------------------------------------------------------
 # * Create Data
 #--------------------------------------------------------------------------
 def create_data
  @data = []
  for skill in @actor.skills
   @data.push(skill)
   if skill.id == @actor.last_skill_id
    self.index = @data.size - 1
   end
  end
  @item_max = @data.size
 end
end
#==============================================================================
# ** Window_Skill
#------------------------------------------------------------------------------
#Â This window displays a list of usable skills on the skill screen, etc.
#==============================================================================
class Window_Skill < Window_Selectable
 #--------------------------------------------------------------------------
 # * Get Skill
 #--------------------------------------------------------------------------
 alias dargor_vx_ssubsets_skill_window_initialize initialize
 alias dargor_vx_ssubsets_skill_window_create_data create_data
 #--------------------------------------------------------------------------
 # * Object Initialization
 #   x   : window x-coordinate
 #   y   : window y-coordinate
 #   width : window width
 #   height : window height
 #   actor : actor
 #--------------------------------------------------------------------------
 def initialize(x, y, width, height, actor)
  dargor_vx_ssubsets_skill_window_initialize(x, y, width, height, actor)
  @subset = nil
 end
 #--------------------------------------------------------------------------
 # * Create Data
 #--------------------------------------------------------------------------
 def create_data
  if @subset.nil?
   dargor_vx_ssubsets_skill_window_create_data
   for skill in @actor.skills
    if Skill_Subsets::Skills.has_key?(skill.id) &&
       !Skill_Subsets::Skills[skill.id].include?(Skill_Subsets::Skills.default)
     @data.delete(skill)
    end
   end
  else
   @data = []
   for skill in @actor.skills
    if Skill_Subsets::Skills.has_key?(skill.id) &&
      Skill_Subsets::Skills[skill.id].include?(@subset)
     @data.push(skill)
    end
    if skill.id == @actor.last_skill_id
     self.index = @data.size - 1
    end
   end
  end
  @item_max = @data.size
 end
 #--------------------------------------------------------------------------
 # * Set Subset
 #--------------------------------------------------------------------------
 def set_subset(subset)
  @subset = subset
  refresh
 end
end
#==============================================================================
# ** Scene_Battle
#------------------------------------------------------------------------------
#Â This class performs battle screen processing.
#==============================================================================
class Scene_Battle < Scene_Base
 #--------------------------------------------------------------------------
 # * Alias Listing
 #--------------------------------------------------------------------------
 alias dargor_vx_skill_subsets_battle_actor_command update_actor_command_selection
 #--------------------------------------------------------------------------
 # * Update Actor Command Selection
 #--------------------------------------------------------------------------
 def update_actor_command_selection
  dargor_vx_skill_subsets_battle_actor_command
  if Input.trigger?(Input::C) &&
    Skill_Subsets::Subsets.include?(@actor_command_window.selection)
   Sound.play_decision
   start_skill_subset_command_selection(subset=@actor_command_window.selection)Â
  end
 end
 #--------------------------------------------------------------------------
 # * Start Skill Subset Command Selection
 #--------------------------------------------------------------------------
 def start_skill_subset_command_selection(subset=@actor_command_window.selection)
  @help_window = Window_Help.new
  @skill_window = Window_Skill.new(0, 56, 544, 232, @active_battler)
  @skill_window.set_subset(subset)
  @skill_window.help_window = @help_window
  @actor_command_window.active = false
 end
end
Notes
This script rewrites the refresh method of Window_Skill and creates a new method to create the skill data.
Other scripts modifying the refresh method of Window_Skill might be incompatible with it.
This script also requires the Custom Commands script.
Hope you like it!
-Dargor