RMRK is retiring.
Registration is disabled. The site will remain online, but eventually become a read-only archive. More information.

RMRK.net has nothing to do with Blockchains, Cryptocurrency or NFTs. We have been around since the early 2000s, but there is a new group using the RMRK name that deals with those things. We have nothing to do with them.
NFTs are a scam, and if somebody is trying to persuade you to buy or invest in crypto/blockchain/NFT content, please turn them down and save your money. See this video for more information.
Skill leveling up Script (Resolved)

0 Members and 1 Guest are viewing this topic.

***
Rep:
Level 88
Gone.
Thank you to Winged for the help.
« Last Edit: April 24, 2007, 11:58:20 AM by Morris Lawry »
Good Bye. RMRK you were cool while I wasn't there.

*
Rep:
Level 97
2014 Most Unsung Member2014 Best RPG Maker User - Engine2013 Best RPG Maker User (Scripting)2012 Most Mature Member2012 Favorite Staff Member2012 Best RPG Maker User (Scripting)2012 Best MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best Use of Avatar and Signature Space2011 Best RPG Maker User (Scripting)2011 Most Mature Member2011 Favourite Staff Member2011 Best Veteran2010 Most Mature Member2010 Favourite Staff Member
You could have the skills each call their own common event which +1 to a variable. Then you could put in a conditional branch on that variable, which makes the person forget that skill and learns a new one with the same name but better effects. So, have the skill call something like this:

Control Variables: [Skill Counter] + 1
Conditional Branch: Variable [Skill Counter] = 50
    Change Skills: - [1st level Skill]
    Change Skills: +[2nd level Skill]
Branch END
Conditional Branch: [Skill Counter] = 1000
    Change Skills: - [2nd level Skill]
    Change Skills: +[3rd level Skill]
Branch END
 

***
Rep:
Level 88
Gone.
Thanks, but only one slight problem. If i was to do that i would need to make over 100x the skill thats improved just for one skill, i;ve already got around 100+ skills so i think a scrip may be necisary, but thank you anyway
Good Bye. RMRK you were cool while I wasn't there.

*
Shooting for the "MEMBER MODERATOR OF THE YEAR 2007" Award
Rep:
Level 89
Hi, there.
you could make a common event with what Modern Algebra said.

Control Variables: [Skill Counter] + 1
Conditional Branch: Variable [Skill Counter] = 50
    Change Skills: - [1st level Skill]
    Change Skills: +[2nd level Skill]
Branch END
Conditional Branch: [Skill Counter] = 1000
    Change Skills: - [2nd level Skill]
    Change Skills: +[3rd level Skill]
Branch END

And when you say 100+ skills, you mean in total? If so, then that means that you only need this event for each of the beggining skills
Sig by MacGravel

*
Rep:
Level 97
2014 Most Unsung Member2014 Best RPG Maker User - Engine2013 Best RPG Maker User (Scripting)2012 Most Mature Member2012 Favorite Staff Member2012 Best RPG Maker User (Scripting)2012 Best MemberSecret Santa 2012 ParticipantProject of the Month winner for July 20092011 Best Use of Avatar and Signature Space2011 Best RPG Maker User (Scripting)2011 Most Mature Member2011 Favourite Staff Member2011 Best Veteran2010 Most Mature Member2010 Favourite Staff Member
But I think he wants to have 100 levels for each skill as well. He will run out of room in the skills database, so he needs a script which will update the skills directly, rather than swapping. It's actually a script I would like to write, but I'd need to learn the syntax for this stuff first.

***
Rep:
Level 88
Gone.
Good Bye. RMRK you were cool while I wasn't there.

*****
<3
Rep:
Level 90
I THINK there is already a script somewhere, I'll go looking (it was called "Skills that Level Up" or something)

~Winged



***
Rep:
Level 88
Gone.
thanks winged, let me know when you got somthing. winger is also the legend.

I've come up with a kind of conclusion but it would mean that the skills would have to be harder to level.
Good Bye. RMRK you were cool while I wasn't there.

*****
<3
Rep:
Level 90
Quote from: Cygnea;101646
Skill Update
Found at: http://www.k3.dion.ne.jp/~claimh/rgss/index.html
By: Claimh

What Does This Do?
  • Allows skills to gain levels
  • Allows skills to grow in power
  • Allows skills to decrease in SP consumption
  • Allows skills to change animations upon reaching new levels
  • Allows the hit rate to increase
  • Allows skills to have a maxium level
  • Allows the ability to add and remove states
  • Allows the adding of new attributes
  • Some other stuff that I forgot but is commented in the script (probably)

