効果範囲:敵X体 ランダム



VX Aceにある効果範囲:敵X体 ランダムをXPで再現してます。

※効果範囲を 敵全体 にしてください。
 若干VX Aceと仕様が違うかもしれません。。

変更点
2023:10:01
・aliasを使って効率化

#==============================================================================
# ■ 効果範囲:敵X体 ランダム By 貪藻矢射妥←
# 
#  VX Aceにある効果範囲:敵X体 ランダムをXPで再現してます。
# 
#   ※効果範囲を 敵全体 にしてください。
#    若干VX Aceと仕様が違うかもしれません。。
# 
#==============================================================================
# 更新っぽいもの
# 
# 2023:10:01
# ・aliasを使って効率化

$OuterFlgs = {} if $OuterFlgs == nil
$OuterFlgs["Rand_Select"] = true

class Game_System
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  # Add
  attr_accessor :sel_num
  attr_accessor :change_list
  # Add
end

module Rand_Select
  RanSel_WD = "ランダム"
  #--------------------------------------------------------------------------
  # ○ ターゲット数取得
  #--------------------------------------------------------------------------
  def get_rand_select
    select_num = 0
    rand_flg = false
    
    if @skill != nil # スキルの場合
      for j in @skill.element_set
        ele_set = $data_system.elements[j]
        if ele_set != nil
          if ele_set =~ /^#{RanSel_WD}([0-9]+)$/
            select_num += $1.to_i
            rand_flg = true
          end
        end
      end
    end
    
    return [select_num, rand_flg]
  end
end

class Scene_Battle
  include Rand_Select
  #--------------------------------------------------------------------------
  # ● フレーム更新 (メインフェーズ ステップ 1 : アクション準備)
  #--------------------------------------------------------------------------
  alias update_phase4_step1_diamond_rand_select update_phase4_step1
  def update_phase4_step1
    # 攻撃対象カウンタを初期化
    @selected_num = 0
    
    # 呼び戻す
    update_phase4_step1_diamond_rand_select
  end
  
  #--------------------------------------------------------------------------
  # ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始)
  #--------------------------------------------------------------------------
  ★★★ Surume_多刀流 参照  ★★★
  
  #--------------------------------------------------------------------------
  # ● フレーム更新 (メインフェーズ ステップ 5 : ダメージ表示)
  #--------------------------------------------------------------------------
  ★★★ Surume_2K_2_XP 参照  ★★★
  
  #--------------------------------------------------------------------------
  # ● スキルアクション 結果作成
  #--------------------------------------------------------------------------
  ★★★ Change_Window_Skill参照 ★★★
  
  #--------------------------------------------------------------------------
  # ● スキルまたはアイテムの対象側バトラー設定
  #     scope : スキルまたはアイテムの効果範囲
  #--------------------------------------------------------------------------
  alias set_target_battlers_diamond_rand_select set_target_battlers
  def set_target_battlers(scope)
    # 呼び戻す
    set_target_battlers_diamond_rand_select(scope)
    
    # 初期化
    $game_system.sel_num = 0
    $game_system.change_list = []
    
if $OuterFlgs["Rand_Select"]
    select_num = get_rand_select
    
    if select_num[1]
      # 初期設定
      $game_system.sel_num = select_num[0]
      @target_battlers = []
      # 行動側バトラーがエネミーの場合
      if @active_battler.is_a?(Game_Enemy)
        # 敵全体の場合ターゲットを選び直す
        if scope == 2
          for i in 0...select_num[0]
            actor = $game_party.actors[rand($game_party.actors.size)]
            if actor.exist?
              $game_system.change_list.push(actor)
            end
          end
        end
      else # Game_Actor
        # 敵全体の場合ターゲットを選び直す
        if scope == 2
          for i in 0...select_num[0]
            enemy = $game_troop.enemies[rand($game_troop.enemies.size)]
            if enemy.exist?
              $game_system.change_list.push(enemy)
            end
          end
        end
      end
      # とりあえずひとつずつプッシュしてみる。。
      @target_battlers.push($game_system.change_list[@selected_num])
    end
end # $OuterFlgs["Rand_Select"]
  end
end
設定例 ランダムセレクトスキルの作成 ランダムセレクトスキル 属性として『ランダムn』を付与するだけの簡単なお仕事

戻る