You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1218 lines
41 KiB
1218 lines
41 KiB
local _, Cell = ...
|
|
local L = Cell.L
|
|
local I = Cell.iFuncs
|
|
local F = Cell.funcs
|
|
|
|
-------------------------------------------------
|
|
-- dispelBlacklist
|
|
-------------------------------------------------
|
|
-- suppress dispel highlight
|
|
local dispelBlacklist = {}
|
|
|
|
function I.GetDefaultDispelBlacklist()
|
|
return dispelBlacklist
|
|
end
|
|
|
|
-------------------------------------------------
|
|
-- debuffBlacklist
|
|
-------------------------------------------------
|
|
local debuffBlacklist = {
|
|
8326, -- 鬼魂 - Ghost
|
|
160029, -- 正在复活 - Resurrecting
|
|
255234, -- 图腾复生 - Totemic Revival
|
|
225080, -- 复生 - Reincarnation
|
|
57723, -- 筋疲力尽 - Exhaustion
|
|
57724, -- 心满意足 - Sated
|
|
80354, -- 时空错位 - Temporal Displacement
|
|
264689, -- 疲倦 - Fatigued
|
|
390435, -- 筋疲力尽 - Exhaustion
|
|
206151, -- 挑战者的负担 - Challenger's Burden
|
|
195776, -- 月羽疫病 - Moonfeather Fever
|
|
352562, -- 起伏机动 - Undulating Maneuvers
|
|
356419, -- 审判灵魂 - Judge Soul
|
|
387847, -- 邪甲术 - Fel Armor
|
|
213213, -- 伪装 - Masquerade
|
|
}
|
|
|
|
function I.GetDefaultDebuffBlacklist()
|
|
-- local temp = {}
|
|
-- for i, id in pairs(debuffBlacklist) do
|
|
-- temp[i] = F:GetSpellInfo(id)
|
|
-- end
|
|
-- return temp
|
|
return debuffBlacklist
|
|
end
|
|
|
|
-------------------------------------------------
|
|
-- bigDebuffs
|
|
-------------------------------------------------
|
|
local bigDebuffs = {
|
|
46392, -- 专注打击 - Focused Assault
|
|
-----------------------------------------------
|
|
240443, -- 爆裂 - Burst
|
|
209858, -- 死疽溃烂 - Necrotic Wound
|
|
240559, -- 重伤 - Grievous Wound
|
|
-- 226512, -- 鲜血脓液(血池)
|
|
-----------------------------------------------
|
|
-- NOTE: Thundering Affix - Dragonflight Season 1
|
|
-- 396369, -- 闪电标记
|
|
-- 396364, -- 狂风标记
|
|
-----------------------------------------------
|
|
-- NOTE: Shrouded Affix - Shadowlands Season 4
|
|
-- 373391, -- 梦魇
|
|
-- 373429, -- 腐臭虫群
|
|
-----------------------------------------------
|
|
-- NOTE: Encrypted Affix - Shadowlands Season 3
|
|
-- 尤型拆卸者
|
|
-- 366297, -- 解构
|
|
-- 366288, -- 猛力砸击
|
|
-----------------------------------------------
|
|
-- NOTE: Tormented Affix - Shadowlands Season 2
|
|
-- 焚化者阿寇拉斯
|
|
-- 355732, -- 融化灵魂
|
|
-- 355738, -- 灼热爆破
|
|
-- 凇心之欧罗斯
|
|
-- 356667, -- 刺骨之寒
|
|
-- 刽子手瓦卢斯
|
|
-- 356925, -- 屠戮
|
|
-- 356923, -- 撕裂
|
|
-- 358973, -- 恐惧浪潮
|
|
-- 粉碎者索苟冬
|
|
-- 355806, -- 重压
|
|
-- 358777, -- 痛苦之链
|
|
}
|
|
|
|
function I.GetDefaultBigDebuffs()
|
|
return bigDebuffs
|
|
end
|
|
|
|
-------------------------------------------------
|
|
-- aoeHealings
|
|
-------------------------------------------------
|
|
local aoeHealings = {
|
|
-- druid
|
|
740, -- 宁静 - Tranquility
|
|
145205, -- 百花齐放 - Efflorescence
|
|
|
|
-- evoker
|
|
355916, -- 翡翠之花 - Emerald Blossom
|
|
361361, -- 婆娑幼苗 - Fluttering Seedlings
|
|
363534, -- 回溯 - Rewind
|
|
367230, -- 精神之花 - Spiritbloom
|
|
370984, -- 翡翠交融 - Emerald Communion
|
|
371441, -- 赐命者之焰 - Life-Giver's Flame
|
|
371879, -- 生生不息 - Cycle of Life
|
|
|
|
-- monk
|
|
115098, -- 真气波 - Chi Wave
|
|
123986, -- 真气爆裂 - Chi Burst
|
|
115310, -- 还魂术 - Revival
|
|
322118, -- 青龙下凡 (SUMMON) - Invoke Yu'lon, the Jade Serpent
|
|
388193, -- 碧火踏 - Jadefire Stomp
|
|
443028, -- 天神御身 - Celestial Conduit
|
|
|
|
-- paladin
|
|
85222, -- 黎明之光 - Light of Dawn
|
|
119952, -- 弧形圣光 - Arcing Light
|
|
114165, -- 神圣棱镜 - Holy Prism
|
|
200654, -- 提尔的拯救 - Tyr's Deliverance
|
|
216371, -- 复仇十字军 - Avenging Crusader
|
|
|
|
-- priest
|
|
120517, -- 光晕 - Halo
|
|
34861, -- 圣言术:灵 - Holy Word: Sanctify
|
|
596, -- 治疗祷言 - Prayer of Healing
|
|
64843, -- 神圣赞美诗 - Divine Hymn
|
|
110744, -- 神圣之星 - Divine Star
|
|
204883, -- 治疗之环 - Circle of Healing
|
|
281265, -- 神圣新星 - Holy Nova
|
|
314867, -- 暗影盟约 - Shadow Covenant
|
|
15290, -- 吸血鬼的拥抱 - Vampiric Embrace
|
|
372787, -- 神言术:佑 - Divine Word: Sanctuary
|
|
|
|
-- shaman
|
|
1064, -- 治疗链 - Chain Heal
|
|
73920, -- 治疗之雨 - Healing Rain
|
|
108280, -- 治疗之潮图腾 (SUMMON) - Healing Tide Totem
|
|
52042, -- 治疗之泉图腾 (SUMMON) - Healing Stream Totem
|
|
197995, -- 奔涌之流 - Wellspring
|
|
157503, -- 暴雨图腾 - Cloudburst
|
|
114911, -- 先祖指引 - Ancestral Guidance
|
|
382311, -- 先祖复苏 - Ancestral Awakening
|
|
207778, -- 倾盆大雨 - Downpour
|
|
114083, -- 恢复迷雾 (升腾) - Restorative Mists
|
|
}
|
|
|
|
local aoeHealingIDs = {
|
|
[343819] = true, -- 朱鹤下凡,朱鹤产生的“迷雾之风”的施法者是玩家
|
|
[377509] = true, -- 梦境投影(pvp)
|
|
}
|
|
|
|
do
|
|
local temp = {}
|
|
for _, id in pairs(aoeHealings) do
|
|
temp[F:GetSpellInfo(id)] = true
|
|
end
|
|
aoeHealings = temp
|
|
end
|
|
|
|
function I.IsAoEHealing(nameOrID)
|
|
if not nameOrID then return false end
|
|
return aoeHealings[nameOrID] or aoeHealingIDs[nameOrID]
|
|
end
|
|
|
|
local summonDuration = {
|
|
-- evoker
|
|
[377509] = 6, -- 梦境投影(pvp)- Dream Projection
|
|
|
|
-- monk
|
|
[322118] = 25, -- 青龙下凡 - Invoke Yu'lon, the Jade Serpent
|
|
|
|
-- shaman
|
|
[108280] = 12, -- 治疗之潮图腾 - Healing Tide Totem
|
|
[52042] = 15, -- 治疗之泉图腾 - Healing Stream Totem
|
|
}
|
|
|
|
do
|
|
local temp = {}
|
|
for id, duration in pairs(summonDuration) do
|
|
temp[F:GetSpellInfo(id)] = duration
|
|
end
|
|
summonDuration = temp
|
|
end
|
|
|
|
function I.GetSummonDuration(spellName)
|
|
return summonDuration[spellName]
|
|
end
|
|
|
|
-------------------------------------------------
|
|
-- externalCooldowns
|
|
-------------------------------------------------
|
|
local externals = { -- true: track by name, false: track by id
|
|
["DEATHKNIGHT"] = {
|
|
[51052] = true, -- 反魔法领域 - Anti-Magic Zone
|
|
},
|
|
|
|
["DEMONHUNTER"] = {
|
|
[196718] = true, -- 黑暗 - Darkness
|
|
},
|
|
|
|
["DRUID"] = {
|
|
[102342] = true, -- 铁木树皮 - Ironbark
|
|
},
|
|
|
|
["EVOKER"] = {
|
|
[374227] = true, -- 微风 - Zephyr
|
|
[357170] = true, -- 时间膨胀 - Time Dilation
|
|
[378441] = true, -- 时间停止 - Time Stop (pvp)
|
|
[374348] = true, -- 新生光焰 - Renewing blaze
|
|
},
|
|
|
|
["MAGE"] = {
|
|
[198158] = true, -- 群体隐形 - Mass Invisibility
|
|
[414660] = { -- 群体屏障 - Mass Barrier
|
|
[414661] = false, -- 寒冰护体 - Ice Barrier
|
|
[414662] = false, -- 烈焰护体 - Blazing Barrier
|
|
[414663] = false, -- 棱光护体 - Prismatic Barrier
|
|
-- [11426] = false, -- 寒冰护体 (self)
|
|
-- [235313] = false, -- 烈焰护体 (self)
|
|
-- [235450] = false, -- 棱光护体 (self)
|
|
},
|
|
},
|
|
|
|
["MONK"] = {
|
|
[116849] = true, -- 作茧缚命 - Life Cocoon
|
|
[202248] = false, -- 偏转冥想 - Guided Meditation
|
|
},
|
|
|
|
["PALADIN"] = {
|
|
[1022] = true, -- 保护祝福 - Blessing of Protection
|
|
[6940] = true, -- 牺牲祝福 - Blessing of Sacrifice
|
|
[204018] = true, -- 破咒祝福 - Blessing of Spellwarding
|
|
[31821] = true, -- 光环掌握 - Aura Mastery
|
|
[210256] = true, -- 庇护祝福 - Blessing of Sanctuary
|
|
[228050] = false, -- 圣盾术 (被遗忘的女王护卫) - Divine Shield
|
|
-- [211210] = true, -- 提尔的保护
|
|
-- [216328] = true, -- 光之优雅
|
|
},
|
|
|
|
["PRIEST"] = {
|
|
[33206] = true, -- 痛苦压制 - Pain Suppression
|
|
[47788] = true, -- 守护之魂 - Guardian Spirit
|
|
[62618] = true, -- 真言术:障 - Power Word: Barrier
|
|
[213610] = true, -- 神圣守卫 - Holy Ward
|
|
[197268] = true, -- 希望之光 - Ray of Hope
|
|
},
|
|
|
|
["ROGUE"] = {
|
|
[114018] = true, -- 潜伏帷幕 - Shroud of Concealment
|
|
},
|
|
|
|
["SHAMAN"] = {
|
|
[98008] = true, -- 灵魂链接图腾 - Spirit Link Totem
|
|
[201633] = true, -- 大地之墙图腾 - Earthen Wall
|
|
[8178] = true, -- 根基图腾 - Grounding Totem
|
|
[383018] = true, -- 石肤图腾 - Stoneskin
|
|
},
|
|
|
|
["WARRIOR"] = {
|
|
[97462] = true, -- 集结呐喊 - Rallying Cry
|
|
[3411] = true, -- 援护 - Intervene
|
|
[213871] = true, -- 护卫 - Bodyguard
|
|
},
|
|
}
|
|
|
|
function I.GetExternals()
|
|
return externals
|
|
end
|
|
|
|
local builtInExternals = {}
|
|
local customExternals = {}
|
|
|
|
local function UpdateExternals(id, trackByName)
|
|
if trackByName then
|
|
local name = F:GetSpellInfo(id)
|
|
if name then
|
|
builtInExternals[name] = true
|
|
end
|
|
else
|
|
builtInExternals[id] = true
|
|
end
|
|
end
|
|
|
|
function I.UpdateExternals(t)
|
|
-- user disabled
|
|
wipe(builtInExternals)
|
|
for class, spells in pairs(externals) do
|
|
for id, v in pairs(spells) do
|
|
if not t["disabled"][id] then -- not disabled
|
|
if type(v) == "table" then
|
|
builtInExternals[id] = true -- for I.IsExternalCooldown()
|
|
for subId, subTrackByName in pairs(v) do
|
|
UpdateExternals(subId, subTrackByName)
|
|
end
|
|
else
|
|
UpdateExternals(id, v)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- user created
|
|
wipe(customExternals)
|
|
for _, id in pairs(t["custom"]) do
|
|
-- local name = F:GetSpellInfo(id)
|
|
-- if name then
|
|
-- customExternals[name] = true
|
|
-- end
|
|
customExternals[id] = true
|
|
end
|
|
end
|
|
|
|
local UnitIsUnit = UnitIsUnit
|
|
local bos = F:GetSpellInfo(6940) -- 牺牲祝福
|
|
function I.IsExternalCooldown(name, id, source, target)
|
|
if name == bos then
|
|
if source and target then
|
|
-- NOTE: hide bos on caster
|
|
return not UnitIsUnit(source, target)
|
|
else
|
|
return true
|
|
end
|
|
else
|
|
return builtInExternals[name] or builtInExternals[id] or customExternals[id]
|
|
end
|
|
end
|
|
|
|
-------------------------------------------------
|
|
-- defensiveCooldowns
|
|
-------------------------------------------------
|
|
local defensives = { -- true: track by name, false: track by id
|
|
["DEATHKNIGHT"] = {
|
|
[48707] = true, -- 反魔法护罩 - Anti-Magic Shell
|
|
[48792] = true, -- 冰封之韧 - Icebound Fortitude
|
|
[49028] = true, -- 符文刃舞 - Dancing Rune Weapon
|
|
[55233] = true, -- 吸血鬼之血 - Vampiric Blood
|
|
[49039] = true, -- 巫妖之躯 - Lichborne
|
|
[194679] = true, -- 符文分流 - Rune Tap
|
|
},
|
|
|
|
["DEMONHUNTER"] = {
|
|
[196555] = true, -- 虚空行走 - Netherwalk
|
|
[198589] = true, -- 疾影 - Blur
|
|
[187827] = false, -- 恶魔变形 162264(DPS) - Metamorphosis
|
|
},
|
|
|
|
["DRUID"] = {
|
|
[22812] = true, -- 树皮术 - Barkskin
|
|
[61336] = true, -- 生存本能 - Survival Instincts
|
|
[200851] = true, -- 沉睡者之怒 - Rage of the Sleeper
|
|
[102558] = true, -- 化身:乌索克的守护者 - Incarnation: Guardian of Ursoc
|
|
[22842] = true, -- 狂暴回复 - Frenzied Regeneration
|
|
},
|
|
|
|
["EVOKER"] = {
|
|
[363916] = true, -- 黑曜鳞片 - Obsidian Scales
|
|
[374348] = true, -- 新生光焰 - Renewing Blaze
|
|
[370960] = true, -- 翡翠交融 - Emerald Communion
|
|
[431872] = false, -- 瞬息之隔 - Temporality (Chronowarden Hero Talent)
|
|
[377088] = false, -- 活力迸射 - Rush of Vitality
|
|
},
|
|
|
|
["HUNTER"] = {
|
|
[186265] = true, -- 灵龟守护 - Aspect of the Turtle
|
|
[264735] = true, -- 优胜劣汰 - Survival of the Fittest
|
|
},
|
|
|
|
["MAGE"] = {
|
|
[45438] = true, -- 寒冰屏障 - Ice Block
|
|
[414658] = true, -- 深寒凝冰 - Ice Cold
|
|
[113862] = false, -- 强化隐形术 - Greater Invisibility
|
|
[55342] = false, -- 镜像(使用 CLEU 而非 UNIT_AURA) - Mirror Image
|
|
[342246] = true, -- 操控时间 - Alter Time
|
|
},
|
|
|
|
["MONK"] = {
|
|
[115176] = false, -- 禅悟冥想 - Zen Meditation
|
|
[115203] = true, -- 壮胆酒 - Fortifying Brew
|
|
[122278] = true, -- 躯不坏 - Dampen Harm
|
|
[122783] = true, -- 散魔功 - Diffuse Magic
|
|
[125174] = true, -- 业报之触 - Touch of Karma
|
|
},
|
|
|
|
["PALADIN"] = {
|
|
[498] = true, -- 圣佑术 - Divine Protection
|
|
[642] = true, -- 圣盾术 - Divine Shield
|
|
[31850] = true, -- 炽热防御者 - Ardent Defender
|
|
[212641] = true, -- 远古列王守卫 - Guardian of Ancient Kings
|
|
[205191] = true, -- 以眼还眼 - Eye for an Eye
|
|
[389539] = true, -- 戒卫 - Sentinel
|
|
[184662] = true, -- 复仇之盾 - Shield of Vengeance
|
|
},
|
|
|
|
["PRIEST"] = {
|
|
[47585] = true, -- 消散 - Dispersion
|
|
[19236] = true, -- 绝望祷言 - Desperate Prayer
|
|
[586] = true, -- 渐隐术 -- TODO: 373446 通透影像 - Fade
|
|
[193065] = true, -- 防护圣光 - Protective Light
|
|
[27827] = true, -- 救赎之魂 - Spirit of Redemption
|
|
},
|
|
|
|
["ROGUE"] = {
|
|
[1966] = true, -- 佯攻 - Feint
|
|
[5277] = true, -- 闪避 - Evasion
|
|
[31224] = false, -- 暗影斗篷 - Cloak of Shadows
|
|
},
|
|
|
|
["SHAMAN"] = {
|
|
[108271] = true, -- 星界转移 - Astral Shift
|
|
[409293] = true, -- 掘地三尺 - Burrow (PVP)
|
|
[114893] = true, -- 石壁 - Stone Bulwark
|
|
},
|
|
|
|
["WARLOCK"] = {
|
|
[104773] = true, -- 不灭决心 - Unending Resolve
|
|
[212295] = true, -- 虚空守卫 - Nether Ward (PVP)
|
|
[108416] = true, -- 黑暗契约 - Dark Pact
|
|
},
|
|
|
|
["WARRIOR"] = {
|
|
[871] = true, -- 盾墙 - Shield Wall
|
|
[12975] = true, -- 破釜沉舟 - Last Stand
|
|
[23920] = true, -- 法术反射 - Spell Reflection
|
|
[118038] = true, -- 剑在人在 - Die by the Sword
|
|
[184364] = true, -- 狂怒回复 - Enraged Regeneration
|
|
},
|
|
}
|
|
|
|
function I.GetDefensives()
|
|
return defensives
|
|
end
|
|
|
|
local builtInDefensives = {}
|
|
local customDefensives = {}
|
|
|
|
function I.UpdateDefensives(t)
|
|
-- user disabled
|
|
wipe(builtInDefensives)
|
|
for class, spells in pairs(defensives) do
|
|
for id, trackByName in pairs(spells) do
|
|
if not t["disabled"][id] then -- not disabled
|
|
if trackByName then
|
|
local name = F:GetSpellInfo(id)
|
|
if name then
|
|
builtInDefensives[name] = true
|
|
end
|
|
else
|
|
builtInDefensives[id] = true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- user created
|
|
wipe(customDefensives)
|
|
for _, id in pairs(t["custom"]) do
|
|
-- local name = F:GetSpellInfo(id)
|
|
-- if name then
|
|
-- customDefensives[name] = true
|
|
-- end
|
|
customDefensives[id] = true
|
|
end
|
|
end
|
|
|
|
function I.IsDefensiveCooldown(name, id)
|
|
return builtInDefensives[name] or builtInDefensives[id] or customDefensives[id]
|
|
end
|
|
|
|
-------------------------------------------------
|
|
-- tankActiveMitigation
|
|
-------------------------------------------------
|
|
local tankActiveMitigations = {
|
|
-- death knight
|
|
-- 77535, -- 鲜血护盾
|
|
195181, -- 白骨之盾 - Bone Shield
|
|
|
|
-- demon hunter
|
|
203720, -- 恶魔尖刺 - Demon Spikes
|
|
|
|
-- druid
|
|
192081, -- 铁鬃 - Ironfur
|
|
|
|
-- monk
|
|
215479, -- 酒醒入定 - Shuffle
|
|
|
|
-- paladin
|
|
132403, -- 正义盾击 - Shield of the Righteous
|
|
|
|
-- warrior
|
|
2565, -- 盾牌格挡 - Shield Block
|
|
}
|
|
|
|
local tankActiveMitigationNames = {
|
|
-- death knight
|
|
-- F:GetClassColorStr("DEATHKNIGHT")..F:GetSpellInfo(77535).."|r", -- 鲜血护盾
|
|
F:GetClassColorStr("DEATHKNIGHT")..F:GetSpellInfo(195181).."|r", -- 白骨之盾
|
|
|
|
-- demon hunter
|
|
F:GetClassColorStr("DEMONHUNTER")..F:GetSpellInfo(203720).."|r", -- 恶魔尖刺
|
|
|
|
-- druid
|
|
F:GetClassColorStr("DRUID")..F:GetSpellInfo(192081).."|r", -- 铁鬃
|
|
|
|
-- monk
|
|
F:GetClassColorStr("MONK")..F:GetSpellInfo(215479).."|r", -- 铁骨酒
|
|
|
|
-- paladin
|
|
F:GetClassColorStr("PALADIN")..F:GetSpellInfo(132403).."|r", -- 正义盾击
|
|
|
|
-- warrior
|
|
F:GetClassColorStr("WARRIOR")..F:GetSpellInfo(2565).."|r", -- 盾牌格挡
|
|
}
|
|
|
|
do
|
|
local temp = {}
|
|
for _, id in pairs(tankActiveMitigations) do
|
|
temp[F:GetSpellInfo(id)] = true
|
|
end
|
|
tankActiveMitigations = temp
|
|
end
|
|
|
|
function I.IsTankActiveMitigation(name)
|
|
return tankActiveMitigations[name]
|
|
end
|
|
|
|
function I.GetTankActiveMitigationString()
|
|
return table.concat(tankActiveMitigationNames, ", ").."."
|
|
end
|
|
|
|
-------------------------------------------------
|
|
-- dispels
|
|
-------------------------------------------------
|
|
local dispellable = {}
|
|
|
|
function I.CanDispel(dispelType)
|
|
if not dispelType then return end
|
|
return dispellable[dispelType]
|
|
end
|
|
|
|
local dispelNodeIDs = {
|
|
-- DRUID ----------------
|
|
-- 102 - Balance
|
|
[102] = {["Curse"] = 82205, ["Poison"] = 82205},
|
|
-- 103 - Feral
|
|
[103] = {["Curse"] = 82204, ["Poison"] = 82204},
|
|
-- 104 - Guardian
|
|
[104] = {["Curse"] = 82215, ["Poison"] = 82215},
|
|
-- Restoration
|
|
[105] = {["Curse"] = 82203, ["Magic"] = true, ["Poison"] = 82203},
|
|
-------------------------
|
|
|
|
-- EVOKER ---------------
|
|
-- 1467 - Devastation
|
|
[1467] = {["Curse"] = 93294, ["Disease"] = 93294, ["Poison"] = {93306, 93294}, ["Bleed"] = 93294},
|
|
-- 1468 - Preservation
|
|
[1468] = {["Curse"] = 93294, ["Disease"] = 93294, ["Magic"] = true, ["Poison"] = true, ["Bleed"] = 93294},
|
|
-- 1473 - Augmentation
|
|
[1473] = {["Curse"] = 93294, ["Disease"] = 93294, ["Poison"] = {93306, 93294}, ["Bleed"] = 93294},
|
|
-------------------------
|
|
|
|
-- MAGE -----------------
|
|
-- 62 - Arcane
|
|
[62] = {["Curse"] = 62116},
|
|
-- 63 - Fire
|
|
[63] = {["Curse"] = 62116},
|
|
-- 64 - Frost
|
|
[64] = {["Curse"] = 62116},
|
|
-------------------------
|
|
|
|
-- MONK -----------------
|
|
-- 268 - Brewmaster
|
|
[268] = {["Disease"] = 101090, ["Poison"] = 101090},
|
|
-- 269 - Windwalker
|
|
[269] = {["Disease"] = 101150, ["Poison"] = 101150},
|
|
-- 270 - Mistweaver
|
|
[270] = {["Disease"] = 101089, ["Magic"] = true, ["Poison"] = 101089},
|
|
-------------------------
|
|
|
|
-- PALADIN --------------
|
|
-- 65 - Holy
|
|
[65] = {["Disease"] = 81508, ["Magic"] = true, ["Poison"] = 81508, ["Bleed"] = 81616},
|
|
-- 66 - Protection
|
|
[66] = {["Disease"] = 81507, ["Poison"] = 81507, ["Bleed"] = 81616},
|
|
-- 70 - Retribution
|
|
[70] = {["Disease"] = 81507, ["Poison"] = 81507, ["Bleed"] = 81616},
|
|
-------------------------
|
|
|
|
-- PRIEST ---------------
|
|
-- 256 - Discipline
|
|
[256] = {["Disease"] = 82705, ["Magic"] = true},
|
|
-- 257 - Holy
|
|
[257] = {["Disease"] = 82705, ["Magic"] = true},
|
|
-- 258 - Shadow
|
|
[258] = {["Disease"] = 82704, ["Magic"] = 82699},
|
|
-------------------------
|
|
|
|
-- SHAMAN ---------------
|
|
-- 262 - Elemental
|
|
[262] = {["Curse"] = 103608, ["Poison"] = 103609},
|
|
-- 263 - Enhancement
|
|
[263] = {["Curse"] = 103608, ["Poison"] = 103609},
|
|
-- 264 - Restoration
|
|
[264] = {["Curse"] = 81073, ["Magic"] = true, ["Poison"] = 103609},
|
|
-------------------------
|
|
|
|
-- WARLOCK --------------
|
|
-- 265 - Affliction
|
|
-- [265] = {["Magic"] = function() return IsSpellKnown(89808, true) end},
|
|
-- 266 - Demonology
|
|
-- [266] = {["Magic"] = function() return IsSpellKnown(89808, true) end},
|
|
-- 267 - Destruction
|
|
-- [267] = {["Magic"] = function() return IsSpellKnown(89808, true) end},
|
|
-------------------------
|
|
}
|
|
|
|
local eventFrame = CreateFrame("Frame")
|
|
--Whenever anything is committed to the configID, e.g. when saving talents, switching talent loadouts, spending profession points, etc
|
|
|
|
if UnitClassBase("player") == "WARLOCK" then
|
|
eventFrame:RegisterEvent("UNIT_PET")
|
|
|
|
local timer
|
|
eventFrame:SetScript("OnEvent", function(self, event, unit)
|
|
if unit ~= "player" then return end
|
|
|
|
if timer then
|
|
timer:Cancel()
|
|
end
|
|
timer = C_Timer.NewTimer(1, function()
|
|
-- update dispellable
|
|
dispellable["Magic"] = IsSpellKnown(89808, true)
|
|
-- texplore(dispellable)
|
|
end)
|
|
|
|
end)
|
|
else
|
|
eventFrame:RegisterEvent("PLAYER_ENTERING_WORLD")
|
|
eventFrame:RegisterEvent("TRAIT_CONFIG_UPDATED")
|
|
-- eventFrame:RegisterEvent("ACTIVE_PLAYER_SPECIALIZATION_CHANGED")
|
|
|
|
local function UpdateDispellable()
|
|
-- update dispellable
|
|
wipe(dispellable)
|
|
local activeConfigID = C_ClassTalents.GetActiveConfigID()
|
|
if activeConfigID and dispelNodeIDs[Cell.vars.playerSpecID] then
|
|
for dispelType, value in pairs(dispelNodeIDs[Cell.vars.playerSpecID]) do
|
|
if type(value) == "boolean" then
|
|
dispellable[dispelType] = value
|
|
elseif type(value) == "table" then -- more than one trait
|
|
for _, v in pairs(value) do
|
|
local nodeInfo = C_Traits.GetNodeInfo(activeConfigID, v)
|
|
if nodeInfo and nodeInfo.ranksPurchased ~= 0 then
|
|
dispellable[dispelType] = true
|
|
break
|
|
end
|
|
end
|
|
else -- number: check node info
|
|
local nodeInfo = C_Traits.GetNodeInfo(activeConfigID, value)
|
|
if nodeInfo and nodeInfo.ranksPurchased ~= 0 then
|
|
dispellable[dispelType] = true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- texplore(dispellable)
|
|
end
|
|
|
|
local timer
|
|
|
|
eventFrame:SetScript("OnEvent", function(self, event)
|
|
if event == "PLAYER_ENTERING_WORLD" then
|
|
eventFrame:UnregisterEvent("PLAYER_ENTERING_WORLD")
|
|
end
|
|
|
|
if timer then timer:Cancel() end
|
|
timer = C_Timer.NewTimer(1, UpdateDispellable)
|
|
end)
|
|
|
|
Cell:RegisterCallback("SpecChanged", "Dispellable_SpecChanged", function()
|
|
if timer then timer:Cancel() end
|
|
timer = C_Timer.NewTimer(1, UpdateDispellable)
|
|
end)
|
|
end
|
|
|
|
-------------------------------------------------
|
|
-- drinking
|
|
-------------------------------------------------
|
|
local drinks = {
|
|
170906, -- 食物和饮水 - Food & Drink
|
|
167152, -- 进食饮水 - Refreshment
|
|
430, -- 喝水 - Drink
|
|
43182, -- 饮水 - Drink
|
|
172786, -- 饮料 - Drink
|
|
308433, -- 食物和饮料 - Food & Drink
|
|
369162, -- 饮用 - Drink
|
|
}
|
|
|
|
do
|
|
local temp = {}
|
|
for _, id in pairs(drinks) do
|
|
temp[F:GetSpellInfo(id)] = true
|
|
end
|
|
drinks = temp
|
|
end
|
|
|
|
function I.IsDrinking(name)
|
|
return drinks[name]
|
|
end
|
|
|
|
-------------------------------------------------
|
|
-- healer
|
|
-------------------------------------------------
|
|
local spells = {
|
|
-- druid
|
|
8936, -- 愈合 - Regrowth
|
|
774, -- 回春术 - Rejuvenation
|
|
155777, -- 回春术(萌芽) - Rejuvenation (Germination)
|
|
33763, -- 生命绽放 - Lifebloom
|
|
188550, -- 生命绽放 - Lifebloom
|
|
48438, -- 野性成长 - Wild Growth
|
|
102351, -- 塞纳里奥结界 - Cenarion Ward
|
|
102352, -- 塞纳里奥结界 - Cenarion Ward
|
|
391891, -- 激变蜂群 - Adaptive Swarm
|
|
145205, -- 百花齐放 - Efflorescence
|
|
383193, -- 林地护理 - Grove Tending
|
|
439530, -- 共生绽华 - Symbiotic Blooms
|
|
429224, -- 次级塞纳里奥结界 - Minor Cenarion Ward
|
|
|
|
-- evoker
|
|
363502, -- 梦境飞行 - Dream Flight
|
|
370889, -- 双生护卫 - Twin Guardian
|
|
364343, -- 回响 - Echo
|
|
355941, -- 梦境吐息 - Dream Breath
|
|
376788, -- 梦境吐息(回响) - Dream Breath (Echo)
|
|
366155, -- 逆转 - Reversion
|
|
367364, -- 逆转(回响) - Reversion (Echo)
|
|
373862, -- 时空畸体 - Temporal Anomaly
|
|
378001, -- 梦境投影(pvp) - Dream Projection (pvp)
|
|
373267, -- 缚誓生命 - Lifebind
|
|
395296, -- 黑檀之力 (self) - Ebon Might
|
|
395152, -- 黑檀之力 - Ebon Might
|
|
360827, -- 炽火龙鳞 - Blistering Scales
|
|
410089, -- 先知先觉 - Prescience
|
|
406732, -- 空间悖论 (self) - Spatial Paradox
|
|
406789, -- 空间悖论 - Spatial Paradox
|
|
445740, -- 纵焰 - Enkindle
|
|
409895, -- 精神之花 - Spiritbloom (Reverberations, Chronowarden Hero Talent)
|
|
|
|
-- monk
|
|
119611, -- 复苏之雾 - Renewing Mist
|
|
124682, -- 氤氲之雾 - Enveloping Mist
|
|
325209, -- 氤氲之息 - Enveloping Breath
|
|
406139, -- 真气之茧 - Chi Cocoon
|
|
-- 386276, -- 骨尘酒
|
|
-- 115175, -- 抚慰之雾
|
|
-- 198533, -- 抚慰之雾
|
|
-- 387766, -- 滋养真气
|
|
-- 196725, -- 碧愈疾风 - Refreshing Jade Wind
|
|
450805, -- 净化之魂 - Purified Spirit
|
|
423439, -- 真气宁和 - Chi Harmony
|
|
|
|
-- paladin
|
|
53563, -- 圣光道标 - Beacon of Light
|
|
223306, -- 赋予信仰 - Bestow Faith
|
|
148039, -- 信仰屏障 - Barrier of Faith
|
|
156910, -- 信仰道标 - Beacon of Faith
|
|
200025, -- 美德道标 - Beacon of Virtue
|
|
287280, -- 圣光闪烁 - Glimmer of Light
|
|
156322, -- 永恒之火 - Eternal Flame
|
|
431381, -- 晨光 - Dawnlight
|
|
388013, -- 阳春祝福 - Blessing of Spring
|
|
388007, -- 仲夏祝福 - Blessing of Summer
|
|
388010, -- 暮秋祝福 - Blessing of Autumn
|
|
388011, -- 凛冬祝福 - Blessing of Winter
|
|
200654, -- 提尔的拯救 - Tyr's Deliverance
|
|
|
|
-- priest
|
|
139, -- 恢复 - Renew
|
|
41635, -- 愈合祷言 - Prayer of Mending
|
|
17, -- 真言术:盾 - Power Word: Shield
|
|
194384, -- 救赎 - Atonement
|
|
77489, -- 圣光回响 - Echo of Light
|
|
372847, -- 光明之泉恢复 - Blessed Bolt
|
|
443526, -- 慰藉预兆 - Premonition of Solace
|
|
|
|
-- shaman
|
|
974, -- 大地之盾 - Earth Shield
|
|
383648, -- 大地之盾(天赋) - Earth Shield
|
|
61295, -- 激流 - Riptide
|
|
382024, -- 大地生命武器 - Earthliving Weapon
|
|
375986, -- 始源之潮 - Primordial Wave
|
|
444490, -- 源水气泡 - Hydrobubble
|
|
-- 73920, -- 治疗之雨 - Healing Rain
|
|
-- 456366, -- 治疗之雨 - Healing Rain
|
|
}
|
|
|
|
function F:FirstRun()
|
|
local icons = "\n\n"
|
|
for i, id in pairs(spells) do
|
|
local icon = select(2, F:GetSpellInfo(id))
|
|
if icon then
|
|
icons = icons .. "|T"..icon..":0|t"
|
|
if i % 11 == 0 then
|
|
icons = icons .. "\n"
|
|
end
|
|
end
|
|
end
|
|
|
|
local popup = Cell:CreateConfirmPopup(Cell.frames.anchorFrame, 200, L["Would you like Cell to create a \"Healers\" indicator (icons)?"]..icons, function(self)
|
|
local currentLayoutTable = Cell.vars.currentLayoutTable
|
|
|
|
local last = #currentLayoutTable["indicators"]
|
|
if currentLayoutTable["indicators"][last]["type"] == "built-in" then
|
|
indicatorName = "indicator1"
|
|
else
|
|
indicatorName = "indicator"..(tonumber(strmatch(currentLayoutTable["indicators"][last]["indicatorName"], "%d+"))+1)
|
|
end
|
|
|
|
tinsert(currentLayoutTable["indicators"], {
|
|
["name"] = "Healers",
|
|
["indicatorName"] = indicatorName,
|
|
["type"] = "icons",
|
|
["enabled"] = true,
|
|
["position"] = {"TOPRIGHT", "TOPRIGHT", 0, 3},
|
|
["frameLevel"] = 5,
|
|
["size"] = {13, 13},
|
|
["num"] = 5,
|
|
["numPerLine"] = 5,
|
|
["orientation"] = "right-to-left",
|
|
["spacing"] = {0, 0},
|
|
["font"] = {
|
|
{"Cell ".._G.DEFAULT, 11, "Outline", false, "TOPRIGHT", 2, 1, {1, 1, 1}},
|
|
{"Cell ".._G.DEFAULT, 11, "Outline", false, "BOTTOMRIGHT", 2, -1, {1, 1, 1}},
|
|
},
|
|
["showStack"] = true,
|
|
["showDuration"] = false,
|
|
["showAnimation"] = true,
|
|
["auraType"] = "buff",
|
|
["castBy"] = "me",
|
|
["auras"] = spells,
|
|
})
|
|
Cell:Fire("UpdateIndicators", Cell.vars.currentLayout, indicatorName, "create", currentLayoutTable["indicators"][last+1])
|
|
CellDB["firstRun"] = false
|
|
F:ReloadIndicatorList()
|
|
end, function()
|
|
CellDB["firstRun"] = false
|
|
end)
|
|
popup:SetPoint("TOPLEFT")
|
|
popup:Show()
|
|
end
|
|
|
|
-------------------------------------------------
|
|
-- cleuAuras
|
|
-------------------------------------------------
|
|
-- local cleuAuras = {}
|
|
|
|
-- function I.UpdateCleuAuras(t)
|
|
-- -- reset
|
|
-- wipe(cleuAuras)
|
|
-- -- insert
|
|
-- for _, c in pairs(t) do
|
|
-- local icon = select(2, F:GetSpellInfo(c[1]))
|
|
-- cleuAuras[c[1]] = {c[2], icon}
|
|
-- end
|
|
-- end
|
|
|
|
-- function I.CheckCleuAura(id)
|
|
-- return cleuAuras[id]
|
|
-- end
|
|
|
|
-------------------------------------------------
|
|
-- targetedSpells
|
|
-------------------------------------------------
|
|
local targetedSpells = {
|
|
-- Mists of Pandaria -----------
|
|
-- 青龙寺 - Temple of the Jade Serpent
|
|
106823, -- 翔龙猛袭 - Serpent Strike
|
|
106841, -- 青龙猛袭 - Jade Serpent Strike
|
|
|
|
-- Legion ----------------------
|
|
-- 群星庭院 - Court of Stars
|
|
211473, -- 暗影鞭笞 - Shadow Slash
|
|
-- 英灵殿 - Halls of Valor
|
|
193092, -- 放血扫击 - Bloodletting Sweep
|
|
193659, -- 邪炽冲刺 - Felblaze Rush
|
|
192018, -- 光明之盾 - Shield of Light
|
|
196838, -- 血之气息 - Scent of Blood
|
|
|
|
-- Shadowlands -----------------
|
|
-- Necrotic Wake
|
|
320788, -- 冻结之缚 - Frozen Binds
|
|
320596, -- 深重呕吐 - Heaving Retch
|
|
338606, -- 病态凝视 - Morbid Fixation
|
|
343556, -- 病态凝视 - Morbid Fixation
|
|
-- Castle Nathria
|
|
344496, -- 震荡爆发 - Reverberating Eruption
|
|
-- Halls of Atonement
|
|
319941, -- 碎石之跃 - Stone Shattering Leap
|
|
-- Mists of Tirna Scithe
|
|
322614, -- 心灵连接 - Mind Link
|
|
-- De Other Side
|
|
320132, -- 暗影之怒 - Shadowfury
|
|
332234, -- 挥发精油 - Essential Oil
|
|
-- Spires of Ascenscion
|
|
334053, -- 净化冲击波 - Purifying Blast
|
|
317963, -- 知识烦扰 - Burden of Knowledge
|
|
-- Sanguine Depths
|
|
319713, -- 巨兽奔袭 - Juggernaut Rush
|
|
-- Theater of Pain
|
|
324079, -- 收割之镰 - Reaping Scythe
|
|
333861, -- 回旋利刃 - Ricocheting Blade
|
|
-- Plaguefall
|
|
-- 328429, -- 窒息勒压
|
|
356924, -- 屠戮 - Carnage
|
|
356666, -- 刺骨之寒 - Biting Cold
|
|
|
|
-- Dragonflight ----------------
|
|
-- 化身巨龙牢窟 - Vault of the Incarnates
|
|
375870, -- 致死石爪 - Mortal Stoneclaws
|
|
395906, -- 电化之颌 - Electrified Jaws
|
|
372158, -- 破甲一击 - Sundering Strike
|
|
372056, -- 碾压 - Crush
|
|
375580, -- 西风猛击 - Zephyr Slam
|
|
376276, -- 震荡猛击 - Concussive Slam
|
|
-- 亚贝鲁斯,焰影熔炉 - Aberrus, the Shadowed Crucible
|
|
401022, -- 灾祸掠击 - Calamitous Strike
|
|
407790, -- 身影碎离 - Sunder Shadow
|
|
-- 阿梅达希尔,梦境之愿 - Amirdrassil, the Dream's Hope
|
|
418637, -- 狂怒冲锋 - Furious Charge
|
|
-- 红玉新生法池 - Ruby Life Pools
|
|
372858, -- 灼热打击 - Searing Blows
|
|
381512, -- 风暴猛击 - Stormslam
|
|
-- 奈萨鲁斯 - Neltharus
|
|
374533, -- 炽热挥舞 - Heated Swings
|
|
377018, -- 熔火真金 - Molten Gold
|
|
-- 蕨皮山谷 - Brackenhid Hollow
|
|
381444, -- 野蛮冲撞 - Savage Charge
|
|
373912, -- 腐朽打击 - Decaystrike
|
|
-- 碧蓝魔馆 - Azure Vault
|
|
374789, -- 注能打击 - Infused Strike
|
|
372222, -- 奥术顺劈 - Arcane Cleave
|
|
384978, -- 巨龙打击 - Dragon Strike
|
|
391136, -- 肩部猛击 - Shoulder Slam
|
|
-- 诺库德阻击战 - The Nokhud Offensive
|
|
376827, -- 传导打击 - Conductive Strike
|
|
376829, -- 雷霆打击 - Thunder Strike
|
|
375937, -- 撕裂猛击 - Rending Strike
|
|
375929, -- 野蛮打击 - Savage Strike
|
|
376644, -- 钢铁之矛 - Iron Spear
|
|
376865, -- 静电之矛 - Static Spear
|
|
382836, -- 残杀 - Brutalize
|
|
}
|
|
|
|
function I.GetDefaultTargetedSpellsList()
|
|
return targetedSpells
|
|
end
|
|
|
|
function I.GetDefaultTargetedSpellsGlow()
|
|
return {"Pixel", {0.95,0.95,0.32,1}, 9, 0.25, 8, 2}
|
|
end
|
|
|
|
-------------------------------------------------
|
|
-- Actions
|
|
-------------------------------------------------
|
|
local actions = {
|
|
{
|
|
6262, -- 治疗石 - Healthstone
|
|
{"A", {0.4, 1, 0}},
|
|
},
|
|
{
|
|
431416, -- 阿加治疗药水 - Algari Healing Potion
|
|
{"A", {1, 0.1, 0.1}},
|
|
},
|
|
{
|
|
431932, -- 淬火药水 - Tempered Potion
|
|
{"C3", {1, 1, 0}},
|
|
},
|
|
}
|
|
|
|
|
|
function I.GetDefaultActions()
|
|
return actions
|
|
end
|
|
|
|
function I.ConvertActions(db)
|
|
local temp = {}
|
|
for _, t in pairs(db) do
|
|
temp[t[1]] = t[2]
|
|
end
|
|
return temp
|
|
end
|
|
|
|
-------------------------------------------------
|
|
-- missing buffs, for indicator settings only
|
|
-------------------------------------------------
|
|
local buffsOrder = {"PWF", "MotW", "AB", "BS", "BotB", "SF"}
|
|
|
|
local missingBuffs = {
|
|
["PWF"] = 21562,
|
|
["MotW"] = 1126,
|
|
["AB"] = 1459,
|
|
["BS"] = 6673,
|
|
["BotB"] = 364342,
|
|
["SF"] = 462854
|
|
}
|
|
|
|
do
|
|
local temp = {}
|
|
for _, k in pairs(buffsOrder) do
|
|
local id = missingBuffs[k]
|
|
local name, icon = F:GetSpellInfo(id)
|
|
if name then
|
|
tinsert(temp, {
|
|
["id"] = id,
|
|
["name"] = name,
|
|
["icon"] = icon,
|
|
["index"] = k,
|
|
})
|
|
end
|
|
end
|
|
missingBuffs = temp
|
|
end
|
|
|
|
function I.GetDefaultMissingBuffs()
|
|
return missingBuffs
|
|
end
|
|
|
|
function I.GetMissingBuffsString()
|
|
local s = ""
|
|
for _, t in pairs(missingBuffs) do
|
|
s = s.."|T"..t["icon"]..":14:14:0:0:14:14:1:13:1:13|t".." "
|
|
end
|
|
return s
|
|
end
|
|
|
|
function I.GetMissingBuffsFilters()
|
|
local ret = {}
|
|
for _, t in pairs(missingBuffs) do
|
|
tinsert(ret, {"|T"..t["icon"]..":14:14:0:0:14:14:1:13:1:13|t "..t["name"], t["index"]})
|
|
end
|
|
return ret
|
|
end
|
|
|
|
-------------------------------------------------
|
|
-- crowdControls
|
|
-------------------------------------------------
|
|
local crowdControls = { -- true: track by name, false: track by id
|
|
["DEATHKNIGHT"] = {
|
|
[47476] = true, -- 绞袭 - Strangulate (PVP)
|
|
[91800] = true, -- 撕扯 - Gnaw
|
|
[207167] = true, -- 致盲冰雨 - Blinding Sleet
|
|
[210128] = true, -- 复苏 - Reanimation
|
|
[221562] = true, -- 窒息 - Asphyxiate
|
|
[287254] = false, -- 寒冬死神 - Dead of Winter
|
|
[377048] = true, -- 绝对零度 - Absolute Zero
|
|
},
|
|
|
|
["DEMONHUNTER"] = {
|
|
[179057] = true, -- 混乱新星 - Chaos Nova
|
|
[205630] = true, -- 伊利丹之握 - Illidan's Grasp
|
|
[204490] = true, -- 沉默咒符 - Sigil of Silence
|
|
[207684] = true, -- 悲苦咒符 - Sigil of Misery
|
|
[211881] = true, -- 邪能爆发 - Fel Eruption
|
|
[217832] = true, -- 禁锢 - Imprison
|
|
-- [213491] = true, -- 恶魔践踏
|
|
},
|
|
|
|
["DRUID"] = {
|
|
[99] = true, -- 夺魂咆哮 - Incapacitating Roar
|
|
[2637] = true, -- 休眠 - Hibernate
|
|
[5211] = true, -- 蛮力猛击 - Mighty Bash
|
|
[22570] = true, -- 割碎 - Maim
|
|
[33786] = true, -- 旋风 - Cyclone
|
|
[81261] = true, -- 日光术 - Solar Beam
|
|
[127797] = true, -- 乌索尔旋风 - Ursol's Vortex
|
|
[163505] = false, -- 斜掠 - Rake
|
|
[209749] = true, -- 精灵虫群 - Faerie Swarm
|
|
[202244] = true, -- 蛮力冲锋 - Overrun
|
|
[410065] = false, -- 活性树脂 - Reactive Resin
|
|
},
|
|
|
|
["EVOKER"] = {
|
|
[360806] = true, -- 梦游 - Sleep Walk
|
|
[372245] = true, -- 天空霸主 - Terror of the Skies
|
|
[408544] = true, -- 震地猛击 - Seismic Slam
|
|
},
|
|
|
|
["HUNTER"] = {
|
|
[1513] = true, -- 恐吓野兽 - Scare Beast
|
|
[3355] = true, -- 冰冻陷阱 - Freezing Trap
|
|
[24394] = true, -- 胁迫 - Intimidation
|
|
[117526] = true, -- 束缚射击 - Binding Shot
|
|
[213691] = true, -- 驱散射击 - Scatter Shot
|
|
[357021] = false, -- 连续震荡 - Consecutive Concussion
|
|
[407032] = true, -- 粘稠焦油炸弹 - Sticky Tar Bomb
|
|
},
|
|
|
|
["MAGE"] = {
|
|
[118] = true, -- 变形术 - Polymorph
|
|
[31661] = true, -- 龙息术 - Dragon's Breath
|
|
[82691] = true, -- 冰霜之环 - Ring of Frost
|
|
[383121] = true, -- 群体变形 - Mass Polymorph
|
|
[389831] = false, -- 积雪 - Snowdrift
|
|
},
|
|
|
|
["MONK"] = {
|
|
[115078] = true, -- 分筋错骨 - Paralysis
|
|
[119381] = true, -- 扫堂腿 - Leg Sweep
|
|
[198909] = true, -- 赤精之歌 - Song of Chi-Ji
|
|
[202274] = true, -- 热酿 - Hot Trub
|
|
[202346] = true, -- 醉上加醉 - Double Barrel
|
|
[233759] = true, -- 抓钩武器 - Grapple Weapon (PVP)
|
|
},
|
|
|
|
["PALADIN"] = {
|
|
[853] = true, -- 制裁之锤 - Hammer of Justice
|
|
[10326] = true, -- 超度邪恶 - Turn Evil
|
|
[20066] = true, -- 忏悔 - Repentance
|
|
[105421] = true, -- 盲目之光 - Blinding Light
|
|
[234299] = true, -- 制裁之拳 - Fist of Justice
|
|
[255941] = false, -- 灰烬觉醒 - Wake of Ashes
|
|
},
|
|
|
|
["PRIEST"] = {
|
|
[605] = true, -- 精神控制 - Mind Control
|
|
[8122] = true, -- 心灵尖啸 - Psychic Scream
|
|
[9484] = true, -- 束缚亡灵 - Shackle Undead
|
|
[15487] = true, -- 沉默 - Silence
|
|
[64044] = true, -- 心灵惊骇 - Psychic Horror
|
|
[88625] = true, -- 圣言术-罚 - Holy Word: Chastise
|
|
-- [226943] = true, -- 心灵炸弹
|
|
},
|
|
|
|
["ROGUE"] = {
|
|
[408] = true, -- 肾击 - Kidney Shot
|
|
[1776] = true, -- 凿击 - Gouge
|
|
[1833] = true, -- 偷袭 - Cheap Shot
|
|
[2094] = true, -- 致盲 - Blind
|
|
[6770] = true, -- 闷棍 - Sap
|
|
[207777] = true, -- 卸除武装 - Dismantle (PVP)
|
|
[212183] = true, -- 烟雾弹 - Smoke Bomb
|
|
},
|
|
|
|
["SHAMAN"] = {
|
|
[51514] = true, -- 妖术 - Hex
|
|
[77505] = true, -- 地震术 - Earthquake
|
|
[118345] = true, -- 粉碎 - Pulverize
|
|
[118905] = true, -- 静电充能 - Static Charge
|
|
[197214] = true, -- 裂地术 - Sundering
|
|
[305485] = true, -- 闪电磁索 - Lightning Lasso
|
|
},
|
|
|
|
["WARLOCK"] = {
|
|
[710] = true, -- 放逐术 - Banish
|
|
[5484] = true, -- 恐惧嚎叫 - Howl of Terror
|
|
[5782] = true, -- 恐惧 - Fear
|
|
[6358] = true, -- 诱惑 - Seduction
|
|
[6789] = true, -- 死亡缠绕 - Mortal Coil
|
|
[22703] = true, -- 地狱火觉醒 - Infernal Awakening
|
|
[30283] = true, -- 暗影之怒 - Shadowfury
|
|
[89766] = true, -- 巨斧投掷 - Axe Toss
|
|
[196364] = false, -- 痛苦无常 - Unstable Affliction
|
|
[213688] = true, -- 邪能顺劈 - Fel Cleave
|
|
},
|
|
|
|
["WARRIOR"] = {
|
|
[5246] = true, -- 破胆怒吼 - Intimidating Shout
|
|
[132168] = true, -- 震荡波 - Shockwave
|
|
[132169] = true, -- 风暴之锤 - Storm Bolt
|
|
[236077] = true, -- 缴械 - Disarm (PVP)
|
|
},
|
|
|
|
["UNCATEGORIZED"] = {
|
|
[20549] = true, -- 战争践踏 - War Stomp
|
|
[107079] = true, -- 震山掌 - Quaking Palm
|
|
[255723] = true, -- 蛮牛冲撞 - Bull Rush
|
|
[287712] = true, -- 强力一击 - Haymaker
|
|
}
|
|
}
|
|
|
|
function I.GetCrowdControls()
|
|
return crowdControls
|
|
end
|
|
|
|
local builtInCrowdControls = {}
|
|
local customCrowdControls = {}
|
|
|
|
function I.UpdateCrowdControls(t)
|
|
-- user disabled
|
|
wipe(builtInCrowdControls)
|
|
for class, spells in pairs(crowdControls) do
|
|
for id, trackByName in pairs(spells) do
|
|
if not t["disabled"][id] then -- not disabled
|
|
if trackByName then
|
|
local name = F:GetSpellInfo(id)
|
|
if name then
|
|
builtInCrowdControls[name] = true
|
|
end
|
|
else
|
|
builtInCrowdControls[id] = true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
-- user created
|
|
wipe(customCrowdControls)
|
|
for _, id in pairs(t["custom"]) do
|
|
local name = F:GetSpellInfo(id)
|
|
if name then
|
|
customCrowdControls[name] = true
|
|
end
|
|
end
|
|
end
|
|
|
|
function I.IsCrowdControls(name, id)
|
|
return builtInCrowdControls[name] or builtInCrowdControls[id] or customCrowdControls[name]
|
|
end
|
|
|