見出し画像

ヒールをしない

手間いらずカレーは、前回は肉を入れずにつくったらえらくさっぱりしたものになってしまった。やはり肉が必要で、ひき肉が楽であることを話した。今週は、ひき肉、野菜、豆の3つで、トマト缶なしでやってみようと思う。

E3は呪文の詠唱はMQ2Castというプラグインの/castingという関数を使っている。詠唱が成功したのか、レジストされたのか等々詠唱の途中の状況や成否を取得できる便利なものだ。しかし最近わかったのだが、このプラグインにはバグがある。ということに最近気がついた。なにかのきっかけで、対象に呪文がかからない(TAKE HOLDしない)という状況になる。

画像1

これがそうなったときの状況。どういう条件で発生するかわからないが、一度発生すると、手動で呪文を入れるか、マクロの判断で違う呪文を使うまでこの問題が続く。なにが悪いかというと、これは戦闘中でたびたび発生していることだ。上の絵は私がデバッグメッセージをだしたもので、Holy Lightを使おうとしているが相手にかけられないという内容だ。E3標準のヒールマクロなどはヒールの詠唱でメッセージを表示しないので、この問題が発生するとなにもせずにぼーっと立っていることになる。これがDDならともかく、ヒールなのですごい痛いボスと戦うと致命的だ。

画像2

とうとうYaelを1グループで倒すことができた。倒せた理由は上の問題が発生したときに、手動でヒールを詠唱して問題を解除したことと、Mirrorが出る前に適切に防御系のAAを使うことだと思う。レベル65のバフで勝てたのでレベル70のバフは必須というわけではないようだ。話を戻すと、ヒールの問題が要因だとは思わないが、ヒールが来なくて死んでいる要因のいくつかはこの問題の可能性がある。

画像3

そんなわけで、MQ2CastingとE3 Castingを使わない、呪文詠唱マクロを作った。今の呪文詠唱の構造をもうちょっと詳しく説明すると、Heal.incにあるマクロが、グループ内のHPを監視し、条件に達すると、E3 Casting.iniにある呪文詠唱関数を呼ぶ。この呪文詠唱関数は、現在詠唱しようと思っている呪文が詠唱できる条件を満たしているか(距離、LOS、マナ量、その他もろもろ)をチェックし、最終的にMQ2Castingにある、/casting関数を呼んでいる。/casting関数は、呪文の詠唱を開始し、そのステータスを報告する機能がある。
バグのTake Holdしないという問題は、この/casting関数が起こしている。今回作ったのはその/castingに相当する部分だ。MQ2Castingはプラグインであり、スクリプトではない機能がいろいろあるが、スクリプトでも同等品は書ける。遅いかもしれんが。で、ここの部分を今回つくったマクロで置き換えた。呪文詠唱は、割り込み、ターゲットの確認、Take Holdするか、視線は通っているか、距離、再詠唱中か、レジストされたか、移動しているか、詠唱時間、等々すごくたくさんの条件とエラー処理があり、えらい面倒くさかった。また、E3のCasting.iniとMQ2Castingの/castingはいくつかの部分で仕事がかぶっており、どちらをどっちにやらせるかを調整するのにも骨が折れた。

画像4

とりあえず検証中。なんとなくだが、動きが早くなった気がする。あとはこれでちょっとレイドでうまくいくか検証しよう。



いいなと思ったら応援しよう!