# ETJump 3.4.0

## Breaking
- __etj_viewPlayerPortals__ now toggles drawing usable or all portals
  - a portal is considered usable in the following scenarios:
    - the portal is yours
    - __portalteam__ is set to 1 and the portal is yours or from a fireteam member
    - __portalteam__ is set to 2 (anyone can use anyone's portals)

## Added
- support for client side predicted portalgun teleports
  - disabled by default due to the potential for PVS-related visual bugs
  - __g_portalPredict__ server cvar toggles predicted teleports (votable by clients)
    - voting can be disabled with __vote_allow_portalPredict__
- __portalpredict__ worldspawn key to force predicted portal teleports for a map, overrides server cvar setting
- "Quick connect" window in main menu to store up to 5 servers for easy connecting
  - can be disabled with __etj_drawQuickConnectMenu__ cvar
  - servers are stored in __quickconnect.dat__ file
- short animation when portalgun portals are spawned
- __target_ft_setrules__ entity - set fireteam rules for activator's fireteam
  - bypasses worldspawn keys that normally restrict setting rules for fireteam
- __noftsavelimit__ and __noftteamjumpmode__ worldspawn keys to disallow setting fireteam savelimit and teamjump mode
- __fireteam countdown__ command to perform a countdown in fireteam chat
  - __fireteam countdown [seconds (1-10)]__, if __seconds__ isn't given, value is taken from __etj_fireteamCountdownLength__ cvar value
- __overbounce_players__ worldspawn key to control overbounces performed on top of other clients
- __demoQueue__ command - automatically play back all demos from a directory 
  - __etj_demoQueueDir__ cvar sets sub-directory inside __demos__ to play demos from, can be empty to play from __demos__ directory directly
- __etj_logCenterPrint__ cvar to log center prints to console
  - consecutive, identical messages are not logged multiple times
  - several spammy prints (e.g. dynamite arming) and save messges are not logged
- __etj_spectatorInfoMaxClients__ cvar to limit visible players in spectator info list (__-1__ for no limit)
  - a hint text will be displayed if the number of spectators exceeds the limit
- __etj_spectatorInfoDirection__ cvar to toggle drawing spectator list bottom-up
- __tracker_not_eq_any__ and __tracker_not_eq_all__ keys to __target/trigger_tracker__
  - old __tracker_not_eq__ is now deprecated and functionality is provided by __tracker_not_eq_any__
- __target_spawn_relay__ entity - execute actions on player respawn
- __etj_useExecQuiet__ cvar to execute map/team-specific autoexec configs using __execq__ command
  - __execq__ executes a config "quietly" (no console print), supported by ET: Legacy and ETe
- __etj_hideFlamethrowerEffects__ to hide the visual effects of flamethrower
- __etj_onDemoPlaybackStart__ cvar to execute commands on first frame of demo playback
- __etj_noMenuFlashing__ cvar to disable the lightning effect on the menu background shader
- __etj_portalDebug__ cvar to draw portal debug bounding (requires cheats)
- __noise__ key support for __weapon_portalgun__ to override default item pickup sound
- __dumpEntities__ command to dump entities from the current map to a file
- fixed __.arena__ files for certain maps in the mod pk3

## Changed
- drawspeed2, CGaz, snaphud & strafe quality meter are now interpolated by default
  - interpolation can be disabled per element with __etj_HUD_noLerp__ cvar
- duplicate rank strings are now hidden from __records__ output
- __records__ now shows total number of records for a run if all records don't fit on a single page
- spectator list now draws active clients before inactive ones
- static __dlight__ entities are now fully client sided
  - a dlight is considered static if it doesn't have __scriptname__, __targetname__ or __spawnflags__ set
  - client side dlights are limited to 1024 per map (server side limit is 16)
  - renderer is still limited to max 32 dlights in a rendered scene
- portalgun portals can no longer be overlapped in some scenarios if __portalteam__ is enabled
  - __portalteam 1__ - fireteam members cannot overlap portals
  - __portalteam 2__ - nobody can overlap portals
  - when joining a fireteam with __portalteam 1__, your portals are reset to prevent potential overlapping
- spectators can now use the fireteam general vsay menu
- reworked timerun high ping interrupt to work based off command time delta (600ms) rather than ping
- __g_dailyLogs__ naming format was changed to use ISO 8061 date standard
  - admin logs now have a __-admin__ suffix rather than a prefix
- __page__ parameter for __records__ is now capped such that empty pages won't be printed
- __viewpos__ now prints viewangles for all axes
- __setviewpos__ can be used without giving angles as arguments, using current view angles

## Removed
- location grid system - team/ft chats no longer display coordinates
- __g_portalDebug__ cvar

## Fixed
- __weapon_portalgun__ was missing a cursorhint for pickup
- HWID generation on Linux was leaking a socket
- __target_savereset__ print contained a whitespace character at the beginning of the message
- __etj_autoSpec__ ignored jump and crouch when determining if a player was idle
- improved performance of some HUD elements when spectating or playing back demos
- __target_laser__ could not deal damage to client 0
- __target_rumble__ no longer crashes the server if re-triggered again before the previous rumble sequence had ended
- client side coronas could be set to wrong color in some scenarios
- scripted coronas were handled incorrectly on client rather than server
- quitting during __etj_ad_stopDelay__ period after a timerun was finished no longer crashes the game
- chat replay could write a null JSON object in some scenarios
- player's saves were sometimes not restored correctly when reconnecting to a server
- potential crash when invalid vote argument was given
- __players__ command would crash the server with certain player names
- "Unknown command uiChatMenuOpen" was printed to console when disconnecting via in-game menu
- __portalteam 1__ was not working and acted like __portalteam 2__
- __func_portaltarget__ created portals with incorrect size when __portalsize__ key was used
- __KEYS__ menu button in __LAGOMETER__ settings menu now works
- centerprint when an objective was auto-returned due to timeout was missing for Allied objectives
- portalgun trails and debug bboxes are now correctly colored green/yellow for other's portals
- overbounce detector now works on top of other solid players
- potential crash when hitting the 16th checkpoint of a timerun and checkpoint drawing was enabled
- firing with __+attack2__ didn't set the players firing state correctly, causing visual bugs with some weapons
- scoreboard inactivity now correctly works if the server is using __sv_level/serverTimeReset__
- console no longer prints a warning when trying to vsay current class as a spectator