Patch Notes

Pre-Greenlight

Patch 2.7.10

Released July 7, 2019
  • Fixed last grenade not being throwable

Patch 2.7.9

Released July 3, 2019
  • Fixed mp_friendlyfire_armorstrip being applied to self damage
  • Fixed first grenade after death sometimes being thrown immediately
  • Fixed grenades sometimes having no timer when primed in quick succession or right after spawning

Patch 2.7.8

Released January 27, 2019
  • Fixed some inconsistencies with how friendly fire interacts with sabotaged buildables
  • Removed the -1 frag recieved from suicides
  • The top damager of a player that kills themselves now gets an assist (shown in death notices as <icon> suicider + assister)

Patch 2.7.7

Released September 4, 2018
  • Fixed ff_restartround and other events not being relayed to SourceTV (fixes things like restartround not resetting Lua HUD elements in SourceTV demos, SGs getting killed not showing up in SourceTV demos, Lua-based objective death notices not showing up in SourceTV demos, etc)
  • Added hud_lua convar to control Lua HUD elements being drawn
  • Stop hud_keystate being drawn when in spec freecam

Patch 2.7.6

Released February 20, 2018
  • Training is updated to explain pyro jetpack instead of hover flamethrower
  • Added discord rich presence! Shows basic stats about your team and status, can be disabled at any time with cl_discord 0.
  • Jetpack fuel is refilled on CTF flag captures
  • Jetpack fuel bar and crosshair hud bar is no longer jittery on high pings
  • Rampsliding on metal has a subtle grinding sound effect to match the sparks now
  • Non-existant 'sync_version' command from pre-steam days no longer fires on game joins

Patch 2.7.5

Released January 20, 2018
  • Fixed Red + Blue1 -> Blue2 type teammate assists (visual only)
  • Fixed assists being blocked by teammates of the victim if the teammate did the most damage (now it looks for the top valid assister)
  • Set the spawn deploy delay back to the default of 0.5f (from 0.25f)

Patch 2.7.3/2.7.4

Released September 18, 2016
  • Fixed client crash when a player disconnects while jetpacking (thanks to LiTE for tracking it down and Fruitcake for letting me know about it)
  • Fixed client crash when a player disconnects while getting hit with bonus damage from the IC

Patch 2.7.2

Released September 11, 2016
  • Fixed kill assists not being logged to file
  • Fixed kill assists not timing out properly (you will now only get an assist if you do damage at most 5 seconds before the player dies)
  • Fixed not being able to swing crowbar when jetpacking
  • Fixed jetpacking flag not being reset on restartround/instant class switch

Patch 2.7.1

Released September 11, 2016
  • Fixed jetpack sound playing at loud volume sometimes
  • Fix divide by zero assert when concing sometimes
  • Add jetpack fuel bar to hud
  • Deathnotice fixes:
    • Highlight when the local player is the assister
    • Fix assister not being drawn with their correct team color
    • Fade out assisters name slightly

Patch 2.7.0

Released September 10, 2016

Pyro Overhaul

  • Pyro now has a Jetpack - Hold attack2 to use.
    • Also prevents 25% fall damage if used whilst hitting the floor
  • Burn levels have been reworked.
    • Afterburn damage-over-time has been removed.
    • Burn levels now increase damage from pyro weapons instead:
      • Flamethrower (18 -> 20 -> 22)
      • Incendiary cannon (85 -> 95 -> 105)
      • Napalmlets (2 -> 3 -> 4)
    • Burn levels no longer require different weapons:
      • Flamethrower increases burn level every 5 hits
      • Napalm grenade increases burn level every 10 ticks
      • Incendiary cannon increases burn level every 1 hit (provided they are already on fire)
    • The Incendiary cannon no longer sets players on fire - you must light them with a flamethrower or napalm grenade first.
  • Flamethrower
    • Flamethrower self-push has been removed
    • Flamethrower damage has been increased from 16 to 18
    • Flamethrower range has been increased by 10%
  • Incendiary cannon
    • Incendiary cannon base damage increased from 55 to 65
    • Incendiary cannon jumping now does less self-damage to the pyro
    • Incendiary cannon fire rate increased from 1.2sec -> 0.6sec
    • Incendiary cannon now has a clip of 5
  • Napalm grenades improvements
    • Number of napalmlets increased from 8 to 9
    • Napalmlets are now more evenly spread over the area for more reliable area denial
    • Napalmlet burn height increased from 40 to 70 (it was previously possible to jump through a napalm field without getting hurt)
    • Napalmlets do damage more regularly now, so jumping through napalm will hurt you much more than before
  • Pyro rocket stock raised from 20 to 25
  • Pyro class interactions:
    • Scout, Medic and Spy extinguish their flames much faster than other classes
    • HW Overpressure extinguishes flames of himself and those around him
    • Pyro is still immune to being set on fire by other pyros.

Gameplay Balance

  • Jumpgun has been removed from scout whilst it's design is reworked. Thanks for all your feedback on this!
  • All weapons now deploy faster. This means switching weapons is faster and more responsive.
  • MIRV initial explosion damage reduced from 180 to 145, this now matches normal grenades and mirvlets.

Other Improvements

  • Kill Assists have been implemented.
  • Deathnotice self-highlighting has been improved and defaulted on.
  • Add new hints (Thanks NeoNL!)

