ArtOfShred / LuiExtended

Lui Extended addon for ESO
http://www.esoui.com/downloads/fileinfo.php?id=818
Other
36 stars 21 forks source link

Alert Table #142

Closed psychaos999 closed 4 years ago

psychaos999 commented 4 years ago

Hi, I hope not to be out of line here, but why did you stop adding events to Alert Table? Too much work maybe? I'd like to help but Id need a little how to if u are interested

ArtOfShred commented 4 years ago

Not out of line at all!

So let me just give a rundown to give you a better understanding of how the alerts work.

In order to make an alert I have to first find the ability that is being cast/used, then measure the cast time - for many abilities it's as simple as it has a 2 sec cast time easily available from the API - but on the other hand MOST channeled abilities npcs use in the game have a channel time & then a hidden animation time of some sort. For those I actually have to time the start of the event with the end of it in MS to get a good idea how long the cast is to implement. Also some abilities, oddly have like a cast, that then transitions into another cast to complete the ability, a good example being Crocodile tail swipes (actually most tail swipe abilities for some reason).

I have to test to see what types of mitigation work on the ability whether it can be blocked, block staggered, dodged, only avoided, interrupted, or is unmitigable.

Then I have to assign a value from 1-3 for it on the priority system - this is for sorting if players turn off lower priority alerts & for sound selection: 1 = Bosses (Trial, Dungeon, etc) 2 = Elite / Quest Boss 3 = Normal Mob

I have to add the CC type if it's a crowd control effect so the icon colors relative to the type of CC it applies if that's the case.

I also have to insert the event type, which is most often just ACTION_RESULT_BEGIN, but some events are different.

Some abilities target the player and easily work, others that don't I have to specify to set "eventdetect = true" for the ability or "auradetect = true" if we track a buff aura that appears.

And the last thing is setting an icon or proper name in a lot of cases, as many abilities have separate effects for the actual cast itself and whatever CC/Damage etc they apply. Alot of those casts have no icon or an improper name for the ability.

It's a pretty decent sized checklist to go through for each ability, nothing too complex for each one but rather time consuming. Unfortunately there is no easy way to pull any of this data from the API and it requires manually processing.

The biggest reason I haven't done much recently though is I haven't been working on LUIE much (although that's picking up again now - so maybe expect to see some new stuff soon).

ArtOfShred commented 4 years ago

Also I certainly wouldn't mind anyone sending me code for alerts for abilities, even with the icon/name changes missing, as it saves me a little time. I'd only have to test the abilities to verify them and that takes less time than plugging it all in from scratch.

ArtOfShred commented 4 years ago

Pasting the updated comments I put into the AlertsTable.lua here for reference with an example table entry:

-- SET A PRIORITY
-- priority = 1-3: (1 = ARENA/DUNGEON/TRIAL, 2 = ELITE NPC/QUEST BOSS, 3 = NORMAL NPC)

-- MITIGATION ALERTS
-- block = true -- Show a Block Alert
-- bs = true -- Add indicator for Block Stagger to effect
-- dodge = true -- Show a Dodge Alert
-- avoid = true -- Show an Avoid Alert
-- interrupt = true -- Show an Interrupt Alert
-- unmit = true -- Show an unmitigable alert

-- MISC ALERTS
-- power = true -- Show a power alert
-- summon = true -- Show a summon alert
-- destroy = true -- Show a destroy alert

-- RESULT / FILTERING
-- result = ACTION_RESULT_TYPE -- The action result for combat events to detect
-- eventdetect = true -- Detect combat events without a source or target for abilities not directly targeting the player
-- auradetect = true -- Detect aura application rather than using targeting info - can omit result field if this is true

-- SOURCE NAME MODIFICATION
-- fakeName = string -- Set this name for the source
-- bossName = true -- Use the name of the current BOSS target frame for this ability source if possible
-- bossMatch = NAME -- If there are multiple bosses, look for this name and use it as the source if possible

-- CC TYPE
-- cc = STUN/DISORIENT/FEAR/STAGGER/SILENCE/SNARE/UNBREAKABLE -- If applicable set the CC type of this effect here

-- DURATION
-- duration = timeMs -- Set the duration in MS here for the cast IF applicable, power/summon/destroy alerts shouldn't use durations, and very long events can omit duration as well (long ground effects are a good case for this)

-- OTHER MODIFIERS
-- refire = "x" -- refire duration
-- skipcheck = true -- display on any event fired rather than just event started -- TODO: DEPRICATE THIS
-- ignoreRefresh = ignores refresh event here

 [63157] = { block = true, dodge = true, priority = 2, bs = true, result = ACTION_RESULT_BEGIN, duration = 1500, cc = STUN }, -- Heavy Blow (Justice Guard 1H)
ArtOfShred commented 4 years ago

And closing this for now, feel free to message me on esoui or artofshred@artofshred.net to continue the conversation.