OP
プラクティスツールで「ルインドキングブレード」⇒「ウィッツエンド」の順に購入し、ダミーを殴ると300ダメージ。
逆に「ウィッツエンド」⇒「ルインドキングブレード」の順に購入し、ダミーを殴ると295ダメージ。
アイテム欄で順序を入れ替えても何も起こらない。
バフはオンヒットを含め、バフスロットの番号順に評価される。一般的に、バフは後に取得したものほど上位のスロットに置かれるが、古いバフがなくなる場合は例外もある。
ルインドキングブレードは、対象の現在HPを参照するため、他のダメージが先にあると効果が薄くなる(全てのオンヒット効果は発動した攻撃がダメージを与える前に既にダメージを与えているが、オンヒットの順番自体はバフの順番に基づく)。
タイタンハイドラ(と他のバフ)+ブラッククリーバーと同様に、売却と取り消しによってこの相互作用を修正する方法がある。オンヒット系アイテムを売却し(最後にルインドキングブレード売却)、それを取り消す。この方法で、ルインドキングブレードとそのバフを最初に取得することになる。したがって、ルインドキングブレードでダメージを与えれば、そのオンヒットも最初に与えられる。
バフスロットの順番は、どのアイテムがどのアイテムスロットにあるかは関係ないので、変更しても影響はない。
タイタンハイドラ+ブラッククリーバーとは異なり、Riotがこの問題をきちんと修正できる方法を私もまだ知らない。
ルインドキングブレードはヒット前のダメージを何らかの形で受け継がなければならないし、ダメージイベントがそのような目的で使用するためにその値を取得するかどうかすら判明していない。
>>Sion
OP
サイオン博士、いつも詳細な分析ありがとうございます!
>>Sion
Yuumi
素晴らしいご説明です。ゲーム中に簡単に適用できる解決方法も示してくださっています。
Summoner1
バフスロットの並び順を、更新があるたびに静的な属性に基づいて並べ替えることはできなかったのかな。
>>Summoner1
Summoner2
それかハードコーディングするかだな。王剣がある場合、強制的に1番にするとか。
参照元: Blade of the Ruined King does less damage if you buy it after another item
サイオン博士、いつもかたじけのうござる。
おすすめ関連記事
コメント
サイオン博士、お許しください!
毎回解説してくれるサイオンありがてぇ
たまにスレに出現する変態じみた知識持ってるやつ好き
これほどLoLの仕様について精通した男のメインチャンプがサイオンであるというのは中々面白い
実際プレイによる表現が幅広いチャンプだと思う
最近まで博士はトリニティフォースとハルブレイカーを積んで知性のかけらも無いプレイをしていたのに
サイオンOTPも言ってるけどAD・AP・HPスケールがあって脅威とも相性が良く、吹き飛ばせるものさえあればチャンピオン以外にもARデバフを撒けて環境次第でsupさえ出せて超長距離移動エンゲージを持っている可能性の塊だからな
おまけでトロールしたくなるような味方のときも無限成長のHPを見てると農家の気分になれる
グインソーレイジブレードとナヴォリクイックブレードみたいに、同系列のアイテムなのに組み合わせによっては不都合を引き起こしてしまうの面白くて良いね
脳死で積んでると損しちゃうしアイテム勉強する気になれる
アイテム効果の評価順くらいはriot側でちゃんと決めとけよって思いますね・・・
サイオン博士がRiotに就職して修正してくれよ・・・
効果が最大量になるように調整して欲しいなぁ
流石に見えないところ過ぎてユーザーが無意識に理解できる範疇を超えていると思う……
多分上記のredditの投稿が無かったら
世界中のLoLユーザーの0.1割すら存在を知らなかった仕様だと思う
まるでLoL博士だ
サイオン博士すごいけどこんなめんどくさいこといちいちしてられんだろw
普通に王剣はハードコードしたほうが良いと思うけどな
ライアンドリーの重複のときもそうだけど、こういう変な仕様はRiotが把握したらちゃんと直してくれそうなところは好き
仕様です修正しませんで片付けちゃうゲーム会社多いからね
ハードコードは危険ってモルデサイラスヴィエゴで嫌ってほど学んだ
与ダメ時の体力を保存しておいて、それぞれのバフのダメージを計算してから一気に反映すればいいだけでは?
そのための変数が現時点で存在するかどうかわからないからそうやって解決しようとすると新たなバグが出るかもしれない…という話
仕組みとして、ダメージ計算時は1つの「付与ダメージ計算関数」が用いられていて、各攻撃スキルとアイテムを上から消化していると思われる。
その場合、最初に取得した敵の体力を関数の最後までニギニギしたまま使い倒して、最後に値を返していると考えられる。
このバグの肝は、バグの元になる変数を用いない代わりに、取得した敵の体力にダメージを代入していって計算している事だ。
この代入先となっている「敵のHP変数」が関数内に用意されているはずで(敵の体力に直接代入していたら、ラグによって敵が回復するケースがあるはずだ。)こいつを正しい変数として生まれ変わらせてあげれば解決できそうに思える。
付与ダメージ計算関数内でのみ機能するprotectedな「付与ダメージ合計変数」に転生させ、各アイテムのダメージ計算を合計して持っておき、最後に投げつける事にする。
その間、ダメージ計算の敵の体力は常に「最初に取得した体力」を参照して、代入しないようにすればこのバグはエンバグを防ぎつつ解決できると思われる。
いくら小さなインディーの会社とはいえこの程度の糞コードなはずがないと思いつつも、高度なバグであの結果になる事も考えにくい。なんだかなあ。
冷静に考えたらウィッツエンドから王剣積むのほぼないな
逆ならよくやるけど
俺はonhitADCでミシック→ウィッツ→王剣たまにやるなぁ
どれも攻守のバランスが良い武器だからどの順番で積んでもいいけど、HP割合ダメな分、王剣後回しにしちゃうこと多い
sion博士をアドバイザーとしてバグを究明する部門にスカウトした方がいいんじゃないか?
バグを発明する部門に見えて
「どんな部門だよ…いやriotにはあるかもな…」ってなった
王剣って殴る前の体力参照だと思ったら違ったんだな…
そのシステムにするだけで解決な気もするが
「王剣で殴る前の体力」って参照を持つ方がシステムとしては歪じゃないか?
博士の言うバフスロットなるものが取得順で登録されるのは(ダメージ以外のバフもあるだろうから)良いけど、同じ順番じゃなくてダメージを最大化できるような順番で参照しないとダメじゃな。
実装や計算負荷にもよるけど、用途に応じたイテレータをオーバーロードしておくのが良さそう。
追記:バフスロットが取得順で登録されることが良い理由には、時間経過で変化するものだから、というのもあるね
売却取り消しで順序入れ替わるよってのもまあまあショッキングな情報だった
この機会に
王剣 コグマウW グインソー3発目 カリスタパッシブ レナータパッシブ ディバインサンダラーを同時に発動させたときの計算順序知りたい
もちろんAA以外は割合なので積となるのでダメージは変わらないはずだけど
正直ダメージ計算アルゴリズムくらいはオープンソースにした方がいいと思うんだけどな。eSportsはブラックボックスが多すぎるから、競技性が損なわれる水面下のバグが多すぎんよ。