I Wanted Orange (The machine would not make a mistake.)


TF2’s 2010 halloween update: Notes on the Headless Horseless Horsemann

With the recent update to TF2, a new map, cp_manor_event, is in rotation. And with it, a new and oddball feature: NPC enemies.

The enemy is the Headless Horseless Horsemann, somtiems abbreviated "HHH", reputed to be the ghost of Silas Mann from the series' unfolding backstory. Here are some quick facts I learned from painful experience that I wish I had known several hours ago:


  • The Horsemann will respawn at a random interval between 7 and 9 minutes.
  • He will not appear unless there are at least 10 people (not bots)  present on a server.
  • He appears on whatever control-point BLU currently needs to capture.
  • Instead of spawning during map set-up time, the Horsemann will spawn immediately when set-up ends.


  • The Horsemann chases one person who is designated "IT" (with a  skull-and-crossbones icon above their head.)
  • He will still kill anyone who gets too close into his way as he chases.
  • The person who is "IT" can melee-strike an enemy to transfer the "IT" status (and the attention of the Horsemann) to them instead.
  • The Horsemann will destroy sentries and dispensers to get at his target, and cloaking cannot hide you.
  • When the person who is "IT" dies,  gets too far away, or enters a spawn room, or is otherwise impossible to reach, the Horsemann will re-target to the nearest player.
  • If he can't find anyone remotely nearby to chase, it travels back to the CP it spawned on.


  • The Horsemann will occasionally go "boo" and inflict the "scared" status effect, much like the ghost of Zephreniah Mann in koth_harvest_event.
  • He only has a melee attack, but if he hits you, you're going to die unless ubered or using some other invulnerability mechanism.
  • His initial health amount is at least 3000, and can be higher by an additional 200 for each player. (Presumably each player beyond the required 10, but I'm not sure.)
  • He generally runs at scout-speed (400u/s), although clever movement and vertical jumps can help a lot to gain breathing room, since he follows fairly mundane paths through the level and does not jump certain gaps.
  • He is not targeted by sentries of either team.
  • He cannot be stunned with the Sandman, Jarate'd, or doused with Mad Milk.
  • Backstabs appear to do no extra damage than other knife strikes.


  • "Sleepy Hollownd" is easy to get by just doing a lot of damage to the HHH, regardless of how he finally dies.
  • "Gored" appears to be only possible by striking the low-health Horsemann with a melee weapon. You will definitely get it if yours is the final strike that finishes him off, but there are reports you can get it as one of the last few living people to melee him before he dies.
  • By the time the Horsemann displays his "dying" animation, it's too late, so don't bother hanging back and only hitting him as he convulses and explodes.
  • Upon getting the "Gored" achievement, you will also get a one-time drop of craftable haunted scrap metal.
  • Since you cannot get the achievement or the haunted-metal twice, if you have already gotten the "Owned" achievement the best thing you can do for your friends is to be "IT" and lure the Horsemann around. At the very least, don't attack him if you think he might be near death.
Tagged as: Comments Off

Art-pass contest done soon…

You know how long-term deadlines somehow sneak up on you? Turns out the TF2 Art-pass contest is ending real soon, so I need to scramble a bit to get a newer version of PackBsp out.

Version 2.0.4 should mainly be bug-fixes and stability improvements: I don't want to gamble too much on new features if people might be using it to submit final contest entries.

Tagged as: , Comments Off

“Will I Blend?”

Partly spurred on by the Art-pass contest, and partly by a lull at work, I'm (re-)starting my attempts to learn Blender and create custom models for TF2.

I have very little experience detailing maps--barring some narrow types of optimization-- and I'm slightly worried I won't have time to actually implement the story and setting I want to create after I spend time learning how to do it.

On that note, I hope to also take some time to revisit how PackBsp handles models. It is deficient when it comes to:

  • Skins for models with "sub-model" pieces
  • Gibs for models when they are destroyed

At least to get the gib-data, it seems I need to write code to read the binary .PHY files. They appear to have less documentation than most of the other stuff so far, so I'll probably have to tinker a lot in a hex-editor.

Tagged as: , Comments Off

TF2 Engineer update hints?

Edit #2:  Oops! It seems a slightly-different but much-more-legible version of this document was presented as part of the classless update! I've left my original guesses and ***** marks in-place, but note that certain sections (ex. Silas Mann) are new.

I decided to take a stab at deciphering the tiny text of the Zephreniah Mann & Sons Co. Quarterly Concern, which was posted on the Engineer Update page. (May edit if new material is made legible.)

Tagged as: Continue reading

Improving compression blast… usability.

In Team Fortress 2, the Pyro class has a rather special ability to--through careful timing--reflect enemy projectiles. Since Valve seems to be trying to further emphasize this role, I think it would be a good idea to address some issues with the compression-blast's usability. Why usability? Because the compression blast (or "airblast") is one of the most ping-sensitive mechanics in the game, requiring both a fine sense of timing as well as being not compensated for lag effects.

There are some good technical reasons for it to be ping-sensitive, but at the moment is lacks important feedback to users so that they can judge an correct for the effects of internet latency. Read on for pictures.

Tagged as: Continue reading

2fort_revamp is more popular than I thought… when you count the renamed ripoff.

Someone accused me of making minor changes to a map called ctf_2fort_freak today. OK, it was a while ago, but I only noticed I had youtube messages to moderate today.

Turns out the folks at The Gamers Playground have two "2fort Freak" servers. The only problem? It's a direct copy of ctf_2fort_revamp_b1, which I released on FPSBanana back in July 2009. It's even got the spots where you can fly around and see my name. I should emphasize that it's entirely possible the folks running the server don't know it, and that instead some unscrupulous player presented a renamed file to them.

Hey, that's MY map...

So I'm feeling a bit conflicted. Somewhat pissed, and somewhat happy that people like the ideas behind ctf_2fort_revamp more than the statistics would suggest.


TF2 Texture Glitch & Temporary Fix

After the recent update, some folks have complained about things like blurry weapon icons. Apparently the new version of the icon file didn't have settings to prevent low-texture-quality settings from working with the icons the same way they do with all the other textures in the game, so everyone used to low-quality blurry floors and walls now had bits of their GUI also going blurry.

An example of the glitch.

Hopefully Valve will make an update soon to fix this, but in the meantime you can solve the problem by extracting the problem files and modifying them with VTFEdit, using the modified copies to override the ones that are in the game's core files.

Downloadable temporary fix

Rather than make everyone do it themselves, I've uploaded "fixed versions" right here. This will only work on servers which aren't set to sv_pure, and after Valve patches it you'll want to delete the copies you've made: If you leave them sitting around your hard drive you won't see any new icons Valve adds to the game later. Simply follow the instructions in the readme.txt file.

    Tagged as: Comments Off

    More GcfDiffer output

    So comparing my GCFs from the 20th with today, the 27th...
    • multiplayer ob binaries.gcf
    • team fortress 2 materials.gcf
    • team fortress 2 client content.gcf
    • team fortress 2 content.gcf
    • episode two content.gcf
    • portal content.gcf
    • source 2007 binaries 2.gcf
    • source 2007 shared materials.gcf
    And some new GCFs were created (probably mostly old content being refactored) as Valve updates their older properties.
    • episode one 2007 content.gcf
    • half-life 2 2007 base content.gcf
    Most of it is predictable from the changelog. However...
    • Several maps now have .mov introductions as well as .bik. I guess for some reason Bink video wasn't usable with TF2 on a Mac platform, so Valve has made quicktime versions.
    • I see there is now talk in the hud about QualityColorSelfMade, probably relating to this blog post.
    • Some folks on Reddit have already noticed that the changes to tf\materials\HUD\d_images.vtf implies some new ways to hurt people. (Unfortunately scripts/mod_textures.txt doesn't have information on the new mystery icons.
    Otherwise, nothing really interesting.
    Tagged as: Comments Off

    Valve changed their data: Mac support

    Hit a small wrinkle in PackBSP.  Sometime in the last few weeks Valve changed something about the format for clientregistry.blob and my code was complaining. (It probably would've worked fine but I put in some paranoid assertions.) It didn't take too long to fix, but I figured someone might be interested in the findings.

    1. Each application (ex. Team Fortress 2, appid=440) has a list of dependencies. That dependency list now carries an extra string of information for the OS, either "windows" or "macos".
    2. This means that Mac-specific GCFs exist. For example:
      • 316: Multiplayer OB Mac Binaries
      • 451: Team Fortress 2 Mac
    3. As you might imagine, most of the preexisting GCFs have been marked "windows" except for those that only have sounds, materials, models, etc, which are platform-agnostic. So good news mappers: All those visual assets are definitely shared.

    I can't say PackBSP will be mac-ready in its entirety (in some ways I know it is not) but there's something sort of cool when some future-proofing really comes together.


    A peek into Valve’s updates

    Today Valve released a patch for TF2, but strangely the download monitor says it weighed in at about 100 megabytes. What's in there? About a week ago I went ahead and adapted some jhllib code to log data about the updates, so it seemed like a good opportunity to try it out. So what changed between the 13th and the 19th?

    • tf\bin\server.dylib
    • tf\bin\server.so
    • tf\scripts\items\items_game.txt
    • hl2\cfg\config_default.cfg
    • hl2\resource\ClientScheme.res
    • hl2\scripts\HudLayout.res
    • hl2\shaders\fxc\Downsample_nohdr_ps20.vcs
    • hl2\shaders\fxc\aftershock_ps20.vcs
    • hl2\shaders\fxc\aftershock_ps20b.vcs
    • hl2\shaders\fxc\cloak_blended_pass_ps20.vcs
    • hl2\shaders\fxc\cloak_blended_pass_ps20b.vcs
    • hl2\shaders\fxc\cloak_blended_pass_ps30.vcs
    • hl2\shaders\fxc\cloak_ps30.vcs
    • hl2\shaders\fxc\decalmodulate_ps30.vcs
    • hl2\shaders\fxc\downsample_nohdr_ps20b.vcs
    • hl2\shaders\fxc\emissive_scroll_blended_pass_ps20.vcs
    • hl2\shaders\fxc\emissive_scroll_blended_pass_ps20b.vcs
    • hl2\shaders\fxc\emissive_scroll_blended_pass_ps30.vcs
    • hl2\shaders\fxc\engine_post_ps20b.vcs
    • hl2\shaders\fxc\eye_refract_ps30.vcs
    • hl2\shaders\fxc\flesh_interior_blended_pass_ps20.vcs
    • hl2\shaders\fxc\flesh_interior_blended_pass_ps20b.vcs
    • hl2\shaders\fxc\teeth_bump_ps30.vcs
    • hl2\shaders\fxc\teeth_flashlight_ps30.vcs
    • hl2\shaders\fxc\teeth_ps30.vcs
    • hl2\shaders\fxc\vertexlit_and_unlit_generic_bump_ps20.vcs
    • hl2\shaders\fxc\vertexlit_and_unlit_generic_bump_ps20b.vcs
    • hl2\shaders\fxc\vertexlit_and_unlit_generic_bump_ps30.vcs
    • hl2\shaders\fxc\vortwarp_ps20.vcs
    • hl2\shaders\fxc\vortwarp_ps20b.vcs
    • hl2\shaders\fxc\vortwarp_ps30.vcs


    • bin\bugreporter_filequeue.dll
    • bin\engine.dll
    • hl2\shaders\fxc\vertexlit_lighting_only_ps20.vcs
    • hl2\shaders\fxc\vertexlit_lighting_only_ps20b.vcs

    As you can see, the changes seem to pretty closely track the posted patch notes. Shaders, bug reports, HUD elements... And many of the shaders increased in size, perhaps  with a lot of conditional code for Mac compatibility?

    However, the size changes don't seem to match what Steam is showing. It's possible Steam's download status screen is wrong, or includes CS:S beta content which was skipped for me... Or I'm just not looking in the right places. Hmmm.

    Tagged as: , Comments Off