aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2020-10-01manually implement Deserialize for AgentDaniel Schadt
The rationale is included in the comment below. The gist is that we want to avoid deserializing Agent<Player> (and others) directly, as that would circumvent the checks. As a small bonus, we now skip the phantom_data field in serialization, as that's just an implementation detail that other consumers shouldn't worry about.
2020-09-29return Outcome::Success if a raid was rewardedDaniel Schadt
If the reward has been given out, we can be 99.9% sure that the fight succeeded, in which case we don't need to do any other convuluted checking. This has the benefit of catching some false-negatives (edge cases in success detection), at the cost of making the detection a bit ... weirder, in the sense that a log's success might now depend on whether it was the first kill in the week or not. However, given that our sucess detection works pretty well overall, I'd say it's worth to catch a few more false-negatives and try to classify as many logs correctly as possible. At least, this does not introduce any false-positives.
2020-09-28fix formattingDaniel Schadt
2020-09-28optionally implement serde::{Des,S}erializeDaniel Schadt
2020-09-28add Log::build_idDaniel Schadt
2020-09-28rename Log::npcs to Log::charactersDaniel Schadt
2020-09-28add Log::gadgetsDaniel Schadt
2020-09-28Merge branch 'boss-encounter-split' into masterDaniel Schadt
2020-09-28update changelogDaniel Schadt
2020-09-28fix formattingDaniel Schadt
2020-09-28implement Display & FromStr for BossDaniel Schadt
2020-09-23more documentation for BossDaniel Schadt
2020-09-23add Encounter::bosses and Boss::encounterDaniel Schadt
Those functions can be used to simplify the special case handling that was done in lib.rs on encounters that have multiple bosses.
2020-09-23re-introduce BossDaniel Schadt
This is now the enum that contains the IDs of the single bosses, like Nikare and Kenut. This means we can do away with the NIKARE_ID and such. The enum is not publicly re-exported, as we re-export Encounter (which is more of a replacement of the old Boss). Special casing still remains (mostly in lib.rs), but we should be able to do away with this now with a more general Encounter::bosses and Boss::encounter methods.
2020-09-23rename Boss to EncounterDaniel Schadt
This is the first step in differentiating between Encounters and Bosses. It sounds a bit weird at first, but there are some events without any bosses (like the River of Souls), and some events which have multiple bosses (like Twin Largos or the kodan strike mission). If we want to support this better, without relying on extra IDs, special casing and constants (like NIKARE_ID), we should differentiate between Encounters and Bosses.
2020-09-23fix docstring typoDaniel Schadt
2020-09-23update changelogDaniel Schadt
2020-09-23use Log::is_boss instead of manually checkingDaniel Schadt
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