rebf-gaiden/Scripts/_ID_ID_.rb
2025-04-26 17:06:34 -05:00

131 lines
No EOL
5.3 KiB
Ruby
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#==============================================================================
# ■ RGSS3 行動者・対象者ID・使用スキル/アイテムID変数格納 Ver1.01 by 星潟
#------------------------------------------------------------------------------
# 行動直前に、行動者と対象者のIDを変数に格納します。
# アクターの場合はアクターIDを格納します。1
# 敵の場合は、敵グループ内のIDを-1で掛けた物を格納します。0-7
# 複数の相手を対象とするスキルの場合、最後の対象が変数に格納されます。
# 変数の格納を、特定のアイテム・スキルでのみ行うようにする設定も可能です。
#
# 素材導入位置は、素材欄のなるべく下にするようにして下さい。
#==============================================================================
# Ver1.01 「対象者を選択するが適切な効果対象が存在しないスキル」を使用した場合
# エラー落ちしてしまう致命的な不具合を修正。
# 例.戦闘不能の味方がいない状態で戦闘不能者を対象としたアイテムを使用。
#==============================================================================
module SELF_AND_TARGET
#全てのアイテム・スキルで変数格納を行うかtrue 行う/false 行わない)
ALL = true
#ALLがfalseの時、変数格納を行うスキルかどうかを判定する
#メモ欄に「<変数格納>」と記入した場合、行動者・対象者IDを変数に格納する。鍵括弧含まず
WORD = "<変数格納>"
#使用者のIDを格納する変数を指定します。
SV = 190
#対象者のIDを格納する変数を指定します。
TV = 190
#使用を試みたスキルのIDを格納する変数を指定します。
#使用したのがスキルでなければ、0が格納されます。
SI = 299
#使用を試みたアイテムのIDを格納する変数を指定します。
#使用したのがアイテムでなければ、0が格納されます。
II = 190
end
class Game_Action
attr_accessor :targets_data
#--------------------------------------------------------------------------
# ターゲットの配列作成
#--------------------------------------------------------------------------
# alias make_targets_premake make_targets
# def make_targets
#ターゲットを先に作成します。
# @targets_data ||= make_targets_premake
# end
#--------------------------------------------------------------------------
# クリア
#--------------------------------------------------------------------------
alias clear_premake clear
def clear
#本来の処理を実行します。
clear_premake
#ターゲットデータをnilにします。
@targets_data = nil
end
end
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# スキル/アイテムの使用
#--------------------------------------------------------------------------
alias use_item_self_and_target use_item
def use_item
#全てのスキル/アイテムで変数を格納する場合か
#そのスキル/アイテムが変数を格納する設定の場合は更に分岐。
if SELF_AND_TARGET::ALL or @subject.current_action.item.variables_get_is?
#使用者の変数にデータを格納。
$game_variables[SELF_AND_TARGET::SV] = @subject.actor? ? @subject.id : @subject.index * -1
#ターゲットを作成。
targets = @subject.current_action.make_targets.compact
#ターゲットが1体以上存在する場合は最終ターゲットを。
#存在しない場合は使用者スキルに読み替え、使用者を最終ターゲットとする。
if targets && targets.size > 0
t = targets[targets.size - 1]
$game_variables[SELF_AND_TARGET::TV] = t.actor? ? t.id : -t.index
else
$game_variables[SELF_AND_TARGET::TV] = @subject.actor? ? @subject.id : @subject.index
end
#スキルID/アイテムIDを格納。
#それぞれ、スキルでない場合、アイテムでない場合は0を格納する。
if @subject.current_action.item.is_a?(RPG::Skill)
$game_variables[SELF_AND_TARGET::SI] = @subject.current_action.item.id
$game_variables[SELF_AND_TARGET::II] = 0
elsif @subject.current_action.item.is_a?(RPG::Item)
$game_variables[SELF_AND_TARGET::SI] = 0
$game_variables[SELF_AND_TARGET::II] = @subject.current_action.item.id
else
$game_variables[SELF_AND_TARGET::SI] = 0
$game_variables[SELF_AND_TARGET::II] = 0
end
end
#本来の処理を実行。
use_item_self_and_target
end
end
class RPG::BaseItem
#--------------------------------------------------------------------------
# 変数を格納するアイテム/スキルか?
#--------------------------------------------------------------------------
def variables_get_is?
@variables_get_is ||= @note.include?(SELF_AND_TARGET::WORD)
end
end