WoW Macro Hacks #1 独自のスタンスを作る

#1 独自のスタンスを作る

もともと用意されている stance だけではなく、特定の状況に合わせて変化するマクロを作りたいことはありませんか? たとえば Druid の場合、「通常は Shred だが Incarnation 状態の時は Ravage となる」マクロを作ることはできないでしょうか。多少無茶ではありますが、不可能ではありません。

ひとつの方法はペット(Battle Pet)を独自フラグとして使う方法です。ペットを API を使って summon/dismiss することができること、また任意の名前を付けその名前で target できることを使います。

まずは、特定の Buff が有効な時にだけペットを出現させるアドオンを書きましょう。アドオンの書き方については、「初めての WoW Addon(発売日未定)」などをご覧ください。

function supercat()
    local petid, buffname = 123456, "Incarnation: King of the Jungle"
    local mypet = C_PetJournal.GetSummonedPetID()
    
    -- Buffが有効で指定ペットが存在しないなら、指定ペットをsummonする
    if (UnitBuff("player", buffname)) then
        if petid ~= mypet then
            C_PetJournal.SummonPetByID(petid)
            UIErrorsFrame:Hide()
        end
    
    -- Buffが無い場合、ペットをdismissする
    else
        if mypet then
            C_PetJournal.SummonPetByID(mypet)
            UIErrorsFrame:Hide()
        end
    end
end

これで、マクロから /run supercat() を使うことができます。(やった!) このコードを利用し、特定のペットを target できる場合に別なスキルを発動させるマクロは以下のようになります。

#showtooltip
/use [stealth,harm][mod]Ravage
/stopmacro [stealth,harm][mod]
/run supercat()
/targetexact Kuro
/cast [exists,harm]Shred
/stopmacro [exists,harm]
/targetlasttarget
/cast [exists,harm]Ravage;Shred

なんてこった、これは長い。ええ、本当に!

ペットの名前は他の player の名前とかぶりにくく、かつ短いものにするのが良いでしょう。例では Kuro という名前にしてみました。なぜなら彼は黒いネコだったからです!

Addon 内で RegisterEvent("UNIT_AURA") のイベントハンドラーにも supercat() を登録することで、さらに Buff に追随する速度を上げることもできます。

この項目はオライリーの技術書パロディで書いてみました。その他のマクロ記事はこちら

表紙の爆弾はこちらの素材を利用しました。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中