# # 戦闘不能防止ステート(RGSS2) #  (C)2008 TYPE74RX-T # # ★ カスタマイズポイント:15行目 #============================================================================== # ★ RX_T_2b18 #------------------------------------------------------------------------------ # 戦闘不能防止ステート用モジュール #============================================================================== module RX_T_2b18 Heal_rate = 50 Effect_A = 42 Effect_B = 58 end #-------------------------------------------------------------------------- # ★ システムワードの登録:戦闘不能防止A & B #-------------------------------------------------------------------------- module RPG class State alias rx_rgss2b18_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, "戦闘不能防止A") 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, "戦闘不能防止B") 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_rgss2b18_rx_extract_sys_str_from_note end end end #============================================================================== # ■ Game_Battler #------------------------------------------------------------------------------ #  バトラーを扱うクラスです。このクラスは Game_Actor クラスと Game_Enemy クラ # スのスーパークラスとして使用されます。 #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias rx_rgss2b18_initialize initialize def initialize # メソッドを呼び戻す rx_rgss2b18_initialize @rx_revival_a = false # ★ 戦闘不能防止フラグA @rx_revival_b = false # ★ 戦闘不能防止フラグB(完全復活) @rx_revival_effect_id = 0 # ★ リバイバルエフェクト ID end #-------------------------------------------------------------------------- # ★ 戦闘不能防止フラグA #-------------------------------------------------------------------------- def rx_revival_a return @rx_revival_a end #-------------------------------------------------------------------------- # ★ 戦闘不能防止フラグB #-------------------------------------------------------------------------- def rx_revival_b return @rx_revival_b end #-------------------------------------------------------------------------- # ★ 戦闘不能防止判定 #-------------------------------------------------------------------------- def rx_get_revival @rx_revival_a = false @rx_revival_b = false for state in states @rx_revival_a = true if state.rx_sys_str.include?("戦闘不能防止A") @rx_revival_b = true if state.rx_sys_str.include?("戦闘不能防止B") end end #-------------------------------------------------------------------------- # ★ リバイバルエフェクト ID #-------------------------------------------------------------------------- def rx_revival_effect_id return @rx_revival_effect_id end #-------------------------------------------------------------------------- # ● 制約の取得 # 現在付加されているステートから最大の restriction を取得する。 #-------------------------------------------------------------------------- alias rx_rgss2b18_restriction restriction def restriction # ★ 戦闘不能防止判定 rx_get_revival # メソッドを呼び戻す rx_rgss2b18_restriction end #-------------------------------------------------------------------------- # ● ステート変化の適用 # obj : スキル、アイテム、または攻撃者 #-------------------------------------------------------------------------- alias rx_rgss2b18_apply_state_changes apply_state_changes def apply_state_changes(obj) # メソッドを呼び戻す rx_rgss2b18_apply_state_changes(obj) # ★ リバイバルエフェクト ID を初期化 @rx_revival_effect_id = 0 # 戦闘不能で且つ戦闘不能防止ステートBのステートがあるなら if @hp == 0 and state?(1) and @rx_revival_b # リバイバルエフェクト ID にアニメーション ID を代入 @rx_revival_effect_id = RX_T_2b18::Effect_B remove_state(1) # 戦闘不能 (ステート 1 番) を解除 @hp = maxhp # HP 完全復活 end # ★ 戦闘不能で且つ戦闘不能防止ステートAのステートがあるなら #  (リバイバルエフェクトフラグ無しの場合) if @hp == 0 and state?(1) and @rx_revival_a and not @rx_revival_effect_id > 0 # リバイバルエフェクト ID にアニメーション ID を代入 @rx_revival_effect_id = RX_T_2b18::Effect_A remove_state(1) # 戦闘不能 (ステート 1 番) を解除 @hp = maxhp * RX_T_2b18::Heal_rate / 100 # HP をある程度まで回復 end # ★ リバイバルエフェクト ID が 1 以上なら付加と解除に戦闘不能の情報を入れる if @rx_revival_effect_id > 0 @added_states.push(1) @removed_states.push(1) # 戦闘不能防止ステートを解除 for state in states remove_state(state.id) if state.rx_sys_str.include?("戦闘不能防止A") remove_state(state.id) if state.rx_sys_str.include?("戦闘不能防止B") end end end end #============================================================================== # ■ Scene_Battle #------------------------------------------------------------------------------ #  バトル画面の処理を行うクラスです。 #============================================================================== class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # ● 解除されたステートの表示 # target : 対象者 # obj : スキルまたはアイテム #-------------------------------------------------------------------------- alias rx_rgss2b18_display_removed_states display_removed_states def display_removed_states(target, obj = nil) # ★ リバイバルエフェクトを表示 display_animation([target], target.rx_revival_effect_id) if target.rx_revival_effect_id > 0 # メソッドを呼び戻す rx_rgss2b18_display_removed_states(target, obj) end end