#============================================================================== # ■ RGSS3 ターゲット反転特徴 Ver1.00 by 星潟 #------------------------------------------------------------------------------ # ターゲット選択時に味方ユニットと敵ユニットの判定を # 逆転させる特徴を作成できるようになります。 # 自身を対象とするアイテム・スキルはこの影響を受けません。 # (任意に同士討ちを行う物ではありません。 # 付与されている限り全ての行動が反転されます) # 例えばこれと特徴:その他:特殊フラグ:自動戦闘を組み合わせることにより # 味方にスキルを含む自動攻撃を行うという状態異常の作成が可能になります。 #============================================================================== # 特徴を有する項目(アクター・エネミー・職業・装備品・ステート等)のメモ欄に指定 #------------------------------------------------------------------------------ # <ターゲット反転> # # この特徴を持つアクター・エネミーはターゲット反転効果を受けます。 #============================================================================== # アイテム・スキルのメモ欄に指定 #------------------------------------------------------------------------------ # <ターゲット反転禁止> # # この設定を持つアイテム・スキルを使用する際はターゲット反転効果を受けません。 #============================================================================== module TargetsReverse #ターゲット反転の設定用キーワードを指定。 Word1 = "ターゲット反転" #ターゲット反転の設定用キーワードを指定。 Word2 = "ターゲット反転禁止" end class Game_BattlerBase #-------------------------------------------------------------------------- # ターゲット反転 #-------------------------------------------------------------------------- def targets_reverse? feature_objects.any? {|f| f.targets_reverse?} end end class Game_Action #-------------------------------------------------------------------------- # ターゲットの配列作成 #-------------------------------------------------------------------------- alias make_targets_targets_reverse make_targets def make_targets @targets_reverse = true if @subject.targets_reverse? && item && !item.anti_targets_reverse? r = make_targets_targets_reverse @targets_reverse = nil r end #-------------------------------------------------------------------------- # スキル/アイテムの評価 #-------------------------------------------------------------------------- alias evaluate_item_targets_reverse evaluate_item def evaluate_item @targets_reverse = true if @subject.targets_reverse? && item && !item.anti_targets_reverse? evaluate_item_targets_reverse @targets_reverse = nil end #-------------------------------------------------------------------------- # 味方ユニットを取得 #-------------------------------------------------------------------------- alias friends_unit_targets_reverse friends_unit def friends_unit if @targets_reverse && !@anti_targets_reverse && item && !item.anti_targets_reverse? @anti_targets_reverse = true r = opponents_unit @anti_targets_reverse = nil r else friends_unit_targets_reverse end end #-------------------------------------------------------------------------- # 敵ユニットを取得 #-------------------------------------------------------------------------- alias opponents_unit_targets_reverse opponents_unit def opponents_unit if @targets_reverse && !@anti_targets_reverse && item && !item.anti_targets_reverse? @anti_targets_reverse = true r = friends_unit @anti_targets_reverse = nil r else opponents_unit_targets_reverse end end end class Scene_Battle < Scene_Base #-------------------------------------------------------------------------- # アクター[キャンセル] #-------------------------------------------------------------------------- alias on_actor_cancel_targets_reverse on_actor_cancel def on_actor_cancel on_actor_cancel_targets_reverse @actor_command_window.activate if @actor_command_window.current_symbol == :attack end #-------------------------------------------------------------------------- # アクター選択の開始 #-------------------------------------------------------------------------- alias select_actor_selection_targets_reverse select_actor_selection def select_actor_selection a = BattleManager.actor if a && a.input && a.input.item && !a.input.item.for_user? && !@anti_targets_reverse && BattleManager.actor.targets_reverse? && !a.input.item.anti_targets_reverse? @anti_targets_reverse = true select_enemy_selection @anti_targets_reverse = nil else select_actor_selection_targets_reverse end end #-------------------------------------------------------------------------- # 敵キャラ選択の開始 #-------------------------------------------------------------------------- alias select_enemy_selection_targets_reverse select_enemy_selection def select_enemy_selection a = BattleManager.actor if a && a.input && a.input.item && !@anti_targets_reverse && BattleManager.actor.targets_reverse? && !a.input.item.anti_targets_reverse? @anti_targets_reverse = true select_actor_selection @anti_targets_reverse = nil else select_enemy_selection_targets_reverse end end end class RPG::BaseItem #-------------------------------------------------------------------------- # ターゲット反転オート #-------------------------------------------------------------------------- def targets_reverse? (@targets_reverse ||= /<#{TargetsReverse::Word1}>/ =~ note ? 1 : 0) == 1 end end class RPG::UsableItem #-------------------------------------------------------------------------- # ターゲット反転禁止か #-------------------------------------------------------------------------- def anti_targets_reverse? (@anti_targets_reverse ||= /<#{TargetsReverse::Word2}>/ =~ note ? 1 : 0) == 1 end end