Spoiler for Script:
Code: [Select]
#==============================================================================
# ** Skill update   Ver. 4.6.1                     by Claimh
#------------------------------------------------------------------------------
#     * System to create each skill's own 'level'... Draw_skill_exp
#     Introduces a system to increase skill potential by their own levels.
#     Skills can increase in individual levels (the skill's power can increase,
#     SP usage decreases, the skill's to-hit ratio rises) after use.
#
#     NOTE by DERVVULFMAN:
#     Place 'below' Tactical Skills (aka BLITZ) and the Tactical Command Add-On
#     for both systems to work together. If placed above both of these systems,
#     the actual skill leveling and changes  will not be performed...  only the
#     level indication system will work.
#
#==============================================================================

module Skill_updata
  S_MIGHT = []
  S_COST = []
  S_HIT = []
  S_LEVEL = []
  S_INTER = []
  S_SLOPE = []
  S_ANIME = []
  S_ELEMENT = []
  S_STATE_P = []
  S_STATE_N = []
#==============================================================================
# ** Customization point
#==============================================================================
  #----------------------------------------------------------------------------
  # Basic Update Settings
  #----------------------------------------------------------------------------
  # Skill Power Increase
  SKILL_MIGHT_UP = true          # Nil ? false
  # SP Usage Decreased
  SP_COST_DOWN = true            # Nil ? false
  # To-Hit Ratio Increased
  SKILL_HIT_UP = true            # Nil ? false
  # Attribute Change system used
  ELEMENT_CHANGE = true          # Nil ? false
  # State Change system used
  STATE_CHANGE = true            # Nil ? false
 
  # Level Increase display is used
  SHOW_SKILL_LV_UP = true        # Nil -> false
  # Level Increase SE
  SKILLUP_SE = "056-Right02"     # Sets to Nil if there's no SE file
  # Field Menu allows for Increase (Level Increase display & sound do not play.)
  MENU_COUNT = true

  # Number of times to use skill for the skill to grow
  UPDATA_INTERVAL = 2            # 1 or more
  # Level Limit for Skill Growth
  LEVEL_LIMIT = 20               # 1 or more

  # Skill Power Increase rate(%)
  MIGHT_RATE = 0.5
  # SP Usage Decrease rate(%)
  COST_RATE = 3
  # Skill To-Hit Increase Rate(%)
  HIT_RATE = 1

  #----------------------------------------------------------------------------
  # Skill & detail settings
  #----------------------------------------------------------------------------
  # Skill Limit per Actor
  # S_LEVEL[Skill ID] = [Actor ID = Level Limit, ...]
  # * The default limit (LEVEL_LIMIT) is used if a specific limit isn't listed.
  # * If the Actor ID is set to 0, the limit applies to all unspecified actors.
  S_LEVEL[57] = {0=>10,1=>18, 2=>12, 3=>5, 4=>12, 5=>12, 6=>12, 7=>12, 8=>12}
  S_LEVEL[61] = {0=>10,1=>12, 2=>18, 3=>15, 4=>12, 5=>12, 6=>12, 7=>12, 8=>12}
 
  # Skill 'Power' Increase Rate per Actor
  # S_MIGHT[Skill ID] = [Actor ID => Power Rate Increase, ...]
  # * The default rate (MIGHT_RATE) is used for any Power rates not included.
  # * If the Actor ID is set to 0, the rate applies to all unspecified actors.
  S_MIGHT[57] = {0=>2,1=>8, 2=>2, 3=>5, 4=>2, 5=>2, 6=>2, 7=>2, 8=>2}
  S_MIGHT[61] = {0=>2,1=>2, 2=>8, 3=>5, 4=>2, 5=>2, 6=>2, 7=>2, 8=>2}

  # Skill 'SP Usage' Decrease Rate per Actor.
  # S_COST[Skill ID] = [Actor ID => SP Use Decrease Rate, ...]
  # * The default rate (COST_RATE) is used for any SP rates not included. 
  # * If the Actor ID is set to 0, the rate applies to all unspecified actors.
  S_COST[57] = {0=>2,1=>8, 2=>2, 3=>5, 4=>2, 5=>2, 6=>2, 7=>2, 8=>2}
  S_COST[61] = {0=>2,1=>2, 2=>8, 3=>5, 4=>2, 5=>2, 6=>2, 7=>2, 8=>2}

  # Skill 'To-Hit' Increase Rate per Actor.
  # S_HIT[Skill ID] = [Actor ID => To-Hit Increase Rate, ...]
  # * The default rate (HIT_RATE) is used for any To-Hit rates not included. 
  # * If the Actor ID is set to 0, the rate applies to all unspecified actors.
  S_HIT[57] = {0=>1,1=>2, 2=>1, 3=>1, 4=>1, 5=>1, 6=>1, 7=>1, 8=>1}
  S_HIT[61] = {0=>1,1=>1, 2=>2, 3=>1, 4=>1, 5=>1, 6=>1, 7=>1, 8=>1}

  #----------------------------------------------------------------------------
  #?Details setting of growth of skill
  #----------------------------------------------------------------------------
  # Growth pattern of skill
  # 0 ? Skill increases uniformly every update interval
  # 1 ? Skill update interval grows larger each increase (Interval + Skill Lvl)
  SKILL_PATTERN = 1
 
  # Skill 'Level Interval' Rate per Actor.
  # S_INTER[Skill ID] = [Actor ID=> Level Interval, ...]
  #  * The default leveling rate (UPDATA_INTERVAL) is used for any Interval
  #    rates that are not included.
  #  * If the Actor ID is set to 0, the rate applies to all unspecified actors. 
  S_INTER[57] = {0=>10,1=>5, 2=>8, 3=>8, 4=>8, 5=>8, 6=>8, 7=>8, 8=>8}
 
  # Skill Interval Growth per Actor (Only if SKILL_PATTERN is set to '1')
  # S_SLOPE[Skill ID] = [Actor ID => Interval Increase, ...]
  #  * The Growth Increase of '1' cumulative level is used when not specified.
  #  * If the Actor ID is set to 0, the increase works on all unspecified actors. 
  S_SLOPE[57] = {0=>10,1=>5, 2=>8, 3=>8, 4=>8, 5=>8, 6=>8, 7=>8, 8=>8}

  #----------------------------------------------------------------------------
  # Change 'Target' Battle Animation based on Skill Level.  No change if false.
  #  Example? S_ANIME[Skill ID] = [Actor ID=>[[Level, Animation ID]], ...]
  #----------------------------------------------------------------------------
  # The animation changes for every skill growth level?
  USE_S_ANIME = true
 
  # Animation Settings
  # Each skill can have multiple settings for each actor.
  # As for Aluxes when Cross Cut becomes Lv.5 and Lv.10, the animation changes.
  # As for Basil when Cross Cut finally becomes Lv.11, the animation changes.
  # * When set to 0, the animation change applies to all unspecified actors.   
  S_ANIME[57] = {0=>[[5, 69]], 1=>[[5, 69], [10, 70]], 2=>[[11, 70]]}

  #----------------------------------------------------------------------------
  #?If ELEMENT_CHANGE and/or STATE_CHANGE, this section is disregarded.
  #----------------------------------------------------------------------------
  # Element Attribute change
  # S_ELEMENT[Skill ID] = {Actor ID=>{Level =>[Element ID, Element ID,...]}, ...}
  # * If the Actor ID is set to 0, the element changes work on all unset actors.
  S_ELEMENT[57] = {1=>{1=>[1], 2=>[2], 3=>[3]}, 2=>{1=>[2], 2=>[5]}}

  # State change +
  # S_STATE_P[Skill ID] = {Actor ID=>{Level =>[State ID, State ID, ...]}, ...}
  # * If the Actor ID is set to 0, the state increases work on all unset actors.
  S_STATE_P[57] = {1=>{1=>[1], 2=>[2], 3=>[3]}, 2=>{1=>[2], 2=>[5]}}

  # State change?
  # S_STATE_N[Skill ID] = {Actor ID=>{Level =>[State ID, State ID...]}, ...}
  # * If the Actor ID is set to 0, the state removals work on all unset actors.
  S_STATE_N[57] = {1=>{1=>[1], 2=>[2], 3=>[3]}, 2=>{1=>[2], 2=>[5]}}

