SkillUpgrade
XP
version 0.2.0
by Kyonides
Introduction
This script allows you to quickly setup a specific list of skills that can be upgraded by the heroes during gameplay. The more they use their skills the faster the upgrades can take place.
It is supposed to be as simple as possible. This might mean bad news for you for I could easily reject any of your future feature requests, guys.

No GUI is included!
 
 It requires the creation of a template file, basically a TXT file.
You can find the default one right below the script.
The Script - Alpha Stage
Code:
# * SkillUpgrade XP * # 
#  Scripter : Kyonides Arkanthes
#  v0.2.0 - 2023-10-24
# This script allows you to quickly setup a specific list of skills that can be
# upgraded by the heroes during gameplay. The more they use their skills the
# faster the upgrades can take place.
# Create a new text file. It should have the same name as the value of the
# TEMPLATE_NAME constant you can find below.
# That file will be used as a template.
# Optionally, you could use and carefully edit the default template instead.
module SkillUp
  TEMPLATE_NAME = "skill_upgrades.txt"
  class Require
    def initialize(*args)
      @uses = args[0] || 0
      @target_id = args[1] || 0
      @keep = args[2]
    end
    def setup(hash)
      @target_id = hash[:target] || 0
      @keep = hash[:keep]
    end
    def ignore?
      @target_id == 0
    end
    attr_accessor :uses, :target_id, :keep
  end
  COMMENT_SYM = "#"
  BASE_UPGRADES = {}
  extend self
  def set(skill_id)
    data = BASE_UPGRADES[skill_id] || {}
    req = Require.new
    req.setup(data)
    req
  end
end
class String
  def scan_int
    scan(/\d+/).map{|n| n.to_i }
  end
end
module SkillUp
  def parse
    if File.exist?(TEMPLATE_NAME)
      lines = File.readlines(TEMPLATE_NAME)
    else
      lines = []
    end
    list = BASE_UPGRADES
    lines.delete_if {|line| line[0] == COMMENT_SYM }
    lines.each do |line|
      next if line.chomp.empty?
      skill_id, total, target = line.scan_int
      keep = line[/keep/i] != nil
      list[skill_id] = { :use_max => total, :target => target, :keep => keep }
    end
  end
  parse
end
class RPG::Skill
  def use_max
    @requirement ||= SkillUp::BASE_UPGRADES[@id] || { :use_max => 0 }
    @requirement[:use_max]
  end
end
class Game_Actor
  alias :kyon_skill_up_gm_act_init :initialize
  def initialize(actor_id)
    kyon_skill_up_gm_act_init(actor_id)
    @skill_up = {}
    @skills.each {|sid| set_skill_upgrade(sid) }
  end
  def set_skill_upgrade(skill_id)
    @skill_up[skill_id] = SkillUp.set(skill_id)
  end
  def skill_upgrade(skill_id)
    @skill_up[skill_id]
  end
  attr_reader :skill_up
endThe Template
This file should always have a blank line at the very end. Never ever forget this!

Code:
# How to Use?
# Skill Number: uses Number, learn ID, delete
# Skill Number: uses Number, learn ID, keep
Skill 1:   uses 25, learn 2, delete
Skill 2:   uses 50, learn 3, delete
Skill 3:   uses 75, learn 4, keep
Skill 57:  uses 30, learn 58, delete
Skill 58:  uses 60, learn 59, delete
Skill 59:  uses 30, learn 60, delete
Skill 60:  uses 60, learn 61, keep
Skill 65:  uses 70, learn 66, delete
Skill 70:  uses 100, learn 71, keepFAQ
Q: Will the script be ported to X engine?
A: I don't know for sure.

Terms & Conditions
I haven't defined any specific conditions for this script as of today because it's still in alpha stage.

To be continued... or updated.
 
	
"For God has not destined us for wrath, but for obtaining salvation through our Lord Jesus Christ," 1 Thessalonians 5:9
Maranatha!
The Internet might be either your friend or enemy. It just depends on whether or not she has a bad hair day.
![[Image: SP1-Scripter.png]](https://www.save-point.org/images/userbars/SP1-Scripter.png)
![[Image: SP1-Writer.png]](https://www.save-point.org/images/userbars/SP1-Writer.png)
![[Image: SP1-Poet.png]](https://www.save-point.org/images/userbars/SP1-Poet.png)
![[Image: SP1-PixelArtist.png]](https://www.save-point.org/images/userbars/SP1-PixelArtist.png)
![[Image: SP1-Reporter.png]](https://i.postimg.cc/GmxWbHyL/SP1-Reporter.png)
My Original Stories (available in English and Spanish)
List of Compiled Binary Executables I have published...
HiddenChest & Roole
Give me a free copy of your completed game if you include at least 3 of my scripts!
Just some scripts I've already published on the board...
KyoGemBoost XP VX & ACE, RandomEnkounters XP, KSkillShop XP, Kolloseum States XP, KEvents XP, KScenario XP & Gosu, KyoPrizeShop XP Mangostan, Kuests XP, KyoDiscounts XP VX, ACE & MV, KChest XP VX & ACE 2016, KTelePort XP, KSkillMax XP & VX & ACE, Gem Roulette XP VX & VX Ace, KRespawnPoint XP, VX & VX Ace, GiveAway XP VX & ACE, Klearance XP VX & ACE, KUnits XP VX, ACE & Gosu 2017, KLevel XP, KRumors XP & ACE, KMonsterPals XP VX & ACE, KStatsRefill XP VX & ACE, KLotto XP VX & ACE, KItemDesc XP & VX, KPocket XP & VX, OpenChest XP VX & ACE
	
	
Maranatha!
The Internet might be either your friend or enemy. It just depends on whether or not she has a bad hair day.
![[Image: SP1-Scripter.png]](https://www.save-point.org/images/userbars/SP1-Scripter.png)
![[Image: SP1-Writer.png]](https://www.save-point.org/images/userbars/SP1-Writer.png)
![[Image: SP1-Poet.png]](https://www.save-point.org/images/userbars/SP1-Poet.png)
![[Image: SP1-PixelArtist.png]](https://www.save-point.org/images/userbars/SP1-PixelArtist.png)
![[Image: SP1-Reporter.png]](https://i.postimg.cc/GmxWbHyL/SP1-Reporter.png)
My Original Stories (available in English and Spanish)
List of Compiled Binary Executables I have published...
HiddenChest & Roole
Give me a free copy of your completed game if you include at least 3 of my scripts!

Just some scripts I've already published on the board...
KyoGemBoost XP VX & ACE, RandomEnkounters XP, KSkillShop XP, Kolloseum States XP, KEvents XP, KScenario XP & Gosu, KyoPrizeShop XP Mangostan, Kuests XP, KyoDiscounts XP VX, ACE & MV, KChest XP VX & ACE 2016, KTelePort XP, KSkillMax XP & VX & ACE, Gem Roulette XP VX & VX Ace, KRespawnPoint XP, VX & VX Ace, GiveAway XP VX & ACE, Klearance XP VX & ACE, KUnits XP VX, ACE & Gosu 2017, KLevel XP, KRumors XP & ACE, KMonsterPals XP VX & ACE, KStatsRefill XP VX & ACE, KLotto XP VX & ACE, KItemDesc XP & VX, KPocket XP & VX, OpenChest XP VX & ACE

 
 
 SkillUpgrade
 SkillUpgrade
 

