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


how does it work
 arcdps hooks client network data (among other helper functions), making it not user agreement friendly.
 however, in the feb 2017 ama, arenanet has granted 3rd party tools permission to collect and display combat stats via means previously not allowed.
 these are runtime modifications only, no changes are made to files on disk.

how do i install, update, or uninstall it
 save d3d9.dll into 'gw2 install dir/bin64/' while the game is not running.
 config will be created in 'gw2 install dir/addons/arcdps/'.
 to update, replace d3d9.dll.
 expect to have to update after major game changes, be surprised when it's not necessary.
 no official auto update but solutions exist.
 to reset, exit gw2 and remove the config folder above.
 to disable/remove, exit gw2 and rename/delete d3d9.dll.

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

about accuracy
 while two sources of data are provided (area = server strike + simulated buff; personal = chat log), neither source should be considered 100%
 accurate. area stats will be missing damage from on-skill-activation triggers and some siphons, chat log stats will be missing some strikes from
 aoe (guardian gs2) and condition ticks vs shroud. damage in both will always include overkill (can't detect) and healing in chat log will never
 include overheal.

can i chain load another wrapper d3d9.dll
 arcdps will attempt to load d3d9_chainload.dll, and if found, redirect the direct3dcreate9 call to it instead of the system library.
 make sure you are using the 64bit version of wrappers (gemfx, sweetfx).
 you can try the loader found here for overlay compatibility (unsupported).

evtc logging
 pve: starts on all players in combat when npc with recognized id exists nearby, stops when all players exit combat.
 wvw: starts on player vs player damage near self, stops when all players exit combat.
 open world: no.
 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.
 compression requires powershell with compress-archive.

evtc parsing
 /u/Baaron4: GW2-Elite-Insights-Parser/
 /u/blahdot3h: GW2RaidarUploader/
 /u/platinummyr: L0G-101086, simpleArcParse
 /u/sejsel: Log Manager
 evtc code and readme:

realtime api
 place extensions in gw2 install dir/bin64/.
 example code and readme:

 place translation in gw2 install dir/addons/arcdps/, named arcdps_lang.ini.
 /u/Snowy1794: (chinese simplified).
 /u/bluelovers: (chinese traditional).
 /u/ReActif: (french).
 Linus The One.7432: (german).
 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 context - not notified by server.
 area is missing combo finishers - not notified by server.
 area is missing some gadget owners for damage association - 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 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.

it's not working
 make sure visual studio 2015-2019 redistributable x64 is installed.
 check your 'gw2 install dir/addons/arcdps/' folder for an arcdps.log, it will appear after you launch and are in character select.
 if you use other applications or client switches, d3d9.dll may need to be placed next to gw2.exe, do not place it in both locations.
 if there is no log or error, d3d9.dll isn't being loaded. it is up to you to find out where your system is trying to load it from.
 if the game crashes on character select, another application may be interfering (eg d3dgear, razer cortex).
 if you get an image modified error, another application is interfering (eg antivirus, razer cortex).
 if you get a failed to create config error, make sure gw2.exe has read/write permission to the paths mentioned (or run as admin).
 if you are playing on linux/wine, add override(s) in winecfg.
 if you have a problem not listed here, try asking in the arcdps-issues channel on discord.

reporting crashes, bugs, and suggestions
 if you notice an issue in accuracy, take a screenshot of area skill list beside personal chat list, try and isolate which gear/buff/trait is the cause.
 if you suspect arcdps as the cause of a crash, copy the crash log and paste it into an unlisted paste.
 note that arcdps replaces the gw2 crash reporter to prevent crashes from being sent to anet, this does not mean arcdps caused a crash.
 if no log, write down the arcdps build date, read by opening arcdps options and looking at the first line when hovering over the "arcdps - date" text at the bottom.
 describe your issue with the above included in the arcdps-issues channel on discord.

 apr.03.2021: fixed a crash that could happen whenever.
 mar.29.2021: fixed boon table subgroup skipping 0 total values on a subgroup.
 mar.29.2021: fixed boon table subgroup max bar calc.
 mar.29.2021: fixed boon table nominal limit not doing anything (im bad).
 mar.29.2021: fixed historical since logging fix.
 mar.29.2021: changed duration and duration sorted buffs to default to 9 stacks.
 mar.29.2021: added option to limit buff table in minimum to nominal.
 mar.29.2021: api: added cbts_statreset, to match ui stat reset like dhuum.
 mar.28.2021: renamed buff table tab option to show/hide the tab text, moved to display.
 mar.28.2021: better indicate tabs in buff table.
 mar.27.2021: added nicer ui to edit buff list to buff table.
 mar.27.2021: added option to name the two buff table tabs.
 mar.27.2021: added text buttons to buff table to quicker toggle between both tabs.
 mar.27.2021: clicking on current tab toggles between buffs out and in.
 mar.27.2021: added buff table option to limit buffs in bar drawing to 1target nominal.
 mar.27.2021: updated default buff lists.
 mar.27.2021: removed existing buff_table ini keys.
 mar.27.2021: fixed detail window indexing since previous.
 mar.27.2021: fixed buff window player max bar using squad max since previous.
 mar.27.2021: fixed player, agent, and guild name in evtc path since previous.
 mar.27.2021: fixed a heap corruption bug (ag0).
 mar.27.2021: fixed invalid handle access (ag0, may fix low resource/fps freeze).
 mar.27.2021: further reduced main thread load from arcdps.
 mar.27.2021: strings: bottom of common.
 mar.24.2021: fixed metrics drawing in some cases.
 mar.24.2021: fixed short freeze on writing evtc logs on some systems.
 mar.23.2021: fixed a possible crash on load.
 mar.23.2021: updated for mar23 game build maybe.
 mar.23.2021: added area stats display option to draw prof icons instead of text (default enabled).
 mar.23.2021: added buff table display option to draw prof icons instead of text (default enabled).
 mar.23.2021: custom prof icons can be loaded by creating an "icons" folder in config, see option tooltip.
 mar.23.2021: changed area stats title format to 32 chars (from 16).
 mar.23.2021: fixed area stats adv sort from double counting if show self top was enabled.
 mar.23.2021: fixed area stats title bar variables when multiple windows open.
 mar.23.2021: added subgroup totals option to buffs table.
 mar.23.2021: changed metrics window to format string (like area stats).
 mar.23.2021: added metrics red highlight option for ping and tick rate.
 mar.23.2021: fixed exceptions on attribute calc since previous.
 mar.23.2021: changed map load timeouts to wait until self is loaded.
 mar.23.2021: changed squad combat to only use strike damage (instead of strike and buff).
 mar.23.2021: fixed (removed) players squad stat reset on player combat enter.
 mar.23.2021: internal changes to reduce locking in main thread, removed event buffer limit.
 mar.23.2021: api: eligible statechanges will appear in local combat callback (self only).
 mar.23.2021: strings: fonts now loads all glpyhs automatically (missing will still show as ?).
 mar.23.2021: strings: added to bottom.
 feb.25.2021: fixed a crash when clicking on colour name.
 feb.25.2021: fixed details window line graph positioning, adjusted scaling.
 feb.25.2021: updated text on click modifier, must unbind shift as a mod.
 feb.25.2021: hotkeys automatically un-hide (for api, if return umsg=0).
 feb.25.2021: adv style reset button now resets all style and colour vars.
 feb.25.2021: adv style use colour picker instead of text.
 feb.25.2021: adjusted some style defaults (min height, border).
 feb.25.2021: set minimum alpha to 0.05.
 feb.25.2021: added manual checkbox for window positioning (reduce confusion).
 feb.25.2021: strings: end of as common (manual).
 feb.23.2021: updated for feb23 game build maybe.
 feb.23.2021: fixed area stats toggle via hotkey when options open.
 feb.23.2021: changed to process all hotkeys with one keypress (eg bind multiple area stats).
 feb.23.2021: added detection for buff effect buff conditions to sim.
 feb.23.2021: out-of-date addons will fail to load with the imgui version mismatch error.
 feb.23.2021: window positions will be reset.
 feb.23.2021: imgui appearance options will be reset.
 feb.23.2021: evtc/api: updated imgui to 1.80. see changes to arcdps_exports and get_init_addr in example cpp.
 feb.23.2021: evtc/api: treat buff remove events where the buffs origin was a squad member as squad event.
 feb.23.2021: evtc/api: added buff conditions to cbts buffformula (float[2] from src_instid, see readme).
 feb.05.2021: fixed main area stats toggle hotkey not applying to wvw.
 feb.04.2021: updated imgui180 dll and combatdemo cpp for notes 2/3 above.
 feb.03.2021: fixed @6 only working when exlcudes set.
 feb.03.2021: reset area stats keybinds to empty to prevent collision with squad markers.
 feb.02.2021: probably updated for feb02 game build again.
 feb.02.2021: probably updated for feb02 game build.
 feb.02.2021: copied some player name colour options from buffs to area stats.
 feb.02.2021: above changed area stats to properly use CCOL_CHCLI_NAME_FRIEND for friendly names.
 feb.02.2021: added option to area stat style options to rename it in arcdps options.
 feb.02.2021: adjusted keybind "input" to allow for numbers 0-9.
 feb.02.2021: removed old area stats temporary hide keybind.
 feb.02.2021: added keybinds to toggle each area stat window (default 0-9).
 feb.02.2021: added @6 to area stat header format for current adv stat total.
 jan.04.2021: fixed breakbar exlcudes to properly use vs instead of from.
 jan.04.2021: removed unecessary extension load warnings.
 jan.03.2021: reduced thread health check aggressiveness.
 jan.02.2021: fixed an oops with evtc logging in previous.
 jan.02.2021: update area stats time on boss npc removal or death.
 jan.02.2021: added override for proc chance var on food, assumed to be siphon.
 jan.02.2021: fixed item type enum after some game update.
 jan.02.2021: fixed flicker in area stats when panel-specific excludes were used.
 jan.02.2021: set on buff remove siphon target to last hit target (lags one hit behind actual).
 jan.02.2021: evtc: is_shields in buffremove single will be set to 1 if active (like buffapply).
 jan.02.2021: evtc/api: buffremove on cat 0 buffs (stability) duration remaining treated as intensity.
 jan.02.2021: api: added dll export e8 to log str to extension tab in log window (e8(char* str)).
 jan.02.2021: api: table, name, and build are all copied to arcdps-allocated space and can be freed after init.
 jan.02.2021: strings: end of as common (extension).

 x64: current