#==============================================================================
# ** Customization point end
#==============================================================================
end


class Game_Actor
  include Skill_updata
  attr_accessor   :skill_use      # Frequency of skill use
  attr_accessor   :skill_level    # Skill level
  attr_accessor   :skill_power    # Skill power renewal value
  attr_accessor   :skill_sp_cost  # Skill SP consumption renewal value
  attr_accessor   :skill_hit      # Skill on-target hit ratio
  attr_accessor   :skill_up       # Levelling up flag
  attr_accessor   :skill_list     # Skill EXP list
  alias skill_updata_init setup
  def setup(actor_id)
    skill_updata_init(actor_id)
    @skill_use = []
    @skill_level = []
    @skill_power = []
    @skill_sp_cost = []
    @skill_hit = []
    @skill_up = false
    @skill_list = []
    for id in 1...$data_skills.size
      @skill_use[id] = 0
      @skill_level[id] = 0
      @skill_power[id] = $data_skills[id].power
      @skill_sp_cost[id] = $data_skills[id].sp_cost
      @skill_hit[id] = $data_skills[id].hit
      @skill_list[id] = make_skill_list(id)
    end
  end

  #--------------------------------------------------------------------------
  # * Skill EXP calculation
  #--------------------------------------------------------------------------
  def make_skill_list(skill_id)
    interval = S_INTER[skill_id]
    if !interval.nil? and !interval[@actor_id].nil?
      up_interval = interval[@actor_id]
    elsif !interval.nil? and !interval[0].nil?
      up_interval = interval[0]
    else
      up_interval = UPDATA_INTERVAL
    end
    # Inclination
    slope = S_SLOPE[skill_id]
    if !slope.nil? and !slope[@actor_id].nil?
      up_slope = slope[@actor_id]
    elsif !slope.nil? and !slope[0].nil?
      up_slope = slope[0]
    else
      up_slope = 1
    end
    limit = S_LEVEL[skill_id]
    # Limited level
    if !limit.nil? and !limit[@actor_id].nil?
      limit_lv = limit[@actor_id]
    elsif !limit.nil? and !limit[0].nil?
      limit_lv = limit[0]
    else
      limit_lv = LEVEL_LIMIT
    end
    list = []
    list[0] = 0
    # Skill EXP list compilation
    for lv in 1...limit_lv+1
      exp = 0
      case SKILL_PATTERN
      when 0
        exp = up_interval * lv
      when 1
        exp = list[lv-1] + up_slope * lv + up_interval
      end
      list[lv] = exp.truncate
    end
    return list
  end
