Added different kill icons for unbounced rails, single bounced rails, and double bounced rails
Added airshot detection
Airshots show in the console like so: player killed player with weapon (airshot)
Airshots are logged to file like so: "player" killed "player" 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
Added sparks/dust to the feet of rampsliders (cl_rampslidefx cvar for toggling the effects on/off, and cl_rampslidefx_* cvars for controlling how it looks/behaves)
Added team-colored trail to flags (cl_flagtrails cvar for toggling it on/off)
Allowed bounced rails to collide with their shooter
Added hud_weaponselect cvar (briefly shows the weapon select menu whenever switching weapons when hud_fastswitch is enabled; defaulted to enabled)
Gameplay
Lowered the hard cap from 180% to 171%
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 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
Made 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)
Capped jump pad + conc horiz and vert speed separately
Set jump pad horiz boost to 768 (was 1024 in 2.46)
Classes
Removed the single shotgun from the hwguy, medic, and pyro (see #82)
Removed nailgun from sniper
Made the sniper rifle use nails to avoid shared ammo between sniper rifle/autorifle
Maps
Slimmed down the number of maps included with FF
Improved base_shutdown.lua
Added built-in support for trigger-based buttons (blue_security_trigger/red_security_trigger)
Added built-in support for Lua-defined security shutdown length (SECURITY_LENGTH)
Added built-in support for turning on/off lights, brushes, trigger_ff_clips, and trigger_hurts
Added some helpful team-oriented trigger definitions in base_teamplay.lua
Added a timer on the HUD that reflects how long security is down for on all security maps
Reverted all IvD maps that used the time-limited-round-based system to the default IvD system (only switch teams after all caps have been captured)
Removed the objective icon on the flag for defenders in IvD/AvD maps (it always points to the cap point that needs to be defended instead)
Changed the team names in ff_dm to something more appropriate
Removed the map guide menu as it has never been utilized
Allowed the speedometer to show while spectating someone
Misc
Added Spanish translation by VMX and Firefox11
Added (incomplete) Russian localization by Gordon
Added Portuguese (BR) translation by Gemini Saga
Defaulted hud_fastswitch to 1
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)
Added hud_fastswitch and hud_weaponselect to the Fortress Options "HUD" section
Reverted back to the 2.4 menu background because it was pretty cool
Removed the map guide menu and make the Flythrough button go directly to the flythrough
Improved HUD font: add Latin-1 Supplement and other missing chars (adds things like custom accented chars, #, &, $, ~, etc)
Optimised Lua HUD network messages (send a number ID over the network rather than a string)
Fixes
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
Fixed flags getting stuck in ceilings
Fixed ff_training not showing map loading info when launched from the main menu
Fixed ff_restartround resetting twice when called with 0 prematch time
Fixed unicode character support in VGUI/HUD elements
Fixed materials/ff/ff08_sign_up_green material using the yellow texture instead of the green one
Fixed the glass material in ff_dm
Fixed conc speed being limited for too long after using a jump pad (#80)
Fixed Lua HUD timers' seconds getting truncated in the wrong direction when counting down
Renamed DisplayMessage to SendHintToPlayer and add SendHintToTeam/SendHintToAll functions
Added global function GetEntitiesByName(entname) that returns a Lua table containing the matching entities
Added global GetPlayers function (returns a table (array) of all players on the server)
Added IsJumpPad/CastToJumpPad
Added IsEntity
Added player functions to get the player's buildables (or nil if they're not built):
player:GetSentryGun()
player:GetDispenser()
player:GetDetpack()
player:GetJumpPad()
Majorly improved Lua's ability to interact with sentryguns
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
Added IsProjectile/CastToProjectile functions
Added IsInfoScript function
Added IsBuildable/CastToBuildable functions
Added function GetEntitiesInSphere(Vector center, float radius, bool ignore_walls)
Added collection filter flag CF.kJumpPad
Exposed gEntList as the global variable GlobalEntityList
Usage:
GlobalEntityList:FirstEntity() // get the first CBaseEntity in the GlobalEntityList
GlobalEntityList:NextEntity(CBaseEntity current_entity) // get the next CBaseEntity in the list, after current_entity
GlobalEntityList:NumEntities() // get the total number of entities
Iteratable with both pairs and ipairs (for ent_id, entity in ipairs(GlobalEntityList) do print(ent_id, entity) end). The iteration order is arbitrary with both functions