# # 魔法反射ステート&装備(RGSS2) #  (C)2007 TYPE74RX-T # # ※:カスタマイズポイント…15~18行目 #============================================================================== # ★ RX_T #------------------------------------------------------------------------------ #  設定用 #============================================================================== module RX_T RX_Mcounter_Comment = "魔法障壁が魔法を跳ね返した!" # 反射時メッセージ RX_Mcounter_SE_Name = "flash1" # 反射時効果音名 RX_Mcounter_SE_Volume = 80 # 反射時効果音音量 RX_Mcounter_SE_Pitch = 100 # 反射時効果音ピッチ end #-------------------------------------------------------------------------- # ★ システムワードの登録:魔法反射 #-------------------------------------------------------------------------- module RPG class State alias rx_rgss2b2_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_copy_str += rx_get_sys @note = @note.sub(rx_get_sys, "") @note = @note.sub("\r\n", "") @rx_sys_str = @@rx_copy_str # メソッドを呼び戻す rx_rgss2b2_rx_extract_sys_str_from_note end end end #-------------------------------------------------------------------------- # ★ システムワードの登録:魔法反射・魔反射無視 #-------------------------------------------------------------------------- module RPG class BaseItem alias rx_rgss2b2_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_copy_str += rx_get_sys @note = @note.sub(rx_get_sys, "") @note = @note.sub("\r\n", "") @rx_sys_str = @@rx_copy_str rx_get_sys = RX_T.get_system_word_in_note(@note, "魔反射無視") @@rx_copy_str += rx_get_sys @note = @note.sub(rx_get_sys, "") @note = @note.sub("\r\n", "") @rx_sys_str = @@rx_copy_str # メソッドを呼び戻す rx_rgss2b2_rx_extract_sys_str_from_note end end end #============================================================================== # ■ Game_Battler #------------------------------------------------------------------------------ #  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ # スのスーパークラスとして使用されます。 #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias rx_rgss2b2_initialize initialize def initialize # メソッドを呼び戻す rx_rgss2b2_initialize @rx_refrex = false # ★ 魔法反射フラグ @rx_refrect = false # ★ 魔法を反射されたフラグ end #-------------------------------------------------------------------------- # ★ 魔法反射ステートフラグ #-------------------------------------------------------------------------- def rx_refrex return @rx_refrex end #-------------------------------------------------------------------------- # ★ 魔法を反射されたフラグ #-------------------------------------------------------------------------- def rx_refrect return @rx_refrect end #-------------------------------------------------------------------------- # ★ 魔法を反射されたフラグ操作 #-------------------------------------------------------------------------- def rx_refrect=(flag) @rx_refrect = flag end #-------------------------------------------------------------------------- # ● ステートの付加 # state_id : ステート ID #-------------------------------------------------------------------------- alias rx_rgss2b2_add_state add_state def add_state(state_id) # メソッドを呼び戻す rx_rgss2b2_add_state(state_id) # ★ システムワードに「魔法反射」が含まれているか if RX_T.check_system_word_in_sys_str($data_states[state_id], "魔法反射") @rx_refrex = true end end #-------------------------------------------------------------------------- # ● ステートの解除 # state_id : ステート ID #-------------------------------------------------------------------------- alias rx_rgss2b2_remove_state remove_state def remove_state(state_id) # メソッドを呼び戻す rx_rgss2b2_remove_state(state_id) # ★ システムワードに「魔法反射」が含まれているか if RX_T.check_system_word_in_sys_str($data_states[state_id], "魔法反射") @rx_refrex = false end end #-------------------------------------------------------------------------- # ● スキルの効果適用 # user : スキルの使用者 # skill : スキル #-------------------------------------------------------------------------- alias rx_rgss2b2_skill_effect skill_effect def skill_effect(user, skill) # ★ 魔法系スキル(※)を使っているか、若しくはそれを使用中かのいずれかで #   かつ、対象が魔法反射ステートなら(魔反射無視魔法を除く) #  (※:精神関係度が 1 以上のスキル) if (user.action.rx_magic_use? or user.rx_magic_use) and self.rx_refrex and not RX_T.check_system_word_in_sys_str(skill, "魔反射無視") # 魔法使用フラグをオン user.rx_magic_use = true # 魔法を跳ね返されたフラグをオン user.rx_refrect = true # スキルの効果適用(反射用)へ return user.rx_refrect_skill_effect(self, skill) end # ★ 魔法系スキル(※)を使っているか、若しくはそれを使用中かのいずれかで #   かつ、魔法反射系装備の対象に使用した場合(魔反射無視魔法を除く) #  (※:精神関係度が 1 以上のスキル) if (user.action.rx_magic_use? or user.rx_magic_use) and RX_T.check_system_word_in_equip(self.rx_sys_str, "魔法反射") and not RX_T.check_system_word_in_sys_str(skill, "魔反射無視") # 魔法使用フラグをオン user.rx_magic_use = true # 魔法を跳ね返されたフラグをオン user.rx_refrect = true # スキルの効果適用(反射用)へ return user.rx_refrect_skill_effect(self, skill) end user.rx_magic_use = false user.rx_refrect = false # メソッドを呼び戻す rx_rgss2b2_skill_effect(user, skill) end #-------------------------------------------------------------------------- # ★ スキルの効果適用(反射用) # user : スキルの使用者 # skill : スキル #-------------------------------------------------------------------------- def rx_refrect_skill_effect(user, skill) clear_action_results unless skill_effective?(user, skill) @skipped = true return end if rand(100) >= calc_hit(user, skill) # 命中判定 @missed = true return end if rand(100) < calc_eva(user, skill) # 回避判定 @evaded = true return end make_obj_damage_value(user, skill) # ダメージ計算 make_obj_absorb_effect(user, skill) # 吸収効果計算 execute_damage(user) # ダメージ反映 if skill.physical_attack and @hp_damage == 0 # 物理ノーダメージ判定 return end apply_state_changes(skill) # ステート変化 end end #============================================================================== # ■ Scene_Battle #------------------------------------------------------------------------------ #  バトル画面の処理を行うクラスです。 #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ★ 魔法反射エフェクト #-------------------------------------------------------------------------- def rx_refrex_effect @message_window.add_instant_text(RX_T::RX_Mcounter_Comment) Audio.se_play("Audio/SE/" + RX_T::RX_Mcounter_SE_Name, RX_T::RX_Mcounter_SE_Volume, RX_T::RX_Mcounter_SE_Pitch) wait(20) end #-------------------------------------------------------------------------- # ● 戦闘行動の実行 #-------------------------------------------------------------------------- alias rx_rgss2b2_execute_action execute_action def execute_action # ★ 魔法使用および反射フラグを初期化 @active_battler.rx_refrect = false @active_battler.rx_magic_use = false # メソッドを呼び戻す rx_rgss2b2_execute_action end #-------------------------------------------------------------------------- # ● 行動結果の表示 # target : 対象者 # obj : スキルまたはアイテム #-------------------------------------------------------------------------- def display_action_effects(target, obj = nil) # ★ 魔法を跳ね返されたフラグが立っていれば if @active_battler.rx_refrect # 対象を使用者に変換 target = nil target = @active_battler end # ★ 魔法反射エフェクトさせるなら if @active_battler.rx_refrect and not target.skipped line_number = @message_window.line_number wait(5) # 反射エフェクト rx_refrex_effect display_critical(target, obj) display_damage(target, obj) display_state_changes(target, obj) # 反射メッセージ用・メッセージ補正 if line_number + 1 == @message_window.line_number display_failure(target, obj) unless target.states_active? end if line_number != @message_window.line_number wait(30) end @message_window.back_to(line_number) end # ★ 魔法を跳ね返されたフラグが立っていれば終了 return if @active_battler.rx_refrect unless target.skipped line_number = @message_window.line_number wait(5) display_critical(target, obj) display_damage(target, obj) display_state_changes(target, obj) if line_number == @message_window.line_number display_failure(target, obj) unless target.states_active? end if line_number != @message_window.line_number wait(30) end @message_window.back_to(line_number) end end end