=begin ステート時にコモンイベント発動 2011/09/18 mo-to TKOOL COOL http://mototkool.blog.fc2.com/ ★概要★ ステートのメモ欄で指定したコモンイベントをそのステートに掛かったとき自動で 発動させスクリプト。 ★使用法★ スクリプトの素材▼ 素材 以下 ▼メイン 以上にこれをコピーして張り付ける。 ●そのステートに掛かると発動させたいステートのメモ欄に <ステート時コモン コモンイベントID>と記述する。 例)毒のステートのメモ欄に<ステート時コモン 1>と記述 毒のステートに掛かるとコモンイベントID1番が自動で発動する。 ●また下記のカスタマイズポイントを弄ることで発動する対象を変えることが出来る。 ★仕様 戦闘不能のステートにこれを設定した場合、戦闘終了時及びゲームオーバー時には 発動しない。 =end #-------------------------------------------------------------------------- #★カスタマイズポインツ #-------------------------------------------------------------------------- module MOTO VARIABLES_NAM = 1 #SELECT_NAMに使用するゲーム変数の数値 SELECT_NAM = 0 #0:敵と味方ともに発動 1:味方のみ 2:敵のみ end #-------------------------------------------------------------------------- class RPG::State #-------------------------------------------------------------------------- # ○ メモ欄取得 #-------------------------------------------------------------------------- def state_common_up @state_common = false @state_common_nam = 0 self.note.each_line { |line| case line when /<ステート時コモン\s*(\d+)>/ @state_common = true @state_common_nam = $1.to_i end } end #-------------------------------------------------------------------------- # ○ state_common取得 #-------------------------------------------------------------------------- def state_common state_common_up if @state_common == nil return @state_common end #-------------------------------------------------------------------------- # ○ state_common_nam取得 #-------------------------------------------------------------------------- def state_common_nam state_common_up if @state_common == nil return @state_common_nam end end class Game_Battler #-------------------------------------------------------------------------- # ○ ステート時コモン取得 #-------------------------------------------------------------------------- def state_common for state in states.compact return true if state.state_common end return false end #-------------------------------------------------------------------------- # ○ ステート時コモンナンバー取得 #-------------------------------------------------------------------------- def state_common_nam n = 0 for state in states.compact n = state.state_common_nam end return n end #-------------------------------------------------------------------------- # ● ステートの付加 # state_id : ステート ID ※再定義 #-------------------------------------------------------------------------- def add_state(state_id) state = $data_states[state_id] # ステートデータを取得 return if state == nil # データが無効? return if state_ignore?(state_id) # 無視するべきステート? unless state?(state_id) # このステートが付加されていない? unless state_offset?(state_id) # 相殺するべきステートではない? @states.push(state_id) # ID を @states 配列に追加 end $game_variables[MOTO::VARIABLES_NAM] = MOTO::SELECT_NAM if actor? and state_common and $game_variables[MOTO::VARIABLES_NAM] == 1 $game_temp.common_event_id = state_common_nam end if state_common and $game_variables[MOTO::VARIABLES_NAM] == 0 $game_temp.common_event_id = state_common_nam end if actor? == false and state_common and $game_variables[MOTO::VARIABLES_NAM] == 2 $game_temp.common_event_id = state_common_nam end if state_id == 1 # 戦闘不能 (ステート 1 番) なら @hp = 0 # HP を 0 に変更する end unless inputable? # 自由意思で行動できない場合 @action.clear # 戦闘行動をクリアする end for i in state.state_set # [解除するステート] に指定されて remove_state(i) # いるステートを実際に解除する @removed_states.delete(i) # 自動解除の分は表示しない end sort_states # 表示優先度の大きい順に並び替え end @state_turns[state_id] = state.hold_turn # 自然解除のターン数を設定 end end