If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Team Fortress 2/Unused Text

From The Cutting Room Floor
Jump to navigation Jump to search

This is a sub-page of Team Fortress 2.

Hmmm...
To do:
  • Add in additional information for several entries. Specifically:
    • Which file is the text located in?
    • Which patch was the text added in, if applicable?
    • If applicable, which patch was the text removed in, if it was removed?

There's a good chunk of unused text in Team Fortress 2, ranging from failed design experiments to jokes meant to throw off dataminers.

Localization File Text

Several text strings that go unused can be found within tf\resource\tf_english.txt and the various localized copies of the file.

Early Hat Strings

The "existence of hats" that people had learned about were the following localization lines that were added to the game in the April 20th, 2009 patch, which were later datamined by many players. First we have lines related to the then-upcoming loadout system changes, including strings related to "Headwear" and a "Head" slot. The new loadout slots were later referenced when Slot Tokens were added to the game in the December 17th, 2009 patch, along with several loadout slot tokens that went unused, namely the Grenade Slot Token, Building Slot Token, Primary PDA Slot Token and Head Slot Token.

 "ItemSel_HEAD"      "- HEADWEAR"
 "LoadoutSlot_Primary" "Primary weapon"
 "LoadoutSlot_Secondary" "Secondary weapon"
 "LoadoutSlot_Melee"   "Melee weapon"
 "LoadoutSlot_Grenade" "Grenade"
 "LoadoutSlot_Building"  "Building"
 "LoadoutSlot_pda"   "Primary PDA"
 "LoadoutSlot_pda2"    "Secondary PDA"
 "LoadoutSlot_Head"    "Head"

As well, the first set of cosmetic items to be introduced to the game also had early localized names show up in the localization files in the same patch. These strings were never used, and were never removed from the localization files. What's also weird is that the Pyro and Spy's first cosmetics are referred to as "Helmets" in these strings, but their very first hats were the Pyro's Beanie and the Fancy Fedora for the Spy. Those aren't helmets.

 "TF_Wearable_Headgear"       "Headgear"
 "TF_Unique_Headgear_Scout"      "Batter's Helmet"
 "TF_Unique_Headgear_Sniper"     "Tooth Belt"
 "TF_Unique_Headgear_Soldier"    "Soldier's Helmet"
 "TF_Unique_Headgear_Demoman"    "Fro"
 "TF_Unique_Headgear_Medic"      "Medic's Helmet"
 "TF_Unique_Headgear_Pyro"     "Pyro's Helmet"
 "TF_Unique_Headgear_Heavy"      "Football Helmet"
 "TF_Unique_Headgear_Engineer"   "Mining Helmet"
 "TF_Unique_Headgear_Spy"      "Spy's Helmet"

TF2 MMO strings

These lines were added to the game in the May 1st, 2009 patch as a joke at the expense of people learning about the existence of hats earlier than they were supposed to via strings that were added to the game 12 days prior in the April 20th, 2009 patch.

 // TF2 MMO
 "TF_MMO_LFG"       "Looking For Group"
 "TF_MMO_Quest1"        "You must kill %s1 %s2 to complete this quest."     
 "TF_MMO_Monster1"      "Boars"
 "TF_MMO_Monster2"      "Rats"
 "TF_MMO_Monster3"      "Bats"
 "TF_MMO_Monster4"      "Wolves"
 "TF_MMO_Monster5"      "Spiders"

Early Dustbowl Events

