Lonewulf123

Veteran
Veteran
Joined
Oct 13, 2014
Messages
362
Reaction score
102
First Language
Enlish
Hello,

I'm using Yami Skill Equip and i'm hitting a hurdle when trying to use Forced Actions with my party.

Basically, the forced actions I'm trying to get the party to use are skills that they don't know in their movesets.

So whenever I try to call this force action with a script call I get the following error:
1662907819487.png

which refers me to this line:

1662907864478.png

I'm pretty sure the issue is that it's not finding the skill within the equipped skills, but I'm not sure how to address.

I tried the <non equipped skills> tag but that didn't work.

Can someone help me get around this hurdle? Is there anyway to call a forced action without having that specific skill equipped?

My only other solution would be maybe to have every single forced action learned by the player characters and then hide those skills so they aren't selected or shown in the menu, but it doesn't really feel like a clean solution.

Yami's Skill Equip for reference
Ruby:
#==============================================================================
#
# �� Yami Engine Symphony - Skill Equip
# -- Last Updated: 2013.01.02
# -- Level: Easy
# -- Requires: n/a
#
#==============================================================================

$imported = {} if $imported.nil?
$imported["YES-SkillEquip"] = true

#==============================================================================
# �� Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2013.01.02 - Fixed: Added Skills.
#            - Added: Non equip skill, notetag: <non equip skill>.
#              Non equip skills will always be usable in battle.
# 2012.12.17 - Fixed: Big slots list.
# 2012.12.12 - Fixed: Reverting slots issue.
# 2012.12.08 - Compatible with: YEA - Victory Aftermath.
# 2012.12.05 - Finished Script.
# 2012.12.03 - Started Script.
#
#==============================================================================
# �� Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script requires the player to make decisions as to which skills to bring
# into battle for each character.
#
#==============================================================================
# �� Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To install this script, open up your script editor and copy/paste this script
# to an open slot below �� Materials/�f�� but above �� Main. Remember to save.
#
#==============================================================================
# �� Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjustments.
#
#==============================================================================

#==============================================================================
# �� Configuration
#==============================================================================

module YES
  module SKILL_EQUIP
    
    #===========================================================================
    # - Basic Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # The following below will adjust the basic ruleset that the skill equip
    # system will use. Visual settings will also be adjusted here.
    #===========================================================================
    COMMAND = "Equip Skill"     # This is the category title that appears for
                                # the skill equip option.
    EQUIP_SKILL_SWITCH = 43     # This switch must be enabled in order for the
                                # Equip Skill command to appear in the skill menu.
    
    # These are the visual settings used when a skill isn't equipped.
    EMPTY_SKILL_HELP = "No skill is equipped in this slot.\n
                        Press Enter to assign skill."
    EMPTY_SKILL_TEXT = "<Empty Slot>"        # Text used for no skill equipped.
    EMPTY_SKILL_ICON = 185                   # Icon used for no skill equipped.
    
    # This constant adjusts the default maximum amount of equipped skills that
    # an actor can have without modifications.
    DEFAULT_MAX_EQUIPS = 6
    
    #===========================================================================
    # - Description Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # The following below will adjust the description window, which includes
    # skill's properties and description.
    # Here's the list of default properties:
    # -------------------------------------------------------------------------
    # :symbol          Description
    # -------------------------------------------------------------------------
    # :stype           Skill Type.
    # :cost            Skill Cost.
    # :speed           Speed Fix.
    # :success         Success Rate.
    #===========================================================================
    
    # Default displayed properties of each skill.
    DEFAULT_PROPERTIES = [ # Start.
        :stype,   # Skill Type
        :cost,    # Mana/TP Cost
        :speed,   # Speed Fix
        :success, # Success Rate
    ] # End.
    
    # Default displaying texts for properties.
    PROPERTIES = { # Start.
      :stype    =>  "Skill Type",
      :cost     =>  "Skill Cost",
      :speed    =>  "Priority",
      :success  =>  "Hit Rate",
    } # End.
    
  end
end

#==============================================================================
# �� Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================

#==============================================================================
# �� Regular Expression
#==============================================================================

