前回は敵アクターの味方アクターに対するターゲットは
どうやって決まってるかを確認しました。
今回は狙われ率がの値がどうやって決まるかを見ます。
一応事前には以下のいずれかで、今まで作っている間は①を何となく想定してました。
①ステート>装備>職業>アクターの優先度順できまる
②全ての狙われ率の平均
③全ての狙われ率を順番に掛ける
で、結論を書いてしまうと③でした。
tgrの内容を見ると、sparam(0)というメソッドの返り値を、
さらに返すようになっているようです。

sparamを見てみると、さらにtraisPiというメソッドを呼んでいます。

traisPiからtraitsWithIdを呼び、そこからallTraits
さらにそこからtraitObjectsを呼んで、おまけにその中からstatesを呼んでいます。

traitObjectsでstatesから全てのステータスを取得。
allTraitsで配列型にして繋ぐ。
traitsWithIdでcodeとidに合致する配列だけを取得し
traitsPiで順番に掛けて行っています。
ぶっちゃけここからは霊感なのですが、
職業、アクター、装備、ステートから特殊能力値(ここでは狙われ値)を取得し、
順番に掛けて行っているという感じだと思います(現場でこんな回答をしたらキレられます)
return this.traitsWithId(code, id).reduce(function(r, trait) {
return r * trait.value;
}, 1);
reduceメソッドは配列を順番に処理するメソッドで、
第二引数に1が設定されているので元の値(始めの処理でrに代入されている値)は1です。
職業の狙われ率が100%、アクターの狙われ率50%、装備が150%、ステートが80%の場合は
1*1*0.5*1.5*0.8で0.6、つまり狙われ率60%というわけですね。
つまり最初に挙げた選択肢の③というわけです。
どうやって決まってるかを確認しました。
今回は狙われ率がの値がどうやって決まるかを見ます。
一応事前には以下のいずれかで、今まで作っている間は①を何となく想定してました。
①ステート>装備>職業>アクターの優先度順できまる
②全ての狙われ率の平均
③全ての狙われ率を順番に掛ける
で、結論を書いてしまうと③でした。
tgrの内容を見ると、sparam(0)というメソッドの返り値を、
さらに返すようになっているようです。

sparamを見てみると、さらにtraisPiというメソッドを呼んでいます。

traisPiからtraitsWithIdを呼び、そこからallTraits
さらにそこからtraitObjectsを呼んで、おまけにその中からstatesを呼んでいます。

traitObjectsでstatesから全てのステータスを取得。
allTraitsで配列型にして繋ぐ。
traitsWithIdでcodeとidに合致する配列だけを取得し
traitsPiで順番に掛けて行っています。
ぶっちゃけここからは霊感なのですが、
職業、アクター、装備、ステートから特殊能力値(ここでは狙われ値)を取得し、
順番に掛けて行っているという感じだと思います(現場でこんな回答をしたらキレられます)
return this.traitsWithId(code, id).reduce(function(r, trait) {
return r * trait.value;
}, 1);
reduceメソッドは配列を順番に処理するメソッドで、
第二引数に1が設定されているので元の値(始めの処理でrに代入されている値)は1です。
職業の狙われ率が100%、アクターの狙われ率50%、装備が150%、ステートが80%の場合は
1*1*0.5*1.5*0.8で0.6、つまり狙われ率60%というわけですね。
つまり最初に挙げた選択肢の③というわけです。
※コメント投稿者のブログIDはブログ作成者のみに通知されます