end


class Game_Battler
  include Skill_updata
  #--------------------------------------------------------------------------
  # * Apply Skill Effects
  #     user  : the one using skills (battler)
  #     skill : skill
  #--------------------------------------------------------------------------
  alias skill_effect_update skill_effect
  def skill_effect(user, skill)
    up_flag = false
    if user.is_a?(Game_Actor) and ($scene.is_a?(Scene_Battle) or MENU_COUNT)
      skill_update_main(user, skill)
      skill_base = $data_skills[skill.id].dup
      # Power rise
      if SKILL_MIGHT_UP
        skill.power = user.skill_power[skill.id]
      end
      # On-target hit ratio rise
      if SKILL_HIT_UP
        skill.hit = user.skill_hit[skill.id]
      end
      # Attribute change
      if ELEMENT_CHANGE and S_ELEMENT != []
        ele1 = S_ELEMENT[skill.id]
        if !ele1.nil? and !ele1[user.id].nil?
          ele2 = ele1[user.id]
        elsif !ele1.nil? and !ele1[0].nil?
          ele2 = ele1[0]
        else
          # If there is no setting, disregard
          ele2 = nil
        end
        if !ele2.nil? and ele2[user.skill_level[skill.id]] != nil
          skill.element_set = ele2[user.skill_level[skill.id]]
        end
      end
      # State change
      if STATE_CHANGE
        if S_STATE_P != []
          pst1 = S_STATE_P[skill.id]
          if !pst1.nil? and !pst1[user.id].nil?
            pst2 = pst1[user.id]
          elsif !pst1.nil? and !pst1[0].nil?
            pst2 = pst1[0]
          else
            # If there is no setting, disregard
            pst2 = nil
          end
          if pst2 != nil and pst2[user.skill_level[skill.id]] != nil
            skill.plus_state_set = pst2[user.skill_level[skill.id]]
          end
        end
        if S_STATE_N != []
          nst1 = S_STATE_N[skill.id]
          if !nst1.nil? and !nst1[user.id].nil?
            nst2 = nst1[user.id]
          elsif !nst1.nil? and !nst1[0].nil?
            nst2 = nst1[0]
          else
            # If there is no setting, disregard
            nst2 = nil
          end
          if nst1 != nil and nst2[user.skill_level[skill.id]] != nil
            skill.minus_state_set = nst2[user.skill_level[skill.id]]
          end
        end
      end
      up_flag = true
    end
    ret = skill_effect_update(user, skill)    # Original
    if up_flag
      $data_skills[skill.id] = skill_base.dup
      # if Miss occurs
      if self.damage == "Miss"
        skill_use_recount(user, skill)
      end
    end
    return ret
  end
 
  #--------------------------------------------------------------------------
  # * Skill rise count
  #--------------------------------------------------------------------------
  def skill_update_main(actor, skill)
    # Count of frequency of skill use
    actor.skill_use[skill.id] += 1
    # Limit acquisition
    limit = S_LEVEL[skill.id]
    if !limit.nil? and !limit[actor.id].nil?
      s_limit = limit[actor.id]
    elsif !limit.nil? and !limit[0].nil?
      s_limit = limit[0]
    else
      s_limit = LEVEL_LIMIT
    end
    # Rewriting limited arrival
    if s_limit == false or actor.skill_level[skill.id] < s_limit
      # Levelling up interval acquisition
      interval = actor.skill_list[skill.id]
      # Rewriting frequency arrival
      if actor.skill_use[skill.id] == interval[actor.skill_level[skill.id]+1]
        # ????????
        actor.skill_level[skill.id] += 1
        actor.skill_up = true
        # Power rise = validity
        if SKILL_MIGHT_UP
          might = S_MIGHT[skill.id]
          if !might.nil? and !might[actor.id].nil?
            might_rate = might[actor.id]
          elsif !might.nil? and !might[0].nil?
            might_rate = might[0]
          else
            might_rate = MIGHT_RATE
          end
          # Correction value renewal
          actor.skill_power[skill.id] += skill.power * might_rate / 100
          actor.skill_power[skill.id] = actor.skill_power[skill.id].truncate
        end
        # SP consumption decrease = validity
        if SP_COST_DOWN
          cost = S_COST[skill.id]
          if !cost.nil? and !cost[actor.id].nil?
            cost_rate = cost[actor.id]
          elsif !cost.nil? and !cost[0].nil?
            cost_rate = cost[0]
          else
            cost_rate = COST_RATE
          end
          actor.skill_sp_cost[skill.id] -= skill.sp_cost * cost_rate / 100
          actor.skill_sp_cost[skill.id] = actor.skill_sp_cost[skill.id].truncate
          # SP consumption cannot be 0 or less
          if actor.skill_sp_cost[skill.id] < 0
            actor.skill_sp_cost[skill.id] = 0
          end
        end
        # On-target hit ratio rise = validity
        if SKILL_HIT_UP
          hit = S_HIT[skill.id]
          if !hit.nil? and !hit[actor.id].nil?
            hit_rate = hit[actor.id]
          elsif !hit.nil? and !hit[0].nil?
            hit_rate = hit[0]
          else
            hit_rate = HIT_RATE
          end
          actor.skill_hit[skill.id] += skill.hit * hit_rate / 100
          actor.skill_hit[skill.id] = actor.skill_hit[skill.id].truncate
          # Cannot be 100 or more
          if actor.skill_hit[skill.id] > 100
            actor.skill_hit[skill.id] = 100
          end
        end
      end
    end
  end
 
  #--------------------------------------------------------------------------
  # * Re-count
  #--------------------------------------------------------------------------
  def skill_use_recount(actor, skill)
    if actor.skill_up
      actor.skill_level[skill.id] -= 1
      # Power recalculate
      if SKILL_MIGHT_UP
        actor.skill_power[skill.id] = skill.power
        might = S_MIGHT[skill.id]
        if !might.nil? and !might[actor.id].nil?
          might_rate = might[actor.id]
        elsif !might.nil? and !might[0].nil?
          might_rate = might[0]
        else
          might_rate = MIGHT_RATE
        end
        for i in 1...actor.skill_level[skill.id]
          actor.skill_power[skill.id] += skill.power * might_rate / 100
          actor.skill_power[skill.id] = actor.skill_power[skill.id].truncate
        end
      end
      # SP consumption recalculate
      if SP_COST_DOWN
        actor.skill_sp_cost[skill.id] = skill.sp_cost
        cost = S_COST[skill.id]
        if !cost.nil? and !cost[actor.id].nil?
          cost_rate = cost[actor.id]
        elsif !cost.nil? and !cost[0].nil?
          cost_rate = cost[0]
        else
          cost_rate = COST_RATE
        end
        for i in 1...actor.skill_level[skill.id]
          actor.skill_sp_cost[skill.id] -= skill.sp_cost * cost_rate / 100
          actor.skill_sp_cost[skill.id] = actor.skill_sp_cost[skill.id].truncate
        end
        # SP consumption cannot be 0 or less
        if actor.skill_sp_cost[skill.id] < 0
          actor.skill_sp_cost[skill.id] = 0
        end
      end
      # On-target hit ratio recalculate
      if SKILL_HIT_UP
        actor.skill_hit[skill.id] = skill.hit
        hit = S_HIT[skill.id]
        if !hit.nil? and !hit[actor.id].nil?
          hit_rate = hit[actor.id]
        elsif !hit.nil? and !hit[0].nil?
          hit_rate = hit[0]
        else
          hit_rate = HIT_RATE
        end
        for i in 1...actor.skill_level[skill.id]
          actor.skill_hit[skill.id] += skill.hit * hit_rate / 100
          actor.skill_hit[skill.id] = actor.skill_hit[skill.id].truncate
        end
        # Cannot be 100 or more
        if actor.skill_hit[skill.id] > 100
          actor.skill_hit[skill.id] = 100
        end
      end
      actor.skill_up = false
    end
    actor.skill_use[skill.id] -= 1
  end