module REGEXP
  module SKILL_EQUIP
    MAX_EQUIPS = /<(?:SKILL_SLOTS|skill slots):[ ]*(\d+)>/i
    CHANGE_EQUIPS  = /<(?:CHANGE_SLOTS|change slots):[ ]*([\+\-]?\d+)>/i
    VALUE_DESCRIPTION  = /<(?:SKILL_INFO|skill info)[ ](.*):[ ]*(.*)>/i
    NON_EQUIP = /<(?:NON_EQUIP_SKILL|non equip skill)>/i
  end # SKILL_EQUIP
end # REGEXP

#==============================================================================
# �� DataManager
#==============================================================================

module DataManager
    
  #--------------------------------------------------------------------------
  # alias method: load_database
  #--------------------------------------------------------------------------
  class <<self; alias load_database_skill_equip load_database; end
  def self.load_database
    load_database_skill_equip
    initialize_skill_equip
  end
 
  #--------------------------------------------------------------------------
  # alias method: create_game_objects
  #--------------------------------------------------------------------------
  class <<self; alias create_game_objects_skill_equip create_game_objects; end
  def self.create_game_objects
    create_game_objects_skill_equip
    $game_switches[YES::SKILL_EQUIP::EQUIP_SKILL_SWITCH] = true
  end
 
  #--------------------------------------------------------------------------
  # new method: initialize_skill_equip
  #--------------------------------------------------------------------------
  def self.initialize_skill_equip
    groups = [$data_actors, $data_classes, $data_weapons, $data_armors, $data_skills]
    groups.each { |group|
      group.each { |obj|
        next if obj.nil?
        obj.initialize_skill_equip
      }
    }
  end
 
end # DataManager

#==============================================================================
# �� RPG::BaseItem
#==============================================================================

class RPG::BaseItem
 
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_accessor :skill_slots
  attr_accessor :change_slots
  attr_accessor :slot_properties
  attr_accessor :non_equip_skill

  #--------------------------------------------------------------------------
  # new method: initialize_skill_equip
  #--------------------------------------------------------------------------
  def initialize_skill_equip
    @change_slots = 0
    @slot_properties = []
    self.note.split(/[\r\n]+/).each { |line|
      case line
      when REGEXP::SKILL_EQUIP::MAX_EQUIPS
        @skill_slots = $1.to_i
      when REGEXP::SKILL_EQUIP::CHANGE_EQUIPS
        @change_slots = $1.to_i
      when REGEXP::SKILL_EQUIP::VALUE_DESCRIPTION
        @slot_properties.push([$1.to_s, $2.to_s])
      when REGEXP::SKILL_EQUIP::NON_EQUIP
        @non_equip_skill = true
      end
    }
  end
 
end # RPG::BaseItem

