the cutting room mirror

SDK Release

This article has a talk page!This article has a talk page!
view on tcrf.net

This is a sub-page of Development:Team Fortress 2.

New_tf2_logo.png On February 18th, 2025, Valve released the source code for the client and server DLLs for Team Fortress 2 specifically for mod-makers to use without having to sully themselves with leaked materials. This official release is up to date with the official version of the game, but has some minor changes - for example, inventory handling is read-only, and most of the profanity was removed from code comments - for decency's sake.

Also, for some reason the game's name is changed to "Frog Fortress" in gameinfo.txt, the game icon recoloured green, and the TF2 logo graphic (seen to the right) given a green recolour and facelift based on the flat Twemoji-styled frog emoji. This is presumably partially to make it obvious that this is the mod version of the code compared to the official build when they're both installed in the same Steam library, and partially as a little signature by Misyl, the amphibian-enthusiast contractor who prepared the release for Valve. 🐸

Most (if not all) of the unused non-engine code from the earlier, leaked versions, like Raid Mode, is still present in this release.

Cut Qualities#

econ_item_constants.cpp contains mentions of cut qualities "Customized", "Well-Designed" / "Artisan", and "Completed".

int g_nRarityScores[] =
{
    15,     // AE_NORMAL,
    10,     // AE_RARITY1,  // Geniune
    102,    // AE_RARITY2,  // Customized (unused)
    11,     // AE_VINTAGE,
    101,    // AE_RARITY3,  // Artisan (unused)
    0,      // AE_UNUSUAL,
    14,     // AE_UNIQUE,
    -1,     // AE_COMMUNITY,
    -3,     // AE_DEVELOPER,
    -2,     // AE_SELFMADE,
    100,    // AE_CUSTOMIZED,       // Unused
    9,      // AE_STRANGE,
    103,    // AE_COMPLETED,        // Unused
    13,     // AE_HAUNTED
    12,     // AE_COLLECTORS
    8,      // AE_PAINTKITWEAPON
    7,      // AE_RARITY_DEFAULT,
    6,      // AE_RARITY_COMMON,
    5,      // AE_RARITY_UNCOMMON,
    4,      // AE_RARITY_RARE,
    3,      // AE_RARITY_MYTHICAL,
    2,      // AE_RARITY_LEGENDARY,
    1,      // AE_RARITY_ANCIENT,
};

Cut Strange Parts/Fliters#

econ_item_constants.cpp contains a list of all strange parts/filters, these ones are currently unused:

enum kill_eater_event_t
{
    kKillEaterEvent_PlayerKillAlreadyDominated,     // (part) we killed a player with this weapon that we were already dominating
    kKillEaterEvent_PlayerKillFriend,           // (part) we killed a player who is a Steam friend (GC-updated)
    kKillEaterEvent_RobotsDestroyedAfterPenetration,    // (part) we killed a robot with a shot that had already penetrated another robot
    kKillEaterEvent_RobotHeadshotKills,         // (part) like kKillEaterEvent_HeadshotKill, but only for robots
    kKillEaterEvent_RobotsSlowed,               // (part) we hit some robots with Jarate and now they're slow
    kKillEaterEvent_NEGATIVE_SniperShotsMissed,     // (part) we shot our sniper rifle and didnt hit anything
    kKillEaterEvent_NEGATIVE_UbersDropped,          // (part) we died with a full ubercharge
    kKillEaterEvent_NEGATIVE_DeathsWhileCarryingBuilding,   // (part) we died while carrying a building
    kKillEaterEvent_NEGATIVE_DeathsFromCratering,       // (part) we died from cratering
    kKillEaterEvent_NEGATIVE_DeathsFromEnvironment,     // (part) we died from environmental damage
    kKillEaterEvent_NEGATIVE_Deaths,            // (part) we died :(
    kKillEaterEvent_UniqueEvent__KilledAccountWithItem, // (part) (unique event) how many individual accounts have we killed?
    kKillEaterEvent_RobotSniperKill,            // (part) Not yet shipped
    kKillEaterEvent_RobotSoldierKill,       // = 70 // (part) Not yet shipped
    kKillEaterEvent_RobotDemomanKill,           // (part) Not yet shipped
    kKillEaterEvent_RobotHeavyKill,             // (part) Not yet shipped
    kKillEaterEvent_RobotPyroKill,              // (part) Not yet shipped
    kKillEaterEvent_RobotEngineerKill,          // (part) Not yet shipped
    kKillEaterEvent_RobotMedicKill,             // (part) Not yet shipped
    kKillEaterEvent_Halloween_OverworldKills,   // = 90
    kKillEaterEvent_Halloween_UnderworldKills,
    kKillEaterEvent_Halloween_MinigamesWon,
    kKillEaterEvent_CosmeticOperationContractsCompleted,    // Operation Stat Tracker
    kKillEaterEvent_CosmeticOperationKills,         // Operation Stat Tracker
    kKillEaterEvent_CosmeticOperationContractsPoints,
    kKillEaterEvent_CosmeticOperationBonusPoints,
    kKillEaterEvent_TauntsPerformed,    // = 100    // Strange Taunts
    kKillEaterEvent_InvasionKills,              // Kills During Invasion Event.  Locked after Operation
    kKillEaterEvent_InvasionKillsOnMap01,
    kKillEaterEvent_InvasionKillsOnMap02,
    kKillEaterEvent_InvasionKillsOnMap03,
    kKillEaterEvent_InvasionKillsOnMap04,

    // NEW ENTRIES MUST BE ADDED AT THE BOTTOM
};

Cut Holidays#

econ_holidays.cpp defines some holidays that are unused. April Fools is defined as between March 31st and April 2nd, Valentines days is defined as between the 13th and 15th of February.