かばう



・敵の攻撃を肩代わりするスキルを実装します

変更点
2019:05:01
・対象アクターのスムーズな決定の改良、aliasから修正

#==============================================================================
# ■ かばう By 貪藻矢射妥←
# 
# ・敵の攻撃を肩代わりするスキルを実装します
# 
#==============================================================================
# 更新っぽいもの
# 
# 2019:05:01
# ・対象アクターのスムーズな決定の改良、aliasから修正

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

module DIAMOND
  # 『庇う』 ステートID
  PROTECT_ID = 271
end

class Game_Party
  #--------------------------------------------------------------------------
  # ● 『庇う』が使用可能なアクター/存在しているアクターの抽出
  #--------------------------------------------------------------------------
  def get_extra_tgt_member
    exist_list   = []
    protect_list = []
    
    # 存在しているアクターを取得
    for actor in @actors
      if actor.exist?
        exist_list.push(actor)
      end
    end
    
    # 存在しているアクターの中で『庇う』使用可能アクターを取得
    for actor in exist_list
      if actor.states.include?(DIAMOND::PROTECT_ID)
        protect_list.push(actor)
      end
    end
    
    return [exist_list, protect_list]
  end
  #--------------------------------------------------------------------------
  # ● 対象アクターのスムーズな決定
  #     actor_index : アクターインデックス
  #--------------------------------------------------------------------------
  def smooth_target_actor(actor_index)
    extra_target = get_extra_tgt_member
    exist_list   = extra_target[0]
    protect_list = extra_target[1]
    
    # 『庇う』可能アクターのいない場合、元の処理を実施
    if protect_list == []
      # アクターを取得
      actor = @actors[actor_index]
      # アクターが存在する場合
      if actor != nil and actor.exist?
        return actor
      else
        # アクターズの中で最初にヒットしたメンバーじゃなくランダムに変更
        return exist_list[rand(exist_list.size)]
      end
    else # 『庇う』可能アクターがいる場合、ターゲット変更
      return protect_list[rand(protect_list.size)]
    end
  end
end
設定例 まぁ、アレです。『かばう』ステートを付与する効果範囲が自分のスキルを作ればいいのです

戻る