Orginally the only way to form a party was via Discord invites. This has
changed semi-recently to allow sharing party ids instead.
The Discord invite system is finnicky since it doesn't work unless
Discord is detected, doesn't work right with multiple clients, or
multiple Discords. And, discord_rpc is deprecated without a suitable
replacement.
This changes the party system to instead always require sharing party
ids instead.
It can't be assumed the array passed to setModIcons is still correct in
the async image callbacks. Instead, fetch the current modicons array in
the callback and use that.
The inventory can be moved pre-interface tick by the tli subchange
listener, as well as post-our client tick event from script events
running.
This makes it difficult to correctly and generically move the interface,
since it would have to be moved pre-interface tick and also pre-frame.
Currently the code moves the interface pre-frame, which looks okay, but
since it is ticking the interface when it is a different position,
clicks on it do not work correctly.
We do not have events for pre-interface tick, so use forced position to
reliably set the position
Hovered overlay already accounts for render order, with the exception of
the vanilla WidgetOverlays which are drawn prior to any of our overlays
being drawn. Instead we order them in render-order, which works for the
dynamic-layer ones.
The minimap must be top_right so that our overlays layout around it
correctly, which currently causes it to be picked up first over dynamic
overlays due to the way overlay sorting is done.
Ctrl + backspace is an overwhelmingly common keybind for clearing the
word before the cursor. Meanwhile, clearing the current line is not as
common a keybind, so having an unset default is more sensible here for
users to decide for themselves what keybind they would prefer.
because WidgetOverlays in their default position render in the vanilla
position it can cause other overlays to occlude previous overlays when
they should not