Legend of tags Note
work in progress Work in Progress. Below is a list of all changes ever made to the original code of Wolfenstein: Enemy Territory which was released in 2010 under the terms of GPL v3.
These changes were made by multiple contributors and helping hands over the course of over half a decade.
For a complete list of all contributors and helping hands, please refer to the credit section.
cancelled Release skipped.
released Released.

2.77 "Capture the city!" work in progress


Added com_downloadURL cvar to specify URL of download command
Added db schema updates depending on version
Added OSX quarantine administration
Changed "wget" command name to "download"
Updated to db schema V2


Added cl_allowDownload 2 to stop all noise while downloading
Added central storage of favorites to have one source of favorites for all mods available (optionally)
Added new download container system
(Re-)Added con_drawNotify() for easier debug
Changed bindlist command to print free keys
Changed the splash screen on Windows to a logo in the loading screen for all platforms
Fixed vid_restart not reinitializing i18n when language is changed
Fixed console flickering - r1 MAX_RENDER_COMMANDS increased
Fixed timing issues when client is downloading or recording demos and window is minimized or has no focus


Fixed bots being affected by limit of sv_ipMaxClients value
Removed never used tracker feature


Fixed bsp static light parser to match 'keeplight’ ents


Added HUD indicators for invulnerability and adrenaline usage
Added GeoIP privacy option with cg_allowGeoIP
Added hit regions stats to debriefing view
Added most damage given award
Added visible Axis / Allies aircraft models for airstrike plane
Added WP_AIRSTRIKE / ITEM_WEAPON_AIRSTRIKE / airstrike.weap / bombs models has new weapon for airstrike bomb
Added BG_GetTracemapSkyGroundFloor / BG_GetTracemapSkyGroundCeil getter (Lower / Higher sky height)
Added cg_visualEffects to turn visible / invisible visual effects (i.e airstrike plane, debris ...)
Added shield status display on scoreboard
Added mod_version static cvar
Added objective indicator
Added game time in server log
Added vote status indicator in debriefing in mapVote mode
Added in-game team selection menu
Added cg_announcer to toggle announcer voice on map start
Added popup messages filter
Changed ui_serverRedirect cvar to ui_serverBrowserSettings (bitflag)
Changed g_mapscriptdirectory cvar default value to "mapscripts"
Changed MOD for smoke marker from MOD_AIRSTRIKE to MOD_SMOKEGRENADE
Changed limbo health value from -75 to -113 for better gameplay balance
Changed artillery with visible shell and dropping from sky (Twice less ents and used in shorter time)
Changed airstrike with visible shell, visible plane and dropping shell from plane (Twice less ents used)
Fixed the formulas in BG_EvaluateTrajectoryDelta() (affects func_bobbing and func_pendulum)
Fixed G_SKillRatingDB_DeInit error message printed in console at intermission
Fixed stopwatch not restarted after round end
Fixed medic/ammo pack were draining stamina without drop pack
Fixed obvious phony servers hidden in browser by default
Fixed fov range check in shipped configs to take autofov into account
Fixed SR scoreboard not default with g_SkillRating 1
Fixed SR scoreboard displayed in SW and LMS gametype modes
Fixed overwriting of ammo count instead of adding at spawning (syringe)
Fixed throwing nade when leaning was no more possible
Fixed weapon alternative reload was not working anymore
Fixed smoke canister (aistrike) dealed too much damage (back from 400 to 140)
Fixed public conf wouldn’t reset correctly
Fixed animations for MP34
Fixed seizure inducing effect on trickjump map
Fixed MOD not always displayed due to temp entities not reset
Fixed fieldops charge bar color when quick zooming
Fixed autoScreenshot feature broken in MapVote gametype due to vote displayed first
Fixed display of powerup in small scoreboard
Fixed real time SR win percentage not always displaying with lot of connected clients
Fixed game log not always created on some platform (linux)
Fixed syringe ammo lost when used on a an alive teammate or a killed enemy
Fixed tapout reinforcement timer color when spectating
Fixed allowed chat length longer than server side limit
Fixed command map objective and flag icons displayed above players icons
Fixed unwanted weapon switch after picking weapon
Fixed unwanted grenade switch while leaning after swapping weapon
Fixed weird menu overlapping issues, mostly noticeable with customized menus
Fixed cg_teamChatsOnly filters Fireteam chat too
Fixed "throw" command only used throw flighing type. (fling, throw and launch available)
Fixed respawn delayed and could be missed despite no death animation were being played
Fixed latched cvars not being able to be changed immediately by the server leading to various game management issues
Fixed multiple map votes possible by reconnecting in intermission
Fixed mapvote tally display when connecting while in intermission
Fixed missing default cvars configs
Removed g_misc 2 option "medic syringe heal" (use the Lua script instead)
Removed weird flying nade sound (sound back end issue)
• Added constants for gamestates, teams and skills
• Added WP_AIRSTRIKE constant
• Added ps.pm_type, ps.velocity, ps.viewangles, ps.viewheight, ps.leanf entity fields available
• Added G_LuaHook_WeaponFire callback
• Added GetCurrentWeapon, trap_Trace, G_HistoricalTrace functions
• Added PM and STATS constants
• Added CONTENTS, SURF and MASK constants
• Fixed/removed static classname of Lua entity create/fixed possible crash
• Fixed Lua vm stack was uncontrollably growing after each hook callback call

2.76 "The enemy is weakened!" released (13/01/2019)

• We did set up a master server - feedback appreciated.
• This release is also shipping OmniBot v0.86 and WolfAdmin v1.2.0


Added trap_SendMessage() syscalls return values
Added Cvar_SetDescription and field description to cvar
Added security fixes
Added several descriptions for commands - see /cmdlist
Added status prints on net_restart
Added network debugging back (packetloss cvars)
Enabled IRC feature on the client and server side by default
Changed to a POSIX compliant way to get file length
Changed cvarlist command to print default values as well
Fixed MSG_WriteBits for bigger data
Fixed lazy switching between renderers
Fixed IPv6 buffer & NET_AdrToString not returning port
Fixed NET_AdrToString returning bad results for unusable address types
Fixed engine memory database, now enabled by default - ready to use by Lua scripts
Fixed command line variables not being set correctly
Fixed pid file check
Fixed some compiling issues for NetBSD
Fixed possible buffer overflow in MSG_ReadBits/MSG_WriteBits (CVE-2017-11721)
Fixed unsigned types where wrapping arithmetic is intended
Fixed reading crash log when log wraps around buffer
Fixed exploit to bypass filename restrictions on Windows
Fixed VMs change engine latch cvars immediately
Fixed VMs being able to change CVAR_PROTECTED cvars
Fixed R_init() throws glGetError() = 0x500 (r1) on init
Fixed some evaluations of FS_FOpenFileRead return values
Fixed infinite while loop in CON_FlushIn
Fixed MSG_Read*String*() functions not being able to read last byte from message
Fixed missing address operator in cm_polylib.c, avoid nullptr dereference.
Fixed signed bit operations in MSG_ReadBits
Fixed entity enum types to match vanilla again
Dropped support for Windows XP and Vista (eol reached in 2014 and 2017, respectively).
Updated libs to:
• cURL 7.63.0
• GLEW 2.1.0
• SDL 2.0.9
• OpenAL 1.19.1
• libogg 1.3.3
• libvorbis 1.3.6
• Freetype 2.9.1
• SQLite 3.26.0
• Jpeg-turbo 1.5.3
• zlib 1.2.11
• OpenSSL 1.1.0j
• latest tinygettext


