aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-09-23fix lintsDaniel Schadt
2020-09-23add test logs for Sunqua PeakDaniel Schadt
2020-09-23add Sunqua Peak/Ai ID and analyzer logicDaniel Schadt
2020-09-21fix formattingv0.4.3Daniel Schadt
2020-09-21bump version to 0.4.3Daniel Schadt
2020-09-21fix CM detection for new Skorvald logsDaniel Schadt
The Sunqua Peak patch released on 2020-09-15 shifted fractals around (notably moving the old CMs to 98 & 99), which messed with the boss health in those fractals. As a result, the Skorvald CM detection (which relied on the health of Skorvald being higher in CM) was broken. This patch introduces a fallback mechanism which relies on the split-phase anomalies, as those are still different in the CM. It should be 100% accurate, as long as players actually make it to the split phase. Before that, we currently have to assume that the fight is non-CM, even if it's a log from a CM wiping before first split phase. There is some discussion in the Elite-Insights Discord here[1] about this change. [1]: https://discordapp.com/channels/456611641526845473/718866714527399976/755914037354692648
2020-09-15amend changelogDaniel Schadt
2020-09-15fix logs with Claw of the Fallen IDDaniel Schadt
2020-08-28bump version to 0.4.2v0.4.2Daniel Schadt
2020-08-28remove leftover debug outputDaniel Schadt
Since downstream applications will also print this, we should remove it.
2020-08-17fix formattingv0.4.1Daniel Schadt
2020-08-17bump version to 0.4.1Daniel Schadt
2020-08-17add Log::errors convenience methodDaniel Schadt
2020-08-04fix endianness for CBTS_ERRORDaniel Schadt
Otherwise the text will be garbled (reversed and probably cut short).
2020-07-24bump version to 0.4.0v0.4.0Daniel Schadt
2020-07-24include analyzer output in loginfo exampleDaniel Schadt
2020-07-24Merge branch 'analyzers'Daniel Schadt
This brings in proper fight outcome detection, which is nice and needed for downstream applications (raidgrep/ezau). Furthermore, this cleans up the CM detection a bit by moving away from the "descriptive" trigger way to just having dynamically dispatched methods for every log.
2020-07-24mention loginfo example in READMEDaniel Schadt
2020-07-24add some testing for analyzersDaniel Schadt
2020-07-24more documentationDaniel Schadt
2020-07-24re-export Outcome as wellDaniel Schadt
2020-07-23more documentation & adjustmentsDaniel Schadt
2020-07-23update changelogDaniel Schadt
2020-07-23remove default implementation of Analyzer::outcomeDaniel Schadt
This was only there to make it easier to gradually implement the outcome method for the individual bosses. Now that each boss has a proper outcome, we no longer need the default method - in fact, I'd rather make sure the compiler tells us if we forget to implement this method in a new analyzer.
2020-07-23implement strike AnalyzersDaniel Schadt
2020-07-23implement Analyzer::outcome for fractalsDaniel Schadt
2020-07-23make Log::boss_agents/is_boss work on Largos TwinsDaniel Schadt
Otherwise, this would only return Nikare, and not Kenut.
2020-07-23implement Analyzer::outcome for wing 7Daniel Schadt
2020-07-23implement Analyzer::outcome for wing 6Daniel Schadt
2020-07-23implement Analyzer::outcome for wing 5Daniel Schadt
2020-07-23implement proper outcome for w1-w4Daniel Schadt
It turns out that `was_rewarded` is a pretty bad heuristic if you ever kill a boss a second time per week (basically, was_rewarded=false does not imply that the boss was unsuccessful). Therefore, we need a proper detection of when a fight failed and when a fight succeeded. This is the first batch that implements this as part of the Analyzer trait for bosses of wings 1 to 4.
2020-06-28add a small example as examples/loginfo.rsDaniel Schadt
You can run it with cargo run --example=loginfo -- path/to/log
2020-06-28start implementing analyzersDaniel Schadt
It turns out that the different encounters do require quite some encounter-specific logic, not only to determine whether the CM was activated, but also to determine whether the fight was successful, the duration of the fight, later the phases, ... Wrapping all of this in pre-defined "triggers" (like CmTrigger) feels like it will be a bit unfitting, so with this patch we have introduced the evtclib::Analyzer, which can be used to analyze the fights. Currently, the whole CM detection logic has been moved to this new interface, and soon we also want the success-detection logic in there. The tests pass and the interface of Log::is_cm is unchanged.
2020-06-12update changelogDaniel Schadt
2020-06-12add Log::spanDaniel Schadt
2020-06-12implement CBTS_TAGDaniel Schadt
2020-05-25bump version to 0.3.3v0.3.3Daniel Schadt
2020-05-21fix formattingDaniel Schadt
2020-05-21ignore unknown statechanges in parse_eventsDaniel Schadt
The reason why we "unwrap" the error so late is because we want to recover from this error, which means the file pointer has to be at the right position. Unwrapping early would leave the pointer in the middle of an event, which is not what we want. If we want to bullet-proof this, it might be good to read the whole event first into a buffer, and then read from that buffer instead.
2020-05-19implement Error statechangeDaniel Schadt
2020-05-19add CbtStateChange::UnknownDaniel Schadt
This is not defined by arcdps, but we'd have to adjust evtclib every time a new statechange is introduced. This way, we stay forward-compatible.
2020-05-19add Attribute and BuffCategory enumsDaniel Schadt
2020-05-19add BreakbarState, BreakbarPercent & Error statesDaniel Schadt
2020-05-16add a sabir cm log for testingDaniel Schadt
The sacred texts have been received and can now be used to make sure we detect the Cardinal Sabir Challenge Mote correctly!
2020-05-14add tests for CM detectionDaniel Schadt
Currently, I seem to not have a Cardinal Sabir CM log though.
2020-05-12bump version to 0.3.2v0.3.2Daniel Schadt
2020-05-12update changelogDaniel Schadt
2020-05-11fix formattingDaniel Schadt
2020-05-11add Display implementation for gamedataDaniel Schadt
This is something that a lot of applications will probably have to implement anyway, so we might as well provide it and do it within Rusts standard traits. This does not provide localization, but it uses the English names, which should be good enough for most cases. Since we provide FromStr for those classes as well, it makes double-sense to add Display. However, not all cases are currently reversible ("Cairn the Indomitable" vs "Cairn"), although the status quo seems fine for now (most people type Cairn, but when outputting we can use the full name).
2020-05-10add Cairn CM detectionDaniel Schadt
The given buff is the Countdown effect that each player has: https://wiki.guildwars2.com/index.php?title=Countdown The logic is from GW2-Elite-Insights-Parser (Cairn.cs, IsCM), but we count this as a buff instead of a skill.