#==============================================================================
# ■ 混乱拡張 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
|