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 )