混乱拡張



・混乱を拡張する
 混乱時の行動制約として敵だけを通常攻撃、味方だけを通常攻撃
 のいずれかしか選べませんが、敵味方関係なく通常攻撃が可能な混乱を実装します

 また、混乱時の行動パターンに防御、逃走、何もしないを追加します


変更点
2025:09:01
・混乱時のアクションの拡張

2025:11:01
・混乱時のアクションの拡張 part2

#==============================================================================
# ■ 混乱拡張 By 貪藻矢射妥←
# 
# ・混乱を拡張する
#  混乱時の行動制約として敵だけを通常攻撃、味方だけを通常攻撃
#  のいずれかしか選べませんが、敵味方関係なく通常攻撃が可能な混乱を実装します
# 
#  また、以下も対応
#   混乱時の基本行動パターンに 防御、逃走、何もしない を追加
#   混乱時のアクション種別に アイテム使用 を追加
# 
#==============================================================================
# 更新っぽいもの
# 
# 2025:09:01
# ・混乱時のアクションの拡張
# 
# 2025:11:01
# ・混乱時のアクションの拡張 part2

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

module DIAMOND
  # 『混乱:敵味方関係なく通常攻撃』 ステートID
  CONF_EA_ATK_ID = 6
  
  # 混乱時のアクション種別
  # ※ Def_Num::BTL_ACT_KIND_BASIC は必ず設定してください。
  # それ以外にアクション種別として追加したいものを配列に記載してください。
  #  Def_Num::BTL_ACT_KIND_BASIC : 基本行動
  #  Def_Num::BTL_ACT_KIND_ITEM  : アイテム
  CONF_ACT_KIND_LIST = [Def_Num::BTL_ACT_KIND_BASIC, 
                        Def_Num::BTL_ACT_KIND_ITEM]
  
  # 混乱時の基本行動配列
  # ※ Def_Num::BTL_ACT_PTN_ATK は必ず設定してください。
  # それ以外に基本行動として追加したいものを配列に記載してください。
  #  Def_Num::BTL_ACT_PTN_ATK  : 攻撃
  #  Def_Num::BTL_ACT_PTN_GURD : 防御
  #  Def_Num::BTL_ACT_PTN_ESC  : 逃走
  #  Def_Num::BTL_ACT_PTN_NONE : 何もしない
  CONF_BASIC_ACT_LIST = [Def_Num::BTL_ACT_PTN_ATK, 
                         Def_Num::BTL_ACT_PTN_GURD, 
                         Def_Num::BTL_ACT_PTN_ESC, 
                         Def_Num::BTL_ACT_PTN_NONE]
  
  # 何もしない場合のメッセージ
  MSG_ACT_PTN_NONE = "ボーっとしている"
  
  # 混乱時のアイテムリスト(エネミー用)
  # エネミー指定のない場合
  CONF_ENEMY_ITEM_LIST_DEF = [ 5,  6, 11, 12, 32, 37]
  
  # エネミー指定のある場合
  #  エネミーID => アイテムリスト
  CONF_ENEMY_ITEM_LIST_EXT = {125 => [99], 
                              126 => [99], 
                              127 => [99], 
                              128 => [99], 
                              364 => [ 7, 13, 35, 40], 
                             }
end

#==============================================================================
# ■ Scene_Menu
#------------------------------------------------------------------------------
#  メニュー画面の処理を行うクラスです。
#==============================================================================

  #--------------------------------------------------------------------------
  # ● フレーム更新 (ステータスウィンドウがアクティブの場合)
  #--------------------------------------------------------------------------
  # このアクターの行動制限が 2 以上の場合
  # ここは問題なし

#==============================================================================
# ■ Scene_Battle (分割定義 4)
#------------------------------------------------------------------------------
#  バトル画面の処理を行うクラスです。
#==============================================================================