end

#==============================================================================
# The animation change with skill growth
#==============================================================================
class Scene_Battle
  include Skill_updata
  #--------------------------------------------------------------------------
  # * Frame Update (main phase step 4 : animation for target)
  #--------------------------------------------------------------------------
  alias update_phase4_step4_skillup update_phase4_step4
  def update_phase4_step4
    update_phase4_step4_skillup
    if @active_battler.is_a?(Game_Actor) and USE_S_ANIME
      s_anime = S_ANIME[@skill.id]
      if !s_anime.nil? and !s_anime[@active_battler.id].nil?
        s_anime_set = s_anime[@active_battler.id]
      elsif !s_anime.nil? and !s_anime[0].nil?
        s_anime_set = s_anime[0]
      else
        # If there is no setting, disregard
        return
      end
      for i in 0...s_anime_set.size
        s_anime_def = s_anime_set[i]
        # If above stipulated level animation change
        if @active_battler.skill_level[@skill.id] >= s_anime_def[0]
          # Setting object side animation
          for target in @target_battlers
            target.animation_id = s_anime_def[1]
          end
        end
      end
    end
  end
end

#==============================================================================
# * If the leveling up display system is not needed, turn it off.  OK?
#==============================================================================
class Scene_Battle
  include Skill_updata
  if SHOW_SKILL_LV_UP
  #--------------------------------------------------------------------------
  # * Frame Update (main phase step 2 : start action)
  #--------------------------------------------------------------------------
  alias update_phase4_step2_skillup update_phase4_step2
  def update_phase4_step2
    if @active_battler.is_a?(Game_Actor)
      @active_battler.skill_up = false
    end
    @skillup = false
    update_phase4_step2_skillup   # Original
  end

  #--------------------------------------------------------------------------
  # * Frame Update (main phase step 3 : animation for action performer)
  #--------------------------------------------------------------------------
  alias update_phase4_step3_skillup update_phase4_step3
  def update_phase4_step3
    if @active_battler.is_a?(Game_Actor) and @active_battler.skill_up != false
      @skillup = true
      @skill_up_window = Window_Skillup.new(@active_battler)
      if SKILLUP_SE != nil
        Audio.se_play("Audio/SE/" + SKILLUP_SE)
        sleep(0.1)
      end
    end
    update_phase4_step3_skillup
  end

  #--------------------------------------------------------------------------
  # * Frame Update (main phase step 5 : damage display)
  #--------------------------------------------------------------------------
  alias update_phase4_step5_skillup update_phase4_step5
  def update_phase4_step5
    if @active_battler.is_a?(Game_Actor) and @skillup
      @skill_up_window.dispose
      @active_battler.skill_up = false
      @skillup = false
    end
    update_phase4_step5_skillup     # Original
  end

  #--------------------------------------------------------------------------
  # * Frame Update
  #--------------------------------------------------------------------------
  alias update_skillup update
  def update
    if @active_battler.is_a?(Game_Actor) and @active_battler.skill_up and @skillup
      @skill_up_window.contents_opacity -= 4
    end
    update_skillup              # Original
  end
  end # if SHOW_SKILL_LV_UP
