ETYPE_CC = 1; ETYPE_DEBUFF = 2; ETYPE_BUFF = 4; function QuickLocalize(str) -- just remove $1 & $2 args because we *know that the order is not changed*. -- not fail proof if ever it occurs (should be a more clever function, and return found arguments order) str = string.gsub(str, ".%$", ""); str = string.gsub(str, "%%s", "\(.+\)"); return str; end function CCWatch_Globals() CCWatch_Save = {} CCWATCH = {} CCWATCH.PROFILE = "" CCWATCH.COMBO = 0 CCWATCH.STATUS = 0 CCWATCH.INVERT = false CCWATCH.GROWTH = 0 CCWATCH.SCALE = 1 CCWATCH.WIDTH = 160 CCWATCH.ALPHA = 1 CCWATCH.VARIABLES_LOADED = false CCWATCH.VARIABLE_TIMER = 0 -- time threshold before an event is trashed, may need to be raised in high lag situations CCWATCH.THRESHOLD = 0.25 -- most recent unit aura seen CCWATCH.UNIT_AURA = {} CCWATCH.UNIT_AURA.TARGET = "" CCWATCH.UNIT_AURA.TIME = 0 -- most recent effect seen CCWATCH.EFFECT = {} CCWATCH.EFFECT.TYPE = "" CCWATCH.EFFECT.TARGET = "" CCWATCH.EFFECT.TIME = 0 CCWATCH.EFFECT.STATUS = 0 -- 0 = no effect, 1 = applied, 2 = broken, 3 = faded -- effect groups for each bar CCWATCH.GROUPSCC = {} CCWATCH.GROUPSCC[1] = {} CCWATCH.GROUPSCC[1].EFFECT = {} CCWATCH.GROUPSCC[2] = {} CCWATCH.GROUPSCC[2].EFFECT = {} CCWATCH.GROUPSCC[3] = {} CCWATCH.GROUPSCC[3].EFFECT = {} CCWATCH.GROUPSCC[4] = {} CCWATCH.GROUPSCC[4].EFFECT = {} CCWATCH.GROUPSCC[5] = {} CCWATCH.GROUPSCC[5].EFFECT = {} CCWATCH.GROUPSDEBUFF = {} CCWATCH.GROUPSDEBUFF[1] = {} CCWATCH.GROUPSDEBUFF[1].EFFECT = {} CCWATCH.GROUPSDEBUFF[2] = {} CCWATCH.GROUPSDEBUFF[2].EFFECT = {} CCWATCH.GROUPSDEBUFF[3] = {} CCWATCH.GROUPSDEBUFF[3].EFFECT = {} CCWATCH.GROUPSDEBUFF[4] = {} CCWATCH.GROUPSDEBUFF[4].EFFECT = {} CCWATCH.GROUPSDEBUFF[5] = {} CCWATCH.GROUPSDEBUFF[5].EFFECT = {} CCWATCH.GROUPSBUFF = {} CCWATCH.GROUPSBUFF[1] = {} CCWATCH.GROUPSBUFF[1].EFFECT = {} CCWATCH.GROUPSBUFF[2] = {} CCWATCH.GROUPSBUFF[2].EFFECT = {} CCWATCH.GROUPSBUFF[3] = {} CCWATCH.GROUPSBUFF[3].EFFECT = {} CCWATCH.GROUPSBUFF[4] = {} CCWATCH.GROUPSBUFF[4].EFFECT = {} CCWATCH.GROUPSBUFF[5] = {} CCWATCH.GROUPSBUFF[5].EFFECT = {} -- CC Durations according to rank -- WARNING : in case of difference between skill and effect, separate strings have to be used. -- (see Hunter 'Freeze Trap' for instance) CCWATCH_SPELLS = {} -- Warrior CCWATCH_SPELLS[CCWATCH_REND] = { RANKS = 7, DURATION = {9, 12, 15, 18, 21, 21, 21} } -- Mage CCWATCH_SPELLS[CCWATCH_POLYMORPH] = { RANKS = 4, DURATION = {20, 30, 40, 50} } CCWATCH_SPELLS[CCWATCH_FIREBALL] = { RANKS = 11, DURATION = {4, 6, 6, 8, 8, 8, 8, 8, 8, 8, 8} } CCWATCH_SPELLS[CCWATCH_FROSTBOLT] = { RANKS = 10, DURATION = {5, 6, 6, 7, 7, 8, 8, 9, 9, 9} } -- Priest CCWATCH_SPELLS[CCWATCH_SHACKLE] = { RANKS = 3, DURATION = {30, 40, 50} } -- Druid CCWATCH_SPELLS[CCWATCH_ROOTS] = { RANKS = 6, DURATION = {12, 15, 18, 21, 24, 27} } CCWATCH_SPELLS[CCWATCH_BASH] = { RANKS = 3, DURATION = {2, 3, 4} } CCWATCH_SPELLS[CCWATCH_HIBERNATE] = { RANKS = 3, DURATION = {20, 30, 40} } -- Hunter CCWATCH_SPELLS[CCWATCH_FREEZINGTRAP_SPELL] = { RANKS = 3, DURATION = {10, 15, 20}, EFFECTNAME = CCWATCH_FREEZINGTRAP } CCWATCH_SPELLS[CCWATCH_SCAREBEAST] = { RANKS = 3, DURATION = {10, 15, 20} } -- Paladin CCWATCH_SPELLS[CCWATCH_HOJ] = { RANKS = 4, DURATION = {3, 4, 5, 6} } CCWATCH_SPELLS[CCWATCH_TURNUNDEAD] = { RANKS = 3, DURATION = {10, 15, 20} } CCWATCH_SPELLS[CCWATCH_DIVINESHIELD] = { RANKS = 2, DURATION = {10, 12} } -- Warlock CCWATCH_SPELLS[CCWATCH_FEAR] = { RANKS = 3, DURATION = {10, 15, 20} } CCWATCH_SPELLS[CCWATCH_HOWLOFTERROR] = { RANKS = 2, DURATION = {10, 15} } CCWATCH_SPELLS[CCWATCH_BANISH] = { RANKS = 2, DURATION = {20, 30} } -- Rogue CCWATCH_SPELLS[CCWATCH_SAP] = { RANKS = 3, DURATION = {25, 35, 45} } CCWATCH.LASTTARGETS = {} CCWATCH_TEXT_ON = QuickLocalize(AURAADDEDOTHERHARMFUL); CCWATCH_TEXT_BREAK = QuickLocalize(AURADISPELOTHER); CCWATCH_TEXT_OFF = QuickLocalize(AURAREMOVEDOTHER); CCWATCH_TEXT_BUFF_ON = QuickLocalize(AURAADDEDOTHERHELPFUL); CCWATCH_TEXT_DIE = QuickLocalize(UNITDIESOTHER); CCWATCH_TEXT_DIEXP = strsub(CCWATCH_TEXT_DIE, 1, -2)..".+"; end