#============================================================================== # ■ RGSS3 HP/MP/TP個別回復率 Ver1.00 by 星潟 #------------------------------------------------------------------------------ # HP/MP/TPに個別に回復率を設定します。 # なお、回復率が0%を下回った場合は反転せず0になります。 #============================================================================== # ステートのメモ欄に設定。 #------------------------------------------------------------------------------ # # # HP回復率が50%減少します。 #------------------------------------------------------------------------------ # # # MP回復率が100%増加します。 #------------------------------------------------------------------------------ # # # TP回復率が200%増加します。 #------------------------------------------------------------------------------ # # # HP回復率が1.5倍になります。 #------------------------------------------------------------------------------ # # # MP回復率が2倍になります。 #------------------------------------------------------------------------------ # # # TP回復率が3倍になります。 #============================================================================== module HMTPRExtraRate #加算と乗算のどちらを先にするかを指定。 #trueの場合は加算→乗算の順。 #falseの場合は乗算→加算の順。 Type = true #HP回復率増減の設定用キーワードを指定。 Word1 = "HP回復率増減" #MP回復率増減の設定用キーワードを指定。 Word2 = "MP回復率増減" #TP回復率増減の設定用キーワードを指定。 Word3 = "TP回復率増減" #HP回復率割合の設定用キーワードを指定。 Word4 = "HP回復率割合" #MP回復率割合の設定用キーワードを指定。 Word5 = "MP回復率割合" #TP回復率割合の設定用キーワードを指定。 Word6 = "TP回復率割合" #-------------------------------------------------------------------------- # 2種のキーワード配列 #-------------------------------------------------------------------------- def self.words(type) type ? [Word1,Word2,Word3] : [Word4,Word5,Word6] end end class Game_ActionResult #-------------------------------------------------------------------------- # ダメージの作成 #-------------------------------------------------------------------------- alias make_damage_hmtpr_extra_rate make_damage def make_damage(value, item) make_damage_hmtpr_extra_rate(value, item) @hp_damage = (@hp_damage * @battler.hmtpr_extra_rate(0)).to_i if @hp_damage < 0 @mp_damage = (@mp_damage * @battler.hmtpr_extra_rate(1)).to_i if @mp_damage < 0 @tp_damage = (@tp_damage * @battler.hmtpr_extra_rate(2)).to_i if @tp_damage < 0 end end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ダメージの作成 #-------------------------------------------------------------------------- def hmtpr_extra_rate(n) fs = feature_objects if HMTPRExtraRate::Type rate = fs.inject(100) {|r,f| r += eval(f.hmtpr_extra_rate[0][n])} rate = (fs.inject(rate) {|r,f| r *= eval(f.hmtpr_extra_rate[1][n]).to_f;r /= 100}) / 100 else rate = (fs.inject(100) {|r,f| r *= eval(f.hmtpr_extra_rate[1][n]).to_f;r /= 100}) rate = fs.inject(rate) {|r,f| r += eval(f.hmtpr_extra_rate[0][n])} / 100 end rate = 0 if rate < 0 rate end #-------------------------------------------------------------------------- # 使用効果[HP 回復] #-------------------------------------------------------------------------- alias item_effect_recover_hp_hmtpr_extra_rate item_effect_recover_hp def item_effect_recover_hp(user, item, effect) neo_effect = effect.clone r = hmtpr_extra_rate(0) neo_effect.value1 *= r if effect.value1 > 0 neo_effect.value2 *= r if effect.value2 > 0 item_effect_recover_hp_hmtpr_extra_rate(user, item, neo_effect) end #-------------------------------------------------------------------------- # 使用効果[MP 回復] #-------------------------------------------------------------------------- alias item_effect_recover_mp_hmtpr_extra_rate item_effect_recover_mp def item_effect_recover_mp(user, item, effect) neo_effect = effect.clone r = hmtpr_extra_rate(1) neo_effect.value1 *= r if effect.value1 > 0 neo_effect.value2 *= r if effect.value2 > 0 item_effect_recover_mp_hmtpr_extra_rate(user, item, neo_effect) end #-------------------------------------------------------------------------- # 使用効果[TP 増加] #-------------------------------------------------------------------------- alias item_effect_gain_tp_hmtpr_extra_rate item_effect_gain_tp def item_effect_gain_tp(user, item, effect) neo_effect = effect.clone neo_effect.value1 *= hmtpr_extra_rate(2) if effect.value1 > 0 item_effect_gain_tp_hmtpr_extra_rate(user, item, neo_effect) end end class RPG::BaseItem #-------------------------------------------------------------------------- # HP/MP/TP回復率 #-------------------------------------------------------------------------- def hmtpr_extra_rate @hmtpr_extra_rate ||= create_hmtpr_extra_rate end #-------------------------------------------------------------------------- # HP/MP/TP回復率データ作成 #-------------------------------------------------------------------------- def create_hmtpr_extra_rate h = {} 2.times {|i1| h[i1] = [] ws = HMTPRExtraRate.words(i1 == 0) 3.times {|i2| h[i1].push( /<#{ws[i2]}[::](\S+)>/ =~ note ? $1.to_s : (i1 == 0 ? "0" : "100"))}} h end end