#============================================================================== # ■ RGSS2 消費MP一定値減少装備/ステート/エネミー Ver1.00 by 星潟 #------------------------------------------------------------------------------ # スキル使用時の消費MPを一定値軽減、もしくは一定割合軽減する # 装備/ステート/エネミーを作成します。 # # 設定例(装備/ステート/エネミー共通でメモ欄に記載) # # <消費MP軽減:5> # 消費MPが5減少します。 # # <消費MP%減:50> # 消費MPが50%軽減されます。 #============================================================================== module MPCR #消費MPを一定値軽減させる装備用の設定用キーワードを設定します。 WORD1 = "消費MP軽減" #消費MPを一定値軽減させる装備用の設定用キーワードを設定します。 WORD2 = "消費MP%減" #最大消費MPを設定します。 MCMAX = 9999 #処理順番を決定します。 #0…軽減→%減 #1…%減→軽減 CTYPE = 0 end class Game_Battler #-------------------------------------------------------------------------- # スキルの消費 MP 計算 #-------------------------------------------------------------------------- alias calc_mp_cost_mpcr calc_mp_cost def calc_mp_cost(skill) data_s = 100 - mpreduce_data2 data = calc_mp_cost_mpcr(skill) case MPCR::CTYPE when 0 data = [[data - mpreduce_data1,0].max, MPCR::MCMAX].min data = (data * data_s / 100.00).ceil data = [[data,0].max, MPCR::MCMAX].min when 1 data = (data * data_s / 100.00).ceil data = [[data,0].max, MPCR::MCMAX].min data = [[data - mpreduce_data1,0].max, MPCR::MCMAX].min end end #-------------------------------------------------------------------------- # スキルの消費 MP 固定値軽減計算 #-------------------------------------------------------------------------- def mpreduce_data1 array = states + (self.actor? ? equips : [enemy]) data = 0 array.each do |f| next if f == nil data += f.mp_reduce1 end data end #-------------------------------------------------------------------------- # スキルの消費 MP 割合軽減計算 #-------------------------------------------------------------------------- def mpreduce_data2 array = states + (self.actor? ? equips : [enemy]) data = 0 array.each do |f| next if f == nil data += f.mp_reduce2 end data end end module MP_REDUCE_FEATURE def mp_reduce1 return @mp_reduce1 if @mp_reduce1 != nil data = self.note.scan(/<#{MPCR::WORD1}[::](\S+)>/).flatten @mp_reduce1 = data != nil && !data.empty? ? data[0].to_i : 0 return @mp_reduce1 end def mp_reduce2 return @mp_reduce2 if @mp_reduce2 != nil data = self.note.scan(/<#{MPCR::WORD2}[::](\S+)>/).flatten @mp_reduce2 = data != nil && !data.empty? ? data[0].to_i : 0 return @mp_reduce2 end end class RPG::Weapon < RPG::BaseItem include MP_REDUCE_FEATURE end class RPG::Armor < RPG::BaseItem include MP_REDUCE_FEATURE end class RPG::State include MP_REDUCE_FEATURE end class RPG::Enemy include MP_REDUCE_FEATURE end