攻撃を受けた後に、スキルを使います – Mano_AfterCounter.js

タイトル
攻撃を受けた後に、スキルを使います
作者名
ヘルプ

パラメータは、デフォルトでは以下の形になっています。
<CounterExt:
cond = 'true' #発動条件
rate = 100 #発動率
prio = 0 #優先度(複数のカウンターがあるとき、もっとも高い物だけ実行)
skill = 1 #使用するスキル
mode = target #攻撃対象にならなかった時に判定するか
event = 0 #判定直前に呼び出すコモンイベント
>

複数の条件を設定したい場合、「CounterExt3」など、
数字を付けて対応してください。
1からDefinableAmmountで指定した数まで対応しています。

パラメータごとに改行してください。
<chain:※条件指定>で味方が行動した後に行動する連携攻撃が可能となります。
■cond
JavaScriptによる条件文を定義します。
比較演算子は以下のものが使用可能です。
(>は使用できません)
X===Y :XとYが等しい。
X!==Y :XとYが等しくない。
X < Y :XがY未満。
X <=Y :XがY以下。(X>=Yは使えないので、左右を逆にして対応してください)
X >=Y → Y<=X この方法で対応可能。

条件文内部では以下の変数が参照できます。
act : Game_actionが格納されます。
elementID: 属性番号が格納されます。
a : カウンター使用者。
b : 攻撃してきた相手。
skillID : スキルのID。敵の行動がスキルでない場合は0。
itemID : アイテムのID。敵の行動がアイテムでない場合は0。

■rate
反撃率を定義します。
特徴の「反撃率」とほぼ同様です。
デフォルトの反撃率設定はすべて無視します。

反撃率の判定は、カウンター条件全てで個別に行われます。
一つ目のカウンターが反撃率判定で失敗しても、
残りのカウンターの判定は行われます。

■skill
カウンター時に使用するスキルを設定します。
Nもしくはv(N)の形式で指定します。
(Nは整数)
v(N)の場合、変数からスキル番号を取り出します

■prio
優先順位を定義します。
複数の反撃条件が同時に満たされた場合、最も優先度の高いものが実行されます。
※初期版ではpriolityで指定していましたが、長いので省略。
priolityでも動きますが、いずれ削除します。

■mode
use,target,hitの3つから指定できます。
useは条件を満たすスキルが使用されたときに発動します。
targetは、条件を満たすスキルの攻撃対象になったときに発動します。
hitは、条件を満たすスキルが自分にヒットしたときに発動します。

■event
カウンターの判定処理の前にコモンイベントを呼び出します。
タイミングはrateでの乱数判定がtrueになったあとで、
condで指定した条件式の判定前に呼び出します。
「this.変数」の形式で以下の変数が使用できます。
指定したコモンイベントが呼び出した別のコモンイベントではこれらを参照できません。
a :攻撃を受けたBattler。
b :攻撃を行ったBattler。
counter :Counterクラス。詳細はプラグインを見てください。
act :相手の行った行動。

■サンプル
魔法に対して50%で反撃。スキルを指定していないので、通常攻撃で反撃。
<CounterExt:
cond = act.isMagicSkill()
rate = 50
>
魔法に対してID9のスキルで反撃。
<CounterExt:
cond = act.isMagicSkill()
skill = 9
>
魔法に対して変数1番で定義したIDのスキルで反撃。
<CounterExt:
cond = act.isMagicSkill()
skill = v(1)
>
自分のHPが50%を下回ると反撃。
<CounterExt:
cond = a.hpRate() < 0.5
>
自分のHPが50%を下回っている時に、魔法を受けると反撃。
<CounterExt:
cond = a.hpRate() < 0.5 && act.isMagicSkill()
>
属性番号2に対して反撃。
<CounterExt:
cond = elementID === 2
>
スイッチ[1]がONの時に反撃。
<CounterExt:
cond = s(1)
>
変数[1]が100の時に反撃。
<CounterExt:
cond = v(1)===100
>
クリティカルヒットを受けたときに反撃
※実装ミスにより、機能していません
ごめんなさい
<CounterExt:
cond = result.critical
>