#==============================================================================
# �� Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
 
  #--------------------------------------------------------------------------
  # * Public Instance Variables
  #--------------------------------------------------------------------------
  attr_reader :equip_skills

  #--------------------------------------------------------------------------
  # alias method: setup
  #--------------------------------------------------------------------------
  alias yes_skill_equip_setup setup
  def setup(actor_id)
    yes_skill_equip_setup(actor_id)
    correct_equip_skills
  end
 
  #--------------------------------------------------------------------------
  # alias method: refresh
  #--------------------------------------------------------------------------
  alias yes_skill_equip_refresh refresh
  def refresh
    yes_skill_equip_refresh
    correct_equip_skills
    correct_skill_slots
  end
 
  #--------------------------------------------------------------------------
  # new method: base_skill_slots
  #--------------------------------------------------------------------------
  def base_skill_slots
    array = [self.class.skill_slots, self.actor.skill_slots]
    default = YES::SKILL_EQUIP::DEFAULT_MAX_EQUIPS
    array.compact.size > 0 ? array.compact[0] : default
  end
 
  #--------------------------------------------------------------------------
  # new method: change_slots
  #--------------------------------------------------------------------------
  def change_slots
    array = self.equips + [self.class, self.actor]
    array.compact.inject(0) { |r, o| r += o.change_slots }
  end
 
  #--------------------------------------------------------------------------
  # new method: skill_slots
  #--------------------------------------------------------------------------
  def skill_slots
    [base_skill_slots + change_slots, 0].max
  end

  #--------------------------------------------------------------------------
  # new method: correct_skill_slots
  #--------------------------------------------------------------------------
  def correct_skill_slots
    if @equip_skills.size < skill_slots
      @equip_skills = @equip_skills + Array.new(skill_slots - @equip_skills.size, 0)
    else
      @equip_skills = @equip_skills[0, skill_slots]
    end
  end
 
  #--------------------------------------------------------------------------
  # new method: correct_equip_skills
  #--------------------------------------------------------------------------
  def correct_equip_skills
    if @equip_skills.nil?
      @equip_skills = Array.new(skill_slots, 0)
      #---
      j = 0
      all_skills.each_index { |i|
        break if i == @equip_skills.size
        while all_skills[j] && $data_skills[all_skills[j]].non_equip_skill
          j += 1
        end
        @equip_skills[i] = all_skills[j]
        j += 1
      }
    end
    #---
    @equip_skills.each_index { |i|
      id = @equip_skills[i]
      next if id == 0
      @equip_skills[i] = 0 unless all_skills.include?(id)
    }
  end
 
  #--------------------------------------------------------------------------
  # new method: all_skills
  #--------------------------------------------------------------------------
  def all_skills
    (@skills | added_skills).sort
  end
 
  #--------------------------------------------------------------------------
  # new method: equip_skill
  #--------------------------------------------------------------------------
  def equip_skill(index, id)
    return false unless skill_equippable?(id)
    if @equip_skills.include?(id) && id != 0
      @equip_skills[@equip_skills.index(id)] = @equip_skills[index]
    end
    @equip_skills[index] = id
  end
 
  #--------------------------------------------------------------------------
  # new method: skill_equippable?
  #--------------------------------------------------------------------------
  def skill_equippable?(id)
    return true
  end
 
  #--------------------------------------------------------------------------
  # new method: equipped_skills
  #--------------------------------------------------------------------------
  def equipped_skills
    @equip_skills.select{|id|id != 0}.collect{|id|$data_skills[id]} + yes_skill_equip_skills.select{|s|s.non_equip_skill}
  end

  #--------------------------------------------------------------------------
  # alias method: skills
  # Overwrite in Battle
  #--------------------------------------------------------------------------
  alias yes_skill_equip_skills skills
  def skills
    if $game_party.in_battle && !$game_troop.all_dead?
      return equipped_skills + yes_skill_equip_skills.select{|s|s.non_equip_skill}
    else
      return yes_skill_equip_skills
    end
  end
    
end # Game_Actor

#==============================================================================
# �� Window_SkillSlots
#==============================================================================

