反撃

2003でのみ可能です。

攻撃を受けたときに反撃をするというテクニックです。
敵が2体いるという設定で進めます。
まず、反撃能力を得るためのアイテムを作ります。
ここでは装飾品(アイテムNo[0001])ということにしますが、違ってもかまいません。
バトルイベント
開始条件:ターン数[0]
◆変数の操作:[0001:装備品]代入,主人公の装飾品No.
◆条件分岐:変数[0001:装備品]が1
 ◆変数の操作:代入[0002:主人公HP],主人公のHP
 ◆
:それ以外の場合
 ◆変数の操作:代入[0002:主人公HP], 0
 ◆
:分岐終了


バトルイベント
開始条件:消耗度[0〜100]%
◆変数の操作:代入[0003:現HP],主人公のHP
◆条件分岐:変数[0002:主人公HP]がV[0003]より大きい
 ◆条件分岐:変数[0007:敵キャラ]が0
  ◆変数の操作:[0002:主人公のHP]代入,主人公のHP
  ◆イベント処理の中断
  ◆
 :分岐終了
 ◆変数の操作:[0004:反撃成否]代入,乱数[0〜3]
 ◆条件分岐:変数[0004:反撃成否]が0
  ◆変数の操作:[0005:ダメージ]代入,主人公の攻撃力
  ◆条件分岐:変数[0007:敵キャラ]が1
   ◆変数の操作:[0006:軽減]代入,敵1の防御力
   ◆
  :それ以外の場合
   ◆条件分岐:変数[0007:敵キャラ]が2
    ◆変数の操作:[0006:軽減]代入,敵2の防御力
    ◆
   :分岐終了
   ◆
  :分岐終了
  ◆(この先は[ダメージ]と[軽減]からダメージを算出して、敵キャラのHPを減らします。
   そのとき、敵キャラを扱う場合には上のように条件分岐で指定してください。
   それと同時に戦闘アニメを表示させます。
   2000ではここまででいいのですが、2003だと他にも主人公の動きまで
   考慮しなければならないのでちょっと大変です。)
 :分岐終了
 ◆
:分岐終了
◆変数の操作:[0002:主人公HP]代入,主人公のHP
◆変数の操作:[0007:敵キャラ]代入,0

バトルイベント
開始条件:敵1のターン数[1x]
◆変数の操作:[0007:敵キャラ]代入,1


バトルイベント
開始条件:敵2のターン数[1x]
◆変数の操作:[0007:敵キャラ]代入,2


概要を説明すると、HPが下がった=攻撃を受けた、として攻撃を受けたことを認識。
どのキャラからダメージを受けたかはわからないので、
ダメージを受けた直前にターンが回ってきた敵キャラを変数で認識。
これによって、「ダメージを受けた」あとに「ダメージを与えたキャラ」への攻撃をすることができます。

問題点は3つ(わかる限り)。
一つ目は前述したとおり、2003においては主人公の動きを考慮しなければなりませんが、
スマートな処理方法が思いつきません。
二つ目は、HPが下がった=攻撃を受けた、という図式を使用しているために、
攻撃はされたがダメージは受けなかった、もしくは避けた、
というときに反撃は発動しなくなります。
三つ目は、毒状態など、ターンごとにダメージが自然に減っていると、
敵キャラが攻撃しなくても反撃をしてしまうようになります。
解決方法は例えば毒状態の時には反撃もできないようにすることです。そこで、

コモンイベント[毒処理]呼び出されたときのみ
◆条件分岐:主人公が毒状態になっている
 ◆スイッチの操作:[0001:毒]をONにする
 ◆
:それ以外の場合
 ◆スイッチの操作:[0001:毒]をOFFにする
 ◆
:分岐終了


をつくって二つ目のバトルイベントのはじめのほうに
◆コモンイベントの呼出し:毒処理
◆条件分岐:スイッチ[0001:毒]がON
 ◆イベント処理の中断
 ◆
:分岐終了

を挿入すれば一応解決します。
他の状態異常についても同様にすれば問題ありません。

ちなみに、二つ目のバトルイベントのはじめのほうにある
「[敵キャラ]が0」という条件分岐や、一番最後の「[敵キャラ]を0にする」は、
味方が混乱状態にあって主人公を攻撃したときに反撃が発動するのを防ぐためのものです。