# ETJump 3.1.0

## Added
- Rock The Vote system - vote the next map from a random selection of maps
  - __callvote rtv__ or __!rtv__ admin command to call the vote
  - automatic RTV mode - server will call RTV every N minutes, can be voted on/off (__g_autoRtv__)
  - __2 - 9__ maps can be in a vote, controlled by __g_rtvMaxMaps__
- no-noclip area support with __surfaceparm donotenterlarge__
  - __etj_drawNoclipIndicator__ controls drawing of noclip area indicator
- __etj_checkpointsPopup__ to display checkpoint times briefly on screen after a checkpoint is hit
- custom vote editing via admin commands
- __etj_autoPortalBinds__ cvar to automatically bind __weapalt__ to __+attack2__ and back when switching to/from portalgun
- __etjump_game_manager__ entity - entry point for mapscripting in maps that don't support mapscripting otherwise
  - provides __etjump_manager__ script block for maps with no __script_multiplayer__ or an entity with __scriptname__ set
- __wm_announce_private__ script action for doing per-client announces via mapscript
- support for printing activators name with __%s__ in __wm_announce/wm_announce_private__
- __nowallbug__ worldspawn key to prevent acceleration while stuck in a wall
- __target_portal_relay__ entity - activate targets based on players shot portal count
- __etj_fixedCushionSteps__ to play proper fall step sounds on __surfaceparm nodamage__
- __ob_list__ to display saved OB watcher coordinates
- __noise__ & __volume__ key support for __target_remove_portals__
- __spawnflag 2__ for __target_remove_portals__ to fire targets when portals are removed
- __customvotes__ alias for __listinfo__
- __readCustomvotes__ command to read customvote file (useful after manual editing)

## Changed
- __etj_drawCGaz__ is now a bitflag cvar and allows drawing both CGaz HUDs simultaneously
- timerun start now only clears saves made during a timerun
  - any save slots made outside of a timerun will remain valid, loading will interrupt the timerun
  - backups are cleared of any backups made from timerun saves, and valid slots are pushed to the front of the queue
- __players__ command output lists the game engine used by each client
- timeruns cannot be started if __pmove_fixed 0__ was set after spawning
  - does not apply to timeruns which do not force __pmove_fixed 1__
- __map__ parameter in __records__ is no longer case sensitive, and supports partial matching
- inactive specators draw semi transparent in spectator list
- portalgun portals of spectated player are now draw with normal portal colors instead of "others" colors
- __snaps__ value in __players__ output is colored red if it's less than __sv_fps__
- improved __!seasons__ command output
  - season list is grouped to active, upcoming and past seasons
  - __Default__ season is no longer displayed
  - start and end date format changed for better legibility
- votes are canceled if the caller disconnects
- most OB watcher prints are now popups instead of console prints
- __target_remove_portals__ no longer displays a print if no portals were removed
- replay menu strips color codes from demo filenames

## Removed
- __target_printname__ entity, all functionality is included in __target_print__
- __trigger_multiple spawnflags 512/2048__
  - __spawnflag 512__ never provided anything unique, it was just a shorthand for setting __wait__ to one server frame
  - __spawnflag 2048__ is now default behavior for all triggers
- cleaned up several unused server cvars

## Fixed
- __cg_uinfo__ was not set correctly on init on 64-bit ETe clients on Windows
- entering wounded state was not possible during timeruns (broke the timerun in __2weeks__ for example)
- team/fireteam chat closing parenthesis/bracket was affected by player name colors
- __records <map> <run>__ failed to get results if __map__ was partially matching another map
- jump speeds were truncated instead of rounded, now matches other speed displays
- portal shader size did not match the actual portal size properly
- crash with __shooter_grenade__ entity
- __backup__ queue broke on initial save to a specific save slot (__save 0/1/2__)
- casting multiple votes was possible by reconnecting
- client vote info (e.g. re-vote counts) were not reset when a vote failed/was canceled
- __ob_save [name]__ and __ob_load [name]__ were not working
- OB watcher was ignoring surfaces that don't allow overbounces
- OB watcher coordinate prints used player origin instead of player feet as Z coordinate
- performance optimization for some HUD elements in spec/demo playback, up to ~30% faster in some scenarios
- crash with __await__ command when __frames__ argument was out of range
- crash with __target_activate__ when activated without activator
- crash with __setplayerspawn__, __setplayerautospawn__, __killplayer__ and __damageplayer__ script actions when activated without activator
- portalgun bypassed checks for __g_weapons__ and __g_knifeOnly__
- friction and look sensitivity were incorrect in freecam