class Window_SkillSlots < Window_Selectable
    
  #--------------------------------------------------------------------------
  # initialize
  #--------------------------------------------------------------------------
  def initialize(x, y, height)
    super(x, y, Graphics.width / 2, height)
    self.index = 0
    self.hide
  end
 
  #--------------------------------------------------------------------------
  # item_max
  #--------------------------------------------------------------------------
  def item_max
    @actor.nil? ? 1 : @actor.skill_slots
  end
 
  #--------------------------------------------------------------------------
  # current_item_enabled?
  #--------------------------------------------------------------------------
  def current_item_enabled?
    @actor && @actor.skill_slots > 0
  end
 
  #--------------------------------------------------------------------------
  # actor=
  #--------------------------------------------------------------------------
  def actor=(actor)
    return if @actor == actor
    @actor = actor
    update_padding
    create_contents
    refresh
    self.oy = 0
    @index = 0
  end
 
  #--------------------------------------------------------------------------
  # draw_item
  #--------------------------------------------------------------------------
  def draw_item(index)
    skill_id = @actor.equip_skills[index]
    #---
    return if skill_id.nil?
    reset_font_settings
    draw_item_none(index) if skill_id <= 0
    draw_item_name(index, skill_id) if skill_id > 0
  end
 
  #--------------------------------------------------------------------------
  # draw_item_none
  #--------------------------------------------------------------------------
  def draw_item_none(index)
    rect = item_rect(index)
    #---
    change_color(normal_color, false)
    draw_icon(YES::SKILL_EQUIP::EMPTY_SKILL_ICON, rect.x, rect.y, false)
    rect.x += 24
    draw_text(rect, YES::SKILL_EQUIP::EMPTY_SKILL_TEXT, 0)
  end
 
  #--------------------------------------------------------------------------
  # draw_item_name
  #--------------------------------------------------------------------------
  def draw_item_name(index, skill_id, enabled = true)
    rect = item_rect(index)
    item = $data_skills[skill_id]
    #---
    change_color(normal_color, enabled)
    draw_icon(item.icon_index, rect.x, rect.y, enabled)
    rect.x += 24
    draw_text(rect, item.name, 0)
  end
 
  #--------------------------------------------------------------------------
  # propertise_window=
  #--------------------------------------------------------------------------
  def properties_window=(properties_window)
    @properties_window = properties_window
    id = @actor.equip_skills[index]
    item = id.nil? ? nil : $data_skills[id]
    @properties_window.set_item(item)
  end
 
  #--------------------------------------------------------------------------
  # update_help
  #--------------------------------------------------------------------------
  def update_help
    id = @actor.equip_skills[index]
    item = id.nil? ? nil : $data_skills[id]
    empty_text = YES::SKILL_EQUIP::EMPTY_SKILL_HELP
    item.nil? ? @help_window.set_text(empty_text) : @help_window.set_item(item)
    @properties_window.set_item(item) if @properties_window
  end
 
end # Window_SkillSlots

#==============================================================================
# �� Window_SkillList_Equip
#==============================================================================

class Window_SkillList_Equip < Window_SkillList
 
  #--------------------------------------------------------------------------
  # initialize
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height)
    super
    self.hide
    self.index = 0
  end
 
  #--------------------------------------------------------------------------
  # col_max
  #--------------------------------------------------------------------------
  def col_max
    return 1
  end
 
  #--------------------------------------------------------------------------
  # enable?
  #--------------------------------------------------------------------------
  def enable?(item)
    @actor
  end
 
  #--------------------------------------------------------------------------
  # include?
  #--------------------------------------------------------------------------
  def include?(item)
    item
  end
 
  #--------------------------------------------------------------------------
  # make_item_list
  #--------------------------------------------------------------------------
  def make_item_list
    super
    @data = [0] + @data.select{|s|!s.non_equip_skill}
  end
 
  #--------------------------------------------------------------------------
  # draw_item
  #--------------------------------------------------------------------------
  def draw_item(index)
    skill = @data[index]
    if skill && skill.is_a?(RPG::Skill)
      rect = item_rect(index)
      rect.width -= 4
      draw_item_name(skill, rect.x, rect.y, enable?(skill))
    else
      rect = item_rect(index)
      rect.width -= 4
      change_color(normal_color, false)
      draw_icon(YES::SKILL_EQUIP::EMPTY_SKILL_ICON, rect.x, rect.y, false)
      rect.x += 24
      draw_text(rect, YES::SKILL_EQUIP::EMPTY_SKILL_TEXT, 0)
    end
  end
 
  #--------------------------------------------------------------------------
  # item
  #--------------------------------------------------------------------------
  def item
    @data && @data[index] == 0 ? @data[index] : super
  end
 
  #--------------------------------------------------------------------------
  # properties_window=
  #--------------------------------------------------------------------------
  def properties_window=(properties_window)
    @properties_window = properties_window
  end
 
  #--------------------------------------------------------------------------
  # update_help
  #--------------------------------------------------------------------------
  def update_help
    empty_text = YES::SKILL_EQUIP::EMPTY_SKILL_HELP
    item == 0 ? @help_window.set_text(empty_text) : @help_window.set_item(item)
    @properties_window.set_item(item) if @properties_window
  end
 
end # Window_SkillList_Equip

#==============================================================================
# �� Window_Properties_Slot
#==============================================================================

