#============================================================================== # ■ XP-RGSS-11-opt スキル習得アイテム(熟練度版) [Ver.1.3.0] by Claimh #------------------------------------------------------------------------------ # ある熟練度以上になっている場合のみスキルを習得できるアイテムです。 #============================================================================== module SysUpdate ELE_ITEM = { # アイテムID => [習得スキルID, [[属性ID, 習得可能レベル],・・・]] 1 => [58, [[SWORD, 3]]], # フェイントアタック:剣3 2 => [59, [[SWORD, 5],[WIND, 2]]] # ハリケーン:剣5、風2 } #---------------------------------------------------------------------------- module_function # スキル習得アイテムかどうかを判定する def is_ele_item?(id) return !ELE_ITEM[id].nil? end #---------------------------------------------------------------------------- # 設定値読み込みクラス class EleItem attr_reader :skill_id attr_reader :condition def initialize(item_id) @skill_id = ELE_ITEM[item_id][0] @condition = [] for data in ELE_ITEM[item_id][1] @condition.push(EleItemCondition.new(data)) end end # 設定条件読み込みクラス class EleItemCondition attr_reader :attr_id attr_reader :level def initialize(data) @attr_id = data[0] @level = data[1] end end end end class Game_Battler #-------------------------------------------------------------------------- # ● アイテムの効果適用 #-------------------------------------------------------------------------- alias item_effect_element item_effect def item_effect(item) # スキル習得用アイテムか? if self.is_a?(Game_Actor) and SysUpdate.is_ele_item?(item.id) ele_set = SysUpdate::EleItem.new(item.id) # スキル習得済みなら失敗 return false if self.skill_learn?(ele_set.skill_id) ## 複数条件対応 for learn_ele in ele_set.condition # 習得可能レベル以下なら習得できない return false if self.attr[learn_ele.attr_id].level < learn_ele.level end # スキル習得 self.learn_skill(ele_set.skill_id) return true end return item_effect_element(item) # 原物 end end