武器のDPSをエンチャントも含めて解析的に計算してツールチップに表示するmod。
Morrowindをプレイしていると、当然ながら武器はベースダメージも速度もバラバラで、さらにエンチャントも多種多様の効果があって、それらを好きなようにもエンチャント出来てしまうので、何を装備すりゃいいのかよく分からんので、そういう表示計が欲しくて作った。
表示上だとベースダメージは高いが振りの遅い武器は強そうに見えるんだけれど、実際に可視化してみると振りの早い武器が結構強かったりして興味深い。
リリース上は2番目だがMorrowindで最初に作ったmodで、これは難産だった。こんな小さな数字の表示をするためにやっていることは割に合わないくらい手間暇がかかっている。しかもそれでいてまだ不確かな部分がある。
最初は、武器ダメージとエンチャントダメージを速度でかければいいだろうくらいの軽い気持ちだったんだけれど、ダメージ計算の内部仕様を調べていくと、その複雑さに泥沼になっていった。それを自力でシミュレーションする必要があるのだ。
数値的に求めればDoTの正確なダメージ量が求められるんだけれど、それはさらに難しいことが分かったので早々に諦めた。ツールチップを表示する短い時間に処理しきれない可能性もあるし。
処理を複雑にしている最たるものは、Resist/Weakness による属性ダメージの増減と、Fortify/Damage/Drain/Absorb/Restore Attributes による能力値の増減だ。
攻撃したときに攻撃対象にだけネガティブな効果だけが適用されるのであればまだマシなんだけれど、ゲームシステム的にResistやFortifyといった攻撃対象にとってポジティブな効果すら自由にエンチャントできてしまうし、自分にもある程度効果を追加できてしまう。
極めつけは、Resist/ Weakness to Magicka の存在だ。この効果はResist/ Weakness の中で一番特殊で、属性ダメージ効果を除いて他の属性Weakness を含む殆どのネガティブな効果に影響する。そのため、エンチャントの解決順序には気を使う必要がある。
その他にも、Constant Effectのある武器を装備していたり、On Strikeの武器で既に攻撃していてその効果が適用済みだったりすると、それを差っ引いておかないと二重に効果が適用されて正しい結果にならないという問題にも設計を悩まされたりしている。
さらにバグなのか仕様なのか、普通に作ったらそうはならないだろうという風に解決順序が入れ替わっていたり符号が逆だったり、Code Patchによってさらにそれが修正されていたりするので、ひたすらリサーチに時間をかける必要があった。
未対応になっている命中率に対応できるとより正確なDPSが分かるんだけれど、それは命中率に関わるエンチャントや能力値、スキルの影響を解決する必要があることを意味している。
21年間ありそうでまだなかった理由が分かったのと、エンジンの内部仕様に詳しい人に面倒見て欲しいmodである。