* New weapon: Streetsweeper. A MetroCorp-patented attack drone which, when activated, autonomously seeks out and attacks enemies.
* New campaign: "Escape From Precinct 9".
* New versus map: "Sanctuary".
* New survival map: "Sanctuary Survival".
* New challenge: "Streetsweeper Sweep-up".
* Several new music tracks by Splinter.
* Several new customization items (the new items are currently not unlockable!).
* Map Rotation can now be set to "None", "Vote", "Random" or "One-by-one". This allows you to have a map rotation without the voting.
* All voting can now be done via the main menu as an alternative to using F1-F4 and spacebar. This makes it possible to vote when using a controller.
* The game server browser now shows servers that are hosted in a different version of the game in red.
* When playing any offline game (including challenges and the tutorial) opening the Esc menu will pause the game.
* Shuriken can now be sheathed at any time, e.g. while charging a throw.
* Shuriken pickup amount decreased from 7 to 6 and shuriken damage lowered from 20 to 17 - lowering the total potential damage output from 140 to 102.
* Made bots' aim more stable and less jittery, plus some minor tweaks to the aiming behavior.
* Bots will now always prioritize running towards their guard target if the distance to the target is more than 3 times their guard range or chase range.
* The /ban command now bans a user for 14 days the first ban, 30 days the second ban and permanently the third ban. The default values can be changed in the config.ini file by changing the HOST_GAME_FIRST_BAN_DAYS, HOST_GAME_SECOND_BAN_DAYS and HOST_GAME_THIRD_BAN_DAYS values.
Map editor:
* Live mines, grenades and molotovs can now be used directly in the map editor.
* Added property CameraSecondaryFocusMode to PlayerSpawnTrigger which controls how the camera's secondary focus works for spawned players.
* DialogueTrigger now has an option to show the text in the chat or not.
* Game.WriteToConsole() messages will be completely ignored if not running in the map editor and if the console is hidden.
Bug fixes:
* Fixed a bug where a local co-op player who had previously left an offline game would sometimes appear in a player slot when a new game was hosted.
* Fixed a bug where you could change the drop-in-mode for offline games in the host game panel (drop-in is not applicable in offline games!).
* Fixed a bug where bots could be duplicated over time as players joined and left a game.
* You can now throw shurikens, grenades, molotovs, C4 and mines without hitting teammates standing close to you, as with other thrown weapons.
* The game server browser will no longer reset its scroll position while refreshing.
* Fixed a bug where kicked entries in the server software wouldn't always be displayed properly.
ScriptAPI:
* IPlayer.SetUser() and IUser.SetPlayer() now have an optional argument to disable the flashing effect.
* Added IPlayer.GetCameraSecondaryFocusMode(), IPlayer.SetCameraSecondaryFocusMode(), IObjectStreetsweeper.GetCameraSecondaryFocusMode(), IObjectStreetsweeper.SetCameraSecondaryFocusMode() to be able to control how the camera by default focuses on other players. This is similar to the old AddCameraFocusObject() and IgnoreCameraFocusObject() functions.
* Added IPlayer.SetCurrentMeleeDurability(), IPlayer.SetCurrentMeleeMakeshiftDurability() to be able to control current melee weapon durability.
* Added IPlayer.SetCurrentPrimaryWeaponAmmo(), IPlayer.SetCurrentSecondaryWeaponAmmo() to be able to control ranged weapon ammo and special ammo amount.
* Added IPlayer.SetCurrentThrownItemAmmo() to be able to control thrown item ammo amount.
* Updated IPlayer.CurrentPrimaryWeapon and IPlayer.CurrentSecondaryWeapon with the following properties to be able to read more data about current ranged weapon: WeaponMagCapacity, MaxCarriedSpareMags, MaxTotalAmmo, PowerupBouncingRounds, PowerupFire, ProjectileItem.
* Added IUser.AccountID, IUser.AccountName
* Added IGame.GetProjectiles() to be able to control projectiles.
* Added Events.ProjectileHitCallback to be able to listen on projectile hit events in scripts.
* Updated Event.PlayerDeathCallback with PlayerDeathArgs to be able to read directly if the player was killed, removed or both.
* Updated PlayerDamageCallback with PlayerDamageArgs arguments. This allows you to read type of damage and source object causing the damage.
* Added IPlayer.ChatActive to be able to read if a player has the chat active.
* Added IPlayer.RocketRidingProjectileInstanceID to be able to read the rocket's instance ID.
* Updated Game.CreateDialogue() with an option to show the dialogue in the chat or not.
* Added Event.ExplosionHitCallback to be able to listen to explosions and what they affect.
* Added Event.ObjectCreatedCallback to be able to listen on when objects are created.
* Added Event.ObjectDamageCallback to be able to listen on damage events on objects.
* Added Event.ObjectTerminatedCallback to be able to listen on destroyed and removed objects.
* Added PlayerMeleeActionCallback to be able to listen on player melee actions and what objects they hit.
* Added Game.RayCast(..), IObject.RayCast(..), IObject.HitTest(..) to be able to RayCast and HitTest against objects in the world.
* Added IGame.DrawLine(), IGame.DrawCircle(), IGame.DrawArea(), IGame.DrawText() to be able to draw debug information while testing your map in the editor. See summary for implementation details and notes.
* Added IObjectMineThrown and IObjectGrenadeThrown to be able to change dud chance on explosives and check whether it's a dud or not.
* Updated EffectName static class with available effects and documentation over possible arguments for each effect to be used with the Game.PlayEffect(..) function.