end

class Window_Skillup < Window_Base
  #--------------------------------------------------------------------------
  # * Object Initialization
  #     actor : actor
  #--------------------------------------------------------------------------
  def initialize(actor)
    super(actor.screen_x-140, 260, 250, 64)
    self.contents = Bitmap.new(width - 32, height - 32)
    self.opacity = 0
    self.contents.font.color = Color.new(255, 64, 0)
    self.contents.draw_text(80, 0, 150, 32, "LEVEL UP!")
  end
end



#==============================================================================
# * Below, the edited part is marked. If the (SP Use Decreased) system is not
#   being used, turn it off. OK?
#==============================================================================
class Window_Skill < Window_Selectable
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #--------------------------------------------------------------------------
  def draw_item(index)
    skill = @data[index]
    if @actor.skill_can_use?(skill.id)
      self.contents.font.color = normal_color
    else
      self.contents.font.color = disabled_color
    end
    x = 4 + index % 2 * (288 + 32)
    y = index / 2 * 32
    rect = Rect.new(x, y, self.width / @column_max - 32, 32)
    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
    bitmap = RPG::Cache.icon(skill.icon_name)
    opacity = self.contents.font.color == normal_color ? 255 : 128
    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
#-Correction-----
    @actor.skill_level[skill.id] = 0 if @actor.skill_level[skill.id] == nil
    name_level = skill.name + "?Lv" + @actor.skill_level[skill.id].to_s + "?"
    self.contents.draw_text(x + 28, y, 204, 32, name_level, 0)
    @actor.skill_sp_cost[skill.id] = skill.sp_cost if @actor.skill_sp_cost[skill.id] == nil
    self.contents.draw_text(x + 232, y, 48, 32, @actor.skill_sp_cost[skill.id].to_s, 2)
#----------------
  end
end

