diff --git a/baystation12.dme b/baystation12.dme
index f9963d9a78b7e..5e3e99faaf4cb 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -239,6 +239,7 @@
#include "code\datums\craft\recipes\furniture.dm"
#include "code\datums\craft\recipes\machinery.dm"
#include "code\datums\craft\recipes\misc.dm"
+#include "code\datums\craft\recipes\salvage.dm"
#include "code\datums\craft\recipes\tools.dm"
#include "code\datums\craft\recipes\weapon.dm"
#include "code\datums\extensions\_defines.dm"
diff --git a/code/datums/craft/menu.dm b/code/datums/craft/menu.dm
index 700f8a62f6aa1..6174076d4af54 100644
--- a/code/datums/craft/menu.dm
+++ b/code/datums/craft/menu.dm
@@ -56,6 +56,7 @@
"icon" = getAtomCacheFilename(CR.result),
"ref" = "\ref[CR]",
"desc" = CR.get_description(),
+ "steps" = CR.get_step_descriptions()
)
var/list/temp = data["cur_item"]
world << "[temp["icon"]]"
diff --git a/code/datums/craft/recipe.dm b/code/datums/craft/recipe.dm
index f2ed130ed6f91..648273dc5a950 100644
--- a/code/datums/craft/recipe.dm
+++ b/code/datums/craft/recipe.dm
@@ -20,6 +20,7 @@
var/category = "Misc"
var/icon_state = "device"
var/result
+ var/desc = null //If set, overrides the automatically retrieved description
var/list/steps
var/list/passive_steps
@@ -56,12 +57,17 @@
/datum/craft_recipe/proc/get_description()
. = list()
- var/atom/A = result
- .+="[initial(A.desc)]
"
- for(var/item in steps)
- var/datum/craft_step/CS = item
- . += CS.desc
- return jointext(., "
")
+ if (desc)
+ .+=desc
+ else
+ var/atom/A = result
+ .+="[initial(A.desc)]"
+
+/datum/craft_recipe/proc/get_step_descriptions()
+ var/list/data = list()
+ for(var/datum/craft_step/CS in steps)
+ data += list(list("icon" = getAtomCacheFilename(CS.icon_type), "desc" = CS.desc))
+ return data
/datum/craft_recipe/proc/can_build(mob/living/user, var/turf/T)
diff --git a/code/datums/craft/recipes/salvage.dm b/code/datums/craft/recipes/salvage.dm
new file mode 100644
index 0000000000000..15fe05f8480ee
--- /dev/null
+++ b/code/datums/craft/recipes/salvage.dm
@@ -0,0 +1,22 @@
+/datum/craft_recipe/salvage
+ category = "Salvage"
+ time = 150
+ icon_state = "gun"
+
+/datum/craft_recipe/salvage/salvage_sawblade
+ name = "Salvage sawblade"
+ desc = "Disassemble a circular saw to get a sawblade which can be used for other purposes."
+ result = /obj/item/ammo_casing/sawblade
+ steps = list(
+ list(CRAFT_OBJECT, /obj/item/weapon/tool/saw/circular),
+ list(CRAFT_TOOL, QUALITY_SCREW_DRIVING, 10, "time" = 150),
+ )
+
+/datum/craft_recipe/salvage/salvage_sawblade_adv
+ name = "Salvage diamond sawblade"
+ desc = "Disassemble an advanced circular saw to get a diamond sawblade which can be used for other purposes."
+ result = /obj/item/ammo_casing/sawblade/diamond
+ steps = list(
+ list(CRAFT_OBJECT, /obj/item/weapon/tool/saw/advanced_circular),
+ list(CRAFT_TOOL, QUALITY_SCREW_DRIVING, 10, "time" = 300),
+ )
\ No newline at end of file
diff --git a/code/datums/craft/recipes/weapon.dm b/code/datums/craft/recipes/weapon.dm
index ee240220c59fd..3532324167863 100644
--- a/code/datums/craft/recipes/weapon.dm
+++ b/code/datums/craft/recipes/weapon.dm
@@ -107,11 +107,14 @@
/datum/craft_recipe/weapon/ripper
name = "RC-DS Remote Control Disc Ripper"
result = /obj/item/weapon/gun/projectile/ripper
- passive_steps = list(CRAFT_PASSIVE, QUALITY_WORKBENCH, 1, 0)
+ passive_steps = list(
+ list(CRAFT_PASSIVE, QUALITY_WORKBENCH, 1, 0)
+ )
time = 100
steps = list(
list(CRAFT_OBJECT, /obj/item/weapon/tool/wrench),
list(CRAFT_OBJECT, /obj/item/weapon/stock_parts/matter_bin),
list(CRAFT_STACK, /obj/item/stack/cable_coil, 5),
list(CRAFT_STACK, /obj/item/stack/power_node, 1)
- )
\ No newline at end of file
+ )
+
diff --git a/code/datums/craft/step.dm b/code/datums/craft/step.dm
index 42904e9a69c83..0e8188a0c98e7 100644
--- a/code/datums/craft/step.dm
+++ b/code/datums/craft/step.dm
@@ -145,6 +145,7 @@
if (centrepoint)
items.Add(range(centrepoint, apply_range))
+ world << "Searchlist: [english_list(items)]"
return items
//Override in child classes
diff --git a/code/datums/craft/step_types.dm b/code/datums/craft/step_types.dm
index 39b8e80a507ed..09594569b3a01 100644
--- a/code/datums/craft/step_types.dm
+++ b/code/datums/craft/step_types.dm
@@ -367,9 +367,10 @@
return TRUE
-/datum/craft_step/tool/find_item(mob/living/user, var/atom/craft = null)
+/datum/craft_step/passive/find_item(mob/living/user, var/atom/craft = null)
var/list/items = get_search_list(user, craft)
for (var/obj/I in items)
+ world << "[I] [I.type] Workbench:[I.get_tool_quality(required_quality)]/[required_level]"
if (I.get_tool_quality(required_quality) >= required_level)
return I
diff --git a/nano/css/shared.css b/nano/css/shared.css
index f41002ccacb8b..087f40ae5df92 100644
--- a/nano/css/shared.css
+++ b/nano/css/shared.css
@@ -282,7 +282,7 @@ div.notice {
width: 100%;
float: left;
color: #e9c183;
- font-size: 18px;
+ font-size: 20px;
margin: 0;
padding: 12px 0 6px 0;
clear: both;
diff --git a/nano/templates/craft.tmpl b/nano/templates/craft.tmpl
index 28380cb43511c..1661e0b5cf2ac 100644
--- a/nano/templates/craft.tmpl
+++ b/nano/templates/craft.tmpl
@@ -19,8 +19,15 @@