=begin RGSS3 ★ イベント出現条件へのマップ移動回数判定の追加 ★ イベントの出現条件で扱えるスイッチに 「プレイヤーが指定回数マップを移動したか」というものを用意できます。 マップを一定回数移動したらシンボルエンカウントを復活させるといった 演出に利用できます。 ● 機能と使用法 ●================================================== 設定箇所で指定した番号のスイッチ判定を特殊なものへと変更します。 -------------------------------------------------------------------- この特殊スイッチはイベント毎に ON/OFF の認識が異なってきます。 -------------------------------------------------------------------- デバッグ画面から確認できる特殊スイッチの状態は意味をなしません。 -------------------------------------------------------------------- 初期状態(なにもしていない状態)では特殊スイッチは ON の状態で認識されます。 -------------------------------------------------------------------- イベントコマンドのスクリプトより下記の命令を実行することで、 "そのイベントが認識する"特殊スイッチの状態を OFF にします。 set_movemap_count(n) n には数値を指定します。 ここで指定した回数分マップを移動することで 特殊スイッチは再び ON の状態として認識されるようになります。 -------------------------------------------------------------------- そのイベント配置されていないマップに移動した場合のみ 移動回数はカウントされます。 ==================================================================== ● 使用できるスクリプトコマンド ●================================== reset_movemap_count  この命令を実行したイベントの特殊スイッチに対する認識を ON に戻します。 -------------------------------------------------------------------- reset_movemap_count_all  全てのイベントの特殊スイッチへの認識を ON に戻します。 ==================================================================== ver1.00 Last Update : 2013/06/28 06/28 : 新規 ろかん   http://kaisou-ryouiki.sakura.ne.jp/ =end #=================================== # ●設定箇所 #=================================== module MoveMap_Count # 特殊スイッチとして扱うスイッチ番号 MMC_SWITCH = 15 end #=================================== # ここまで #=================================== $rsi ||= {} $rsi["イベント出現条件へのマップ移動回数判定の追加"] = true class Game_System #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :movemap_count #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias _initialize_movemap_count initialize def initialize _initialize_movemap_count @movemap_count = {} end #-------------------------------------------------------------------------- # ● マップ移動回数のカウントを1減らす #-------------------------------------------------------------------------- def countdown_movemap_count(new_map_id) @movemap_count.each_key{|map_id| next if map_id == new_map_id @movemap_count[map_id].each_key{|event_id| @movemap_count[map_id][event_id] -= 1 @movemap_count[map_id].delete(event_id) if @movemap_count[map_id][event_id].zero? } @movemap_count.delete(map_id) if @movemap_count[map_id].size.zero? } end end class Game_Player < Game_Character #-------------------------------------------------------------------------- # ● 場所移動の実行 #-------------------------------------------------------------------------- alias _perform_transfer_movemap_count perform_transfer def perform_transfer $game_system.countdown_movemap_count(@new_map_id) if transfer? && @new_map_id != $game_map.map_id _perform_transfer_movemap_count end end class Game_Event < Game_Character #-------------------------------------------------------------------------- # ● インクルード MoveMap_Count #-------------------------------------------------------------------------- include MoveMap_Count #-------------------------------------------------------------------------- # ● イベントページの条件合致判定 #-------------------------------------------------------------------------- alias _conditions_met_with_movemap_count conditions_met? def conditions_met?(page) c = page.condition if c.switch1_valid && c.switch1_id == MMC_SWITCH return false unless movemap_count_zero? $game_switches[c.switch1_id] = true end if c.switch2_valid && c.switch2_id == MMC_SWITCH return false unless movemap_count_zero? $game_switches[c.switch2_id] = true end _conditions_met_with_movemap_count(page) end #-------------------------------------------------------------------------- # ● マップ移動カウントが存在する場合に偽を返す #-------------------------------------------------------------------------- def movemap_count_zero? if $game_system.movemap_count[@map_id] && $game_system.movemap_count[@map_id][@id] false else true end end end class Game_Interpreter #-------------------------------------------------------------------------- # ● イベントへマップ移動カウントをセット #-------------------------------------------------------------------------- def set_movemap_count(count) if same_map? && @event_id > 0 $game_system.movemap_count[@map_id] ||= {} $game_system.movemap_count[@map_id][@event_id] = count $game_map.events[@event_id].refresh end end #-------------------------------------------------------------------------- # ● イベントが保持しているマップ移動カウントをリセット #-------------------------------------------------------------------------- def reset_movemap_count if same_map? && @event_id > 0 && $game_system.movemap_count[@map_id] $game_system.movemap_count[@map_id].delete(@event_id) $game_map.events[@event_id].refresh end end #-------------------------------------------------------------------------- # ● すべてのマップ移動カウントをリセット #-------------------------------------------------------------------------- def reset_movemap_count_all $game_system.movemap_count = {} $game_map.events.each{|event| event.refresh} end end