#============================================================================== # ■ RGSS2 ボトムチェンジアイテム/スキル Ver1.00 by 星潟 #------------------------------------------------------------------------------ # アイテム/スキル使用時、HP/MPダメージが発生した際 # 対象のHPよりもHPダメージが大きい場合、超過分のダメージを # 一定割合MPダメージとして扱うアイテム/スキル、 # もしくは、対象のMPよりもMPダメージが大きい場合、超過分のダメージを # 一定割合HPダメージとして扱うアイテム/スキルが作成可能になります。 # # 素材スクリプトを利用する等で # HPダメージとMPダメージを同時に与えるスキルで # ボトムチェンジを併用した場合は考慮していません。 #------------------------------------------------------------------------------ # ★設定方法 #------------------------------------------------------------------------------ # アイテム/スキルのメモ欄に以下のように記入します。 #------------------------------------------------------------------------------ # <ボトムチェンジ:50> # # このアイテム/スキルによって超過したダメージは以下のようになります。 # # HPダメージを与えるアイテム/スキルだった場合 # 対象の現在HPを超過したHPダメージのうち # 50%のダメージがMPダメージとして追加されます。 # # MPダメージを与えるアイテム/スキルだった場合 # 対象の現在MPを超過したMPダメージのうち # 50%のダメージがHPダメージとして追加されます。 #------------------------------------------------------------------------------ # <ボトムチェンジ:100> # # このアイテム/スキルによって超過したダメージは以下のようになります。 # # HPダメージを与えるアイテム/スキルだった場合 # 対象の現在HPを超過したHPダメージのうち # 100%のダメージがMPダメージとして追加されます。 # # MPダメージを与えるアイテム/スキルだった場合 # 対象の現在MPを超過したMPダメージのうち # 100%のダメージがHPダメージとして追加されます。 #============================================================================== module BOTTOM_CHANGE #ボトムチェンジ発動用のキーワードを設定する。 WORD = "ボトムチェンジ" end class Game_Temp attr_accessor :bottom_change end class Game_Battler #-------------------------------------------------------------------------- # 戦闘不能判定 #-------------------------------------------------------------------------- alias dead_bottom_change? dead? def dead? #ボトムチェンジ中の場合はMPダメージを表示する。 $game_temp.bottom_change != nil && $game_temp.bottom_change == self ? false : dead_bottom_change? end #-------------------------------------------------------------------------- # ダメージの反映 #-------------------------------------------------------------------------- alias execute_damage_bottom_change execute_damage def execute_damage(user) #ボトムチェンジの発動。 bottom_change(user) #本来の処理を実行。 execute_damage_bottom_change(user) end #-------------------------------------------------------------------------- # ボトムチェンジの発動 #-------------------------------------------------------------------------- def bottom_change(user) #行動の種類によってボトムチェンジ発生可否を判定。 case user.action.kind when 0;return when 1;data = $data_skills[user.action.skill_id].bottom_change when 2;data = $data_items[user.action.item_id].bottom_change end return if data == 0 if @hp_damage > self.hp#HPダメージがHPより大きい時 #HPダメージと現在HPとの差異を計算。 over_damage_h = @hp_damage - self.hp #MPダメージに差異分をボトムチェンジ割合で再計算した物を足す。 @mp_damage += over_damage_h * data / 100 elsif @mp_damage > self.mp#MPダメージがMPより大きい時 #MPダメージと現在MPとの差異を計算。 over_damage_m = @mp_damage - self.mp #HPダメージに差異分をボトムチェンジ割合で再計算した物を足す。 @hp_damage += over_damage_m * data / 100 end end end class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # MP ダメージ表示 #-------------------------------------------------------------------------- alias display_mp_damage_bottom_change display_mp_damage def display_mp_damage(target, obj = nil) #ボトムチェンジアイテム/スキルであればボトムチェンジフラグを有効にする。 if (@active_battler.action.kind == 1 && $data_skills[@active_battler.action.skill_id].bottom_change > 0) or (@active_battler.action.kind == 2 && $data_items[@active_battler.action.item_id].bottom_change > 0) $game_temp.bottom_change = target end #本来の処理を実行する。 display_mp_damage_bottom_change(target, obj) #ボトムチェンジフラグを無効にする。 $game_temp.bottom_change = nil end end module RPG class UsableItem < BaseItem #-------------------------------------------------------------------------- # ボトムチェンジの可否 #-------------------------------------------------------------------------- def bottom_change #キャッシュを返す。 return @bottom_change if @bottom_change != nil #メモ欄からデータを取得。 data = self.note.scan(/<#{BOTTOM_CHANGE::WORD}[::](\S+)>/).flatten #データが存在する場合はそのデータを。しない場合は0を設定する。 @bottom_change = data != nil && !data.empty? ? data[0].to_i : 0 #データを返す。 @bottom_change end end end