Bug Fixes

  • Fixed projectiles blocking hitscan weapons
    • Notably, nailguns against SGs and HWGuy will no longer block their bullets.
    • Flamethrowers will also now work against nailgunning players
  • Fix local weapon sounds from playing twice on a high ping (e.g. deploy sound)
  • Fix weapon specific crosshairs for the AC/RPG/Tranq
  • Fixed the soldier 3rd-person RPG pose so it now points to where the rocket will travel. (Thanks WillWow_mc!)
  • Fixed flag trails performance issues
    • Fixed stutter when the flag returns after it is capped
    • Added cvar cl_spritetrail_maxlength that controls the max length of a sprite trail (once exceeded, the trail will start over from its parent's current origin)
    • Made it so trails are not calculated at all client-side if they are disabled by their respective cvars

Lua Improvements

  • Add basic support for spawning entities through Lua
    • Not very well tested, but is able to spawn info_ff_scripts like flags and have them work like normal
    • Added baseentity:SetName(string name)
    • Added global function SpawnEntity(string entity_class_name, string entity_name) that returns the entity spawned or nil if unsuccessful (example: `local entity = SpawnEntity("info_ff_script", "red_flag")`)
    • Added global function SpawnEntity(string entity_class_name) that returns the entity spawned or nil if unsuccessful (example: `local entity = SpawnEntity("info_ff_script")`)
  • Add basic support for free-for-all teams
    • Lua can set a team as a free-for-all team by doing `GetTeam(Team.kBlue):SetFFA(true)`
  • Add Lua getters for various InfoFFScript settings
    • infoscript:GetModel() returns the string path of the current model
    • infoscript:GetStartOrigin() returns the Vector that the infoscript will spawn at when returned
    • infoscript:GetStartAngles() returns the QAngles that the infoscript will spawn with when returned
  • Improve Lua angle/vectors a bit
    • Add player:GetEyeAngles()
    • Add __tostring() implementations for Vector and QAngle classes
    • Convert VectorAngles and AngleVectors to use Lua-style return values rather than C++ style pass-by-reference parameters. Example usage of the new functions:
      
      local eye_angles = player:GetEyeAngles()
      local forward, right, up = AngleVectors(eye_angles)
      local angles = VectorAngles(forward)
      assert(angles == eye_angles)
      					

Patch 2.6.0

Released June 5, 2016

Classes

  • Scout
    • Added new weapon: Jumpgun
      • When fully charged it can be fired to produce an upwards thrust like a mid-air powerful jump
      • Whilst the weapon is out, it'll charge up; switching weapons loses charge
      • We don't have a weapons modeller at the moment, so it's using the railgun model for now. If you'd like to model us a new gun, please get in touch!
  • Engineer
    • Dispenser
      • Wrenching a dispenser now recharges 5 cells per whack; you can no longer insert your own ammo with your wrench
      • Dispensers are now cheaper, down from 100 cells to 30 cells
      • Dispensers have less maximum capacity, down from: 400 to 100 cells; 500 to 100 nails; 400 to 100 shells, 250 to 50 rockets, 500 to 100 armor. NOTE: It's explosion size is based on what percentage full it is, not the total ammo number. This means the explosion size has not changed, but it reaches full detonation size quicker.
      • Dispenser health reduced from 150 to 75
      • Dispensers no longer eat backpacks when they are full

Misc

  • Ragdolls are no longer affected by concussion grenades
  • Ragdolls are pushed less by explosions
  • Ragdolls last for 5 seconds, down from 15
  • Gibs are now more frequent from deaths with explosions (>30 dmg overkill rather than >50)
  • Dropped player weapons are now tied to cl_gib_lifetime
  • Railgun now glows more dramatically when it's fully charged

Bugfixes

  • Fixed various HUD positioning on non-standard resolutions
  • Fixed cl_spawnweapon_scout and cl_spawnweapon_spy

Patch 2.5.2

Released October 3, 2015

General

  • Increase ff_monkey nade bag respawn time from 15 to 30 seconds
  • Rename single shotgun to pellet gun and make it sound weak
  • Re-add single shotgun (now pellet gun) to pyro
  • Fix the spanner special hit sound getting covered up by the clang sound
  • Add in-game on-screen keyboard functionality
    • Adds the cvars hud_keystate (disabled by default) and hud_keystate_spec (enabled by default)
    • When hud_keystate is enabled, your own keypresses will be drawn on the screen
    • When hud_keystate_spec is enabled, the keypresses of your target while spectating in first/third person will be drawn on the screen

Patch 2.5.1

Released June 13, 2015

General

  • Increase flag touch bounds a bit:
    • Height from 65% of model height to 80%
    • Width from 100% of model width to 150%
    • Stops a single SG from being able to completely block the flag, though you can still make it difficult to grab
    • Flag model bounds: 26.254800796509 x 69.179306283593
    • Flag bounds before this change: 26.254800796509 x 45.048884835839
    • Flag bounds after this change: 39.382202148438 x 55.155250549316
  • Add documentation for "disguise last" functionality through the description of disguise command.
  • Enable hud_speedometer by default
  • Add basic armorstrip convar: mp_friendlyfire_armorstrip
    • From the cvar description: "If > 0, only deals armor damage to teammates. The armor damage is multiplied by the value of the cvar (mp_armorstrip 0.5 means half damage). Requires mp_friendlyfire 1"
  • Disabling security now gives a player 50 fortress points and displays a HUD message to all

Bugfixes

  • Fix CFFPlayer noisy BodyTarget while crouched (should make explosions while crouched behave better)
  • Fix explosions doing too much damage to crouched players in certain cases
  • Fix explosions going through brushes when directly underneath them
  • Fix HH nades not doing damage to nearby players while standing still
  • Fix laser grenade beams getting drawn through walls
  • Fix players on ladders counting as airshots
  • Fix spy disguise weapon for classes that got weapons removed in 2.5.0
  • Dispenser cells required to build displayed correctly; now reads 100 instead of 30
  • Fix various HUD timers getting added with time + 1

Lua

  • Add global callbacks intermission() and restartround()
    • intermission() is called when intermission starts
    • restartround() is called right before the round is restarted, to allow for Lua to persist data before the Lua environment is destroyed and re-created
  • Add get equivalents of exposed team set functions
  • Add global ServerCommand function (a map-agnostic alternative to the point_servercommand entity)
  • Add player:GetArmorAbsorption
  • Update func_button:ondamage lua callback to use parameters instead of global vars

Patch 2.5.0

Released March 27, 2015

Features

  • 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

Lua

Environment
  • Exposed all safe default Lua library functions (newly exposed packages: package, debug, os)
  • Added lua_dostring server command that will attempt to run the given string in the global Lua environment
  • Made Lua's 'print' function redirect to the console
  • Made Lua's 'require' look in ModDir/maps/includes, ModDir/maps/ and ModDir/ when resolving modules
  • Converted IncludeScript into an alias of require
  • Removed arbitrary restriction on loading script files after the initial load sequence
  • Added tostring support for CBaseEntity, CFFPlayer, CTeam, and Color userdata
  • Removed luabind's 'class' implementation because it seems to be broken
  • Added Luabind's class_info function (see http://halmd.org/develop/luabind.html#debugging-c-types-with-class-info)
Fixes
  • Fixed execution errors not being caught and failing silently
  • Fixed AT.kForceThrowItems and AT.kForceDropItems not doing what they say
  • Fixed entity:SetFriction() not working on players
  • Fixed typo in CF.kInfoScripts (was CF.kInfoScipts) (CF.kInfoScipts will remain for backwards compatibility)
Additions
  • Added buildable_killed(buildable, damageinfo) callback
  • Added player_onuse(player) callback
  • 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)
  • Added Lua-spawned trails on entities, coloured by team
    • Functions added:
      • entity:StartTrail(int teamid)
      • entity:StartTrail(int teamid, float start_width, float end_width, float lifetime)
      • entity:StopTrail()
  • Added global function GetGameDescription
  • Added player functions GetFortPoints, GetFrags, GetDeaths
  • Added player:SetDisguise(int teamId, int classId, bool isInstant)
  • Added player:IsInAir(unitsAboveGround) overload (checks if the player is the specified number of units above the ground)
  • Added player:IsFlashlightOn()
  • Added player:ResetDisguise()
  • Added player:AddHealth(healAmount, allowOverheal) overload
  • 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

Patch 2.46.1 (client-only)

Released May 19, 2013

Bug Fixes

  • Fixed a bug that made the team menu disappear if you joined a server and toggled the scoreboard while still looking at the MOTD
  • Fixed cloak screen effect being drawn while in a slowfield instead of while cloaked
  • Reverted cl_ragdolltime fix because it caused unexcepted problems; removed the cl_ragdolltime cvar temporarily
  • Fixed first-person spectator view going insane if the player you're spectating dies while concussed

Patch 2.46

Released May 6, 2013

Generic / Misc Stuff

  • Added support for the auto-updater checking for updates in game
  • Added armor to spectator nameplate
  • Added very basic support for spectating info_ff_script entities (console command: spec_item <info_ff_script entity name>, example: spec_item red_flag)
  • Modified the spec_goto command so that it switches you to roaming mode if you're not already in it (so you can use it from any mode instead of only being able to use it while already in roaming mode)
  • Added class to the player names in the spectator menu dropdown
  • Better gibs with blood and more control over what they look like
    • Renamed cl_gibcount cvar to cl_gib_count
    • Added cvars: cl_gib_force_scale, cl_gib_force_randomness, cl_gib_lifetime, cl_gib_blood_scale, cl_gib_blood_force_scale, cl_gib_blood_force_randomness, cl_gib_blood_count
    • Added command: spawngibs (spawns gibs on top of the local player; requires sv_cheats 1)
  • Changed the HP required to gib from <= -60 to <= -50
  • Enabled console by default

