arcdps: gw2 dps meter (and general combat metrics tool)

how to install, update, or uninstall
 place d3d11.dll next to gw2-64.exe while the game is not running, optionally can be renamed to dxgi.dll.
 addons and arcdps config folder will be created next to gw2-64.exe after starting the client.
 to update, replace dll.
 to reset, exit gw2 and remove the config folder above.
 to remove, exit gw2 and delete the dll.
 expect to have to update after major game changes.

how to use
 don't be a dick.
 by default, holding alt and shift is required for hotkeys, t is the hotkey for options.
 right click on windows to bring up their independent options (if available).

something isn't working
 check your 'gw2 install dir/addons/arcdps/' folder for an arcdps.log.
 if nothing is drawn make sure the dll is in the right place.
 if the game crashes at character select, some other application is interfering (razer cortex, razer synapse).
 if you get an image modified error, some other application is interfering (eg bitdefender, citrix 22, razer cortex, razer synapse, groupy).
 if windows are drawn but a hotkey isn't working, some other application may have a global hook installed (zoom).
 if you get a file creation error, make sure gw2 has read/write permission to the paths mentioned, or run as admin.
 if you notice an issue in accuracy, compare area skills vs self skills, try and isolate which gear/buff/trait may be causing it.
 if you suspect arcdps as the cause of a crash, remove all addons and chainloads and try to repeat the crash.
 check the troubleshooting pin in the arcdps-issues channel on discord to avoid repeat questions.
 if your issue is not in the pins, describe in detail and attach the complete arcdps or lastcrash or event viewer 'windows error reporting' log.

evtc logging
 pve: starts on player combat enter, boss set by damage event on boss, stops when all players exit combat.
 wvw: starts on player vs player damage, stops when all squad players exit combat.
 map: starts on joining instance type map, ends on leaving to character select.
 npc id can be found via detail window and looking for species in title, or tooltip in target list after attacking.
 logs are written to 'documents/gw2/addons/arcdps/arcdps.cbtlogs/.../date-time.evtc' by default.

