baaron4 / GW2-Elite-Insights-Parser

Binary parser for the .evtc files that arcdps generates after a boss encounter. This will generate a .html file where the results can be easily reviewed.
MIT License
133 stars 47 forks source link

Mechanic tracking suggestions (new or changed mechanics) #97

Closed LunusLupus closed 5 years ago

LunusLupus commented 6 years ago

A couple of mechanics that aren't tracked at the moment but could be worthwile to or mechanics that could/should/might be altered:

~~Magic Storm (the breakbar attack). Skill ID is 31419 but it may need a new MechanicType since it's a skill casted by the boss without a target/hitting a player. Suggested marker: "symbol:'star-diamond',color:'rgb(0,255,255)',"~~ implemented.

~~Ghastly Rampage (standing in black during his Rampage attack): Could be tracked via the vulnerability application (ID 738). Exactly 25 Stacks. Suggested marker: "symbol:'circle',color:'rgb(0,0,0)',"~~ implemented.

~~Hit by Time Bomb could be implemented by checking if a person is affected by ID 31324 (1st Time Bomb) or 34152 (2nd Time Bomb, only below 50% boss HP) without being attributed a bomb (ID: 31485) 3000ms before (+-50ms). I think the actual heavy hit isn't logged because it may be percentage based. Nothing can be found in the logs. Suggested marker: "symbol:'circle-open',color:'rgb(255,140,0)'," and change Time Bomb buff attribution to "symbol:'circle',color:'rgb(255,140,0)',"~~

Unbalanced: Does this only trigger on actual Knockdown or also when just reaching 10 stacks and letting the debuff time out? Maybe check is_buffremove==3 to make it accurate? implemented.

~~Knockdown from Icy Patches: Cannot find a combat event for exactly this. There is however a slow application (ID 26766) of exactly 10 seconds to the player that gets knocked down. Maybe could be tracked by something like that. Also, Icy Patches throw snowballs (ID 34447) but I am not sure if that is related as there seems to be no target. Suggested marker: "symbol:'circle-open',color:'rgb(0,0,255)',"~~ implemented.

~~Tracking of Zealous Benediction (Bombs)? Application->(ID 34511) / Hit->(ID 34528) The hit on allies is not registered since it's percentage based, I think. Suggested marker: "symbol:'circle',color:'rgb(255,200,0)'," "symbol:'circle-open',color:'rgb(255,200,0)'," for hits, but unsure how to only track friendly fire hits.~~ implemented. Friendly hits -> investigating

