05-24-2006, 01:00 PM
Level Up Box and Equipment Skills (AP) Scripts
by TsengTsuzaki
Version: 2.0
Jun 24 2006
Introduction
Combines two scripts. Check out their original posts for info on the individual scripts.
Equipment Skills by SephirothSpawn
Level Up Display by Akxiv
Features
Script
Instructions
Place both above main.
**NOTE: the 'Equipment Skills' script must be above the 'Level Up' script.
FAQ
N/A
Compatibility
SDK Compatible and Compliant.
Credits and Thanks
Equipment Skills script was created by SephirothSpawn
Level Up script was done by Akxiv
Combination and Modifications by TsengTsuzaki
Author's Notes
N/A
by TsengTsuzaki
Version: 2.0
Jun 24 2006
This is a locked, single-post thread from Creation Asylum. Archived here to prevent its loss.
No support is given. If you are the owner of the thread, please contact administration.
No support is given. If you are the owner of the thread, please contact administration.
Introduction
Combines two scripts. Check out their original posts for info on the individual scripts.
Equipment Skills by SephirothSpawn
Level Up Display by Akxiv
Features
- Combines two great scripts
- Displays Level Up info whilst in battle
- Skills are gained like in FFIX and FFT
Script
Equip Skills
Code:
#==============================================================================
# ■ Equipment Skills System
#======================================
# By: SephirothSpawn
# Date: 04.05.06
# Version: 2.0
#======================================
# * Instructions
#
# ~ Skill Learning Types (Choose 1, or neither for cannot learn)
# - Learn_By_Level = true (On) or false (Off)
# - Learn_By_AP = true (On) or false (Off)
#
# ~ Disabling Moves Until Learned
# - Disable_Until_Learned = true (On) or false (Off)
# - Only Required For Learn By AP
#
# ~ Learn One Skill At A Time
# - Learn_One_Skill = true (On) or false (Off)
#
# ~ Victory Window Options
# - Show Victory Window
# Show_Victory_Skills = true (On) or false (Off)
# - Show Only Newly Mastered Skills
# Show_Only_Mastered = true (On) or false (Off)
#
# ~ Enemy AP Values
# - Default_Enemy_AP = Default Enemy AP
# - Enemy_AP_Values = { enemy_id => ap given, ... }
#
# ~ Weapon Skills & Armor Skills
# - Weapon_Skills or Armor_Skills
# - = { equipment_id => { skill_id => Ap or Level Required, ... }, ... }
#------------------------------------------------------------------------------
# ~ One Skill At a Time Feature Requires
# Near Fantastica's Keyboard Input Module
#------------------------------------------------------------------------------
#==============================================================================
#------------------------------------------------------------------------------
# * SDK Log Script
#------------------------------------------------------------------------------
SDK.log('Equipment Skills', 'SephirothSpawn', 1, '2006-03-12')
#------------------------------------------------------------------------------
# * Begin SDK Enable Test
#------------------------------------------------------------------------------
if SDK.state('Equipment Skills') == true
#==============================================================================
# ** Equipment_Skills
#==============================================================================
module Equipment_Skills
#--------------------------------------------------------------------------
# * Learning Types
# (If Both are false, you cannot learn skills)
#--------------------------------------------------------------------------
Learn_By_Level = false
Learn_By_AP = true
#--------------------------------------------------------------------------
# * Disable Until Learned
#--------------------------------------------------------------------------
Disable_Until_Learned = false
#--------------------------------------------------------------------------
# * Only Learn One Skill at a time
# (Must assign the current skill each time)
#--------------------------------------------------------------------------
Learn_One_Skill = false
#--------------------------------------------------------------------------
# * Show Victory Skills Window after Battle
# * Show Only Newly Learned Skills
#--------------------------------------------------------------------------
Show_Victory_Skills = false
Show_Only_Mastered = true
#--------------------------------------------------------------------------
# * Default AP Given By Enemy
#--------------------------------------------------------------------------
Default_Enemy_AP = 5
#--------------------------------------------------------------------------
# * Assigned AP for enemies
# ~ enemy_id => ap
#--------------------------------------------------------------------------
Enemy_AP_Values = {
1 => 3
}
#--------------------------------------------------------------------------
# * Weapon Skills
# ~ weapon_id => { skill_id, required_ap }
#--------------------------------------------------------------------------
Weapon_Skills = {
1 => { 57 => 25, 58 => 50, 59 => 100, 60 => 200 },
5 => { 61 => 25, 62 => 50, 63 => 100, 64 => 200 },
25 => { 73 => 25, 74 => 50, 75 => 100, 76 => 200 },
29 => { 77 => 25, 78 => 50, 79 => 100, 80 => 200 }
}
#--------------------------------------------------------------------------
# * Armor Skills
# ~ armor_id => { skill_id, required_ap }
#--------------------------------------------------------------------------
Armor_Skills = {
1 => { 81 => 5, 1 => 30, 4 => 40 },
5 => { 55 => 50 },
9 => { 33 => 25, 35 => 60 },
13 => { 56 => 60 },
17 => { 56 => 50 },
21 => { 37 => 25, 39 => 60 },
25 => { 53 => 35 },
26 => { 54 => 50 },
29 => { 7 => 25, 8 => 50, 9 => 100 },
30 => { 10 => 25, 11 => 50, 12 => 100 }
}
end
#==============================================================================
# ** Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# * Include Equipment_Skills
#--------------------------------------------------------------------------
include Equipment_Skills
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :skill_ap_totals
attr_accessor :weapon_skill_target
attr_accessor :armor1_skill_target
attr_accessor :armor2_skill_target
attr_accessor :armor3_skill_target
attr_accessor :armor4_skill_target
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias seph_weaponskills_gameactor_setup setup
alias seph_weaponskills_gameactor_equip equip
alias seph_weaponskills_gameactor_skills skills
alias seph_weaponskills_gameactor_scu skill_can_use?
#--------------------------------------------------------------------------
# * Setup
# actor_id : actor ID
#--------------------------------------------------------------------------
def setup(actor_id)
# Creates Equipment AP
@skill_ap_totals = {}
# Mastered Skills
@mastered_skills = []
# Sets Equipment Skill Targets to Nil
@weapon_skill_target = nil
@armor1_skill_target = nil
@armor2_skill_target = nil
@armor3_skill_target = nil
@armor4_skill_target = nil
# Adds In Weapon Skills and AP Amounts
for skill_data in Weapon_Skills.values + Armor_Skills.values
for skill_id in skill_data.keys
unless @skill_ap_totals.has_key?(skill_id)
@skill_ap_totals[skill_id] = 0
end
end
end
# Original Initialization
seph_weaponskills_gameactor_setup(actor_id)
end
#--------------------------------------------------------------------------
# * Change Equipment
# equip_type : type of equipment
# id : weapon or armor ID (If 0, remove equipment)
#--------------------------------------------------------------------------
def equip(equip_type, id)
# Original Equip Method
seph_weaponskills_gameactor_equip(equip_type, id)
# Clears Skill Targets
case equip_type
when 0 # Weapon
if id == 0 or $game_party.weapon_number(id) > 0
@weapon_skill_target = nil
end
when 1 # Shield
if id == 0 or $game_party.armor_number(id) > 0
@armor1_skill_target = nil
end
when 2 # Head
if id == 0 or $game_party.armor_number(id) > 0
@armor2_skill_target = nil
end
when 3 # Body
if id == 0 or $game_party.armor_number(id) > 0
@armor3_skill_target = nil
end
when 4 # Accessory
if id == 0 or $game_party.armor_number(id) > 0
@armor4_skill_target = nil
end
end
end
#--------------------------------------------------------------------------
# * Determine if Skill can be Used
# skill_id : skill ID
#--------------------------------------------------------------------------
def skill_can_use?(skill_id)
if self.skills.include?(skill_id)
return super
end
# Original Skill Can use Method
seph_weaponskills_gameactor_scu(skill_id)
end
#--------------------------------------------------------------------------
# * Skills
#--------------------------------------------------------------------------
def skills
# Gets Previous Skills
s = seph_weaponskills_gameactor_skills.dup
# Adds in Equipped Skills
s << get_current_equipped_skills
# Adds in Mastered Skills
s << get_mastered_skills
# Returns New Skills
return s.flatten.sort.uniq.dup
end
#--------------------------------------------------------------------------
# * Get Current Equipped Skills
#--------------------------------------------------------------------------
def get_current_equipped_skills
# Returns Empty if Cannot Learn Until Mastered
return [] if Disable_Until_Learned
# Creates Skills Array
skills = []
# Checks For Equipped Weapon
unless @weapon_id == 0
# If Weapon Has Skill
if Weapon_Skills.has_key?(@weapon_id)
# Adds Weapon Skills
Weapon_Skills[@weapon_id].each do | skill_id, value |
if Learn_By_Level
unless skills.include?(skill_id)
skills << skill_id if @level >= value
end
else
skills << skill_id unless skills.include?(skill_id)
end
end
end
end
# Checks For Equipped Armor
for i in 1..4
unless (toto "@armor#{i}_id") == 0
# If Armor Has Skill
if Armor_Skills.has_key?(toto "@armor#{i}_id")
Armor_Skills[(toto "@armor#{i}_id")].each do | skill_id, value |
if Learn_By_Level
unless skills.include?(skill_id)
skills << skill_id if @level >= value
end
else
skills << skill_id unless skills.include?(skill_id)
end
end
end
end
end
# Sends Skills Array
return skills
end
#--------------------------------------------------------------------------
# * Get Mastered Skills
#--------------------------------------------------------------------------
def get_mastered_skills
# Returns Empty if Cannot Learn Skills
return [] unless Learn_By_AP
# Starts Skills Array
skills = []
# Checks for Mastered AP
for skill_data in Weapon_Skills.values + Armor_Skills.values
# Checks Skill Data
skill_data.each do | skill_id, master |
# Unless 0
unless master == 0
# If AP Total is Reached
if @skill_ap_totals[skill_id] == master
# Adds Skills
skills << skill_id unless skills.include?(skill_id)
end
end
end
end
# Sends Skills Array
return skills
end
#--------------------------------------------------------------------------
# * Earn AP
#--------------------------------------------------------------------------
def earn_ap(amount = 0)
# Exits if Cannot Learn Skills or Learns By Level
return unless Learn_By_AP
# Earns Weapon AP
unless @weapon_id == 0
# If Weapon Has Skills
if Weapon_Skills.has_key?(@weapon_id)
# If One at a time
if Learn_One_Skill
# If Skill has been Set
unless @weapon_skill_target.nil?
# Gets Current And Max
current = @skill_ap_totals[@weapon_skill_target]
max = Weapon_Skills[@weapon_id][@weapon_skill_target]
# Increases AP
@skill_ap_totals[@weapon_skill_target] = [current + amount, max].min
end
# If Learn All
else
Weapon_Skills[@weapon_id].each do | skill_id, max |
# Gets Current AP
current = @skill_ap_totals[skill_id]
# Increases AP
@skill_ap_totals[skill_id] = [current + amount, max].min
end
end
end
end
# Earns Armor AP
for i in 1..4
# If Armor Equipped
unless (toto "@armor#{i}_id") == 0
# If Armor Has Skills
if Armor_Skills.has_key?(toto "@armor#{i}_id")
# If One at a time
if Learn_One_Skill
# If Skill has been Set
unless (toto "@armor#{i}_skill_target.nil?")
# Gets Current And Max
current = @skill_ap_totals[(toto "@armor#{i}_skill_target")]
max = Armor_Skills[(toto "@armor#{i}_id")][(toto "@armor#{i}_skill_target")]
# Increases AP
@skill_ap_totals[(toto "@armor#{i}_skill_target")] = [current + amount, max].min
end
# If Learn All
else
Armor_Skills[(toto "@armor#{i}_id")].each do | skill_id, max |
# Gets Current AP
current = @skill_ap_totals[skill_id]
# Increases AP
@skill_ap_totals[skill_id] = [current + amount, max].min
end
end
end
end
end
end
#--------------------------------------------------------------------------
# * Get Newly Mastered Skills
#--------------------------------------------------------------------------
def get_learning_skills
# Unless Learn By AP
return [] unless Learn_By_AP
skills = []
unless @weapon_id == 0
if Weapon_Skills.has_key?(@weapon_id)
Weapon_Skills[@weapon_id].each do |skill_id, max|
unless max == 0
skills << skill_id unless skills.include?(skill_id)
end
end
end
end
for i in 1..4
unless (toto "@armor#{i}_id") == 0
if Armor_Skills.has_key?(toto "@armor#{i}_id")
Armor_Skills[(toto "@armor#{i}_id")].each do |skill_id, max|
unless max == 0
skills << skill_id unless skills.include?(skill_id)
end
end
end
end
end
return skills.uniq.sort
end
#--------------------------------------------------------------------------
# * Get Newly Mastered Skills
#--------------------------------------------------------------------------
def get_newly_mastered_skills
# Unless Learn By AP
return [] unless Learn_By_AP
mastered = []
for skill_id in get_mastered_skills.dup.uniq.sort
unless @mastered_skills.include?(skill_id)
mastered << skill_id
@mastered_skills << skill_id
end
end
return mastered.sort
end
end
#==============================================================================
# ** Window_Base
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# * Include Equipment_Skills
#--------------------------------------------------------------------------
include Equipment_Skills
#--------------------------------------------------------------------------
# Draw Bar
#--------------------------------------------------------------------------
def draw_bar(x, y, min, max, width = 152, height = 6,
bar_color = Color.new(150, 0, 0), end_color = Color.new(255, 255, 60))
# Draw Background
self.contents.fill_rect(x, y, width, height, Color.new(50, 50, 50, 255))
# Draws Bar
for i in 1..( (min.to_f / max.to_f) * width - 3)
r = bar_color.red * (width - i) / width + end_color.red * i / width
g = bar_color.green * (width - i) / width + end_color.green * i / width
b = bar_color.blue * (width - i) / width + end_color.blue * i / width
a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
self.contents.fill_rect(x + 1 + i, y + 1, 1, height - 2,
Color.new(r, g, b, a))
end
end
end
#==============================================================================
# ** Window_Skill
#==============================================================================
class Window_Skill < Window_Selectable
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias seph_weaponskills_windskill_drawitem draw_item
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
# If Learn By AP
unless Learn_By_AP
# Original Draw Item Method
seph_weaponskills_windskill_drawitem(index)
return
end
# If Equipment Skill
skill = @data[index]
# Unless In Battle
unless $game_temp.in_battle
# If Skill is a Equipment Skill
if @actor.skill_ap_totals.has_key?(skill.id)
# Gets AP
ap = @actor.skill_ap_totals[skill.id]
# Alters Font Properties
self.contents.font.size = 16
self.contents.font.bold = true
# Original Draw Item Method
seph_weaponskills_windskill_drawitem(index)
# Location Coordinate
x, y = 4 + index % 2 * (288 + 32), index / 2 * 32
# Default Max
max = 0
# Searches for Max
for weapon in Weapon_Skills.keys
Weapon_Skills[weapon].each do | skill_id, m |
max = m if skill.id == skill_id
end
end
for armor in Armor_Skills.keys
Armor_Skills[armor].each do | skill_id, m |
max = m if skill.id == skill_id
end
end
# Draws Status Bar
draw_bar(x + 132, y + 10, ap, max, 96, 14)
# Draws Progress
text = ap == max ? 'Mastered' : "#{ap} / #{max}"
temp_font = contents.font.dup
self.contents.font.color = Color.new(0, 0, 0)
self.contents.draw_text(x + 133, y + 1, 92, 32, text, 2)
self.contents.font = temp_font
self.contents.draw_text(x + 132, y, 92, 32, text, 2)
end
return
end
# Alters Font Properties
self.contents.font.size = 22
self.contents.font.bold = false
# Original Draw Item Method
seph_weaponskills_windskill_drawitem(index)
end
end
#==============================================================================
# ** Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# * Refresh Skill Status
#--------------------------------------------------------------------------
def refresh_skills_status
# Unless Can Learn By AP
unless Learn_By_AP
refresh
return
end
# Actors Skills
@actors_skills = []
# Alters Windows Contents
if Show_Only_Mastered
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
@actors_skills << actor.get_newly_mastered_skills
end
else
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
@actors_skills << actor.get_learning_skills
end
end
max = 128
for i in 0..3
max = [max, @actors_skills[i].size * 32 + 32].max
end
self.contents = Bitmap.new(width - 32, max)
# Draws Skill Stuff
for i in 0...$game_party.actors.size
# Gets Actor
actor = $game_party.actors[i]
actor_x = i * 160 + 4
# Sets Font
self.contents.font.size = 22
self.contents.font.bold = false
# If No Skills
if @actors_skills[i].size == 0
draw_actor_name(actor, actor_x, 0)
draw_actor_hp(actor, actor_x, 32, 120)
draw_actor_sp(actor, actor_x, 64, 120)
if @level_up_flags[i]
self.contents.font.color = normal_color
self.contents.draw_text(actor_x, 96, 120, 32, "LEVEL UP!")
else
draw_actor_state(actor, actor_x, 96)
end
next
end
# Draws Heading
self.contents.draw_text(actor_x, 0, 120, 32, 'Skill Progress', 1)
# Fixes Font
self.contents.font.size = 14
self.contents.font.bold = true
# Draws Skills
for j in 0...@actors_skills[i].size
y = j * 32 + 32
# Gets AP Amouts
ap = actor.skill_ap_totals[@actors_skills[i][j]]
max = get_max_ap(@actors_skills[i][j])
# Draws Progress
draw_skill_progress(@actors_skills[i][j], ap, max, actor_x, y, 120)
end
end
end
#--------------------------------------------------------------------------
# * Get Max AP Points
#--------------------------------------------------------------------------
def get_max_ap(skill_id)
for weapon_id in Weapon_Skills.keys
Weapon_Skills[weapon_id].each do |s_id, value|
if s_id == skill_id
return value
end
end
end
for armor_id in Armor_Skills.keys
Armor_Skills[armor_id].each do |s_id, value|
if s_id == skill_id
return value
end
end
end
return 0
end
#--------------------------------------------------------------------------
# * Draw Skill Progress
#--------------------------------------------------------------------------
def draw_skill_progress(skill_id, min, max, x, y, width)
# Gets Skill
skill = $data_skills[skill_id]
# Gets Icon
bitmap = RPG::Cache.icon(skill.icon_name)
# Draws Icon
self.contents.blt(x + 4, y + 4, bitmap, Rect.new(0, 0, 24, 24))
# Draws Skill Name
self.contents.draw_text(x + 32, y, width - 32, 16, skill.name)
# Draws Status Bar
draw_bar(x + width - 64, y + 16, min, max, 64, 14)
# Draws Progress
text = min == max ? 'Mastered' : "#{min} / #{max}"
self.contents.font.color = Color.new(0, 0, 0)
self.contents.draw_text(x + width - 63, y + 16, 60, 14, text, 2)
self.contents.font.color = normal_color
self.contents.draw_text(x + width - 64, y + 16, 60, 14, text, 2)
end
end
#==============================================================================
# ** Window_BattleResult_AP
#==============================================================================
class Window_BattleResult_AP < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize(y)
super(160, y, 320, $game_troop.enemies.size * 24 + 56)
self.contents = Bitmap.new(width - 32, height - 32)
self.back_opacity = 160
self.visible = false
self.z = 9999
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
# Gets Troop ID
troop_id = $game_temp.battle_troop_id
# Gets AP Earned
ap = 0
for enemy in $data_troops[troop_id].members
enemy = $data_enemies[enemy.enemy_id]
ap += (Enemy_AP_Values.has_key?(enemy.id) ?
Enemy_AP_Values[enemy.id] : Default_Enemy_AP)
end
# Draws Heading
self.contents.font.color = system_color
self.contents.draw_text(16, 0, contents.width - 32, 24, 'AP Aquired:')
self.contents.draw_text(16, 0, contents.width - 32, 24, ap.to_s, 2)
# Draws Enemies Names, and AP Given
self.contents.font.color = normal_color
enemies = $data_troops[troop_id].members
for i in 0...enemies.size
enemy = $data_enemies[enemies[i].enemy_id]
self.contents.draw_text(4, i * 24 + 24, 280, 24, enemy.name)
ap = Enemy_AP_Values.has_key?(enemy.id) ?
Enemy_AP_Values[enemy.id] : Default_Enemy_AP
self.contents.draw_text(4, i * 24 + 24, contents.width - 8, 24,
ap.to_s, 2)
end
end
end
#==============================================================================
# ** Window_EquipmentSkills
#==============================================================================
class Window_EquipmentSkills < Window_Base
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_reader :item_max
attr_reader :skills
attr_accessor :target_index
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 64, 272, 192)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
self.z = 9999
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh(actor_id, equipment)
# Gets Actor
@actor = $game_party.actors[actor_id]
# Sets Up Skills & Target index
@skills = []
@target_index = nil
@item_max = 0
# Clears & Sets Up Contents
self.contents.clear
self.contents.font.color = system_color
self.contents.font.size = 22
self.contents.font.bold = false
# If No Equipment
if equipment.nil?
self.contents.draw_text(0, 0, 240, 32, 'Nothing Equipped', 1)
return
end
# If Equipment is a item
if equipment.is_a?(RPG::Item)
self.contents.draw_text(0, 0, 240, 32, 'No Skills for Items', 1)
return
end
# Draws Equipment
bitmap = RPG::Cache.icon(equipment.icon_name)
self.contents.blt(4, 4, bitmap, Rect.new(0, 0, 24, 24))
self.contents.draw_text(32, 0, 208, 32, equipment.name, 1)
# Gets Equipment Skills
if equipment.is_a?(RPG::Weapon)
equipment_skills = Weapon_Skills.has_key?(equipment.id) ?
Weapon_Skills[equipment.id] : []
elsif equipment.is_a?(RPG::Armor)
equipment_skills = Armor_Skills.has_key?(equipment.id) ?
Armor_Skills[equipment.id] : []
end
# Draws Skills
self.contents.font.color = normal_color
self.contents.font.size = 14
self.contents.font.bold = true
if equipment_skills.size == 0
self.contents.draw_text(0, 32, 240, 32, 'None', 1)
return
else
equipment_skills.each {| skill_id, max | @skills << [skill_id, max]}
@skills.sort! {|a, b| a[0] <=> b[0]}
for i in 0...@skills.size
# Gets AP Total
actor = $game_party.actors[actor_id]
skill_id = @skills[i][0]
ap = actor_id == - 1 ? 0 :actor.skill_ap_totals[skill_id]
max = @skills[i][1]
draw_skill_progress(skill_id, ap, max, 0, 40 + i * 24, 236)
end
end
@item_max = @skills.size
# If One Target
if Learn_One_Skill
case equipment
when RPG::Weapon
skill_target = @actor.weapon_skill_target
when RPG::Armor
case equipment.kind
when 0
skill_target = @actor.armor1_skill_target
when 1
skill_target = @actor.armor2_skill_target
when 2
skill_target = @actor.armor3_skill_target
when 3
skill_target = @actor.armor4_skill_target
end
end
for i in 0...@skills.size
if @skills[i][0] == skill_target
@target_index = i + 1
end
end
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
if Learn_One_Skill
update_cursor_rect
end
end
#--------------------------------------------------------------------------
# * Cursor Rectangle Update
#--------------------------------------------------------------------------
def update_cursor_rect
if @target_index.nil?
self.cursor_rect.empty
else
self.cursor_rect.set(0, 40 + (@target_index - 1) * 24, 240, 24)
end
end
#--------------------------------------------------------------------------
# * Draw Skill Progress
#--------------------------------------------------------------------------
def draw_skill_progress(skill_id, min, max, x, y, width)
# Gets Skill
skill = $data_skills[skill_id]
# Gets Icon
bitmap = RPG::Cache.icon(skill.icon_name)
# Draws Icon
self.contents.blt(x + 4, y, bitmap, Rect.new(0, 0, 24, 24))
# Draws Skill Name
self.contents.draw_text(x + 32, y, 240 - x - 32, 24, skill.name)
# Draws Status Bar
draw_bar(x + width - 96, y + 2, min, max, 96, 20)
# Draws Progress
text = min == max ? 'Mastered' : "#{min} / #{max}"
self.contents.font.color = Color.new(0, 0, 0, 255)
self.contents.draw_text(x + width - 99, y + 1, 96, 24, text, 2)
self.contents.font.color = normal_color
self.contents.draw_text(x + width - 100, y, 96, 24, text, 2)
end
end
#==============================================================================
# ** Scene_Equip
#==============================================================================
class Scene_Equip
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias seph_weaponskills_sceneequip_main main
alias seph_weaponskills_sceneequip_update update
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# Equipment Skill Status Window
@equipment_skill_status = Window_EquipmentSkills.new
# Stores Indexes
@r_index, @i_index = @equip_index, 0
# Original Main Method
seph_weaponskills_sceneequip_main
# Disposes Skill Status Window
@equipment_skill_status.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# Updates Equipment Skills Window
@equipment_skill_status.update
# If A Button is Pressed
if Input.trigger?(Input::A)
# Play Cursor SE
$game_system.se_play($data_system.cursor_se)
# If Window is off
unless @equipment_skill_status.visible
# Turn On Window
@equipment_skill_status.visible = true
# Refresh Window
refresh_equipment_skills
else
# Turns Off Window
@equipment_skill_status.visible = false
end
end
# If Window On
if @equipment_skill_status.visible
# If Right Window Active
if @right_window.active
# If Index is different
unless @right_window.index == @r_index
@r_index = @right_window.index
# Refresh Weappn Skills
refresh_equipment_skills
end
elsif @item_window.active
# If Index is different
unless @item_window.index == @i_index
@i_index = @item_window.index
# Refresh Equipment Skills
refresh_equipment_skills
end
end
end
# Original Update Method
seph_weaponskills_sceneequip_update
# One Skill Assignment
if Equipment_Skills::Learn_One_Skill
if @equipment_skill_status.visible
max = @equipment_skill_status.item_max
return if max == 0
@help_window.set_text("Press 1 - #{max} to Assign Skill Target")
# If Key is Pressed
for i in 1..max
if Keyboard.trigger?(Keyboard::Numberkeys[i])
@equipment_skill_status.target_index = i
skill_id = @equipment_skill_status.skills[i - 1][0]
case @right_window.item
when RPG::Weapon
@actor.weapon_skill_target = skill_id
when RPG::Armor
case @right_window.item.kind
when 0
@actor.armor1_skill_target = skill_id
when 1
@actor.armor2_skill_target = skill_id
when 2
@actor.armor3_skill_target = skill_id
when 3
@actor.armor4_skill_target = skill_id
end
end
end
end
end
end
end
#--------------------------------------------------------------------------
# * Refresh : Weapon Skills Window
#--------------------------------------------------------------------------
def refresh_equipment_skills
# Refresh Window
if @right_window.active
@equipment_skill_status.refresh(@actor_index, @right_window.item)
elsif @item_window.active
@equipment_skill_status.refresh(@actor_index, @item_window.item)
end
end
end
#==============================================================================
# ** Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
# * Include Equipment_Skills
#--------------------------------------------------------------------------
include Equipment_Skills
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias seph_weaponskills_scenebattle_main main
alias seph_weaponskills_scenebattle_sp5 start_phase5
alias seph_weaponskills_scenebattle_up5 update_phase5
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# Original Main Method
seph_weaponskills_scenebattle_main
# Disposes AP Aquired Window
@ap_result_window.dispose unless @ap_result_window.nil?
end
#--------------------------------------------------------------------------
# * Start After Battle Phase
#--------------------------------------------------------------------------
def start_phase5
# Orignal Start Phase 5 Method
seph_weaponskills_scenebattle_sp5
# If Learn By AP
if Learn_By_AP
# Gets AP Total
ap = 0
for enemy in $data_troops[@troop_id].members
enemy = $data_enemies[enemy.enemy_id]
ap += (Enemy_AP_Values.has_key?(enemy.id) ?
Enemy_AP_Values[enemy.id] : Default_Enemy_AP)
end
# Earns AP
for actor in $game_party.actors
actor.earn_ap(ap)
end
# Creates Aquired Ap Window
@ap_result_window = Window_BattleResult_AP.new(160 + @result_window.height / 2)
end
end
#--------------------------------------------------------------------------
# * Frame Update (after battle phase)
#--------------------------------------------------------------------------
def update_phase5
# Orignal Update Phase 5 Method
seph_weaponskills_scenebattle_up5
# Show AP Result Window
# Show Victory Skills Window
if Show_Victory_Skills
if @phase5_wait_count == 0
@phase5_wait_count -= 1
@status_window.refresh_skills_status
end
if @status_window.contents.height > 128
if Input.press?(Input::UP)
if @status_window.oy > 0
@status_window.oy -= 8
end
elsif Input.press?(Input::DOWN)
if @status_window.oy < @status_window.contents.height - 128
@status_window.oy += 8
end
end
end
end
end
end
#==============================================================================
# ** Scene_Shop
#==============================================================================
class Scene_Shop
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias seph_weaponskills_sceneshop_main main
alias seph_weaponskills_sceneshop_update update
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# Weapon Skill Status Window
@equipment_skill_status = Window_EquipmentSkills.new
@equipment_skill_status.x = 368
@equipment_skill_status.y = 288
# Stores Index
@b_index, @s_index = 0, 0
# Original Main Method
seph_weaponskills_sceneshop_main
# Disposes Skill Status Window
@equipment_skill_status.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# If buy window is active: call update_buy
if @buy_window.active || @sell_window.active
# Update Weapon Skills
update_seph_equipment_skills
else
if @equipment_skill_status.visible
@equipment_skill_status.visible = false
end
end
# Orignal Update Method
seph_weaponskills_sceneshop_update
end
#--------------------------------------------------------------------------
# * Frame Update : Equipment Skills
#--------------------------------------------------------------------------
def update_seph_equipment_skills
# If A Button is Pressed
if Input.trigger?(Input::A)
# Play Cursor SE
$game_system.se_play($data_system.cursor_se)
# If Window is off
unless @equipment_skill_status.visible
# Turn On Window
@equipment_skill_status.visible = true
# Refresh Equipment Skills
refresh_equipment_skills
else
# Turns Off Window
@equipment_skill_status.visible = false
end
end
# If Equipment Skills On
if @equipment_skill_status.visible
# If Right Window Active
if @buy_window.active
# If Index is different
unless @buy_window.index == @b_index
@b_index = @buy_window.index
# Refresh Equipment Skills
refresh_equipment_skills
end
elsif @sell_window.active
# If Index is different
unless @sell_window.index == @s_index
@s_index = @sell_window.index
# Refresh Equipment Skills
refresh_equipment_skills
end
end
end
end
#--------------------------------------------------------------------------
# * Refresh : Equipment Skills Window
#--------------------------------------------------------------------------
def refresh_equipment_skills
# Refresh Window
if @buy_window.active
@equipment_skill_status.refresh(-1, @buy_window.item)
elsif @sell_window.active
@equipment_skill_status.refresh(-1, @sell_window.item)
end
end
end
#--------------------------------------------------------------------------
# * End SDK Enable Test
#--------------------------------------------------------------------------
end
Level Up
Code:
#==============================================================================
# ■ Level Up Display System
#======================================
# By: Akxiv (Modified By: Sutebe-san)
# Date: 06.17.06
# Version: 2.0
#======================================
#==============================================================================
# Scene Battle
#==============================================================================
class Scene_Battle
LEVEL_UP_SE = "" # Soundeffect for Level UP
LEVEL_UP_ME = "" # Audio Sound for Level UP
end
class Window_SkillLearning < Window_Base
SKILLLEARN_SE = "Audio/SE/106-Heal02" # Soundeffect if Skill learning
end
#==============================================================================
# Window_LevelUpWindow
#------------------------------------------------------------------------------
#==============================================================================
class Window_LevelUpWindow < Window_Base
#--------------------------------------------------------------------------
def initialize(x, y, actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
# super(x, y, 160, 192+64)
super(x-x, y-110, 160, 192+110)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
self.back_opacity = 160
refresh(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
end
#--------------------------------------------------------------------------
def refresh(actor, last_lv, up_hp, up_sp, up_str, up_dex, up_agi, up_int)
self.contents.clear
self.contents.font.color = system_color
self.contents.font.size = 20
self.contents.font.name = "Arial"
self.contents.draw_text( 20, 0, 160, 24, "LEVEL UP!!")
self.contents.font.size = 20
self.contents.font.name = "Arial"
self.contents.draw_text( 0, 28+64, 160, 24, $data_system.words.hp)
self.contents.draw_text( 0, 50+64, 160, 24, $data_system.words.sp)
self.contents.font.size = 20
self.contents.font.name = "Arial"
self.contents.draw_text( 0, 0+64, 80, 24, "Level")
self.contents.draw_text( 0, 72+64, 80, 24, $data_system.words.str[0,3])
self.contents.draw_text( 0, 94+64, 80, 24, $data_system.words.dex[0,3])
self.contents.draw_text( 0, 116+64, 80, 24, $data_system.words.agi[0,3])
self.contents.draw_text( 0, 138+64, 80, 24, $data_system.words.int[0,3])
self.contents.draw_text(76, 0+64, 128, 24, "=")
self.contents.draw_text(76, 28+64, 128, 24, "=")
self.contents.draw_text(76, 50+64, 128, 24, "=")
self.contents.draw_text(76, 72+64, 128, 24, "=")
self.contents.draw_text(76, 94+64, 128, 24, "=")
self.contents.draw_text(76, 116+64, 128, 24, "=")
self.contents.draw_text(76, 138+64, 128, 24, "=")
self.contents.font.size = 20
self.contents.font.color = normal_color
self.contents.draw_text( 0, 0+64, 72, 24, "+" + (actor.level-last_lv).to_s, 2)
self.contents.draw_text( 0, 28+64, 72, 24, "+" + up_hp.to_s, 2)
self.contents.draw_text( 0, 50+64, 72, 24, "+" + up_sp.to_s, 2)
self.contents.draw_text( 0, 72+64, 72, 24, "+" + up_str.to_s, 2)
self.contents.draw_text( 0, 94+64, 72, 24, "+" + up_dex.to_s, 2)
self.contents.draw_text( 0, 116+64, 72, 24, "+" + up_agi.to_s, 2)
self.contents.draw_text( 0, 138+64, 72, 24, "+" + up_int.to_s, 2)
self.contents.font.size = 20
self.contents.font.name = "Arial"
self.contents.draw_text( 0, 0+64, 128, 24, actor.level.to_s, 2)
self.contents.draw_text( 0, 26+64, 128, 24, actor.maxhp.to_s, 2)
self.contents.draw_text( -40, 26, 128, 24, actor.name, 2)
self.contents.draw_text( 0, 48+64, 128, 24, actor.maxsp.to_s, 2)
self.contents.draw_text( 0, 70+64, 128, 24, actor.str.to_s, 2)
self.contents.draw_text( 0, 92+64, 128, 24, actor.dex.to_s, 2)
self.contents.draw_text( 0, 114+64, 128, 24, actor.agi.to_s, 2)
self.contents.draw_text( 0, 136+64, 128, 24, actor.int.to_s, 2)
end
end
#==============================================================================
# ¡ Window_SkillLearning
#==============================================================================
class Window_SkillLearning < Window_Base
#--------------------------------------------------------------------------
attr_reader :learned
#--------------------------------------------------------------------------
def initialize(class_id, last_lv, now_lv)
super(160, 64-32, 320, 64)
self.contents = Bitmap.new(width - 32, height - 28)
self.visible = false
self.back_opacity = 160
@learned = false
refresh(class_id, last_lv, now_lv)
end
#--------------------------------------------------------------------------
def refresh(class_id, last_lv, now_lv)
for i in 0...$data_classes[class_id].learnings.size
learn_lv = $data_classes[class_id].learnings[i].level
if learn_lv > last_lv and learn_lv <= now_lv
@learned = true
if SKILLLEARN_SE != "" #SE for Skilllearning
Audio.se_play(SKILLLEARN_SE)
end
skill_name = $data_skills[$data_classes[class_id].learnings[i].skill_id].name
self.contents.clear
self.contents.font.name = "Arial"
self.contents.draw_text(0,0,448,32, skill_name + " learned !!") #Skillname and then your text (here is for example Cut learned !!)
self.visible = true
loop do
Graphics.update
Input.update
update
if @learned == false
break
end
end
end
end
end
#--------------------------------------------------------------------------
def update
if Input.trigger?(Input::C)
@learned = false
self.visible = false
end
end
end
#==============================================================================
# Window_BattleStatus
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
attr_accessor :level_up_flags # LEVEL UP!
end
#==============================================================================
# Scene_Battle
#==============================================================================
class Scene_Battle
#--------------------------------------------------------------------------
alias xrxs_bp10_start_phase5 start_phase5
def start_phase5
xrxs_bp10_start_phase5
@exp_gained = battle_exp
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
if actor.cant_get_exp? == false
last_level = actor.level
actor.exp -= @exp_gained
if actor.level < last_level
@status_window.level_up_flags[i] = false
end
end
end
@exp_gain_actor = -1
@result_window.visible = true
unless @ap_result_window.nil?
@ap_result_window.visible = @result_window.visible
end
end
#--------------------------------------------------------------------------
alias xrxs_bp10_update_phase5 update_phase5
def update_phase5
@level_up_phase_done = false if @level_up_phase_done != true
if Input.trigger?(Input::C)
@levelup_window.visible = false if @levelup_window != nil
@status_window.level_up_flags[@exp_gain_actor] = false
@level_up_phase_done = phase5_next_levelup
end
if @level_up_phase_done
if @phase5_wait_count < 2
@result_window.opacity = 0
@result_window.back_opacity = 0
@result_window.contents_opacity = 0
end
xrxs_bp10_update_phase5
battle_end(0) if @levelup_window != nil and @phase5_wait_count <= 0
end
end
#--------------------------------------------------------------------------
def phase5_next_levelup
begin
@exp_gain_actor += 1
if @exp_gain_actor >= $game_party.actors.size
return true
end
actor = $game_party.actors[@exp_gain_actor]
if actor.cant_get_exp? == false
last_level = actor.level
last_maxhp = actor.maxhp
last_maxsp = actor.maxsp
last_str = actor.str
last_dex = actor.dex
last_agi = actor.agi
last_int = actor.int
actor.exp += @exp_gained
if actor.level > last_level
@status_window.level_up(@exp_gain_actor)
@result_window.visible = false
@ap_result_window.visible = false
if LEVEL_UP_SE != ""
Audio.se_play(LEVEL_UP_SE)
end
if LEVEL_UP_ME != ""
Audio.me_stop
Audio.me_play(LEVEL_UP_ME)
end
actors_size = [$game_party.actors.size, 4].max
x_shift = 160 + (640 - 160*actors_size)/(actors_size - 1)
x = x_shift * @exp_gain_actor
y = 128
@levelup_window = Window_LevelUpWindow.new(x, y, actor, last_level,
actor.maxhp - last_maxhp, actor.maxsp - last_maxsp, actor.str - last_str,
actor.dex - last_dex, actor.agi - last_agi, actor.int - last_int)
@levelup_window.visible = true
@status_window.refresh
@skilllearning_window = Window_SkillLearning.new(actor.class_id, last_level, actor.level)
@phase5_wait_count = 45
return false
end
end
end until false
end
#--------------------------------------------------------------------------
def battle_exp
bexp = 0
for enemy in $game_troop.enemies
unless enemy.hidden
bexp += enemy.exp
end
end
return bexp
end
end
Instructions
Place both above main.
**NOTE: the 'Equipment Skills' script must be above the 'Level Up' script.
FAQ
N/A
Compatibility
SDK Compatible and Compliant.
Credits and Thanks
Equipment Skills script was created by SephirothSpawn
Level Up script was done by Akxiv
Combination and Modifications by TsengTsuzaki
Author's Notes
N/A