戦闘中、敵味方の能力値を一時的に上下させるスキルはいくつも作ってあります。
自作ゲームの仕様では、
・パラメータの一時的変化は重ね掛け可能で、一定時間(今のところ5回行動)で解除されます。
・掛けたときに既に増減の限界値(上は元の1.6倍、下は元の0.7倍)に達している場合を除き、解除されるまでの時間を上書きします。
(限界に達している場合に時間を上書きしないのは、毎ターン掛け続ければそのパラメータを常に高く、常に低く保つことができてしまうのを防ぐため)
・増減量はスキルの性能、対象キャラの対象パラメータに依存します。元々対象キャラの能力が高いほど、増減量も大きくなります。
・対象キャラはそのパラメータが上がっているなら「○○上昇」、下がっているなら「○○低下」のステートにかかります。±0ならどちらのステートも解除されます。(このステート自体に効果はなく、ただパラメータの増減をプレイヤーに知らせる役割のみ持ちます。)
で、問題は、パラメータの増減が、既に限界値に達している場合やスキル自体をかわされた場合を除き必ず成功してしまうこと。
ボスにも、スキルをかわされない限り100%効いてしまいます。それはさすがにまずい。
VXのツクラーはスキルの成功率を減らせばいいじゃんと思うかもですが、攻撃すると同時に防御を下げるスキルや、回復すると同時に素早を上げたりするスキルもあるわけで、単純に成功率に頼るわけにはいきませんでした。
それを今日解決しました。
具体的には、パラメータの増減を示すステートの付加を試みて、それが成功した場合のみにパラメータの増減を実行するようにしました。
これで敵キャラの能力値増減の効きやすさはメモとかを使わずに自然に設定できます。楽だ。
もっといい方法もあるでしょうが、複雑になってきたので変えるのもなかなかめんどいです。
ダメージを与えたり回復したりしない能力値の増減のみをするスキルは、能力値増減に失敗した場合ミスとポップされ、既に限界に達している場合はもう上がらないor下がらないとポップされます。
また、ダメージや回復するスキルの付加効果として能力値の増減をする場合、失敗してもミスのポップはされませんが、限界に達していた場合はもう上がらないor下がらないとポップされます。
もう上がらないor下がらないとポップする機能をつけるために余計に1時間くらいかかった(・ω・;)
悩んだ挙句、既に限界値に達しているかの判定メソッドを新たに作る羽目に。なぜそんなことになったかというと、限界値「上は元の1.6倍、下は元の0.7倍」の「元」とそのキャラの戦闘開始時のパラメータが厳密には違うからです。