AssaultCube ChangeLog

1.1.0.4 -> 1.2.0.0
---------------------

Weapons
---------------------

[*] Sniper spread reduced (60 to 50)
[*] Sniper damage set to 82
[*] Pistol spread reduced
[*] Pistol magsize enlarged (8 to 10)
[*] SMG damage increased (15 to 16)
[*] SMG initial spread reduced
[*] SMG recoil increased
[*] AR damage reduced (24 to 22)
[*] AR kickback reduced (40 to 30)
[*] AR spread reduced
[*] AR recoil increased
[*] New shotgun behavior :  3 types of rays (center, medium, outter) with different properties.
[*] "piercing", A percent of armor to ignore when dealing damage.
[*] Knife fully ignores armor
[*] Carbine ignores some armor
[*] Sniper ignores some armor

[*] Quicknadethrow now switches to nade even if the player was attacking.
[*] Grenades accuracy, real shotgun accuracy.
[*] Hudgun can be displayed when spectating (and in demos - e.g. /specthudgun 1).
[*] Burst fire settings


Gameplay
---------------------

[*] Votable timelimit
[*] New gamemodes Team Last Swiss Standing / Team Pistol Frenzy
[*] HTF now forces those who have the best health to pickup the flag instead of allocating it randomly

Chat
---------------------

[*] New Private messages feature (/pm cn message) default bind is N

Servers
---------------------

[*] Sets kill messages to appear in log for each weapon from a config file. (Default: serverkillmessages.cfg)
[*] New switch to disable game status table of scores logging. (-l switch)
[*] Linux server available HDD space bug fixed.
[*] /setnext bug fixed.
[*] Fixed bug with map names containing slashes.
[*] The carbine is now consistently called such. (not "Rifle")
[*] The server now differentiates between CTF/HTF scored flags in the serverlogs. (Useful for parsing/stats collection.)
[*] Server can restricts voting from a mode for any map
[*] Prevent name/skin changing spam
[*] Prevent clients from downloading the same demo twice
[*] Server side spawn delay check

Server browser
----------------------

[*] Colored ping in serverbrowser.
[*] Ability to connect to a server that requires a password via the server browser. (password protected, deban, etc.)

Media (maps/textures/models)
---------------------

[*] Ability to download maps, textures, mapmodels on the fly when they're missing
[*] New map "ac_avenue"
[*] New map "ac_cavern"
[*] New map "ac_edifice"
[*] New map "ac_industrial"
[*] New map "ac_stellar"
[*] New map "ac_lainio"
[*] New map "ac_swamp"
[*] New map "ac_terros"
[*] New map "ac_venison"
[*] New map "ac_wasteland"
[*] Bot waypoints for maps: ac_edifice, ac_industrial, ac_ingress, and ac_stellar.
[*] md2 models converted to md3
[*] Many new mapmodels and textures
[*] Packaging reworked

Mapping
---------------------
[*] Key "F7" is now key bound to toggle fullbright on/off.
[*] Key "7" is now key bound to "nextclosestent" - it gets typo'd all the time.
[*] entproperty now works in MP coop, but buffered.
[*] Textures can now have a non-default scale, definable through the texture command.
[*] Multiple selections support
[*] Configurable wave height
[*] newmap crash fix

Rendering / HUD / ...
---------------------

[*] Now using ANIM_REVERSE for playermodels going backward.
[*] Fixed flag icon transparency.
[*] Nearplane fix.
[*] screenshotscale - in-engine scaling of screenshots.
[*] showtargetname - turns on/off showing the player name on the HUD when in your crosshair.
[*] Scoreboard doesn't show ping/score/pj in singleplayer
[*] Customizable scoreboard, ability to display ratio
[*] Scoreboard shows the winner of each game.
[*] showspeed - turns speed indicator on/off
[*] Improved tab completion.

Physics
---------------------

[*] New "flyspeed" variable for determining how much to multiply your fly speeds by. (Range: 1.0...5.0)
[*] Jump/Crouch raises or lowers the camera in editmode, release to stop.

Demos / Spectating
---------------------

[*] Drop camera to previous followed player position when switching to fly specmode.
[*] Fix broken demo-viewer not able to change to SPECTATOR.
[*] Servers now choose a unique file name for the temporary demo file ("demorecord_<IP/local>_<port>")
[*] Hitsound while spectating
[*] Experimental compatibility mode for 1.1.0.4 demos

Sounds / Audio
---------------------
[*] Optional heartbeat sound when health reaches a certain level.

Menus
---------------------
[*] New menuitems in the Keyboard menu, for looking up keybinds, and enabling/disabling the old editing binds system.
[*] New menuitems in the gameplay settings menu, for setting fly velocities, and the color that your name is highlighted in, when it appears on the console via chat. (HIGHLIGHT)
[*] New updated kick/ban/reason menu with client statistics. (Reports teamkills as well.)

Bots
---------------------

[*] New scripted "bot survival mode".
[*] Bots in plclips bug fixed.
[*] Bots now actually fire the carbine.
[*] Bots can switch to, and use pistol, knife or grenades.
[*] Bots can crouch
[*] Bots have different fov, depending on their difficulty.
[*] Bot PF, LSS, Team Survivor & TOSOK modes.

