#============================================================================== # ■ RGSS3 ターン更新禁止ステート Ver1.01 by 星潟 #------------------------------------------------------------------------------ # 指定したステートの非戦闘時の歩行による経過ターン更新、もしくは # 戦闘中のターン経過による経過ターン更新を行わないようにできます。 #------------------------------------------------------------------------------ # ★設定例(ステートのメモ欄を使用します) #------------------------------------------------------------------------------ # <ターン更新禁止:1> # # このステートは非戦闘時に歩行によるターン更新を行いません。 #------------------------------------------------------------------------------ # <ターン更新禁止:2> # # このステートは戦闘時にターン経過によるターン更新を行いません。 #============================================================================== module STATE_COUNT_BREAK #ターン更新禁止設定用キーワードを指定。 WORD = "ターン更新禁止" end class Game_Temp attr_accessor :state_turn_update_break end class Game_BattlerBase #-------------------------------------------------------------------------- # ● 現在のステートをオブジェクトの配列で取得 #-------------------------------------------------------------------------- alias states_turn_update_break states def states #本来の処理結果を取得。 array = states_turn_update_break #ステート更新で呼び出されており、なおかつ該当シーンの場合のみ配列から除外。 if $game_temp.state_turn_update_break type = SceneManager.scene_is?(Scene_Battle) ? 2 : 1 array.delete_if {|state| state.turn_update_type == type} end #ステート配列を返す。 array end end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # ● ステートのターンカウント更新 #-------------------------------------------------------------------------- alias update_state_turns_turn_update_break update_state_turns def update_state_turns #ステートのターンカウント更新フラグを立てる。 $game_temp.state_turn_update_break = true #本来の処理を実行。 update_state_turns_turn_update_break #ステートのターンカウント更新フラグを消去する。 $game_temp.state_turn_update_break = false end end class RPG::State < RPG::BaseItem def turn_update_type #キャッシュが存在する場合はキャッシュを返す。 @turn_update_type ||= /<#{STATE_COUNT_BREAK::WORD}[::](\d+)>/ =~ note ? $1.to_i : 0 end end