スキルに設定した発動条件はホミロン さんが書きました:召喚スキル(トリガー?)には召喚というステートを付与し、召喚ステートが付与されてる間スキルを自動発動(召喚獣が使ったもの想定で)させると言うものです。
問題が出てきてしまいまして、なぜか敵側まで自動発動してきます?原因がまるでわからないです。
$gaemActors.actor(1).isStateAffected(28)
ですが、この場合そのスキルの使用者が誰なのか指定がないため
条件が満たしていれば誰でも発動できるという条件になります。
例えば、戦闘での行動順番が
アクター1→エネミー1→アクター2→エネミー2
となっていて、アクター1が召喚ステート付与のスキルを使用した場合
アクター1の次の行動者の、エネミー1から条件判定が行われます。
エネミー1に対して発動条件判定→アクター2に対して発動条件判定→…
アクターID1がステートID28が掛かっているか、という条件なので、
次のエネミー1の時点で条件を満たすので、エネミー1でスキルは発動してしまうのです。
このため自動発動のスキルを誰に使わせたいのかを条件に追加する必要があります。
スキル使用者は a で表しますので、例えば以下のような条件があります。
a.isActor() :スキル使用者は味方
a.actorId() === 1 :スキル使用者はアクターID1
なお、この召喚ステートを付与するスキルがアクターID1の専用であるのなら
a.isStateAffected(28)
という条件のみでいけますね。
ターン数なら、$gameTroop._turnCount で取得できます。ホミロン さんが書きました:そして、スキルを増やしてランダムもしくはターン数によって使うスキルを分けたいのですが条件式が思い浮かばないので知恵をお借りしたく思います。
例えば、3つの(召喚ステート状態の時)自動発動スキルを作成した場合1度に3回スキルを使ってしまうことになります。
それをかぶらないようにローテーションもしくはランダムで発動したいと思っていますがお力添えよろしくお願いいたします。
$gameTroop._turnCount === 1
とすれば、1ターン目かどうか、という判定になります。
固定ターンだと使いにくいので、3つのステートをローテーションさせるなら
以下の3種類の条件を使うのがいいと思います。
$gameTroop._turnCount % 3 === 0 ←これで3の倍数のターン(3,6,9,12,..)
$gameTroop._turnCount % 3 === 1 ←これで3の倍数+1のターン(1,4,7,10,...)
$gameTroop._turnCount % 3 === 2 ←これで3の倍数+2のターン(2,5,8,11,...)
ランダムだと、ちょっと条件が思いつかないです。