class Window_Properties_Slot < Window_Base
 
  #--------------------------------------------------------------------------
  # initialize
  #--------------------------------------------------------------------------
  def initialize(x, y, width, height)
    super(x, y, width, height)
    @item = nil
    @actor = nil
    self.hide
    refresh
  end
 
  #--------------------------------------------------------------------------
  # refresh
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    return unless @actor
    if @item.nil? || @item == 0
      reset_font_settings
      change_color(normal_color, false)
      draw_icon(YES::SKILL_EQUIP::EMPTY_SKILL_ICON, 0, 0, false)
      draw_text(24, 0, contents.width, line_height, YES::SKILL_EQUIP::EMPTY_SKILL_TEXT)
    end
    return if @item.nil? || @item == 0
    reset_font_settings
    #---
    draw_item_name(@item, 0, 0)
    #---
    i = 0; hash = YES::SKILL_EQUIP::DEFAULT_PROPERTIES
    contents.font.size -= 2
    hash.each { |p| h = (i + 1) * line_height
      case p
      when :stype
        draw_skill_type(h)
      when :cost
        draw_skill_cost(h)
      when :speed
        draw_skill_speed(h)
      when :success
        draw_skill_rate(h)
      end
      i += 1
    }
    #---
    i = hash.size
    @item.slot_properties.each { |a| h = (i + 1) * line_height
      draw_skill_properties(a, h)
      i += 1 }
  end
    
  #--------------------------------------------------------------------------
  # draw_skill_type
  #--------------------------------------------------------------------------
  def draw_skill_type(y)
    w = contents.width
    change_color(system_color)
    draw_text(0, y, w, line_height, YES::SKILL_EQUIP::PROPERTIES[:stype])
    change_color(normal_color)
    draw_text(0, y, w, line_height, $data_system.skill_types[@item.stype_id], 2)
  end
 
  #--------------------------------------------------------------------------
  # draw_skill_cost
  #--------------------------------------------------------------------------
  def draw_skill_cost(h)
    if $imported["YEA-SkillCostManager"]
      draw_skill_cost_advanced(h)
    else
      rect = Rect.new(0,h,contents.width,line_height)
      #---
      change_color(system_color)
      draw_text(rect, YES::SKILL_EQUIP::PROPERTIES[:cost])
      #---
      if @actor.skill_tp_cost(@item) > 0
        change_color(tp_cost_color)
        text = @actor.skill_tp_cost(@item).to_s + Vocab.tp_a
        draw_text(rect, text, 2)
        rect.width -= text_size(text).width + 4
      end
      #---
      if @actor.skill_mp_cost(@item) > 0
        change_color(mp_cost_color)
        text = @actor.skill_mp_cost(@item).to_s + Vocab.mp_a
        draw_text(rect, text, 2)
      end
    end
  end
 
  #--------------------------------------------------------------------------
  # draw_skill_cost_advanced
  #--------------------------------------------------------------------------
  def draw_skill_cost_advanced(h)
    rect = Rect.new(0,h,contents.width,line_height)
    #---
    change_color(system_color)
    draw_text(rect, YES::SKILL_EQUIP::PROPERTIES[:cost])
    #---
    draw_tp_skill_cost(rect, @item) unless $imported["YEA-BattleEngine"]
    draw_mp_skill_cost(rect, @item)
    draw_tp_skill_cost(rect, @item) if $imported["YEA-BattleEngine"]
    draw_hp_skill_cost(rect, @item)
    draw_gold_skill_cost(rect, @item)
    draw_custom_skill_cost(rect, @item)
  end
 
  #--------------------------------------------------------------------------
  # draw_skill_speed
  #--------------------------------------------------------------------------
  def draw_skill_speed(y)
    w = contents.width
    change_color(system_color)
    draw_text(0, y, w, line_height, YES::SKILL_EQUIP::PROPERTIES[:speed])
    change_color(normal_color)
    draw_text(0, y, w, line_height, @item.speed.to_s, 2)
  end
 
  #--------------------------------------------------------------------------
  # draw_skill_rate
  #--------------------------------------------------------------------------
  def draw_skill_rate(y)
    w = contents.width
    change_color(system_color)
    draw_text(0, y, w, line_height, YES::SKILL_EQUIP::PROPERTIES[:success])
    change_color(normal_color)
    draw_text(0, y, w, line_height, @item.success_rate.to_s + "%", 2)
  end
 
  #--------------------------------------------------------------------------
  # draw_skill_properties
  #--------------------------------------------------------------------------
  def draw_skill_properties(a, y)
    w = contents.width
    change_color(system_color)
    draw_text(0, y, w, line_height, a[0])
    change_color(normal_color)
    draw_text(0, y, w, line_height, a[1], 2)
  end
 
  #--------------------------------------------------------------------------
  # set_item
  #--------------------------------------------------------------------------
  def set_item(item)
    if @item != item
      @item = item
      refresh
    end
  end
 
  #--------------------------------------------------------------------------
  # actor=
  #--------------------------------------------------------------------------
  def actor=(actor)
    @actor = actor
  end
 
  #--------------------------------------------------------------------------
  # Yanfly Engine Ace - Skill Cost Manager
  #--------------------------------------------------------------------------
  if $imported["YEA-SkillCostManager"]
    #--------------------------------------------------------------------------
    # new method: draw_mp_skill_cost
    #--------------------------------------------------------------------------
    def draw_mp_skill_cost(rect, skill)
      return unless @actor.skill_mp_cost(skill) > 0
      contents.font.size -= 2
      change_color(mp_cost_color)
      #---
      icon = Icon.mp_cost
      if icon > 0
        draw_icon(icon, rect.x + rect.width-24, rect.y)
        rect.width -= 24
      end
      #---
      contents.font.size = YEA::SKILL_COST::MP_COST_SIZE
      cost = @actor.skill_mp_cost(skill)
      text = sprintf(YEA::SKILL_COST::MP_COST_SUFFIX, cost.group)
      draw_text(rect, text, 2)
      cx = text_size(text).width + 4
      rect.width -= cx
      reset_font_settings
    end
    
    #--------------------------------------------------------------------------
    # new method: draw_tp_skill_cost
    #--------------------------------------------------------------------------
    def draw_tp_skill_cost(rect, skill)
      return unless @actor.skill_tp_cost(skill) > 0
      contents.font.size -= 2
      change_color(tp_cost_color)
      #---
      icon = Icon.tp_cost
      if icon > 0
        draw_icon(icon, rect.x + rect.width-24, rect.y)
        rect.width -= 24
      end
      #---
      contents.font.size = YEA::SKILL_COST::TP_COST_SIZE
      cost = @actor.skill_tp_cost(skill)
      text = sprintf(YEA::SKILL_COST::TP_COST_SUFFIX, cost.group)
      draw_text(rect, text, 2)
      cx = text_size(text).width + 4
      rect.width -= cx
      reset_font_settings
    end
    
    #--------------------------------------------------------------------------
    # new method: draw_hp_skill_cost
    #--------------------------------------------------------------------------
    def draw_hp_skill_cost(rect, skill)
      return unless @actor.skill_hp_cost(skill) > 0
      contents.font.size -= 2
      change_color(hp_cost_color)
      #---
      icon = Icon.hp_cost
      if icon > 0
        draw_icon(icon, rect.x + rect.width-24, rect.y)
        rect.width -= 24
      end
      #---
      contents.font.size = YEA::SKILL_COST::HP_COST_SIZE
      cost = @actor.skill_hp_cost(skill)
      text = sprintf(YEA::SKILL_COST::HP_COST_SUFFIX, cost.group)
      draw_text(rect, text, 2)
      cx = text_size(text).width + 4
      rect.width -= cx
      reset_font_settings
    end
    
    #--------------------------------------------------------------------------
    # new method: draw_gold_skill_cost
    #--------------------------------------------------------------------------
    def draw_gold_skill_cost(rect, skill)
      return unless @actor.skill_gold_cost(skill) > 0
      contents.font.size -= 2
      change_color(gold_cost_color)
      #---
      icon = Icon.gold_cost
      if icon > 0
        draw_icon(icon, rect.x + rect.width-24, rect.y)
        rect.width -= 24
      end
      #---
      contents.font.size = YEA::SKILL_COST::GOLD_COST_SIZE
      cost = @actor.skill_gold_cost(skill)
      text = sprintf(YEA::SKILL_COST::GOLD_COST_SUFFIX, cost.group)
      draw_text(rect, text, 2)
      cx = text_size(text).width + 4
      rect.width -= cx
      reset_font_settings
    end
    
    #--------------------------------------------------------------------------
    # new method: draw_custom_skill_cost
    #--------------------------------------------------------------------------
    def draw_custom_skill_cost(rect, skill)
      return unless skill.use_custom_cost
      contents.font.size -= 2
      change_color(text_color(skill.custom_cost_colour))
      icon = skill.custom_cost_icon
      if icon > 0
        draw_icon(icon, rect.x + rect.width-24, rect.y)
        rect.width -= 24
      end
      contents.font.size = skill.custom_cost_size
      text = skill.custom_cost_text
      draw_text(rect, text, 2)
      cx = text_size(text).width + 4
      rect.width -= cx
      reset_font_settings
    end
  end
 
