Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upGitHub is where the world builds software
Millions of developers and companies build, ship, and maintain their software on GitHub — the largest and most advanced development platform in the world.
| #============================================================================== | |
| # | |
| # ▼ Yanfly Engine Ace - Learn Skill Engine v1.00 | |
| # -- Last Updated: 2012.01.08 | |
| # -- Level: Normal, Hard | |
| # -- Requires: n/a | |
| # | |
| #============================================================================== | |
| $imported = {} if $imported.nil? | |
| $imported["YEA-LearnSkillEngine"] = true | |
| #============================================================================== | |
| # ▼ Updates | |
| # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | |
| # 2012.01.08 - Started Script and Finished. | |
| # | |
| #============================================================================== | |
| # ▼ Introduction | |
| # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | |
| # For those who want an alternative for actors to learn skills outside of | |
| # leveling, this script allows actors to learn skills through a learn skill | |
| # menu. The actor can use acquired JP, EXP, or Gold to learn skills. Skills can | |
| # also be hidden until certain requirements are met. | |
| # | |
| #============================================================================== | |
| # ▼ Instructions | |
| # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | |
| # To install this script, open up your script editor and copy/paste this script | |
| # to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save. | |
| # | |
| # ----------------------------------------------------------------------------- | |
| # Class Notetags - These notetags go in the class notebox in the database. | |
| # ----------------------------------------------------------------------------- | |
| # <learn skills: x> | |
| # <learn skills: x, x> | |
| # Sets the class to be able to learn skills x through the Learn Skills menu. | |
| # Insert multiple of these tags to increase the number of skills learned. | |
| # | |
| # ----------------------------------------------------------------------------- | |
| # Skill Notetags - These notetags go in the skill notebox in the database. | |
| # ----------------------------------------------------------------------------- | |
| # <learn cost: x jp> | |
| # <learn cost: x exp> | |
| # <learn cost: x gold> | |
| # Sets the learn for cost the skill to require x amounts of JP, x amounts of | |
| # exp, or x amounts of gold. Only one type of cost can be used at a time. For | |
| # JP costs, the Yanfly Engine Ace - JP Manager script must be installed. | |
| # | |
| # <learn require level: x> | |
| # Sets the skill to require the actor's current level to be x before the skill | |
| # will show up in the skill learning window. | |
| # | |
| # <learn require skill: x> | |
| # <learn require skill: x, x> | |
| # Sets the skill to require learning skill x (through any means) before the | |
| # skill becomes visible in the skill learning window. Insert multiples of these | |
| # tags to require more skills to be learned in order for the skill to show. | |
| # | |
| # <learn require switch: x> | |
| # <learn require switch: x, x> | |
| # Sets the skill to require switch x to be ON in order for it to show in the | |
| # skill learning window. Insert multiple switches to to increase the number of | |
| # switches needed to be ON before the skill is shown. | |
| # | |
| # <learn require eval> | |
| # string | |
| # string | |
| # </learn require eval> | |
| # For the more advanced users, replace string with lines of code to check for | |
| # whether or not the skill will be shown in skill learning window. If multiple | |
| # lines are used, they are all considered part of the same line. | |
| # | |
| #============================================================================== | |
| # ▼ Compatibility | |
| # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= | |
| # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that | |
| # it will run with RPG Maker VX without adjusting. | |
| # | |
| # This script is compatible with Yanfly Engine Ace - JP Manager v1.00+. The | |
| # placement of this script relative to the JP Manager script doesn't matter. | |
| # | |
| #============================================================================== | |
| module YEA | |
| module LEARN_SKILL | |
| #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | |
| # - General Settings - | |
| #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | |
| # Adjust the general settings here for your game. These adjust how the | |
| # command name appears, a switch to show the Learn Command | |
| #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | |
| COMMAND_NAME = "Learn Skills" # Name used for Learn Skill command. | |
| # This switch will hide the "Learn" command from view if the switch is OFF. | |
| # The "Learn" command will be shown if the switch is ON. Set this switch to | |
| # 0 to not use this effect and to always have the Learn command be shown. | |
| SHOW_SWITCH = 0 | |
| # This adjusts the order the Skill Types appear in for the command window. | |
| # Any Skill Types unlisted will not be shown. | |
| STYPE_ORDER = [41..999, 1..40] | |
| # For those who installed Yanfly Engine - Skill Restrictions, you can | |
| # choose to display warmups or cooldowns inside of the menu here. | |
| DRAW_WARMUP = true # Draw warmups for skills? | |
| DRAW_COOLDOWN = true # Draw cooldowns for skills? | |
| #------------------------------------------------------------------------- | |
| # - Default Cost - | |
| #------------------------------------------------------------------------- | |
| # This sets the default costs for all skills. If the JP script isn't | |
| # installed, the type will become :exp instead. | |
| # | |
| # Cost Type Description | |
| # :jp - Requires YEA - JP Manager. | |
| # :exp - Makes skill cost EXP. | |
| # :gold - Makes skill cost gold. | |
| #------------------------------------------------------------------------- | |
| DEFAULT_COST = 100 # Sets the default cost of a skill. | |
| DEFAULT_TYPE = :jp # Sets the default cost type. | |
| #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | |
| # - Learn Window Settings - | |
| #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | |
| # These settings adjust the Learn Window's visual appearance. Adjust the | |
| # way empty text appears, EXP cost suffixes appear, Learned text appears, | |
| # font sizes, and cost colours here. | |
| #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | |
| EMPTY_TEXT = "-" # Text if no restricts used for the skill. | |
| EXP_TEXT = "EXP" # Text used for EXP costs. | |
| LEARNED_TEXT = "Learned" # Text to indicate skill has been learned. | |
| LEARNED_SIZE = 20 # Font size used for learned skill text. | |
| COLOUR_JP = 24 # Text colour used for JP Cost. | |
| COLOUR_EXP = 5 # Text colour used for EXP Cost. | |
| COLOUR_GOLD = 21 # Text colour used for Gold Cost. | |
| COST_SIZE = 20 # Font size used for skill costs. | |
| #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | |
| # - Cost Window Settings - | |
| #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | |
| # When a skill is selected to be learned, the cost window appears. Adjust | |
| # the settings here to choose how your game's cost window looks. Change the | |
| # maximum number of rows, the gold icon used for gold costs, the gold text, | |
| # the learn skill text, the cancel text, and the cancel icon here. | |
| #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- | |
| MAXIMUM_ROWS = 8 # Maximum number of rows displayed. | |
| GOLD_ICON = 361 # Icon used for gold costs. | |
| GOLD_TEXT = "Gold Cost" # Text used for gold costs. | |
| LEARN_SKILL_TEXT = "Learn %s?" # Text used to learn skill. | |
| LEARN_CANCEL_TEXT = "Cancel" # Text used for do not learn. | |
| CANCEL_ICON = 187 # Icon used for cancel. | |
| end # LEARN_SKILL | |
| end # YEA | |
| #============================================================================== | |
| # ▼ Editting anything past this point may potentially result in causing | |
| # computer damage, incontinence, explosion of user's head, coma, death, and/or | |
| # halitosis so edit at your own risk. | |
| #============================================================================== | |
| module YEA | |
| module LEARN_SKILL | |
| module_function | |
| #-------------------------------------------------------------------------- | |
| # convert_integer_array | |
| #-------------------------------------------------------------------------- | |
| def convert_integer_array(array) | |
| result = [] | |
| array.each { |i| | |
| case i | |
| when Range; result |= i.to_a | |
| when Integer; result |= [i] | |
| end } | |
| return result | |
| end | |
| #-------------------------------------------------------------------------- | |
| # converted_contants | |
| #-------------------------------------------------------------------------- | |
| STYPE_ORDER = convert_integer_array(STYPE_ORDER) | |
| end # LEARN_SKILL | |
| module REGEXP | |
| module CLASS | |
| LEARN_SKILLS = /<(?:LEARN_SKILLS|learn skills):[ ](\d+(?:\s*,\s*\d+)*)>/i | |
| end # CLASS | |
| module SKILL | |
| LEARN_COST = /<(?:LEARN_COST|learn cost):[ ](.*)>/i | |
| LEARN_REQUIRE_LEVEL = | |
| /<(?:LEARN_REQUIRE_LEVEL|learn require level):[ ](\d+)>/i | |
| LEARN_REQUIRE_SKILL = | |
| /<(?:LEARN_REQUIRE_SKILL|learn require skill):[ ](\d+(?:\s*,\s*\d+)*)>/i | |
| LEARN_REQUIRE_SWITCH = | |
| /<(?:LEARN_REQUIRE_SWITCH|learn require switch):[ ](\d+(?:\s*,\s*\d+)*)>/i | |
| LEARN_REQUIRE_EVAL_ON = /<(?:LEARN_REQUIRE_EVAL|learn require eval)>/i | |
| LEARN_REQUIRE_EVAL_OFF = /<\/(?:LEARN_REQUIRE_EVAL|learn require eval)>/i | |
| end # SKILL | |
| end # REGEXP | |
| end # YEA | |
| #============================================================================== | |
| # ■ Numeric | |
| #============================================================================== | |
| class Numeric | |
| #-------------------------------------------------------------------------- | |
| # new method: group_digits | |
| #-------------------------------------------------------------------------- | |
| unless $imported["YEA-CoreEngine"] | |
| def group; return self.to_s; end | |
| end # $imported["YEA-CoreEngine"] | |
| end # Numeric | |
| #============================================================================== | |
| # ■ Icon | |
| #============================================================================== | |
| module Icon | |
| #-------------------------------------------------------------------------- | |
| # self.cancel | |
| #-------------------------------------------------------------------------- | |
| def self.cancel | |
| return YEA::LEARN_SKILL::CANCEL_ICON | |
| end | |
| #-------------------------------------------------------------------------- | |
| # self.learn_skill_gold | |
| #-------------------------------------------------------------------------- | |
| def self.learn_skill_gold | |
| return YEA::LEARN_SKILL::GOLD_ICON | |
| end | |
| end # Icon | |
| #============================================================================== | |
| # ■ Switch | |
| #============================================================================== | |
| module Switch | |
| #-------------------------------------------------------------------------- | |
| # self.show_learn_skill | |
| #-------------------------------------------------------------------------- | |
| def self.show_learn_skill | |
| return true if YEA::LEARN_SKILL::SHOW_SWITCH <= 0 | |
| return $game_switches[YEA::LEARN_SKILL::SHOW_SWITCH] | |
| end | |
| end # Switch | |
| #============================================================================== | |
| # ■ DataManager | |
| #============================================================================== | |
| module DataManager | |
| #-------------------------------------------------------------------------- | |
| # alias method: load_database | |
| #-------------------------------------------------------------------------- | |
| class <<self; alias load_database_lse load_database; end | |
| def self.load_database | |
| load_database_lse | |
| load_notetags_lse | |
| end | |
| #-------------------------------------------------------------------------- | |
| # new method: load_notetags_lse | |
| #-------------------------------------------------------------------------- | |
| def self.load_notetags_lse | |
| groups = [$data_classes, $data_skills] | |
| for group in groups | |
| for obj in group | |
| next if obj.nil? | |
| obj.load_notetags_lse | |
| end | |
| end | |
| end | |
| end # DataManager | |
| #============================================================================== | |
| # ■ RPG::Class | |
| #============================================================================== | |
| class RPG::Class < RPG::BaseItem | |
| #-------------------------------------------------------------------------- | |
| # public instance variables | |
| #-------------------------------------------------------------------------- | |
| attr_accessor :learn_skills | |
| #-------------------------------------------------------------------------- | |
| # common cache: load_notetags_lse | |
| #-------------------------------------------------------------------------- | |
| def load_notetags_lse | |
| @learn_skills = [] | |
| #--- | |
| self.note.split(/[\r\n]+/).each { |line| | |
| case line | |
| #--- | |
| when YEA::REGEXP::CLASS::LEARN_SKILLS | |
| $1.scan(/\d+/).each { |num| | |
| @learn_skills.push(num.to_i) if num.to_i > 0 } | |
| end | |
| } # self.note.split | |
| #--- | |
| end | |
| end # RPG::Class | |
| #============================================================================== | |
| # ■ RPG::Skill | |
| #============================================================================== | |
| class RPG::Skill < RPG::UsableItem | |
| #-------------------------------------------------------------------------- | |
| # public instance variables | |
| #-------------------------------------------------------------------------- | |
| attr_accessor :learn_cost | |
| attr_accessor :learn_require_level | |
| attr_accessor :learn_require_skill | |
| attr_accessor :learn_require_switch | |
| attr_accessor :learn_require_eval | |
| #-------------------------------------------------------------------------- | |
| # common cache: load_notetags_lse | |
| #-------------------------------------------------------------------------- | |
| def load_notetags_lse | |
| @learn_cost = [YEA::LEARN_SKILL::DEFAULT_COST] | |
| @learn_cost.push(YEA::LEARN_SKILL::DEFAULT_TYPE) | |
| @learn_require_level = 0 | |
| @learn_require_skill = [] | |
| @learn_require_switch = [] | |
| @learn_require_eval_on = false | |
| #--- | |
| self.note.split(/[\r\n]+/).each { |line| | |
| case line | |
| #--- | |
| when YEA::REGEXP::SKILL::LEARN_COST | |
| case $1.upcase | |
| when /(\d+)[ ]JP/i | |
| next unless $imported["YEA-JPManager"] | |
| @learn_cost = [$1.to_i, :jp] | |
| when /(\d+)[ ]EXP/i | |
| @learn_cost = [$1.to_i, :exp] | |
| when /(\d+)[ ]GOLD/i | |
| @learn_cost = [$1.to_i, :gold] | |
| end | |
| #--- | |
| when YEA::REGEXP::SKILL::LEARN_REQUIRE_LEVEL | |
| @learn_require_level = $1.to_i | |
| when YEA::REGEXP::SKILL::LEARN_REQUIRE_SKILL | |
| $1.scan(/\d+/).each { |num| | |
| @learn_require_skill.push(num.to_i) if num.to_i > 0 } | |
| when YEA::REGEXP::SKILL::LEARN_REQUIRE_SWITCH | |
| $1.scan(/\d+/).each { |num| | |
| @learn_require_switch.push(num.to_i) if num.to_i > 0 } | |
| #--- | |
| when YEA::REGEXP::SKILL::LEARN_REQUIRE_EVAL_ON | |
| @learn_require_eval_on = true | |
| when YEA::REGEXP::SKILL::LEARN_REQUIRE_EVAL_OFF | |
| @learn_require_eval_on = false | |
| else | |
| next unless @learn_require_eval_on | |
| @learn_require_eval = "" if @learn_require_eval.nil? | |
| @learn_require_eval += line.to_s | |
| #--- | |
| end | |
| } # self.note.split | |
| #--- | |
| if !$imported["YEA-JPManager"] && @learn_cost[1] == :jp | |
| @learn_cost[1] = :exp | |
| end | |
| end | |
| end # RPG::Skill | |
| #============================================================================== | |
| # ■ Game_Actor | |
| #============================================================================== | |
| class Game_Actor < Game_Battler | |
| #-------------------------------------------------------------------------- | |
| # alias method: skills | |
| #-------------------------------------------------------------------------- | |
| alias game_actor_skills_lse skills | |
| def skills | |
| btest_add_learn_skills | |
| game_actor_skills_lse | |
| end | |
| #-------------------------------------------------------------------------- | |
| # new method: btest_add_learn_skills | |
| #-------------------------------------------------------------------------- | |
| def btest_add_learn_skills | |
| return unless $BTEST | |
| for skill_id in self.class.learn_skills; learn_skill(skill_id); end | |
| end | |
| #-------------------------------------------------------------------------- | |
| # new method: exp_class | |
| #-------------------------------------------------------------------------- | |
| def exp_class(class_id) | |
| @exp[class_id] = 0 if @exp[class_id].nil? | |
| return @exp[class_id] | |
| end | |
| #-------------------------------------------------------------------------- | |
| # lose_exp_class | |
| #-------------------------------------------------------------------------- | |
| def lose_exp_class(value, class_id) | |
| exp = exp_class(class_id) - value | |
| change_exp_class(exp, class_id) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # change_exp_class | |
| #-------------------------------------------------------------------------- | |
| def change_exp_class(exp, class_id) | |
| return change_exp(exp, false) if class_id == @class_id | |
| @exp[class_id] = [exp, 0].max | |
| end | |
| end # Game_Actor | |
| #============================================================================== | |
| # ■ Window_SkillCommand | |
| #============================================================================== | |
| class Window_SkillCommand < Window_Command | |
| #-------------------------------------------------------------------------- | |
| # alias method: make_command_list | |
| #-------------------------------------------------------------------------- | |
| alias window_skillcommand_make_command_list_lse make_command_list | |
| def make_command_list | |
| window_skillcommand_make_command_list_lse | |
| return if @actor.nil? | |
| add_learn_skill_command unless $imported["YEA-SkillMenu"] | |
| end | |
| #-------------------------------------------------------------------------- | |
| # new method: add_learn_skill_command | |
| #-------------------------------------------------------------------------- | |
| def add_learn_skill_command | |
| return unless Switch.show_learn_skill | |
| name = YEA::LEARN_SKILL::COMMAND_NAME | |
| add_command(name, :learn_skill, true, @actor.added_skill_types[0]) | |
| end | |
| end # Window_SkillCommand | |
| #============================================================================== | |
| # ■ Window_LearnSkillCommand | |
| #============================================================================== | |
| class Window_LearnSkillCommand < Window_Command | |
| #-------------------------------------------------------------------------- | |
| # public instance variables | |
| #-------------------------------------------------------------------------- | |
| attr_reader :skill_window | |
| #-------------------------------------------------------------------------- | |
| # initialize | |
| #-------------------------------------------------------------------------- | |
| def initialize(dx, dy) | |
| super(dx, dy) | |
| @actor = nil | |
| end | |
| #-------------------------------------------------------------------------- | |
| # window_width | |
| #-------------------------------------------------------------------------- | |
| def window_width; return 160; end | |
| #-------------------------------------------------------------------------- | |
| # visible_line_number | |
| #-------------------------------------------------------------------------- | |
| def visible_line_number; return 4; end | |
| #-------------------------------------------------------------------------- | |
| # actor= | |
| #-------------------------------------------------------------------------- | |
| def actor=(actor) | |
| return if @actor == actor | |
| @actor = actor | |
| refresh | |
| select(item_max - 1) if index >= item_max | |
| end | |
| #-------------------------------------------------------------------------- | |
| # make_command_list | |
| #-------------------------------------------------------------------------- | |
| def make_command_list | |
| return if @actor.nil? | |
| make_unlocked_class_skill_types | |
| correct_unlocked_class_learned_skills | |
| for stype_id in YEA::LEARN_SKILL::STYPE_ORDER | |
| next unless include?(stype_id) | |
| name = $data_system.skill_types[stype_id] | |
| add_command(name, :skill, true, stype_id) | |
| end | |
| end | |
| #-------------------------------------------------------------------------- | |
| # make_unlocked_class_skill_types | |
| #-------------------------------------------------------------------------- | |
| def make_unlocked_class_skill_types | |
| return unless $imported["YEA-ClassSystem"] | |
| @unlocked_types = [] | |
| unlocked_classes = @actor.unlocked_classes.clone | |
| unlocked_classes |= YEA::CLASS_SYSTEM::DEFAULT_UNLOCKS | |
| for class_id in unlocked_classes | |
| next if $data_classes[class_id].nil? | |
| for feature in $data_classes[class_id].features | |
| next unless feature.code == 41 | |
| @unlocked_types.push(feature.data_id) | |
| end | |
| end | |
| end | |
| #-------------------------------------------------------------------------- | |
| # correct_unlocked_class_learned_skills | |
| #-------------------------------------------------------------------------- | |
| def correct_unlocked_class_learned_skills | |
| return unless $imported["YEA-ClassSystem"] | |
| unlocked_classes = @actor.unlocked_classes.clone | |
| unlocked_classes |= YEA::CLASS_SYSTEM::DEFAULT_UNLOCKS | |
| for class_id in unlocked_classes | |
| @actor.learn_class_skills(class_id) | |
| end | |
| end | |
| #-------------------------------------------------------------------------- | |
| # include? | |
| #-------------------------------------------------------------------------- | |
| def include?(stype_id) | |
| return true if @actor.added_skill_types.include?(stype_id) | |
| if $imported["YEA-ClassSystem"] | |
| return true if @unlocked_types.include?(stype_id) | |
| end | |
| return false | |
| end | |
| #-------------------------------------------------------------------------- | |
| # update | |
| #-------------------------------------------------------------------------- | |
| def update | |
| super | |
| @skill_window.stype_id = current_ext if @skill_window | |
| end | |
| #-------------------------------------------------------------------------- | |
| # skill_window= | |
| #-------------------------------------------------------------------------- | |
| def skill_window=(skill_window) | |
| @skill_window = skill_window | |
| update | |
| end | |
| end # Window_LearnSkillCommand | |
| #============================================================================== | |
| # ■ Window_LearnSkillList | |
| #============================================================================== | |
| class Window_LearnSkillList < Window_SkillList | |
| #-------------------------------------------------------------------------- | |
| # col_max | |
| #-------------------------------------------------------------------------- | |
| def col_max; return 1; end | |
| #-------------------------------------------------------------------------- | |
| # select_last | |
| #-------------------------------------------------------------------------- | |
| def select_last; select(0); end | |
| #-------------------------------------------------------------------------- | |
| # actor= | |
| #-------------------------------------------------------------------------- | |
| def actor=(actor) | |
| return if @actor == actor | |
| super(actor) | |
| make_learn_skills_list | |
| end | |
| #-------------------------------------------------------------------------- | |
| # make_learn_skills_list | |
| #-------------------------------------------------------------------------- | |
| def make_learn_skills_list | |
| @learn_skills = [] | |
| @skill_classes = {} | |
| return if @actor.nil? | |
| for skill_id in @actor.class.learn_skills | |
| next if $data_skills[skill_id].nil? | |
| next if @learn_skills.include?($data_skills[skill_id]) | |
| skill = $data_skills[skill_id] | |
| @learn_skills.push(skill) | |
| @skill_classes[skill] = [] if @skill_classes[skill].nil? | |
| @skill_classes[skill].push(@actor.class.id) | |
| end | |
| make_unlocked_class_skills | |
| end | |
| #-------------------------------------------------------------------------- | |
| # make_unlocked_class_skills | |
| #-------------------------------------------------------------------------- | |
| def make_unlocked_class_skills | |
| return unless $imported["YEA-ClassSystem"] | |
| @unlocked_types = [] | |
| unlocked_classes = @actor.unlocked_classes.clone | |
| unlocked_classes |= YEA::CLASS_SYSTEM::DEFAULT_UNLOCKS | |
| for class_id in unlocked_classes | |
| next if $data_classes[class_id].nil? | |
| for skill_id in $data_classes[class_id].learn_skills | |
| next if $data_skills[skill_id].nil? | |
| skill = $data_skills[skill_id] | |
| @learn_skills.push(skill) unless @learn_skills.include?(skill) | |
| @skill_classes[skill] = [] if @skill_classes[skill].nil? | |
| @skill_classes[skill] |= [class_id] | |
| end | |
| end | |
| end | |
| #-------------------------------------------------------------------------- | |
| # skill_classes | |
| #-------------------------------------------------------------------------- | |
| def skill_classes(skill) | |
| return @skill_classes[skill] | |
| end | |
| #-------------------------------------------------------------------------- | |
| # make_item_list | |
| #-------------------------------------------------------------------------- | |
| def make_item_list | |
| return if @learn_skills.nil? | |
| @data = @learn_skills.select {|skill| include?(skill) } | |
| end | |
| #-------------------------------------------------------------------------- | |
| # include? | |
| #-------------------------------------------------------------------------- | |
| def include?(item) | |
| return false if item.nil? | |
| return false unless meet_requirements?(item) | |
| return item.stype_id == @stype_id | |
| end | |
| #-------------------------------------------------------------------------- | |
| # meet_requirements? | |
| #-------------------------------------------------------------------------- | |
| def meet_requirements?(item) | |
| return false if @actor.nil? | |
| return false unless meet_level_requirements?(item) | |
| return false unless meet_skill_requirements?(item) | |
| return false unless meet_switch_requirements?(item) | |
| return false unless meet_eval_requirements?(item) | |
| return true | |
| end | |
| #-------------------------------------------------------------------------- | |
| # meet_level_requirements? | |
| #-------------------------------------------------------------------------- | |
| def meet_level_requirements?(item) | |
| return @actor.level >= item.learn_require_level | |
| end | |
| #-------------------------------------------------------------------------- | |
| # meet_skill_requirements? | |
| #-------------------------------------------------------------------------- | |
| def meet_skill_requirements?(item) | |
| for skill_id in item.learn_require_skill | |
| next if $data_skills[skill_id].nil? | |
| return false unless @actor.skill_learn?($data_skills[skill_id]) | |
| end | |
| return true | |
| end | |
| #-------------------------------------------------------------------------- | |
| # meet_switch_requirements? | |
| #-------------------------------------------------------------------------- | |
| def meet_switch_requirements?(item) | |
| for switch_id in item.learn_require_switch | |
| return false unless $game_switches[switch_id] | |
| end | |
| return true | |
| end | |
| #-------------------------------------------------------------------------- | |
| # meet_eval_requirements? | |
| #-------------------------------------------------------------------------- | |
| def meet_eval_requirements?(item) | |
| return true if item.learn_require_eval.nil? | |
| return eval(item.learn_require_eval) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # enable? | |
| #-------------------------------------------------------------------------- | |
| def enable?(skill) | |
| return false if skill.nil? | |
| return false unless enabled_jp?(skill) | |
| return false unless enabled_exp?(skill) | |
| return false unless enabled_gold?(skill) | |
| return !@actor.skill_learn?(skill) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # enabled_jp? | |
| #-------------------------------------------------------------------------- | |
| def enabled_jp?(skill) | |
| return true if skill.learn_cost[1] != :jp | |
| cost = skill.learn_cost[0] | |
| for class_id in @skill_classes[skill] | |
| return true if @actor.jp(class_id) >= cost | |
| end | |
| return false | |
| end | |
| #-------------------------------------------------------------------------- | |
| # enabled_exp? | |
| #-------------------------------------------------------------------------- | |
| def enabled_exp?(skill) | |
| return true if skill.learn_cost[1] != :exp | |
| cost = skill.learn_cost[0] | |
| for class_id in @skill_classes[skill] | |
| return true if @actor.exp_class(class_id) >= cost | |
| end | |
| return false | |
| end | |
| #-------------------------------------------------------------------------- | |
| # enabled_gold? | |
| #-------------------------------------------------------------------------- | |
| def enabled_gold?(skill) | |
| return true if skill.learn_cost[1] != :gold | |
| cost = skill.learn_cost[0] | |
| return $game_party.gold >= cost | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_item | |
| #-------------------------------------------------------------------------- | |
| def draw_item(index) | |
| skill = @data[index] | |
| return if skill.nil? | |
| rect = item_rect(index) | |
| rect.width = (contents.width - spacing) / 2 - 4 | |
| draw_item_name(skill, rect.x, rect.y, enable?(skill), rect.width - 24) | |
| draw_skill_cost(rect, skill) | |
| draw_restriction_info(skill, index) | |
| draw_learn_cost(skill, index) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # skill_restriction? | |
| #-------------------------------------------------------------------------- | |
| def skill_restriction?(index) | |
| return false | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_restriction_info | |
| #-------------------------------------------------------------------------- | |
| def draw_restriction_info(skill, index) | |
| return unless $imported["YEA-SkillRestrictions"] | |
| rect = item_rect(index) | |
| rect.x = contents.width / 2 | |
| rect.width /= 2 | |
| rect.width /= 3 | |
| rect.width -= 8 | |
| draw_skill_warmup(skill, rect) | |
| rect.x += rect.width + 4 | |
| draw_skill_cooldown(skill, rect) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_skill_warmup | |
| #-------------------------------------------------------------------------- | |
| def draw_skill_warmup(skill, rect) | |
| return unless YEA::LEARN_SKILL::DRAW_WARMUP | |
| enabled = enable?(skill) | |
| enabled = false if skill.warmup <= 0 | |
| change_color(warmup_colour, enabled) | |
| icon = Icon.warmup | |
| if icon > 0 | |
| draw_icon(icon, rect.x + rect.width-24, rect.y, enable?(skill)) | |
| rect.width -= 24 | |
| end | |
| contents.font.size = YEA::SKILL_RESTRICT::WARMUP_SIZE | |
| value = skill.warmup > 0 ? skill.warmup.group : empty_text | |
| text = sprintf(YEA::SKILL_RESTRICT::WARMUP_SUFFIX, value) | |
| draw_text(rect, text, 2) | |
| reset_font_settings | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_skill_cooldown | |
| #-------------------------------------------------------------------------- | |
| def draw_skill_cooldown(skill, rect) | |
| return unless YEA::LEARN_SKILL::DRAW_COOLDOWN | |
| enabled = enable?(skill) | |
| enabled = false if skill.cooldown <= 0 | |
| change_color(cooldown_colour, enabled) | |
| icon = Icon.cooldown | |
| if icon > 0 | |
| draw_icon(icon, rect.x + rect.width-24, rect.y, enable?(skill)) | |
| rect.width -= 24 | |
| end | |
| contents.font.size = YEA::SKILL_RESTRICT::COOLDOWN_SIZE | |
| value = skill.cooldown > 0 ? skill.cooldown.group : empty_text | |
| text = sprintf(YEA::SKILL_RESTRICT::COOLDOWN_SUFFIX, value) | |
| draw_text(rect, text, 2) | |
| reset_font_settings | |
| end | |
| #-------------------------------------------------------------------------- | |
| # empty_text | |
| #-------------------------------------------------------------------------- | |
| def empty_text | |
| return YEA::LEARN_SKILL::EMPTY_TEXT | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_learn_cost | |
| #-------------------------------------------------------------------------- | |
| def draw_learn_cost(skill, index) | |
| rect = item_rect(index) | |
| rect.width -= 4 | |
| if @actor.skill_learn?(skill) | |
| draw_learned_skill(rect) | |
| else | |
| draw_learn_skill_cost(skill, rect) | |
| end | |
| reset_font_settings | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_learned_skill | |
| #-------------------------------------------------------------------------- | |
| def draw_learned_skill(rect) | |
| contents.font.size = YEA::LEARN_SKILL::LEARNED_SIZE | |
| change_color(normal_color) | |
| draw_text(rect, YEA::LEARN_SKILL::LEARNED_TEXT, 2) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_learn_skill_cost | |
| #-------------------------------------------------------------------------- | |
| def draw_learn_skill_cost(skill, rect) | |
| case skill.learn_cost[1] | |
| when :jp | |
| return unless $imported["YEA-JPManager"] | |
| draw_jp_cost(skill, rect) | |
| when :exp | |
| draw_exp_cost(skill, rect) | |
| when :gold | |
| draw_gold_cost(skill, rect) | |
| else; return | |
| end | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_jp_cost | |
| #-------------------------------------------------------------------------- | |
| def draw_jp_cost(skill, rect) | |
| enabled = enabled_jp?(skill) | |
| if Icon.jp > 0 | |
| draw_icon(Icon.jp, rect.x + rect.width - 24, rect.y, enabled) | |
| rect.width -= 24 | |
| end | |
| contents.font.size = YEA::LEARN_SKILL::COST_SIZE | |
| change_color(system_color, enabled) | |
| draw_text(rect, Vocab::jp, 2) | |
| rect.width -= text_size(Vocab::jp).width | |
| cost = skill.learn_cost[0] | |
| text = cost.group | |
| change_color(text_color(YEA::LEARN_SKILL::COLOUR_JP), enabled) | |
| draw_text(rect, text, 2) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_exp_cost | |
| #-------------------------------------------------------------------------- | |
| def draw_exp_cost(skill, rect) | |
| enabled = enabled_exp?(skill) | |
| contents.font.size = YEA::LEARN_SKILL::COST_SIZE | |
| change_color(system_color, enabled) | |
| draw_text(rect, YEA::LEARN_SKILL::EXP_TEXT, 2) | |
| rect.width -= text_size(YEA::LEARN_SKILL::EXP_TEXT).width | |
| cost = skill.learn_cost[0] | |
| text = cost.group | |
| change_color(text_color(YEA::LEARN_SKILL::COLOUR_EXP), enabled) | |
| draw_text(rect, text, 2) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_gold_cost | |
| #-------------------------------------------------------------------------- | |
| def draw_gold_cost(skill, rect) | |
| enabled = enabled_jp?(skill) | |
| contents.font.size = YEA::LEARN_SKILL::COST_SIZE | |
| change_color(system_color, enabled) | |
| draw_text(rect, Vocab::currency_unit, 2) | |
| rect.width -= text_size(Vocab::currency_unit).width | |
| cost = skill.learn_cost[0] | |
| text = cost.group | |
| change_color(text_color(YEA::LEARN_SKILL::COLOUR_GOLD), enabled) | |
| draw_text(rect, text, 2) | |
| end | |
| end # Window_LearnSkillList | |
| #============================================================================== | |
| # ■ Window_LearnSkillCostBack | |
| #============================================================================== | |
| class Window_LearnSkillCostBack < Window_Base | |
| #-------------------------------------------------------------------------- | |
| # initialize | |
| #-------------------------------------------------------------------------- | |
| def initialize(item_window) | |
| dw = Graphics.width * 3 / 4 | |
| dx = (Graphics.width - dw) / 2 | |
| super(dx, 0, dw, fitting_height(2)) | |
| self.openness = 0 | |
| self.back_opacity = 255 | |
| @front_window = nil | |
| @item_window = item_window | |
| @skill = nil | |
| end | |
| #-------------------------------------------------------------------------- | |
| # reveal | |
| #-------------------------------------------------------------------------- | |
| def reveal(skill, skill_classes) | |
| @skill = skill | |
| return if @skill.nil? | |
| case @skill.learn_cost[1] | |
| when :gold | |
| self.height = fitting_height(3) | |
| else | |
| maximum = [skill_classes.size, YEA::LEARN_SKILL::MAXIMUM_ROWS].min | |
| self.height = fitting_height(maximum + 2) | |
| end | |
| create_contents | |
| self.y = (Graphics.height - self.height) / 2 | |
| refresh | |
| open | |
| end | |
| #-------------------------------------------------------------------------- | |
| # refresh | |
| #-------------------------------------------------------------------------- | |
| def refresh | |
| contents.clear | |
| reset_font_settings | |
| draw_learn_skill_text | |
| rect = Rect.new(0, 0, contents.width - 4, line_height) | |
| draw_learn_skill_cost(@skill, rect) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_learn_skill_text | |
| #-------------------------------------------------------------------------- | |
| def draw_learn_skill_text | |
| name = sprintf("\eI[%d]%s", @skill.icon_index, @skill.name) | |
| fmt = YEA::LEARN_SKILL::LEARN_SKILL_TEXT | |
| text = sprintf(fmt, name) | |
| draw_text_ex(4, 0, text) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_learn_skill_cost | |
| #-------------------------------------------------------------------------- | |
| def draw_learn_skill_cost(skill, rect) | |
| case skill.learn_cost[1] | |
| when :jp | |
| return unless $imported["YEA-JPManager"] | |
| draw_jp_cost(skill, rect) | |
| when :exp | |
| draw_exp_cost(skill, rect) | |
| when :gold | |
| draw_gold_cost(skill, rect) | |
| else; return | |
| end | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_jp_cost | |
| #-------------------------------------------------------------------------- | |
| def draw_jp_cost(skill, rect) | |
| enabled = true | |
| if Icon.jp > 0 | |
| draw_icon(Icon.jp, rect.x + rect.width - 24, rect.y, enabled) | |
| rect.width -= 24 | |
| end | |
| contents.font.size = YEA::LEARN_SKILL::COST_SIZE | |
| change_color(system_color, enabled) | |
| draw_text(rect, Vocab::jp, 2) | |
| rect.width -= text_size(Vocab::jp).width | |
| cost = skill.learn_cost[0] | |
| text = cost.group | |
| change_color(text_color(YEA::LEARN_SKILL::COLOUR_JP), enabled) | |
| draw_text(rect, text, 2) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_exp_cost | |
| #-------------------------------------------------------------------------- | |
| def draw_exp_cost(skill, rect) | |
| enabled = true | |
| contents.font.size = YEA::LEARN_SKILL::COST_SIZE | |
| change_color(system_color, enabled) | |
| draw_text(rect, YEA::LEARN_SKILL::EXP_TEXT, 2) | |
| rect.width -= text_size(YEA::LEARN_SKILL::EXP_TEXT).width | |
| cost = skill.learn_cost[0] | |
| text = cost.group | |
| change_color(text_color(YEA::LEARN_SKILL::COLOUR_EXP), enabled) | |
| draw_text(rect, text, 2) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_gold_cost | |
| #-------------------------------------------------------------------------- | |
| def draw_gold_cost(skill, rect) | |
| enabled = true | |
| contents.font.size = YEA::LEARN_SKILL::COST_SIZE | |
| change_color(system_color, enabled) | |
| draw_text(rect, Vocab::currency_unit, 2) | |
| rect.width -= text_size(Vocab::currency_unit).width | |
| cost = skill.learn_cost[0] | |
| text = cost.group | |
| change_color(text_color(YEA::LEARN_SKILL::COLOUR_GOLD), enabled) | |
| draw_text(rect, text, 2) | |
| end | |
| end # Window_LearnSkillCostBack | |
| #============================================================================== | |
| # ■ Window_LearnSkillCostFront | |
| #============================================================================== | |
| class Window_LearnSkillCostFront < Window_Command | |
| #-------------------------------------------------------------------------- | |
| # initialize | |
| #-------------------------------------------------------------------------- | |
| def initialize(item_window, cost_window) | |
| super((Graphics.width - window_width) / 2, 0) | |
| self.openness = 0 | |
| self.opacity = 0 | |
| @item_window = item_window | |
| @cost_window = cost_window | |
| @skill = nil | |
| @actor = nil | |
| deactivate | |
| end | |
| #-------------------------------------------------------------------------- | |
| # window_width | |
| #-------------------------------------------------------------------------- | |
| def window_width; return Graphics.width * 3 / 4; end | |
| #-------------------------------------------------------------------------- | |
| # skill_class | |
| #-------------------------------------------------------------------------- | |
| def skill_class | |
| return @skill_classes.nil? ? nil : @skill_classes[index] | |
| end | |
| #-------------------------------------------------------------------------- | |
| # reveal | |
| #-------------------------------------------------------------------------- | |
| def reveal(skill, skill_classes, actor) | |
| @skill = skill | |
| @skill_classes = skill_classes.clone | |
| @actor = actor | |
| return if @skill.nil? | |
| case @skill.learn_cost[1] | |
| when :gold | |
| self.height = fitting_height(2) | |
| else | |
| maximum = [skill_classes.size, YEA::LEARN_SKILL::MAXIMUM_ROWS].min | |
| self.height = fitting_height(maximum + 1) | |
| end | |
| create_contents | |
| self.y = @cost_window.y + line_height | |
| refresh | |
| select(0) | |
| open | |
| activate | |
| end | |
| #-------------------------------------------------------------------------- | |
| # make_command_list | |
| #-------------------------------------------------------------------------- | |
| def make_command_list | |
| return if @skill_classes.nil? | |
| if @skill.learn_cost[1] == :gold | |
| add_command("GOLD", :gold, true) | |
| add_command(YEA::LEARN_SKILL::LEARN_CANCEL_TEXT, :cancel, true) | |
| return | |
| end | |
| for class_id in @skill_classes | |
| name = $data_classes[class_id].name | |
| add_command(name, :class, enabled?(class_id), class_id) | |
| end | |
| add_command(YEA::LEARN_SKILL::LEARN_CANCEL_TEXT, :cancel, true) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # enabled? | |
| #-------------------------------------------------------------------------- | |
| def enabled?(class_id) | |
| cost = @skill.learn_cost[0] | |
| case @skill.learn_cost[1] | |
| when :jp | |
| return @actor.jp(class_id) >= cost | |
| when :exp | |
| return @actor.exp_class(class_id) >= cost | |
| end | |
| return true | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_item | |
| #-------------------------------------------------------------------------- | |
| def draw_item(index) | |
| reset_font_settings | |
| rect = item_rect(index) | |
| rect.x += 24 | |
| rect.width -= 28 | |
| return draw_cancel_text(index, rect) if @list[index][:symbol] == :cancel | |
| draw_class_name(index, rect) if @skill.learn_cost[1] != :gold | |
| draw_party_gold(rect) if @skill.learn_cost[1] == :gold | |
| draw_learn_skill_cost(@skill, rect, index) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_cancel_text | |
| #-------------------------------------------------------------------------- | |
| def draw_cancel_text(index, rect) | |
| draw_icon(Icon.cancel, rect.x, rect.y) | |
| text = command_name(index) | |
| draw_text(rect.x+24, rect.y, rect.width-24, line_height, text) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_class_name | |
| #-------------------------------------------------------------------------- | |
| def draw_class_name(index, rect) | |
| class_id = @list[index][:ext] | |
| return if $data_classes[class_id].nil? | |
| enabled = enabled?(class_id) | |
| if $imported["YEA-ClassSystem"] | |
| draw_icon($data_classes[class_id].icon_index, rect.x, rect.y, enabled) | |
| end | |
| rect.x += 24 | |
| rect.width -= 24 | |
| change_color(normal_color, enabled) | |
| draw_text(rect, $data_classes[class_id].name) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_class_name | |
| #-------------------------------------------------------------------------- | |
| def draw_party_gold(rect) | |
| enabled = true | |
| draw_icon(Icon.learn_skill_gold, rect.x, rect.y) | |
| rect.x += 24 | |
| rect.width -= 24 | |
| change_color(normal_color, enabled) | |
| draw_text(rect, YEA::LEARN_SKILL::GOLD_TEXT) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_learn_skill_cost | |
| #-------------------------------------------------------------------------- | |
| def draw_learn_skill_cost(skill, rect, index) | |
| case skill.learn_cost[1] | |
| when :jp | |
| return unless $imported["YEA-JPManager"] | |
| draw_jp_cost(skill, rect, index) | |
| when :exp | |
| draw_exp_cost(skill, rect, index) | |
| when :gold | |
| draw_gold_cost(skill, rect) | |
| else; return | |
| end | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_jp_cost | |
| #-------------------------------------------------------------------------- | |
| def draw_jp_cost(skill, rect, index) | |
| enabled = enabled?(@list[index][:ext]) | |
| if Icon.jp > 0 | |
| draw_icon(Icon.jp, rect.x + rect.width - 24, rect.y, enabled) | |
| rect.width -= 24 | |
| end | |
| contents.font.size = YEA::LEARN_SKILL::COST_SIZE | |
| change_color(system_color, enabled) | |
| draw_text(rect, Vocab::jp, 2) | |
| rect.width -= text_size(Vocab::jp).width | |
| cost = @actor.jp(@list[index][:ext]) | |
| text = cost.group | |
| change_color(text_color(YEA::LEARN_SKILL::COLOUR_JP), enabled) | |
| draw_text(rect, text, 2) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_exp_cost | |
| #-------------------------------------------------------------------------- | |
| def draw_exp_cost(skill, rect, index) | |
| enabled = enabled?(@list[index][:ext]) | |
| contents.font.size = YEA::LEARN_SKILL::COST_SIZE | |
| change_color(system_color, enabled) | |
| draw_text(rect, YEA::LEARN_SKILL::EXP_TEXT, 2) | |
| rect.width -= text_size(YEA::LEARN_SKILL::EXP_TEXT).width | |
| cost = @actor.exp_class(@list[index][:ext]) | |
| text = cost.group | |
| change_color(text_color(YEA::LEARN_SKILL::COLOUR_EXP), enabled) | |
| draw_text(rect, text, 2) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # draw_gold_cost | |
| #-------------------------------------------------------------------------- | |
| def draw_gold_cost(skill, rect) | |
| enabled = $game_party.gold >= skill.learn_cost[0] | |
| contents.font.size = YEA::LEARN_SKILL::COST_SIZE | |
| change_color(system_color, enabled) | |
| draw_text(rect, Vocab::currency_unit, 2) | |
| rect.width -= text_size(Vocab::currency_unit).width | |
| cost = $game_party.gold | |
| text = cost.group | |
| change_color(text_color(YEA::LEARN_SKILL::COLOUR_GOLD), enabled) | |
| draw_text(rect, text, 2) | |
| end | |
| end # Window_LearnSkillCostFront | |
| #============================================================================== | |
| # ■ Scene_Skill | |
| #============================================================================== | |
| class Scene_Skill < Scene_ItemBase | |
| #-------------------------------------------------------------------------- | |
| # alias method: create_command_window | |
| #-------------------------------------------------------------------------- | |
| alias scene_skill_create_command_window_lse create_command_window | |
| def create_command_window | |
| scene_skill_create_command_window_lse | |
| @command_window.set_handler(:learn_skill, method(:command_learn_skill)) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # new method: command_learn_skill | |
| #-------------------------------------------------------------------------- | |
| def command_learn_skill | |
| SceneManager.call(Scene_LearnSkill) | |
| end | |
| end # Scene_Skill | |
| #============================================================================== | |
| # ■ Scene_LearnSkill | |
| #============================================================================== | |
| class Scene_LearnSkill < Scene_Skill | |
| #-------------------------------------------------------------------------- | |
| # start | |
| #-------------------------------------------------------------------------- | |
| def start | |
| super | |
| create_cost_windows | |
| end | |
| #-------------------------------------------------------------------------- | |
| # create_command_window | |
| #-------------------------------------------------------------------------- | |
| def create_command_window | |
| wy = @help_window.height | |
| @command_window = Window_LearnSkillCommand.new(0, wy) | |
| @command_window.viewport = @viewport | |
| @command_window.help_window = @help_window | |
| @command_window.actor = @actor | |
| @command_window.set_handler(:skill, method(:command_skill)) | |
| @command_window.set_handler(:cancel, method(:return_scene)) | |
| @command_window.set_handler(:pagedown, method(:next_actor)) | |
| @command_window.set_handler(:pageup, method(:prev_actor)) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # create_item_window | |
| #-------------------------------------------------------------------------- | |
| def create_item_window | |
| wx = 0 | |
| wy = @status_window.y + @status_window.height | |
| ww = Graphics.width | |
| wh = Graphics.height - wy | |
| @item_window = Window_LearnSkillList.new(wx, wy, ww, wh) | |
| @item_window.actor = @actor | |
| @item_window.viewport = @viewport | |
| @item_window.help_window = @help_window | |
| @item_window.set_handler(:ok, method(:on_item_ok)) | |
| @item_window.set_handler(:cancel, method(:on_item_cancel)) | |
| @command_window.skill_window = @item_window | |
| end | |
| #-------------------------------------------------------------------------- | |
| # create_cost_windows | |
| #-------------------------------------------------------------------------- | |
| def create_cost_windows | |
| @cost_window = Window_LearnSkillCostBack.new(@item_window) | |
| @cost_front = Window_LearnSkillCostFront.new(@item_window, @cost_window) | |
| @cost_window.viewport = @viewport | |
| @cost_front.viewport = @viewport | |
| @cost_front.set_handler(:ok, method(:on_cost_ok)) | |
| @cost_front.set_handler(:cancel, method(:on_cost_cancel)) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # on_item_ok | |
| #-------------------------------------------------------------------------- | |
| def on_item_ok | |
| skill = @item_window.item | |
| @cost_window.reveal(skill, @item_window.skill_classes(skill)) | |
| @cost_front.reveal(skill, @item_window.skill_classes(skill), @actor) | |
| end | |
| #-------------------------------------------------------------------------- | |
| # on_cost_ok | |
| #-------------------------------------------------------------------------- | |
| def on_cost_ok | |
| Sound.play_use_skill | |
| skill = @item_window.item | |
| @actor.learn_skill(skill.id) | |
| cost = skill.learn_cost[0] | |
| case skill.learn_cost[1] | |
| when :jp | |
| @actor.lose_jp(cost, @cost_front.skill_class) | |
| when :exp | |
| @actor.lose_exp_class(cost, @cost_front.skill_class) | |
| when :gold | |
| $game_party.lose_gold(cost) | |
| end | |
| on_cost_cancel | |
| refresh_windows | |
| end | |
| #-------------------------------------------------------------------------- | |
| # on_cost_cancel | |
| #-------------------------------------------------------------------------- | |
| def on_cost_cancel | |
| @cost_front.close | |
| @cost_window.close | |
| @item_window.activate | |
| end | |
| #-------------------------------------------------------------------------- | |
| # refresh_windows | |
| #-------------------------------------------------------------------------- | |
| def refresh_windows | |
| @item_window.refresh | |
| @status_window.refresh | |
| end | |
| end # Scene_LearnSkill | |
| #============================================================================== | |
| # | |
| # ▼ End of File | |
| # | |
| #============================================================================== |