#============================================================================== # ■ RGSS2 ダメージリミット Ver1.00 by 星潟 #------------------------------------------------------------------------------ # 通常攻撃やスキルによるダメージを個別に制限します。 # # スキル設定例(メモ欄) # # このスキルによるHPダメージは999が限界値となります。 # # # このスキルによるMPダメージは99が限界値となります。 # # ステート・装備・エネミー設定例(メモ欄) # # HPダメージ限界値を5%増加させます。 # # # HPダメージ限界値を30増加させます。 # # # MPダメージ限界値を3%増加させます。 # # # MPダメージ限界値を15増加させます。 # #============================================================================== module D_LIMIT #このスキルのHPダメージ限界値を指定する為の設定用ワード HPDL_W = "HPDL" #このスキルのMPダメージ限界値を指定する為の設定用ワード MPDL_W = "MPDL" #HPダメージ限界値を割合増加(数値%分増加)させる為の #ステート・装備・エネミーのメモ欄設定用ワード。 HPPE_W = "HPDL割合増加" #HPダメージ限界値を増加(数値分増加)させる為の #ステート・装備・エネミーのメモ欄設定用ワード。 HPPL_W = "HPDL増加" #MPダメージ限界値を割合増加(数値%分増加)させる為の #ステート・装備・エネミーのメモ欄設定用ワード。 MPPE_W = "MPDL割合増加" #MPダメージ限界値を増加(数値分増加)させる為の #ステート・装備・エネミーのメモ欄設定用ワード。 MPPL_W = "MPDL増加" #何も指定しない場合の通常攻撃最大HPダメージ指定(nilで無制限) AHPDL = nil #何も指定しない場合の通常攻撃最大MPダメージ指定(nilで無制限) AMPDL = nil #何も指定しない場合のスキル最大HPダメージ指定(nilで無制限) SHPDL = nil #何も指定しない場合のスキル最大MPダメージ指定(nilで無制限) SMPDL = nil #通常攻撃・スキル共通の限界値変更後の最大HPダメージ指定(nilで無制限) MHPDL = nil #通常攻撃・スキル共通の限界値変更後の最大MPダメージ指定(nilで無制限) MMPDL = nil #パッシブスキル効果を有効にするか? #(trueの時、覚えているスキルを参照。スキル設定はステート等と同じ。 # スキルに設定しない場合はfalseにした方が軽いと思います) S_VAL = true end class Game_Battler #-------------------------------------------------------------------------- # ● 通常攻撃によるダメージ計算 # attacker : 攻撃者 # 結果は @hp_damage に代入する。 #-------------------------------------------------------------------------- alias make_attack_damage_value_d_limit make_attack_damage_value def make_attack_damage_value(attacker) make_attack_damage_value_d_limit(attacker) damage_limit(attacker) end #-------------------------------------------------------------------------- # ● スキルまたはアイテムによるダメージ計算 # user : スキルまたはアイテムの使用者 # obj : スキルまたはアイテム # 結果は @hp_damage または @mp_damage に代入する。 #-------------------------------------------------------------------------- alias make_obj_damage_value_d_limit make_obj_damage_value def make_obj_damage_value(user, obj) make_obj_damage_value_d_limit(user, obj) damage_limit(user, obj) end #-------------------------------------------------------------------------- # ● ダメージリミット #-------------------------------------------------------------------------- def damage_limit(user, obj = nil) return if @hp_damage == 0 && @mp_damage == 0 hpdl = nil mpdl = nil if obj != nil if @hp_damage > 0 memo = obj.note.scan(/<#{D_LIMIT::HPDL_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? hpdl = memo[0].to_i end end if @mp_damage > 0 memo = obj.note.scan(/<#{D_LIMIT::MPDL_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? mpdl = memo[0].to_i end end hpdl = D_LIMIT::SHPDL if D_LIMIT::SHPDL != nil && hpdl == nil mpdl = D_LIMIT::SMPDL if D_LIMIT::SMPDL != nil && mpdl == nil else hpdl = D_LIMIT::AHPDL if D_LIMIT::AHPDL != nil && hpdl == nil mpdl = D_LIMIT::AMPDL if D_LIMIT::AMPDL != nil && mpdl == nil end if @hp_damage > 0 if hpdl != nil hpdl = hpdl_plus(user, hpdl) @hp_damage = hpdl if @hp_damage > hpdl end @hp_damage = D_LIMIT::MHPDL if D_LIMIT::MHPDL != nil && @hp_damage > D_LIMIT::MHPDL end if @mp_damage > 0 if mpdl != nil mpdl = mpdl_plus(user, mpdl) @mp_damage = mpdl if @mp_damage > mpdl end @mp_damage = D_LIMIT::MMPDL if D_LIMIT::MMPDL != nil && @mp_damage > D_LIMIT::MMPDL end end #-------------------------------------------------------------------------- # ● HPダメージリミット変更 #-------------------------------------------------------------------------- def hpdl_plus(user, data) pec = 100 num = 0 if user.actor? for state in user.states next if state == nil memo = state.note.scan(/<#{D_LIMIT::HPPE_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? pec += memo[0].to_i end memo = state.note.scan(/<#{D_LIMIT::HPPL_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? num += memo[0].to_i end end for equip in user.equips next if equip == nil memo = equip.note.scan(/<#{D_LIMIT::HPPE_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? pec += memo[0].to_i end memo = equip.note.scan(/<#{D_LIMIT::HPPL_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? num += memo[0].to_i end end if D_LIMIT::S_VAL == true for skill in user.skills next if skill == nil memo = skill.note.scan(/<#{D_LIMIT::HPPE_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? pec += memo[0].to_i end memo = skill.note.scan(/<#{D_LIMIT::HPPL_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? num += memo[0].to_i end end end else memo = $data_enemies[user.enemy_id].note.scan(/<#{D_LIMIT::HPPE_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? pec += memo[0].to_i end memo = $data_enemies[user.enemy_id].note.scan(/<#{D_LIMIT::HPPL_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? num += memo[0].to_i end for state in user.states next if state == nil memo = state.note.scan(/<#{D_LIMIT::HPPE_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? pec += memo[0].to_i end memo = state.note.scan(/<#{D_LIMIT::HPPL_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? num += memo[0].to_i end end end data += num data *= pec data /= 100 return data end #-------------------------------------------------------------------------- # ● MPダメージリミット変更 #-------------------------------------------------------------------------- def mpdl_plus(user, data) pec = 100 num = 0 if user.actor? for state in user.states next if state == nil memo = state.note.scan(/<#{D_LIMIT::MPPE_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? pec += memo[0].to_i end memo = state.note.scan(/<#{D_LIMIT::MPPL_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? num += memo[0].to_i end end for equip in user.equips next if equip == nil memo = equip.note.scan(/<#{D_LIMIT::MPPE_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? pec += memo[0].to_i end memo = equip.note.scan(/<#{D_LIMIT::MPPL_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? num += memo[0].to_i end end if D_LIMIT::S_VAL == true for skill in user.skills next if skill == nil memo = skill.note.scan(/<#{D_LIMIT::MPPE_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? pec += memo[0].to_i end memo = skill.note.scan(/<#{D_LIMIT::MPPL_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? num += memo[0].to_i end end end else memo = $data_enemies[user.enemy_id].note.scan(/<#{D_LIMIT::MPPE_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? pec += memo[0].to_i end memo = $data_enemies[user.enemy_id].note.scan(/<#{D_LIMIT::MPPL_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? num += memo[0].to_i end for state in user.states next if state == nil memo = state.note.scan(/<#{D_LIMIT::MPPE_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? pec += memo[0].to_i end memo = state.note.scan(/<#{D_LIMIT::MPPL_W}[::](\S+)>/) memo = memo.flatten if memo != nil and not memo.empty? num += memo[0].to_i end end end data += num data *= pec data /= 100 return data end end