[VX] 敵の攻撃を受け流して反撃する
VX標準のシステムには、敵から受けた攻撃を受け流し、反撃する
というシステムを実現する機能はありませんでした。今回作成した
RGSS2素材は、そういったシステムを実現できるようにします。
スクリプト素材のダウンロードは↓
http://www.lm-t.com/blog/counter_system.zip
-----機能説明ここから-----
■基本情報■
1.機能概要
カウンタースクリプトは、敵から受けた攻撃やスキルを
一定の確率で無効化し、そのまま攻撃を受け流したり、特定の
スキルで反撃したりするシステムを実現するためのものです。
本スクリプトを使用することにより、以下のようなシステムを
実現することができるようになります。
・敵の攻撃を受け流す (パリィ)
・敵の攻撃をはね返し、武器で反撃する (カウンター)
・敵の攻撃をはね返し、スキルで反撃する
・全ての攻撃を一定ターン無効化する (いわゆるアストロン)
・敵からの攻撃を完全に無効化する (無敵状態)
2.カウンターの使用方法
本スクリプトでは、ステートに対して「カウンター属性」を
付与することにより、そのステートを持つキャラが攻撃を
受けた場合にカウンターが発動する仕組みになっています。
(3章を参照してください)
カウンターが発動した時の振る舞いは、一括で、または
ステート単位で指定できるようになっています。
(4章、5章を参照してください)
3.ステートへのカウンター属性の付与方法
ステートにカウンター属性を付与するには、ステートのメモ欄
に下記のように記述します。
csオプションを記述すると、当該ステートはカウンター属性を
付与されたことになります。
XXXには「どの攻撃を受けた時カウンターが発動するか」を
記述します。書式は下記の通りです。
[filter]:[from]-[to]
[filter]
[from] / [to]で指定した範囲のスキルに対して、さらに
フィルタをかけ、条件を絞り込みます。
「p」を指定すると、物理攻撃を対象とします。物理攻撃は
・物理攻撃オプションにチェックが付いている
・基本ダメージが1以上
・打撃関係度が1以上
上記の条件を全て満たしたスキルを意味します。
「m」を指定すると、魔法攻撃を対象とします。魔法攻撃は
・物理攻撃オプションにチェックが付いていない
・基本ダメージが1以上
・精神関係度が1以上
上記の条件を全て満たしたスキルを意味します。
この値は省略可能です。省略した場合、[from] / [to]で
指定した範囲のスキル全てがカウンター対象になります。
[from]
カウンター対象となるスキルIDの最小値を指定します。
この値は0~999の範囲で指定してください。
この値に0を指定すると、通常攻撃がカウンターの対象に
なります。
[to]
カウンター対象となるスキルIDの最大値を指定します。
この値は0~999の範囲で指定してください。
この値は省略可能です。省略した場合、[from]で指定した
スキルのみがカウンターの対象になります。
上記のカウンター対象の指定は、複数個指定できます。
複数個指定する時は、カンマで区切って条件を記述します。
下記に記述例を記載します。
[記述例]
この記述例では下記の条件に当てはまる攻撃がカウンターの
対象になります。
・通常攻撃
・スキル10~30のうち、物理攻撃のスキル
・スキル50~100のうち、魔法攻撃のスキル
・スキル110~200全て
4.カウンター発動時の振る舞い設定 (一括設定)
カウンターが発動した時の振る舞いは、Configモジュールの
パラメータを変更することによって行います。
各値の内容を下記に記載します。
(1) CS_SKILL
カウンターが発動した後の、反撃内容を指定します。
この値に -1 を指定すると、反撃を行いません。(受け流し)
この値に 0 を指定すると、物理攻撃で反撃します。
この値に 1~999 の値を指定すると、スキルで反撃します。
それ以外の値を指定した場合、エラーになります。
(2) CS_ODDS
攻撃を受けた時にカウンターが発動する確率をパーセント
単位で指定します。この値は文字列で指定してください。
数値の後に「v」を付けると、数値に該当する番号の変数から
パーセント値を取り出して判定します。
数値の後に「s」を付けると、数値に該当する番号のスイッチ
を参照し、発動有無を判定します。スイッチがONの場合、
カウンターは発動します。
(3) CS_SHAKE
カウンターが発動した時のシェイク方法を指定します。
このパラメータに nil を指定するとシェイクしません。
このパラメータは、下記の書式で文字列で指定します。
"[type]:[power]:[speed]:[duration]"
[type]
horizontal 横揺れのシェイク
vertical 縦揺れのシェイク(※)
random ランダムシェイク(※)
※シェイク拡張スクリプトが導入済みで、
且つCS_RESOLVE_CONFLICT_T14_003がtrue
でないと、horizontalと同じ演出になります。
[power]
シェイクの強さを数値で指定します。
この値は1~9の範囲で指定してください。
[speed]
シェイクの速さを数値で指定します。
この値は1~9の範囲で指定してください。
[duration]
シェイクする時間をフレーム単位で指定します。
(4) CS_FLASH
カウンターが発動した時のフラッシュ内容を指定します。
このパラメータに nil を指定するとフラッシュしません。
このパラメータは、下記の書式で文字列で指定します。
"[red]:[green]:[blue]:[duration]"
[red] / [green] / [blue]
フラッシュの色を数値で指定します。
値が大きいほど、その色の要素が明るく表示されます。
この値は1~255の範囲で指定してください。
[duration]
フラッシュの長さをフレーム単位で指定します。
(5) CS_SE
カウンターが発動した時に鳴る効果音のファイル名を文字列
で指定します。このパラメータに nil を指定すると音は
鳴りません。
ファイルは Audio/SE フォルダから読み込もうとします。
指定するファイル名に拡張子は必要ありません。
(6) CS_MSG
カウンターが発動した時に表示するメッセージの内容を
文字列で指定します。このパラメータに nil を指定すると
メッセージは表示されません。
メッセージに "[n]" を埋め込むと、その文字はカウンターを
発動したアクターまたは敵キャラの名前に置き換えられます。
メッセージに "[e]" を埋め込むと、その文字は攻撃を行った
アクターまたは敵キャラの名前に置き換えられます。
メッセージに "[s]" を埋め込むと、その文字はスキルの名前
に置き換えられます。通常攻撃の場合「攻撃」になります。
(7) CS_WAIT
カウンターが発動した時に待機する時間をフレーム単位で
指定します。この値は0~600の範囲で指定してください。
(8) CS_REMOVE_ODDS
カウンターが発動した後、発動要因となったステートを
解除する確率をパーセント単位で指定します。この値の
指定方法は、CS_ODDS を参照してください。
(9) CS_RESOLVE_CONFLICT_T14_003
拙作のRGSS2素材「シェイク拡張スクリプト」
と併用する場合の競合問題を解決するかどうかを指定します。
上記素材を導入済みの場合のみ true を指定してください。
(10) CS_RESOLVE_CONFLICT_T14_049
拙作のRGSS2素材「バトルスピード変更スクリプト」
と併用する場合の競合問題を解決するかどうかを指定します。
上記素材を導入済みの場合のみ true を指定してください。
5.カウンター発動時の振る舞い設定 (ステート単位設定)
通常、カウンター発動時の振る舞いは4章に記載した通り
Configモジュールに記述しますが、あるステートのカウンター
のみ異なる振る舞いをしたい場合には例外的に振る舞いを
変更することができるようになっています。
ステート単位に振る舞いを変更するには、当該ステートの
メモ欄に拡張オプションで振る舞いの内容を記述します。
書式は下記の通りです。
・cs_skill
カウンターが発動した後の、反撃内容。
Config::CS_SKILLと同じです。
・cs_odds
攻撃を受けた時にカウンターが発動する確率。
Config::CS_ODDSと同じです。
・cs_shake
カウンターが発動した時のシェイク方法。
Config::CS_SHAKEと同じです。
・cs_flash
カウンターが発動した時のフラッシュ内容。
Config::CS_FLASHと同じです。
・cs_se
カウンターが発動した時に鳴る効果音のファイル名。
Config::CS_SEと同じです。
・cs_msg
カウンターが発動した時に表示するメッセージの内容。
Config::CS_MSGと同じです。
・cs_wait
カウンターが発動した時に待機する時間。
Config::CS_WAITと同じです。
・cs_remove_odds
カウンターが発動した後、発動要因となったステートを
解除する確率。
Config::CS_REMOVE_ODDSと同じです。
これらのオプションは全て省略可能です。省略されたものは
全てConfigモジュールに記述された設定を使用します。
6.カウンターが発動しない条件
カウンター属性を持つキャラがカウンター対象の攻撃を受けた
にも関わらずカウンターが発動しない要因は複数存在します。
下記にその条件を記載します。
・CS_ODDSの発動確率チェックで弾かれた
・被攻撃者が「行動と回避ができない」制約を持っている
・CS_SKILLに指定したスキルが存在しない
・被攻撃者が「魔法を使えない」制約を持ち、且つCS_SKILLに
指定したスキルが精神関係度1以上の場合
・被攻撃者のMPがCS_SKILLに指定したスキルの消費MP未満
7.カウンター処理フロー
参考までに、本スクリプトの内部動作フローのリンクを
記載します。
http://www.lm-t.com/blog/counter_system_flow.png
■導入手順■
1.導入前の準備
このスクリプトは
・拡張オプションスクリプト
上記スクリプトを最初に導入しておいてください。
すでに導入済みの場合はこの作業を省略できます。
2.スクリプトの追加と置換
(1) 追加
以下のスクリプトは標準のスクリプトには存在しないものなので、
手動で追加する必要があります。スクリプトの名前は各ファイル名
から「.txt」を除いたものにしてください。
Config.txt
CounterInfo.txt
ただし、過去に公開された拙作のスクリプト素材を導入済みで、
すでに同じ名前のスクリプトが存在する場合は、以下のコメントで
囲まれている部分を手動で追加してください。
#T14-064 NEW--->
#<--------------
(2) 置換
以下のスクリプトの内容を書き換える作業を行います。
Scene_Battle.txt → Scene_Battle
Scene_Title.txt → Scene_Title
上記で示したスクリプトに、以下のコメントで囲まれている部分を
手動で追加してください。
#T14-064 ADD--->
#<--------------
変更する箇所を間違えないように注意してください。
●注意
置換作業を行う前に必ずバックアップを取っておくようにしてください。
元のスクリプトの状況によっては、置換を行うことでスクリプトが
正常に動作しなくなることがあります。
-----機能説明ここまで-----
というシステムを実現する機能はありませんでした。今回作成した
RGSS2素材は、そういったシステムを実現できるようにします。
スクリプト素材のダウンロードは↓
http://www.lm-t.com/blog/counter_system.zip
-----機能説明ここから-----
■基本情報■
1.機能概要
カウンタースクリプトは、敵から受けた攻撃やスキルを
一定の確率で無効化し、そのまま攻撃を受け流したり、特定の
スキルで反撃したりするシステムを実現するためのものです。
本スクリプトを使用することにより、以下のようなシステムを
実現することができるようになります。
・敵の攻撃を受け流す (パリィ)
・敵の攻撃をはね返し、武器で反撃する (カウンター)
・敵の攻撃をはね返し、スキルで反撃する
・全ての攻撃を一定ターン無効化する (いわゆるアストロン)
・敵からの攻撃を完全に無効化する (無敵状態)
2.カウンターの使用方法
本スクリプトでは、ステートに対して「カウンター属性」を
付与することにより、そのステートを持つキャラが攻撃を
受けた場合にカウンターが発動する仕組みになっています。
(3章を参照してください)
カウンターが発動した時の振る舞いは、一括で、または
ステート単位で指定できるようになっています。
(4章、5章を参照してください)
3.ステートへのカウンター属性の付与方法
ステートにカウンター属性を付与するには、ステートのメモ欄
に下記のように記述します。
csオプションを記述すると、当該ステートはカウンター属性を
付与されたことになります。
XXXには「どの攻撃を受けた時カウンターが発動するか」を
記述します。書式は下記の通りです。
[filter]:[from]-[to]
[filter]
[from] / [to]で指定した範囲のスキルに対して、さらに
フィルタをかけ、条件を絞り込みます。
「p」を指定すると、物理攻撃を対象とします。物理攻撃は
・物理攻撃オプションにチェックが付いている
・基本ダメージが1以上
・打撃関係度が1以上
上記の条件を全て満たしたスキルを意味します。
「m」を指定すると、魔法攻撃を対象とします。魔法攻撃は
・物理攻撃オプションにチェックが付いていない
・基本ダメージが1以上
・精神関係度が1以上
上記の条件を全て満たしたスキルを意味します。
この値は省略可能です。省略した場合、[from] / [to]で
指定した範囲のスキル全てがカウンター対象になります。
[from]
カウンター対象となるスキルIDの最小値を指定します。
この値は0~999の範囲で指定してください。
この値に0を指定すると、通常攻撃がカウンターの対象に
なります。
[to]
カウンター対象となるスキルIDの最大値を指定します。
この値は0~999の範囲で指定してください。
この値は省略可能です。省略した場合、[from]で指定した
スキルのみがカウンターの対象になります。
上記のカウンター対象の指定は、複数個指定できます。
複数個指定する時は、カンマで区切って条件を記述します。
下記に記述例を記載します。
[記述例]
この記述例では下記の条件に当てはまる攻撃がカウンターの
対象になります。
・通常攻撃
・スキル10~30のうち、物理攻撃のスキル
・スキル50~100のうち、魔法攻撃のスキル
・スキル110~200全て
4.カウンター発動時の振る舞い設定 (一括設定)
カウンターが発動した時の振る舞いは、Configモジュールの
パラメータを変更することによって行います。
各値の内容を下記に記載します。
(1) CS_SKILL
カウンターが発動した後の、反撃内容を指定します。
この値に -1 を指定すると、反撃を行いません。(受け流し)
この値に 0 を指定すると、物理攻撃で反撃します。
この値に 1~999 の値を指定すると、スキルで反撃します。
それ以外の値を指定した場合、エラーになります。
(2) CS_ODDS
攻撃を受けた時にカウンターが発動する確率をパーセント
単位で指定します。この値は文字列で指定してください。
数値の後に「v」を付けると、数値に該当する番号の変数から
パーセント値を取り出して判定します。
数値の後に「s」を付けると、数値に該当する番号のスイッチ
を参照し、発動有無を判定します。スイッチがONの場合、
カウンターは発動します。
(3) CS_SHAKE
カウンターが発動した時のシェイク方法を指定します。
このパラメータに nil を指定するとシェイクしません。
このパラメータは、下記の書式で文字列で指定します。
"[type]:[power]:[speed]:[duration]"
[type]
horizontal 横揺れのシェイク
vertical 縦揺れのシェイク(※)
random ランダムシェイク(※)
※シェイク拡張スクリプトが導入済みで、
且つCS_RESOLVE_CONFLICT_T14_003がtrue
でないと、horizontalと同じ演出になります。
[power]
シェイクの強さを数値で指定します。
この値は1~9の範囲で指定してください。
[speed]
シェイクの速さを数値で指定します。
この値は1~9の範囲で指定してください。
[duration]
シェイクする時間をフレーム単位で指定します。
(4) CS_FLASH
カウンターが発動した時のフラッシュ内容を指定します。
このパラメータに nil を指定するとフラッシュしません。
このパラメータは、下記の書式で文字列で指定します。
"[red]:[green]:[blue]:[duration]"
[red] / [green] / [blue]
フラッシュの色を数値で指定します。
値が大きいほど、その色の要素が明るく表示されます。
この値は1~255の範囲で指定してください。
[duration]
フラッシュの長さをフレーム単位で指定します。
(5) CS_SE
カウンターが発動した時に鳴る効果音のファイル名を文字列
で指定します。このパラメータに nil を指定すると音は
鳴りません。
ファイルは Audio/SE フォルダから読み込もうとします。
指定するファイル名に拡張子は必要ありません。
(6) CS_MSG
カウンターが発動した時に表示するメッセージの内容を
文字列で指定します。このパラメータに nil を指定すると
メッセージは表示されません。
メッセージに "[n]" を埋め込むと、その文字はカウンターを
発動したアクターまたは敵キャラの名前に置き換えられます。
メッセージに "[e]" を埋め込むと、その文字は攻撃を行った
アクターまたは敵キャラの名前に置き換えられます。
メッセージに "[s]" を埋め込むと、その文字はスキルの名前
に置き換えられます。通常攻撃の場合「攻撃」になります。
(7) CS_WAIT
カウンターが発動した時に待機する時間をフレーム単位で
指定します。この値は0~600の範囲で指定してください。
(8) CS_REMOVE_ODDS
カウンターが発動した後、発動要因となったステートを
解除する確率をパーセント単位で指定します。この値の
指定方法は、CS_ODDS を参照してください。
(9) CS_RESOLVE_CONFLICT_T14_003
拙作のRGSS2素材「シェイク拡張スクリプト」
と併用する場合の競合問題を解決するかどうかを指定します。
上記素材を導入済みの場合のみ true を指定してください。
(10) CS_RESOLVE_CONFLICT_T14_049
拙作のRGSS2素材「バトルスピード変更スクリプト」
と併用する場合の競合問題を解決するかどうかを指定します。
上記素材を導入済みの場合のみ true を指定してください。
5.カウンター発動時の振る舞い設定 (ステート単位設定)
通常、カウンター発動時の振る舞いは4章に記載した通り
Configモジュールに記述しますが、あるステートのカウンター
のみ異なる振る舞いをしたい場合には例外的に振る舞いを
変更することができるようになっています。
ステート単位に振る舞いを変更するには、当該ステートの
メモ欄に拡張オプションで振る舞いの内容を記述します。
書式は下記の通りです。
・cs_skill
カウンターが発動した後の、反撃内容。
Config::CS_SKILLと同じです。
・cs_odds
攻撃を受けた時にカウンターが発動する確率。
Config::CS_ODDSと同じです。
・cs_shake
カウンターが発動した時のシェイク方法。
Config::CS_SHAKEと同じです。
・cs_flash
カウンターが発動した時のフラッシュ内容。
Config::CS_FLASHと同じです。
・cs_se
カウンターが発動した時に鳴る効果音のファイル名。
Config::CS_SEと同じです。
・cs_msg
カウンターが発動した時に表示するメッセージの内容。
Config::CS_MSGと同じです。
・cs_wait
カウンターが発動した時に待機する時間。
Config::CS_WAITと同じです。
・cs_remove_odds
カウンターが発動した後、発動要因となったステートを
解除する確率。
Config::CS_REMOVE_ODDSと同じです。
これらのオプションは全て省略可能です。省略されたものは
全てConfigモジュールに記述された設定を使用します。
6.カウンターが発動しない条件
カウンター属性を持つキャラがカウンター対象の攻撃を受けた
にも関わらずカウンターが発動しない要因は複数存在します。
下記にその条件を記載します。
・CS_ODDSの発動確率チェックで弾かれた
・被攻撃者が「行動と回避ができない」制約を持っている
・CS_SKILLに指定したスキルが存在しない
・被攻撃者が「魔法を使えない」制約を持ち、且つCS_SKILLに
指定したスキルが精神関係度1以上の場合
・被攻撃者のMPがCS_SKILLに指定したスキルの消費MP未満
7.カウンター処理フロー
参考までに、本スクリプトの内部動作フローのリンクを
記載します。
http://www.lm-t.com/blog/counter_system_flow.png
■導入手順■
1.導入前の準備
このスクリプトは
・拡張オプションスクリプト
上記スクリプトを最初に導入しておいてください。
すでに導入済みの場合はこの作業を省略できます。
2.スクリプトの追加と置換
(1) 追加
以下のスクリプトは標準のスクリプトには存在しないものなので、
手動で追加する必要があります。スクリプトの名前は各ファイル名
から「.txt」を除いたものにしてください。
Config.txt
CounterInfo.txt
ただし、過去に公開された拙作のスクリプト素材を導入済みで、
すでに同じ名前のスクリプトが存在する場合は、以下のコメントで
囲まれている部分を手動で追加してください。
#T14-064 NEW--->
#<--------------
(2) 置換
以下のスクリプトの内容を書き換える作業を行います。
Scene_Battle.txt → Scene_Battle
Scene_Title.txt → Scene_Title
上記で示したスクリプトに、以下のコメントで囲まれている部分を
手動で追加してください。
#T14-064 ADD--->
#<--------------
変更する箇所を間違えないように注意してください。
●注意
置換作業を行う前に必ずバックアップを取っておくようにしてください。
元のスクリプトの状況によっては、置換を行うことでスクリプトが
正常に動作しなくなることがあります。
-----機能説明ここまで-----
この記事へのコメント