These were presumably from Dustbowl being more like its Team Fortress Classic counterpart. In the actual game, Dustbowl uses standard control points without needing to hold a flag.

 "Dustbowl_team1"     "Attackers"
 "Dustbowl_team2"     "Defenders"
 "Dustbowl_you_secure_one"    "You secured\nCommand Point ONE !!"
 "Dustbowl_you_secure_two"    "You secured\nCommand Point TWO !!"
 "Dustbowl_protect_HQ"      "Protect your HQ from\nthe attacking team !!"
 "Dustbowl_bring_flag"      "Bring your flag\nto the HQ !!"
 "Dustbowl_take_flag_one"   "Take the flag to\nCommand Point ONE."
 "Dustbowl_take_flag_two"   "Take the flag to\nCommand Point TWO."
 "Dustbowl_take_flag_HQ"      "Take the flag to the HQ !!"
 "Dustbowl_blue_secures_one"    "Team BLU Secures\nCommand Point ONE !!"
 "Dustbowl_blue_secures_two"    "Team BLU Secures\nCommand Point TWO !!"
 "Dustbowl_flag_returned"   "Flag has returned to base."
 "Dustbowl_90_secs"     "90 seconds till gates open."
 "Dustbowl_60_secs"     "60 seconds till gates open."
 "Dustbowl_30_secs"     "30 seconds till gates open."
 "Dustbowl_10_secs"     "10 seconds till gates open."
 "Dustbowl_gates_open"      "Gates are open !!"
 "Dustbowl_five_minutes_left"   "Time remaining:\nFive minutes"
 "Dustbowl_four_minutes_left"   "Time remaining:\nFour minutes"
 "Dustbowl_three_minutes_left"    "Time remaining:\nThree minutes"
 "Dustbowl_two_minutes_left"    "Time remaining:\nTwo minutes"
 "Dustbowl_sixty_seconds_left"    "Time remaining:\nSixty seconds"
 "Dustbowl_thirty_seconds_left"   "Time remaining:\nThirty seconds"
 "Dustbowl_attackers_win"   "The Headquarters has\nbeen captured !!"
 "Dustbowl_defenders_win"   "The Headquarters has\nbeen successfully defended !!"

Attack/Defend strings

There are strings present for a flag-based Attack/Defend mode.

 // Attack/Defend strings
 "TF_AD_TakeFlagToPoint"      "Take the flag to\nthe Command Point."
 "TF_AD_YouSecuredPoint"      "You secured\nCommand Point %s1 !!"
 "TF_AD_AttackersSecuredPoint"    "Attackers Secured\nCommand Point %s1 !!"
 "TF_AD_FlagReturned"     "Flag has returned to base."

Invade strings

There are also strings pertaining to a flag-based "Invade" gamemode.

 // Invade strings
 "TF_Invade_FlagReturned"   "The FLAG has returned!"
 "TF_Invade_PlayerPickup"   "You PICKED UP the FLAG!\n\nTake it to the ENEMY BASE!"
 "TF_Invade_PlayerTeamPickup"   "Your team PICKED UP the FLAG!"
 "TF_Invade_OtherTeamPickup"    "The ENEMY has PICKED UP the FLAG!"
 "TF_Invade_PlayerCapture"    "You CAPTURED the FLAG!"
 "TF_Invade_PlayerTeamCapture"    "Your team CAPTURED the FLAG!"
 "TF_Invade_OtherTeamCapture"   "The ENEMY CAPTURED the FLAG!"
 "TF_Invade_PlayerFlagDrop"   "You dropped the FLAG!"
 "TF_Invade_FlagDrop"     "The FLAG was dropped!"
 "TF_Invade_Wrong_Goal"     "Take the flag to the ENEMY BASE."
 "TF_Invade_FlagNeutral"      "The FLAG has become NEUTRAL!\nGet the FLAG!"

Flag Drop string

There is also a string that could be a remnant of when the cut Flag weapon was being tested.

 "TF_Flag_AltFireToDrop"      "Press ALT-FIRE to drop the flag."

Challenge Text

These are from the updated main menu's class stats boxout that's since been removed. "%challengeclass%" was replaced with the class in question's name. It'd randomize what gender it referenced the Pyro class as for added ambiguity-related comedy.

 "ChallengeTitle"     "%challengeclass%"
 "ChallengeSubText"     "Why don't you give him a shot?"
 "ChallengeSubTextB"      "Why don't you give her a shot?"
 "ChallengeRecord"      "Beat this:"
 "ChallengeDetails"     "%s1 as a %s2"

Gadget Token Text

Added in the December 23rd, 2010 patch. When asked about it, Robin Walker described this as "some old prototype stuff we were messing around with, and stopped working on." This text was removed from the game entirely in the September 16th, 2011 patch.

 "CI_T_G"         "Gadget Token"
 "TF_Unique_BleedingSocketItem"     "Leakium"
 "TF_Unique_BulletResistItem"     "Bulletproofium"
 "TF_Unique_FireResistItem"     "Fireproofium"
 "TF_Unique_BlastResistItem"    "Blastproofium"
 "TF_Unique_HealthRegenItem"    "Firstaidium"
 "TF_Unique_SpeedBoostItem"     "Sprintium"
 "TF_Unique_MetalRegenItem"     "Harvestine"
 "TF_Unique_CloakRegenItem"     "Invisine"
 "TF_Unique_CloakConsumeItem"     "Longvisine"
 "TF_Unique_RepairRateItem"     "Wrenchine"
 "TF_Unique_ConstructionRateItem"   "Constructine"