番号8のスキルに対して反撃。
<CounterExt:
cond = skillID === 8
>

番号9,12,20のスキルに対して反撃
<CounterExt:
cond = [9,12,20].contains(skillID)
>
上記の二つのskillIDをitemIDにすると、
特定の番号のアイテムに反応するようになります。

コモンイベント[1]で処理を行い、スイッチ[5]番がONの時に反撃
<CounterExt:
cond = s(5)
event = 1
>

アイテムを使用したときに反撃。
「アイテムなぞ使ってんじゃねえ!」byバ〇バトス(TOD,TOD2)
<CounterExt:
cond = itemID !== 0
mode = use
>

■追撃設定
味方の行動後に、別のアクターが追撃するような設定ができます。
設定方法はカウンターと同様です。
こちらもchain3など番号を書くと複数指定できます。
aはスキルを使用するアクター、bは追撃元になるスキルを使ったアクターです。

味方がスキル9を使ったときに、スキル5を使って追撃
<chain:
cond = skillID ===9
skill=5
>
味方が属性3のスキルを使ったときにスキル5で追撃
<chain:
cond = elementID===3
skill=5
>

自身がステート6でない時に追撃
<chain:
cond = !a.isStateAffected(6)
>
味方がステート6の時に追撃
<chain:
cond = b.isStateAffected(6)
>



■その他
スキルやアイテムに<CanNotCounter>タグを指定することで、
カウンターされないスキルが作れます。

スキルのダメージ式に、
this.isCounter()と書くことでそのスキルがカウンターによる発動かチェックできます。
例:カウンター発動時は500、そうでないときは100ダメージを与えるスキル。
this.isCounter() ? 500:100

■更新履歴
ver 1.1.0
条件を複数指定した際に、一部が無効だったバグを修正。

ver 1.0.0(2017/07/17)
公開後目立ったバグ報告がないので1.0にバージョンを格上げ。
また、味方の攻撃に連携できる機能を暫定的に追加。

ver 0.9.4(2017/06/11)
ヒットした時のみカウンターするmode = hitを追加。
※後日バグ修正
その他、細かい修正。

ver 1.0.0(2018/07/06) 本来発動しないタイミングでカウンターが動いていたのを修正
ver 0.9.3(2017/05/27)
優先度が機能していなかったバグを修正
ver 0.9.2(2017/05/21)
コモンイベント呼び出し機能を追加。
<CanNotCounter>で、カウンターされないスキルが作れる機能を追加。
elementIDに統一。
priorityは長くて面倒だったので、prioで動くように修正
condのaとbが逆になっていたのを修正。
エラー発生時に、どこに原因があるか見つけやすいように修正。
mode=targetの処理が正しく機能していなかったのを修正。
ver 0.9.1(2017/05/19) バグ修正とヘルプの修正
ver 0.9.0(2017/05/19) 公開
パラメータ
param enabledCounter
desc カウンター機能を有効化します。
type boolean
default true

param enabledChain
desc 連続攻撃機能を有効化します。
type boolean
default true

param counterTag
desc カウンターの条件設定に使うタグ名を指定します。
default CounterExt

param chainTag
desc 連携攻撃の条件設定に使うタグ名を指定します。
default chain

param counterMessage
desc 反撃による行動の時に、挿入する文章を設定します。
空欄の場合、何もしません。
default 反撃!

param chainMessage
desc 連携による行動の時に、挿入する文章を設定します。
空欄の場合、何もしません。
default 追撃!

param DefinableAmmount
type number
desc CounterExt5などで、設定できる最大数を設定します。
default 10

param commonElementId
desc コモンイベント呼び出し時に属性番号を格納します。
type variable
default 0

param commonSkillId
desc コモンイベント呼び出し時にスキル番号を格納します。
type variable
default 0

param commonItemId
desc コモンイベント呼び出し時にアイテム番号を格納します。
type variable
default 0

ライセンス表記
Copyright (c) 2017-2017 Sigureya
This software is released under the MIT License.
http://opensource.org/licenses/mit-license.php

紹介ページ https://github.com/Sigureya/RPGmakerMV/blob/master/Mano_AfterCounter.js