# # MP依存ダメージ(RGSS2) #  (C)2008 TYPE74RX-T # #-------------------------------------------------------------------------- # ★ システムワードの登録:MP差分依存・MP残量依存 #              最大MP依存 #-------------------------------------------------------------------------- module RPG class BaseItem alias rx_rgss2sp7_rx_extract_sys_str_from_note rx_extract_sys_str_from_note def rx_extract_sys_str_from_note rx_get_sys = RX_T.get_system_word_in_note(@note, "RX-SYS") unless rx_get_sys == "" @@rx_copy_str += rx_get_sys @note = @note.sub(rx_get_sys, "") @note = @note.sub("\r\n", "") end @rx_sys_str = @@rx_copy_str rx_get_sys = RX_T.get_system_word_in_note(@note, "MP差分依存", true) unless rx_get_sys == "" @@rx_copy_str += rx_get_sys @note = @note.sub(rx_get_sys, "") @note = @note.sub("\r\n", "") end @rx_sys_str = @@rx_copy_str rx_get_sys = RX_T.get_system_word_in_note(@note, "MP残量依存", true) unless rx_get_sys == "" @@rx_copy_str += rx_get_sys @note = @note.sub(rx_get_sys, "") @note = @note.sub("\r\n", "") end @rx_sys_str = @@rx_copy_str rx_get_sys = RX_T.get_system_word_in_note(@note, "最大MP依存", true) unless rx_get_sys == "" @@rx_copy_str += rx_get_sys @note = @note.sub(rx_get_sys, "") @note = @note.sub("\r\n", "") end @rx_sys_str = @@rx_copy_str # メソッドを呼び戻す rx_rgss2sp7_rx_extract_sys_str_from_note end end end #============================================================================== # ■ Game_Battler #------------------------------------------------------------------------------ #  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ # スのスーパークラスとして使用されます。 #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias rx_rgss2sp7_initialize initialize def initialize # メソッドを呼び戻す rx_rgss2sp7_initialize @rx_in_main_phase = false end #-------------------------------------------------------------------------- # ★ メインフェーズフラグ #-------------------------------------------------------------------------- def rx_in_main_phase return @rx_in_main_phase end #-------------------------------------------------------------------------- # ★ メインフェーズフラグの設定 #-------------------------------------------------------------------------- def rx_in_main_phase=(rx_in_main_phase) @rx_in_main_phase = rx_in_main_phase end #-------------------------------------------------------------------------- # ★ スキルまたはアイテムに付加されている拡張システムフラグの取得 # obj : スキルまたはアイテム #-------------------------------------------------------------------------- alias rx_rgss2sp7_rx_set_system_flag rx_set_system_flag def rx_set_system_flag(obj) # MP差分ダメージが含まれているかチェック @rx_mp_difference_damage = RX_T.check_system_word_in_sys_str(obj, "MP差分依存") # MP残量ダメージが含まれているかチェック @rx_mp_remainder_amount_damage = RX_T.check_system_word_in_sys_str(obj, "MP残量依存") # 最大MPダメージが含まれているかチェック @rx_maxmp_damage = RX_T.check_system_word_in_sys_str(obj, "最大MP依存") rx_rgss2sp7_rx_set_system_flag(obj) end #-------------------------------------------------------------------------- # ★ 装備物に付加されている拡張システムフラグの取得 # obj : スキルまたはアイテム #-------------------------------------------------------------------------- alias rx_rgss2sp7_rx_set_equip_sys_flag rx_set_equip_sys_flag def rx_set_equip_sys_flag(sys_str) # MP差分ダメージが含まれているかチェック @rx_mp_difference_damage = RX_T.check_system_word_in_equip(sys_str, "MP差分依存") # MP残量ダメージが含まれているかチェック @rx_mp_remainder_amount_damage = RX_T.check_system_word_in_equip(sys_str, "MP残量依存") # 最大MPダメージが含まれているかチェック @rx_maxmp_damage = RX_T.check_system_word_in_equip(sys_str, "最大MP依存") # メソッドを呼び戻す rx_rgss2sp7_rx_set_equip_sys_flag(sys_str) end #-------------------------------------------------------------------------- # ★ 特殊ダメージ計算(武器攻撃) # user : 武器の使用者 # obj : 武器 #-------------------------------------------------------------------------- alias rx_rgss2sp7_rx_weapon_damage_calculation rx_weapon_damage_calculation def rx_weapon_damage_calculation(attacker) # MP差分依存処理 if @rx_mp_difference_damage damage = (attacker.maxmp - attacker.mp) * RX_T.get_numeric_of_system_word_in_equip(attacker.rx_sys_str, "MP差分依存") @damage2 = (attacker.maxmp - attacker.mp) * RX_T.get_numeric_of_system_word_in_equip(attacker.rx_sys_str, "MP差分依存") return damage end # MP残量依存処理 if @rx_mp_remainder_amount_damage damage = attacker.mp * RX_T.get_numeric_of_system_word_in_equip(attacker.rx_sys_str, "MP残量依存") @damage2 = attacker.mp * RX_T.get_numeric_of_system_word_in_equip(attacker.rx_sys_str, "MP残量依存") return damage end # 最大MP依存処理 if @rx_maxmp_damage damage = attacker.maxmp * RX_T.get_numeric_of_system_word_in_equip(attacker.rx_sys_str, "最大MP依存") @damage2 = attacker.maxmp * RX_T.get_numeric_of_system_word_in_equip(attacker.rx_sys_str, "最大MP依存") return damage end # メソッドを呼び戻す rx_rgss2sp7_rx_weapon_damage_calculation(attacker) end #-------------------------------------------------------------------------- # ★ 特殊ダメージ計算 # user : スキルまたはアイテムの使用者 # obj : スキルまたはアイテム #-------------------------------------------------------------------------- alias rx_rgss2sp7_rx_damage_calculation rx_damage_calculation def rx_damage_calculation(user, obj) # MP差分依存処理 if @rx_mp_difference_damage if obj.damage_to_mp damage = (user.maxmp - user.mp) * obj.base_damage else damage = (user.maxmp - user.mp) * obj.base_damage end @damage2 = (user.maxmp - user.mp) * obj.base_damage return damage end # MP残量依存処理 if @rx_mp_remainder_amount_damage if obj.damage_to_mp damage = user.mp * obj.base_damage else damage = user.mp * obj.base_damage end @damage2 = user.mp * obj.base_damage return damage end # 最大MP依存処理 if @rx_maxmp_damage if obj.damage_to_mp damage = user.maxmp * obj.base_damage else damage = user.maxmp * obj.base_damage end @damage2 = user.maxmp * obj.base_damage return damage end # メソッドを呼び戻す rx_rgss2sp7_rx_damage_calculation(user, obj) end #-------------------------------------------------------------------------- # ● スキルの消費 MP 計算(MP依存ダメージ用) # skill : スキル #-------------------------------------------------------------------------- def rx_calc_mp_cost(skill) if half_mp_cost return skill.mp_cost / 2 else return skill.mp_cost end end #-------------------------------------------------------------------------- # ● スキルの消費 MP 計算 # skill : スキル #-------------------------------------------------------------------------- alias rx_rgss2sp7_calc_mp_cost calc_mp_cost def calc_mp_cost(skill) if RX_T.check_system_word_in_sys_str(skill, "MP差分依存") or RX_T.check_system_word_in_sys_str(skill, "MP残量依存") or RX_T.check_system_word_in_sys_str(skill, "最大MP依存") return 0 if rx_in_main_phase end # メソッドを呼び戻す rx_rgss2sp7_calc_mp_cost(skill) end end #============================================================================== # ■ Scene_Battle #------------------------------------------------------------------------------ #  バトル画面の処理を行うクラスです。 #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ● 戦闘行動の実行 #-------------------------------------------------------------------------- alias rx_rgss2sp7_execute_action execute_action def execute_action # ★ メインフェーズフラグをオン @active_battler.rx_in_main_phase = true # メソッドを呼び戻す rx_rgss2sp7_execute_action # ★ MP依存スキルを使用した場合、このタイミングでMPを消費 if @active_battler.action.kind == 1 if RX_T.check_system_word_in_sys_str(@active_battler.action.skill, "MP差分依存") or RX_T.check_system_word_in_sys_str(@active_battler.action.skill, "MP残量依存") or RX_T.check_system_word_in_sys_str(@active_battler.action.skill, "最大MP依存") @active_battler.mp -= @active_battler.rx_calc_mp_cost(@active_battler.action.skill) end end # ★ メインフェーズフラグをオフ @active_battler.rx_in_main_phase = false end end