The Fortress Forever mod team for the HL2 Source engine have just released version 2.4 of their Team Fortress Classic modification. The new version has a whole bunch of fixes, map changes, weapon changes and lots of new things which you can all read below in the HUGE changelog.

User Interface
  • On-screen messages are now colour-coded for better visibility

    • Green messages for us taking/capping their flag/ball
    • Yellow messages for any flag/ball being dropped or returned
    • Red messages for enemy taking your flag/ball or capping.
  • Can now display more than 1 on-screen message

    • Number of messages shown on the screen at a time controlled by cvar hud_messages
  • Added deathnotice icons

    • Unique per-level-SG icons
    • Unique per-level-SG det icons
    • Unique per-level burn icons
    • Backstab icon
    • New IC icon to match the model
  • Ammo type shown next to the weapon icon in the bottom right

  • New objective icon glyphs

  • New flag carried icons

  • Added border to all buildable icons

  • When you get an increase of health/armor, it is shown on the HUD

  • Level specific SG icons on the engi's hud

  • Added a hit indicator in the form of a customizable crosshair that shows up after you do damage

  • Changed cl_teamcolouredhud foreground color to default rather than teamcoloured (can see health/armor icons now)

  • hud_speedometer can now be colorized using hud_speedometer_color (0 for non-colored, 1 for abrupt color changes, 2 for smooth color changes)

  • Added dropshadow to location text

  • You now get a status icon when you're locked-onto by an SG

  • New, better CTF flaginfo:

    • Now shows the name of who has your flag
    • Now counts down time until flag returns
    • Now shows location of dropped flags
    • Flaginfo status icons fixed (sometimes they were displaying the wrong icon)
  • Status of grellow pipes, detpacks, and jump pads are shown on the HUD

Generic / Misc Stuff
  • Getting damaged slows you down if you're above runspeed

    • The slow is proportional to damage taken; if you take a little bit of damage you just get slowed a little bit. You can only be slowed to a minimum of your class' base runspeed.

  • Handheld concs don't push other players

  • You can now hold jump to bunnyhop rather than having to let go and press between each jump

    • You can disable this, and use the old method using cl_jumpqueue 1
  • sv_friction up from 4 to 5

  • Reduced flag bounding box (from basic box +24 to basic box +8)

  • Added logging for sentry and dispenser sabotaging

  • Nail speed reduced to 50% of old speed

  • Super shotgun reload speed raised, 0.6 -> 0.5 seconds to move into reload position, then 0.4 -> 0.35 seconds to reload each shell

  • Single shotgun reload speed raised, 0.4 -> 0.25 seconds to reload each shell.

  • Grenade throwspeed upped to 700 from 630

  • Server tickrate defaulted to 66 from 33

  • cl_cmdrate and cl_updaterate defaulted to 66 from 33

  • New announcer sounds

  • New jump sounds

Visuals
  • New flag textures with speed highlighting

  • All worldmodels/projectiles have a minimum light level

  • Brighter blue and grellow demoman pipe textures

  • Brighter nail texture

  • Variable size flames functionality. Burn level 1 is now smaller flames than 2 and 3

Bug Fixes
  • Jump pad build status icon is now a jump pad rather than a detpack

  • Spectator names now work correctly

  • Mapguide / Flythrough menu no longer appears whilst watching HLTV demos

  • "View Flythrough" button now views the flythrough rather than showing a menu

  • Fixed team coloured HUD turning white sometimes

  • Engineer displays the nail symbol when he picks up nails, rather than cells

  • Railgun now correctly displays nails as its ammo type

  • Calling for ammo (ammome) now works

  • Single shotgun reload end anim fixed

  • Fixed SG constant locking/delocking at certain odd angles

  • Fixed SG looking up when you're right below it

  • Fixed on-boot console errors:

    • Parent cvar in server.dll not allowed (conc_ragdoll_push)
    • Parent cvar in client.dll not allowed (ffdev_target_speed_min)
    • Parent cvar in server.dll not allowed (dump_deletes_flush)
    • Parent cvar in server.dll not allowed (ffdev_disableentitydecals)
  • sentrygun_upgraded log message was missing a space

Class-specific Changes
  • Medic:

    • Made dropped health packs heal by a maximum of 15 hp each
  • Pyro:

    • Flamethrower range reduced by 1/6th (384 back to 320)
  • Sniper:

    • Legshot duration reduced from 10s to 5s
  • HWGuy:

    • Mirv and mirvlet damage reduced to same as frags (180 to 145)
  • Demoman:

    • Yellow pipe radius reduced from 135 to 130
    • Added detpipes demoman command - can now bind keys to det pipes and do other things aswell / more scripting flexibility (rather than having to worry about +attack2 and -attack2)
    • Mirv and mirvlet damage reduced to same as frags (180 to 145)
  • Spy:

    • Gas grenades have been removed.
    • Added smartcloak spy command - will loud cloak if you're moving and silent cloak if you're not
      • Old cloak + silent cloak removed from the menu, replaced with a single smartcloak command. A quick right click now defaults to smartcloak.
      • cloak and silent cloak old commands are still available from the console / binds / scripts for those who want them.
    • HUD now shows what weapon you look like you're holding when disguised.
    • Sabotaged items no longer have strange behaviour before the sabotage is activated.
      • Quietly sabotaged SG no longer fires slightly inaccurately
      • Quietly sabotaged dispenser no longer reduces armor class of teammates that touch it
      • Quietly sabotaged dispenser no longer skips the "enemies are using your dispenser" message, and displays it as normal
  • Engineer's SG:

    • Lockon time decreased from 0.5s to 0.2s
    • Bullet pushforce doubled
    • Bullet damage increased by about 17%
    • Level 2 fire rate reduced by around 25%
    • Turn speed increased by about 5%
    • Stays aiming at where target was last seen for 1 second if a target was lost not killed
    • Angular acceleration capped (it now behaves like a real object with a mass)
    • Lowest pitch-down angle raised from -90 to -85 degrees
    • Idle scan range reduced from +-40 to +-30 degrees
    • Level 1 health increased by 10%
  • Engineer (other)

    • Dispensers now eat bags that touch them, with an appropriate sound Eye-wink
