This allows the additional OFF mode which has the client manage its own
frame rate target without the use of vsync. On lower end systems which
have a hard time delivering a frame in the vsync interval this can give
a noticible performance improvement since it doesn't stall the cpu
waiting for the next vblank when a frame is skipped
Prevents spec counter resetting when attacking a skeleton hellhound spawned by Vet'ion. The hellhounds are spawned at 50% HP, and are required to kill to continue the fight, so the player will continue fighting Vet'ion after they are killed.
It's possible that a player may want to use a spec against the hellhounds, but I'm not aware of any reason for it.
This lets plain latin-character filters to match messages with accents
and diacritics which are not easily typed on all keyboard layouts.
Co-authored-by: Jordan Atwood <jordan.atwood423@gmail.com>
This hasn't worked in awhile since it was assining the scroll value to the
wrong variable. Now we are computing the scroll in onScriptPreFixed for
[proc,bankmain_finishbuilding], so it is no longer necessary here.
With tag tab tab or "Remove tab separators", the scrollbar height needs to be
adjusted to account for either many tag tabs (which requires scrolling to see)
or the hiding of the tab separators. This is because we artifically filter the
bank results without keeping the bank in searching mode, causing the vanilla
code which usually computes the scroll height to be incorrect.
The existing code does this by manually invoking [proc,update_scrollbar] later
with the recomputed scroll height. Now that invokeLater runs next tick and not
next frame, this leaves several frames with the scrollbar the incorrect size.
The desired scroll height is passed to [proc,bankmain_finishbuilding] in
argument int12, so instead we recompute the scroll height and overwrite the
script argument prior to execution.
From the opengl wiki:
Recent GL drivers implement a new WGL/GLX extension called EXT_swap_control_tear.
This extension brings "adaptive vsync" as featured in modern gaming consoles to the PC.
Adaptive vsync enables v-blank synchronisation when the frame rate is higher than the
sync rate, but disables synchronisation when the frame rate drops below the sync rate.
Disabling the synchronisation on low frame rates prevents the common problem where the
frame rate syncs to a integer fraction of the screen's refresh rate in a complex scene.
If the EXT_swap_control_tear extension is not supported, JOGL uses the absolute value
as the swap interval, 1, the same as before.
Shortly after logging in there several frames without a tli, and so no scene is
rendered on them. Since we glClear the entire buffer each frame and re-render
the most recent scene draw to emulate the vanilla effect of not painting over
the viewport, the viewport offset x/y values at the time we draw the frame may
be -1 due to that frame not having the scene rendered. Store the viewport
offsets at the time of the most recent scene draw and use them for each
subsequent frame.
With invokeLater() now running next tick instead of next frame, with uncapped fps there can be several frames with the bank pin visible in the chatbox. This blocks the keyboard input on this tick, preventing having to clear the chatbox later.