end # Window_Properties_Slot

#==============================================================================
# �� Window_SkillCommand
#==============================================================================

class Window_SkillCommand < Window_Command
 
  #--------------------------------------------------------------------------
  # alias method: make_command_list
  #--------------------------------------------------------------------------
  unless $imported["YEA-SkillMenu"]
  alias yes_skill_equip_make_command_list make_command_list
  def make_command_list
    yes_skill_equip_make_command_list
    add_command(YES::SKILL_EQUIP::COMMAND, :equip_skill, $game_switches[YES::SKILL_EQUIP::EQUIP_SKILL_SWITCH])
  end
  end
 
end # Window_SkillCommand

#==============================================================================
# �� Scene_Skill
#==============================================================================

class Scene_Skill < Scene_ItemBase
 
  #--------------------------------------------------------------------------
  # alias method: start
  #--------------------------------------------------------------------------
  alias yes_skill_equip_start start
  def start
    yes_skill_equip_start
    create_slots_window
    create_skill_equip_window
    create_properties_window
  end
 
  #--------------------------------------------------------------------------
  # alias method: create_command_window
  #--------------------------------------------------------------------------
  alias yes_skill_equip_create_command_window create_command_window
  def create_command_window
    yes_skill_equip_create_command_window
    @command_window.set_handler(:equip_skill, method(:command_equip_skill))
  end
 
  #--------------------------------------------------------------------------
  # new method: create_slots_window
  #--------------------------------------------------------------------------
  def create_slots_window
    wx = 0
    wy = @status_window.y + @status_window.height
    wh = Graphics.height - wy
    @slots_window = Window_SkillSlots.new(wx, wy, wh)
    @slots_window.viewport = @viewport
    @slots_window.help_window = @help_window
    @slots_window.actor = @actor
    @slots_window.set_handler(:ok, method(:on_slot_ok))
    @slots_window.set_handler(:cancel, method(:on_slot_cancel))
  end
 
  #--------------------------------------------------------------------------
  # new method: create_skill_equip_window
  #--------------------------------------------------------------------------
  def create_skill_equip_window
    wx = 0
    wy = @status_window.y + @status_window.height
    ww = Graphics.width / 2
    wh = Graphics.height - wy
    @skill_equip = Window_SkillList_Equip.new(wx, wy, ww, wh)
    @skill_equip.viewport = @viewport
    @skill_equip.help_window = @help_window
    @skill_equip.actor = @actor
    @skill_equip.set_handler(:ok, method(:on_skill_equip_ok))
    @skill_equip.set_handler(:cancel, method(:on_skill_equip_cancel))
  end
 
  #--------------------------------------------------------------------------
  # new method: create_properties_window
  #--------------------------------------------------------------------------
  def create_properties_window
    wx = @slots_window.width
    wy = @status_window.y + @status_window.height
    ww = Graphics.width / 2
    wh = Graphics.height - wy
    @properties_window = Window_Properties_Slot.new(wx, wy, ww, wh)
    @properties_window.viewport = @viewport
    @properties_window.actor = @actor
    @slots_window.properties_window = @properties_window
    @skill_equip.properties_window = @properties_window
  end
 
  #--------------------------------------------------------------------------
  # new method: command_equip_skill
  #--------------------------------------------------------------------------
  def command_equip_skill
    @slots_window.activate
  end
 
  #--------------------------------------------------------------------------
  # new method: on_slot_ok
  #--------------------------------------------------------------------------
  def on_slot_ok
    @slots_window.deactivate.hide
    @skill_equip.show.activate
  end
 
  #--------------------------------------------------------------------------
  # new method: on_slot_cancel
  #--------------------------------------------------------------------------
  def on_slot_cancel
    @slots_window.deactivate
    @command_window.activate
  end
 
  #--------------------------------------------------------------------------
  # new method: on_skill_equip_ok
  #--------------------------------------------------------------------------
  def on_skill_equip_ok
    id = @skill_equip.item == 0 ? 0 : @skill_equip.item.id
    @actor.equip_skill(@slots_window.index, id)
    @slots_window.refresh
    @skill_equip.deactivate.hide
    @slots_window.show.activate   
  end
 
  #--------------------------------------------------------------------------
  # new method: on_skill_equip_cancel
  #--------------------------------------------------------------------------
  def on_skill_equip_cancel
    @skill_equip.deactivate.hide
    @slots_window.show.activate   
  end
 
  #--------------------------------------------------------------------------
  # super method: update
  #--------------------------------------------------------------------------
  def update
    super
    if @command_window.active
      if @command_window.current_symbol == :equip_skill
        @item_window.hide
        @slots_window.show
        @properties_window.show
      else
        @slots_window.hide
        @properties_window.hide
        @item_window.show
      end
    end
  end
 
  #--------------------------------------------------------------------------
  # alias method: on_actor_change
  #--------------------------------------------------------------------------
  alias yes_skill_equip_on_actor_change on_actor_change
  def on_actor_change
    yes_skill_equip_on_actor_change
    @slots_window.index = 0
    @skill_equip.index = 0
    @slots_window.actor = @actor
    @skill_equip.actor = @actor
    @properties_window.actor = @actor
    @slots_window.properties_window = @properties_window
  end
 
