#============================================================================== # ○距離によるイベントの移動変化 Ver1.00 # for RGSS2 # 西瓜 / Space not far # http://muspell.raindrop.jp/ # プレイヤーとの距離によって動き方の変わるイベントを作成できます。 #============================================================================== # イベントの名前に"ENEMY"もしくは""(nは変化パターン) # と入力してください。 module SNF SYMBOLNAME = "ENEMY" # この文字列が名前に含まれるイベントが対象となります。 # のように記述すると、n番の変化パターンが採用されます。 # ENEMYとだけ入れた場合は0番が採用されます。 VARIABLEMOVE = [] # イベントの移動の変化パターンを以下のように記述します。 # [パターン] = [基準距離, 速度(遠), 速度(近), # 移動タイプ(遠),移動タイプ(近)] # イベントの初期値は基本的に無視されます。 # ■基準距離 # X座標の差とY座標の差の合計がこれ超なら遠距離となり、 # 以下なら近距離となります。整数で記述してください。 # ■速度 # イベントで設定できる「速度」と同じです。 # ■移動タイプ(※省略可能) # 以下を参考にしてください。カスタムの場合は # イベントに指定したとおりに動きます。 # カスタムを指定していない場合は固定と同じになります。 # 0:固定 # 1:ランダム # 2:プレイヤーに近づく # 3:カスタム VARIABLEMOVE[0] = [4, 3, 1] # 4マス以内に近づくと動きが遅くなります。 VARIABLEMOVE[1] = [6, 2, 4, 1, 2] # 普段は低速でランダムに動きますが # 6マス以内に近づくと高速で近づいてきます。 end class Game_Map # を名前に含むイベントのみ適用 #-------------------------------------------------------------------------- # ● イベントの更新 #-------------------------------------------------------------------------- alias h130425_update_events update_events def update_events h130425_update_events for event in @events.values next if event.variable_movetype == -1 distance = (event.x - $game_player.x).abs + ($game_player.y - event.y).abs if distance > SNF::VARIABLEMOVE[event.variable_movetype][0] # 遠距離 event.move_speed = SNF::VARIABLEMOVE[event.variable_movetype][1] event.move_type = SNF::VARIABLEMOVE[event.variable_movetype][3] unless SNF::VARIABLEMOVE[event.variable_movetype][3].nil? else # 近距離 event.move_speed = SNF::VARIABLEMOVE[event.variable_movetype][2] event.move_type = SNF::VARIABLEMOVE[event.variable_movetype][4] unless SNF::VARIABLEMOVE[event.variable_movetype][4].nil? end end end end class Game_Character #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :move_speed attr_accessor :move_type end class Game_Event < Game_Character def variable_movetype s = name[/<#{SNF::SYMBOLNAME}:([+-]*?[0-9]+?)>/] if $1.nil? return 0 if name.include?(SNF::SYMBOLNAME) return -1 else return $1.to_i end end def name return @event.name end end