這禮拜打大秘 那個屍爆+地震實在是太銷魂
所以就做了一個aura來監控地震週期
剛好有幾個東西可以講
0. 地震從第一次施放以後每20秒丟一次骰子
有骰中就放出來 不會因為任何事情(甚至滅團) 而delay這個週期
-> 所以來做個每20秒固定觸發的aura
想法是讓他20秒結束 並且結束時丟一個事件出來給自己接
因此我們會用到Scanevents
1. WeakAuras.Scanevents
https://github.com/WeakAuras/WeakAuras2/wiki/The-Aura-Environment
假如你已經會接事件的話 Weakaura可以提供自訂的事件名稱和參數
這在不同Aura要互相接收資訊時非常好用
語法上是WeakAuras.ScanEvents("事件名稱",["參數1","參數2",...)
( [後面都是可省略的 要接的話用args[n]去接)
所以我做了 WeakAuras.ScanEvents("WA_EARTHQUAKED")
把他放在要用的Aura的 動作->事件隱藏視窗時觸發
-
但是當然這個Aura不會自己啟動 那就再加兩個觸發:
a. 事件 / 戰鬥紀錄 / 法術 / 光環應用 / 法術ID 240447 / 隱藏 3 秒
-
b. 自訂 / 事件 / WA_EARTHQUAKED
事件的觸發內容裡面寫:
function(event, args)
if event == "WA_EARTHQUAKED" then
return true
end
end
拿來接我們剛剛用的WA_EARTHQUAKED
-
a,b 兩個只要有一個觸發就好 所以關係是任意觸發
(BTW, 那個連結內還有講aura_env 是另外一個好用的東西 改天再說!)
2. call DBM slash command
接事件不夠 還要有個時間條
可是用Weakaura自帶的progressbar又不能ping給隊友看
那乾脆直接call DBM的倒數條 簡單輕鬆
-> 目標是做出打 "/dbm timer 20 地震預報" 會出現的效果
可是要怎麼call?
來看DBM-Core/DBM-Core.lua 的code 裡面有這段:
SlashCmdList["DEADLYBOSSMODS"] = function(msg)
...
elseif cmd:sub(1, 5) == "timer" then
代表這個是我們要的 跟timer有關的函數
所以把剛剛的觸發內容改成:
function(event, args)
if event == "WA_EARTHQUAKED" then
RunScript('SlashCmdList["DEADLYBOSSMODS"]("timer 20 地震預報")')
return true
end
end
其中的RunScript代表他會跑像是巨集內打 /run 後面接的內容
-
這樣就完成一個每20秒自動跑dbm計時條的aura了
還可以按shift ping給隊友看XD
(然後就有人一直跟我說預報完沒中有bug 阿就沒出阿~~)
完成品: https://pastebin.com/zFF7ypwm
順便附上一個倒數巨集:
/run local GM,DPULL=GetMouseButtonClicked,SlashCmdList["DEADLYBOSSMODSPULL"]
if GM()=="RightButton" then num="8" elseif GM()=="MiddleButton" then num="0"
SendChatMessage("──暫停!──",(UnitInRaid("player")and "RAID" or "PARTY"))
else num="3" end DPULL(num)
左鍵數3秒 右鍵數8秒 中鍵停手XD