Unused Item Quality String

A name string for the unused item quality "Completed" can be found, having been added to the localization files in the June 10th, 2010 patch. Oddly enough, name strings for the other unused item qualities (Customized, rarity2, and rarity3) are not listed.

 "completed"        "Completed"

Unused Weapon Name Strings

The following name strings can be found as well, which reference several unused weapons.

Early Cut Weapons

Name strings for the more well-known early cut weapons can be found.

 "TF_Weapon_Nailgun"      "Nail Gun"
 "TF_Weapon_Tranq"      "Tranquilizer Gun"
 "TF_Weapon_Crowbar"      "Crowbar"
 "TF_Weapon_SuperSMG"     "Super SMG"
 "TF_Weapon_Flag"     "Flag"

Heraldic Targe

In the December 23rd, 2010 patch, a name string for the unreleased Heraldic Targe was added to the localization files;

 "TF_Unique_Logo_Shield"      "Heraldic Targe" // ADD THE

The filenames for the model for the Heraldic Targe were later found listed in two .lst files in the tf\reslists directory:

  1. cp_degrootkeep.lst, added in the December 17th, 2010 patch (Australian Christmas Update).
  2. cp_granary.lst, which was added a few patches later.

Walkabout

The name string for the cut Walkabout weapon was also added to the localization files in the May 21st, 2009 patch;

 "TF_Unique_Achievement_SniperRifle"  "Walkabout" // ADD THE

Removed Slot Token Names

