leonhard-s / auraxium

A high-level Python wrapper for the PlanetSide 2 API.
https://auraxium.readthedocs.io/
MIT License
28 stars 8 forks source link

Note GainExperience quirks in documentation #46

Open eating-coleslaw opened 3 years ago

eating-coleslaw commented 3 years ago

(note: this issue is referring to the documentation at https://auraxium.readthedocs.io/en/latest/api/payloads.html#events, not the github or code documentation)

Some GainExperience events do not look quite how you might expect.

For example, grenade assist experience events (IDs 550-555) unintuitively have character_id = killing player & other_id = player killed. There can be multiple events sent for a single kill if the player killed was afflicted by multiple kinds of grenades. I don't know if there are other kinds of experience events that behave like this.

It'd be useful to have a doc page listing what character_id and other_id pertain to for each experience ID, or at least the weird or non-obvious cases. Perhaps group them by character_id-other_id combinations: killer-killed, player-assisted teammate, no other_id etc.

Could also note somewhere experience events that do not seem to actually get sent.

leonhard-s commented 3 years ago

Hi, thank you for the report!

[...] grenade assist experience events (IDs 550-555) unintuitively have character_id = killing player & other_id = player killed.

So the character_id matches the player that finished the target, not the one that assisted the kill with said grenade? If so, there would be no way to associated grenade assists with the player throwing said grenades.

It'd be useful to have a doc page listing what character_id and other_id pertain to for each experience ID, or at least the weird or non-obvious cases.

That is a great suggestion, particularly since there are many events in the WebSocket GainExperience stream that are not replicated in the REST API at all. It would also provide us a neat searchable list for dynamic NPC IDs like Bastion components (which are bit-shifted compound ID).

However, this requires enumerating all experience IDs (or all active ones used in the current version of the game) and testing what their other_ids are used for. Which is something I unfortunately likely won't have time for in the next two months.

If you come across any other exceptions or experience ID reference (particularly for their other_id fields), feel free to add them below.