| 2005/07/03(Sun) 18:05:35 編集(投稿者)
始めまして
2.15より実装されたバトルコンフィグについて関数の扱いで今ひとつわからない点がございましたので、質問させて頂きます。
攻撃側の属性によって回避値の公式を変える関数を作っています。
battle.txt上では
回避補正 Call(回避属性,攻撃側ユニットID,防御側ユニットID,武器番号) + 運動性
とし、関数上で攻撃側が「魔」属性を持っている場合は反応を、そうでない場合は回避を関数「回避属性」戻り値として返すようにしました。
ここで問題となったのが、 攻撃側ユニットID、防御側ユニットID、武器番号というバトルコンフィグ独自の変数に関する問題です。
関数上でこれらの変数を引数として渡した場合、 先攻、後攻に関わらず、攻撃を仕掛けた側が常に攻撃側ユニットIDなのか それとも敵の反撃時には、攻撃を仕掛けた側が防御側IDに変更されるのか。
また、武器番号の扱いは反撃時は、反撃武器の番号が渡されるのか。
色々と検証してみましたが上手く行きません。 命中予測値と実際の命中値が食い違っていたり、攻撃側、防御側共に攻撃側の数値が使用されていたりしてしまいました。
参考までに自分で作った関数を張り付けてみます。
回避属性: Set アタックユニット PilotID(Args(1)) Set ガードユニット PilotID(Args(2)) Set アタックウェポン Args(3) If Info(ユニット,アタックユニット,武器, アタックウェポン, 属性所有, 物) = 1 Then Set 回避種別 Info(ガードユニット,回避) ElseIf Info(ユニット,アタックユニット,武器, アタックウェポン, 属性所有, 魔) = 1 Then Set 回避種別 Info(ガードユニット,反応) Else Set 回避種別 ((Info(ガードユニット,回避) + Info(ガードユニット,反応)) / 2) EndIf Return 回避種別
この内容では、予測値には攻撃側、反撃側共に攻撃側の回避値を使った値が表示され、実際の回避には、自分の回避値を使った値になってしまい、0%と表示されているのに命中してしまうという奇妙な現象が起こってしまいました。
ここまで内容を弄る関数はサポート外かも知れませんが、もしわかる方がいらっしゃればよろしくお願いします。
また回避補正の値をIf文で変更するというやり方をもっと簡単に出来る方法をご存知でしたら教えて頂ければと思います。
|