~~Hitting the Construct Core: May need different format since the Skill ID is irrelevant but any combat event with dst_agent of the species ID 16261 (Construct Core) should be shown. Tracking either via the different Construct Core adresses or their instance_id? (every phase it's a new one) Suggested marker: "symbol:'diamond-tall-open',color:'rgb(128,0,128)',".~~ implemented.

~~Bombs: (Xera's Fury) ID 35103 Suggested marker "symbol:'square-open',color:'rgb(250,200,0)'," Maybe interesting for Combat Replay.~~ implemented.

Found 3 more IDs (38170,37768,37775) associated with Shared Agony, but the actually interesting hit might be percentage based and thus doesn't show Solved by finding the 75/50/25% hit debuffs

~~Boon Thief Breakbar Fail (thief Saul): ID 38272. Has no dst_agent so new Type may be required? (same as VG Magic Storm). If CC failed, the value is above the breakbar duration of 4400 and is_activation==5 (5 = reset). Suggested marker: "symbol:'x',color:'rgb(255,0,255)',"~~ implemented.

~~Teleport Breakbar Fail (drunkard Saul): There is a skill named "Off Balance" (ID 37844) that is cast by drunkard Saul. Couldn't really get much more out of it though. Another Skill (ID 37846) behaves similar to the boon thief breakbar skill. CC failed if value is above 2200 (breakbar duration) and is_activation==5. Suggested marker: "symbol:'cross',color:'rgb(255,0,255)',"~~ implemented.

Mind Crush: Not properly detected everytime, sometimes people seem to receive mind crush hit but no weak minded afterwards (partly due to green circle immunity). Suggestion: Only mark as hit if it deals non-zero damage (value>0). implemented.

-River of Souls

Soulless Torrent: ID 47258, struck by the lightning stun from small player bomb circles. Bombshell: ID 48272, Hit by bomber explosion. General

~~Resurrecting : ID 1066 Suggested marker "symbol:'cross-open',color:'rgb(255,0,0)',"~~ implemented.

EliphasNUIT commented 6 years ago

For VG and Gorseval, it'll require a new logic. Deimos Boon Thief/Drunkard too (VG we are interested in the start, this one on the end)

For Sabetha, the two ids you give, what are they? You say that the actual hit is not logged so what do those ids mean exactly?

For Matthias, I don't think it's interesting to track the hit if it's not from friendly fire. The application can be trivially tracked. The snow patch thingy will require a logic similar to gorseval's one. The KD requires investigation, I hope it triggers on the KD else it will be a major pain to implement.

Your mind crush will also require a new logic.

EliphasNUIT commented 6 years ago

For gorseval, I think it's better to have for how much time the vuln is applied, it'll be more generic

LunusLupus commented 6 years ago

On Sabetha, I think there are two hits per Bomb, one that is the normal damage (that the bomber itself also suffers) and an additional HP% related part that is not logged (the big damage only other people suffer). The two IDs are the "normal" damage parts of the two bombs (they have different damage IDs for some reason, but the same application ID (31485)).

I realize most of them need a new logic, otherwise I would have implemented them already ;)

Storm phase KD on Matthias might be quite annoying to implement, yes. Although it should look different if you actually get knocked down iirc. Not sure what my thoughts were about it though. Will try to have a look at it again at some point.

LunusLupus commented 6 years ago

Gorseval Vulnerability lasts exactly 10s.

EliphasNUIT commented 6 years ago

Added icy patch, zealous benediction application, gorseval rampage and corrected Deimos' Mind Crush

LunusLupus commented 6 years ago

I remember now my thoughts on the Storm phase KD: It has two possible combat events, application and removal. The application event always has value 4000 since that's the debuff's duration. The removal event only has a non-zero value if the person was knocked down. So to track it we would need to check if the value is different from 0 and 4000 (or only different from 0 when we only track buff_remove==3 events).

Instead of comparing cbtEvent value and ExpectedValue, maybe allow a function/expression to be passed as a parameter in the Mechanic class instead of just a 'long'. That function would always take the cbtEvent value as parameter and return a boolean (to make the implementation in the Player.cs independant of what is actually checked) but one could change the expression inside to fit the problem at hand (like a range check or comparison to multiple values like in the above case). Is a Func delegate appopriate in that case? Haven't looked into that too much, but it looked promising at first glance. I will play around a bit with that idea later if I find the time.

EliphasNUIT commented 6 years ago

I've added cast related mechanics (deimos adds, vg magic storm) I'll add a PlayerBoonRemoved Logic to manage the storm KD

EliphasNUIT commented 6 years ago

What happens if at knock down the player had stability? We receive the same event? The id is 34367, correct?

LunusLupus commented 6 years ago

ID is correct, but stability isn't checked (like it isn't on gorse and samarog either for example). at least i think it doesn't care about stability.

LunusLupus commented 6 years ago

couldn't we manage storm kd with the new delegate and checking for value unequal 0 and 4000?

EliphasNUIT commented 6 years ago

PlayerBoon only checks applications though, it's better to separate I think

EliphasNUIT commented 6 years ago

should be okay now

LunusLupus commented 5 years ago

Updated for River of Souls

EliphasNUIT commented 5 years ago

Implemented "Hit by Time Bomb" in e98b191195333056299ce918a1952a33bfd5eebe.

EliphasNUIT commented 5 years ago

Just to double check, 31324 and 34152 are buff events and not damage events right? Also what are the nature of the river of souls ids?

LunusLupus commented 5 years ago

For Sabetha: the 31324/34152 is only shown if you hit yourself with it or if it's blocked, invulned, evaded or downs/kills someone, so not reliable (otherwise it's apparently a percentage based hit).

River: 48272 is a damage event (it's the skill id and thus also for the damage event). 47258 is also a damage event. You could check for stuns (ID 872, 2 seconds long) if you wanted to filter out events where the player had e.g. stability.

EliphasNUIT commented 5 years ago

I'm closing this one, let's open another one later if needed.