#============================================================================== # ■ RGSS3 ステート経過ターン取得 Ver1.01 by 星潟 #------------------------------------------------------------------------------ # ステート経過ターンの取得が可能になります。 # 同一ステートを付与して残りターン数がリセットされた場合でも # 経過ターン情報はリセットされずに維持されます。 # ステート経過ターンがリセットされるのは、ステートが解除された場合となります。 # # ダメージ計算式に組み込むことで # 特定のステートに継続してかかっているターンが長いほど # ダメージの上がるスキルといった設定が可能になったり # 使用者ステートと併せて使用する事で # 毎ターン連続して使用する事で徐々に攻撃力が増加するスキルといった設定が # 可能になるなど、多様な処理が可能になります。 #============================================================================== # アクター・エネミーの能力値取得を行う項目で指定。 #============================================================================== # 例1.アイテム/スキルのダメージ計算式の場合 #------------------------------------------------------------------------------ # a.passed_turns(5) # # 使用者のステートID5の経過ターンを取得。 #------------------------------------------------------------------------------ # b.passed_turns(3) # # 使用者のステートID3の経過ターンを取得。 #============================================================================== # 例2.イベントコマンドのスクリプトや条件分岐のスクリプトの場合 #------------------------------------------------------------------------------ # $game_actors[1].passed_turns(5) # # アクターID1のアクターのステートID5の経過ターンを取得。 #------------------------------------------------------------------------------ # $game_party.members[0].passed_turns(3) # # 先頭アクターのステートID3の経過ターンを取得。 #------------------------------------------------------------------------------ # $game_troop.members[0].passed_turns(3) # # 先頭エネミーのステートID3の経過ターンを取得。 #============================================================================== class Game_BattlerBase #-------------------------------------------------------------------------- # ステート情報をクリア #-------------------------------------------------------------------------- alias clear_states_passed_turns clear_states def clear_states clear_states_passed_turns @state_passed_turns = {} end #-------------------------------------------------------------------------- # ステートの消去 #-------------------------------------------------------------------------- alias erase_state_passed_turns erase_state def erase_state(state_id) erase_state_passed_turns(state_id) reset_state_passed_turns(state_id) end #-------------------------------------------------------------------------- # 経過ターン数データのセット #-------------------------------------------------------------------------- def set_state_passed_turns(state_id) @state_passed_turns ||= {} @state_passed_turns[state_id] ||= 0 end #-------------------------------------------------------------------------- # 経過ターン数データの消去 #-------------------------------------------------------------------------- def reset_state_passed_turns(state_id) @state_passed_turns ||= {} @state_passed_turns.delete(state_id) end #-------------------------------------------------------------------------- # 経過ターン数データの取得 #-------------------------------------------------------------------------- def passed_turns(state_id) @state_passed_turns ||= {} d = @state_passed_turns[state_id] d ? d : 0 end end class Game_Battler < Game_BattlerBase #-------------------------------------------------------------------------- # 新しいステートの付加 #-------------------------------------------------------------------------- alias add_new_state_passed_turns add_new_state def add_new_state(state_id) add_new_state_passed_turns(state_id) set_state_passed_turns(state_id) end #-------------------------------------------------------------------------- # ステートのターンカウント更新 #-------------------------------------------------------------------------- alias update_state_turns_passed_turns update_state_turns def update_state_turns update_state_turns_passed_turns @state_passed_turns ||= {} @state_passed_turns.each_key {|k| @state_passed_turns[k] += 1} end end