Add personal cooldown announcer
This commit is contained in:
214
.vscode/settings.json
vendored
214
.vscode/settings.json
vendored
@@ -1,3 +1,215 @@
|
|||||||
{
|
{
|
||||||
"Lua.diagnostics.globals": ["aura_env"]
|
"Lua.diagnostics.globals": [
|
||||||
|
"aura_env",
|
||||||
|
"StaticPopup1Button1",
|
||||||
|
"SelectGossipOption",
|
||||||
|
"UnitDebuff",
|
||||||
|
"PLAYER",
|
||||||
|
"UnitBuff",
|
||||||
|
"ChatConfigChatSettingsLeftCheckBox1Check",
|
||||||
|
"ChatConfigChatSettingsLeftCheckBox2Check",
|
||||||
|
"ChatConfigChatSettingsLeftCheckBox3Check",
|
||||||
|
"ChatConfigChatSettingsLeftCheckBox4Check",
|
||||||
|
"ChatConfigChatSettingsLeftCheckBox5Check",
|
||||||
|
"ChatConfigChatSettingsLeftCheckBox6Check",
|
||||||
|
"ChatConfigChatSettingsLeftCheckBox7Check",
|
||||||
|
"ChatConfigChatSettingsLeftCheckBox8Check",
|
||||||
|
"ChatConfigChatSettingsLeftCheckBox9Check",
|
||||||
|
"ChatConfigChatSettingsLeftCheckBox10Check",
|
||||||
|
"ChatConfigChatSettingsLeftCheckBox11Check",
|
||||||
|
"ChatConfigChatSettingsLeftCheckBox12Check",
|
||||||
|
"ChatConfigChatSettingsLeftCheckBox13Check",
|
||||||
|
"ChatConfigChatSettingsLeftCheckBox14Check",
|
||||||
|
"ChatConfigChatSettingsLeftCheckBox15Check",
|
||||||
|
"ChatConfigChatSettingsLeftCheckBox16Check",
|
||||||
|
"StaticPopupDialogs",
|
||||||
|
"StaticPopup_Show",
|
||||||
|
"CommunitiesFrame",
|
||||||
|
"COMMUNITIES_FRAME_DISPLAY_MODES",
|
||||||
|
"CommunitiesFrameInset",
|
||||||
|
"ActionButton_HideOverlayGlow",
|
||||||
|
"ActionButton_ShowOverlayGlow",
|
||||||
|
"message",
|
||||||
|
"InspectUnit",
|
||||||
|
"GetItemStats",
|
||||||
|
"FriendsFrameCloseButton",
|
||||||
|
"DISPLAY",
|
||||||
|
"HP",
|
||||||
|
"NAME",
|
||||||
|
"ANIMATION",
|
||||||
|
"SHOW",
|
||||||
|
"SlashCmdList",
|
||||||
|
"ChatFrame_AddMessageEventFilter",
|
||||||
|
"ChatFrame_GetMessageEventFilters",
|
||||||
|
"ChatFrame_RemoveMessageEventFilter",
|
||||||
|
"CR_VERSATILITY_DAMAGE_DONE",
|
||||||
|
"CHAT_MSG_WHISPER",
|
||||||
|
"CHAT_MSG_TEXT_EMOTE",
|
||||||
|
"HIDE",
|
||||||
|
"UnitAura",
|
||||||
|
"CR_VERSATILITY_DAMAGE_TAKEN",
|
||||||
|
"COLOR",
|
||||||
|
"CHAT_MSG_LOOT",
|
||||||
|
"CHAT_MSG_SYSTEM",
|
||||||
|
"CHAT_MSG_SKILL",
|
||||||
|
"AuctionHouseFrame",
|
||||||
|
"CompactRaidFrameContainer",
|
||||||
|
"ChatFrame1",
|
||||||
|
"UIDropDownMenu_Initialize",
|
||||||
|
"UIDropDownMenu_AddButton",
|
||||||
|
"ToggleDropDownMenu",
|
||||||
|
"WorldMapFrame",
|
||||||
|
"RegisterUnitWatch",
|
||||||
|
"UnitFrame_OnEnter",
|
||||||
|
"BOOKTYPE_SPELL",
|
||||||
|
"DEFAULT_CHAT_FRAME",
|
||||||
|
"GameTooltipTextLeft1",
|
||||||
|
"CHAT_MSG_PARTY",
|
||||||
|
"CHAT_MSG_PARTY_LEADER",
|
||||||
|
"LFG_LIST_CONVERT_TO_RAID_WARNING",
|
||||||
|
"INVITE",
|
||||||
|
"CANCEL",
|
||||||
|
"UIDropDownMenu_SetText",
|
||||||
|
"HybridScrollFrame_CreateButtons",
|
||||||
|
"HybridScrollFrame_Update",
|
||||||
|
"SearchBoxTemplate_OnTextChanged",
|
||||||
|
"NORMAL_FONT_COLOR",
|
||||||
|
"GRAY_FONT_COLOR",
|
||||||
|
"StaticPopupSpecial_Show",
|
||||||
|
"StaticPopupSpecial_Hide",
|
||||||
|
"UIDropDownMenu_JustifyText",
|
||||||
|
"UIDropDownMenu_SetAnchor",
|
||||||
|
"NUM_LE_LFG_CATEGORYS",
|
||||||
|
"LFG_LIST_ENTER_NAME",
|
||||||
|
"nop",
|
||||||
|
"FILTER",
|
||||||
|
"LFGListApplicationDialog",
|
||||||
|
"LFG_LIST_APP_UNEMPOWERED",
|
||||||
|
"HIGHLIGHT_FONT_COLOR",
|
||||||
|
"WHISPER",
|
||||||
|
"LFG_LIST_MUST_SIGN_UP_TO_WHISPER",
|
||||||
|
"PVEFrame_ShowFrame",
|
||||||
|
"LFG_LIST_SELECT_A_CATEGORY",
|
||||||
|
"LFG_LIST_NOT_LEADER",
|
||||||
|
"LFG_LIST_MORE",
|
||||||
|
"LFG_LIST_MUST_HAVE_NAME",
|
||||||
|
"UIDropDownMenu_DisableDropDown",
|
||||||
|
"UIDropDownMenu_EnableDropDown",
|
||||||
|
"HybridScrollFrame_GetOffset",
|
||||||
|
"ERR_RESTRICTED_ACCOUNT_LFG_LIST_TRIAL",
|
||||||
|
"MAX_RAID_MEMBERS",
|
||||||
|
"LFG_LIST_PROVING_GROUND_TITLE",
|
||||||
|
"LFG_LIST_APP_CURRENTLY_APPLYING",
|
||||||
|
"LFG_LIST_MAX_MEMBERS",
|
||||||
|
"LFG_LIST_MUST_CHOOSE_SPEC",
|
||||||
|
"LFG_LIST_OFFLINE_MEMBER",
|
||||||
|
"LFG_LIST_SELECT_A_SEARCH_RESULT",
|
||||||
|
"BATTLENET_FONT_COLOR",
|
||||||
|
"EasyMenu",
|
||||||
|
"LFG_LIST_MUST_SELECT_ROLE",
|
||||||
|
"LFG_LIST_INVITED_TO_GROUP",
|
||||||
|
"GMError",
|
||||||
|
"LFG_LIST_ILVL_ABOVE_YOURS",
|
||||||
|
"LFG_LIST_HONOR_LEVEL_ABOVE_YOURS",
|
||||||
|
"LFG_LIST_LEGACY",
|
||||||
|
"LFG_LIST_CATEGORY_FORMAT",
|
||||||
|
"WHISPER_LEADER",
|
||||||
|
"LFG_LIST_REPORT_GROUP_FOR",
|
||||||
|
"LFG_LIST_REPORT_FOR",
|
||||||
|
"IGNORE_PLAYER",
|
||||||
|
"UIDropDownMenu_CreateInfo",
|
||||||
|
"PVEFrame_ToggleFrame",
|
||||||
|
"CANNOT_DO_THIS_WITH_LFGLIST_APP",
|
||||||
|
"CANNOT_DO_THIS_WHILE_LFGLIST_LISTED",
|
||||||
|
"NO_LFG_LIST_AVAILABLE",
|
||||||
|
"LFG_LIST_LOADING",
|
||||||
|
"LFG_LIST_RECOMMENDED_ILVL",
|
||||||
|
"LFG_LIST_ITEM_LEVEL_INSTR_SHORT",
|
||||||
|
"DONE_EDITING",
|
||||||
|
"LIST_GROUP",
|
||||||
|
"LFG_LIST_ITEM_LEVEL_CURRENT",
|
||||||
|
"GameFontHighlightSmall",
|
||||||
|
"GameFontDisableSmall",
|
||||||
|
"LE_PARTY_CATEGORY_HOME",
|
||||||
|
"LFG_LIST_INVITE_GROUP",
|
||||||
|
"LFG_LIST_APP_INVITED",
|
||||||
|
"LFG_LIST_APP_CANCELLED",
|
||||||
|
"LFG_LIST_APP_DECLINED",
|
||||||
|
"LFG_LIST_APP_TIMED_OUT",
|
||||||
|
"LFG_LIST_APP_INVITE_ACCEPTED",
|
||||||
|
"LFG_LIST_APP_INVITE_DECLINED",
|
||||||
|
"LFG_LIST_PROVING_TANK_GOLD",
|
||||||
|
"LFG_LIST_PROVING_TANK_SILVER",
|
||||||
|
"LFG_LIST_PROVING_TANK_BRONZE",
|
||||||
|
"LFG_LIST_PROVING_HEALER_GOLD",
|
||||||
|
"LFG_LIST_PROVING_HEALER_SILVER",
|
||||||
|
"LFG_LIST_PROVING_HEALER_BRONZE",
|
||||||
|
"LFG_LIST_PROVING_DAMAGER_GOLD",
|
||||||
|
"LFG_LIST_PROVING_DAMAGER_SILVER",
|
||||||
|
"LFG_LIST_PROVING_DAMAGER_BRONZE",
|
||||||
|
"SearchBoxTemplateClearButton_OnClick",
|
||||||
|
"LFG_LIST_ROLE_CHECK",
|
||||||
|
"LFG_LIST_PENDING",
|
||||||
|
"LFGListFrameDropDown",
|
||||||
|
"LE_LFG_LIST_DISPLAY_TYPE_CLASS_ENUMERATE",
|
||||||
|
"LFG_LIST_TOOLTIP_FRIENDS_IN_GROUP",
|
||||||
|
"LFG_LIST_BOSSES_DEFEATED",
|
||||||
|
"LFG_LIST_ENTRY_DELISTED",
|
||||||
|
"FRIENDS_BNET_NAME_COLOR_CODE",
|
||||||
|
"FRIENDS_WOW_NAME_COLOR_CODE",
|
||||||
|
"LFG_LIST_JOINED_GROUP_NOTICE",
|
||||||
|
"LFG_LIST_OFFLINE_MEMBER_NOTICE",
|
||||||
|
"GameFontRed",
|
||||||
|
"LFG_LIST_OFFLINE_MEMBER_NOTICE_GONE",
|
||||||
|
"GameFontGreen",
|
||||||
|
"LE_LFG_LIST_DISPLAY_TYPE_ROLE_COUNT",
|
||||||
|
"LE_LFG_LIST_DISPLAY_TYPE_ROLE_ENUMERATE",
|
||||||
|
"LE_LFG_LIST_DISPLAY_TYPE_PLAYER_COUNT",
|
||||||
|
"LE_LFG_LIST_DISPLAY_TYPE_HIDE_ALL",
|
||||||
|
"UIDropDownMenu_SetWidth",
|
||||||
|
"GetLFGMode",
|
||||||
|
"CANNOT_DO_THIS_WHILE_PVE_QUEUING",
|
||||||
|
"CANNOT_DO_THIS_IN_BATTLEGROUND",
|
||||||
|
"GREEN_FONT_COLOR",
|
||||||
|
"LFG_LIST_NO_RESULTS_FOUND",
|
||||||
|
"MAX_PARTY_MEMBERS",
|
||||||
|
"LFG_LIST_AND_MORE",
|
||||||
|
"RED_FONT_COLOR",
|
||||||
|
"PLAYER_LIST_DELIMITER",
|
||||||
|
"FONT_COLOR_CODE_CLOSE",
|
||||||
|
"RGBTableToColorCode",
|
||||||
|
"ChatFrame_SendTell",
|
||||||
|
"CANNOT_DO_THIS_WHILE_PVP_QUEUING",
|
||||||
|
"ChatTypeInfo",
|
||||||
|
"LFG_LIST_TOO_MANY_FOR_ACTIVITY",
|
||||||
|
"LFG_LIST_GROUP_TOO_FULL",
|
||||||
|
"LFG_LIST_INVITED_APP_FILLS_GROUP",
|
||||||
|
"UNIT_TYPE_LEVEL_TEMPLATE",
|
||||||
|
"LFG_LIST_HONOR_LEVEL_CURRENT_PVP",
|
||||||
|
"LFG_LIST_COMMENT_FORMAT",
|
||||||
|
"LFG_LIST_SEARCH_FAILED",
|
||||||
|
"LFG_LIST_HIT_MAX_APPLICATIONS",
|
||||||
|
"LFG_LIST_TOOLTIP_ILVL",
|
||||||
|
"LFG_LIST_TOOLTIP_HONOR_LEVEL",
|
||||||
|
"LFG_LIST_TOOLTIP_VOICE_CHAT",
|
||||||
|
"LFG_LIST_TOOLTIP_LEADER",
|
||||||
|
"LFG_LIST_TOOLTIP_AGE",
|
||||||
|
"LFG_LIST_TOOLTIP_MEMBERS_SIMPLE",
|
||||||
|
"LFG_LIST_TOOLTIP_MEMBERS",
|
||||||
|
"CANNOT_DO_THIS_IN_LFG_PARTY",
|
||||||
|
"CANNOT_DO_THIS_IN_PVE_QUEUE",
|
||||||
|
"LFG_LIST_TOOLTIP_CLASS_ROLE",
|
||||||
|
"LFG_LIST_BAD_NAME",
|
||||||
|
"LFG_LIST_BAD_DESCRIPTION",
|
||||||
|
"LFG_LIST_BAD_VOICE_CHAT_COMMENT",
|
||||||
|
"LFG_LIST_BAD_LEADER_NAME",
|
||||||
|
"LFG_LIST_APP_DECLINED_MESSAGE",
|
||||||
|
"LFG_LIST_APP_TIMED_OUT_MESSAGE",
|
||||||
|
"LE_FRAME_TUTORIAL_LFG_LIST",
|
||||||
|
"LFGListFrame",
|
||||||
|
"WeakAuras",
|
||||||
|
"enabled",
|
||||||
|
"C_Container"
|
||||||
|
],
|
||||||
|
"Lua.diagnostics.disable": ["duplicate-doc-field"]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,7 @@
|
|||||||
|
-- CYKA_EVENT_TICKER
|
||||||
|
function(e)
|
||||||
|
for _, spell in ipairs(aura_env.spells) do
|
||||||
|
---@cast spell Spell
|
||||||
|
spell:Update()
|
||||||
|
end
|
||||||
|
end
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
-- PLAYER_ENTERING_WORLD GUILD_ROSTER_UPDATE
|
||||||
|
function(e)
|
||||||
|
if aura_env.debug then print(string.format("Current ticker: %s", tostring(aura_env.ticker))) end
|
||||||
|
if aura_env.ticker == nil then
|
||||||
|
if aura_env.debug then print("Creating ticker") end
|
||||||
|
local aura_env = aura_env
|
||||||
|
aura_env.ticker = C_Timer.NewTicker(0.5, function()
|
||||||
|
if aura_env.debug then print("Ticker calling CYKA_EVENT_TICKER") end
|
||||||
|
WeakAuras.ScanEvents("CYKA_EVENT_TICKER")
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
end
|
||||||
73
Complete Projects/Legion/PersonalCooldownAnnouncer/init.lua
Normal file
73
Complete Projects/Legion/PersonalCooldownAnnouncer/init.lua
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
aura_env.debug = false
|
||||||
|
aura_env.ticker = nil
|
||||||
|
|
||||||
|
---@class Spell
|
||||||
|
---@field name string
|
||||||
|
---@field id number
|
||||||
|
---@field isOnCooldown boolean
|
||||||
|
---@field announced boolean
|
||||||
|
---@field remaining number
|
||||||
|
Spell = {
|
||||||
|
---@param id number
|
||||||
|
---@param name string
|
||||||
|
---@return Spell
|
||||||
|
new = function(id, name)
|
||||||
|
local self = setmetatable({}, {
|
||||||
|
__index = Spell
|
||||||
|
})
|
||||||
|
self.id = id
|
||||||
|
self.name = name
|
||||||
|
self.isOnCooldown = false
|
||||||
|
self.announced = false
|
||||||
|
self.remaining = 0
|
||||||
|
return self
|
||||||
|
end,
|
||||||
|
|
||||||
|
---@param self Spell
|
||||||
|
Update = function(self)
|
||||||
|
local start, duration = GetSpellCooldown(self.id)
|
||||||
|
local isOnCooldown = start > 0 and duration > 3
|
||||||
|
local remaining = start + duration - GetTime()
|
||||||
|
|
||||||
|
if not isOnCooldown and self.isOnCooldown then
|
||||||
|
self:playComplete()
|
||||||
|
self.announced = false
|
||||||
|
end
|
||||||
|
if not self.announced and isOnCooldown and remaining < 10 then
|
||||||
|
self:playSoon()
|
||||||
|
self.announced = true
|
||||||
|
end
|
||||||
|
|
||||||
|
self.isOnCooldown = isOnCooldown
|
||||||
|
self.remaining = remaining
|
||||||
|
end,
|
||||||
|
|
||||||
|
---@param self Spell
|
||||||
|
playComplete = function(self)
|
||||||
|
local soundFile = string.format("Interface\\Sounds\\cooldown\\%s.ogg", self.name)
|
||||||
|
if aura_env.debug then print(string.format("%s is off cooldown, playing sound file at %s", self.name, soundFile)) end
|
||||||
|
local success = PlaySoundFile(soundFile, "Master")
|
||||||
|
if not success then
|
||||||
|
print(string.format("Failed to play sound for %s", self.name))
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
|
||||||
|
---@param self Spell
|
||||||
|
playSoon = function(self)
|
||||||
|
local soundFile = string.format("Interface\\Sounds\\cooldown\\%sSoon.ogg", self.name)
|
||||||
|
if aura_env.debug then print(string.format("%s is almost off cooldown, playing sound file at %s", self.name, soundFile)) end
|
||||||
|
local success = PlaySoundFile(soundFile, "Master")
|
||||||
|
if not success then
|
||||||
|
print(string.format("Failed to play sound for %s", self.name))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
}
|
||||||
|
|
||||||
|
aura_env.spells = {
|
||||||
|
Spell.new(107574, "Avatar"),
|
||||||
|
Spell.new(1719, "BattleCry"),
|
||||||
|
Spell.new(205545, "OdynsFury"),
|
||||||
|
Spell.new(26297, "Berserking"),
|
||||||
|
Spell.new(12292, "Bloodbath"),
|
||||||
|
Spell.new(23881, "Bloodthirst")
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user