Map changes
  • Napoli

    • New Invade/Defend map
  • Ksour

    • New Invade/Defend map
  • Genesis

    • New Attack/Defend the Zone map
  • Fusion

    • New Invade/Defend the Zone map
  • Bases

    • Major rebuild for gameplay, optimisation and visual improvements (loads of stuff!)
    • Defence classes spawn lift side, offence classes spawn other side
    • Bag resources redesigned (fr:30h/30a/130c/full-ammo/20s; rr-walkway/top-lift/lower:50h/50a/130c/full-ammo/1gren1/15s)
  • Dustbowl

    • Made all capture points into bucket caps
    • Changed CP3 start area to be more like TFC, added a bag near the gate
    • Opened the left-side room's window to be more SG-friendly
    • Added more countdown messages, etc
    • Lowered run speed of flag carrier
    • Flags moved to middle of routes out
    • Visual improvements and fixes
  • 2Fort

    • Texturing fixes and tweaks
    • Engy spawns at top spiral respawn, other defence classes spawn at far respawn, offence classes and snipers still spawn randomly at both
    • All door triggers bigger so you can bhop through
    • Sides of hole dropdown extended to obscure view of flag room from in hole
    • Alarm bell added in basement that rings when someone comes via hole
    • Bag resources redesigned (respawns:full-h-a-c-ammo/2s/team-only; resup-grenpacks:2gren1/2gren2/15s/team-only; btm-lift/mid-sp:50h/50a/130c/full-ammo/20s/team-only; water-exit:50h/50a/80c/full-ammo/30s/any-team)
  • Schtop

    • Security timer reduced to 40 seconds from 60
    • Improved bag by security (130 cells up from 100, full ammo, and 10 seconds respawn time down from 30)
    • Engy spawns at security side respawn
  • Monkey

    • Visual improvements and fixes
    • Added ceiling to bottom of arch around back of flag room
    • Defence classes spawn bottom, offence classes spawn top, demomen still spawn randomly
    • Removed spawn turrets and put enemy kill triggers on resup doors instead
    • No-annoyances in resups
    • All door triggers bigger so you can bhop through
    • Bags in resups give full ammo
    • Fixed location bugs
  • Destroy

    • Much more user-friendly airlift
    • Added locations
    • Ladder guides only block players
    • Fixed cubemap bugs
  • Shutdown2

    • Fixed lift sound
    • No-annoyances in resups
    • All door triggers bigger so you can bhop through
    • Enemy kill triggers on resup doors
  • Dropdown

    • Fixed a bug regarding generator fires
    • Fixed a visual issue resulting from detting the generator during prematch
  • Aardvark

    • Made it really easy for server admins to change the map's sniper limit if they want
Lua changes
  • Added player:ReloadClips()

  • Message duration/color can now be controlled

    • BroadCastMessage( message, duration )

    • BroadCastMessage( "message", duration, colorid e.g. Color.kRed )

    • BroadCastMessage( "message", duration, colorstring e.g. "255 255 255" )

    • BroadCastMessageToPlayer() equivalents

    • SmartMessage( player, "playermessage", "teammessage", "otherteamsmessage", colorid, colorid, colorid )

    • SmartMessage( player, "playermessage", "teammessage", "otherteamsmessage", colorid, colorid, colorstring )

    • SmartMessage( player, "playermessage", "teammessage", "otherteamsmessage", colorid, colorstring, colorid )

    • SmartMessage( player, "playermessage", "teammessage", "otherteamsmessage", colorstring, colorid, colorid )

    • SmartMessage( player, "playermessage", "teammessage", "otherteamsmessage", colorid, colorstring, colorstring )

    • SmartMessage( player, "playermessage", "teammessage", "otherteamsmessage", colorstring, colorid, colorstring )

    • SmartMessage( player, "playermessage", "teammessage", "otherteamsmessage", colorstring, colorstring, colorid )

    • SmartMessage( player, "playermessage", "teammessage", "otherteamsmessage", colorstring, colorstring, colorstring )

    • SmartTeamMessage( team, "teammessage", "otherteamsmessage", colorid, colorid )

    • SmartTeamMessage( team, "teammessage", "otherteamsmessage", colorid, colorstring )

    • SmartTeamMessage( team, "teammessage", "otherteamsmessage", colorstring, colorid )

    • SmartTeamMessage( team, "teammessage", "otherteamsmessage", colorstring, colorstring )

    • Added: Color.kDefault, Color.kBlue, Color.kRed, Color.kYellow, Color.kGreen, Color.kWhite, Color.kBlack, Color.kOrange, Color.kPink, Color.kPurple, Color.kGrey, Color.kInvalid

  • SmartSpeak(player, "CTF_YOUGOTFLAG", "CTF_GOTFLAG", "CTF_LOSTFLAG")" replaced by "RandomFlagTouchSpeak( player )" to randomly play 1 of 4 flag touched announcer sounds

  • Fixed Lua support of all non-ff-specific entity inputs (things like func_breakable:onbreak() work now) 

You can grab the new version from their website over here.