class Scene_Skill
  #--------------------------------------------------------------------------
  # * Frame Update (when target window is active)
  #--------------------------------------------------------------------------
  def update_target
    # If B button was pressed
    if Input.trigger?(Input::B)
      # Play cancel SE
      $game_system.se_play($data_system.cancel_se)
      # Erase target window
      @skill_window.active = true
      @target_window.visible = false
      @target_window.active = false
      return
    end
    # If C button was pressed
    if Input.trigger?(Input::C)
      # If unable to use because SP ran out
      unless @actor.skill_can_use?(@skill.id)
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
        return
      end
      # If target is all
      if @target_window.index == -1
        # Apply skill use effects to entire party
        used = false
        for i in $game_party.actors
          used |= i.skill_effect(@actor, @skill)
        end
      end
      # If target is user
      if @target_window.index <= -2
        # Apply skill use effects to target actor
        target = $game_party.actors[@target_window.index + 10]
        used = target.skill_effect(@actor, @skill)
      end
      # If single target
      if @target_window.index >= 0
        # Apply skill use effects to target actor
        target = $game_party.actors[@target_window.index]
        used = target.skill_effect(@actor, @skill)
      end
      # If skill was used
      if used
        # Play skill use SE
        $game_system.se_play(@skill.menu_se)
#-----Correction------------------------------------------------
        @actor.skill_sp_cost[@skill.id] = @skill.sp_cost if @actor.skill_sp_cost[@skill.id] == nil
        # Use up SP
        @actor.sp -= @actor.skill_sp_cost[@skill.id]
#---------------------------------------------------------------
        # Remake each window content
        @status_window.refresh
        @skill_window.refresh
        @target_window.refresh
        # If entire party is dead
        if $game_party.all_dead?
          # Switch to game over screen
          $scene = Scene_Gameover.new
          return
        end
        # If command event ID is valid
        if @skill.common_event_id > 0
          # Command event call reservation
          $game_temp.common_event_id = @skill.common_event_id
         # Switch to map screen
          $scene = Scene_Map.new
          return
        end
      end
      # If skill wasn't used
      unless used
        # Play buzzer SE
        $game_system.se_play($data_system.buzzer_se)
      end
      return
    end
  end
end

class Scene_Battle
  include Skill_updata
  #--------------------------------------------------------------------------
  # * Make Skill Action Results
  #--------------------------------------------------------------------------
  alias make_skill_action_result_skill_update make_skill_action_result
  def make_skill_action_result
    make_skill_action_result_skill_update
    # SP Consumption
    if SP_COST_DOWN and @active_battler.is_a?(Game_Actor)
      @active_battler.sp += @skill.sp_cost
      @active_battler.sp -= @active_battler.skill_sp_cost[@skill.id]
    end
  end
end

class Game_Battler
  #--------------------------------------------------------------------------
  # * Determine Usable Skills
  #     skill_id : skill ID
  #--------------------------------------------------------------------------
  alias skill_update_can_use? skill_can_use?
  def skill_can_use?(skill_id)
    ret = skill_update_can_use?(skill_id)
    if !ret and SP_COST_DOWN
      # When SP is not enough, it became use failure?
      if $data_skills[skill_id].sp_cost > self.sp
        if self.is_a?(Game_Actor)
          skill_sp_cost = self.skill_sp_cost[skill_id]
          if skill_sp_cost < self.sp
            ret = true
          end
        end
      end
    end
    return ret
  end
end

