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.

506 lines
16 KiB

local _, Cell = ...
local L = Cell.L
local F = Cell.funcs
-------------------------------------------------
-- click-castings
-------------------------------------------------
local defaultSpells = {
["DEATHKNIGHT"] = {
["common"] = {
61999, -- Raise Ally - 复活盟友
47541, -- Death Coil - 凋零缠绕
},
-- 250 - Blood
-- 251 - Frost
-- 252 - Unholy
},
["DEMONHUNTER"] = {
-- 577 - Havoc
-- 581 - Vengeance
},
["DRUID"] = {
["common"] = {
1126, -- Mark of the Wild - 野性印记
20484, -- Rebirth - 复生
50769, -- Revive - 起死回生
8936, -- Regrowth - 愈合
"774C", -- Rejuvenation - 回春术
"102401C", -- Wild Charge - 野性冲锋
"29166C", -- Innervate - 激活
"48438C", -- Wild Growth - 野性成长
},
-- 102 - Balance
[102] = {
"2782C", -- Remove Corruption - 清除腐蚀
"305497P", -- pvp - Thorns - 荆棘术
},
-- 103 - Feral
[103] = {
"2782C", -- Remove Corruption - 清除腐蚀
"391888S", -- Adaptive Swarm - 激变蜂群
"305497P", -- pvp - Thorns - 荆棘术
},
-- 104 - Guardian
[104] = {
"2782C", -- Remove Corruption - 清除腐蚀
},
-- Restoration
[105] = {
212040, -- Revitalize - 新生
88423, -- Nature's Cure - 自然之愈
"33763S", -- Lifebloom - 生命绽放
"102351S", -- Cenarion Ward - 塞纳里奥结界
"50464S", -- Nourish - 滋养
"102342S", -- Ironbark - 铁木树皮
"203651S", -- Overgrowth - 过度生长
"392160S", -- Invigorate - 鼓舞
"18562S", -- Swiftmend - 迅捷治愈
"102693H", -- Grove Guardians - ???
"305497P", -- pvp - Thorns - 荆棘术
},
},
["EVOKER"] = {
["common"] = {
364342, -- Blessing of the Bronze - 青铜龙的祝福
361227, -- Return - 生还
361469, -- Living Flame - 活化烈焰
355913, -- Emerald Blossom - 翡翠之花
"360995C", -- Verdant Embrace - 青翠之拥
"374251C", -- Cauterizing Flame - 灼烧之焰
"369459C", -- Source of Magic - 魔力之源
"370665C", -- Rescue - 营救
"406732C", -- Spatial Paradox - 空间悖论
"378441P", -- Time Stop - 时间停止
"374348C", -- Renewing Blaze - ???
"443328H", -- Engulf -- ??
},
-- 1467 - Devastation
[1467] = {
"365585C", -- Expunge - 净除
},
-- 1468 - Preservation
[1468] = {
361178, -- Mass Return - 群体生还
360823, -- Naturalize - 自然平衡
"364343S", -- Echo - 回响
"366155S", -- Reversion - 逆转
"367226S", -- Spiritbloom - 精神之花
"357170S", -- Time Dilation - 时间膨胀
},
-- 1473 - Augmentation
[1473] = {
-- "395152S", -- Ebon Might - 黑檀之力
"365585C", -- Expunge - 净除
"360827S", -- Blistering Scales - 炽火龙鳞
"409311S", -- Prescience - 先知先觉
"408233S", -- Bestow Weyrnstone - 赋予军营之石
"412710S", -- Timelessness - 超脱时间
}
},
["HUNTER"] = {
["common"] = {
"34477C", -- Misdirection - 误导
53271, -- Master's Call - 主人的召唤
"248518P", -- pvp - Interlope - 干涉
"53480P", -- pvp - Roar of Sacrifice - 牺牲咆哮
},
-- 253 - Beast Mastery
[253] = {
90361, -- Spirit Mend - 灵魂治愈
},
-- 254 - Marksmanship
-- 255 - Survival
[255] = {
"212640P", -- pvp - Mending Bandage - 治疗绷带
},
},
["MAGE"] = {
["common"] = {
1459, -- Arcane Intellect - 奥术智慧
130, -- Slow Fall - 缓落术
"475C", -- Remove Curse - 解除诅咒
},
-- 62 - Arcane
-- 63 - Fire
-- 64 - Frost
},
["MONK"] = {
["common"] = {
115178, -- Resuscitate - 轮回转世
116670, -- Vivify - 活血术
"115175C", -- Soothing Mist - 抚慰之雾
"115098C", -- Chi Wave - 真气波
"116841C", -- Tiger's Lust - ???
},
-- 268 - Brewmaster
[268] = {
"218164C", -- Detox - 清创生血
},
-- 269 - Windwalker
[269] = {
"218164C", -- Detox - 清创生血
},
-- 270 - Mistweaver
[270] = {
212051, -- Reawaken - 死而复生
115450, -- Detox - 清创生血
"124682S", -- Enveloping Mist - 氤氲之雾
"115151S", -- Renewing Mist - 复苏之雾
"116849S", -- Life Cocoon - 作茧缚命
"124081S", -- Zen Pulse - 禅意波
"399491S" -- Sheilun's Gift - ???
},
},
["PALADIN"] = {
["common"] = {
7328, -- Redemption - 救赎
391054, -- Intercession - 代祷
19750, -- Flash of Light - 圣光闪现
85673, -- Word of Glory - 荣耀圣令
"633C", -- Lay on Hands - 圣疗术
"1044C", -- Blessing of Freedom - 自由祝福
"6940C", -- Blessing of Sacrifice - 牺牲祝福
"1022C", -- Blessing of Protection - 保护祝福
},
-- 65 - Holy
[65] = {
212056, -- Absolution - 宽恕
4987, -- Cleanse - 清洁术
53563, -- Beacon of Light - 圣光道标
"20473S", -- Holy Shock - 神圣震击
"82326S", -- Holy Light - 圣光术
"223306S", -- Bestow Faith -- 赋予信仰
"114165S", -- Holy Prism - 神圣棱镜
"183998S", -- Light of the Martyr -- 殉道者之光
"148039S", -- Barrier of Faith - 信仰屏障
"156910S", -- Beacon of Faith - 信仰道标
"388007S", -- Blessing of Summer - 仲夏祝福
"200025S", -- Beacon of Virtue -- 美德道标
"432459S", -- Holy Bulwark - ???
"156322H", -- Eternal Flame - ???
},
-- 66 - Protection
[66] = {
"213644C", -- Cleanse Toxins - 清毒术
"204018S", -- Blessing of Spellwarding - 破咒祝福
"228049P", -- pvp - Guardian of the Forgotten Queen - 被遗忘的女王护卫
},
-- 70 - Retribution
[70] = {
"213644C", -- Cleanse Toxins - 清毒术
"210256P", -- pvp - Blessing of Sanctuary - 庇护祝福
"156322H", -- Eternal Flame - ???
},
},
["PRIEST"] = {
["common"] = {
21562, -- Power Word: Fortitude - 真言术:韧
2006, -- Resurrection - 复活术
1706, -- Levitate - 漂浮术
17, -- Power Word: Shield - 真言术:盾
2061, -- Flash Heal - 快速治疗
2096, -- Mind Vision - ???
"139C", -- Renew - 恢复
"33076C", -- Prayer of Mending - 愈合祷言
"73325C", -- Leap of Faith - 信仰飞跃
"10060C", -- Power Infusion - 能量灌注
"373481C", -- Power Word: Life - 真言术:命
"108968C", -- Void Shift - 虚空转移
},
-- 256 - Discipline
[256] = {
212036, -- Mass Resurrection - 群体复活
527, -- Purify - 纯净术
47540, -- Penance - 苦修
"194509S", -- Power Word: Radiance - 真言术:耀
"33206S", -- Pain Suppression - 痛苦压制
"47536S", -- Rapture - 全神贯注
"314867S", -- Shadow Covenant - 暗影盟约
"421453S", -- Ultimate Penitence - ???
},
-- 257 - Holy
[257] = {
212036, -- Mass Resurrection - 群体复活
527, -- Purify - 纯净术
2060, -- Heal - 治疗术
"2050S", -- Holy Word: Serenity - 圣言术:静
"596S", -- Prayer of Healing - 治疗祷言
"47788S", -- Guardian Spirit - 守护之魂
"204883S", -- Circle of Healing - 治疗之环
"289666P", -- pvp - Greater Heal - 强效治疗术
"213610P", -- pvp - Holy Ward - 神圣守卫
"197268P", -- pvp - Ray of Hope - 希望之光
},
-- 258 - Shadow
[258] = {
"213634C", -- Purify Disease - 净化疾病
},
},
["ROGUE"] = {
["common"] = {
"57934C", -- Tricks of the Trade - 嫁祸诀窍
"36554C", -- Shadowstep - 暗影步
},
-- 259 - Assassination
-- 260 - Outlaw
-- 261 - Subtlety
},
["SHAMAN"] = {
["common"] = {
2008, -- Ancestral Spirit - 先祖之魂
8004, -- Healing Surge - 治疗之涌
546, -- Water Walking - 水上行走
462854, -- Skyfury - ???
"1064C", -- Chain Heal - 治疗链
"974C", -- Earth Shield - 大地之盾
"51490C", -- Thunderstorm - 雷霆风暴
},
-- 262 - Elemental
[262] = {
"51886C", -- Cleanse Spirit - 净化灵魂
},
-- 263 - Enhancement
[263] = {
"51886C", -- Cleanse Spirit - 净化灵魂
},
-- 264 - Restoration
[264] = {
212048, -- Ancestral Vision - 先祖视界
77130, -- Purify Spirit - 净化灵魂
"61295S", -- Riptide - 激流
"77472S", -- Healing Wave - 治疗波
"73685S", -- Unleash Life - 生命释放
"428332S", -- Primordial Wave - ???
},
},
["WARLOCK"] = {
["common"] = {
20707, -- Soulstone - 灵魂石
89808, -- Singe Magic - 烧灼驱魔
5697, -- Unending Breath - 无尽呼吸
},
-- 265 - Affliction
-- 266 - Demonology
-- 267 - Destruction
},
["WARRIOR"] = {
["common"] = {
"3411C", -- Intervene - 援护
},
-- 71 - Arms
-- 72 - Fury
-- 73 - Protection
[73] = {
"213871P", -- pvp - Bodyguard - 护卫
},
},
}
function F:GetClickCastingSpellList(class, spec)
local spells = defaultSpells[class]["common"] and F:Copy(defaultSpells[class]["common"]) or {}
-- check spec
if spec and defaultSpells[class][spec] then
for _, v in pairs(defaultSpells[class][spec]) do
tinsert(spells, v)
end
end
local invalid
-- fill data
for i, v in pairs(spells) do
local spellId, spellType
if type(v) == "number" then
spellId = v
else -- string
spellId, spellType = strmatch(v, "(%d+)(%a)")
spellId = tonumber(spellId)
spellType = L[spellType]
end
local name, icon = F:GetSpellInfo(spellId)
if name then
spells[i] = {icon, name, spellType, spellId}
else
F:Debug("|cffff0000[INVALID]|r click-casting spell:", spellId)
if not invalid then invalid = {} end
tinsert(invalid, i)
end
end
-- check invalid ids
if invalid then
for i = #invalid, 1, -1 do
tremove(spells, invalid[i])
end
end
-- texplore(spells)
return spells
end
-------------------------------------------------
-- resurrections
-------------------------------------------------
local resurrections_for_dead = {
-- DEATHKNIGHT
61999, -- 复活盟友
-- DRUID
20484, -- 复生
50769, -- 起死回生
212040, -- 新生
-- EVOKER
361227, -- 生还
361178, -- 群体生还
-- MONK
115178, -- 轮回转世
212051, -- 死而复生
-- PALADIN
391054, -- 代祷
7328, -- 救赎
212056, -- 宽恕
-- PRIEST
2006, -- 复活术
212036, -- 群体复活
-- SHAMAN
2008, -- 先祖之魂
212048, -- 先祖视界
}
do
local temp = {}
for _, id in pairs(resurrections_for_dead) do
temp[F:GetSpellInfo(id)] = true
end
resurrections_for_dead = temp
end
local spell_soulstone = F:GetSpellInfo(20707)
function F:IsSoulstone(spell)
return spell == spell_soulstone
end
function F:IsResurrectionForDead(spell)
return resurrections_for_dead[spell]
end
local resurrection_click_castings = {
["DEATHKNIGHT"] = {
{"type-altR", "spell", 61999},
},
["DRUID"] = {
{"type-altR", "spell", 20484},
{"type-shiftR", "spell", 50769},
},
["EVOKER"] = {
{"type-shiftR", "spell", 361227},
},
["MONK"] = {
{"type-shiftR", "spell", 115178},
},
["PALADIN"] = {
{"type-altR", "spell", 391054},
{"type-shiftR", "spell", 7328},
},
["PRIEST"] = {
{"type-shiftR", "spell", 2006},
},
["SHAMAN"] = {
{"type-shiftR", "spell", 2008},
},
["WARLOCK"] = {
{"type-altR", "spell", 20707},
},
}
-- do
-- for class, t in pairs(resurrection_click_castings) do
-- for _, clickCasting in pairs(t) do
-- clickCasting[3] = F:GetSpellInfo(clickCasting[3])
-- end
-- end
-- end
function F:GetResurrectionClickCastings(class)
return resurrection_click_castings[class] or {}
end
-------------------------------------------------
-- smart resurrection
-------------------------------------------------
local normalResurrection = {
["DRUID"] = {
["nospec:4"] = 50769, -- Revive - 起死回生
["spec:4"] = 212040, -- Revitalize - 新生
},
["EVOKER"] = {
["nospec:2"] = 361227, -- Return - 生还
["spec:2"] = 361178, -- Mass Return - 群体生还
},
["MONK"] = {
["nospec:2"] = 115178, -- Resuscitate - 轮回转世
["spec:2"] = 212051, -- Reawaken - 死而复生
},
["PALADIN"] = {
["nospec:1"] = 7328, -- Redemption - 救赎
["spec:1"] = 212056, -- Absolution - 宽恕
},
["PRIEST"] = {
["spec:3"] = 2006, -- Resurrection - 复活术
["nospec:3"] = 212036, -- Mass Resurrection - 群体复活
},
["SHAMAN"] = {
["nospec:3"] = 2008, -- Ancestral Spirit - 先祖之魂
["spec:3"] = 212048, -- Ancestral Vision - 先祖视界
},
}
do
for class, t in pairs(normalResurrection) do
for condition, spell in pairs(t) do
t[condition] = F:GetSpellInfo(spell)
end
end
end
function F:GetNormalResurrection(class)
return normalResurrection[class]
end
local combatResurrection = {
["DEATHKNIGHT"] = 61999,
["DRUID"] = 20484,
["PALADIN"] = 391054,
["WARLOCK"] = 20707,
}
do
for class, spell in pairs(combatResurrection) do
combatResurrection[class] = F:GetSpellInfo(spell)
end
end
function F:GetCombatResurrection(class)
return combatResurrection[class]
end