スキル / アイテムの対象を拡張する

p-sight: Annex - Battle Arrow System Extend

Tag: 戦闘関連 / システム関連 / スキル

説明

単体対象のスキルを「全体化」させることが可能になり、 さらに味方が対象のスキルやアイテムを敵に使ったり、 敵が対象のスキルやアイテムを味方に使ったりすることができるようになります。
※導入の際に任意の属性を計算から除外するを導入しておかないと属性計算に不具合が生じます。

設定可能な項目

CAN_SET_ALL

全体化が可能になるスキル / アイテムの属性名です。
この属性がついたスキル / アイテムは上下キーを押すことで全体化が可能になります。
※スキルの効果範囲が「敵単体」と「味方単体」の場合のみこの設定は有効になります。
効果範囲がこの二つ以外ものにこの属性を入れると正確に動作しません

CAN_SET_ALL = "範囲:全域可"

CAN_CHANGE_TARGET

対象を敵 / 味方切り替えることが可能になるスキル / アイテムの属性名です。
この属性がついたスキル / アイテムは上下キーを押すことで対象を選択できます。
※スキルの効果範囲が「敵単体」、「敵全体」、「味方単体」、そして「味方全体」 の四つでのみこの設定は有効になります。

CAN_CHANGE_TARGET = "目標:変更可"

SET_ALL_DISPOINT

本来単体を対象としたスキルやアイテムを「全体化」した時のダメージ率を変換します。
例えば下記のように設定した場合、全体攻撃をした時は最終的なダメージは本来の威力の70%になります。

SET_ALL_DISPOINT = 70

CAN_ATTACK_PARTY

通常攻撃を味方に行うことができるかの設定です。
trueにすると、通常攻撃の対象選択時に味方にも攻撃することが可能になります。

CAN_ATTACK_PARTY = true

使い方

上記で設定した属性をスキルやアイテムに設定してください。
そうすることで、戦闘中に設定された対象が選択可能になります。

カーソル処理は、デフォルトの戦闘画面の場合を前提に、感覚的に扱えるようにしています。
味方単体の状態でさらに味方の側(下)を押すと対象が味方全体になり、 敵の方向(上)を押すと対象が敵単体になる、と言った形に。
一応、下記にキー入力に対しての挙動を網羅した表に表しますが、 実際触ってみた方が表を見るより早いかもしれません。

元のカーソル位置 入力されたキー CAN_SET_ALL CAN_CHANGE_TARGET カーソルの変化
敵単体 ○ (含まれる) -- (関係ない) 敵全体に
× (含まれない) -- 変化なし
-- 味方単体に
-- × 変化なし
敵全体 -- -- 変化なし
-- 敵単体に
× 味方全体に
× × 変化なし
味方単体 -- 敵単体に
-- × 変化なし
-- 味方全体に
× -- 変化なし
味方全体 -- 味方単体に
× 敵全体に
× × 変化なし
-- -- 変化なし

また、メニューからアイテム、スキルを使用した場合は左 / 右キーによって全体化の処理が行われます。

仕様の変更

このスクリプトの導入によって、「敵全体」、「味方全体」、あるいは「使用者」を対象とした スキル / アイテムを戦闘中に使用しようとすると デフォルトではスキップされた「カーソル表示」が追加されます。
これは対象が変更できるシステムのため、「敵全体」のスキルを選んでも味方全体を対象にすることが有り得るためです。
敵全体、味方全体を対象としている場合、カーソルが高速で動くことでそれを表しています。

他のスクリプトとの競合について

再定義しているメソッド

正常に動作しない場合は、以下のメソッドが他のRGSS素材で再定義されていないかなどを確認してください。

class Game_Battler
 def skill_effect
 def item_effect

class Scene_Battle
 def update_phase3_skill_select
 def update_phase3_item_select
 def update_phase3_enemy_select
 def update_phase3_actor_select
 def start_enemy_select
 def start_actor_select
 def make_item_action_result

aliasを使って再定義しているメソッド

正常に動作しない場合は、以下のメソッドが他のRGSS素材で再定義されていないかなどを確認してください。

Game_BattleAction
 def clear

class Arrow_Base < Sprite
 def initialize

class Arrow_Enemy < Arrow_Base
 def update
 def update_help

class Arrow_Actor < Arrow_Base
 def update
 def update_help

class Scene_Item
 def update_target

class Scene_Skill
 def update_target
 def initialize

class Scene_Battle
 def end_actor_select
 def set_target_battlers

ソースと導入方法

導入方法

スクリプトの「Scene_Battle」より下、「Main」よりも上に以下のソースを丸々挿入してください。

ソースと更新履歴

Battle Arrow System Extend: ソース

更新履歴

2006 08/27 公開。

2006 12/29 アイテムを単体に使用できないバグと、スキルのキャンセルができないバグを修正。
変更部分は下記の通り。

# B ボタンが押された場合
if Input.trigger?(Input::B)
  # アクションをクリア
  @actor.current_action.clear
  reuturn

を以下のように変更

# B ボタンが押された場合
if Input.trigger?(Input::B)
  # アクションをクリア
  @actor.current_action.clear

# ターゲットが全体の場合
if @target_window.index == -1
  # パーティ全体にアイテムの使用効果を適用
  used = false
  # アイテムが全体化されているかのフラグ
  to_all_flag = include_element?(@item.element_set, Annex::CAN_SET_ALL)
  for i in $game_party.actors
    used |= i.item_effect(@item, to_all_flag)
  end
end

の下に新たに以下を追加。

# ターゲットが単体の場合
if @target_window.index >= 0
  # ターゲットのアクターにアイテムの使用効果を適用
  target = $game_party.actors[@target_window.index]
  used = target.item_effect(@item)
end

2007 08/20 仕様修正。


This page is written in Japanese(Shift_JIS)
(c) T-Akf, in p-sight