extensions and parsing data
 most extensions and links to parsing tools can be found on elite insights' discord.
 place next to gw2 exe or in gw2 install dir/bin64/.
 api example code and readme:
 evtc writing code and readme:

 place translation in gw2 install dir/addons/arcdps/, named arcdps_lang.ini.
 /u/Snowy1794: (chinese simplified).
 /u/bluelovers: (chinese traditional).
 creating a translation:

 area is missing buff extension source (eg. signet of inspiration) - not notified by server.
 area is missing percent-based damage (eg. matthias' hadouken) - not notified by server.
 area is missing some siphon damage (eg. food, sigil, some traits) - not notified by server.
 area is missing healing - not notified by server.
 area is missing hard cc - not notified by server.
 area is missing combo finishers - not notified by server.
 area condition damage uses simulated attribute building from gear, traits, and buffs, on a simulated server tick.
 area condition damage scaling in levels 1 to 79 is different from the game's scaling.
 area condition damage on-skill-use procs on animation start instead of on skill use - not notified by server.
 area breakbar damage missing on some breakbar changes initiated by damageless skills.
 area breakbar damage missing for breakbar changes that cause a breakbar to recharge (does not affect deactivate).
 area strike damage notify bubble may cause some events (eg. deimos) to be out of range - not notified by server.
 area strips ignore last-stack stability, cc and strip indistinguishable.
 area skill activation will only count skills which have animations (no shouts, no instants) - not notified by server.
 area overstack and applied do not include ignored stacks (lower than lowest existing stack) - not notified by server.

 may.02.2023: fixed a rare crash that could happen after changing per-agent historical.
 may.02.2023: added option for duration disconnected/off-map squad member history is kept.
 may.02.2023: replaced ugly buff table buff list arranger with drag and drop.
 may.02.2023: use subgroup 1 colour for buff table as default (not 0/grey).
 may.02.2023: added buff table per-buff option to override calculating uptime as intensity or duration (hit/poll only).
 may.02.2023: added keybind options for metrics, self stats, self skills, default unbound.
 may.02.2023: undocumented fixes (or breaking things).
 mar.28.2023: updated for mar28 game build.
 mar.14.2023: fixed objective achievement suppressing since last game build.
 mar.01.2023: updated for feb28 part 2 (may not be the last).
 mar.01.2023: updated for feb28 (some things may still be broken).
 mar.01.2023: more consistent log saving in wvw.
 mar.01.2023: reduced memory usage for skill lists and buff table.
 mar.01.2023: changed encounter target reset to start of squad combat.
 mar.01.2023: changed active encounter and historical encounter to use same target rules.
 mar.01.2023: fixed loading historical from area log not restoring some statechanges.
 mar.01.2023: fixed initial events missing after boss statreset in some cases.
 mar.01.2023: fixed some buff change events being identified as buff damage.
 mar.01.2023: fixed area stats sliding stats time when excludes not used.
 mar.01.2023: fixed area stats sliding stats time window title.
 mar.01.2023: added buff table sliding time range option for in hit percent, poll percent.
 mar.01.2023: added export e10, statechange CBTS_EXTENSIONCOMBAT.
 mar.01.2023: added export listextension (see api docs) to list extensions.
 feb.18.2023: added option to not auto open crash log.
 feb.18.2023: updated mech inheritance since feb14 game build (best guess).
 feb.18.2023: fixed manual effect for mechanical genius.
 feb.02.2023: fixed an issue where some logs were improperly wvw type.
 jan.31.2023: fixed a crash if formatmessage (update check) fails.
 jan.31.2023: removed dll export addextension, replaced with addextension2.
 jan.31.2023: removed dll export freeextension, replaced with freeextension2.
 jan.14.2023: added buffs table option to sort by profession.
 jan.14.2023: changed profession sort to use elite spec as secondary sorting.
 jan.14.2023: maybe fixed tooltip names with minion text causing size blowout.
 jan.12.2023: fixed secondary npcs not counting to target total.
 jan.12.2023: changed autoupdate to search module list instead of relative to gw2 exe.
 jan.11.2023: maybe fixed wrong boss npc being set in previous update.
 jan.10.2023: maybe fixed multiple instance guard since last few updates (fixes load/save broken configs).
 jan.10.2023: further changed logging boss npc setting/reset conditions.
 jan.10.2023: evtc/api: lognpcupdate dst_agent set to id of agent, flanking 1 if gadget.
 dec.25.2022: fixed downs contribution and wvw logs not generating in last few builds.
 dec.23.2022: fixed updater trying d3d11 instead of original name (will need manual update in this case).
 dec.23.2022: fixed a crash on end-of-life windows systems in previous.
 dec.23.2022: maybed fixed downs contribution not being calculated since previous.
 dec.23.2022: fixed window class check in d3d11.
 dec.23.2022: fixed updater settings being hidden if chainloaded/not proxy.
 dec.23.2022: fixed missing pattern on chinese client.
 dec.23.2022: changed log promote to non-zero damage squad member hit instead of any player hit.
 dec.23.2022: added better url parsing for extension updater (port, schema, default is https 443).
 dec.23.2022: changed updater to launch elevated if parent is elevated (untested).
 dec.23.2022: changed updater to wait until exclusive open on arcdps dll rather than process.
 dec.23.2022: changed updater to give up after ~5s if exclusive access cannot be obtained.
 dec.14.2022: revert keybind loading option not needing map reload (again needs reload).
 dec.14.2022: re-enabled per-elite keybinds, may fail during rapid switching (eg build templates).
 dec.13.2022: removed defunc (maybe temporarily maybe not) per-elite keybind option.
 dec.13.2022: disable auto restart to update button if player is in combat.
 dec.13.2022: improved buff table uptime by hit percent and poll percent during sparse event timings.
 dec.13.2022: further changed boss setting filter to only count player damage out.
 dec.13.2022: added old lions court cm ids to default list.
 dec.13.2022: changed keybind saving and loading to use nov29 client functions.
 dec.13.2022: added option to redirect system channel messages to misc channel.
 dec.13.2022: removed option to apply zero keybinds.
 dec.13.2022: further reduce post-shutdown exception spam.
 dec.13.2022: extension updater will attempt to overwrite even if chainloaded.
 dec.13.2022: extension updater will ignore preceeding https as it is hardcoded for https/443 anyway.
 dec.13.2022: evtc/api: is_flanking for damage changed to range of 1-135 (degrees), where 135 is rear.
 nov.29.2022: maybe fixed log/boss name being temporary name if not decrypted before first hit.
 nov.29.2022: changed boss setting filter to only include outgoing.
 nov.12.2022: added failover to system d3d11 when loaded externally (fix launch crash).
 nov.12.2022: added hit-by-squad before setting agents with markers as targets.
 nov.12.2022: moved multiple client check to after version check.
 nov.12.2022: added hash check to downloaded arcdps file.
 nov.12.2022: fixed temporary extension update not being cleaned up in some cases.
 nov.12.2022: fixed previous trait effect applying twice fix causing some to not be applied at all.