#==============================================================================
# ** Interpreter
#==============================================================================
class Interpreter
  include Skill_updata
  #--------------------------------------------------------------------------
  # ? Skill level setting (level set)
  #     actor_id  :   Actor ID
  #     skill_id  :   Skill ID
  #     level     :   Setting level
  #--------------------------------------------------------------------------
  def set_skill_level(actor_id, skill_id, level)
    actor = $game_actors[actor_id]
    skill = $data_skills[skill_id]
    # Acquire Limit
    limit = S_LEVEL[skill_id]
    if !limit.nil? and !limit[actor.id].nil?
      s_limit = limit[actor.id]
    elsif !limit.nil? and !limit[0].nil?
      s_limit = limit[0]
    else
      s_limit = LEVEL_LIMIT
    end
    if level > s_limit or level < 0
      return
    end
    # Level
    actor.skill_level[skill.id] = level
    # Frequency of use
    use_list = actor.skill_list[skill.id]
    actor.skill_use[skill.id] = use_list[level]
    # Power recalculate
    if SKILL_MIGHT_UP
      actor.skill_power[skill.id] = skill.power
      might = S_MIGHT[skill.id]
      if !might.nil? and !might[actor.id].nil?
        might_rate = might[actor.id]
      elsif !might.nil? and !might[0].nil?
        might_rate = might[0]
      else
        might_rate = MIGHT_RATE
      end
      for i in 0...level
        actor.skill_power[skill.id] += skill.power * might_rate / 100
        actor.skill_power[skill.id] = actor.skill_power[skill.id].truncate
      end
    end
    # SP consumption recalculate
    if SP_COST_DOWN
      actor.skill_sp_cost[skill.id] = skill.sp_cost
      cost = S_COST[skill.id]
      if !cost.nil? and !cost[actor.id].nil?
        cost_rate = cost[actor.id]
      elsif !cost.nil? and !cost[0].nil? and !cost.nil?
        cost_rate = cost[0]
      else
        cost_rate = COST_RATE
      end
      for i in 0...level
        actor.skill_sp_cost[skill.id] -= skill.sp_cost * cost_rate / 100
        actor.skill_sp_cost[skill.id] = actor.skill_sp_cost[skill.id].truncate
      end
      # SP consumption cannot be 0 or less
      if actor.skill_sp_cost[skill.id] < 0
        actor.skill_sp_cost[skill.id] = 0
      end
    end
    # On-target hit ratio recalculate
    if SKILL_HIT_UP
      actor.skill_hit[skill.id] = skill.hit
      hit = S_HIT[skill.id]
      if !hit.nil? and !hit[actor.id].nil?
        hit_rate = hit[actor.id]
      elsif !hit.nil? and !hit[0].nil? and !hit.nil?
        hit_rate = hit[0]
      else
        hit_rate = HIT_RATE
      end
      for i in 0...level
        actor.skill_hit[skill.id] += skill.hit * hit_rate / 100
        actor.skill_hit[skill.id] = actor.skill_hit[skill.id].truncate
      end
      # Cannot be 100 or more
      if actor.skill_hit[skill.id] > 100
        actor.skill_hit[skill.id] = 100
      end
    end
  end
 
  #--------------------------------------------------------------------------
  # * Skill level setting (level up)
  #     actor_id  :   Actor ID
  #     skill_id  :   Skill ID
  #--------------------------------------------------------------------------
  def skill_level_up(actor_id, skill_id)
    actor = $game_actors[actor_id]
    set_skill_level(actor_id, skill_id, actor.skill_level[skill_id]+1)
  end
 
  #--------------------------------------------------------------------------
  # * Skill level setting (level down)
  #     actor_id  :   Actor ID
  #     skill_id  :   Skill ID
  #--------------------------------------------------------------------------
  def skill_level_down(actor_id, skill_id)
    actor = $game_actors[actor_id]
    set_skill_level(actor_id, skill_id, actor.skill_level[skill_id]-1)
  end
end

class Window_Base < Window
  #--------------------------------------------------------------------------
  # * Draw Skill Experience (frequency of use/NEXT)
  #     actor        : Actor
  #     skill_id     : Skill ID
  #     x            : Draw X Coordinates
  #     y            : Draw Y Coordinates
  #--------------------------------------------------------------------------
  def draw_skill_exp(actor, skill_id, x, y)
    list = actor.skill_list[skill_id]
    limit = Skill_updata::S_LEVEL[skill_id]
    if !limit.nil? and !limit[actor.id].nil?
      skill_limit = limit[actor.id]
    elsif !limit.nil? and !limit[0].nil?
      skill_limit = limit[0]
    else
      skill_limit = Skill_updata::LEVEL_LIMIT
    end
    if actor.skill_level[skill_id] == skill_limit
      next_exp = "?"
    else
      next_exp = list[actor.skill_level[skill_id]+1].to_s
    end
    use = actor.skill_use[skill_id]
    skill_exp = use.to_s + "/" + next_exp
    self.contents.draw_text(x, y, 100, 32, skill_exp)
  end
end

Spoiler for Screenshot:
In order to change the words that display the level search the script for 'Level Information Display' and edit:
Code: [Select]
name_level = skill.name + " (Level" + @actor.skill_level[skill.id].to_s + ")"

[SIZE="4"]Compatibility[/SIZE]
To work with Blitz Skills the order must be:
BLITZ
BLITZ Command Add-On
SKILL UPDATE
DerVVulfman's BLITZ/SKILL Patch

[SIZE="4"]Comments[/SIZE]
This is a good way of preventing attack skills gained at the beginning of the game from being useless further down the line.
Not for use in commercial games as stated by Claimh.

[SIZE="4"]Credit[/SIZE]
Originally written by: Claimh
Translated by: DerVVulfman

This is all I could find, I hope this works. If you have a hbgames.org account them go here
http://www.hbgames.org/forums/showthread.php?t=9183

I hope it helps ><"

~Winged
« Last Edit: April 24, 2007, 06:19:40 AM by Winged »



***
Rep:
Level 88
Gone.
thanks heaps, legend once agaiN!
Good Bye. RMRK you were cool while I wasn't there.

*****
<3
Rep:
Level 90
No worries, just don't forget the resolved and credits to Claimh

~Winged