end # Scene_Skill

#==============================================================================
#
# �� End of File
#
#==============================================================================
 

Andar

Veteran
Veteran
Joined
Mar 5, 2013
Messages
38,427
Reaction score
10,855
First Language
German
Primarily Uses
RMMV
Unfortunately the true sticking point is not inside that script (I checked it).

you would need a patch that needs to be entered above that script, but writing that one is beyond my current knowledge.

basically yami's script replaces the original skill execution functions with the ones that requires skills to be equipped.
the patch would have to create an alias to the original function before it is replaced, and then redirect the force action event command to that alias, so that it is no longer redirected to the new skill execution.
 

Lonewulf123

Veteran
Veteran
Joined
Oct 13, 2014
Messages
362
Reaction score
102
First Language
Enlish
Unfortunately the true sticking point is not inside that script (I checked it).

you would need a patch that needs to be entered above that script, but writing that one is beyond my current knowledge.

basically yami's script replaces the original skill execution functions with the ones that requires skills to be equipped.
the patch would have to create an alias to the original function before it is replaced, and then redirect the force action event command to that alias, so that it is no longer redirected to the new skill execution.
Got it, so this is originally more complex than I had thought.

Well, thank you for looking into this. I’ll keep looking for a solution
 

Latest Threads

Latest Posts

Latest Profile Posts

1iVi6I.png


Continuing our countdown with Capsule Monster #13 Tomey Thomas! I loved the idea of a tiny book gaining sentience and being a little wizard. It’s a shame none of his spells are useful XD
Have to be more organised and serious. It helps that im running out of time at work :|. so much to do. Trying to make game studio professional. www.bmpgames.com
imgur links are back!
now I CAN keep getting away with NOT replacing them with updated renders!
yay!
I forgot RPG Maker even existed. Such good memories. Might boot up steam and download MV one more time
10 pieces of KFC chicken for US$12.30, delivery included. Cheap or expensive? :aswt:

Forum statistics

Threads
131,550
Messages
1,220,776
Members
173,220
Latest member
ZecaVn
Top