Added seperation of left and right Alt, Ctrl and shift keys
Added more info prints for download & connect process
(Re-)Added con_notify
Changed renderers prefer MD3 files for models instead of MDC
Changed cvar joy_threshold to in_joystickThreshold
Changed r_showtris to exclude 2d elements
Changed client default value for cvar rate to 25000
Changed MAX_PART_MODELS from 5 to 7
Changed host name length from 36 to 72 characters (Legacy only)
Optimized coronas
Fixed default font doesn’t have cyrillic support
Fixed auto correction of s_khz 48 value
Fixed missing string issue on window displayed after crash
Fixed client leaking memory
Fixed FS_CL_ExtractFromPakFile error case when file is not in path, better error handling in Sys_LoadGameDll
Fixed black screen at launch due to socket timeout wait
Fixed crash with Alt-Tab on Linux
Fixed undefined symbol: "_ZGVbN2vv___pow_finite" error on self compiled Linux build
Fixed pressing ESC then Backspace shuts down replays
Fixed ability to open .pk3 files as OpenAL drivers
Fixed IRC autoconnect
Fixed shader rotation at high level times
Fixed deprecated gethostbyname() to use getaddrinfo()
Fixed dropping the game when a cinematic file isn’t available
Fixed foliage color/alpha on big endian systems
Fixed vanilla ET MAX_DRAWSURFS value
Fixed populating local servers when limit is reached
Fixed non Q3_BIG_ENDIAN ShaderForShaderNum()
Fixed VM_Create on UI FAILED issues when connecting to new mods [#973]
Fixed early key pressing exit the demo while playing the first frame
Fixed exiting demo no longer drop in error
Fixed videomaps not playing in game
Fixed client connecting to server with invalid chars in pk3 name
Fixed firstSide values of fog brushes
Fixed shifting bits out of byte in tr_font.c
Fixed undefined behaviour due to shifting signed in snd_mem.c
Fixed not closing 0 length file and path seperator of description.txt
Fixed unwanted doppler effects
Fixed a crash caused by func_explosive
Fixed player shadows draining massive FPS [#1078]
Fixed reading vanilla demos - use ETL 2.75 to read older ETL demos
Removed broken stereo mode


Added better autoRecord hooks
Added prevent using connect as an amplifier
Fixed invalid binary messages will no longer shut down the server - this is a mod issue
Fixed mover state for server side demo recordings
Fixed clients using private slots when sv_privatePassword is unset
Fixed no longer sending a response to unknown clients
Fixed systeminfo command - it did actually print server info
Fixed listen server sending snapshots each client frame
Fixed possibly leaking buckets
Fixed exploit to reset player by sending wrong serverId
Fixed referencing pk3s with campaign files when gametype is not campaign to prevent clients downloading these files on connect
Fixed download issues for http download and sv_wwwDlDisconnected 0
Removed never used 'handicap’ code


Added processing of old definition files in 'scripts’ path - if there is no r2 matrial available fallback to r1 definitions
Added new 'materials’ folder for r2 material definition files
Added and fixed coronas
Added and fixed foliage support
Added better lightmap by vertex support
Added vertex shader for lightVolume_omni
Added extra smoothing for normals (experimental - mdc, md3, faces & meshes)
Added light interaction for foliage
Added full support of DBS rendering/fixed normalmapping on lightmaps
Added reflection mapping/fixed specular reflection for normal mapping
Fixed shader parser issues
Fixed light shaders no longer using default shader
Fixed abort of shader parsing on unknown keyword warning
Fixed leaking memory
Fixed skyparam image loading
Fixed sky on maps with skyboxportal
Fixed fog
Fixed normal and specular image loading for map objects
Fixed shaders using normalzfade/dynamite glow effect
Fixed GLSL_SelectTexture selecting non existing textures
Fixed material using 'wave noise’ parms
Fixed skipping the full shader when unknown shader params occure
Fixed some mod compatibility issues - we are forwarding all vanilla surface flags again
Fixed discolored shader issues (f.e. puddle on radar)
Fixed fog sorting issue
Fixed liquid shader
Fixed lightmaps for flares
Fixed glsl definition parser not setting initial uniform values (bloom/hdr renderer fix)
Fixed firstSide values of fog brushes
Fixed construction shader not drawn
Fixed a crash caused by func_explosive


Added players loose spawn shield upon firing as a new g_misc option
  • Added UI option to set custom resolution in system menu
  • Added missing talk/chat animation for players
  • Added playtime statistics
  • Added custom icon to cpm console command
  • Added UI joystick options to advanced controls menu
  • Added IRC settings to UI system menu
  • Added MG repairing message
  • Added objective icon and disguised no-shoot icon on fireteam icon on compass
  • Expanded TrueSkill rating system for map bias and use internal SQLite database
  • Changed highest experience points award to display XP gained on the current map only (unless in campaign mode)
  • Changed cg_gunX/YZ are no longer cheat protected
  • Changed double negative cg_noVoiceText and cg_noVoiceChat by cg_VoiceText and cg_VoiceChat
  • Changed current map XPs or campaign XPs only displayed on HUD and scoreboard
    General rework of weapon code
  • Updated world flags (bots now use the UN flag)
  • Fixed skill rating not updating when specing
  • Fixed spectators can’t disable player names in game view
  • Fixed main debriefing stats not displayed when skill rating is disabled (also causing intermission chat issues)
  • Fixed fireteam control doesn’t work when NUMLOCK is enabled
  • Fixed opening fireteam panel stops your movement
  • Fixed fireteam chats available to non ft players
  • Fixed client creating player lists each snapshot (multiview only)
  • Fixed script events
  • Fixed spectator speed boost too high
  • Fixed underwater jump movement
  • Fixed ability to run on water
  • Fixed limbopanel display map time in warmup instead of warmup countdown
  • Fixed tagent param values of script_mover ents behind 15 chars
  • Fixed edv issues/wrong rocket angles
  • Fixed non working custom icon of wm_announce_icon
  • Fixed UI vid_restart and rec_restart menus pointing to non existing menu when they are closed
  • Fixed tons of Clang compiler warnings
  • Fixed playing 'fancy’ medic scream for MOD_BACKSTAB kills
  • Fixed resetting some colors in cgame
  • Fixed ref commands for listen server console
  • Fixed spectator commandmap icon use mortar icon instead of a proper icon
  • Fixed disguised cover ops vsay subset visible to spectators
  • Fixed console prints for obituary messages
  • Fixed spawntimer displayed for spectator
  • Fixed UI edit and numeric fields not highlighted on mouse over
  • Fixed objective carrier disappearing from map when far away from player
  • Fixed limbo camera not initially updated
Removed unused session var coach_team
  • Removed useless string comparisons at game start
  • Removed obsolete script action 'aiscriptname’
  • Removed obsolete cg_gun_fovscale cvar
  • Removed disguised cover ops vsay visible in enemy team chat
  • Removed unused cg_stereoSeparation cvar
  • Changed ranks are now tied to rating instead of skill levels and XPs when rating system is enabled
  • Added Best Rating award
  • Fixed picking up weapon while reloading or overheating
  • Fixed Flame shader and Sten/MG/Browning smoke displayed on respawn
  • Fixed smoke grenade cannot break glass
  • Fixed model of landmines being planted not visible to spectators
  • Added landmines filter on limbo command map
  • Fixed oasis spawn counter
  • Added existing bug fixes in vanilla maps scripts
  • Fixed demo control keys
  • Added pm sound file for WA
  • Added players rotate on script movers
  • Added removal of items in front of movers (tanks etc) instead of being pushed forward
  • Fixed EXPLOSIVE_INDICATOR not drawn on command map for opposite team
  • Fixed objectives not drawn on command map for opposite team
  • Fixed/changed wm_set_main_objective script command (it does no longer expect a number for objective - use the target trigger objective info name - see oasis.script of pak3)
    • Added 'oinfo’ cgame cmd to display objective info
  • Fixed constructible priority order in trigger areas
  • Fixed profiles switching
  • Fixed some referee menu actions not working
  • Added ALT quick chat - see cg_quickchat cvar
  • Added GeoIP.dat
  • Added classmenu console command
  • Added new spawnflag for SP_Shooter mortar
  • Fixed weapon restriction wasn’t counting set mortars
  • Fixed third person view axis using wrong weapon skin model
  • Fixed flamer dlights in water
  • Fixed precaching sounds
  • Fixed alpha channel for rank icons
  • Fixed some instances where weapon switch were allowed
  • Fixed switch weapon was allow while using binocular
  • Fixed fast binocular using while switching and prone moving
  • Fixed early switch when player was respawing
  • Fixed switchbackWeapon wasn’t reset after respawn
  • Fixed switch back to scoped weapon with weaponlastused cmd was allow
  • Fixed scope reticle wasn’t cleared on prone moving
  • Fixed zoom/unzoom effect when player is moving to fast with scope weapon and binocular
  • Fixed alt weapon switch didn’t lower speed move when prone moving
  • Fixed alt switch animation (riflenade / silencer ...)
  • Added a smoother effect when switching with alt weapon
  • Fixed spamming alt switch sound
  • Fixed hint for mountable entity was visible while using set weapon
  • Fixed using MG-Nest when firing with panzer
  • Fixed landmine team map data issue on team change
  • Added debug info for missing events (g_scriptDebug)
  • Fixed machine gun brass model wasn’t used in first person view for weapon with large bullet (MG, rifle ...)
  • Fixed brass weren’t ejected on mounted tank MG
  • Fixed brass ejection position was incorrect in third person view
  • Fixed script G_ScriptAction_VoiceAnnounce implementation
  • Fixed equipped binoculars’ animation when pressing "+attack" during "altweap"
  • Fixed sending unnecessary fire event when binocular is equipped and class is not field ops
  • Changed 9999 damage on crush/suicide/die/pushing to death with minimum damage needed to gib
  • Added cg_drawspeed
  • Added more info prints when misc_model entity spawning fails
  • Fixed firing anim/sound was played when charge bar was too low for firing
  • Fixed auto reaload wasn’t unscoping weapon when reloading
  • Fixed reloading akimbo wasn’t possible when only the first bullet was fired
  • Fixed long host name with colored characters to be displayed in server list without breaking the UI
  • Fixed CanDamage function
  • Fixed an invalid spectator state of team command
  • Fixed team follow1/2 not moving to intermission point after all players disconnect
  • Added colored mod name in mod menu
  • Fix antiwarp and slow medic regen issue with pmove_fixed 1
  • Added lagometer server frame rate
  • Rework item list (no more need to sort it by item type.)
  • Removed unused item "treasure" from item list
  • Removed duplicate item "weapon_medic_heal" from item list
  • Removed obsolete/unused item type IT_ARMOR, IT_HOLDABLE, IT_KEY and IT_TREASURE
  • Changed fireteam name from NATO alphabet to historical alphabet (one set for each team)
  • Fixed player model lights - body. head and acc were not synchronized
  • Added new MP34 weapon for axis covert ops instead of Sten
  • Fixed trigger_multiple spamming activate event/ignoring specified wait epair set in the radiant
  • Added team-specific activate stages for multi_trigger
  • Fixed sound issues on fueldump/new sounds for axis when tank is entering the tunnel
  • Fixed "give skill" command wasn’t giving the correct amount of skill points
  • Fixed message range validity of "give skill" command
  • Removed reloadable weapon table
  • Changed storing ammo of non-clip weapons from ammo clip to ammo reserve
  • Added custom voice chats
  • Added CG_AddToNotify back
  • Fixed centerPrint and drawObjectiveInfo cut UTF-8 char and color printing
  • Fixed cg.hyperspace
  • Fixed limbomenu showing wrong weapon selected after map change
  • Fixed game configs not loaded
  • Fixed blurry hud weapon icons
  • Fixed map restart poll
  • Added print gametype at start
  • Fixed invalid gametypes set will no longer start the game
  • Fixed team Num abuse which was used to store dynamite/landmines states
  • Changed landmine checking callback frequency by enable it only when landmines are planted and not spotted
  • Fixed fast weapon switching right after firing last bullet/missiles (much visible with MG Set and Riflenade)
  • Added in weapons files (.weap) configurables values : noAmmoSound, limboWeaponCard, ejectBrassOffset
  • Removed website button from in-game menu
  • Changed default browser servers sort by human players first (etl servers only)
  • Added display switch help text on scoreboard
  • Changed class restriction color to better differentiate with skill level 4 background
  • Fixed g_inactivity and g_spectatorInactivity timer
  • Added class selection menu in controls settings (default bind: P)
  • Fixed class and weapon restrictions check with /class command
  • Added g_stickycharge - controls when powerbar is restored or refilled
  • Added alternate switch sound from other player when they are switching alternate weapons (i.e un/mount mortar/riflenade/silencer)
  • Lua
    • Updated to Lua lib 5.3.5
    • Updated to LuaSQL 2.3.5
    • Fixed Lua sqlite3 memory database connections
    • Fixed luaPath and luaCPath allowed strings possibly too short
    • Added lua_restart command
    • Added WP_MP34 and MOD_MP34 constants
    • Added powerups constants

For the logbook:
- In November 2016 coverity scan defect density < 0.18 has been reached. About 60 issues detected by coverity have been fixed during the last 12 months.
- At the end of March 2017 we have reached defect density 0.10 with 46!!! outstanding defects. In total 417 detected issues have been fixed!
- At the end of July 2017 we have reached defect density 0.02 with 10!!! outstanding defects. In total 468 detected issues have been fixed!
- At start of October 2018 SGT Pepper managed RPI/ARM to fly with ET: L
- At the end of December 2018 some very old major bugs have been fixed - this is the best ET: LEGACY release ever!

2.75 Learning to fly! (released 11/09/16)


  • Fixed Cvar_Unset not notifying cvar_modifiedFlags
  • Fixed *nix systems buffer usage in Sys_RandomBytes
  • Added command descriptions
  • Fixed file handle leaking in unzip functions used by apple lib loader and ETL updater
  • Added basic sqlite3 support
  • Fixed some cases of FS_UnzipTo returning true when unzip failed
  • Allow to use zlib and minizip system libs
  • Fixed error handling of mod lib loading
  • Fixed registering of server pk3s with invalid chars in file name (no more allowed)
  • Fixed fs_homepath default value on Windows when 'My Documents’ has been moved to another drive


  • Enabled optional renderer2 [experimental]
    • Added r2 compile glsl only when the program is really needed
  • Enabled optional OpenAL sound system with surround sound support
  • Updated libs to
    • GLEW 2.0
    • Freetype 2.6.5
    • OpenAL 1.17.2
    • SDL 2.0.4
    • latest tinygettext
  • Fixed gamma control in renderer1 by using GLSL shader
  • Fixed cut sound channels which are actually flagged to be cut
  • Fixed MAX_PATCH_PLANES error on some maps
  • Added the support of ogv (theora) videos
  • Fixed the ROQ support of HQ videos
  • Fixed lib loading issues on MAC clients (now loading .dylib when .bundle unzip failed)
  • Fixed several OpenAL sound system issues
  • Added support for hidden 0x7f char to clean command
  • Fixed Hunk_Alloc size in R_InitSkins
  • Added joystick/input device code again [experimental]
  • Fixed demo recording
  • Fixed www download issues when server uses redirect
  • Removed obsolete dingy filter on windows
  • Fixed console button
  • Removed unused cvars
  • Fixed rendererGLES QALIGN of vectors
  • Fixed error message for duplicate genuine paks on server
  • Fixed latency of input devices


  • Fixed build on FreeBSD
  • Fixed svdemo writing userinformation at the wrong place
  • Fixed leaking file handles in download code
  • Added sv_tracker cvar
  • Fixed div/0 in SV_RateMsec when com_timescale is set to 0


  • Fixed smoke grenade not triggering after player dies
  • Fixed MG gets stuck before reloading
  • Added weaponIconScale to *.weap files
  • Fixed allow medics max health from health cabinets
  • Fixed weapprevinbank and weapnextinbank issues for rifle
  • Added death animations
  • Added spectators statistics to match results table
  • Fixed CS_MULTI_MAPWINNER winner when surrending
  • Added cg_optimizePrediction - client optimized prediction
  • Fixed soldier level icon not displayed when using HW with any class
  • Fixed riflegrenade disappearing from the gun when you get revived
  • Fixed output and one player selection of 'new’ console commands
  • Added throw console command to help players got stuck
  • Fixed noclip clients have a shadow
  • Added a warning for non available server models
  • Added time played percentage stats
  • Added reinforcement timer change color before tapout limit
  • Fixed callvote config cmd not showing description (3rd param '?')
  • Fixed callvote config cmd no longer initiating a vote when config file isn’t available
  • Fixed file handle leaking in preview and config file functions
  • Fixed script logging
  • Fixed debriefing team xp for gametype map voting
  • Fixed storing team map xp for GT_WOLF_MAPVOTE
  • Fixed LMS team change with last life in warmup
  • Fixed spammy landmine spotted sounds
  • Fixed most of AA-gun issues - mappers should have a look at "misc_aagun"
  • Added special behaviour for players & corpses in front of a tank
  • Removed the short distance trick and make disguised name appears at all time
  • Fixed disguised enemy name not updated when victim changes player name
  • Added spawnpoint autoselect button on limbo panel
  • Fixed full health bar displayed after a teamkill
  • Fixed missing quick message shortcut in alternative voices menu
  • Fixed coverops don’t loose their disguise if feet of target aren’t in field of view
  • Added coverops ability to change disguise if they already have one
  • Fixed objective carrier map entity not removed from map when out of sight
  • Fixed killed teammates map entity not removed from map when going to limbo
  • Fixed demo layout issues
  • Fixed individual weapons accuracy stats being over 100%
  • Changed map entity update rate is increased to every second
  • Fixed complain removal issue on client disconnection
  • Fixed self-adrenaline shader color not matching syringe color
  • Fixed fireteam privacy status update on client side
  • Fixed disguised enemy don’t show fireteam icon if owner is in fireteam and selected
  • Fixed some issues with fireteam locations data
  • Added some sprite icons visible in spectator mode
  • Added intentional gibs and team gibs statistics
  • Removed disguised client rank from player configstrings
  • Added numerical values to awards screen
  • Added medals are also awarded in objective and mapvoting gametypes
  • Fixed awards don’t take tie into account
  • Added best HS percentage, most gibs, most selfkill, most death and most time alive awards
  • Fixed blinking map entities when players connect
  • Fixed scoreboard info not available in demos
  • Added tons of translations
  • Added new event message for MOD_TRIGGER_HURT
  • Fixed rcon/Lua chat and say command
  • Fixed allow_vote cvars in config files
  • Added missing polls to ui
  • Fixed MAX_STATIC_GAMEMODELS value too small for some maps
  • Added TrueSkill rating system [experimental]
  • Fixed connection interrupted message not shown when lagometer is disabled
  • Reactivated multi view [experimental]
    • Added cvar g_multiview
  • Added cg_logfile to customize game menu
  • Fixed some misc gamemodels lerping all the time
  • Fixed construction sound is only played at start of constructions
  • Removed never working cgame cvars
  • Added show owner of team-landmine and -dynamite in crosshair as new g_misc options
  • Added rising smoke for arty and airstrike bombs
  • Added extended demo viewer code (freecam, weaponcam) from etpro
  • Added client side debug of player hitboxes
  • Added server side debug of entity BBoxes
  • Fixed parser issues with invalid token (parsers are more strict)
  • Fixed short rank names
  • Show profile info in main menu
  • Added lagometer antiwarp indicator
  • Fixed players are no longer allowed to push players using stationary MGs
  • Removed g_knifeonly - moved to Lua see AddWeaponToPlayer and RemoveWeaponFromPlayer
  • Fixed some issues with maxlives cvars set
  • Fixed knife kills always playing goat sound, MOD_BACKSTAB introduced
  • Fixed medic scream sound for gibbing mods - no need to play
  • Fixed unknown client game command causing sudden mouse movements
  • Fixed command map data not shown immediately
  • Fixed bots taking fireteam leadership
  • Fixed console end of match info not always printed
  • Added amount of headshots to "Top shots"
  • Lua
    • Updated to Lua lib 5.3.3
    • Added LuaSQL interface for SQLite3 support
    • Added some Lua fields
    • Added Lua script function G_SetEntState
    • Fixed _et_XP_Set Lua interface float value for XP
    • Added Lua script functions G_ShaderRemap, G_ResetRemappedShaders and G_ShaderRemapFlush
    • Added Lua hook SpawnEntitiesFromString
    • Added Lua script functions G_CreateEntity and G_DeleteEntity
    • Fixed Lua G_EntitiesFree return value
    • Added Lua script functions AddWeaponToPlayer and RemoveWeaponFromPlayer
    • Added Lua script functions G_SetGlobalFog

For the logbook: In November 2015 coverity scan defect density < 0.25 has been reached (was 0.9 at the beginning of 2014). More than 300 issues are history.

2.74 (released)

ET: L 2.73 wasn’t published - see also 2.73



  • Fixed s_musicVolume not independent from s_volume
  • Fixed low Commander sounds volume
  • Fixed language mix and UTF8 issues in mods
  • Enabled optional renderer2 [experimental] (Linux only)
  • Fixed sharing favorites 32- & 64bit



  • Fixed debriefing stats
  • Fixed config vote buttons in UI
  • Fixed second stopwatch round not loading when changing gametype in-game
  • Fixed teleporters - working again
  • Added ping info for spectators on scoreboard
  • Fixed pmove_fixed enabled 1st person view MG control
  • Fixed tank weapon overheat sound
  • Removed unused OSP game points stats system
  • Fixed a Linux client crash
  • Updated Omni-bot library
  • Fixed config files
  • Added hitsound for gibbing
  • Added bodyshot sound if headshot sound is disabled
  • Fixed stamina bar not working when spectating
  • Fixed vote progression not displayed to spectators
  • Fixed missing browining icon shader

2.73 (unreleased)


  • Optimized LAN player detection
  • Fixed an issue which cause the argument system to break on loading a map
  • Fixed the extraction code having wrong output filename due to static array flipping
  • Fixed beginning of log not displaying in console
  • Updated unzip to 1.1
  • Fixed compiling with MinGW-w64
  • Fixed Windows file list extension check


  • Added unicode support
  • Updated to freetype 2.6.0, libogg 1.3.2, libvorbis 1.3.5, jpeg-turbo 1.4.1, GLEW 1.12 and latest tinygettext
  • Fixed console scrollbar length
  • Fixed replays aren’t always shown in the list
  • Fixed mouse being stuck
  • Fixed "VM_Create on UI failed" error when downloading new mods
  • Added warning for unknown shader parms
  • Fixed looping sounds stuttering
  • Fixed cache_startgather cmd
  • Fixed horizontal scroll caused K_MWHEELDOWN key press
  • Added console smooth scrolling


  • Fixed freeze when server is full and there is no free slot available
  • Fixed Omni-bot interface to work on 64-bit Linux servers


  • Fixed initial clip value of scoped Garand
  • Fixed ejected brass type for scoped Garand
  • Fixed weapon names spelling across the game
  • Fixed K43 grenade launcher reload animation
  • Fixed MG 42/Browning reload animation
  • Fixed (Silenced) Luger/Colt shooting animation
  • Added speed boost when free flight spectators use SPRINT
  • Fixed scoped weapons still scoped after revive
  • Fixed possibility to select double Thomson/MP40 in limbo menu by Soldier with heavy weapons level 4
  • Fixed obituaries icon color with self-kills
  • Added color to chargebar when weapons aren’t ready
  • Fixed FG 42 reload animation
  • Fixed airborne explosion debris scale
  • Added several additional obituaries icons for various MODs (means of deaths)
  • Added autoexec_(team,class,map) config file support
  • Fixed accuracy stats being over 100%
  • Fixed slag surface parm
  • Added always creating a dialog when server tries to redirect - cvar ui_autoredirect removed
  • Fixed wrong name for "HQ" and "Pilot" messages
  • Added "Pilot" chat message when doing an airstrike
  • Added MG 42 and Browning can be reloaded anytime now
  • Added displaying more than one player sprite at same time
  • Fixed Fireteam members 7 & 8 couldn’t be selected
  • Added ability to unbind keys in the controls menu with the backspace key
  • Fixed gun stuck when reloading and proning forward in stand up position
  • Fixed finishing weapon alt changing animations before cycling to next weapon
  • Fixed weapon shaking underwater
  • Fixed weapon model aspect with cg_gun_fovscale enabled and fov < 90
  • Fixed orange box visible when the redirect popup appears
  • Fixed green flickering on loading screen on wide screens
  • Added version string print out when loading libs
  • Added combo boxes for the language selection
  • Fixed human player models shaking on listen servers
  • Added automatically scaled fov on wide screens
  • Fixed drowned players can’t wait indefinitely underwater
  • Removed weapon icon flash 2-colors only option
  • Fixed revive icon display on command map after respawn
  • Fixed no message when dynamite is defused
  • Fixed spectator’s real score
  • Fixed a crash when being shot under Mac OS X
  • Updated to Lua 5.3.1

... and various (tons of!) smaller adjustments and optimizations. Since the last release we have fixed about 150 issues reported by (coverity)

2.72 (released)


  • Rework of download code


  • Expanded et:// protocol
  • Updated icon
  • Request servers from ET:L master server
  • Disabled SDL2 Joystick code to avoid possible crash when gamepads are connected


  • Fixed vanilla mod compatibilty
  • Fixed SV_Demo_Record_f for sv_maxclients 64
  • Added configurable attack log prints to console
  • Fixed sv_protect 1 (possibly) and added challenge size check
  • Added part of the ioq3 com_frame code to fix cpu usage issue
  • Added option for dedicated servers to receive updateinfo packages
  • Added protection of SV_CheckDRDoS against time wrapping
  • Send heartbeat to ET:L master server
  • Don’t force snaps to 30 - use sv_fps instead


  • Removed cg_railTrailTime
  • Fixed wrong maxclients count in server browser (Windows only)
  • Fixed scoped rifles generating same stats as standard rifles
  • Fixed LUA et_Damage callback not taking distance and HS into account
  • Fixed compatibility issue with older linux GLIBC versions

... we did also fix tons of defects detected by coverity.

2.71a (released)


  • Fixed OOB access in CM_EdgePlaneNum
  • Fixed MSG_ReadDeltaKey setting bit 1<<bits often
  • Fixed several potential buffer overflows
  • Added demo controls (rewind, pause and fastforward)
  • Fix incorrect strncat usage in CL_ServerInfoPacket
  • Update com_hunkMegs/com_zoneMegs when forcing a minimum
  • Disabled Nagle’s algorithm for TCP connections
  • Added an auto updater


  • Updated SDL to SDL2 (supports raw input)
  • Console text size increased
  • No longer print the gfx extension string per default
  • Fixed bsp node surface bounds calculation
  • Joystick code reactivated
  • cl_language and cl_languagedebug renamed to cl_lang & cl_langDebug
  • Fixed Windows XP incompatibility
  • Decals reworked. Fixed the decals issue introduced by rc4 (draw player shadows, bullet marks etc. again when hud head is active)
  • New default value for r_maxpolyverts
  • Fixed several polys, polyverts and poly buffer issues
  • Renderer2 bug fixes & clean up (unreleased)
  • Added 2560x1440 WQHD and 3840x2160 UltraHD resolution in r_mode.
  • MAX_CORONAS per scene/frame decreased to 64
  • Added support for stereo sound files in S_StartSound and S_StartLocalSound
  • Fixed PNG image loading
  • Fixed possible division by zero in S_PaintChannelFrom16 functions
  • Updated and fixed displaying *nix dialog boxes
  • Added dialog to restore default settings or keep current config after crash
  • Use LAN/CABLE/xDSL connection settings as default and removed option from UI.
  • Show coloured strings in cvar completion and serverstatus as expected
  • Added update indicator in console and UI update popup
  • Minor tweak to embedded icon
  • Fixed IRC quit and ctcp version string (unreleased)
  • Replaced jpeg with jpeg-turbo lib
  • Fullscreen state is now restored when rejecting new video changes
  • Fixed crash on map change


  • Added uptime cmd
  • Warn admins before MAX_GAMESTATE_CHARS error occures
  • Warn admins before too many maps in paths cause trouble
  • Fixed possible client timeouts after bigger downloads
  • Show ETL servers as ET and not as Q3Comp in HLSW


  • Display player names in spectator view
  • cg_enableBreath cvar removed - let mappers control breath puffs
  • g_corpses cvar introduced - enable 'unlimited’ corpses
  • Print secondery weapon in setup messages
  • Added more realistic explosion shakes
  • Fixed flamer deaths getting blamed on the world/player 0
  • Fixed UpdateGoalEntity was called when omnibot was not enabled
  • Show secondary weapons in select weapon messages
  • Adjust aimspreadscale each PmoveSingle
  • Fixed an invalid null deref check in the slider code
  • Added ETPro anim script conditions NOT/MINUS
  • Syringe is no longer a stat weapon
  • Make votings work again
  • Show results of votings
  • Fixed uneven weapon issues
  • Added server messages on team join
  • Bazooka eject brass disabled
  • Demo controls extended
  • Fixed icon scaling of akimbo pistols
  • New Lua fields: lastkilled_client, lastrevive_client, lastkiller_client, lastammo_client, lasthealth_client, lastteambleed_client, lastteambleed_dmg
  • Fixed swap_teams work again
  • Added more debris effects
  • Fixed server related cvars being overwritten by default config
  • Make artillery calls chargebar dependant
  • Fixed adding decals to the scene if these are disabled
  • Fixed filter for vanilla servers in the game browser
  • LUA
    • Lib Lua updated to latest stable version 5.2.3
    • G_LuaHook_Damage added
    • lua field ps.classWeaponTime added
  • Added more game constants to Lua & make Lua constants work (again)
  • Added lua_api command
  • Added autorecord on late joins
  • Fixed scrolling inconsistency in server info
  • Added g_misc 2 bitflag - enables medic syringe healing
  • Omni-bot library updated to the latest (unreleased) version from subversion
  • Fixed double Thompson/MP40 weapon selection message with soldier lvl4
  • Added teambleed sound for disguised covert ops
  • Covert ops no longer loose disguise by binoc 'attack’
  • Fixed MG42 icon displayed as Browning after using Browning on allied tank
  • Fixed Fireteam window not displaying fixed MG42 and Browning tank icon
  • Fixed Fireateam window sometimes visible as spectator
  • Fixed binoc nofire sound under water
  • Fixed playing "I need a medic!" sound when killed inside tank
  • Fixed server name max length in server browser
  • Fixed default motd version string
  • Fixed client freeze issue occurring with big explosions (only when compiled with MSVC in release mode, or clang)
  • Fixed corpses not gibbed by satchel or dynamite explosion
  • Fixed adrenaline self syringe color not matching syringe color
  • Covops now switches to main weapon instead of pistol after using smoke bomb
  • Fixed corpses not gibbed by dyna or satchel
  • Fixed corpses throwing helmet when uniform and helmet is stolen
  • Fixed autoswitch when medics run out of syringes/adrenaline syringes
  • Fixed autoswitch to main weapon after using adrenaline
  • Fixed autoswitch to knife if entirely out of ammo and grenade.
  • Added ingame logo
  • Fixed MG/MG_SET cooling
  • Fixed creating campaign server in Host Menu causing a crash
  • Show levelshot instead of campaign info for non campaign game types
  • Fixed player with heavy weapon skill level 4 couldn’t pick up enemy SMS on ground
  • Fixed reinforce time displayed in limbopanel as spectator
  • Fixed feedback when using apply/invite/propose commands to full fireteam
  • Fixed official NATO spelling to fireteam names
  • Fixed line selection in debriefing player list
  • Smoke bomb is no longer a player stats weapon
  • Fixed the client side class command and added support for class selection with numbers
  • Fixed flamer selfkill messages shown as world kills
  • Fixed flamer stats
  • Added real head hitbox code from Zinx Verituse
  • Fixed client/server flamer view & behaviour
  • Fixed LMS/max_lives tapout window showing up in warmup
  • Draw fieldops recharge icon in red when unavailable
  • Added g_misc flag to combine artillery and airstrike time counters
  • Added mod version in UI
  • Added Neil Toronto’s skip correction code
  • Fixed pushing teammate to death gaining battle sense xp

... and various smaller adjustments and optimizations.

2.71 rc 4 (released)

The default fs_homepath value has been changed in RC4!


  • Fixed crash in Q_strncpyz on OS X 10.9 Mavericks
  • Improved checks for a proper install
  • Changed default fs_homepath directory to etlegacy on all platforms
  • Updated unzip to 1.01h and zlib to 1.2.8
  • OS X: ability to load mod from dylibs
  • OS X: path to user’s App Support directory for fs_hompath is not hardcoded anymore
  • Fixed translation support with dynamic linking
  • Fixed network shutdown on exit
  • ET: Legacy process starts with high priority (Windows)
  • Fix FS_FOpenFileReadDir non-zero file handle when file not found
  • Improvement of the echo command which is now also enabled on the server side and supports vstr arguments


  • Made the console look less Win3.1 ish (Windows)
  • Freetype now works properly. (People can use .tff or .otf fonts)
  • Enabled raw input on Windows resulting in smoother mouse movement (Windows 8.1 fix)
  • Language updates
  • r_noborder changed to latched cvar type (requires restart)
  • Sound code performance fix
  • Fixed video and audio recording synchronization drift
  • Fixed duplicated config file created at first start
  • Colour code escaping with ^ fixed
  • Moved renderer2 to pure C (not released)
  • Added default ET ttf font files, used by default if built with FreeType support
  • Fixed a crash related to gamma setting/workaround for gamma reset bug in bundled SDL, system one is still affected until this bug is patched upstream (OS X)
  • Fixed several issues in IRC code (not released)
  • Buggy ET patch bevel axial plane optimization removed
  • com_maxfps is limited to max 333 fps now
  • Possible fix for queue overflows (Windows)
  • Renderer logging reworked
  • Fixed possible crash in S_PaintChannels
  • Build fix. iconv is included in libc starting from version 10.0 (not released, FreeBSD)
  • Skip unhandled marksurfaces when calculating leaf bounds


  • Server shows real player count when private slots are used
  • Server side full demo recording (can replay the whole map with every players pow)


  • Improved in-game fonts rendering
  • Added spawnflag 1024 for script_movers (flamer damage only) - feature for mappers, legacy mod only - see Legacy-engine-and-mod-info-for-mappers
  • Fixed weapon balance of static_pain function
  • Fixed gun not correctly scaled when using a fov greater than 90
  • Added prone delay
  • Added axis Granatwerfer
  • Added graphical obituaries display
  • Added additional icons type in popup messages
  • Fixed color codes issues in location display
  • Added crosshairname info display options
  • Added constructible XP sharing
  • Fixed dropped items not laying flush on inclined ground
  • Fixed zooming in effect when using binoculars
  • Added icon over friendly disguised coverops to improve their visibility
  • Added scoreboard rank icons
  • Cmd entitylist shows event names for temp entities
  • Added high resolution country flags for legacy clients
  • Fixed bubble hint icon not appearing consistently
  • Fixed damage falloff code
  • Adjusted hitboxes height, adjusted hitboxes for proning & dead players
  • Fixed start screen - displays proper size of clouds image
  • Fixed playing vanilla demos properly again
  • Fixed Forty’s pmove_fixed and pmove_msec
  • Fixed some issues with WP_NULL
  • Fixed coverops crosshair disguisename displayed with colors
  • Fixed colors displayed despite using uncoloured names
  • Added optional crosshair coloured names
  • Added additional crosshairs
  • Fixed fireteam window alignment
  • Fixed player stats - they are no longer deleted when setTeam is called
  • Clear client markers when teleporting players
  • Fixed bot votes, g_protect adjusted
  • Cmd /players doesn’t change player names to lowercase anymore
  • Added allied bazooka weapon
  • Added separate statistics for new weapons, no longer log weapons as 'duplicate’
  • Fixed Browning not giving Heavy Weapon skill points
  • Bots no longer use private slots
  • Major gents performance fix
  • Fixed multiple votes on mapvoting system
  • Added objective carrier icon on the command map
  • Fixed weapon slot for silenced pistols
  • Added disguised coverops icon on the command map
  • Changed loadpanel and limbopanel black sides on widescreen to a more fitting green
  • Fixed statistics computed higher than 100%
  • Improved loading of the Omnibot library
  • Added new server commands
  • Added update range cvars (skill_battlesense& skill_.....)
  • Fixed silenced pistol missing weapon bank
  • Fixed grenade launcher missing weapon bank
  • Added player name in killing message when following
  • Fixed gun stuck when reloading and proning forward
  • Fixed allied tank not generating Browning stats
  • Added switch to previous player while following
  • Fixed crash when cg_descriptiveText is set to 0
  • Fixed objective pick up sound broadcasted to everyone
  • Added disguised coverops icon in scoreboard
  • Added received team damage stats
  • Added used class icon for disguised covops client
  • Added in-game objectives popup window
  • Fixed played time ever increasing in debriefing screen
  • Added various statistics in debriefing screen, stats window and console output
  • Added bani’s flamethrower exploit fix
  • Added cg_drawPing
  • Limbo cancel sound replaced by select sound
  • Fixed command map icons not displayed to spectators
  • Fixed some widescreen issues
  • Synced accum buffer sizes to be compatible with some maps
  • Fixed incorrect console prints
  • Added competitive configs to legacy
  • cg_popupTime has been removed
  • Adjusted sprite height when prone
  • Configstring slightly decreased
  • Server prints used OB version at the start
  • Fixed "falling to the ground" animations
  • Display snapshot time delta instead of ping during demo playback
  • Added rudimental referee bot menu for listen servers
  • Reset command map on team change
  • Mod also accepts most game sounds in .ogg format
  • Fixed /weaplastused cmd on first spawn and switching weapon for the first time
  • Fixed omnibot_enabled 0 and map_restart crash
  • Ignore corpses for bullet traces
  • cg_footsteps has been removed
  • Fixed buffer overflow in Omnibot PrintMessage function
  • Added 2 new spawnflags for trigger_multiple - see Legacy-engine-and-mod-info-for-mappers
  • Added extended soundscript info at start
  • New server votings


  • Added xpsave script
  • Added private messages script
  • Added et_DPrint and et_Error hooks


  • Omni-Bot shortcut fixed (Windows only)

... and various smaller adjustments. We have a new logo!

2.71 rc 3 (released)

Note: ET: L 2.71 rc 2 wasn’t published - see also 2.71 rc 2


  • Crash log file is written again on *nix systems
  • Added MorphOS support


  • Fixed cl_languagedebug cvar
  • Added the option to disable lean on activate button press
  • Fixed "bind <key>" message for unbound keys
  • Fixed Motion JPG avi contains no video
  • Fixed *nix Desktop icon
  • Added background ET:L logo
  • Added linux desktop and mime type files to proper location



  • Added fixed physics feature
  • Tricheckbox slighlty improved
  • Added the KA-BAR weapon for allies
  • Removed obsolete 'lieutenant’ references - changed cvar g_LTChargeTime to g_fieldopsChargeTime
  • Added shadows to the spawn wait text for similarity on texts
  • Added help messages for empty server list to server browser
  • Added servers filtered counter to server browser
  • Fixed WP_MEDKIT animation
  • Added the Browning MG weapon for allied soldiers
  • Added follow text uses icons for class and rank
  • Added crosshair shows class and rank icons instead of text
  • Fixed axis no longer use allies rank symbols
  • Added borders to construction/dynamite bar to be more informative
  • Added spectators view teamflags
  • Beautified several center prints & other game cosmetic
  • Fixed maxlives not displayed in scoreboard
  • Added cg_weapaltReloads cvar - alternative fire reload

... and again more clean up and optimizations in engine and mod.

2.71 rc 2 (unreleased)


  • Configstring 1 sv_referencedPakNames optimized
  • Etkey format adjusted
  • Fix for array overwrite memory corruption when drawing too many polygons
  • Removed newlines for COM_Error calls
  • Fix rconAddress not printing redirected print packets while not on a server
  • Client buffer overflow fix
  • Fixed client console with colored input - renders the escapes and the colors as in ioq3
  • Use different config file for dedicated server executable "etconfig_server.cfg"
  • Client takes account for slash AND trailing \0 in field char events
  • Translation updates
  • Support of et:// protocol handling and registration
  • s_useOpenAL cvar removed - s_initsound '2’ sets OpenAL instead
  • Removed 'MODE is unbound, use controls menu to set’ print on linux console
  • Fixed frequently not playing sounds
  • New command to clean up fs_homepath - see also menu → options → clean
  • 2 wallhack prediction fixes
  • Better limits & default values for sv_wh_bbox cvars
  • New feature: PID file for client and dedicated server
  • New server DDOS protection for getchallenge requests
  • Fixed potential buffer overflows
  • Fixed never working cvars r_maxpolyverts and r_maxpolys
  • Fixed dedicated server consumes 100% CPU when no map is loaded
  • Fixed Sys_Dialog for *nix systems not using gnome or KDE
  • Fixed temp memory to be present all the time
  • Fixed undesired CAPSLOCK behaviour - you can bind it now
  • Fixed bsp flares causing surface corruption
  • Joystick code reactivated (apple excluded)
  • Fixed text getting appended to vid_restart in command buffer
  • cl_timeout default value decreased to 30
  • Fixed keyboard issues on Windows (ALT and CTRL keys)
  • Fixed usage and printing of long GL extensions string (>4096 chars)
  • Fixed null model axis disappearing if sky is in view
  • LAN_RemoveServer can remove all servers of same type
  • ARM Linux support by ptitSeb
  • Fixed UI rendering issue with r_mode 11
  • Fixed recursive crash when home path cannot be created
  • OpenPandora port by ptitSeb
  • Release input devices in Sys_ErrorDialog
  • OpenGL-ES support by ptitSeb
  • Genuine/vanilla etmain/mp_bin.pk3 is no longer referenced
  • Added scollbar to console
  • Fixed freeing commands on shutdown
  • Improved console handling (tab & cvar cycle)
  • Fixed ALT + tab minimize bug


  • Country flags
  • cg_muzzleFlash introduced
  • Scoreboard spectator fix
  • ETPro like class cmd
  • Fixed CG_AllocMark using wrong time in while loop
  • Fixed mapvoting - clients were able to vote several times
  • Command map spawnpoint selection fix
  • CG_ReadNextSnapshot fix for local hosts demos
  • Arty/airstrike rate limiting by forty - new cvars team_airstrikeTime and team_artyTime
  • Fix for Cmd_Vote_f() not accepting nonsense
  • Silent door sounds for croaching players
  • team_max restrictions introduced
  • Level up customization - see skill_X cvars
  • Lua G_XP_Set, G_ResetXP and Lua trap_FS_GetFileList functions have been added
  • Fixed Lua sha1 checksum - did work only for capitalized inputs
  • g_intermissionTime and g_intermissionReadyPercent cvars introduced
  • sv_cvar command has been added to force cvars
  • Fixed wrong server cvar g_protectLog at etl_server.cfg
  • Fixed: g_inactivity and g_spectatorInactivity cvars
  • g_mapScriptDirectory and g_mapConfig cvars introduced
  • Custom huds cg_althud
  • Popup customization
  • Team class limitations team_maxCLASS
  • Team weapon limitations team_maxWEAPON
  • More fireteam functions
  • Rifle clip sizes increased
  • Force client cvars
  • Added local time to the hud
  • Show players latched class in fireteam
  • g_moverscale cvar introduced
  • Replaced stamina- with breath bar under water
  • Removed a warning when custom- or Lua sounds are played
  • Allow voice chats as spectator
  • Config string optimizations
  • Draw loading text in status bar
  • Fixed buggy team chat display when cg_locations is set
  • Scaled map name on loading screen to fit its bounding box
  • Fixed client is shown as 'connecting’ while already connected
  • Client gets info when muted and tries to chat
  • cg_centertime is no longer cheat protected
  • Colored obituary prints for team- and self kills with used weapon
  • Fixed CG_AllocMark using wrong time in while loop
  • Limbo spawnpoint selection fix
  • Deny /imready in intermission and gametype mapvoting
  • Stop processing ClientUserInfoChanged when client is dropped
  • bg_pmove.c slightly optimized
  • Server Browser rework - added new buttons & filters
  • Added configurable HUD
  • Fixed memory leak when lua is reading files

... and again more clean up in engine and mod.

2.71 rc 1 (released)


  • New icon is now part of the binaries (Windows)
  • Fixed some code issues found by static analysis tools
  • 'modellist' info extended
  • Fixed doppler effect (panzer rocket sound fix)
  • SDL sound cvars changed to use genuine cvars (s_sdlSpeeds_khz, s_sdlBitss_bits, s_sdlChannelss_channel)
  • Fixed openAL support; fixed changing music volume when using the DMA backend
  • Fixed va() function (reverted ioquake implementation back to 2.60b code)
  • Lighmap loading works again
  • Automatically append git revision to the version string
  • Code clean up & cvars removal
  • Wallhack prediction by Laszlo Menczel has been added
  • Slight fog bug fix
  • Added ncurses console
  • Separate log for server attacks and security related issues has been added - see sv_protectLog
  • echo command now works from scripts like autoexec.cfg and when disconnected from a server
  • Sound module doesn’t waste memory anymore
  • Memory leaks fixed
  • gameinfo.dat is no longer used
  • Clients receive message of the day (MOTD) from
  • Increased limit of same sound at same time
  • Client checks for update on start
  • Unique M_SQRT2 & usage
  • Fixed client status bar after vid_restart
  • Fixed heartbeat - master server always received keep-alive packet from server even it was quitting
  • Several translations have been added
  • Image loader client crash fix
  • Rework of developer 1 debug messages for asset loading
  • Fixed *nix ALSA sound (wasn’t built in by accident)
  • AROS port code by BSzili
  • Client sound support of ogg vorbis files
  • serverinfo.dat is no longer used, now storing favourites in favinfo.dat (speeds up vid_restart)
  • Fix for spoofed infoResponse packets
  • ET:L won’t start when fs_homepath and fs_basepath point to the same path (dedicated servers excluded)
  • Keypad fix for NUM pressed digits
  • Fixed an issue where Sys_LoadDll() fails
  • Ported ioquake3’s .avi recorder code by Tim Angus
  • Fixed path seperator in /path cmd being not OS specific
  • Fixed wrong checksum calculation for 64bit


  • Fixed some code issues found by static analysis tools
  • Several model and animation issues fixed
  • Revive of gib models
  • More code clean up
  • Warning about two identical localisation strings fixed
  • Console commands playsound and playsound_env have been added. Note: Only ET: Legacy clients will hear *.ogg sounds!
  • Lua support for game
  • Menu scripts extended
  • PM_Weapon() fix - don’t cool while in limbo
  • Map location override databases see cg_locations
  • Missing announcer for 'goat’, 'prepare to fight’ & 'fight’
  • Several sound fixes
  • Weapon stats fix
  • Code clean up & cvars removal
  • Credits Page
  • Debriefing team results headers use skill icons
  • Userinfocheck secured, based on combinedfixes.lua
  • Connection limit per IP added - see g_ip_max_clients
  • Some sound fixes
  • Fixed player die animation
  • ETPro like spawntimers
  • r_gamma is settable via options graphics menu
  • Drop packs on limbo death - g_dropAmmo & g_dropHealth introduced
  • Push players - see g_shove
  • Teleporter sound fix
  • Fixed a bug introduced with 2.70rc1 where clients leave prone with no weapon view
  • Client side log - see cg_logFile
  • ETPro style weapon icon flash - see cg_drawWeaponIconFlash 2
  • Gametype 6 map voting has been added
  • g_campaigns cvar introduced
  • g_maxTeamLandmines cvar introduced
  • ETPro like script actions create & delete
  • Visible leaning
  • New separate legacy mod cfg file - see etmain path
  • Updated Omni-Bot files & small bot fixes
  • Fixed 'exceeded MAX_MULTI_SPAWNTARGETS’ error
  • Reset the remappedShaders data structure on map start

2.70 rc 1 (released)

2.70 is Linux and Windows only.


  • Windows full installer
  • New ET:Legacy path structure - see ET_Legacy_path_structure
    • ET:L now uses its own default fs_homepath home directory
      • ~/.etlwolf on linux
      • <DOCUMENTS_FOLDER>\ETLWolf on Windows
  • Code clean up - unused code and cvars removal - see List_of_cvars
  • Increased com_soundmegs (128MB) and com_soundmegs (160MB) default value
  • Several exploit fixes
  • Fixed Invalid .PK3 files referenced
  • Fixed Linux r_depthbits crash
  • DRDoS protection see sv_protect -see List_of_cvars
  • sv_timeout has been split - see sv_dl_timeout List_of_cvars
  • Enabled translation support
  • Fixed memory leak
  • Print the full OpenGL extensions string
  • sv_advert introduced - controls server behaviour to 3rd parties - see List_of_cvars
  • New game icon
  • Changed fs_game default to 'legacy’
  • ...


  • Code clean up - unused code and cvars removal - see List_of_cvars
  • Several vanilla mod bug fixes (callvote exploit fix, remap shader fix ...)
  • Omni-Bot game and install support
  • Team chat flags have been added
  • Basic ingame translations for czech, danish, dutch, german and polish
  • Added Zinx’s etpro antiwarp
  • Added forty’s SP_func_fakebrush() function for fake brushes
  • UI serverbrowser filters non ET:Legacy compatible servers (ETPro & PB)
  • Menu additionals
  • Punkbuster references removed
  • Client side hitsounds
  • ...

2.70 (beta 4)


  • Jaymod 2.2.0 compatibility
  • Imported all the fixes from the Project: Bug Fix
  • Etkey is optionally downloaded from (this will be replaced in the future)
  • Reverted change: ET:L uses ~/.etwolf as its home directory again
  • Other minor changes, for a complete list of changes have a look here

2.70 (beta 3)


  • ScreenshotJPEG command issue fixed (thanks acQu)
  • Morsik’s patch for PB-compatible etkey combined with the old stuff
  • Very basic Visual Studio support
  • s_muteWhenMinimized set to 1 by default
  • ET: L now uses its own home directory (~/.etlegacy on linux)
  • Other minor changes

2.70 (beta 2)


  • Workaround for the mouse getting stuck in the windowed mode (thanks Mateos)
  • Alt+Enter switches from/to fullscreen mode on all platforms
  • Added: ability to mute sound when the game is minimized (thanks acQu)
  • Switched from Makefile to premake build system (inspired by ET-XreaL)

2.70 (beta 1)


  • Added fix for libjpeg compatibility (originally written by Ilm) (broken in alpha2)
  • Windowed mode behaves better (but it is not noob-friendly yet)
  • Libraries are now all linked dynamically (Linux needs: libjpeg, libcurl, sdl)

2.70 (alpha 2)


  • ALT+TAB minimizes the game
  • Sound works now correctly on Windows and SDL is linked dynamically
  • Fixed key binding on international keyboards
  • Disabled OpenAL

2.70 (alpha)


  • Switched from to
  • Compatibility with NoQuarter 1.2.9
  • Ported etkey generation from ioquake
  • Updated CURL lib to the latest version available
  • Resolved about a 1000 compiler warnings (still a few hundreds left)
  • Removed some useless and deprecated code (a lot more to go)
  • All the fixes and improvements made by raedwulf (move from deprecated platform specific code to SDL, sound fix on linux, etc.)

ET changelog/readme/info

2.60b/d patch (released 08/05/06)

  • CVE-2006-2082: directory traversal / information leak in Quake III Arena auto download feature
    Ludwig Nussel and Thilo Shulz discovered a vulnerability letting a malicious client download files from a server if auto download is enabled ( sv_allowDownload 1 ).
  • Issue #2 ( CVE pending ): R_RemapShaders buffer overflow
    A second issue fixed in this release would let a malicious server exploit a buffer overflow to execute a shellcode on connecting clients.

2.60 patch (released 14/03/05)

New features

  • Minor optimizations in server and client engine for lower cpu usage.
  • Client can record game audio to a wav file.
  • wav_record starts recording
  • wav_stoprecord stops recording
  • cl_wavefilerecord 1 will start recording from the moment a demo is loaded.
  • "Unable to load an official pak file" now reports the pak filenames in the console.
  • Win32 and Linux sound cvars are now unified:
  • s_khz, s_bits, s_numchannels
  • s_khz is now a CVAR_LATCH.
  • Players can override unsafe cvars (e.g., from a crash) with com_ignorecrash 1
  • Server can give alternate messages to "server is full" by changing the cvar sv_fullmsg
  • Server can redirect clients to other servers when full (e.g. sv_fullmsg "ET://")
  • Server will switch to GT_WOLF if "map" can’t start a campaign.
  • /demo can now specify .dm_83 extension explicitly, and will try dm_83 and dm_84 if extension isn’t specified.
  • Abbreviated snapshots are now sent when clients aren’t fully connected. Saves bandwidth on map rotations.
  • Client may move the demo recording statusline with cg_recording_statusline. 0 hides it completely.
  • /buyNow, /singlePlayLink commands removed.
  • 'MODS’ menu added.
  • Anisotropic texture filtering is now supported in renderer.
  • Enable with r_ext_texture_filter_anisotropic 1 and use r_textureAnisotropy to set the filtering level.
  • cg_draw2D is no longer cheat protected.
  • Wounded freelook is now enabled (a la RTCW). It is also completely moved clientside so there is no lag.
  • Vote string is now printed to console when vote is called.

win32 specific:

  • Client can clear the dedicated console with /clearviewlog
  • s_khz 44 now works.

Linux specific:

  • Client can disable built-in mouse acceleration with in_dgamouse 2
  • r_swapInterval is now supported
  • Changed Linux key handling so ctrl/shift/alt/etc don’t make a difference for any keys, to match Windows® better.

Bug Fixes

Class Specific:

  • Fixed wounded CovOps stealing uniforms if they were close enough.
  • Fixed incorrect Level 4 CovOps knife damage on wounded players.
  • Fixed disguised CovOps having laggy health to enemy team.
  • Fixed Level 3 engineering using incorrect charge for landmines.
  • Fixed Field Ops incorrectly using medic charge time for ammo packs.


  • Fixed http download crashes.
  • Client now sends a UserAgent of ID_DOWNLOAD/2.0 libcurl/7.12.2 on downloads.
  • Client now sends a referrer of ET://server.IP.address:port on downloads.
  • Various server engine crashes fixed.
  • Spectators could sometimes move-partway-through-walls on connects.
  • Fixed issues with (false "com_crashed" situations).
  • Clients would often get "disconnected for unknown reason" instead of a proper disconnect message.
  • Fixed more than 10 maps in a campaign crashing the server.
  • Fixed skulls sometimes shown in scoreboard for live players.
  • Fixed campaign count being checked once per campaign.
  • Fixed incorrect first person tank muzzle origin for cg_drawgun 0.
  • Fixed players being able to "fire" flamethrower and tank gun simultaneously with cg_drawgun 0.
  • Fixed players being switched to soldier class upon attaining level 4 lw/hw skill.
  • Fixed Referee menu expanding colors twice.
  • Fixed foreign keyboards inputting unsupported characters after opening console.
  • Fixed translations becoming incorrect if cl_language was -1 or 0.
  • Fixed powerups being laggy (e.g., objective powerup would take a few seconds to show on hud).
  • Fixed silent landmines (e.g., landmines sometimes exploded without hearing the trigger at all).
  • Fixed engine lowercasing all binds (e.g., bind a "say Hello" and then press a, it would say “hello” in lowercase).
  • Fixed revive snapping players’ view around.
  • Fixed Players_Axis/Players_Allies getting too large and crashing server.
  • Fixed players "sticking" to each other in collisions.
  • Fixed dynamite on movers triggering objectives.
  • Fixed "configstring > max_configstrings" connect bug.
  • Fixed Satchel detonator work incorrectly when spectating.
  • Fixed the prediction error that occurs when a constructible is finished building.
  • Fixed prediction error when cratering.
  • Fixed anti-bunnyhop.
  • Fixed doubled events (e.g., double/triple misfiring while jumping or being hit).
  • Fixed pistol prediction (client could "fire" the pistol faster than it’s supposed to).
  • Fixed framerate dependency of mg42s.
  • Fixed tracemap generation breaking when there was a flat plane at lowest point in a map.
  • Fixed players being randomly switched to spectator mode upon attaining level 4 skills.
  • Fixed Antilag (it was dependent on client fps, and headshots weren’t delagged).
  • Fixed Timestamps in logs getting truncated.
  • Fixed renderer crashing with too many stretchpics (e.g., topshots and weaponstats at the same time, if they were full).
  • Fixed players mysteriously sinking into the ground and cratering when bouncing off specific map geometry.
  • Fixed engine improperly interpreting certain IP addresses as LAN addresses.
  • Fixed sign extension bug in console code that caused high ascii characters in the console to be displayed in the wrong color.
  • Fixed artillery markers not being properly drawn on compass.
  • Fixed hostname being exactly 21 chars long with a period in position 9 being treated as IPX.
  • Fixed overflow when more than MAX_GLOBAL_SERVERS are returned from the master.
  • Fixed Luger spread and pausing on last shot.
  • Fixed akimbo rapid fire exploit.
  • Fixed zoom exploit.
  • Fixed security hole allowing clients to override IP.
  • Fixed spectator/limbo cameras slowly 'drifting’ and never reaching 0 velocity.
  • Fixed download redirection notices printing repeatedly in server console.
  • Fixed LMS not showing who drew first blood.
  • Fixed LMS not showing how many wins each team had.
  • Fixed problem that when players connected after a vote was called they got stuck with a vote on their screen through the whole round.
  • Fixed the issue that when playing the Fuel Dump map you could plant the dynamite and it would say, "base fortification" but actually destroy the Fuel Dump.
  • Fixed pmove and the game disagreeing about weapon charge usage.
  • Fixed radar dynamite bug (both sides could plant dynamite near the truck for no apparent reason, and get XP for defusing it).
  • Fixed the problem that when all of your team’s mines were in use, you couldn’t disarm enemy landmines.
  • Fixed team landmine count being incorrect (you could plant 11 by triggering 10th and planting 11th) and this broke the defusing team’s landmines.
  • Fixed mistaken dynamite announcements (announcement planting dynamite near goldrush tank barrier 2, but it doesn’t get destroyed).
  • Fixed players blocking dynamite from destroying constructible objectives.
  • Fixed client losing prone state after packet loss.
  • Fixed winning team not winning when they eliminated opposition <3 sec before round end, and then died themselves.
  • Fixed LMS not always ending when a team was eliminated.
  • Fixed switching weapon during pause.
  • Fixed akimbo weapons and deployed mobile MG42 ignoring cg_autoreload.
  • Fixed Maxlives adjuster on timelimit 0.
  • Fixed crosshair names randomly not working (tunnels in oasis, crypt in resurrection).
  • Fixed g_{axies,allies}mapxp overflowing on long campaigns crashing the server.
  • Fixed static mg42s not hurting props (e.g., the mg42 outside allied spawn didn’t damage the wooden fence).
  • Fixed incorrect 'complaint dismissed’ message when player disconnects.
  • Fixed mg42s not being antilagged.
  • Fixed riflegrenade-through-teamdoor exploit.
  • Fixed intermission ready (match_readypercent now applies to intermissions).
  • Fixed intermission ready should not waiting on spectators.
  • Fixed large cg_errordecay values exploit.
  • Fixed CovOps landmine spotting.
  • Fixed knife not being antilagged.
  • Fixed players shooting themselves in the head when prone, firing through a breakable (e.g., a window).
  • Fixed Medic viewlocking sometimes snapping to non-medics.
  • Fixed Oversize servercommands crashing client.
  • Fixed engine eating "//" in server commandlines.
  • Fixed Garand/K43 ammo exploit.
  • Fixed free ammo via spectators exploit.
  • Fixed Limbo’d players crashing servers via following carriers and disconnecting.
  • Fixed the distancefalloff bug (damage would drop, then suddenly increase with distance).
  • Fixed "setu ch" crashing server.
  • Fixed CS_SYSTEMINFO exceeding 1024 getting truncated on map changes.
  • Fixed the prone → invisible player (prone into wall) bug.
  • Fixed Ctrl-` for the mini-console.
  • Fixed the disguised name and normal name both being shown when moving the crosshair over a disguised covert ops while spectating.
  • Fixed kick/mute/referee/etc. players with >32-character names.
  • Fixed weapon heat sometimes flashing back down to 0 when maxed out.
  • Fixed random lockups occurring when blood or debris is spawned.
  • Battery bunker now autoselects spawnpoint when captured.
  • Moving objects now predict a continuation rather than a stop (e.g., fixes jittery tug on railgun).
  • Clients can no longer /userinfo and nuke their userinfo from the console.
  • Binoculars can no longer be used while using mounted mobile MG42 or mortar.
  • Removed "Killed by <name>" in endround scoreboard.
  • Removed unused cg_specswing cvar.
  • F13-F15 now works if the user’s keyboard/X mapping sends them.
  • Capslock, kp_numlock, and kp_equals are all usable in Linux now.
  • Made some minor fixes to Linux keyhandling.

Changes relevant for modders

  • NOTE FOR MOD USERS: It is recommended that any user modifications that have been installed to the Wolfenstein: Enemy Territory directory be removed.
    These modifications are not supported by Activision® and may not be compatible with some of the fixes that are included with this patch.
  • The entire source tree is now -Wall -pedantic -std=c99 clean, removing all the noise from the silly warnings so that useful warnings are actually noticed.
    No functional changes, except that HINT_CHAIR doesn’t work at all now (where it worked before, but unreliably).
  • All printf-style varargs functions are now protected with GCC’s attribute extension, which should help catch printf parameter errors.
  • Added a 4th parameter to CG_INIT - qboolean demoPlayback - since some mods need this at init time, and drawactiveframe is too late for them.
  • MAX_CVARS increased to 2048 from 1024, as ET is relatively close to the 1024 limit with both client and server cvars.
    Enlarged FILE_HASH_SIZE to compensate for the enlarged cvar table size.
  • kick/ban code is now moved entirely into qagame, mods can choose to use the engine banning system or the qagame one.
    #define USE_ENGINE_BANLIST qtrue, changing to qfalse makes use of the qagame ban system
  • Demo recording status has been moved entirely to cgame. See CG_DrawDemoRecording().
  • When PERS_HWEAPON_USE was set, the engine blocked the update of usercmd_t. This has been fixed and the relevant code changed in pmove_fixed.c
  • FUI can now render models
  • cgame can synchronize rendering with trap_R_Finish if needed.
  • CG_SHUTDOWN is now called on /quit
  • MAX_GLOBAL_SERVER is now 4096
  • Significantly enlarged MAX_CMD_BUFFER (16k→128k)
  • Added better debug info for Info_*() infostring functions
  • The master server now supports filters for fs_game and gametype.
  • E.g. to request a list of protocol 84 servers with fs_game "etpro" and g_gametype 5,
  • ui_main would execute the following command:
  • globalservers 0 84 \game\etpro\gametype\5

Rendering to textures:

  • cgame may now render directly to a texture on the fly.
  • Use trap_R_GetTextureId() to retrieve a handle to an existing texture (tga/jpg).
  • Use trap_R_RenderToTexture( textureid, x, y, w, h ) to render into the texture.
  • Screen coordinates 0,0 for trap_R_RenderToTexture are at the lower left of the screen.
  • You can get a list of textures the engine has loaded with /imagelist
  • Example code can be found in cg_limbopanel.c at the bottom of CG_DrawPlayerHead().

Dynamic shaders:

  • cgame may build shader scripts on the fly, via code.
  • Use trap_R_LoadDynamicShader( shadername, shadertext ) to load a new shader into memory.
  • The loaded shader can then be referenced with trap_R_RegisterShader() and used as if it were a normal shader.
    Combined with trap_R_RemapShader(), cgame can replace any shader.
  • trap_R_LoadDynamicShader( "shadername", NULL ) unloads the dynamic shader "shadername".
  • trap_R_LoadDynamicShader( NULL, NULL ) unloads all dynamic shaders.
  • Example code can be found in cg_main.c, look for #ifdef TEST_API_DYNAMICSHADER

Raw binary channel for client↔server:

  • cgame and qagame may now communicate using a raw binary stream.
    These messages are unreliable (like udp), and are sent only once per server frame.
  • qagame and cgame are responsible for managing retransmissions.
  • Sending a message overwrites the outgoing message buffer.
  • Once the message has been sent (unreliably), the message buffer is cleared.
  • The message is sent with trap_SendMessage, and its status can be read with trap_MessageStatus.
  • When the cgame and/or qagame receive a message, they get a *_MESSAGERECEIVED event to vmMain, which has a timestamp and the message that was sent during that snapshot.

void trap_SendMessage( /* server: int clientNum */, char *buf, int buflen );
clientNum: the client to send the message to (server only)
buf: the message to send
buflen: length of the message to send

messageStatus_t trap_MessageStatus( /* server: int clientNum */ );
clientNum: the client whose buffer we want to check (server only)
returns MESSAGE_EMPTY on empty buffer
returns MESSAGE_WAITING when not yet sent (can be caused by rate limit)
returns MESSAGE_WAITING_OVERFLOW when the message would make
the packet too large to send

int vmMain( int command, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6 );
(int)clientNum = arg0: clientNum message was received from
(char*)buffer = arg1: pointer to the message received (temporary)
(int)buflen = arg2: length of message received
(int)commandTime = arg3: timestamp of message (from client)

int vmMain( int command, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6 );
(char*)buffer = arg0: pointer to the message received (temporary)
(int)buflen = arg1: length of message received
(int)commandTime = arg2: timestamp of message (from server)

Fixed the Com_BitSet() with ridiculous bit number in the anim condition code.
buddyClients was not used, ignoreClients was too small and didn’t use COM_Bit* functions.
Fixed incorrect class determination in CG_PlayerClassForClientinfo().
CG_AddPMItem failed on multi-line messages.

Lag and packet loss simulation:

  • Client and server may simulate packet loss and increased latency with new cvars.
  • These will only function when sv_cheats is 1.
  • Server uses the cvars sv_packetloss and sv_packetdelay.
  • Client uses the cvars cl_packetloss and cl_packetdelay.

For example, to make the server simulate 200ms latency and 30% packetloss:
sv_packetdelay 200
sv_packetloss 30

  • These cvars only affect transmitted packets, not received packets.
  • To simulate packetloss and latency in both directions you need to set the cvars on both client and server.

Thanks to Chad Siedhoff and the Activision Visioneers for helping with this patch!

1.02 patch (released 09/09/03)

Initial release (released 28/05/03)