The names of four removed Slot Tokens are still listed in the localization files to this day despite the items themselves being fully removed from the game (and items_game.ctx in the September 10th, 2010 patch;

 "CI_T_S_4"				"Slot Token - Grenade"
 "CI_T_S_5"				"Slot Token - Building"
 "CI_T_S_6"				"Slot Token - PDA"
 "CI_T_S_8"				"Slot Token - Head"

Sound Script Text

Several sound definitions that go unused ingame can be found within the various game_sounds_-prefixed .txt files found in the tf\scripts\ directory.

Weapons

Several sound definitions exist in game_sounds_weapons.txt for the various cut weapons in the game.

Grenades

Sound definitions for the cut Grenades.

 //
 // ------------------------------------------------------------------------------------ //
 // Grenades
 //
 // Grenade Sounds
 //
 // ------------------------------------------------------------------------------------ //
 
 // ------------------------------------------------------------------------------------ //
 // BASE GRENADE
 // ------------------------------------------------------------------------------------ //
 "BaseGrenade.Explode"
 {
  "channel" "CHAN_STATIC"
  "volume"  "1.0"
  "soundlevel"  "SNDLVL_76dB"
  "rndwave"
  {
    "wave"  "weapons/debris1.wav"
    "wave"  "weapons/debris2.wav"
  }
 }
 "BaseGrenade.BounceSound"
 {
  "channel" "CHAN_ITEM"
  "volume"  "1"
  "soundlevel"  "SNDLVL_74dB"
  "rndwave"
  {
    "wave"    "weapons/grenade_impact.wav"
    "wave"    "weapons/grenade_impact2.wav"
    "wave"    "weapons/grenade_impact3.wav"
  }
 }
 "BaseExplosionEffect.Sound"
 {
  "channel" "CHAN_WEAPON"
  "volume"  "1.0"
  "soundlevel"  "SNDLVL_95dB"
  "pitch"   "PITCH_NORM"
  "rndwave"
  {
      "wave"  ")weapons/explode2.wav"
      "wave"  ")weapons/explode3.wav"
      "wave"  ")weapons/explode1.wav"
  }
 }
 "Weapon_Grenade_Normal.Single"
 {
  "channel" "CHAN_WEAPON"
  "volume"  "1.0"
  "soundlevel"  "SNDLVL_95dB"
  "wave"    "weapons/grenade_throw.wav"
 }

Detpack

Sound definitions for the cut Detpack. Interestingly, the header refers to it as the DET PACK GRENADE.

 // ------------------------------------------------------------------------------------ //
 // DET PACK GRENADE
 // ------------------------------------------------------------------------------------ //
 "Weapon_Grenade_Det_Pack.Plant"
 {
     "channel"    "CHAN_WEAPON"
     "volume"    "1.0"
     "soundlevel"    "SNDLVL_74dB"
     "wave"        "weapons/det_pack_plant.wav"
 }
 "Weapon_Grenade_Det_Pack.Explode"
 {
     "channel"    "CHAN_WEAPON"
     "soundlevel"    "SNDLVL_95dB"
     "pitch"        "PITCH_NORM"
     "volume"    "1.0"
     "wave"        ")weapons/det_pack_explode.wav"
 }
 "Weapon_Grenade_Det_Pack.Timer"
 {
     "channel"    "CHAN_ITEM"
     "volume"    "1.0"
     "soundlevel"    "SNDLVL_74dB"
     "wave"        "weapons/det_pack_timer.wav"
 }

Crowbar

Sound definitions for the cut Crowbar weapon.

 // ------------------------------------------------------------------------------------ //
 // CROWBAR
 // ------------------------------------------------------------------------------------ //
 "Weapon_Crowbar.Miss"
 {
  "channel" "CHAN_WEAPON"
  "soundlevel"  "SNDLVL_64dB"
  "volume"  ".6"
  "wave"    ")weapons/cbar_miss1.wav"
 }
 "Weapon_Crowbar.HitFlesh"
 {
  "channel" "CHAN_ITEM"
  "soundlevel"  "SNDLVL_NORM"
  "volume"  "1.0"
  "rndwave"
  {
    "wave"    "weapons/cbar_hitbod1.wav"
    "wave"    "weapons/cbar_hitbod2.wav"
    "wave"    "weapons/cbar_hitbod3.wav"
  }
 }
 "Weapon_Crowbar.HitWorld"
 {
  "channel" "CHAN_ITEM"
  "soundlevel"  "SNDLVL_NORM"
  "volume"  "1.0"
  "rndwave"
  {
    "wave"    "weapons/cbar_hit1.wav"
    "wave"    "weapons/cbar_hit2.wav"
  }
 }
 "Weapon_Crowbar.Melee_HitWorld"
 {
  "channel" "CHAN_ITEM"
  "volume"  "0.7"
  "soundlevel"  "SNDLVL_NORM"
  "pitch"   "90,120"
  "rndwave"
  {
    "wave"    "weapons/crowbar/crowbar_impact1.wav"
    "wave"    "weapons/crowbar/crowbar_impact2.wav"
  }
 }

Flag

Sound definitions for the cut Flag weapon.

 // ------------------------------------------------------------------------------------ //
 // FLAG
 // ------------------------------------------------------------------------------------ //
 "Weapon_Flag.Miss"
 {
  "channel" "CHAN_WEAPON"
  "soundlevel"  "SNDLVL_64dB"
  "volume"  ".6"
  "wave"    ")weapons/cbar_miss1.wav"
 }
 "Weapon_Flag.HitFlesh"
 {
  "channel" "CHAN_ITEM"
  "soundlevel"  "SNDLVL_NORM"
  "volume"  "1.0"
  "rndwave"
  {
    "wave"    "weapons/cbar_hitbod1.wav"
    "wave"    "weapons/cbar_hitbod2.wav"
    "wave"    "weapons/cbar_hitbod3.wav"
  }
 }
 "Weapon_Flag.HitWorld"
 {
  "channel" "CHAN_ITEM"
  "soundlevel"  "SNDLVL_NORM"
  "volume"  "1.0"
  "rndwave"
  {
    "wave"    "weapons/bottle_hit1.wav"
    "wave"    "weapons/bottle_hit2.wav"
  }
 }

Nail Gun

Sound definitions for the cut Nail Gun weapon.

 // ------------------------------------------------------------------------------------ //
 // Nail Gun
 // ------------------------------------------------------------------------------------ //
 "Weapon_NailGun.Single"
 {
  "channel" "CHAN_WEAPON"
  "soundlevel"  "SNDLVL_94dB"
  "volume"  "1.0"
  "wave"    ")weapons/nail_gun_shoot.wav"
 }
 "Weapon_NailGun.SingleCrit"
 {
  "channel" "CHAN_WEAPON"
  "soundlevel"  "SNDLVL_94dB"
  "volume"  "1.0"
  "wave"    ")weapons/nail_gun_shoot_crit.wav"
 }
 "Weapon_NailGun.Reload"
 {
  "channel" "CHAN_ITEM"
  "volume"  "0.7"
  "soundlevel"  "SNDLVL_NORM"
  "wave"    "weapons/smg1/smg1_reload.wav"
 }
 "Weapon_NailGun.ClipEmpty"
 {
  "channel" "CHAN_STATIC"
  "volume"  "0.7"
  "soundlevel"  "SNDLVL_NORM"
  "wave"    "weapons/pistol/pistol_empty.wav"
 }
 "Weapon_NailGun.Draw"
 {
  "channel" "CHAN_AUTO"
  "soundlevel"  "SNDLVL_74dB"
  "volume"  ".5"
  "wave"    "weapons/draw_primary.wav"
 }

Branding Iron

Sound definitions for the cut Branding Iron weapon.

Interestingly, the Fire Axe's sound definitions still have the BRANDING IRON header.

 // ------------------------------------------------------------------------------------ //
 // BRANDING IRON
 // ------------------------------------------------------------------------------------ //

At the end of the BRANDING IRON section, just underneath Weapon_FireAxe.Draw is an unused definition specifically for the Branding Iron. Weirdly, there's a comment above it as well, implying that this sound is called by the Branding Iron viewmodel during the draw animation, although the question mark at the end of the comment seems to indicate Valve were not sure if it did actually get called by the model. However, decompiling the Fire Axe viewmodel (which is what the Branding Iron became) shows that it instead uses the proper Weapon_FireAxe.Draw definition. Since the actual Branding Iron viewmodel has never seen a public release/leak, it cannot be decompiled to check if it does indeed call this sound definition.

 // called from model?
 "Weapon_BrandingIron.Draw"
 {
     "channel"    "CHAN_AUTO"
     "soundlevel"    "SNDLVL_74dB"
     "volume"    ".5"
     "wave"        "weapons/draw_melee.wav"
 }

Speed Pad

First added in the December 8th, 2014 patch, this definition for a sound related to a "Speed Pad" building was found. Other than it being a building, it wasn't really known what the Speed Pad was. It was assumed that it would have something to do with speeding players up.

It ended up being discovered to be an experimental new Engineer building, via code found in the August 2017 source code leak pertaining to its functionality.

 // ------------------------------------------------------------------------------------ //
 // SPEEDPAD
 // ------------------------------------------------------------------------------------ //
 "Building_Speedpad.Boost"
 {
   "channel"   "CHAN_STATIC"
   "volume"    "1.0"
   "soundlevel"  "SNDLVL_74dB"
   "wave"      ")weapons/speed_pad.wav"
 }

Item Schema Changes/Removals

Over the years, the tf\scripts\items\items_game.ctx (or .txt in later years) has seen many additions and removals of items.

Removed Slot Tokens

Several removed slot tokens were present in the game early on, albeit not obtainable but still listed in the schema. Slot Tokens as a whole were added to the game in the December 17th, 2009 patch. Four of the slot tokens which went entirely unused, would be removed from the game in the September 10th, 2010 patch. Their item IDs were not re-used and thus have been permanently removed. The name strings for these items are also present in the localization files.


(Source: Archived copy of TF2Items.com's item list showing the tokens)

Grenade

A slot token for a Grenade slot.

 "5015"
 {
 	"name"	"Slot Token - Grenade"
 	"item_class"	"slot_token"
 	"craft_class"	"craft_token"
 	"item_slot"	"grenade"
 	"item_type_name"	"#TF_CraftItem"
 	"item_name"	"#CI_T_S_4"
 	"item_description"	"#TF_CraftItem_Token_S_Desc"
 	"image_inventory"	"backpack/weapons/w_models/w_bottle"
 	"image_inventory_size_w"		"128"
 	"image_inventory_size_h"		"82"
 	"item_quality"	"unique"
 	"min_ilevel"	"1"
 	"max_ilevel"	"1"
 	"slot_token_id"		"grenade"
 }

Building

A slot token for a Building slot. The Spy does in fact have a Building slot for his various Sappers. Surprisingly, this token has remained cut despite the Spy now having multiple Sappers, which could make a Building slot token useful.

 "5016"
 {
 	"name"	"Slot Token - Building"
 	"item_class"	"slot_token"
 	"craft_class"	"craft_token"
 	"item_slot"	"building"
 	"item_type_name"	"#TF_CraftItem"
 	"item_name"	"#CI_T_S_5"
 	"item_description"	"#TF_CraftItem_Token_S_Desc"
 	"image_inventory"	"backpack/weapons/w_models/w_bottle"
 	"image_inventory_size_w"		"128"
 	"image_inventory_size_h"		"82"
 	"item_quality"	"unique"
 	"min_ilevel"	"1"
 	"max_ilevel"	"1"
 	"slot_token_id"		"building"
 }

PDA

A slot token for the PDA (or PDA 1) slot, which would be for the Engineer's Build and Destroy PDAs, and the Spy's Disguise Kit. Since there are no alternatives to those three items, this slot token wasn't needed and thus was removed. There is still a slot token for the PDA 2 slot (for Spy's watches) however.

 "5017"
 {
 	"name"	"Slot Token - PDA"
 	"item_class"	"slot_token"
 	"craft_class"	"craft_token"
 	"item_slot"	"pda"
 	"item_type_name"	"#TF_CraftItem"
 	"item_name"	"#CI_T_S_6"
 	"item_description"	"#TF_CraftItem_Token_S_Desc"
 	"image_inventory"	"backpack/crafting/token_pda"
 	"image_inventory_size_w"		"128"
 	"image_inventory_size_h"		"82"
 	"item_quality"	"unique"
 	"min_ilevel"	"1"
 	"max_ilevel"	"1"
 	"slot_token_id"		"pda"
 }

Head

What does everybody want? Yes, there was a Head slot token. Cosmetic items were around at the same time as this token but for some reason this token wasn't used for the random crafting of cosmetics and was removed.

 "5019"
 {
 	"name"	"Slot Token - Head"
 	"item_class"	"slot_token"
 	"craft_class"	"craft_token"
 	"item_slot"	"head"
 	"item_type_name"	"#TF_CraftItem"
 	"item_name"	"#CI_T_S_8"
 	"item_description"	"#TF_CraftItem_Token_S_Desc"
 	"image_inventory"	"backpack/weapons/w_models/w_bottle"
 	"image_inventory_size_w"		"128"
 	"image_inventory_size_h"		"82"
 	"item_quality"	"unique"
 	"min_ilevel"	"1"
 	"max_ilevel"	"1"
 	"slot_token_id"		"head"
 }

Unused Weapon Attributes

Located in the game's .vpk files are various unused weapon attributes, with varying degrees of functionality. While most of them are unused but completely uninteresting (+% less accurate/+% more ammo, etc.) there are several which indicate weapons which were removed altogether. Among the more interesting mechanics:

Attribute Name Function Description
Attrib_OverhealDecay_Disabled Overheal bonus doesn't decay The primary attribute of the removed Overhealer.
Attrib_FistsHaveRadialBuff On Kill: +50 health on nearby teammates

On Kill: +10% Crit Chance on nearby teammates

Former attribute of the K.G.B.
Attrib_DmgPenaltyVsNonStunned %s1% damage vs non-stunned players Previous downside of the Sandman.
Attrib_ZoomSpeedMod_Disabled No move speed penalty from zoom Walkabout's positive attribute.
Attrib_SniperNoCharge No zoom or damage charge Walkabout's downside.
Attrib_NoDoubleJump Disables double jump on wearer Former negative attribute of the Sandman before it was changed to -15 health.
Attrib_AbsorbDmgWhileCloaked Absorbs %s1% damage while cloaked Completely unused attribute indicating new cloak type.
Attrib_RocketLauncherSeeker Fires laser guided rockets Removed rocket launcher. It is unknown whether this attribute retains its functionality.
Attrib_ChargedAirblast Airblast can now be charged, which will push enemies further Degreaser design experiment. Works, but has no HUD elements to show it.
Attrib_AirblastCost_Increased +%s1% airblast cost Degreaser design experiment.
Attrib_AirblastCost_Decreased %s1% airblast cost Degreaser design experiment.