#============================================================================== # ■ VX-RGSS2-4-opt 熟練度スキル習得 [Ver.1.0.1] by Claimh #------------------------------------------------------------------------------ # ・特定の熟練度に達したときにスキル習得 #============================================================================== module SysUpdate AT_SKILL = [] #---------------------------------------------------------------------------- # 習得条件 # AT_SKILL[アクターID] = [ <習得スキル+条件> ] AT_SKILL[1] = [ # [習得スキルID, [[条件となる属性, 条件Lv],・・・]] [14, [[SLASH, 3], [WIND, 2]]], [3, [[SLASH, 6]]] ] AT_SKILL[2] = [ # [習得スキルID, [[条件となる属性, 条件Lv],・・・]] [2, [[SLASH, 4]]], [3, [[SLASH, 6]]] ] # 習得スキル表示 # 表示する:true 表示しない:false SHOW_L_SK = true # レベルアップ演出時にSEを鳴らす(nilなら鳴らさない) SHOW_L_SE = "Chime2" #---------------------------------------------------------------------------- # 設定読み込みクラス class EleSkill attr_accessor :skill_id attr_accessor :condition def initialize(data) @skill_id = data[0] @condition = [] for d in data[1] @condition.push(EleSkillCondition.new(d)) end end # 設定条件読み込みクラス class EleSkillCondition attr_reader :attr_id attr_reader :level def initialize(data) @attr_id = data[0] @level = data[1] end end end module_function #-------------------------------------------------------------------------- # ● スキル習得条件サーチ #-------------------------------------------------------------------------- def sys_update_skill_search(actor) return [] if AT_SKILL[actor.id].nil? # 初期化 learn_skill = [] skill_book = EleSkill.new(AT_SKILL[actor.id][0]) # 習得スキルのサーチ for skill_book in AT_SKILL[actor.id] skill_check = true ele_skill = EleSkill.new(skill_book) # 習得済みなら次へ next if actor.skill_learn?($data_skills[ele_skill.skill_id]) # 習得条件の適合チェック for condi in ele_skill.condition # 条件不適合? if actor.attr[condi.attr_id].level < condi.level skill_check = false break end end # 条件適合なら次へ next unless skill_check # スキルを習得 actor.learn_skill(ele_skill.skill_id) learn_skill.push(ele_skill.skill_id) end # 習得スキル一覧を返す return learn_skill end end class Scene_Battle #-------------------------------------------------------------------------- # ● レベルアップの表示 #-------------------------------------------------------------------------- alias display_level_up_sysupdate display_level_up def display_level_up display_level_up_sysupdate # 原型 display_skill_learn end #-------------------------------------------------------------------------- # ● レベルアップの表示 #-------------------------------------------------------------------------- def display_skill_learn return unless SysUpdate::SHOW_L_SK # スキル習得チェック for actor in $game_party.members learn_skill = SysUpdate.sys_update_skill_search(actor) next if learn_skill.empty? for skill_id in learn_skill text = sprintf("%sは%sを習得した!", actor.name, $data_skills[skill_id].name) $game_message.texts.push(text) # LVアップSE演奏 if SysUpdate::SHOW_L_SE != nil Audio.se_play("Audio/SE/" + SysUpdate::SHOW_L_SE) end wait_for_message end end end end