####################### ステートによる移動速度の変化 ####################### # # # マップ上の移動速度がステートによって変化するようになります。 # # # # 移動を強制された場合の速度もステートに依存してしまうので、 # # 最初に「移動速度の変更」で変更してください。 # # イベントの後は特に指定しなくても、ステート依存の速度に戻ります。 # # # ############################################################################ # ここから設定 module Annex DEFAULT_MOVE_SPEED = 4.0 # デフォルトの歩行速度。(小数点以下も可能。デフォルトでは4) DASH_STATE_NAMES = ["加速", "鈍足"] DASH_STATE_SPEED = [ 5.2, 2.3] # ステート名前と歩行速度の二つの配列 # 左のが優先される # 以下はダッシュ設定 DASH_KEY = Input::C # マップ移動の際に特定のキーを押すと移動速度が上昇する # nilと入れればダッシュ機能は使えない。 DASH_SPEED = 1.25 # ダッシュキーを押している間はこの値だけ移動速度が倍増。 end # ここまで設定 #============================================================================== # ■ Game_Battler #============================================================================== class Game_Battler #-------------------------------------------------------------------------- # ◎ 追加 指定された名前のステートのIDを取得 # state_name : ステート名 #-------------------------------------------------------------------------- def get_state_id(state_name) for i in $data_states next if i == nil if i.name == state_name return (i.id) end end return 0 end #-------------------------------------------------------------------------- # ◎ 追加 指定された名前のステートになっているかの確認 # state_name : ステート名 #-------------------------------------------------------------------------- def state_name?(state_name) id = get_state_id(state_name) return state?(id) end end #============================================================================== # ■ Game_Actor #============================================================================== class Game_Actor #-------------------------------------------------------------------------- # ◎ 追加 ステートの付加 # state_id : ステート ID # force : 強制付加フラグ (オートステートの処理で使用) #-------------------------------------------------------------------------- def add_state(state_id, force = false) super(state_id, force) # DASH_STATE_NAMESのステートが付加された場合移動速度を変更。 for i in Annex::DASH_STATE_NAMES if $data_states[state_id].name == i $game_player.move_speed_set break end end end #-------------------------------------------------------------------------- # ◎ 追加 ステートの解除 # state_id : ステート ID # force : 強制解除フラグ (オートステートの処理で使用) #-------------------------------------------------------------------------- def remove_state(state_id, force = false) super(state_id, force) # DASH_STATE_NAMESのステートが付加された場合移動速度を変更。 for i in Annex::DASH_STATE_NAMES if $data_states[state_id].name == i $game_player.move_speed_set break end end end end #============================================================================== # ■ Game_Player #============================================================================== class Game_Player < Game_Character #-------------------------------------------------------------------------- # ◎ 追加 オブジェクト初期化 #-------------------------------------------------------------------------- def initialize super # 移動速度の設定 move_speed_set end #-------------------------------------------------------------------------- # ○ フレーム更新 #-------------------------------------------------------------------------- alias dash_state_update update def update # ・移動中 ・イベント実行中 ・移動ルート強制中 # ・メッセージ表示中 ・ダッシュキーがnil の場合はダッシュは実行されません unless moving? or $game_system.map_interpreter.running? or @move_route_forcing or $game_temp.message_window_showing # 速度の設定 boost = Annex::DASH_KEY == nil ? 1 : (Input.press?(Annex::DASH_KEY) ? Annex::DASH_SPEED : 1) @move_speed = @default_speed * boost end # 呼び戻す dash_state_update end #-------------------------------------------------------------------------- # □ 追加 移動速度の設定 #-------------------------------------------------------------------------- def move_speed_set @default_speed = $game_party.check_map_move_speed end end #============================================================================== # ■ Game_Party #============================================================================== class Game_Party #-------------------------------------------------------------------------- # ◎ 追加 キャラクター移動速度変更 #-------------------------------------------------------------------------- def check_map_move_speed # DASH_STATE_NAMESを順に読む。 for i in 0...Annex::DASH_STATE_NAMES.size for actor in @actors # 移動速度変更ステートに掛かっている場合、その速度を返す if actor.hp > 0 and actor.state_name?(Annex::DASH_STATE_NAMES[i]) return Annex::DASH_STATE_SPEED[i] end end end # 移動速度変更ステートに掛かっていない場合、デフォルトの速度を返す return Annex::DEFAULT_MOVE_SPEED end end