=begin RGSS3 ★混乱移動ステート★ キー入力割り当てがシャッフルされて正常に歩けなくなるステートを作ります。 ● 使い方 ●======================================================== ステートのメモ欄に「混乱移動」と記述してください。 ==================================================================== ● 注意 ●========================================================== ニューゲームから始めないとエラーを吐きます。 ==================================================================== ver1.00 Last Update : 2012/01/11 01/11 : RGSS2からの移植 ろかん   http://kaisou-ryouiki.sakura.ne.jp/ =end $rsi ||= {} $rsi["混乱移動ステート"] = true class RPG::State < RPG::BaseItem def panic_move? self.note.include?("混乱移動") end end class Game_Actor < Game_Battler #-------------------------------------------------------------------------- # ● 新しいステートの付加 #-------------------------------------------------------------------------- alias panic_move_add_new_state add_new_state def add_new_state(state_id) panic_move_add_new_state(state_id) update_panic_move(state_id) end #-------------------------------------------------------------------------- # ● ステートの解除 #-------------------------------------------------------------------------- alias panic_move_remove_state remove_state def remove_state(state_id) panic_move_remove_state(state_id) update_panic_move(state_id) end #-------------------------------------------------------------------------- # ● 混乱移動判定 #-------------------------------------------------------------------------- def panic_move? states.any?{|state| state.panic_move?} end #-------------------------------------------------------------------------- # ● 混乱移動判定の更新 #-------------------------------------------------------------------------- def update_panic_move(state_id) if $data_states[state_id].panic_move? && $game_party.members.include?(self) $game_party.update_panic_move end end end class Game_Party < Game_Unit #-------------------------------------------------------------------------- # ● アクターを加える #-------------------------------------------------------------------------- alias panic_move_add_actor add_actor def add_actor(actor_id) panic_move_add_actor(actor_id) update_panic_move end #-------------------------------------------------------------------------- # ● アクターを外す #-------------------------------------------------------------------------- alias panic_move_remove_actor remove_actor def remove_actor(actor_id) panic_move_remove_actor(actor_id) update_panic_move end #-------------------------------------------------------------------------- # ● 混乱移動判定の更新 #-------------------------------------------------------------------------- def update_panic_move $game_player.panic = members.any?{|actor| actor.panic_move?} end end class Game_Player < Game_Character #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_writer :panic #-------------------------------------------------------------------------- # ● 公開メンバ変数の初期化 #-------------------------------------------------------------------------- alias panic_move_init_public_members init_public_members def init_public_members panic_move_init_public_members @panic = false end #-------------------------------------------------------------------------- # ● 非公開メンバ変数の初期化 #-------------------------------------------------------------------------- alias panic_move_init_private_members init_private_members def init_private_members panic_move_init_private_members @panic_input = {2=>2, 4=>4, 6=>6, 8=>8} end #-------------------------------------------------------------------------- # ● 混乱移動判定の設定 #-------------------------------------------------------------------------- def panic=(bool) set_panic_input if !@panic && bool @panic = bool end #-------------------------------------------------------------------------- # ● 混乱移動方向キーの割り当て #-------------------------------------------------------------------------- def set_panic_input list = [2, 4, 6, 8] @panic_input.each_key{|key| @panic_input[key] = list.delete_at(rand(list.size)) } end #-------------------------------------------------------------------------- # ● 方向ボタン入力による移動処理 #-------------------------------------------------------------------------- alias move_by_input_with_panic move_by_input def move_by_input @panic ? panic_move_by_input : move_by_input_with_panic end #-------------------------------------------------------------------------- # ● 方向ボタン入力による移動処理 (混乱中) #-------------------------------------------------------------------------- def panic_move_by_input return if !movable? || $game_map.interpreter.running? move_straight(@panic_input[Input.dir4]) if Input.dir4 > 0 end end