ライフを判断材料に使う場合について

1対1と1対多数では、ライフの量が違います。
普段は気にする必要は無いのですが、
例えばSVCのエクシードの用にライフ量に関する処理を作ろうとした際に問題になってきます。
具体的にどのような問題が起きているのか検証しながら解決策を探していきます。

これは「多人数の場合は二人合計してライフ一本」ということに起因します。
つまり、Lifeが1000のキャラは、自分ひとりのときはLifeは1000ですが、
チームメートがいる場合はLifeが500となります。

では、「ライフ半分以下の時」をtriggerに取る処理を作っていくことにします。
通常考えられる処理としては
Life <= 500
でしょう。
しかし、前述した通りチームメートがいる場合はLifeが500となるため、
先ほどのtriggerでは「ライフが半分以下の時」という意味にはなりません。

したがって、ライフの量を取るよりはライフの割合を取った方が汎用的であると言えます。
つまり、
現在のライフ/ライフの最大値
を元に判断していく事になります。

(100*life/const(data.life))<=50

こうすると、「ライフが50%以下の時」という意味になります。
正しくは、Lifeを100倍した数値をDataのLifeの値で割った時に50以下の時 ですね。
(const(data.life)はチームメートがいてLifeが少なくされても対応してくれます)
従って、厳密にライフの値を取りたい時は先に挙げた計算式を使って行くことになります。

■トップへ戻る