Skip to content

Salvage

Overview

Salvage recipes define how existing items are broken down into raw materials at the Salvage Bench. They use the same base recipe schema as crafting recipes but always have exactly one input item, multiple outputs, and a BenchRequirement pointing to the "Salvagebench" processing bench. The PrimaryOutput field identifies the most valuable recovered material shown in the UI.

File Location

Assets/Server/Item/Recipes/Salvage/

One JSON file per salvageable item, named Salvage_<ItemId>.json, e.g. Salvage_Armor_Adamantite_Chest.json.

Schema

Salvage recipes share the full recipe schema. The fields used in practice are:

FieldTypeRequiredDefaultDescription
InputInputEntry[]YesSingle-element array identifying the item to salvage. Always uses ItemId.
Input[].ItemIdstringYesThe item ID being salvaged.
Input[].QuantitynumberYesAlways 1 for salvage.
PrimaryOutputOutputEntryYesThe primary recovered material shown as the headline result in the UI.
PrimaryOutput.ItemIdstringYesItem ID of the primary recovered material.
PrimaryOutput.QuantitynumberYesAmount of the primary material recovered.
OutputOutputEntry[]YesFull list of all materials recovered, including the primary output and any secondary materials.
Output[].ItemIdstringYesItem ID of the recovered material.
Output[].QuantitynumberYesAmount recovered.
BenchRequirementBenchRequirement[]YesAlways [{ "Type": "Processing", "Id": "Salvagebench" }].
TimeSecondsnumberYesProcessing time in seconds at the Salvage Bench.

Examples

Adamantite chest piece (Salvage_Armor_Adamantite_Chest.json):

{
"Input": [
{
"ItemId": "Armor_Adamantite_Chest",
"Quantity": 1
}
],
"PrimaryOutput": {
"ItemId": "Ore_Adamantite",
"Quantity": 6
},
"Output": [
{
"ItemId": "Ore_Adamantite",
"Quantity": 6
},
{
"ItemId": "Ingredient_Hide_Heavy",
"Quantity": 2
},
{
"ItemId": "Ingredient_Fabric_Scrap_Cindercloth",
"Quantity": 2
}
],
"BenchRequirement": [
{
"Type": "Processing",
"Id": "Salvagebench"
}
],
"TimeSeconds": 4
}

Cotton cloth chest piece (Salvage_Armor_Cloth_Cotton_Chest.json):

{
"Input": [
{
"ItemId": "Armor_Cloth_Cotton_Chest",
"Quantity": 1
}
],
"PrimaryOutput": {
"ItemId": "Ingredient_Fabric_Scrap_Cotton",
"Quantity": 4
},
"Output": [
{
"ItemId": "Ingredient_Fabric_Scrap_Cotton",
"Quantity": 4
}
],
"BenchRequirement": [
{
"Type": "Processing",
"Id": "Salvagebench"
}
],
"TimeSeconds": 2
}