#============================================================================== # ■ VXAce-RGSS3-8-opt 熟練度スキル習得 [Ver.1.0.0] by Claimh #------------------------------------------------------------------------------ # ・特定の熟練度に達したときにスキル習得 #============================================================================== module SysUpdate AT_SKILL = [] #---------------------------------------------------------------------------- # 習得条件 # AT_SKILL[アクターID] = [ <習得スキル+条件> ] AT_SKILL[1] = [ # [習得スキルID, [[条件となる属性, 条件Lv],・・・]] [83, [[AX, 3], [WIND, 2]]], [84, [[AX, 3]]] ] AT_SKILL[2] = [ # [習得スキルID, [[条件となる属性, 条件Lv],・・・]] [92, [[CRAW, 4]]], [93, [[CRAW, 6]]] ] # 習得スキル表示 # 表示する:true 表示しない:false SHOW_L_SK = true #---------------------------------------------------------------------------- #-------------------------------------------------------------------------- # ● スキル習得条件 #-------------------------------------------------------------------------- class EleSkill attr_accessor :skill_id attr_accessor :condition def initialize(data) @skill_id = data[0] @condition = data[1].collect { |d| EleSkillCondition.new(d) } end def enable?(actor) return false if actor.skill_learn?($data_skills[@skill_id]) @condition.all? { |c| actor.attr[c.attr_id].level >= c.level } end # 設定条件読み込みクラス class EleSkillCondition attr_reader :attr_id attr_reader :level def initialize(data) @attr_id = data[0] @level = data[1] end end end #-------------------------------------------------------------------------- # ● スキル習得 #-------------------------------------------------------------------------- def self.attr_skill_learn(actor) return [] if AT_SKILL[actor.id].nil? skills = AT_SKILL[actor.id].collect { |s| EleSkill.new(s) } skills = skills.select { |s| s.enable?(actor) } skills = skills.each { |s| actor.learn_skill(s.skill_id) } skills.collect { |s| s.skill_id } end end class Window_BattleLog < Window_Selectable #-------------------------------------------------------------------------- # ● レベルアップの表示 [sub] #-------------------------------------------------------------------------- alias display_attr_skill display_attr_levelup_sub def display_attr_levelup_sub(subject) display_attr_skill(subject) SysUpdate.attr_skill_learn(subject).each do |s| if SysUpdate::SHOW_L_SK add_text($data_skills[s].name + "を習得した!") wait back_one end end end end