#============================================================================== # ** Equipment Skills #------------------------------------------------------------------------------ # SephirothSpawn # 2006-04-13 # Version 2.01 #------------------------------------------------------------------------------ # * 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 = 1 #-------------------------------------------------------------------------- # * 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 => { 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 #-------------------------------------------------------------------------- # * 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 weapon_skills = Equipment_Skills::Weapon_Skills armor_skills = Equipment_Skills::Armor_Skills equipment = weapon_skills.values + armor_skills.values for skill_data in equipment 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 Equipment_Skills::Disable_Until_Learned # Creates Skills Array skills = [] # Gets Weapon & Armor Skills Contants weapon_skills = Equipment_Skills::Weapon_Skills armor_skills = Equipment_Skills::Armor_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 Equipment_Skills::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 (eval "@armor#{i}_id") == 0 # If Armor Has Skill if armor_skills.has_key?(eval "@armor#{i}_id") armor_skills[(eval "@armor#{i}_id")].each do | skill_id, value | if Equipment_Skills::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 Equipment_Skills::Learn_By_AP # Starts Skills Array skills = [] # Gets Weapon & Armor Skills Contants weapon_skills = Equipment_Skills::Weapon_Skills armor_skills = Equipment_Skills::Armor_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 Equipment_Skills::Learn_By_AP # Gets Weapon & Armor Skills Contants weapon_skills = Equipment_Skills::Weapon_Skills armor_skills = Equipment_Skills::Armor_Skills # Earns Weapon AP unless @weapon_id == 0 # If Weapon Has Skills if weapon_skills.has_key?(@weapon_id) # If One at a time if Equipment_Skills::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 (eval "@armor#{i}_id") == 0 # If Armor Has Skills if armor_skills.has_key?(eval "@armor#{i}_id") # If One at a time if Equipment_Skills::Learn_One_Skill # If Skill has been Set unless (eval "@armor#{i}_skill_target.nil?") # Gets Current And Max current = @skill_ap_totals[(eval "@armor#{i}_skill_target")] max = armor_skills[(eval "@armor#{i}_id")][(eval "@armor#{i}_skill_target")] # Increases AP @skill_ap_totals[(eval "@armor#{i}_skill_target")] = [current + amount, max].min end # If Learn All else armor_skills[(eval "@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 Equipment_Skills::Learn_By_AP skills = [] # Gets Weapon & Armor Skills Contants weapon_skills = Equipment_Skills::Weapon_Skills armor_skills = Equipment_Skills::Armor_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 (eval "@armor#{i}_id") == 0 if armor_skills.has_key?(eval "@armor#{i}_id") armor_skills[(eval "@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 Equipment_Skills::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 #-------------------------------------------------------------------------- # 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 Equipment_Skills::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 Equipment_Skills::Weapon_Skills.keys Equipment_Skills::Weapon_Skills[weapon].each do | skill_id, m | max = m if skill.id == skill_id end end for armor in Equipment_Skills::Armor_Skills.keys Equipment_Skills::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 Equipment_Skills::Learn_By_AP refresh return end # Actors Skills @actors_skills = [] # Alters Windows Contents if Equipment_Skills::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 Equipment_Skills::Weapon_Skills.keys Equipment_Skills::Weapon_Skills[weapon_id].each do |s_id, value| if s_id == skill_id return value end end end for armor_id in Equipment_Skills::Armor_Skills.keys Equipment_Skills::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 Enemy Ap Value enemy_ap_values = Equipment_Skills::Enemy_AP_Values # 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] : Equipment_Skills::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] : Equipment_Skills::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 = Equipment_Skills::Weapon_Skills.has_key?(equipment.id) ? Equipment_Skills::Weapon_Skills[equipment.id] : [] elsif equipment.is_a?(RPG::Armor) equipment_skills = Equipment_Skills::Armor_Skills.has_key?(equipment.id) ? Equipment_Skills::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 Equipment_Skills::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 Equipment_Skills::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 # Update Keyboard Input Module Keyboard.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 : Weappn 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 #-------------------------------------------------------------------------- # * 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 Equipment_Skills::Learn_By_AP # Gets Enemy AP Values enemy_ap_values = Equipment_Skills::Enemy_AP_Values # 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] : Equipment_Skills::Default_Enemy_AP) end # Earns AP for actor in $game_party.actors actor.earn_ap(ap) end end # If Show Results Window if Equipment_Skills::Show_Victory_Skills # 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 # Return return unless Equipment_Skills::Show_Victory_Skills # Show AP Result Window unless @ap_result_window.nil? @ap_result_window.visible = @result_window.visible end 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 #============================================================================== # ** 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