class Scene_Battle
  #--------------------------------------------------------------------------
  # ● フレーム更新 (メインフェーズ ステップ 2 : アクション開始)
  #--------------------------------------------------------------------------
  ★★★ Surume_多刀流 参照 ★★★
  
  #--------------------------------------------------------------------------
  # ● ランダムターゲット (敵味方関係なし)
  #--------------------------------------------------------------------------
  def random_target_all
    tgt_flg = rand(2)
    if tgt_flg == 0
      return $game_troop.random_target_enemy
    else
      return $game_party.random_target_actor
    end
  end
  
  #--------------------------------------------------------------------------
  # ● 基本アクション 結果作成
  #--------------------------------------------------------------------------
  ★★★ ツクールXPで2000の機能を実現 参照 ★★★
  
  #--------------------------------------------------------------------------
  # ● アイテムアクション 結果作成(混乱時)
  #--------------------------------------------------------------------------
  def make_item_action_result_conf
    # アイテム一覧を取得
    item_list = []
    # 行動側バトラーがアクターの場合
    if @active_battler.is_a?(Game_Actor)
      this_number = 0
      for i in 1...$data_items.size
        this_number = $game_party.item_number(i)
      
        # アイテムを所持しており、かつ[常時使用可能]か[バトル時に使用可能]の場合
        # リストに格納する。
        if this_number > 0
          tmp_item = $data_items[i]
          if (tmp_item.occasion == Def_Num::OCCA_KIND_ALL || 
              tmp_item.occasion == Def_Num::OCCA_KIND_BATTLE)
            item_list.push(tmp_item.id)
          end
        end
      end
      
      # 戦闘中に使用可能なアイテムを一個も持っていない場合
      if item_list.size == 0
        # ステップ 1 に移行
        @phase4_step = 1
        return
      end
    else # 行動側バトラーがエネミーの場合
      id = @active_battler.id
      # エネミー個別のアイテムリストがあればそちらを使用
      # それ以外の場合はデフォルトのアイテムリストを使用
      if DIAMOND::CONF_ENEMY_ITEM_LIST_EXT[id] == nil
        item_list = DIAMOND::CONF_ENEMY_ITEM_LIST_DEF
      else
        item_list = DIAMOND::CONF_ENEMY_ITEM_LIST_EXT[id]
      end
    end
    
    # アイテムを取得
    item_id = rand(item_list.size)
    @item = $data_items[item_list[item_id]]
    
    # 行動側バトラーがアクターの場合 アイテム切れ判定と消耗を実施
    if @active_battler.is_a?(Game_Actor)
      # アイテム切れなどで使用できなくなった場合
      unless $game_party.item_can_use?(@item.id)
        # ステップ 1 に移行
        @phase4_step = 1
        return
      end
      # 消耗品の場合
      if @item.consumable
        # 使用したアイテムを 1 減らす
        $game_party.lose_item(@item.id, 1)
      end
    end
    # ヘルプウィンドウにアイテム名を表示
    @help_window.set_text(@item.name, 1)
    # アニメーション ID を設定
    @animation1_id = @item.animation1_id
    @animation2_id = @item.animation2_id
    # コモンイベント ID を設定
    @common_event_id = @item.common_event_id
    # 対象を決定(混乱時は完全にランダムな相手に使用)
    target = random_target_all
    # 対象側バトラーを設定
    #set_target_battlers(@item.scope)
    @target_battlers = [target]
    # アイテムの効果を適用
    for target in @target_battlers
      target.item_effect(@item)
    end
  end
end
カスタマイズポイントについて(ってか見れば分かると思いますが・・・)
CONF_EA_ATK_ID 『混乱:敵味方関係なく通常攻撃』 ステートID 薄緑色の部分。 敵味方関係なく攻撃させる混乱にしたいステートID
CONF_ENEMY_ITEM_LIST_DEF 混乱時のアイテムリスト(エネミー用) 薄赤色の部分。 エネミーが混乱の際に使用するアイテムの一覧を記載。 ※エネミー指定のない場合 ※CONF_ACT_KIND_LISTにDef_Num::BTL_ACT_KIND_ITEMがある場合
CONF_ENEMY_ITEM_LIST_EXT 混乱時のアイテムリスト(エネミー用) 薄橙色の部分。 エネミーが混乱の際に使用するアイテムの一覧を記載。 ※エネミーID => アイテムリスト(配列)で記載 ※CONF_ACT_KIND_LISTにDef_Num::BTL_ACT_KIND_ITEMがある場合

戻る