Bug Fixes / Optimizations

  • Fixed a server crash related to SGs
  • Fixed some auto assign bugs that made it work incorrectly
  • Fixed cl_ragdolltime not working
  • Fixed the crosshair not getting drawn in SourceTV demos
  • Made "Spectators: #" get hidden in SourceTV demos, it should only be there while actually viewing through SourceTV
  • Fixed conc stars, tranq z's, etc not getting shown for spectators
  • Fixed the team menu/MOTD getting shown when you open a SourceTV demo (MOTD still gets shown in SourceTV servers)
  • Fixed crash when changing observer mode in a SourceTV demo when there are no players connected
  • Fixed nameplate not being updated when changing observer target/mode in a SourceTV demo
  • Fixed Lua HUD timers getting drawn slightly too high up in a few base Lua files
  • Hopefully fixed a sporadic crash on map change (seemingly related to a trigger_hurt damaging something after the level has shutdown)
  • Fixed another case of the bug that could force your observer target to switch if your target got gibbed
  • Fixes for first-person spectating (in-game and in SourceTV):
    • Concussion effect now works
    • Cloak effect now works
    • Ammo counts on weapon models now work
    • Hit indicator now works
    • Flag shadow no longer gets drawn
    • Overpressure cooldown on the AC now works
    • Slowfield screen effect now works
    • Killbeeps now play (can turn this off with cl_spec_killbeep 0)
    • hud_deathnotice_selfonly and hud_deathnotice_highlightself now work (they treat "self" as the player you're spectating)
    • Various other material proxies now work (ProxyTeam, ProxyClass)
  • REALLY fixed the cl_spawnweapon_ cvars
  • Fixed a loophole in the class/team-switch respawn delay
  • Fixed "disguise last" so it can be used through the console/in configs
  • Fixed being able to pick up a flag while disguising without losing your disguise
  • Fixed func_button's not firing their outputs when damaged if they didn't have an ondamage function defined in Lua

Class-specific Changes

  • No class changes

Lua changes

  • Added shutdown() Lua callback when the level shuts down to compliment startup() (actually added in 2.45, but forgot to put it in the changelog)
  • Added support for capture points having different team scores and fortress points awarded (use the variables teampoints and fortpoints in the object's table)
  • Exposed all useful Vector and QAngle functions to Lua that weren't previously exposed:
    • All operators (multiplying/dividing by a float, vector to vector math/equality operators)
    • Global functions: AngleVectors and VectorAngles (to convert back and forth)
    • Vector member functions: Cross, Random, Min, Max
    • QAngle member functions: Random

Patch 2.45

Released December 9, 2012

Generic / Misc Stuff

  • Added number of tossable medpacks to the medic's HUD
  • Added server command ff_setprematch that takes a value in seconds and sets prematch so that the given number of seconds remain until it ends (even if not currently in prematch)
  • Added grenades to the right side ammo pickup list
  • Added a much better class selection screen
  • Added SG barrel spinning animations
  • Auto selecting a team now takes into account team scores as well as how full teams are
  • Gibs now take the blast direction into consideration
  • Added cake's class switch suggestion: "Switch from 1 class to another, no delay. Do a second class switch in under 5 seconds from the first, 5 second respawn delay." (Made the respawn delay based on the last class change time instead of always being 5 seconds; for example, if you change class, wait 2.5 seconds, and then change class again, your respawn will only be delayed for 2.5 seconds; if you change class twice instantly you'll get the full 5 seconds)
  • Added cvars: hud_grenadetimers (when set to 0, turns off visual grenade timers) and hud_buildtimers (when set to 0, turns off visual buildable timers)
  • Added MOTD window and updated teammenu
    • Added command "serverinfo" that brings up the MOTD window
    • Modified the team menu server info section to have a button to view the MOTD and show a customizable small little banner (gets the URL from host.txt; only URLs are allowed)
    • MOTD can be text, HTML, or a URL
    • Scrollbars on HTML elements are apparently not working, so they have been disabled
    • Added default motd and host URL if none are found
    • Added server convar sv_motd_enable that determines if the MOTD window is shown to clients when they connect
  • Ragdolls now keep flames
  • Made changing cl_interpolate require sv_cheats
  • Spectator HUD top black bar removed and replaced with the normal HUD (the black bar didn't show any different information and obscured Lua HUD elements)
  • Made the spectator team color a bit darker so that text is more visible against a teamcolored HUD element background)
  • Made EMP explosions no longer shorten the fuselength of detpacks to 5 seconds (it was implemented poorly, is totally hidden functionality, and isn't even a desirable feature)
  • Made pipe trails grellow rather than red
  • Added default_fov and viewmodel_fov sliders to the Graphics page of Fortress Options
  • Encrypted player and weapon scripts

Bug Fixes / Optimizations

  • Fixed a typo that made it look like it was looking for lua files in maps/maps instead of just maps/ when the lua was missing
  • Fixed having no grenade timer sound set on a fresh install (hooray for Dexter fixing this!)
  • Made cl_spawnweapon_ convars actually work (the cvars used to be server-side and the server's settings were the only things that mattered)
  • Fixed concussion stars or tranq zzZ getting shown when cloaked
  • Fixed scrollbars not working in the teammenu
  • Fixed crosshair not drawing while spectating someone in first person mode
  • Fixed SGs staying locked onto targets they can no longer shoot (through trigger_ff_clips, for example)
  • Made SG targeting more consistent in general (spam-locking should no longer happen)
  • Fixed (hopefully) maps with flythroughs overriding the SourceTV free-roam view (making it impossible to move and forcing you periodically to jump to the next overview target)
  • Fixed slowfield not facing you when watching a SourceTV demo in chase/firstperson view
  • Fixed a bug that forced your observer target to switch if your target got gibbed

Class-specific Changes

  • Pyro
    • Lowered base burn damage from 15 to 13 and lowered burn level 2 multiplier from 2.5 to 2 (really from 4.5 to 4) [total damages for each burn level (old->new): lvl1 15->13; lvl2 75->52; lvl3 225->195]
  • Soldier
    • Rocket radius lowered from 108 to 100
    • Rocket spawn position set in line with the player origin instead of 16 units forward
    • Laser grenade reworked
      • Added a 64 unit gap to the center of the laser grenade
      • Made the laser gren damage dealt time based instead of tick based
      • Hit delay is 0.25 seconds (the delay between ticks of damage)
      • Changed damage per hit to 45
      • Upped growtime from 0.7 to 1 second
      • Decreased duration from 10 to 7 seconds
      • Decreased rotation speed by a bit (120 to 100; 17% decrease)
      • Decreased laser beam radius by 1 unit (from 4 to 3)
  • HWGuy
    • Increased overpressure cooldown from 8 seconds to 16
    • Made overpressure netcode more consistent (it should make more sense when you get hit by it and when you hit people with it)

Lua changes

  • Added lua callback player_namechange( player, oldname, newname )
  • Added player_switchclass( player, oldclassid, newclassid ) Lua callback; if the function returns false, the class switch is disallowed)
  • Added lua functions:
    • GetPlayerBySteamID( steamid )
    • player:RemoveBuildables() // cancels any of the player's building or built buildables
    • player:RemoveProjectiles() // removes all of the player's projectiles
    • player:RemoveItems() // removes all of the player's projectiles and cancels all buildables
    • player:LockInPlace( bool lockState ) // either locks or unlocks a player in place depending on the parameter (sets velocity to zero and makes it so they can't move at all; no gravity, etc); does not affect anything except movement
  • Moved the flaginfo call in the spawn code so that it doesn't skip spectators (so joining a server and going spec doesn't mean you miss the Lua-based hud being drawn)
  • Made HudText and HudTimer elements allow negative x and y positioning values
  • Changed HudTimer to use float values for the starttime param instead of ints, so that named timers can be added to Huds without losing any precision
  • Big Lua HUD update:
    • Added size customization to HudText and HudTimers
      • Functions added:
        • AddHudText( player, identifier, text, x, y, xalign, yalign, fontsize)
        • AddHudTextToTeam( team, identifier, text, x, y, xalign, yalign, fontsize)
        • AddHudTextToAll( identifier, text, x, y, xalign, yalign, fontsize)
        • AddHudTimer( player, identifier, timerid, x, y, xalign, yalign, fontsize)
        • AddHudTimer( player, identifier, startvalue, speed, x, y, xalign, yalign, fontsize)
        • AddHudTimer( player, identifier, timerid, x, y, xalign, yalign, fontsize)
        • AddHudTimer( player, identifier, startvalue, speed, x, y, xalign, yalign, fontsize)
        • AddHudTimer( player, identifier, timerid, x, y, xalign, yalign, fontsize)
        • AddHudTimer( player, identifier, startvalue, speed, x, y, xalign, yalign, fontsize)
    • Added a new type of Lua hud element, HudBox, that draws a box with a background color and a customizable border
      • Objects added:
        • CustomColor(), CustomColor( r, g, b ), CustomColor( r, g, b, a )
        • CustomBorder(), CustomBorder( CustomColor color ), CustomBorder( CustomColor color, width )
      • Functions added:
        • AddHudBox( player, identifier, x, y, width, height, CustomColor bgcolor )
        • AddHudBox( player, identifier, x, y, width, height, CustomColor bgcolor, xalign )
        • AddHudBox( player, identifier, x, y, width, height, CustomColor bgcolor, xalign, yalign )
        • AddHudBox( player, identifier, x, y, width, height, CustomColor bgcolor, CustomColor bordercolor )
        • AddHudBox( player, identifier, x, y, width, height, CustomColor bgcolor, CustomColor bordercolor, xalign )
        • AddHudBox( player, identifier, x, y, width, height, CustomColor bgcolor, CustomColor bordercolor, xalign, yalign )
        • AddHudBox( player, identifier, x, y, width, height, CustomColor bgcolor, CustomBorder border )
        • AddHudBox( player, identifier, x, y, width, height, CustomColor bgcolor, CustomBorder border, xalign )
        • AddHudBox( player, identifier, x, y, width, height, CustomColor bgcolor, CustomBorder border, xalign, yalign )
        • AddHudBoxToTeam( team, identifier, x, y, width, height, CustomColor bgcolor )
        • AddHudBoxToTeam( team, identifier, x, y, width, height, CustomColor bgcolor, xalign )
        • AddHudBoxToTeam( team, identifier, x, y, width, height, CustomColor bgcolor, xalign, yalign )
        • AddHudBoxToTeam( team, identifier, x, y, width, height, CustomColor bgcolor, CustomColor bordercolor )
        • AddHudBoxToTeam( team, identifier, x, y, width, height, CustomColor bgcolor, CustomColor bordercolor, xalign )
        • AddHudBoxToTeam( team, identifier, x, y, width, height, CustomColor bgcolor, CustomColor bordercolor, xalign, yalign )
        • AddHudBoxToTeam( team, identifier, x, y, width, height, CustomColor bgcolor, CustomBorder border )
        • AddHudBoxToTeam( team, identifier, x, y, width, height, CustomColor bgcolor, CustomBorder border, xalign )
        • AddHudBoxToTeam( team, identifier, x, y, width, height, CustomColor bgcolor, CustomBorder border, xalign, yalign )
        • AddHudBoxToAll( identifier, x, y, width, height, CustomColor bgcolor )
        • AddHudBoxToAll( identifier, x, y, width, height, CustomColor bgcolor, xalign )
        • AddHudBoxToAll( identifier, x, y, width, height, CustomColor bgcolor, xalign, yalign )
        • AddHudBoxToAll( identifier, x, y, width, height, CustomColor bgcolor, CustomColor bordercolor )
        • AddHudBoxToAll( identifier, x, y, width, height, CustomColor bgcolor, CustomColor bordercolor, xalign )
        • AddHudBoxToAll( identifier, x, y, width, height, CustomColor bgcolor, CustomColor bordercolor, xalign, yalign )
        • AddHudBoxToAll( identifier, x, y, width, height, CustomColor bgcolor, CustomBorder border )
        • AddHudBoxToAll( identifier, x, y, width, height, CustomColor bgcolor, CustomBorder border, xalign )
        • AddHudBoxToAll( identifier, x, y, width, height, CustomColor bgcolor, CustomBorder border, xalign, yalign )

Patch 2.44

Released December 16, 2011

Generic / Misc Stuff

  • Changed the HP required to gib from <= -100 to <= -60
  • Upped headcrush damage from 2x fall damage to 4x fall damage (HWs can take a max of 24 fall damage, which means they can do a max of 96 headcrush damage; scouts, on the other hand, will be able to do a max of 24 headcrush damage)
  • Added a speed threshold (set to 1.25 of max class speed, just under the bhop soft cap of 1.4) over which friendly players will always soft clip (not be able to stand on eachothers heads); sometimes the upper bound collision check bugs out and causes some weird movement while bhopping inside of/next to a teammate
  • Added a log event ("Round restarted") when the round is restarted (for example, when prematch ends or ff_restartround is used)
  • Added SG gibs
  • Added cvars hud_deathnotice_selfonly and hud_deathnotice_highlightself, both defaulted to 0
    • If hud_deathnotice_selfonly is 1, it only shows deathnotices that the local player is involved in
    • If hud_deathnotice_highlightself is 1, it draws a background behind any deathnotice the local player is involved in
  • Made highlightself background and the objective notice background color/alpha customizable through /scripts/HudLayout.res (HudDeathNotice -> "HighlightColor" and "ObjectiveNoticeColor")
  • Modified chat macros
    • Changed %pf to output the time remeining until your detpack explodes instead of the total fuse length (if building, it outputs the total fuse length + buildtime remaining)
    • Added %ps to output the total fuse length of your detpack

Bug Fixes / Optimizations

  • Fixed projectiles (rockets, nails, pipes, etc) sometimes colliding with players when they shouldn't and throwing off their movement
  • Fixed being able to shoot/charge the railgun while building from a bind
  • Fixed being able to reload while building from a bind
  • Fixed blue pipes not exploding on jump pads
  • Fixed buildables being able to be built inside teammates
  • Fixed crosshair info not showing for teammates
  • Fixed the exact middle of the laser grenade doing zero damage
  • Fixed detpacks not executing onexplode() on triggers that they used to (on ff_security_b1, for example)
  • Fixed SourceTV demos not drawing viewmodels
  • Fixed not being able to move at all in SourceTV freelook mode
  • Fixed pipes being able to be detonated multiple times
  • Fixed the single shotgun and super shotgun not playing the cock sound at the right time
  • Made the super shotgun use its own cock sound instead of reusing the single shotgun cock sound

Class-specific Changes

  • Engineer
    • Engineer now takes 75% damage from exploding buildables
    • Sentry Gun
      • Changed explosion radius of all levels to 128 (used to be 102 for level 1, 204 for level 2, and 306 for level 3)
  • Medic
    • Infection now does 75 max total damage, its damage per tick diminishes over time, and it lasts 6 seconds longer (10 ticks doing 30, 15, 9, 6, 4, 3, 2, 2, 2, 2 damage respectively instead of 7 ticks doing 10 damage each)
    • The infection particle effect diminishes over time to match damage diminishing over time
  • Soldier
    • Laser grenade damage increased by 189% (from 350*interval per tick to 660*interval per tick); damage against buildables unchanged
    • Added a radius of 4 units to each of the laser grenade beams

Lua changes

  • Fixed player:AddHealth called with a negative input factoring in armor when it should ignore it (damage type changed from DMG_GENERIC to DMG_DIRECT)
  • Fixed a bug with Lua schedules. If a schedule called a Lua function that then created a schedule of the same name, the new schedule would be deleted by the original schedule's clean up. Added a check to make sure that the schedule being deleted should truly be deleted.
  • Added a way to persist Lua data across level changes
    • Functions added:
      • SaveMapData( luaobject ) // saves to maps/data/<mapname>.luadat
      • SaveMapData( luaobject, suffix ) // saves to maps/data/<mapname>_<suffix>.luadat
      • LoadMapData() // returns the loaded lua object from maps/data/<mapname>.luadat
      • LoadMapData( suffix ) // returns the loaded lua object from maps/data/<mapname>_<suffix>.luadat
      • SaveGlobalData( luaobject ) // saves to maps/data/global/global.luadat
      • SaveGlobalData( luaobject, suffix ) // saves to maps/data/global/global_<suffix>.luadat
      • LoadGlobalData() // returns the loaded lua object from maps/data/global/global.luadat
      • LoadGlobalData( suffix ) // returns the loaded lua object from maps/data/global/global_<suffix>.luadat
    • The suffix param gets stripped of all non-alphanumeric and non-underscore characters. The lua object is serialized into binary.
    • Only strings, numbers, booleans, and tables are able to be saved. All other object types are ignored for now (player objects/lua functions for example).

Patch 2.43

Released June 30, 2011

Generic / Misc Stuff

  • Made melee always hit your target if you are inside them (for healing/wrenching while softclipping with a teammate)
  • Made disguised spies softclip using their actual team instead of disguised team
    • Solved a problem where a spy could undisguise inside a player and get stuck
    • Running into teammates to see if you go through them can now be a weird and dangerous way to spy check

Bug Fixes / Optimizations

  • Fixed a client crash related to joining a server while a laser grenade is active or thrown
  • Fixed age-old bug where incorrect timeleft would be shown on your HUD if you connect/reconnect to a server after prematch has ended or ff_restartround was used
  • Potential fix for autoreload sometimes not working
  • Fixed slowfield loop sound not being stopped when the slowfield gets removed forcefully (like on class change)
  • Fixed slowfield not setting all affected players' speed back to normal when the slowfield gets removed forcefully (like on class change)
  • Fixed the laser grenade's arms going through things they shouldn't (like cornfield starting door)
  • Fixed pipes and grenades going through things they shouldn't (like destroy security door)
  • Fixed MIRVs getting stuck in walls if you try to throw one while next to a wall
  • Hopefully fixed some FPS/choppiness issues that 2.42 seemed to cause
  • Fixed grenade prime sound (the click) getting played twice when priming a secondary grenade
  • Fixed detpacks not being able to blow up some detpack walls (like on ff_stowaway_b2)
  • Fixed moving brushes (doors/elevs) thinking players were blocking them even though they weren't due to softclipping
  • Potentially fixed a bug that made some projectiles stop players as though they were walls
  • Fixed railgun shoot animations glitching like crazy
  • Optimized the slowfield and overpressure code a little bit
  • Optimized HUD elements a bit

Class-specific Changes

  • Scout
    • Jump Pad
      • Jump pad health increased from 125 to 150
  • Medic
    • The Super Nailgun clip size has been increased from 30 to 50
    • The Super Nailgun reload time has been decreased by 0.5 seconds
    • Increased infection duration from 10 to 14 (2 more ticks)
  • HWGuy
    • Overpressure cooldown increased from 6 to 8
    • HWGuy spawns with 1 slowfield instead of 2
    • HWGuy has a maximum of 2 slowfields instead of 3
    • Slowfield
      • Duration decreased from 10 to 7
      • Radius decreased from 200 to 176
      • Inner radius decreased from 176 to 64 (the radius in which players receive the maximum amount of slow)
      • Fast moving players are slowed slightly less than they used to be

Map changes

  • FF_Palermo and FF_Cornfield
    • Each cap now has a four minute timer
  • FF_Warpath
    • Now ends properly with lighting changing CP 1 & 5
    • LDR lighting change to match HDR

Lua changes

  • Fixed SetConvar not working properly for replicated cvars like mp_timelimit (the updated value wasn't getting sent to the client)
  • Added SetConvar("cvar_name", "value")

Patch 2.42.1

Released June 25, 2011

Bug Fixes

  • Attempt at fixing CL_CopyExistingEntity errors

Patch 2.42

Released June 25, 2011

User Interface

  • Added a global cell count for the engineer's HUD next to the ammo display
  • Grenade icons added to the grenade counts in the bottom right
  • Grenade icons moved from inside the grenade timers to the left them
  • Made the visual grenade timer the exact same length as a grenade prime (from 4.0s to 3.81s)

Generic / Misc Stuff

  • Added soft-clipping of friendly players
    • Disguised spies clip as if they were on the team they are disguised as
  • Melee hit detection code completely rewritten, it should be a lot more consistent and a lot less frustrating now
  • You no longer lose a kill for suiciding.
  • Hand-held concussion grenades do not affect other players.
  • Grenades and yellow pipes no longer collide with friendly players
  • Added speedometer that records average speed per map (hud_speedometer_avg & _color)
  • Flags now rotate when dropped for improved visibility.
  • Flags now rise to the surface of and float on water after touching the bottom.
  • Stars show above concussed players' heads (cl_concuss 0/1 and cl_concuss_* customization cvars).
  • Zzz shows above tranquilized players' heads (cl_tranq 0/1).
  • Concussion effect reworked: True-aim crosshair now flashes upon firing a weapon (except for automatic weapons like the AC, nailguns, and AR)
    • Other modes:
    • cl_concaim 0 always shows the crosshair in the center
    • cl_concaim 2 always hides the crosshair while conced
  • Made the concussion status effect last 10 seconds for all classes (down from 15 seconds for non-medic/scout classes and up from 7.5 for medic/scout)
  • Taking fall damage on someones head mirrors 2x of that fall damage to the crushed player
  • Made viewmodel_fov cvar not require sv_cheats to be on
  • Made cl_showpos cvar not require sv_cheats to be on, but made it so the view angles only show when cheats is on
  • Added client convars cl_jimmyleg_cap and cl_jimmyleg_mode.
    • This allows the client to designate a speed percentage over the player's max runspeed to NOT do a jump animation. This way, you can visibly see if the player is over their bhop cap, and you can tell if they are bhopping.
    • cl_jimmyleg_mode 1 to turn on jimmylegs, cl_jimmyleg_mode 2 to make a players animation speed related to their actual speed
  • Made SGs/dispensers able to be built on SGs/dispensers

Bug Fixes

  • Fixed speed effects not being predicted properly.
  • Infected players now lose infection if the enemy player switches from Medic.
  • Buildables are now removed if the owner uses the 'spectate' console command.
  • Jump-pad slot is now unselectable if you have a jump-pad built.
  • Fixed potential bug where you would go back to 100% if you were healed above 100%.
  • Fixed age-old bug where Scouts could defuse friendly detpacks.
  • Fixed buildable weapon slots being slower to build than via a bound key.
  • Fixed colored chat losing its color upon fading out.
  • Fixed chat strings not working if they do not have "name:" in front.
  • Fixed SG aiming so that you can aim through buildables, etc.
  • Fixed buildable ghosts being drawn when you switched to spec.
  • Fixed viewmodel_fov not doing anything
  • Made SG tracking more consistent (it will only track through things it can shoot through)
  • Made miniturret tracking more consistent (it will only see/track through anything it can shoot through)
  • Fixed a bug where miniturrets wouldn't target any buildable with a currently dead owner
  • Fixed a bug where detpacks wouldn't kill buildables if their owner was dead
  • Shooting detpacks no longer trigger hit indicator
  • Made concussion grenade push a bit more client predicted, should be less jerky/abrupt
  • Fixed going from walk to crouch giving you run speed in the transition
  • Made the buildtimer properly reset on mapchange (it won't get stuck visible on mapchange anymore)

Class-specific Changes

  • Scout
    • Jump Pad
      • Jump pads are now team-oriented.
      • Jump pads are now destroyable.
      • Jump pads regenerate health quickly over time.
  • Engineer
    • The deploy delay for the spanner has been decreased (from 0.5 to 0.15)
    • Sentry Gun
      • Bullet push increased from 4 to 7
      • Ground push multiplier increased from 7 to 8 for level 1
      • Ground push multiplier increased from 4 to 7 for levels 2 and 3
  • Medic
    • The Super Nailgun has a clip of 30 nails
    • Medkit does 20 melee damage (up from 9)
    • Infection reworked:
      • Infection no longer kills you. (It can only keep you at 1 hp)
      • Infection lasts a finite amount of time.
      • If you survive the infection, you regenerate most the infection damage
  • Demoman
    • Blue pipes now only do full damage on direct hits.
  • Soldier
    • Soldier's nail grenade has been replaced with a laser grenade.
    • Rocket splash radius decreased from 115 to 108
  • HWGuy
    • HWGuy now has a secondary attack, the Overpressure, that pushes enemies away.
    • HWGuy now has a secondary grenade, the Slowfield, that slows enemies inside of it.

Map changes

  • ff_training: Try this new map and game mode to practice the skills you'll need to own at FF.
    • Huge thanks to Bully for recording the voiceover for training
  • ff_warpath: This classic command point map has been released for Fortress Forever!
  • ff_palermo: Several small balance and graphical changes. New HDR sky and sunlight values.
  • New scoring system in place for palermo and cornfield: Every capture point has a time limit of 2 minutes before the teams reset. Capping more quickly nets the attackers more points, while defenders don't score any points. Both teams get an equal number of chances attacking before the map ends.
  • ff_crossover: Fixed bug where flames on players were invisible. Location indicators are back. Snowfall is back. Water looks nicer.
  • ff_dustbowl: 3D sky scenery has been restored.
  • ff_bases: HDR lighting and a few sound and visual fixes.

Lua changes

  • New trigger_ff_clip system
  • Added a lua-driven menu system
    • Callbacks:
    • player_onmenuselect( player, menu_name, selection )
    • menu_onexpire( menu_name, num_players_shown_to )
    • Global functions:
    • ShowMenuToPlayer( player, menu_name )
    • ShowMenuToTeam( team_id, menu_name )
    • ShowMenu( menu_name )
    • CreateMenu( menu_name )
    • CreateMenu( menu_name, title )
    • CreateMenu( menu_name, display_time )
    • CreateMenu( menu_name, title, display_time )
    • DestroyMenu( menu_name )
    • SetMenuTitle( menu_name, title )
    • AddMenuOption( menu_name, slot (0-9), option_text )
    • RemoveMenuOption( menu_name, slot (0-9) )
  • Added a timer manager
    • Added lua functions:
    • AddTimer( timername, startvalue, increment )
    • RemoveTimer( timername )
    • GetTimerTime( timername )
    • AddHudTimer( player, huditemname, timername, x, y )
    • AddHudTimer( player, huditemname, timername, x, y, align )
    • AddHudTimer( player, huditemname, timername, x, y, alignx, aligny )
    • AddHudTimerToTeam( team, huditemname, timername, x, y )
    • AddHudTimerToTeam( team, huditemname, timername, x, y, align )
    • AddHudTimerToTeam( team, huditemname, timername, x, y, alignx, aligny )
    • AddHudTimerToAll( huditemname, timername, x, y )
    • AddHudTimerToAll( huditemname, timername, x, y, align )
    • AddHudTimerToAll( huditemname, timername, x, y, alignx, aligny )
  • Default.lua now loads when a map lacks a map-specific lua file.
  • Added player:IsFrozen()
  • Added ObjectiveNotice(player, string)
  • Added player:GetSpeed()
  • Added ChatToAll(string) and ChatToPlayer(player,string)
  • Added baseentity:Teleport(Vector neworigin, QAngle newangles, Vector newvelocity)
  • Added baseentity:GetOwner(), returns an entity
  • Fixed player_onchat() callback being repeated for every client in the server
  • ApplyTo...() functions no longer skip spectators.
  • trigger_ff_clip now works properly.
  • Changed old player_connected( playername, address, entindex ) to player_canconnect( playername, address, entindex )
    • If this function returns false, the player is rejected from joining the server
  • Added player_connected( player ) that gets called when the player actually connects and exists in the server
  • Fixed player_onchat() lua callback being repeated for every client in the server for each message
  • Made the return of player_onchat() control whether or not the chat message gets sent
  • Fixed trigger onendtouch() getting called twice for each entity
  • Made the "ff_restartround" game event get triggered earlier in the reset so that Lua-related things can react before startup() gets called and players respawn (this fixes Lua HUD elements bugging out from ff_restartround or prematch ending)

Patch 2.41

Released February 2010

User Interface

  • Added hud_takesshots cvar (takes a screenshot at end-of-round if enabled) and added it to the Fortress Options menu (disabled by default)

Generic / Misc Stuff

  • Various network optimizations
  • Any class can see enemy health on crosshairinfo now (previously only medics could)
  • Grenade throwspeed changed to 660 down from 700 (2.3 value was 630)
  • Sharking friction lowered to 1 (down from 4)
  • Client jump sound volume decreased by half and given its own soundscript definition
  • Increased flag bounding box slightly (from basic box +8 to basic box +12; 2.3 value was +24)

Visuals

  • New, less obscuring conc explosion effect
    • Added cvar to switch back to the old effect (cl_conc_refract) and put it in Fortress Options
  • Tweaked chat colors for a bit better visibility.
  • More difference in grenade timer alpha when you throw the grenade, compared to still having it primed

Bug Fixes

  • ShowMenu now works properly
  • Fixed security messages, sounds and icons on base_shutdown maps
  • Fixed escape door messages, sounds and icons on base_hunted maps
  • Fixed being able to use the security button while dead on base_shutdown maps
  • Spy/engi menu click underwater fixed
  • Fixed single shotgun reload sound (thanks gibz)
  • Fixed CurrentClass material proxy (used to be incorrectly named CurrentTeam)
  • Fixed chat spamming using #ff_<msg>
  • Chat now displays properly in clients console. Instead of showing as #ff_<msg> it will show the actual sentence. Color codes no longer display either for easy readability
  • Fixed losing control of player when jumping in water
  • Fixed HUD items getting stuck on screen after spawning
  • Fixed sentries locking on to ghost (unbuilt) buildables
  • Fixed server crash in SG code

Class-specific Changes

  • Engineer
    • Engineer starts with 1 EMP (down from 2), and has a max of 2 (down from 4)
    • Reduced the size of the explosion from bags when hit by EMPs (to compensate for increased ammo count in the normalized death bags)
  • All Classes
    • All classes drop the same amount of ammo when they die (30 cells, 100 shells, 100 nails, 20 rockets)

Map changes

  • Roasted
    • New CTF map
  • Bases
    • New teleporter model in spawns.
    • Lift changed to a real lift instead of a pusher.
    • Mid-ramp area near flagroom opened up into courtyard.
    • Concing access into balcony made more forgiving.
    • Base entrance opened up slightly to reduce spamability.
    • Removed clip brushes at the battlements for sniper access.
    • Added alcove and lowered lighting at the ladder to battlements.
    • Added clip brushes either side of bridge to stop it messing up bunny hop or unintentionally double jumping.
    • Added clip brushes on bottom of flagroom ramp so that people can wall strafe again.
  • Openfire
    • Texturing and lighting improvements.
    • New teleporter model in spawns.
    • Scout, medic, spy and sniper always spawn balcony. Other classes always spawn flagroom.
    • Flagroom bag moved to bottom of steps to make it more obvious.
    • Flagroom bag timer reduced from 15s to 8s, and metal increased to 130.
    • Lift crushes people under it.
    • Few minor bugfixes.
  • Schtop
    • Flagroom bag timer reduced from 10s to 8s.
  • Destroy
    • Top ramp bag timer reduced from 20s to 15s.

Lua changes

  • Added SetGameDescription( name )
    • Changes what appears in the game column of the server browser (it is appended to "FF ")
    • For use in startup()
  • Added callback: player_onchat( player, chatstring )
  • Fixed a typo, SetFriction was actually using GetFriction
  • Added lua functions
    • player:IsGrenade1Primed()
    • player:IsGrenade2Primed()
    • player:IsGrenadePrimed()
    • player:GetAmmoInClip()
    • player:GetAmmoInClip( weaponname )
    • player:SetAmmoInClip( num )
    • player:SetAmmoInClip( weaponname, num )
    • player:GetAmmoCount( ammotype )
    • HasGameStarted() (returns false if still in prematch)
  • Pipes now trigger :onexplode()
  • HudText can parse %command% strings to show the client's bound key for that command (example: %+attack% would translate to MOUSE1 for someone that has MOUSE1 bound as +attack)

Patch 2.4

Released September 2009

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 ;)

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)

Patch 2.3

Released February 2009

User Interface

  • In the team selection menu, the team numbers (AKA hotkeys) are drawn before the team names

Generic / Misc Stuff

  • Altered the version checker to allow us to release future FF updates that don't require new client/server code binaries
  • Reduced conc explosion sound attenuation

Visuals

  • Made HW tracer frequency different between client (1 in 2 shots for your ac) and server (1 in 8 shots for another player's ac)
  • Fixed SG muzzle flash not drawing
  • Added dynamic light to SG muzzle flash

Bug Fixes

  • Fixed player MaxSpeed function always returning 0 for disconnected players (was specifically an issue in CP maps)
  • More attemps at fixing a rare, stupid scoreboard-related crash
  • Fixed crash related to players disconnecting while in a CP zone (base_cp)

Class-specific Changes

  • Medic:
    • Made dropped health packs only heal to 100%
  • Engineer:
    • Made maliciously sabotaged sentries not be spotted by other SGs for 2.5 seconds

Map changes

  • Impact
    • Made a more informative hud
    • Added timed defensive points
    • Added a doorway to the back corner of the third floor
    • Made secondary gate open 1 minute after the main gate opens
    • Locked mp_timelimit once the round times are determined
    • Disabled D scouts
  • Waterpolo
    • Optimized objective icon updates
    • Made everyone (other than the ball carrier) always see the ball as their objective
    • Fixed bug where goalies weren't always respawned when inside the enemy zone
    • Moved goal objective locations into the goals
  • Schtop
    • Fixed security getting broken and out of sync
  • Aardvark
    • Security timer shorter
    • Fixed shadows
    • Bags redone
    • Sniper limit 1
  • Destroy
    • Labeled security buttons
    • Fixed shadows
    • Put in door triggers, so players can now bhop through
  • Openfire
    • Shadows fixed
  • Dustbowl
    • Made door triggers open their doors with OnTrigger instead of OnStartTouch, so they don't close in players' faces
    • Increased grenade bag timers from 5 to 15 seconds.
  • Monkey
    • Made bags in resupplies give 200 metal instead of 90
    • Fixed door triggers
    • Aligned a few textures
  • Shutdown2
    • Made the top respawn room a resupply only
  • All ID Maps
    • Made a more informative hud
  • All AvD Maps
    • Made a more informative hud
    • Locked mp_timelimit to 24
    • Fixed scoring bugs, so now the winning team always wins with 120 points

Lua changes

  • Added set_cvar( cvarname, value ) function that only calls SetConvar if the cvar isn't already set to value
  • Added lowercase c "Broadcast" functions, because uppercase C "BroadCast" functions are lame
  • base_teamplay: Made resupply bags float by default

Patch 2.2

Released January 2009

User Interface

  • Sound options added for the kill beep

Generic / Misc Stuff

  • Massive server logging upgrades/changes
  • Beep sound plays when you kill someone (optional client-side)
  • Neutral flag model added
  • Gibs go SQUISH and PLOP instead of CLUNK

Visuals

  • HW AC now shows tracers for 1 in 2 bullets rather than 1 in 4
  • Smaller, less obscuring flamethrower effect
  • Ragdolls now inherit a large force from fatal non-explosive shots
  • Sped up the conc explosion effect
  • Frag grenade no longer has the pin still attached when you throw it
  • Fixed non-blue engineers with glow-in-the-dark accessories
  • Pilot light added to the flamethrower

Bug Fixes

  • Fixed various server crashes
  • Fixed bug where if a medic heals a player > 100%, that player picking up a resupply bag "hurts" them
  • Fixed jumppad not building properly on +attack2
  • Fixed flaginfo

Class-specific Changes

  • Scout:
    • Scouts now take half fall damage (up from zero fall damage)
  • Sniper:
    • AR dmg down from 8 -> 7
    • AR cone down from 0.09 to 0.07
    • Legshot time reduced from 30 sec to 10 sec
  • Soldier:
    • Increased RPG re-fire rate from 0.65 to 0.7
  • Demoman:
    • Reduced starting mirvs from 2 to 1
  • Medic:
    • No changes
  • HWGuy:
    • AC has dual-cone system, one cone at 0.06, one at 0.12
    • HW AC damage up from 6.5 to 8.2
    • HW AC uses half ammo than before
    • AC has 200 ammo rather than 300
    • AC cooldown time reduced from 0.4 to 0.1 seconds
    • AC has a little bullet push
  • Pyro:
    • IC damage down from 70 to 55
  • Spy:
    • No changes
  • Engineer:
    • SG's can now be built overhanging edges more
  • All Classes:
    • Nailgun pushforce reduced

Map changes

  • Impact
    • New map with a new gametype (!)
  • Palermo
    • All new visuals/lighting
    • Various layout changes, bug fixes
    • HDR added
  • Vertigo
    • Engineers and demomen limited to 2, removed defender detpacks
    • Objective icon fixed
  • Waterpolo
    • Objective icons added
  • 2fort
    • "Cheap" water added in the yard
    • Noannoyances added to spawns
    • Can't grab gren bag through wall in ramp room anymore
    • Spawn doors behave better
  • Schtop
    • New map (capture the flag)
  • Destroy
    • New map (capture the flag)
  • Aardvark
    • Working security icons
  • Openfire
    • Visual/lighting updates
    • Working security icons
    • Small resupply bag added in the flag room - 50/50 h/a every 15 seconds.
  • Monkey
    • Improved ladders, new ramp on flag point
  • All Maps
    • Players start with full health/armor/ammo by default unless map overrides it

Patch 2.1

Released September 2008

User Interface

  • New main menu background

Generic / Misc Stuff

  • "Skim cap" added
    • Skim cap set to 1.80 or 180%. The skim cap does not affect upward trimping.
  • Re-added grenade friction for all non-conc grenades
  • Bunnyhop cap up to 1.40 from 1.20
  • Added objective icons
  • Spawn system made more random
  • Made "can't spawn for X seconds" message show 2 decimal points
  • Added ability to use custom map sentences via "maps\mapname_sentences.txt" file
  • Various hint updates
  • Updated maplist.txt to include new maps
  • All maps now have loading screens
  • Made spies get a message saying their sabotage is about to reset once there's about 6 seconds left
  • Included source files of various maps (found in source\maps)
  • Added another startup mp3: The Ecstasy of Gold (Acoustic Version) by John S

Visuals

  • New IC model!
  • Added shadows that only project downwards (can be turned off with sv_shadows)
  • Added swimming animations
  • Made teammates of a saboteur see team colored spy icons drawn above their sabotaged buildables
  • Made sentries change skin to saboteur's team when maliciously sabotaged
  • Messages now have dropshadow
  • Added medkit first-person animations
  • Added rocket dynamic light
  • Made explosion dlight more orange
  • Enabled dynamic lights by default. Use Fortress Options to disable
  • Completely new single shotgun animations.
  • Civilian is now team-colored and has shoe texture.
  • New jump animation.
  • Thrown/world medkits are now FF medkits, not HL2.
  • Autorifle now has muzzle flash.
  • Autorifle firing animation works correctly.
  • Made disabled classes have their selection buttons disabled instead of not drawn
  • Made railgun muzzle flash blue
  • New rail effects
  • Added cl_pipetrails cvar
  • Added medkit animated screen texture
  • Added ff_blunkka01 texture pack

Bug Fixes

  • Fixed blue pipes not always detonating when they hit a player
  • Added clamp to emp cell damage, so Pyros don't get wtfpwned
  • Fixed emp-triggered ammopack explosion not dealing damage
  • Fixed maliciously sabotaging a dispenser not counting as a kill
  • Fixed sabotaged sg teamkill bugs (rockets, detonation, shooting other buildables, and more)
  • Fixed spies disguised as civilians not having civilian weapons out
  • Fixed detpack context menu disappearing too soon
  • Made spectator hud not draw if cl_drawhud is 0
  • Made messages not draw if either cl_drawhud or hud_messages are 0
  • Added string for FF_FORTPOINTS_DEFUSEDETPACK
  • Fixed "Build sentrygun" radial menu option being disallowed if dispenser was built
  • Fixed wade sound looping bug when standing in water
  • Fixed player list
  • Fixed sabotaged sentries not being targeted by other sentries
  • Fixed spy radial menu not resetting timed out sabotages
  • Fixed not being able to close the stupid spectator menu
  • Fixed not being able to disguise after prematch when you have the flag when prematch ends

Class-specific Changes

  • Scout:
    • Made the jumppad require +jump input
    • Removed jumppad warmup time
    • Reduced size of the jumppad's trigger bounds
    • Jump pad forward push up to 1024 from 1000
    • Jump pad vertical push up to 512 from 500
  • Sniper:
    • Radiotag duration increased from 15 to 30 seconds.
    • AR damage up from 5.5 to 8.
    • Sniper rifle base damage up to 45 from 35
    • Sniper rifle maximum damage up to 275 from 245
    • Sniper rifle charge time down to 5 seconds from 7 seconds
  • Soldier:
    • RPG damage radius decreased slightly (from 125 to 115).
  • Demoman:
    • Pipe bomb damage radius decreased slightly (from 150 to 135).
    • Blue pipe fuse time up to 1.3 seconds from 1.1 seconds.
  • Medic:
    • Made the medic cell regen amount 5 instead of 3
  • HWGuy:
    • New HW AC System! : Dynamic cone and rate of fire removed
    • Clamp removed
    • AC bulletdamage down to 6.5 from 12
    • AC spread set to .06 from (.05->.26)
    • AC cycletime set to .08 from (.05->.15)
  • Pyro:
    • Pyros spawn with 2 napalms instead of 4.
  • Spy:
    • Spy is completely invisible when cloaked and standing still
    • Spy is no longer shot at by SGs while cloaked (The SG emits a sonar beep when it detects a cloaked spy in its line-of-sight)
    • Tranq cycle time lowered to 1.5 from 2.0
    • Lowered sabotage timeout from 120 to 90 seconds
  • Engineer:
    • Removed railgun overcharge damage and made all cool down times (except overcharge) 0.333 seconds
    • Made the railgun only take 1 rail per charge as opposed to 1 at first and 2 at each charge (now it's just 3 total ammo lost after full charge shot instead of 5)
    • Railgun overcharge gives 40 cells
    • Railgun regenerates 1 rail every 4 seconds when it is being used
    • The SG emits a sonar beep when it detects a cloaked spy in its line-of-sight.
    • SG health has come down a small amount to 108% from 113% of TFC level(ish).
    • SG bulletdamage down from 15 to 12
    • SG air bulletpush reduced to 2 from 15
    • SG rate of fire increased significantly
    • SG build time reduced to 3 seconds from 5 seconds
    • SG untarget range added, set to 10% further than lock-on range
    • Dispenser starts with ammo in it
    • Dispenser regenerates ammo and cells faster
    • Dispenser dispenses ammo and cells much faster
    • Made dispensers "eat" nearby dropped bags
  • Civilian:
    • Raised umbrella damage from 18 to 30
    • Finally added civilian.cfg to the FF installers

Map changes

  • 2fort
    • Added 2fort (!)
  • Monkey
    • Massive performance increase
    • HDR added
    • Lower respawn grenade bag respawn time increased
  • Anticitizen
    • Added anticitizen - Attack and Defend map
  • Tiger
    • Added tiger - control point map
  • Bases
    • Added bases - CTF map
  • CZ2
    • New scoring system - stand on the capture points to gain control of them
    • Added locations
  • Hunted
    • Huge performance increase (uses less resources)
    • Added locations (lots of them)
    • Bodyguards always know where the hunted is (through locations and the objective icon)
    • Gave hunted quad damage instead of unagi damage (*69)
    • Enabled hunted damage from sentries and dispensers
    • Limited bodyguards to only having 1 pyro and demoman no longer allowed
    • Scoring changed to 5 per assassination, 10 per escape
    • Added hud door open/closed icons
    • Made escape door buttons lock for 6.66 seconds after using
    • Hole replaced with a vent, and vent room added
    • Added "Fuel Room"
    • Various other layout changes
  • Dustbowl
    • Various bug fixes
    • Minor FPS increases
    • HDR added
    • More cells in various packs, 200 cells on spawn again
  • Waterpolo
    • Major performance increase
    • Removed HDR
    • Made goal triggers a little inset
    • Ladders added to the sides of each team's base
    • Increased ball throw speed/distance
    • Raised ball return time from 10 seconds to 15
    • Made goalies invincible when inside their team's locations, but weak (right now they take triple damage, but they also spawn with full health and armor now) outside them
    • Goalies cannot go out-of-bounds or into the other team's locations
  • Pitfall
    • Added ff_pitfall
    • Major performance increase from old community version
  • Dropdown
    • Added a route from water room to upper floor
    • Added opacity changing windows in flag room
    • Added fire and smoke effects when generator is detpacked
    • Added a 60 seconds delay before generator can be repaired
    • Lots of other smaller changes
    • FPS increases and bug fixes
  • Epicenter
    • First to 3 captures system fixed
    • HUD icons for 3-cap system added
    • Some mapping fixes/alterations
  • Cornfield
    • Defenders spawns moved forward
    • Various bug fixes/visual tweaks
  • All AvD (Dustbowl-style) maps
    • Maps end after 24 mins
    • Scoring fixed

Lua changes

  • Base_ad now works for all 4 teams instead of just red/blue
  • Added grenade prime lua callbacks (player_onprimegren1 and player_onprimegren2)
  • Added DisplayMessage(player, string) lua function (sends the message as a hint)
  • Exposed player's MaxSpeed() function to lua
  • Added SetVelocity lua function
  • Exposed GetLocation and GetLocationTeam to lua
  • Added alignment and ToTeam variations for AddHud functions
  • Added RemoveHudItemFromTeam lua function

Patch 2.0

Released 15 February 2008

User Interface

  • Added a '''Fortress Options''' menu for many advanced options, including enabling/disabling many of the new features listed below.

Generic / Misc Stuff

  • Walls no longer apply friction to grenades, concmaps should be possible now!
  • Small auto-conc for HH concs when you dont jump
  • Frag grenade damage up to 145 (patch 1.0 was 180, patch 1.11 was 126). Radius the same.
  • Throwing the flag is now upwards slightly rather than skidding along the floor
  • Re-added recoil for some weapons (e.g. IC)
  • Suiciding no longer causes you to lose 100 fortress points
  • Bunnyhop cap now 1.20 up from 1.10
  • Flags now GLOW
  • Better intermission scoreboard/player handling
  • Made the currently held grenade timer bar more visible than the dropped ones
  • pyro scream time only triggers once every 1.7 seconds now
  • Added cl_reducedexplosions to help fps problems
  • Added a cvar for ragdoll lifetime
  • New assault cannon fire sound
  • DX 8 and DX 9 levels selectable in Start Menu
  • We now have a readme with many handy links at: SourceMods\FortressForever\README\README.html
  • New sprays! Sprays are selectable in the game options. The path to import them is: SourceMods\FortressForever\sprays
  • NEW .cfg files!
    • For the 1.0 / 1.11 to 2.0 install:
      - You will now see a userconfig.cfg added to your cfg files!
    • For the 2.0 FULL install:
      - New <classname>.cfg files and userconfig.cfg file!

Visuals

  • Grenades now have trails and halo's around them
  • Blue and yellow pipes now have trails
  • Player models have been tweaked to increase visibility
  • Grenade models have been tweaked to increase visibility
  • SG models have been tweaked to increase visibility
  • SG now throws out sparks when it's below 50% health
  • New IC model!
  • No more ugly background for build timers
  • New HUD security icons for shutdown style maps
  • Shotgun muzzle flash more visible
  • Many visuals now line up correctly in widescreen modes (damage indicators, Context menus etc)
  • New EMP effect
  • HUD health / armor no longer flashes red when you are hit. It'll only flash red when you are < 25% health to prevent confusion. (instead it flashes white when hit)
  • Grenade 2 timer up a bit so it's not so far down
  • New explosion scorch decal which doesnt make your whole base black.
  • 'on fire' hud HUD redness reduced a lot
  • Cvars for turning off targets + gren trails
  • Demoman grenades hopefully dont bounce of people any more
  • Readded interpolation for projectiles
  • Put in a fix for grenade timers not showing up
  • Teamcolour hud can now go back to normal again

Bug Fixes

  • Grenade target timing bug
  • Medkit fix. Should be much easier to heal people with medkit and spanner now, as friendlies are lag predicted now.
  • Dispenser / SG health now displays properly on the HUD even if you are far away.
  • CL_CopyExistingEntity crash fixed at last (!!)
  • SG now tracks properly when built on a slope
  • Death by burning is no longer a suicide
  • Fixed LUA error causing security icons to disappear when players connected
  • Fix for spies being able to sabotage when they're dead

Class-specific Changes

  • Scout:
    • Caltrops and radar have been removed. Instead they have a buildable jump pad on +attack2. Jumppad is invincible - det it by double right-tapping. You can only carry one, similar to a detpack. They last 60 seconds before auto-detting. Any team can use them.
    • Players can only use a jump pad once every second, so they dont get multiple triggers.
    • Max conc speed after using the jumppad
    • Reduced conc time for Scout down to Medic level
    • Scouts now don't take fall damage.
  • Sniper:
    • Sniper rifle base damage has been reduced from 42 to 35
    • Radiotag duration reduced from 60 to 15 seconds.
    • AR damage down from 7 to 5.5
  • Soldier:
    • RPG damage radius increased slightly (from 108 to 125).
    • RPG reload time decreased from 1.0 to 0.9 seconds.
    • Nail grens tweaked a lot.
    • Soldier special now quickswitches between shotgun and RPG.
  • Demoman:
    • Blue pipe fuse timer dramatically decreased (from 2.5 to 1.1 seconds). Pipetrap explosion radius increased from 125 to 150.
  • Medic:
    • Right click now discards medpacks for teammates to use (thanks mirv). These take 10 cells to use and the medic slowly recharges cells over time. Medpacks last 5 seconds before disappearing so the person you are throwing to has to pick them up soon (you can't leave a supply for your defenders for example)
  • HWGuy:
    • New HW AC System! : Overheat removed (!), rof changed from 0.06-0.12 to 0.05-0.15. cof changed from 0.10-0.15 to 0.05-0.30.
    • New AC clamp system - hold right mouse to clamp, let go to unclamp. Also fires when you are clamping so you can hold right mouse to clamp + fire (you dont have to hold mouse1 and mouse2)
  • Pyro:
    • IC base damage has come down (from 60 to 50).
    • Flamethrower damage increased to 16 from 13
    • Flamethrower pushforce cap increased to 850 from 550.
    • Pyro special now quickswitches between flamethrower and IC.
    • Pyro vs Pyro now takes 100% damage up from 50%
    • Flamethrower uppush up to 110 from 50.
  • Spy:
    • Spy now has a 'last disguise' option on the menu
    • Knife damage up to 50 from 32.
    • Disguise time halved.
  • Engineer:
    • SG health has come down to 113% from 120% of TFC level(ish).
    • SG bulletpush now works on the ground (thanks jiggs!).
    • SG air bulletpush reduced to 15 from 24
  • All Classes (except medic):
    • Melee weapons now do more damage. Crowbar + spanner up to 30 from 18. Knife up to 50 from 32.

New functionality:

  • New splash screen to tell you about any updates to FF if you are playing an old version.
  • New options screen with a load more stuff on it.

Map changes

  • Crossover
    • VIS fixed, massive performance increase
    • Test middle area structure for additional route
    • Lasers! (currently invisible due to engine bug)
    • Misc brush fixes
    • More obvious Capture Point, lasers in air lift.(thanks gingerlord)
    • Various crossover tweaks including a revamped midmap
    • Crossover tweaks
  • Dropdown
    • Added ff_dropdown - ''This CTF map was previously released to the community in September 2007. It has now been updated with major gameplay changes and a redesigned flag room. It features a destroyable wall, grate and generator, the last one also being repairable.''
    • Polished, bug-fixed version of the community map. Thanks Yann "Sh4x" Richer
  • Dustbowl
    • Dustbowl now compiles properly, various visual fixes (gaps in ceilings etc)
  • Epicenter:
    • New scoring system, capping flag results in that teams flag being reset back to cage, other team unaffected and can continue capturing. First to 3 captures wins and everyone resets.
    • Extended balcony area around cap point for additional SG position
    • Epicenter ammo bags now give a slight amount of health/armor (thanks gingerlord)
    • Epicenter 3-cap LUA system added, some various tweaks
    • Epicenter tweaks
  • Hunted
    • Updated ff_hunted lua script - ''Assassins can now have 7 players, including snipers and 1 spy. Bodyguards can now have Soldiers, Demomen, Medics, HWGuys, Pyros, Engineers, and 1 Sniper. The Hunted now has unagi power and only takes damage from sniper rifle, crowbar, tranq, and knife.''
  • Monkey
    • Monkey is now Red vs Blue
    • Monkey FPS vastly improved
  • Openfire
    • Revamped version of ff_openfire_b2, with better lighting, clipped lights, decent water, better flag-security system, custom teamcoloured security buttons and stuff
  • Waterpolo
    • Updated ff_waterpolo - ''this map now has gameplay more similar to pigskin, a classic fun map, mainly by making the map bigger, removing the respawn rooms, adding side resupply rooms, adding an invisible wall that gets disabled after a 15 second start timer before each round, and allowing buildables that don't die after goals. Also added soundscapes and locations, replaced side steps with with steep ramps for fun trimping and double jumping. Oh, and also removed goalie invincibility and boundaries, made goalies have no armor and no ability to pick up resupply items, and made goalies faster than scouts.''
  • Well
    • Well front door buttons removed, walk up to it = it opens

Patch 1.11

Released 15 November 2007
  • Added blur effect option to menu
  • Added some missing map files
  • Fixed waterpolo Lua script
  • Reduced AC spinup
  • Fixed AC firing huge salvo
  • Reverted accidental conc physics change thing

Patch 1.1

Released 31 October 2007

Generic / Misc Stuff

  • Fixed buildable_ondamage and player_ondamage script callbacks.
  • Fixed kPlayers flag for lua entity collection.
  • Fixed normal explosion sound being played on top of buildable explosion sound.
  • Fixed player_spawn callback getting called every time a player executes /kill.
  • Fixed suicide logic from running when player is already dead.
  • Fixed score overflow at 32k by increasing size of networked score variable.
  • Fixed missing voice hud icons.
  • Fixed player:AddHealth function so it returns expected value. This fixes bug where you can pick up all ammo and armor bags if you weren't full health.
  • Fixed display is + negative fort points(ie + -100)
  • Fixed voice column to show chat on/off icons for other teams.
  • Fixed # leaving off the rest of the string in chat messages if not matched to a localized string.
  • Fixed disguise "enemy" to choose a random enemy team.
  • Fixed infection/heal sound to play at appropriate times.
  • Fixed kill/death messages not showing/tracking.
  • Fixed tickrate 66 clamp.
  • Fixed death view slant.
  • Fixed %l displaying wrong team.
  • Fixed medkit hit/infection sounds to play properly.
  • Fixed sentrygun not being able to retarget closer targets
  • Fixed sentrygun to favor all visible players over buildables(if they got a player as a target they will not target a buildable, regardless of distance)
  • Added lua callbacks for player_connected & player_disconnected
  • Added lua SetDamageForce for damageinfo
  • Added DamageInfo:ScaleDamage function, exposed to lua
  • Added player_onkill callback for player suicide so scripts can reject it(implemented in ff_hunted)
  • Added DropToFloor() lua function that takes a base entity.
  • Added client side spawn weapon cvars to control what weapon you equip on spawn.
  • Added small spinup to AC so it no longer shoots immediately(and no heat buildup during spinup)
  • Added buildable & grenade flags to the base trigger class & .fgd
  • Added a progress bar to spy disguising.
  • Changed to no blood shooting disguised teammates when ff is off.
  • Changed AC to reduce HW speed when firing(and not dependent on charge level).
  • Changed grenade and pipe damage radius up a bit
  • Changed water exiting push force up a bit.
  • Changed decals not to draw on players & buildables. Pretty certain this accounted for a majority of client crashes.
  • Changed a bunch cvars people were using as cheats to cheat.
  • Changed backpacks to non solid to fix them from blocking doors/elevators.
  • Changed messagemode and messagemode2 binding to support auto starting the chat message. Ie, bind p "messagemode ^2" will begin the chat mode with ^2 already in the chat box.

Spawn Weapon Cvars

  • cl_spawnweapon_scout - default nailgun
  • cl_spawnweapon_sniper - default sniperrifle
  • cl_spawnweapon_soldier - default rpg
  • cl_spawnweapon_demoman - default grenadelauncher
  • cl_spawnweapon_medic - default supernailgun
  • cl_spawnweapon_hwguy - default assaultcannon
  • cl_spawnweapon_pyro - default flamethrower
  • cl_spawnweapon_engineer - default railgun
  • cl_spawnweapon_spy - default tranq
  • cl_spawnweapon_civilian - default tommygun
  • Valid options are: crowbar, medkit, knife, spanner, shotgun, supershotgun, nailgun, supernailgun, grenadelauncher, rpg, sniperrifle, railgun, flamethrower, assaultcannon, autorifle, tranq, pipelauncher, ic, tommygun, deploysentrygun, deploydispenser, deploydetpack, tommygun, umbrella

New Chat Macros

  • %d - disguise team and class
  • %i - name of last person in crosshairs
  • %sh - sentry health
  • %sa - sentry ammo
  • %sv - sentry level
  • %sl - sentry location
  • %dh - dispenser health
  • %da - dispenser ammo
  • %dl - dispenser location
  • %pf - detpack fuse time
  • %pl - detpack location
  • Added ^# color markup for chat messages.
    • ^0 - ORANGE
    • ^1 - BLUE
    • ^2 - RED
    • ^3 - YELLOW
    • ^4 - GREEN
    • ^5 - WHITE
    • ^6 - BLACK
    • ^7 - GREY
    • ^8 - MAGENTA
    • ^9 - CYAN
    • ^ - terminates last color
  • Disable with cl_chat_colorize 0
    cl_chat_color_default sets default chat message color(defaults to current orange). it's a string, and takes an RGB, so e.g. ''cl_chat_color_default "255 170 0"''

Version 1.0

Released 13 September 2007
First Release