#--------------------------------------------------------------------- # ★ リージョン隠し通路 アシストスクリプト 正式版 ver 1.00 # 作成者:Jun.A #--------------------------------------------------------------------- #--------------------------------------------------------------------- # ■ 設定用 追加コマンドセット用モジュール #--------------------------------------------------------------------- module HPRegion_module HIDDEN_PASSAGES_SID = 99 # 隠し通路起動スイッチID HIDDEN_PASSAGES_OPACITY_SID = 98 # 隠し通路通過中? HIDDEN_PASSAGES_OPACITY_VALUE = 127 # 隠し通路 透過値 HIDDEN_PASSAGES_REGION_ID_A = 63 # 隠し通路リージョンID A HIDDEN_PASSAGES_REGION_ID_B = 62 # 隠し通路リージョンID B end =begin  このスクリプトは指定されたリージョンを書く事によって、  普段通れない場所を隠し通路として通過可能にするスクリプトです。  動作させるには、追加コマンドセットが必須です。  HIDDEN_PASSAGES_SIDに指定したスイッチIDをオンにする事で動作します。  また、IDは変更可能です。  隠し通路用のリージョンIDは、下記の値を変更する事で自由に指定できます。  ・HIDDEN_PASSAGES_REGION_ID_A  ・HIDDEN_PASSAGES_REGION_ID_B  HIDDEN_PASSAGES_OPACITY_VALUEの値を変更すると、  隠し通路通行時のプレイヤーの透過の強さが変わります。  初期値は127、0で完全な透明に、最大値は255です。  ★使い方   隠し通路リージョンID Bを隠し通路始点として、   隠し通路にしたい壁等の前の床・地面に書いてください。   その後、壁等に隠し通路リージョンID Aを書くことによって、   強制的に通行できるようになります。   隠し通路終点として始点と同様、   隠し通路リージョンID Bを出口の床・地面に配置してください。   配置しない場合、床・地面に降りる事が出来ません。  ★仕様  ・横に引かれた壁タイルの天井は通行可能なため、   隠し通路の導線を引くと「天井に載った」事になってしまう。  回避策:天井の通らせたくない箇所を塞ぐようにして、      透明のイベントオブジェクトを配置してください。      プライオリティは「通常キャラと同じ」。  ★改造ポイント   改造用トリガーとしてHIDDEN_PASSAGES_OPACITY_SIDを用意しました。   このトリガーは"隠し通路を通っている最中"、trueになります。      $game_playerの@opacityを強制変更する他のスクリプト等を使っている場合、   隠し通路に入っても透過しませんので、   競合するスクリプトをこのスイッチをトリガーにして修正してください。   例)ろかんさんの「シンボルエンカウント補助」修正ポイントは333行目、    @opacity = @origin_opacity を    # リージョン隠し通路との競合修正(Jun.A) if $game_switches[HPRegion_module::HIDDEN_PASSAGES_OPACITY_SID] == false @opacity = @origin_opacity end に変更してください。 =end #--------------------------------------------------------------------- # ■ Game_CharacterBaseクラス 〜passable?の改造 #--------------------------------------------------------------------- class Game_CharacterBase #-------------------------------------------------------------------------- # ● 通行可能判定 # d : 方向(2,4,6,8) #-------------------------------------------------------------------------- alias s004_passable? passable? def passable?(x, y, d) x2 = $game_map.round_x_with_direction(x, d) y2 = $game_map.round_y_with_direction(y, d) # 隠し通路スイッチチェック if $game_switches[HPRegion_module::HIDDEN_PASSAGES_SID] == true # HIDDEN_PASSAGES_REGION_ID_B 通過・透過条件 # 前方のリージョンが隠し通路Bだった場合 if $add_commandset.assign_region_id(x2, y2) == HPRegion_module::HIDDEN_PASSAGES_REGION_ID_B return false if collide_with_characters?(x2, y2) # イベントキャラ衝突判定 return true # 通行不可でも強制的に通れる else # 隠し通路通過中フラグをオフにする(ジャンプ可能) $game_switches[HPRegion_module::HIDDEN_PASSAGES_OPACITY_SID] = false end # HIDDEN_PASSAGES_REGION_ID_A 通過・透過条件 # 前方のリージョンが隠し通路Bだった場合 if $add_commandset.assign_region_id(x2, y2) == HPRegion_module::HIDDEN_PASSAGES_REGION_ID_A return false if collide_with_characters?(x2, y2) #イベントキャラ衝突判定 return true # 通行不可でも強制的に通れる else # 隠し通路通過中フラグをオフにする(ジャンプ可能) $game_switches[HPRegion_module::HIDDEN_PASSAGES_OPACITY_SID] = false end end # 全ての条件が当てはまらない場合、通常動作を行う。 return false unless $game_map.valid?(x2, y2) return true if @through || debug_through? return false unless map_passable?(x, y, d) return false unless map_passable?(x2, y2, reverse_dir(d)) return false if collide_with_characters?(x2, y2) return true end end class Game_Player #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias sss_old_update update def update sss_old_update after_moving #移動アニメーション後処理 end #-------------------------------------------------------------------------- # ○ 移動アニメーション後処理 #-------------------------------------------------------------------------- def after_moving if $game_map.region_id(@x, @y) == HPRegion_module::HIDDEN_PASSAGES_REGION_ID_A @opacity = HPRegion_module::HIDDEN_PASSAGES_OPACITY_VALUE $game_switches[HPRegion_module::HIDDEN_PASSAGES_OPACITY_SID] = true end if $game_map.region_id(@x, @y) == HPRegion_module::HIDDEN_PASSAGES_REGION_ID_B $game_switches[HPRegion_module::HIDDEN_PASSAGES_OPACITY_SID] = false end end end