CubeScript
---------------------

[*] persistidents bug fix, aliases write to saved.cfg much more reliably now.
[*] modmdl*N aliases, load custom weapon/pickup/gib models from in-game, on-the-fly via cubescript.
[*] loadcrosshair bug fix, you can load custom crosshairs for each weapon again.
[*] getalias can now work on built-in client variables (CVARs). - (e.g. fov)
[*] forceteam now can target specific team
[*] "Sleeps" can be persistent. (e.g. "Persist" even through map loads - new optional 3rd argument of the /sleep command)
[*] Substr crash bug is fixed. Also the command can now use a negative position value.
[*] New stat in (pstat_score) for teamkills. New list is: FLAGS FRAGS DEATHS POINTS TEAM TEAMKILLS NAME
[*] on_quit.cfg for deleting aliases from saved.cfg upon quit.
[*] Missing bracket ([], (), etc.) errors now also notify the client of what file the error resides in.
[*] New automatically executed scripts folder in the root install directory of AC.
[*] New delta_edit/game_# aliases for easily tweaking gamma/fov/flyspeed on-the-fly. (e.g. Hold F5 and scroll for gamma, F6 for fov, bind "domodifier 10" to a key for flyspeed)
[*] The /mapsize command now silenty returns 6-12, instead of conoutf'ing ssize.
[*] The /spectate command can now only be used if connected to a server.
[*] The /togglebotview command can no longer be used in arena modes.
[*] /keybind bug fix. No more client crash if the argument is an unknown key.
[*] Moved some old/redundant commands to /config/compatibility.cfg.
[*] Hardcoded key bind/editbind/specbind
[*] const            - Creates or sets an alias as a constant
[*] div= and div=f   - Divides an alias by a value.
[*] addpunct         - Injects CubeScript punctuation. (e.g. echo (addpunct hello) // Output: "hello")
[*] break            - Jumps out of a loop created with the "loop" or "while" command.
[*] continue         - Skip current iteration of a "loop" or "while" command.
[*] delmenu          - Deletes all of the menu items in the specified menu.
[*] akimboautoswitch - Enables or disables automatically switching to akimbo upon pickup. (regardless of current weapon)
[*] add2list         - Appends a new element to a list. (Exactly like add2alias, simply without the additional ";")
[*] isIdent          - Determines if the argument given is a built-in identifier.
[*] isSpect          - Determines if you are in any form of spectating (team, or singleplayer "fly")
[*] inWater          - Determines if you are standing or submerged in water.
[*] l0               - Adds leading zeros to an integer.
[*] powf             - Returns a floating point number raised to the power of another floating point number.
[*] rrnd             - Returns a ranged random integer.
[*] storesets        - Generates an alias (list) of the current values for the given CVARs. (Useful for storing current settings into a buffer, before manipulating them with a script, with the intention of restoring them at a later time.)
[*] strlen           - Returns the length (in characters) of the given string.
[*] substr           - Returns a substring from the given string.
[*] strpos           - Returns the position of string B in string A, else -1 for not found. (Useful for parsing.)
[*] strins           - Returns a string, instered into another string, at position x.
[*] curautoteam      - Returns the server's current autoteam state. (0 or 1)
[*] curplayers       - Returns the current number of players. (Works both in singleplayer and multiplayer scenarios.)
[*] cleanshot        - Take a "clean" screenshot with no HUD items.
[*] getEngineState   - Returns a list of the items that showstats displays. (i.e. FPS LOD WQD WVT EVT)
[*] getmode          - Returns the current mode. (e.g. echo (getmode) // Output: team deathmatch // echo (getmode 1) // Output: TDM)
[*] megabind         - Bind a key to many different actions depending on the current game state. (i.e. do this if watching a demo, do this if editing or in coop-edit mode, do this if connected to a server, etc.)
[*] onCallVote       - Native alias that is executed when someone (including yourself) calls a vote.
[*] onChangeVote     - Native alias that is executed when someone (including yourself) changes a vote.
[*] onVoteEnd        - Native alias that is executed when a vote passes or fails.
[*] onKill           - Native alias that is executed when a player is killed.
[*] onFlag           - Native alias that is executed when a flag event occurs.
[*] onLastMin        - Native alias that is executed when the last minute of the current round is reached.
[*] onPickup         - Native alias that is executed when you pick up an item.
[*] onWeaponSwitch   - Native alias that is executed when you switch to a different weapon.
[*] onDisconnect     - Native alias that is executed when you disconnect from a server.
[*] onReload         - Native alias that is executed when you reload a weapon.
[*] onAttack         - Native alias that is executed when you shoot a bullet, throw or nade or attack with your knife.
[*] onNewMap         - Native alias that is executed when you execute the /newmap command.
[*] afterinit        - Native alias that is executed immediately after saved.cfg is loaded.
[*] votepending      - Client variable that is 1 if there is a vote currently pending on the server, else 0. (e.g. echo $votepending // Example output: 0)
[*] setfollowplayer  - Spectates the player with client number x.
[*] rewind           - Rewinds a demo by x seconds. Forwards if x is negative.
[*] setmr            - Seeks a demo to x minutes remaining.
[*] dyngamma         - Enables or disables a new "per-official-map dynamic gamma system".
[*] fragmessage      - Sets the frag message corresponding to a weapon. (Appears on the HUD and in your server logs.)
[*] gibmessage       - Sets the gib message corresponding to a weapon. (Appears on the HUD and in your server logs.)
[*] setgamma         - Sets the default gamma for the map you're on. (Must be an official map.)
[*] forceme          - Calls a vote to force yourself to the enemy team.
[*] copyent          - Copies the current closest entity into a buffer. (Must be in edit mode.)
[*] countwalls       - Returns the number of walls of type x that is in the current selection.
[*] old_editbinds    - Enables or disables the old editing binds. (If disabled, an updated editing binds system is used, that is focused around toggles rather than individual actions for each bind. For more info see the comments in /config/resetbinds.cfg)
[*] pasteent         - Pastes the previously copied entity. (Must be in edit mode.)
[*] gencl            - Creates or modifies an exisiting light entity, with random color values.
[*] genhex           - Creates a random hexadecimal value. (Useful for finding fogcolours, i.e. fogcolour (genhex))
[*] genwc            - Sets the current map's watercolour to random values.
[*] getscrext        - Returns the proper file extension of your current screenshottype setting. (e.g. ".jpg" without the quotes)
[*] oldselstyle      - Enables or disables the old (1.0.4) grid/current selection style. (squares instead of triangles)
[*] Multiple Idents  - New helper aliases for (c). (e.g. echo (red)Hello (blue)world! (white)My fov today is: (orange) $fov)
[*] resetsleeps      - Reset all pending sleeps.
[*] settex           - Set texture given as first argument to the walls of current selection and of the type specified in 2nd argument.
[*] round            - Round a float, returns an integer.
[*] ceil             - Returns the ceil value of a float.
[*] floor            - Returns the floor value of a float.
[*] aliasinit        - Uses checkinit to initialize a list of aliases.
[*] checkinit        - Determines if an alias exists or not, and if it does not exist, it is initialized to a specified value. (If no value is given, it is simply initialized to "")
[*] checkmag         - Determines if there is *any* ammunition available for the specified weapon. (counts currently loaded rounds, and magreserve rounds)
[*] checkrange       - Determines if a value is within a certain range. (supports floats)
[*] ptoggle          - New weapon switching utility to easily flip back and fourth between your primary weapon and a specified weapon.
[*] sndtoggle        - Toggles between primary/secondary weapons.
[*] knftoggle        - Toggles between primary/melee (knife) weapons.
[*] gndtoggle        - Toggles between primary/grenades.
[*] disablehud       - Stores your current HUD configuration into a buffer (for later restoration with /enablehud) and disables it entirely.
[*] enablehud        - Restores your HUD configuration from a previous /disablehud.
[*] tolower          - Converts a string to all lowercase characters.
[*] toupper          - Converts a string to all uppercase characters.
[*] convertcase      - Converts a list of strings to lower/uppercase characters.
[*] testchar         - Tests a character argument for certain things. (e.g. echo (testchar a) // Output: 0 // It is not a 0-9 digit.)
[*] testlist         - Tests a list argument for certain things. (e.g. echo (testlist "1 2.3 3.14") // Output: 1 // It is a valid list of ints/floats.)
[*] listaverage      - Returns the average of a list of numbers. (Supports ints and floats - e.g. echo (listaverage "2 5 5") // Output: 4.0)
[*] player           - Returns a player's attribute (e.g. echo Client number 2 refers to (player 2 name) // Example output: Client number 2 refers to unarmed)
[*] rndmap           - Returns a random official map. (e.g. echo (rndmap) // Example output: ac_desert3)
[*] persistidents    - Controls persistence of idents/aliases. (Stored into saved.cfg on quit.)
[*] add2bind         - Adds a block of code, if it does not already exist, to a keybind.
[*] numconlines      - Returns the current number of lines on the console. (e.g. echo $numconlines // Example output: 153)
[*] Multiple Idents  - New helper aliases for voting for SURV, TPF, and TLSS. (e.g. /surv ac_desert)
[*] looplist         - Browses a list executing a body for each element (e.g. looplist "zero one two three" number [ echo $number ])
[*] gametimestart    - Returns the time (in milliseconds) when the last map was loaded.
[*] mapbackupsonsave - Determines if map backups (.bak) should be created when a map is saved.
[*] isclient         - Determines if the client number given is a valid client (player).
[*] winners          - Returns the list of winning teams or players
[*] drawzone         - Draw a rectangular zone on the minimap
[*] swapelements     - Returns a modified list swapping the positions of 2 elements.
[*] sortlist         - Returns an alphabetically sorted list.
[*] Too many others to list...

I18n / L10n
---------------------

[*] Float separator set to "." (dot) regardless of locale.
