Files
Vanilla_MikScrollingBattleText/MikScrollingBattleText/MikCombatEventHelper.lua
T
Athene a613ef0a3a 4.2 - lightweight
cleaned unnecessary stuff
2015-10-17 21:56:14 +02:00

288 lines
70 KiB
Lua

MikCEH={};MikCEH.EVENTTYPE_DAMAGE=1;MikCEH.EVENTTYPE_HEAL=2;MikCEH.EVENTTYPE_NOTIFICATION=3;MikCEH.DIRECTIONTYPE_PLAYER_INCOMING=1;MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING=2;MikCEH.DIRECTIONTYPE_PET_OUTGOING=3;MikCEH.ACTIONTYPE_HIT=1;MikCEH.ACTIONTYPE_MISS=2;MikCEH.ACTIONTYPE_DODGE=3;MikCEH.ACTIONTYPE_PARRY=4;MikCEH.ACTIONTYPE_BLOCK=5;MikCEH.ACTIONTYPE_RESIST=6;MikCEH.ACTIONTYPE_ABSORB=7;MikCEH.ACTIONTYPE_IMMUNE=8;MikCEH.ACTIONTYPE_EVADE=9;MikCEH.ACTIONTYPE_REFLECT=10;MikCEH.ACTIONTYPE_DROWNING=11;MikCEH.ACTIONTYPE_FALLING=12;MikCEH.ACTIONTYPE_FATIGUE=13;MikCEH.ACTIONTYPE_FIRE=14;MikCEH.ACTIONTYPE_LAVA=15;MikCEH.ACTIONTYPE_SLIME=16;MikCEH.HITTYPE_NORMAL=1;MikCEH.HITTYPE_CRIT=2;MikCEH.HITTYPE_OVER_TIME=3;MikCEH.DAMAGETYPE_PHYSICAL=1;MikCEH.DAMAGETYPE_HOLY=2;MikCEH.DAMAGETYPE_NATURE=3;MikCEH.DAMAGETYPE_FIRE=4;MikCEH.DAMAGETYPE_FROST=5;MikCEH.DAMAGETYPE_SHADOW=6;MikCEH.DAMAGETYPE_ARCANE=7;MikCEH.DAMAGETYPE_UNKNOWN=999;MikCEH.PARTIALACTIONTYPE_ABSORB=1;MikCEH.PARTIALACTIONTYPE_BLOCK=2;MikCEH.PARTIALACTIONTYPE_RESIST=3;MikCEH.PARTIALACTIONTYPE_VULNERABLE=4;MikCEH.PARTIALACTIONTYPE_CRUSHING=5;MikCEH.PARTIALACTIONTYPE_GLANCING=6;MikCEH.PARTIALACTIONTYPE_OVERHEAL=7;MikCEH.HEALTYPE_NORMAL=1;MikCEH.HEALTYPE_CRIT=2;MikCEH.HEALTYPE_OVER_TIME=3;MikCEH.NOTIFICATIONTYPE_DEBUFF=1;MikCEH.NOTIFICATIONTYPE_BUFF=2;MikCEH.NOTIFICATIONTYPE_ITEM_BUFF=3;MikCEH.NOTIFICATIONTYPE_BUFF_FADE=4;MikCEH.NOTIFICATIONTYPE_COMBAT_ENTER=5;MikCEH.NOTIFICATIONTYPE_COMBAT_LEAVE=6;MikCEH.NOTIFICATIONTYPE_POWER_GAIN=7;MikCEH.NOTIFICATIONTYPE_POWER_LOSS=8;MikCEH.NOTIFICATIONTYPE_CP_GAIN=9;MikCEH.NOTIFICATIONTYPE_HONOR_GAIN=10;MikCEH.NOTIFICATIONTYPE_REP_GAIN=11;MikCEH.NOTIFICATIONTYPE_REP_LOSS=12;MikCEH.NOTIFICATIONTYPE_SKILL_GAIN=13;MikCEH.NOTIFICATIONTYPE_EXPERIENCE_GAIN=14;MikCEH.NOTIFICATIONTYPE_PC_KILLING_BLOW=15;MikCEH.NOTIFICATIONTYPE_NPC_KILLING_BLOW=16;MikCEH.TRIGGERTYPE_SELF_HEALTH=1;MikCEH.TRIGGERTYPE_SELF_MANA=2;MikCEH.TRIGGERTYPE_PET_HEALTH=3;MikCEH.TRIGGERTYPE_ENEMY_HEALTH=4;MikCEH.TRIGGERTYPE_FRIENDLY_HEALTH=5;MikCEH.TRIGGERTYPE_SEARCH_PATTERN=6;MikCEH.CombatEventData={};MikCEH.TriggerEventData={};local RECENTLY_SELECTED_PLAYERS_UPDATE_INTERVAL=1;local RECENTLY_SELECTED_PLAYERS_HOLD_TIME=45;local listenEvents={};local globalStringInfoArray={};local playerName;local playerClass;local orderedCaptureData={};local unorderedCaptureData={};local searchMode=false;local searchModePattern;local selfHealthTriggers={};local selfManaTriggers={};local petHealthTriggers={};local enemyHealthTriggers={};local friendlyHealthTriggers={};local searchPatternTriggers={};local lastSelfHealthPercentage=0;local lastSelfManaPercentage=0;local lastSelfManaAmount=UnitMana("player");local lastPetHealthPercentage=0;local lastEnemyHealthPercentage=0;local lastFriendlyHealthPercentage=0;local recentlySelectedPlayers={};local elapsedTime=0;function MikCEH.RegisterEvents()for k,v in listenEvents do MCEHEventFrame:RegisterEvent(v);end end
function MikCEH.UnregisterEvents()for k,v in listenEvents do MCEHEventFrame:UnregisterEvent(v);end end
function MikCEH.OnLoad()table.insert(listenEvents,"CHAT_MSG_COMBAT_CREATURE_VS_SELF_HITS");table.insert(listenEvents,"CHAT_MSG_COMBAT_HOSTILEPLAYER_HITS");table.insert(listenEvents,"CHAT_MSG_COMBAT_PARTY_HITS");table.insert(listenEvents,"CHAT_MSG_COMBAT_CREATURE_VS_SELF_MISSES");table.insert(listenEvents,"CHAT_MSG_COMBAT_HOSTILEPLAYER_MISSES");table.insert(listenEvents,"CHAT_MSG_COMBAT_PARTY_MISSES");table.insert(listenEvents,"CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE");table.insert(listenEvents,"CHAT_MSG_SPELL_CREATURE_VS_CREATURE_DAMAGE");table.insert(listenEvents,"CHAT_MSG_SPELL_HOSTILEPLAYER_DAMAGE");table.insert(listenEvents,"CHAT_MSG_SPELL_PARTY_DAMAGE");table.insert(listenEvents,"CHAT_MSG_SPELL_DAMAGESHIELDS_ON_OTHERS");table.insert(listenEvents,"CHAT_MSG_SPELL_HOSTILEPLAYER_BUFF");table.insert(listenEvents,"CHAT_MSG_SPELL_CREATURE_VS_SELF_BUFF");table.insert(listenEvents,"CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE");table.insert(listenEvents,"CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS");table.insert(listenEvents,"CHAT_MSG_COMBAT_SELF_HITS");table.insert(listenEvents,"CHAT_MSG_COMBAT_SELF_MISSES");table.insert(listenEvents,"CHAT_MSG_SPELL_SELF_DAMAGE");table.insert(listenEvents,"CHAT_MSG_SPELL_DAMAGESHIELDS_ON_SELF");table.insert(listenEvents,"CHAT_MSG_SPELL_SELF_BUFF");table.insert(listenEvents,"CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_BUFFS");table.insert(listenEvents,"CHAT_MSG_SPELL_PERIODIC_PARTY_BUFFS");table.insert(listenEvents,"CHAT_MSG_SPELL_PERIODIC_CREATURE_BUFFS");table.insert(listenEvents,"CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE");table.insert(listenEvents,"CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_DAMAGE");table.insert(listenEvents,"CHAT_MSG_COMBAT_PET_HITS");table.insert(listenEvents,"CHAT_MSG_COMBAT_PET_MISSES");table.insert(listenEvents,"CHAT_MSG_SPELL_PET_DAMAGE");table.insert(listenEvents,"CHAT_MSG_SPELL_ITEM_ENCHANTMENTS");table.insert(listenEvents,"CHAT_MSG_SPELL_AURA_GONE_SELF");table.insert(listenEvents,"CHAT_MSG_COMBAT_HONOR_GAIN");table.insert(listenEvents,"CHAT_MSG_COMBAT_FACTION_CHANGE");table.insert(listenEvents,"CHAT_MSG_SKILL");table.insert(listenEvents,"CHAT_MSG_COMBAT_XP_GAIN");table.insert(listenEvents,"CHAT_MSG_COMBAT_HOSTILE_DEATH");table.insert(listenEvents,"PLAYER_REGEN_ENABLED");table.insert(listenEvents,"PLAYER_REGEN_DISABLED");table.insert(listenEvents,"PLAYER_COMBO_POINTS");table.insert(listenEvents,"UNIT_HEALTH");table.insert(listenEvents,"UNIT_MANA");table.insert(listenEvents,"PLAYER_TARGET_CHANGED");MCEHEventFrame:RegisterEvent("ADDON_LOADED");end
function MikCEH.OnEvent()if(event=="ADDON_LOADED")then
if(arg1==MikSBT.MOD_NAME)then
this:UnregisterEvent("ADDON_LOADED");MikCEH.RegisterEvents();MikCEH.Init();end
elseif(event=="PLAYER_REGEN_ENABLED")then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_COMBAT_LEAVE,nil,nil);MikCEH.SendEvent(eventData);elseif(event=="PLAYER_REGEN_DISABLED")then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_COMBAT_ENTER,nil,nil);MikCEH.SendEvent(eventData);elseif(event=="PLAYER_COMBO_POINTS")then local numCP=GetComboPoints();if(numCP~=0)then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_CP_GAIN,numCP,nil);MikCEH.SendEvent(eventData);end
elseif(event=="UNIT_HEALTH")then if(arg1=="player")then MikCEH.ParseSelfHealthTriggers();elseif(arg1=="target")then
if(not UnitIsFriend("player","target"))then MikCEH.ParseEnemyHealthTriggers();else MikCEH.ParseFriendlyHealthTriggers();end elseif(arg1=="pet")then MikCEH.ParsePetHealthTriggers();end
elseif(event=="UNIT_MANA")then if(arg1=="player")then MikCEH.ParseSelfManaTriggers();end
elseif(event=="PLAYER_TARGET_CHANGED")then
if(UnitExists("target")and UnitIsPlayer("target")and not UnitIsFriend("player","target"))then
local playerName=UnitName("target");if(playerName)then recentlySelectedPlayers[playerName]=0;end end
else MikCEH.ParseSearchPatternTriggers(event,arg1);MikCEH.ParseCombatEvents(event,arg1);end end
function MikCEH.OnUpdate()elapsedTime=elapsedTime+arg1;if(elapsedTime>=RECENTLY_SELECTED_PLAYERS_UPDATE_INTERVAL)then
for playerName,lastSeen in recentlySelectedPlayers do
recentlySelectedPlayers[playerName]=lastSeen+elapsedTime;if(lastSeen+elapsedTime>=RECENTLY_SELECTED_PLAYERS_HOLD_TIME)then recentlySelectedPlayers[playerName]=nil;end end
elapsedTime=0;end end
function MikCEH.ParseCombatEvents(event,combatMessage)if(event=="CHAT_MSG_COMBAT_CREATURE_VS_SELF_HITS"or event=="CHAT_MSG_COMBAT_HOSTILEPLAYER_HITS"or event=="CHAT_MSG_COMBAT_PARTY_HITS")then MikCEH.ParseForIncomingHits(combatMessage);elseif(event=="CHAT_MSG_COMBAT_CREATURE_VS_SELF_MISSES"or event=="CHAT_MSG_COMBAT_HOSTILEPLAYER_MISSES"or event=="CHAT_MSG_COMBAT_PARTY_MISSES")then MikCEH.ParseForIncomingMisses(combatMessage);elseif(event=="CHAT_MSG_SPELL_CREATURE_VS_SELF_DAMAGE"or event=="CHAT_MSG_SPELL_HOSTILEPLAYER_DAMAGE"or event=="CHAT_MSG_SPELL_PARTY_DAMAGE")then MikCEH.ParseForIncomingSpellHitsAndMisses(combatMessage);MikCEH.ParseForPowerLosses(combatMessage);elseif(event=="CHAT_MSG_SPELL_DAMAGESHIELDS_ON_OTHERS")then MikCEH.ParseForIncomingDamageShieldDamage(combatMessage);elseif(event=="CHAT_MSG_SPELL_HOSTILEPLAYER_BUFF"or event=="CHAT_MSG_SPELL_CREATURE_VS_SELF_BUFF")then MikCEH.ParseForIncomingSpellHeals(combatMessage);elseif(event=="CHAT_MSG_SPELL_PERIODIC_SELF_DAMAGE")then MikCEH.ParseForIncomingDebuffs(combatMessage);MikCEH.ParseForPowerGains(combatMessage);elseif(event=="CHAT_MSG_SPELL_PERIODIC_SELF_BUFFS")then if(not MikCEH.ParseForIncomingSpellHeals(combatMessage))then MikCEH.ParseForIncomingBuffs(combatMessage);MikCEH.ParseForOutgoingHoTs(combatMessage);end
elseif(event=="CHAT_MSG_COMBAT_SELF_HITS")then if(not MikCEH.ParseForEnvironmentalDamage(combatMessage))then MikCEH.ParseForOutgoingHits(combatMessage);end
elseif(event=="CHAT_MSG_COMBAT_SELF_MISSES")then MikCEH.ParseForOutgoingMisses(combatMessage);elseif(event=="CHAT_MSG_SPELL_SELF_DAMAGE")then MikCEH.ParseForOutgoingSpellHitsAndMisses(combatMessage);elseif(event=="CHAT_MSG_SPELL_DAMAGESHIELDS_ON_SELF")then MikCEH.ParseForOutgoingDamageShieldDamage(combatMessage);elseif(event=="CHAT_MSG_SPELL_SELF_BUFF")then if(not MikCEH.ParseForPowerGains(combatMessage))then MikCEH.ParseForOutgoingSpellHeals(combatMessage);MikCEH.ParseForOutgoingDispelResists(combatMessage);end
elseif(event=="CHAT_MSG_SPELL_PERIODIC_FRIENDLYPLAYER_BUFFS"or event=="CHAT_MSG_SPELL_PERIODIC_PARTY_BUFFS")then MikCEH.ParseForOutgoingHoTs(combatMessage);elseif(event=="CHAT_MSG_SPELL_PERIODIC_CREATURE_DAMAGE"or event=="CHAT_MSG_SPELL_PERIODIC_HOSTILEPLAYER_DAMAGE")then MikCEH.ParseForOutgoingDoTs(combatMessage);MikCEH.ParseForPowerLosses(combatMessage);elseif(event=="CHAT_MSG_COMBAT_PET_HITS")then MikCEH.ParseForOutgoingPetHits(combatMessage);elseif(event=="CHAT_MSG_COMBAT_PET_MISSES")then MikCEH.ParseForOutgoingPetMisses(combatMessage);elseif(event=="CHAT_MSG_SPELL_PET_DAMAGE")then MikCEH.ParseForOutgoingPetSpellHitsAndMisses(combatMessage);elseif(event=="CHAT_MSG_SPELL_ITEM_ENCHANTMENTS")then MikCEH.ParseForIncomingItemBuffs(combatMessage);elseif(event=="CHAT_MSG_SPELL_AURA_GONE_SELF")then MikCEH.ParseForBuffFades(combatMessage);elseif(event=="CHAT_MSG_COMBAT_HONOR_GAIN")then MikCEH.ParseForHonorGains(combatMessage);elseif(event=="CHAT_MSG_COMBAT_FACTION_CHANGE")then MikCEH.ParseForReputationGainsAndLosses(combatMessage);elseif(event=="CHAT_MSG_SKILL")then MikCEH.ParseForSkillGains(combatMessage);elseif(event=="CHAT_MSG_COMBAT_XP_GAIN")then MikCEH.ParseForExperienceGains(combatMessage);elseif(event=="CHAT_MSG_COMBAT_HOSTILE_DEATH")then MikCEH.ParseForKillingBlows(combatMessage);end end
function MikCEH.Init()playerName=UnitName("player");_,playerClass=UnitClass("player");end
function MikCEH.ParseForIncomingHits(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"COMBATHITOTHERSELF",{"%n","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_NORMAL,MikCEH.DAMAGETYPE_PHYSICAL,capturedData.Amount,nil,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"COMBATHITCRITOTHERSELF",{"%n","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_CRIT,MikCEH.DAMAGETYPE_PHYSICAL,capturedData.Amount,nil,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"COMBATHITSCHOOLOTHERSELF",{"%n","%a","%t"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_NORMAL,capturedData.DamageType,capturedData.Amount,nil,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"COMBATHITCRITSCHOOLOTHERSELF",{"%n","%a","%t"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_CRIT,capturedData.DamageType,capturedData.Amount,nil,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForIncomingMisses(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"MISSEDOTHERSELF",{"%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_MISS,nil,nil,nil,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSDODGEOTHERSELF",{"%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_DODGE,nil,nil,nil,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSPARRYOTHERSELF",{"%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_PARRY,nil,nil,nil,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSBLOCKOTHERSELF",{"%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_BLOCK,nil,nil,nil,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSABSORBOTHERSELF",{"%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_ABSORB,nil,nil,nil,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSIMMUNEOTHERSELF",{"%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_IMMUNE,nil,nil,nil,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForIncomingSpellHitsAndMisses(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGOTHERSELF",{"%n","%s","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_NORMAL,MikCEH.DAMAGETYPE_PHYSICAL,capturedData.Amount,capturedData.SpellName,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGCRITOTHERSELF",{"%n","%s","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_CRIT,MikCEH.DAMAGETYPE_PHYSICAL,capturedData.Amount,capturedData.SpellName,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGSCHOOLOTHERSELF",{"%n","%s","%a","%t"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_NORMAL,capturedData.DamageType,capturedData.Amount,capturedData.SpellName,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGCRITSCHOOLOTHERSELF",{"%n","%s","%a","%t"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_CRIT,capturedData.DamageType,capturedData.Amount,capturedData.SpellName,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLMISSOTHERSELF",{"%n","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_MISS,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLDODGEDOTHERSELF",{"%n","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_DODGE,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLPARRIEDOTHERSELF",{"%n","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_PARRY,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLBLOCKEDOTHERSELF",{"%n","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_BLOCK,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLRESISTOTHERSELF",{"%n","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_RESIST,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGABSORBOTHERSELF",{"%n","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_ABSORB,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLIMMUNEOTHERSELF",{"%n","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_IMMUNE,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLREFLECTOTHERSELF",{"%n","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_REFLECT,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForIncomingDamageShieldDamage(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"DAMAGESHIELDOTHERSELF",{"%n","%a","%t"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_NORMAL,capturedData.DamageType,capturedData.Amount,nil,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLRESISTOTHERSELF",{"%n","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_RESIST,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLMISSOTHERSELF",{"%n","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_MISS,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLDODGEDOTHERSELF",{"%n","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_DODGE,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLPARRIEDOTHERSELF",{"%n","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_PARRY,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLBLOCKEDOTHERSELF",{"%n","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_BLOCK,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGABSORBOTHERSELF",{"%n","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_ABSORB,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLIMMUNEOTHERSELF",{"%n","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_IMMUNE,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLREFLECTOTHERSELF",{"%n","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_REFLECT,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForIncomingSpellHeals(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"HEALEDCRITOTHERSELF",{"%n","%s","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetHealEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.HEALTYPE_CRIT,capturedData.Amount,capturedData.SpellName,capturedData.Name);eventData.Name=playerName MikCEH.PopulateOverhealData(eventData);eventData.Name=capturedData.Name
MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"HEALEDOTHERSELF",{"%n","%s","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetHealEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.HEALTYPE_NORMAL,capturedData.Amount,capturedData.SpellName,capturedData.Name);eventData.Name=playerName MikCEH.PopulateOverhealData(eventData);eventData.Name=capturedData.Name
MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"PERIODICAURAHEALOTHERSELF",{"%a","%n","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetHealEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.HEALTYPE_OVER_TIME,capturedData.Amount,capturedData.SpellName,capturedData.Name);eventData.Name=playerName MikCEH.PopulateOverhealData(eventData);eventData.Name=capturedData.Name
MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"PERIODICAURAHEALSELFSELF",{"%a","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetHealEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.HEALTYPE_OVER_TIME,capturedData.Amount,capturedData.SpellName,playerName);MikCEH.PopulateOverhealData(eventData);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForIncomingDebuffs(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"AURAADDEDSELFHARMFUL",{"%b"});if(capturedData~=nil)then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_DEBUFF,capturedData.Amount,capturedData.BuffName);MikCEH.SendEvent(eventData);return true;end capturedData=nil
if(GetLocale()=="frFR")then capturedData=MikCEH.GetCapturedData(combatMessage,"PERIODICAURADAMAGEOTHERSELF",{"%t","%a","%s","%n"});else capturedData=MikCEH.GetCapturedData(combatMessage,"PERIODICAURADAMAGEOTHERSELF",{"%a","%t","%n","%s"});end
if(capturedData~=nil)then local eventData if(GetLocale()=="frFR")then eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_OVER_TIME,capturedData.DamageType,capturedData.Amount,capturedData.SpellName,capturedData.Name);else eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_OVER_TIME,capturedData.DamageType,capturedData.Amount,capturedData.Name,capturedData.SpellName);end
MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"PERIODICAURADAMAGESELFSELF",{"%a","%t","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_OVER_TIME,capturedData.DamageType,capturedData.Amount,capturedData.SpellName,nil);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGABSORBSELFSELF",{"%s"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_ABSORB,nil,nil,nil,capturedData.SpellName,nil);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGABSORBOTHERSELF",{"%n","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_ABSORB,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForPowerGains(combatMessage)local capturedData=nil
local capturedData=MikCEH.GetCapturedData(combatMessage,"POWERGAINOTHERSELF",{"%p","%a","%s","%n"});if(capturedData~=nil)then
if(capturedData.PowerType==MANA or capturedData.PowerType==RAGE or capturedData.PowerType==ENERGY)then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_POWER_GAIN,capturedData.Amount,capturedData.PowerType,capturedData.SpellName);MikCEH.SendEvent(eventData);return true;end end
if(GetLocale()=="frFR")then capturedData=MikCEH.GetCapturedData(combatMessage,"POWERGAINSELFSELF",{"%p","%s","%a"});else capturedData=MikCEH.GetCapturedData(combatMessage,"POWERGAINSELFSELF",{"%a","%p","%s"});end
if(capturedData~=nil)then
if(capturedData.PowerType==MANA or capturedData.PowerType==RAGE or capturedData.PowerType==ENERGY)then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_POWER_GAIN,capturedData.Amount,capturedData.PowerType,capturedData.SpellName);MikCEH.SendEvent(eventData);return true;end end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLPOWERLEECHSELFOTHER",{"%s","%a","%p","%n","","",""});if(capturedData~=nil)then
if(capturedData.PowerType==MANA or capturedData.PowerType==RAGE or capturedData.PowerType==ENERGY)then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_POWER_GAIN,capturedData.Amount,capturedData.PowerType,capturedData.SpellName);MikCEH.SendEvent(eventData);return true;end end
return false;end
function MikCEH.ParseForPowerLosses(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLPOWERLEECHOTHERSELF",{"%n","%s","%a","%p","","",""});if(capturedData~=nil)then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_POWER_LOSS,capturedData.Amount,capturedData.PowerType,capturedData.SpellName);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLPOWERDRAINOTHERSELF",{"%n","%s","%a","%p"});if(capturedData~=nil)then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_POWER_LOSS,capturedData.Amount,capturedData.PowerType,capturedData.SpellName);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForIncomingBuffs(combatMessage)if(MikCEH.ParseForPowerGains(combatMessage))then
return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"AURAADDEDSELFHELPFUL",{"%s"});if(capturedData~=nil)then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_BUFF,nil,capturedData.SpellName);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLPOWERDRAINSELFSELF",{"%s","%a","%p"});if(capturedData~=nil)then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_POWER_LOSS,capturedData.Amount,capturedData.PowerType,capturedData.SpellName);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForEnvironmentalDamage(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"VSENVIRONMENTALDAMAGE_DROWNING_SELF",{"%a"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_DROWNING,nil,MikCEH.DAMAGETYPE_PHYSICAL,capturedData.Amount,nil,nil);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSENVIRONMENTALDAMAGE_FALLING_SELF",{"%a"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_FALLING,nil,MikCEH.DAMAGETYPE_PHYSICAL,capturedData.Amount,nil,nil);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSENVIRONMENTALDAMAGE_FATIGUE_SELF",{"%a"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_FATIGUE,nil,MikCEH.DAMAGETYPE_PHYSICAL,capturedData.Amount,nil,nil);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSENVIRONMENTALDAMAGE_FIRE_SELF",{"%a"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_FIRE,nil,MikCEH.DAMAGETYPE_PHYSICAL,capturedData.Amount,nil,nil);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSENVIRONMENTALDAMAGE_LAVA_SELF",{"%a"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_LAVA,nil,MikCEH.DAMAGETYPE_PHYSICAL,capturedData.Amount,nil,nil);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSENVIRONMENTALDAMAGE_SLIME_SELF",{"%a"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_SLIME,nil,MikCEH.DAMAGETYPE_PHYSICAL,capturedData.Amount,nil,nil);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForOutgoingHits(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"COMBATHITSELFOTHER",{"%n","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_NORMAL,MikCEH.DAMAGETYPE_PHYSICAL,capturedData.Amount,nil,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"COMBATHITCRITSELFOTHER",{"%n","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_CRIT,MikCEH.DAMAGETYPE_PHYSICAL,capturedData.Amount,nil,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEL_ParseForOutgoingHits(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"COMBATHITSELFOTHER",{"%n","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_NORMAL,MikCEH.DAMAGETYPE_PHYSICAL,capturedData.Amount,nil,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"COMBATHITCRITSELFOTHER",{"%n","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_CRIT,MikCEH.DAMAGETYPE_PHYSICAL,capturedData.Amount,nil,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForOutgoingMisses(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"MISSEDSELFOTHER",{"%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_MISS,nil,nil,nil,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSDODGESELFOTHER",{"%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_DODGE,nil,nil,nil,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSPARRYSELFOTHER",{"%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_PARRY,nil,nil,nil,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSBLOCKSELFOTHER",{"%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_BLOCK,nil,nil,nil,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSABSORBSELFOTHER",{"%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_ABSORB,nil,nil,nil,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSIMMUNESELFOTHER",{"%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_IMMUNE,nil,nil,nil,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSEVADESELFOTHER",{"%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_EVADE,nil,nil,nil,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForOutgoingSpellHitsAndMisses(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGCRITSELFOTHER",{"%s","%n","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_CRIT,MikCEH.DAMAGETYPE_PHYSICAL,capturedData.Amount,capturedData.SpellName,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGSELFOTHER",{"%s","%n","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_NORMAL,MikCEH.DAMAGETYPE_PHYSICAL,capturedData.Amount,capturedData.SpellName,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGCRITSCHOOLSELFSELF",{"%s","%a","%t"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_CRIT,capturedData.DamageType,capturedData.Amount,capturedData.SpellName,playerName);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGSCHOOLSELFSELF",{"%s","%a","%t"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_NORMAL,capturedData.DamageType,capturedData.Amount,capturedData.SpellName,playerName);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGCRITSCHOOLSELFOTHER",{"%s","%n","%a","%t"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_CRIT,capturedData.DamageType,capturedData.Amount,capturedData.SpellName,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGSCHOOLSELFOTHER",{"%s","%n","%a","%t"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_NORMAL,capturedData.DamageType,capturedData.Amount,capturedData.SpellName,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLMISSSELFOTHER",{"%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_MISS,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLDODGEDSELFOTHER",{"%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_DODGE,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLPARRIEDSELFOTHER",{"%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_PARRY,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLBLOCKEDSELFOTHER",{"%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_BLOCK,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLRESISTSELFOTHER",{"%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_RESIST,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGABSORBSELFOTHER",{"%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_ABSORB,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLIMMUNESELFOTHER",{"%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_IMMUNE,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLREFLECTSELFOTHER",{"%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_REFLECT,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLEVADEDSELFOTHER",{"%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_EVADE,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForOutgoingDamageShieldDamage(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"DAMAGESHIELDSELFOTHER",{"%a","%t","%n"});if(capturedData~=nil)then local eventData if capturedData.DamageType==2and capturedData.Amount=="20"then eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_NORMAL,capturedData.DamageType,capturedData.Amount,"Aura de vindicte",capturedData.Name);else eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_NORMAL,capturedData.DamageType,capturedData.Amount,nil,capturedData.Name);end
MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLRESISTSELFOTHER",{"%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_RESIST,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLIMMUNESELFOTHER",{"%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_IMMUNE,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLEVADEDSELFOTHER",{"%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_EVADE,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLMISSSELFOTHER",{"%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_MISS,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLDODGEDSELFOTHER",{"%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_DODGE,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLPARRIEDSELFOTHER",{"%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_PARRY,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLBLOCKEDSELFOTHER",{"%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_BLOCK,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForOutgoingSpellHeals(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"HEALEDCRITSELFSELF",{"%s","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetHealEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.HEALTYPE_CRIT,capturedData.Amount,capturedData.SpellName,playerName);MikCEH.PopulateOverhealData(eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"HEALEDSELFSELF",{"%s","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetHealEventData(MikCEH.DIRECTIONTYPE_PLAYER_INCOMING,MikCEH.HEALTYPE_NORMAL,capturedData.Amount,capturedData.SpellName,playerName);MikCEH.PopulateOverhealData(eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"HEALEDCRITSELFOTHER",{"%s","%n","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetHealEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.HEALTYPE_CRIT,capturedData.Amount,capturedData.SpellName,capturedData.Name);MikCEH.PopulateOverhealData(eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"HEALEDSELFOTHER",{"%s","%n","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetHealEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.HEALTYPE_NORMAL,capturedData.Amount,capturedData.SpellName,capturedData.Name);MikCEH.PopulateOverhealData(eventData);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForOutgoingDispelResists(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLRESISTSELFOTHER",{"%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_RESIST,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForOutgoingHoTs(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"PERIODICAURAHEALSELFOTHER",{"%n","%a","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetHealEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.HEALTYPE_OVER_TIME,capturedData.Amount,capturedData.SpellName,capturedData.Name);MikCEH.PopulateOverhealData(eventData);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForOutgoingDoTs(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"PERIODICAURADAMAGESELFOTHER",{"%n","%a","%t","%s"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_OVER_TIME,capturedData.DamageType,capturedData.Amount,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGABSORBSELFOTHER",{"%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PLAYER_OUTGOING,MikCEH.ACTIONTYPE_ABSORB,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForOutgoingPetHits(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"COMBATHITOTHEROTHER",{"%c","%n","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_NORMAL,MikCEH.DAMAGETYPE_PHYSICAL,capturedData.Amount,nil,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"COMBATHITCRITOTHEROTHER",{"%c","%n","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_CRIT,MikCEH.DAMAGETYPE_PHYSICAL,capturedData.Amount,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForOutgoingPetMisses(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"MISSEDOTHEROTHER",{"%c","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_MISS,nil,nil,nil,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSDODGEOTHEROTHER",{"%c","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_DODGE,nil,nil,nil,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSPARRYOTHEROTHER",{"%c","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_PARRY,nil,nil,nil,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSBLOCKOTHEROTHER",{"%c","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_BLOCK,nil,nil,nil,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSABSORBOTHEROTHER",{"%c","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_ABSORB,nil,nil,nil,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSIMMUNEOTHEROTHER",{"%c","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_IMMUNE,nil,nil,nil,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VSEVADEOTHEROTHER",{"%c","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_EVADE,nil,nil,nil,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForOutgoingPetSpellHitsAndMisses(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGOTHEROTHER",{"%c","%s","%n","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_NORMAL,MikCEH.DAMAGETYPE_PHYSICAL,capturedData.Amount,capturedData.SpellName,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGCRITOTHEROTHER",{"%c","%s","%n","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_CRIT,MikCEH.DAMAGETYPE_PHYSICAL,capturedData.Amount,capturedData.SpellName,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGSCHOOLOTHEROTHER",{"%c","%s","%n","%a","%t"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_NORMAL,capturedData.DamageType,capturedData.Amount,capturedData.SpellName,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGCRITSCHOOLOTHEROTHER",{"%c","%s","%n","%a","%t"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_HIT,MikCEH.HITTYPE_CRIT,capturedData.DamageType,capturedData.Amount,capturedData.SpellName,capturedData.Name);MikCEH.ParseForPartialActions(combatMessage,eventData);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLMISSOTHEROTHER",{"%c","%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_MISS,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLDODGEDOTHEROTHER",{"%c","%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_DODGE,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLPARRIEDOTHEROTHER",{"%c","%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_PARRY,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLBLOCKEDOTHEROTHER",{"%c","%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_BLOCK,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLRESISTOTHEROTHER",{"%c","%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_RESIST,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLLOGABSORBOTHEROTHER",{"%c","%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_ABSORB,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLIMMUNEOTHEROTHER",{"%c","%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_IMMUNE,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"SPELLEVADEDOTHEROTHER",{"%c","%s","%n"});if(capturedData~=nil)then local eventData=MikCEH.GetDamageEventData(MikCEH.DIRECTIONTYPE_PET_OUTGOING,MikCEH.ACTIONTYPE_EVADE,nil,nil,nil,capturedData.SpellName,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForIncomingItemBuffs(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"ITEMENCHANTMENTADDSELFSELF",{"%b"});if(capturedData~=nil)then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_ITEM_BUFF,nil,capturedData.BuffName);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"ITEMENCHANTMENTADDOTHERSELF",{"%n","%b"});if(capturedData~=nil)then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_ITEM_BUFF,nil,capturedData.BuffName);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForBuffFades(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"AURAREMOVEDSELF",{"%b"});if(capturedData~=nil)then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_BUFF_FADE,nil,capturedData.BuffName);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForHonorGains(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"COMBATLOG_HONORGAIN",{"%n","","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_HONOR_GAIN,capturedData.Amount,nil);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"COMBATLOG_HONORAWARD",{"%a"});if(capturedData~=nil)then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_HONOR_GAIN,capturedData.Amount,nil);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForReputationGainsAndLosses(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"FACTION_STANDING_INCREASED",{"%f","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_REP_GAIN,capturedData.Amount,capturedData.FactionName);MikCEH.SendEvent(eventData);return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"FACTION_STANDING_DECREASED",{"%f","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_REP_LOSS,capturedData.Amount,capturedData.FactionName);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForSkillGains(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"SKILL_RANK_UP",{"%k","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_SKILL_GAIN,capturedData.Amount,capturedData.SkillName);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForExperienceGains(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"COMBATLOG_XPGAIN_FIRSTPERSON",{"%n","%a"});if(capturedData~=nil)then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_EXPERIENCE_GAIN,capturedData.Amount,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForKillingBlows(combatMessage)local capturedData=MikCEH.GetCapturedData(combatMessage,"SELFKILLOTHER",{"%n"});if(capturedData~=nil)then
local notificationType=MikCEH.NOTIFICATIONTYPE_NPC_KILLING_BLOW;if((UnitExists("target")and(UnitName("target")==capturedData.Name)and UnitIsPlayer("target"))or(recentlySelectedPlayers[capturedData.Name]~=nil))then notificationType=MikCEH.NOTIFICATIONTYPE_PC_KILLING_BLOW;end
local eventData=MikCEH.GetNotificationEventData(notificationType,nil,capturedData.Name);MikCEH.SendEvent(eventData);return true;end
return false;end
function MikCEH.ParseForPartialActions(combatMessage,eventData)local capturedData=MikCEH.GetCapturedData(combatMessage,"ABSORB_TRAILER",{"%a"});if(capturedData~=nil)then eventData.PartialActionType=MikCEH.PARTIALACTIONTYPE_ABSORB;eventData.PartialAmount=capturedData.Amount;return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"BLOCK_TRAILER",{"%a"});if(capturedData~=nil)then eventData.PartialActionType=MikCEH.PARTIALACTIONTYPE_BLOCK;eventData.PartialAmount=capturedData.Amount;return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"RESIST_TRAILER",{"%a"});if(capturedData~=nil)then eventData.PartialActionType=MikCEH.PARTIALACTIONTYPE_RESIST;eventData.PartialAmount=capturedData.Amount;return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"VULNERABLE_TRAILER",{"%a"});if(capturedData~=nil)then eventData.PartialActionType=MikCEH.PARTIALACTIONTYPE_VULNERABLE;eventData.PartialAmount=capturedData.Amount;return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"CRUSHING_TRAILER",{});if(capturedData~=nil)then eventData.PartialActionType=MikCEH.PARTIALACTIONTYPE_CRUSHING;return true;end
local capturedData=MikCEH.GetCapturedData(combatMessage,"GLANCING_TRAILER",{});if(capturedData~=nil)then eventData.PartialActionType=MikCEH.PARTIALACTIONTYPE_GLANCING;return true;end
return false;end
function MikCEH.GetGlobalStringInfo(globalStringName)local globalString=getglobal(globalStringName);if(globalString==nil)then return;end
if(globalStringInfoArray[globalStringName]==nil)then local searchString="";local currentChar;local formatCode;local argumentNumber=0;local argumentOrder={};local stringLength=string.len(globalString);for index=0,stringLength do
currentChar=string.sub(globalString,index,index);if(formatCode==nil)then
if(currentChar=="%")then formatCode=currentChar;else
if(string.find(currentChar,"[%^%$%(%)%.%[%]%*%-%+%?]"))then searchString=searchString.."%"..currentChar;else searchString=searchString..currentChar;end end
else
formatCode=formatCode..currentChar;if(formatCode=="%%")then
searchString=searchString.."%%";formatCode=nil;elseif(string.find(currentChar,"[%$%.%d]"))then
elseif(string.find(currentChar,"[cEefgGiouXxqs]"))then
searchString=searchString.."(.+)";argumentNumber=argumentNumber+1;local _,_,argumentPosition=string.find(formatCode,"(%d+)%$");if(argumentPosition)then argumentOrder[argumentNumber]=tonumber(argumentPosition);else argumentOrder[argumentNumber]=argumentNumber;end
formatCode=nil;elseif(currentChar=="d")then
searchString=searchString.."(%d+)";argumentNumber=argumentNumber+1;local _,_,argumentPosition=string.find(formatCode,"(%d+)%$");if(argumentPosition)then argumentOrder[argumentNumber]=tonumber(argumentPosition);else argumentOrder[argumentNumber]=argumentNumber;end
formatCode=nil;else
formatCode=nil;end end end
globalStringInfoArray[globalStringName]={Search=searchString,ArgumentOrder=argumentOrder};end
return globalStringInfoArray[globalStringName];end
function MikCEH.GetCapturedData(combatMessage,globalStringName,captureOrder)if(getglobal(globalStringName)==nil)then
MikSBT.PrintDebug("Unable to find global string: "..globalStringName,1,0,0);return;end
local globalStringInfo=MikCEH.GetGlobalStringInfo(globalStringName);local stringFound=false;MikCEH.EraseTable(orderedCaptureData);local tempCapturedData=MikCEH.GetUnorderedCaptureDataTable(string.gfind(combatMessage,globalStringInfo.Search)());if(table.getn(tempCapturedData)~=0)then
for argNum,substituteValue in captureOrder do local captureString=tempCapturedData[globalStringInfo.ArgumentOrder[argNum]];if(substituteValue=="%a")then orderedCaptureData.Amount=captureString;elseif(substituteValue=="%b")then orderedCaptureData.BuffName=captureString;elseif(substituteValue=="%c")then orderedCaptureData.PetName=captureString;elseif(substituteValue=="%f")then orderedCaptureData.FactionName=captureString;elseif(substituteValue=="%k")then orderedCaptureData.SkillName=captureString;elseif(substituteValue=="%n")then orderedCaptureData.Name=captureString;elseif(substituteValue=="%p")then orderedCaptureData.PowerType=captureString;elseif(substituteValue=="%s")then orderedCaptureData.SpellName=captureString;elseif(substituteValue=="%t")then orderedCaptureData.DamageType=MikCEH.GetDamageTypeNumber(captureString);end end
return orderedCaptureData;end
return nil;end
function MikCEH.GetUnorderedCaptureDataTable(c1,c2,c3,c4,c5,c6,c7,c8,c9)MikCEH.EraseTable(unorderedCaptureData);if(c1~=nil)then table.insert(unorderedCaptureData,c1);end if(c2~=nil)then table.insert(unorderedCaptureData,c2);end if(c3~=nil)then table.insert(unorderedCaptureData,c3);end if(c4~=nil)then table.insert(unorderedCaptureData,c4);end if(c5~=nil)then table.insert(unorderedCaptureData,c5);end if(c6~=nil)then table.insert(unorderedCaptureData,c6);end if(c7~=nil)then table.insert(unorderedCaptureData,c7);end if(c8~=nil)then table.insert(unorderedCaptureData,c8);end if(c9~=nil)then table.insert(unorderedCaptureData,c9);end
return unorderedCaptureData;end
function MikCEH.GetDamageTypeNumber(damageTypeString)if(damageTypeString==SPELL_SCHOOL0_CAP)then return MikCEH.DAMAGETYPE_PHYSICAL;elseif(damageTypeString==SPELL_SCHOOL1_CAP)then return MikCEH.DAMAGETYPE_HOLY;elseif(damageTypeString==SPELL_SCHOOL2_CAP)then return MikCEH.DAMAGETYPE_FIRE;elseif(damageTypeString==SPELL_SCHOOL3_CAP)then return MikCEH.DAMAGETYPE_NATURE;elseif(damageTypeString==SPELL_SCHOOL4_CAP)then return MikCEH.DAMAGETYPE_FROST;elseif(damageTypeString==SPELL_SCHOOL5_CAP)then return MikCEH.DAMAGETYPE_SHADOW;elseif(damageTypeString==SPELL_SCHOOL6_CAP)then return MikCEH.DAMAGETYPE_ARCANE;elseif(damageTypeString=="Arcane")then return MikCEH.DAMAGETYPE_ARCANE;end
return MikCEH.DAMAGETYPE_UNKNOWN;end
function MikCEH.GetDamageTypeString(damageType)if(damageType==MikCEH.DAMAGETYPE_PHYSICAL)then return SPELL_SCHOOL0_CAP;elseif(damageType==MikCEH.DAMAGETYPE_HOLY)then return SPELL_SCHOOL1_CAP;elseif(damageType==MikCEH.DAMAGETYPE_FIRE)then return SPELL_SCHOOL2_CAP;elseif(damageType==MikCEH.DAMAGETYPE_NATURE)then return SPELL_SCHOOL3_CAP;elseif(damageType==MikCEH.DAMAGETYPE_FROST)then return SPELL_SCHOOL4_CAP;elseif(damageType==MikCEH.DAMAGETYPE_SHADOW)then return SPELL_SCHOOL5_CAP;elseif(damageType==MikCEH.DAMAGETYPE_ARCANE)then return SPELL_SCHOOL6_CAP;end
return UNKNOWN;end
function MikCEH.GetDamageEventData(directionType,actionType,hitType,damageType,amount,effectName,name)local eventData=MikCEH.CombatEventData;MikCEH.EraseTable(eventData);eventData.EventType=MikCEH.EVENTTYPE_DAMAGE;eventData.DirectionType=directionType;eventData.ActionType=actionType;eventData.HitType=hitType;eventData.DamageType=damageType;eventData.Amount=amount;eventData.EffectName=effectName;eventData.Name=name;return eventData;end
function MikCEH.GetHealEventData(directionType,healType,amount,effectName,name)local eventData=MikCEH.CombatEventData;MikCEH.EraseTable(eventData);eventData.EventType=MikCEH.EVENTTYPE_HEAL;eventData.DirectionType=directionType;eventData.HealType=healType;eventData.Amount=amount;eventData.EffectName=effectName;eventData.Name=name;return eventData;end
function MikCEH.GetNotificationEventData(notificationType,amount,effectName,SpellName)local eventData=MikCEH.CombatEventData;MikCEH.EraseTable(eventData);eventData.EventType=MikCEH.EVENTTYPE_NOTIFICATION;eventData.NotificationType=notificationType;eventData.Amount=amount;if effectName==MANA or effectName==RAGE or effectName==ENERGY then eventData.Amount=amount.." "..effectName;eventData.EffectName=SpellName;else eventData.EffectName=effectName;end
return eventData;end
function MikCEH.GetUnitIDFromName(uName)local unitID;if(uName==playerName)then unitID="player";else
local numRaidMembers=GetNumRaidMembers();for i=1,numRaidMembers do if(uName==UnitName("raid"..i))then unitID="raid"..i;end end
if(not unitID)then
local numPartyMembers=GetNumPartyMembers();for i=1,numPartyMembers do if(uName==UnitName("party"..i))then unitID="party"..i;end end end end
return unitID;end
function MikCEH.PopulateOverhealData(eventData)local unitID=MikCEH.GetUnitIDFromName(eventData.Name);if not unitID then if UnitName("target")==eventData.Name then unitID="target";end end
if(unitID)then local healthMissing=UnitHealthMax(unitID)-UnitHealth(unitID);local overhealAmount=eventData.Amount-healthMissing;if(overhealAmount>0)then eventData.PartialActionType=MikCEH.PARTIALACTIONTYPE_OVERHEAL;eventData.PartialAmount=overhealAmount;end end end
function MikCEH.SendEvent(eventData)if(MikSBT.CombatEventsHandler~=nil)then MikSBT.CombatEventsHandler(eventData);end end
function MikCEH.EraseTable(t)for key in pairs(t)do t[key]=nil;end
table.setn(t,0);end
function MikCEH.EnableEventSearching(pattern)searchMode=true;searchModePattern=pattern;end
function MikCEH.DisableEventSearching()searchMode=false;searchModePattern=nil;end
function MikCEH.SendTriggerEvent(eventData)if(MikSBT.TriggerHandler~=nil)then MikSBT.TriggerHandler(eventData);end end
function MikCEH.GetSearchTriggerEventData(triggerKey,capturedData)local eventData=MikCEH.TriggerEventData;MikCEH.EraseTable(eventData);eventData.TriggerKey=triggerKey;eventData.NumCaptures=table.getn(capturedData);for i=1,eventData.NumCaptures do eventData["CapturedData"..i]=capturedData[i];end
return eventData;end
function MikCEH.GetThresholdTriggerEventData(triggerKey,triggerAmount)local eventData=MikCEH.TriggerEventData;MikCEH.EraseTable(eventData);eventData.TriggerKey=triggerKey;eventData.NumCaptures=1;eventData.CapturedData1=triggerAmount;return eventData;end
function MikCEH.RegisterTrigger(triggerKey,triggerSettings)if(not triggerSettings.Classes or triggerSettings.Classes[playerClass])then
if(triggerSettings.TriggerType==MikCEH.TRIGGERTYPE_SELF_HEALTH)then selfHealthTriggers[triggerKey]=triggerSettings;elseif(triggerSettings.TriggerType==MikCEH.TRIGGERTYPE_SELF_MANA)then selfManaTriggers[triggerKey]=triggerSettings;elseif(triggerSettings.TriggerType==MikCEH.TRIGGERTYPE_PET_HEALTH)then petHealthTriggers[triggerKey]=triggerSettings;elseif(triggerSettings.TriggerType==MikCEH.TRIGGERTYPE_ENEMY_HEALTH)then enemyHealthTriggers[triggerKey]=triggerSettings;elseif(triggerSettings.TriggerType==MikCEH.TRIGGERTYPE_FRIENDLY_HEALTH)then friendlyHealthTriggers[triggerKey]=triggerSettings;elseif(triggerSettings.TriggerType==MikCEH.TRIGGERTYPE_SEARCH_PATTERN)then
for _,triggerEvent in triggerSettings.TriggerEvents do
if(not searchPatternTriggers[triggerEvent])then searchPatternTriggers[triggerEvent]={};end
searchPatternTriggers[triggerEvent][triggerKey]=triggerSettings;end end end
end
function MikCEH.UnregisterAllTriggers()MikCEH.EraseTable(selfHealthTriggers);MikCEH.EraseTable(selfManaTriggers);MikCEH.EraseTable(petHealthTriggers);MikCEH.EraseTable(enemyHealthTriggers);MikCEH.EraseTable(friendlyHealthTriggers);MikCEH.EraseTable(searchPatternTriggers);end
function MikCEH.ParseSelfHealthTriggers()local healthAmount=UnitHealth("player");local healthPercentage=healthAmount/UnitHealthMax("player");for triggerKey,triggerSettings in selfHealthTriggers do
if(healthPercentage<triggerSettings.Threshold/100and lastSelfHealthPercentage>=triggerSettings.Threshold/100)then
local eventData=MikCEH.GetThresholdTriggerEventData(triggerKey,healthAmount);MikCEH.SendTriggerEvent(eventData);if MikSBT.CurrentProfile.LowHealthSound then PlaySoundFile("Interface\\AddOns\\MikScrollingBattleText\\sounds\\LowHealth.mp3");end end end
lastSelfHealthPercentage=healthPercentage;end
function MikCEH.ParseSelfManaTriggers()if(UnitPowerType("player")==0)then local manaAmount=UnitMana("player");local manaPercentage=manaAmount/UnitManaMax("player");local manaDiff=manaAmount-lastSelfManaAmount;if(manaDiff>0and MikSBT.CurrentProfile.ShowAllManaGains)then local eventData=MikCEH.GetNotificationEventData(MikCEH.NOTIFICATIONTYPE_POWER_GAIN,manaDiff.." "..MANA,0);MikCEH.SendEvent(eventData);end
for triggerKey,triggerSettings in selfManaTriggers do
if(manaPercentage<triggerSettings.Threshold/100and lastSelfManaPercentage>=triggerSettings.Threshold/100)then
local eventData=MikCEH.GetThresholdTriggerEventData(triggerKey,manaAmount);MikCEH.SendTriggerEvent(eventData);if MikSBT.CurrentProfile.LowManaSound then PlaySoundFile("Interface\\AddOns\\MikScrollingBattleText\\sounds\\LowMana.mp3");end end end
lastSelfManaPercentage=manaPercentage;lastSelfManaAmount=manaAmount;end end
function MikCEH.ParsePetHealthTriggers()local healthAmount=UnitHealth("pet");local healthPercentage=healthAmount/UnitHealthMax("pet");for triggerKey,triggerSettings in petHealthTriggers do
if(healthPercentage<triggerSettings.Threshold/100and lastPetHealthPercentage>=triggerSettings.Threshold/100)then
local eventData=MikCEH.GetThresholdTriggerEventData(triggerKey,healthAmount);MikCEH.SendTriggerEvent(eventData)end end
lastPetHealthPercentage=healthPercentage;end
function MikCEH.ParseEnemyHealthTriggers()local healthAmount=UnitHealth("target");local healthPercentage=healthAmount/UnitHealthMax("target");for triggerKey,triggerSettings in enemyHealthTriggers do
if(healthPercentage<triggerSettings.Threshold/100and lastEnemyHealthPercentage>=triggerSettings.Threshold/100)then
local eventData=MikCEH.GetThresholdTriggerEventData(triggerKey,healthAmount);MikCEH.SendTriggerEvent(eventData)end end
lastEnemyHealthPercentage=healthPercentage;end
function MikCEH.ParseFriendlyHealthTriggers()local healthAmount=UnitHealth("target");local healthPercentage=healthAmount/UnitHealthMax("target");for triggerKey,triggerSettings in friendlyHealthTriggers do
if(healthPercentage<triggerSettings.Threshold/100and lastFriendlyHealthPercentage>=triggerSettings.Threshold/100)then
local eventData=MikCEH.GetThresholdTriggerEventData(triggerKey,healthAmount);MikCEH.SendTriggerEvent(eventData)end end
lastFriendlyHealthPercentage=healthPercentage;end
function MikCEH.ParseSearchPatternTriggers(event,combatMessage)if(searchMode)then
if(string.find(combatMessage,searchModePattern))then
MikSBT.Print(event.." - "..combatMessage,0,1,0);end end
if(not searchPatternTriggers[event])then return;end
for triggerKey,triggerSettings in searchPatternTriggers[event]do
for _,searchPattern in triggerSettings.SearchPatterns do
if(getglobal(searchPattern)~=nil)then
local globalStringInfo=MikCEH.GetGlobalStringInfo(searchPattern);searchPattern=globalStringInfo.Search;end
local capturedData=MikCEH.GetUnorderedCaptureDataTable(string.gfind(combatMessage,searchPattern)());if(table.getn(capturedData)~=0)then
local eventData=MikCEH.GetSearchTriggerEventData(triggerKey,capturedData);MikCEH.SendTriggerEvent(eventData);break;end end
end
end