Current differences between Fortress Forever 2.46 and the Steam beta version:

Fixed spectators not getting their kills/deaths/fortpoints reset on restart round

Fixed getting a frag added when using the 'spectate' console command (it used to be to compensate for the -1 frag from suiciding)

Fixed grenades disappearing after falling too far

Lowered the hard cap from 180% to 171%

Fixed flags getting stuck in ceilings

Added support for separate collision and touch bounds for info_ff_scripts. The sizes are now controlled by Lua functions:
+ <entity_name>:gettouchsizes( mins, maxs ) passes min and max vectors by reference for the function to alter in place
+ <entity_name>:getphysicssizes( mins, maxs ) passes min and max vectors by reference for the function to alter in place
+ <entity_name>:getbloatsize() expects a float return value, uses the value to inflate the touch bounding box (default bloat is 12)

Flag touch bounds have been decreased somewhat significantly: touch height is now ~65% of flag height, and touch width is now ~100% of flag width (flag touch bounds used to be larger than the flag itself in both dimensions)

Added airshot detection
* Airshots show in the console like so: player killed player with weapon (airshot)
* Airshots are logged to file like so: "player<id><steamid><team>" killed "player<id><steamid><team>" with "weapon" (modifier "airshot")
+ The (modifier "") string only gets added if there actually was an airshot, otherwise the entire parenthetical is absent from the line

Fixed ff_training not showing map loading info when launched from the main menu

Allowed the speedometer to show while spectating someone

Added a middle bhop cap - when you are over it, reduce speed by more. Currently set to 1.55 speed (620 for scout) and it has a lower pcfactor (0.3 rather than 0.65). This means downtrimping is good for one jump and reduces successive conc skim jumps without reducing the hard cap too much

Slimmed down the number of maps included with FF

Fixed ff_restartround resetting twice when called with 0 prematch time

Made 0 prematch the default when using ff_restartround without a parameter (ff_setprematch is better for cases where you just want to add prematch)

Make HH explosive grenades (frag/mirv) work like they do in TFC (HHing a gren now simply adds 1000 speed in the direction that you're currently moving (or 950 speed straight up if you're not moving at all)

Cap jump pad + conc horiz and vert speed separately

Set jump pad horiz boost to 768 (was 1024 in 2.46)

Optimise Lua HUD network messages (send a number ID over the network rather than a string)

Lua changes:

Lua: Expose player functions GetFortPoints, GetFrags, GetDeaths

Lua: Fix execution errors not being caught and failing silently

Lua: Add global function GetGameDescription

Lua: Add buildable_killed(buildable, damageinfo) callback

Lua: Add player:SetDisguise(int teamId, int classId, bool isInstant)

Lua: Allow IncludeScript to use paths to subdirectories

Lua: Add player:IsInAir(unitsAboveGround) overload (checks if the player is the specified number of units above the ground)

Lua: Add player:IsFlashlightOn()

Lua: Fix AT.kForceThrowItems and AT.kForceDropItems not doing what they say

sg:SetLevel(int level) // sets the level (does not play upgrade sounds)
sg:Upgrade() // upgrades to the next level
sg:Repair(int cells) // adds health based on the number of cells
sg:AddAmmo(int shells, int rockets) // adds ammo
sg:RocketPosition() // returns the Vector position of where rockets are fired from
sg:MuzzlePosition() // returns the Vector position of where bullets are fired from
sg:GetRockets() // number of rockets the SG has
sg:GetShells() // number of shells the SG has
sg:GetHealth() // amount of health the SG has
sg:SetRockets(int rockets)
sg:SetShells(int shells)
sg:SetHealth(int health)
sg:GetMaxRockets()
sg:GetMaxShells()
sg:GetMaxHealth()
sg:SetFocusPoint(Vector point) // sets where the SG wants to look
sg:GetEnemy() // gets the target of the SG (CBaseEntity)
sg:SetEnemy(CBaseEntity enemy)
sg:GetVecAiming() // gets the direction vector of the SG's current aim direction
sg:GetVecGoal() // gets the direction vector of the SG's goal aim direction
sg:Shoot() // makes the SG shoot one shell
sg:ShootRocket() // makes the SG shoot one rocket