Make plastic sortable for recycling, and make a multitude of items recyclable (#31593)

* Most plastic items are now recyclable, under the label "miscellaneous". Amounts to be balanced, currently same as recipe.

* Mineral tiles can be recycled

* Gold teeth and collection plates can be recycled

* Recycling sorter will now empty out crates and closets before sorting, if possible

* New recycling material category for the sorter, plastic. Many items updated to be considered such.

* derp recycling sorter fixes

* derp what was the point in creating a category otherwise

* just in case

* dorf recycling

* Smithing recycling? It's been a while and I don't remember what I was up to.

* Fix #28612 (You cannot recycle coins into their base metal)

* Blacksmithing recycling nearly done now,
Just some weirdness with tower shields left, plasteel component doesn't transfer materials correctly.

* All sheets with materials defined should actually have a .materials now, so I can grab an alloy sheet and use it's materials to decide what's being transferred instead of trying to guess of it's material type/hoping it has a material type at all. Fixes tower shields not having plasma from plasteel.
There's still a TODO in how materials are transferred to blacksmithing products, and a bug that predates my changes, but I've no idea how to go about either and this whole PR feels unatomic enough as it already is. I just wanted to be able to recycle plastic bags man, not overhaul crafting.

* Sorter will now consider crates it can't open as non-recyclable, since the recycler simply can't deal with those and it wouldn't make sense to create another way to unlock locked crates anyway. No more clogged recycling because of a closed crate.

* Update boomerang materials

Co-authored-by: Jellyveggie <39123109+Jellyveggie@users.noreply.github.com>
This commit is contained in:
jellyveggie2
2021-12-20 17:59:06 +01:00
committed by GitHub
parent 6c89966622
commit 00c0026ce4
34 changed files with 259 additions and 53 deletions

View File

@@ -1095,7 +1095,8 @@ var/default_colour_matrix = list(1,0,0,0,\
#define RECYK_BIOLOGICAL 3 #define RECYK_BIOLOGICAL 3
#define RECYK_METAL 4 #define RECYK_METAL 4
#define RECYK_ELECTRONIC 5 #define RECYK_ELECTRONIC 5
#define RECYK_WOOD 6 #define RECYK_WOOD 6
#define RECYK_PLASTIC 7
//////////////// ////////////////
// job.info_flags // job.info_flags

View File

@@ -851,11 +851,13 @@
body_parts_covered = HEAD body_parts_covered = HEAD
w_class = W_CLASS_LARGE w_class = W_CLASS_LARGE
slot_flags = SLOT_HEAD slot_flags = SLOT_HEAD
starting_materials = list(MAT_PLASTIC = 2*CC_PER_SHEET_MISC) //Recipe calls for 2 sheets
w_type = RECYK_PLASTIC
/obj/item/weapon/caution/attackby(obj/item/I as obj, mob/user as mob) /obj/item/weapon/caution/attackby(obj/item/I as obj, mob/user as mob)
if(I.is_wirecutter(user)) if(I.is_wirecutter(user))
to_chat(user, "<span class='info'>You cut apart the cone into plastic.</span>") to_chat(user, "<span class='info'>You cut apart the cone into plastic.</span>")
drop_stack(/obj/item/stack/sheet/mineral/plastic, user.loc, 2, user) drop_stack(/obj/item/stack/sheet/mineral/plastic, user.loc, starting_materials[MAT_PLASTIC]/CC_PER_SHEET_PLASTIC, user)
qdel(src) qdel(src)
return return
return ..() return ..()

View File

@@ -89,7 +89,7 @@
max_butts = 14 max_butts = 14
health = 24 health = 24
starting_materials = list(MAT_PLASTIC = 50) starting_materials = list(MAT_PLASTIC = 50)
w_type = RECYK_MISC w_type = RECYK_PLASTIC
empty_desc = "Cheap plastic ashtray." empty_desc = "Cheap plastic ashtray."
throwforce = 3 throwforce = 3

View File

@@ -64,6 +64,8 @@
desc = "A neatly folded-up plastic bag, making it easier to store." desc = "A neatly folded-up plastic bag, making it easier to store."
icon_state = "folded_bag" icon_state = "folded_bag"
w_class = W_CLASS_TINY w_class = W_CLASS_TINY
starting_materials = list(MAT_PLASTIC = 3*CC_PER_SHEET_PLASTIC)//Same as plastic bag
w_type = RECYK_PLASTIC
/obj/item/folded_bag/attack_self(mob/user) /obj/item/folded_bag/attack_self(mob/user)
to_chat(user, "<span class = 'notice'>You unfold \the [src].</span>") to_chat(user, "<span class = 'notice'>You unfold \the [src].</span>")
@@ -106,3 +108,5 @@
icon = 'icons/obj/weaponsmithing.dmi' icon = 'icons/obj/weaponsmithing.dmi'
icon_state = "spring" icon_state = "spring"
desc = "A piece of woven metal capable of high elasticity." desc = "A piece of woven metal capable of high elasticity."
w_type = RECYK_METAL
starting_materials = list(MAT_IRON = 1 * CC_PER_SHEET_METAL)

View File

@@ -152,6 +152,7 @@
singular_name = "chain" singular_name = "chain"
irregular_plural = "chains" irregular_plural = "chains"
max_amount = 20 max_amount = 20
w_type = RECYK_METAL
/obj/item/stack/chains/can_stack_with(var/obj/item/other_stack) /obj/item/stack/chains/can_stack_with(var/obj/item/other_stack)
if(!ispath(other_stack) && istype(other_stack) && other_stack.material_type == material_type) if(!ispath(other_stack) && istype(other_stack) && other_stack.material_type == material_type)

View File

@@ -18,14 +18,6 @@ Mineral Sheets
/obj/item/stack/sheet/mineral /obj/item/stack/sheet/mineral
w_type = RECYK_METAL w_type = RECYK_METAL
var/recyck_mat
/obj/item/stack/sheet/mineral/recycle(var/datum/materials/rec)
if(!recyck_mat)
return 0
rec.addAmount(recyck_mat, amount * get_material_cc_per_sheet(recyck_mat))
. = 1
/* /*
* Sandstone * Sandstone
@@ -40,7 +32,9 @@ Mineral Sheets
origin_tech = Tc_MATERIALS + "=1" origin_tech = Tc_MATERIALS + "=1"
sheettype = "sandstone" sheettype = "sandstone"
melt_temperature = MELTPOINT_GLASS melt_temperature = MELTPOINT_GLASS
recyck_mat = MAT_GLASS mat_type = MAT_GLASS
perunit = CC_PER_SHEET_GLASS
starting_materials = list(MAT_GLASS = CC_PER_SHEET_GLASS)
var/list/datum/stack_recipe/sandstone_recipes = list ( \ var/list/datum/stack_recipe/sandstone_recipes = list ( \
new/datum/stack_recipe("pile of dirt", /obj/machinery/portable_atmospherics/hydroponics/soil, 3, time = 10, one_per_turf = 1, on_floor = 1), \ new/datum/stack_recipe("pile of dirt", /obj/machinery/portable_atmospherics/hydroponics/soil, 3, time = 10, one_per_turf = 1, on_floor = 1), \
@@ -68,6 +62,7 @@ var/list/datum/stack_recipe/sandstone_recipes = list ( \
w_class = W_CLASS_MEDIUM w_class = W_CLASS_MEDIUM
melt_temperature = 2473.15 melt_temperature = 2473.15
sheettype = "brick" sheettype = "brick"
starting_materials = list(MAT_IRON = CC_PER_SHEET_METAL, MAT_GLASS = CC_PER_SHEET_GLASS)
var/list/datum/stack_recipe/brick_recipes = list ( \ var/list/datum/stack_recipe/brick_recipes = list ( \
new/datum/stack_recipe("fireplace", /obj/machinery/space_heater/campfire/stove/fireplace, 15, time = 10 SECONDS, one_per_turf = 1, on_floor = 1) new/datum/stack_recipe("fireplace", /obj/machinery/space_heater/campfire/stove/fireplace, 15, time = 10 SECONDS, one_per_turf = 1, on_floor = 1)
@@ -89,11 +84,11 @@ var/list/datum/stack_recipe/brick_recipes = list ( \
w_class = W_CLASS_MEDIUM w_class = W_CLASS_MEDIUM
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=6" origin_tech = Tc_MATERIALS + "=6"
perunit = CC_PER_SHEET_DIAMOND
sheettype = "diamond" sheettype = "diamond"
melt_temperature = 3820 // In a vacuum, but fuck dat melt_temperature = 3820 // In a vacuum, but fuck dat
recyck_mat = MAT_DIAMOND perunit = CC_PER_SHEET_DIAMOND
mat_type = MAT_DIAMOND mat_type = MAT_DIAMOND
starting_materials = list(MAT_DIAMOND = CC_PER_SHEET_DIAMOND)
var/list/datum/stack_recipe/diamond_recipes = list ( \ var/list/datum/stack_recipe/diamond_recipes = list ( \
new/datum/stack_recipe("diamond floor tile", /obj/item/stack/tile/mineral/diamond, 1, 4, 20), \ new/datum/stack_recipe("diamond floor tile", /obj/item/stack/tile/mineral/diamond, 1, 4, 20), \
@@ -119,11 +114,11 @@ var/list/datum/stack_recipe/diamond_recipes = list ( \
throw_speed = 3 throw_speed = 3
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=5" origin_tech = Tc_MATERIALS + "=5"
perunit = CC_PER_SHEET_URANIUM
sheettype = "uranium" sheettype = "uranium"
melt_temperature = 1132+T0C melt_temperature = 1132+T0C
recyck_mat = MAT_URANIUM perunit = CC_PER_SHEET_URANIUM
mat_type = MAT_URANIUM mat_type = MAT_URANIUM
starting_materials = list(MAT_URANIUM = CC_PER_SHEET_URANIUM)
var/list/datum/stack_recipe/uranium_recipes = list ( \ var/list/datum/stack_recipe/uranium_recipes = list ( \
new/datum/stack_recipe("uranium floor tile", /obj/item/stack/tile/mineral/uranium, 1, 4, 20), \ new/datum/stack_recipe("uranium floor tile", /obj/item/stack/tile/mineral/uranium, 1, 4, 20), \
@@ -151,11 +146,11 @@ var/list/datum/stack_recipe/uranium_recipes = list ( \
throw_speed = 3 throw_speed = 3
throw_range = 3 throw_range = 3
origin_tech = Tc_PLASMATECH + "=2;" + Tc_MATERIALS + "=2" origin_tech = Tc_PLASMATECH + "=2;" + Tc_MATERIALS + "=2"
perunit = CC_PER_SHEET_PLASMA
sheettype = "plasma" sheettype = "plasma"
melt_temperature = MELTPOINT_STEEL + 500 melt_temperature = MELTPOINT_STEEL + 500
recyck_mat = MAT_PLASMA perunit = CC_PER_SHEET_PLASMA
mat_type = MAT_PLASMA mat_type = MAT_PLASMA
starting_materials = list(MAT_PLASMA = CC_PER_SHEET_PLASMA)
var/list/datum/stack_recipe/plasma_recipes = list ( \ var/list/datum/stack_recipe/plasma_recipes = list ( \
new/datum/stack_recipe("plasma floor tile", /obj/item/stack/tile/mineral/plasma, 1, 4, 20), \ new/datum/stack_recipe("plasma floor tile", /obj/item/stack/tile/mineral/plasma, 1, 4, 20), \
@@ -181,11 +176,12 @@ var/list/datum/stack_recipe/plasma_recipes = list ( \
throw_speed = 3 throw_speed = 3
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=3" origin_tech = Tc_MATERIALS + "=3"
perunit = CC_PER_SHEET_PLASTIC
melt_temperature = MELTPOINT_PLASTIC melt_temperature = MELTPOINT_PLASTIC
sheettype = "plastic" sheettype = "plastic"
recyck_mat = MAT_PLASTIC perunit = CC_PER_SHEET_PLASTIC
mat_type = MAT_PLASTIC mat_type = MAT_PLASTIC
w_type = RECYK_PLASTIC
starting_materials = list(MAT_PLASTIC = CC_PER_SHEET_PLASTIC)
var/list/datum/stack_recipe/plastic_recipes = list ( \ var/list/datum/stack_recipe/plastic_recipes = list ( \
new/datum/stack_recipe("plastic floor tile", /obj/item/stack/tile/mineral/plastic, 1, 4, 20), \ new/datum/stack_recipe("plastic floor tile", /obj/item/stack/tile/mineral/plastic, 1, 4, 20), \
@@ -232,11 +228,11 @@ var/list/datum/stack_recipe/plastic_recipes = list ( \
throw_speed = 3 throw_speed = 3
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=4" origin_tech = Tc_MATERIALS + "=4"
perunit = CC_PER_SHEET_GOLD
melt_temperature = 1064+T0C melt_temperature = 1064+T0C
sheettype = "gold" sheettype = "gold"
recyck_mat = MAT_GOLD perunit = CC_PER_SHEET_GOLD
mat_type = MAT_GOLD mat_type = MAT_GOLD
starting_materials = list(MAT_GOLD = CC_PER_SHEET_GOLD)
var/list/datum/stack_recipe/gold_recipes = list ( \ var/list/datum/stack_recipe/gold_recipes = list ( \
new/datum/stack_recipe("golden floor tile", /obj/item/stack/tile/mineral/gold, 1, 4, 20), \ new/datum/stack_recipe("golden floor tile", /obj/item/stack/tile/mineral/gold, 1, 4, 20), \
@@ -272,14 +268,14 @@ var/list/datum/stack_recipe/phazon_recipes = list( \
icon_state = "sheet-phazon" icon_state = "sheet-phazon"
item_state = "sheet-phazon" item_state = "sheet-phazon"
sheettype = "phazon" sheettype = "phazon"
perunit = CC_PER_SHEET_PHAZON
melt_temperature = MELTPOINT_PLASTIC melt_temperature = MELTPOINT_PLASTIC
throwforce = 15.0 throwforce = 15.0
flags = FPRINT flags = FPRINT
siemens_coefficient = 1 siemens_coefficient = 1
origin_tech = Tc_MATERIALS + "=9" origin_tech = Tc_MATERIALS + "=9"
recyck_mat = MAT_PHAZON perunit = CC_PER_SHEET_PHAZON
mat_type = MAT_PHAZON mat_type = MAT_PHAZON
starting_materials = list(MAT_PHAZON = CC_PER_SHEET_PHAZON)
/obj/item/stack/sheet/mineral/phazon/New(var/loc, var/amount=null) /obj/item/stack/sheet/mineral/phazon/New(var/loc, var/amount=null)
recipes = phazon_recipes recipes = phazon_recipes
@@ -298,10 +294,10 @@ var/list/datum/stack_recipe/phazon_recipes = list( \
throw_speed = 3 throw_speed = 3
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=3" origin_tech = Tc_MATERIALS + "=3"
perunit = CC_PER_SHEET_SILVER
sheettype = "silver" sheettype = "silver"
recyck_mat = MAT_SILVER perunit = CC_PER_SHEET_SILVER
mat_type = MAT_SILVER mat_type = MAT_SILVER
starting_materials = list(MAT_SILVER = CC_PER_SHEET_SILVER)
var/list/datum/stack_recipe/silver_recipes = list ( \ var/list/datum/stack_recipe/silver_recipes = list ( \
new/datum/stack_recipe("silver floor tile", /obj/item/stack/tile/mineral/silver, 1, 4, 20), \ new/datum/stack_recipe("silver floor tile", /obj/item/stack/tile/mineral/silver, 1, 4, 20), \
@@ -330,10 +326,10 @@ var/list/datum/stack_recipe/silver_recipes = list ( \
throw_speed = 3 throw_speed = 3
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=4" origin_tech = Tc_MATERIALS + "=4"
perunit = CC_PER_SHEET_CLOWN
sheettype = "clown" sheettype = "clown"
recyck_mat = MAT_CLOWN perunit = CC_PER_SHEET_CLOWN
mat_type = MAT_CLOWN mat_type = MAT_CLOWN
starting_materials = list(MAT_CLOWN = CC_PER_SHEET_CLOWN)
var/list/datum/stack_recipe/clown_recipes = list ( \ var/list/datum/stack_recipe/clown_recipes = list ( \
new/datum/stack_recipe("bananium floor tile", /obj/item/stack/tile/mineral/clown, 1, 40, 20), \ new/datum/stack_recipe("bananium floor tile", /obj/item/stack/tile/mineral/clown, 1, 40, 20), \
@@ -377,8 +373,8 @@ var/list/datum/stack_recipe/clown_recipes = list ( \
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=4" origin_tech = Tc_MATERIALS + "=4"
perunit = CC_PER_SHEET_MYTHRIL perunit = CC_PER_SHEET_MYTHRIL
recyck_mat = MAT_MYTHRIL
mat_type = MAT_MYTHRIL mat_type = MAT_MYTHRIL
starting_materials = list(MAT_MYTHRIL = CC_PER_SHEET_MYTHRIL)
var/list/datum/stack_recipe/mythril_recipes = list ( \ var/list/datum/stack_recipe/mythril_recipes = list ( \
blacksmithing_recipes, blacksmithing_recipes,
@@ -399,6 +395,8 @@ var/list/datum/stack_recipe/mythril_recipes = list ( \
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=5" origin_tech = Tc_MATERIALS + "=5"
perunit = CC_PER_SHEET_PHAROSIUM perunit = CC_PER_SHEET_PHAROSIUM
mat_type = MAT_PHAROSIUM
starting_materials = list(MAT_PHAROSIUM = CC_PER_SHEET_PHAROSIUM)
/obj/item/stack/sheet/mineral/char /obj/item/stack/sheet/mineral/char
name = "char" name = "char"
@@ -410,6 +408,8 @@ var/list/datum/stack_recipe/mythril_recipes = list ( \
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=5" origin_tech = Tc_MATERIALS + "=5"
perunit = CC_PER_SHEET_CHAR perunit = CC_PER_SHEET_CHAR
mat_type = MAT_CHAR
starting_materials = list(MAT_CHAR = CC_PER_SHEET_CHAR)
/obj/item/stack/sheet/mineral/claretine /obj/item/stack/sheet/mineral/claretine
@@ -422,6 +422,8 @@ var/list/datum/stack_recipe/mythril_recipes = list ( \
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=5" origin_tech = Tc_MATERIALS + "=5"
perunit = CC_PER_SHEET_CLARETINE perunit = CC_PER_SHEET_CLARETINE
mat_type = MAT_CLARETINE
starting_materials = list(MAT_CLARETINE = CC_PER_SHEET_CLARETINE)
/obj/item/stack/sheet/mineral/cobryl /obj/item/stack/sheet/mineral/cobryl
@@ -434,6 +436,8 @@ var/list/datum/stack_recipe/mythril_recipes = list ( \
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=5" origin_tech = Tc_MATERIALS + "=5"
perunit = CC_PER_SHEET_COBRYL perunit = CC_PER_SHEET_COBRYL
mat_type = MAT_COBRYL
starting_materials = list(MAT_COBRYL = CC_PER_SHEET_COBRYL)
/obj/item/stack/sheet/mineral/bohrum /obj/item/stack/sheet/mineral/bohrum
@@ -446,6 +450,8 @@ var/list/datum/stack_recipe/mythril_recipes = list ( \
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=5" origin_tech = Tc_MATERIALS + "=5"
perunit = CC_PER_SHEET_BOHRUM perunit = CC_PER_SHEET_BOHRUM
mat_type = MAT_BOHRUM
starting_materials = list(MAT_BOHRUM = CC_PER_SHEET_BOHRUM)
/obj/item/stack/sheet/mineral/syreline /obj/item/stack/sheet/mineral/syreline
@@ -458,6 +464,8 @@ var/list/datum/stack_recipe/mythril_recipes = list ( \
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=5" origin_tech = Tc_MATERIALS + "=5"
perunit = CC_PER_SHEET_SYRELINE perunit = CC_PER_SHEET_SYRELINE
mat_type = MAT_SYRELINE
starting_materials = list(MAT_SYRELINE = CC_PER_SHEET_SYRELINE)
/obj/item/stack/sheet/mineral/erebite /obj/item/stack/sheet/mineral/erebite
@@ -470,6 +478,8 @@ var/list/datum/stack_recipe/mythril_recipes = list ( \
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=5" origin_tech = Tc_MATERIALS + "=5"
perunit = CC_PER_SHEET_EREBITE perunit = CC_PER_SHEET_EREBITE
mat_type = MAT_EREBITE
starting_materials = list(MAT_EREBITE = CC_PER_SHEET_EREBITE)
/obj/item/stack/sheet/mineral/cerenkite /obj/item/stack/sheet/mineral/cerenkite
@@ -482,6 +492,8 @@ var/list/datum/stack_recipe/mythril_recipes = list ( \
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=5" origin_tech = Tc_MATERIALS + "=5"
perunit = CC_PER_SHEET_CERENKITE perunit = CC_PER_SHEET_CERENKITE
mat_type = MAT_CERENKITE
starting_materials = list(MAT_CERENKITE = CC_PER_SHEET_CERENKITE)
/obj/item/stack/sheet/mineral/cytine /obj/item/stack/sheet/mineral/cytine
@@ -494,6 +506,8 @@ var/list/datum/stack_recipe/mythril_recipes = list ( \
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=5" origin_tech = Tc_MATERIALS + "=5"
perunit = CC_PER_SHEET_CYTINE perunit = CC_PER_SHEET_CYTINE
mat_type = MAT_CYTINE
starting_materials = list(MAT_CYTINE = CC_PER_SHEET_CYTINE)
/obj/item/stack/sheet/mineral/uqill /obj/item/stack/sheet/mineral/uqill
@@ -506,6 +520,8 @@ var/list/datum/stack_recipe/mythril_recipes = list ( \
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=5" origin_tech = Tc_MATERIALS + "=5"
perunit = CC_PER_SHEET_UQILL perunit = CC_PER_SHEET_UQILL
mat_type = MAT_UQILL
starting_materials = list(MAT_UQILL = CC_PER_SHEET_UQILL)
/obj/item/stack/sheet/mineral/telecrystal /obj/item/stack/sheet/mineral/telecrystal
@@ -518,6 +534,8 @@ var/list/datum/stack_recipe/mythril_recipes = list ( \
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=5" origin_tech = Tc_MATERIALS + "=5"
perunit = CC_PER_SHEET_TELECRYSTAL perunit = CC_PER_SHEET_TELECRYSTAL
mat_type = MAT_TELECRYSTAL
starting_materials = list(MAT_TELECRYSTAL = CC_PER_SHEET_TELECRYSTAL)
/obj/item/stack/sheet/mineral/mauxite /obj/item/stack/sheet/mineral/mauxite
name = "mauxite" name = "mauxite"
@@ -529,6 +547,8 @@ var/list/datum/stack_recipe/mythril_recipes = list ( \
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=5" origin_tech = Tc_MATERIALS + "=5"
perunit = CC_PER_SHEET_MAUXITE perunit = CC_PER_SHEET_MAUXITE
mat_type = MAT_MAUXITE
starting_materials = list(MAT_MAUXITE = CC_PER_SHEET_MAUXITE)
/obj/item/stack/sheet/mineral/molitz /obj/item/stack/sheet/mineral/molitz
@@ -541,6 +561,8 @@ var/list/datum/stack_recipe/mythril_recipes = list ( \
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=5" origin_tech = Tc_MATERIALS + "=5"
perunit = CC_PER_SHEET_MOLITZ perunit = CC_PER_SHEET_MOLITZ
mat_type = MAT_MOLITZ
starting_materials = list(MAT_MOLITZ = CC_PER_SHEET_MOLITZ)
/obj/item/stack/sheet/mineral/gingerbread /obj/item/stack/sheet/mineral/gingerbread
name = "gingerbread" name = "gingerbread"
@@ -552,6 +574,8 @@ var/list/datum/stack_recipe/mythril_recipes = list ( \
throw_range = 3 throw_range = 3
origin_tech = Tc_MATERIALS + "=5" origin_tech = Tc_MATERIALS + "=5"
perunit = CC_PER_SHEET_GINGERBREAD perunit = CC_PER_SHEET_GINGERBREAD
mat_type = MAT_GINGERBREAD
starting_materials = list(MAT_GINGERBREAD = CC_PER_SHEET_GINGERBREAD)
var/list/datum/stack_recipe/gingerbread_recipes = list ( \ var/list/datum/stack_recipe/gingerbread_recipes = list ( \
new/datum/stack_recipe("gingerbread floor tile", /obj/item/stack/tile/mineral/gingerbread, 1, 4, 20), \ new/datum/stack_recipe("gingerbread floor tile", /obj/item/stack/tile/mineral/gingerbread, 1, 4, 20), \
@@ -564,5 +588,4 @@ var/list/datum/stack_recipe/gingerbread_recipes = list ( \
/obj/item/stack/sheet/mineral/gingerbread/New(var/loc, var/amount=null) /obj/item/stack/sheet/mineral/gingerbread/New(var/loc, var/amount=null)
recipes = gingerbread_recipes recipes = gingerbread_recipes
..() ..()

View File

@@ -94,8 +94,9 @@
autoignition_temperature = AUTOIGNITION_WOOD autoignition_temperature = AUTOIGNITION_WOOD
fire_fuel = 1 //Not used here the same way as elsewhere; see burnFireFuel() below. fire_fuel = 1 //Not used here the same way as elsewhere; see burnFireFuel() below.
sheettype = "wood" sheettype = "wood"
w_type = RECYK_WOOD
siemens_coefficient = 0 //no conduct siemens_coefficient = 0 //no conduct
w_type = RECYK_WOOD
starting_materials = list(MAT_WOOD = CC_PER_SHEET_WOOD)
mat_type = MAT_WOOD mat_type = MAT_WOOD
perunit = CC_PER_SHEET_WOOD perunit = CC_PER_SHEET_WOOD

View File

@@ -172,11 +172,30 @@
if(inherit_material) if(inherit_material)
var/datum/material/mat var/datum/material/mat
var/datum/materials/materials_list = new var/datum/materials/materials_list = new
//Figure out the material
if(istype(S, /obj/item/stack/sheet/)) if(istype(S, /obj/item/stack/sheet/))
var/obj/item/stack/sheet/SS = S var/obj/item/stack/sheet/SS = S
mat = materials_list.getMaterial(SS.mat_type) mat = materials_list.getMaterial(SS.mat_type)
else if(S.material_type) else if(S.material_type)
mat = S.material_type mat = S.material_type
// Make it recyclable back into the materials it's made out of
// Initialize materials list if doesn't exist already
if (R.materials == null)
R.materials = new /datum/materials(src)
// Add main materials off the stack
R.materials.addRatioFrom(S.materials, req_amount/(S.amount * res_amount))
// Add extra materials off additional recipe requisites
for (var/req in other_reqs)
// other_reqs contains typepaths, so create an instance and use it's materials as base
// TODO: pull the materials from the actual object that was used to fulfill the other_req
var/atom/movable/A = new req
if (A.materials)
R.materials.addRatioFrom(A.materials, other_reqs[req]/res_amount)
R.dorfify(mat) R.dorfify(mat)
return 1 return 1
@@ -189,8 +208,33 @@
src.req_strikes = required_strikes src.req_strikes = required_strikes
/datum/stack_recipe/blacksmithing/finish_building(mob/usr, var/obj/item/stack/S, var/obj/R) /datum/stack_recipe/blacksmithing/finish_building(mob/usr, var/obj/item/stack/S, var/obj/R)
// Figure out main material from stack
if(istype(S, /obj/item/stack/sheet/))
var/obj/item/stack/sheet/SS = S
var/datum/materials/materials_list = new
R.material_type = materials_list.getMaterial(SS.mat_type)
qdel(materials_list)
else if(S.material_type)
R.material_type = S.material_type
// Apply material info to end product for recycling
// Initialize materials list if doesn't exist already
if (R.materials == null)
R.materials = new /datum/materials(src)
// Add main materials off the stack
R.materials.addRatioFrom(S.materials, req_amount/(S.amount * res_amount))
// Add extra materials off additional recipe requisites
for (var/req in other_reqs)
// other_reqs contains typepaths, so create an instance and use it's materials as base
// TODO: pull the materials from the actual object that was used to fulfill the other_req
var/atom/movable/A = new req
if (A.materials)
R.materials.addRatioFrom(A.materials, other_reqs[req]/res_amount)
//Yeah nah let's put you in a blacksmith_placeholder //Yeah nah let's put you in a blacksmith_placeholder
var/obj/item/I = new /obj/item/smithing_placeholder(usr.loc,S, R, req_strikes) var/obj/item/I = new /obj/item/smithing_placeholder(usr.loc, S, R, req_strikes)
I.name = "unforged [R.name]" I.name = "unforged [R.name]"
return 0 return 0

View File

@@ -90,4 +90,6 @@
max_amount = 50 max_amount = 50
w_class = W_CLASS_TINY w_class = W_CLASS_TINY
throw_speed = 4 throw_speed = 4
throw_range = 10 throw_range = 10
starting_materials = list(MAT_GOLD = CC_PER_SHEET_GOLD) // Recipe requires 1 sheet. Could probably stand to be less though
w_type = RECYK_METAL

View File

@@ -13,6 +13,8 @@
max_amount = 60 max_amount = 60
material = "plasma" material = "plasma"
starting_materials = list(MAT_PLASMA = CC_PER_SHEET_PLASMA / 4) // Recipe requires 1 sheet for 4 tiles
w_type = RECYK_METAL
/obj/item/stack/tile/mineral/uranium /obj/item/stack/tile/mineral/uranium
name = "uranium tile" name = "uranium tile"
@@ -27,6 +29,8 @@
max_amount = 60 max_amount = 60
material = "uranium" material = "uranium"
starting_materials = list(MAT_URANIUM = CC_PER_SHEET_URANIUM / 4) // Recipe requires 1 sheet for 4 tiles
w_type = RECYK_METAL
/obj/item/stack/tile/mineral/uranium/safe /obj/item/stack/tile/mineral/uranium/safe
name = "isolated uranium tile" name = "isolated uranium tile"
@@ -35,6 +39,11 @@
icon_state = "tile_uraniumsafe" icon_state = "tile_uraniumsafe"
material = "uranium_safe" material = "uranium_safe"
starting_materials = list(// Recipe requires 1 uranium sheet per 4 tiles, and 1 reinforced glass sheet per tile
MAT_URANIUM = CC_PER_SHEET_URANIUM / 4,
MAT_GLASS = CC_PER_SHEET_GLASS,
MAT_METAL = CC_PER_SHEET_METAL / 2)
w_type = RECYK_METAL
/obj/item/stack/tile/mineral/uranium/safe/attackby(obj/item/W as obj, mob/user as mob) /obj/item/stack/tile/mineral/uranium/safe/attackby(obj/item/W as obj, mob/user as mob)
if(iscrowbar(W)) if(iscrowbar(W))
@@ -67,6 +76,8 @@
max_amount = 60 max_amount = 60
material = "gold" material = "gold"
starting_materials = list(MAT_GOLD = CC_PER_SHEET_GOLD / 4) // Recipe requires 1 sheet for 4 tiles
w_type = RECYK_METAL
/obj/item/stack/tile/mineral/silver /obj/item/stack/tile/mineral/silver
name = "silver tile" name = "silver tile"
@@ -81,6 +92,8 @@
max_amount = 60 max_amount = 60
material = "silver" material = "silver"
starting_materials = list(MAT_SILVER = CC_PER_SHEET_SILVER / 4) // Recipe requires 1 sheet for 4 tiles
w_type = RECYK_METAL
/obj/item/stack/tile/mineral/diamond /obj/item/stack/tile/mineral/diamond
name = "diamond tile" name = "diamond tile"
@@ -95,6 +108,8 @@
max_amount = 60 max_amount = 60
material = "diamond" material = "diamond"
starting_materials = list(MAT_DIAMOND = CC_PER_SHEET_DIAMOND / 4) // Recipe requires 1 sheet for 4 tiles
w_type = RECYK_METAL
/obj/item/stack/tile/mineral/clown /obj/item/stack/tile/mineral/clown
name = "bananium tile" name = "bananium tile"
@@ -109,6 +124,8 @@
max_amount = 60 max_amount = 60
material = "bananium" material = "bananium"
starting_materials = list(MAT_CLOWN = CC_PER_SHEET_CLOWN / 4) // Recipe requires 1 sheet for 4 tiles
w_type = RECYK_METAL
var/spam_flag = 0 var/spam_flag = 0
/obj/item/stack/tile/mineral/plastic /obj/item/stack/tile/mineral/plastic
@@ -122,6 +139,8 @@
throw_speed = 3 throw_speed = 3
throw_range = 7 throw_range = 7
max_amount = 60 max_amount = 60
starting_materials = list(MAT_PLASTIC = CC_PER_SHEET_PLASTIC / 4) // Recipe requires 1 sheet for 4 tiles
w_type = RECYK_PLASTIC
material = "plastic" material = "plastic"
@@ -138,6 +157,8 @@
origin_tech = Tc_MATERIALS + "=9" origin_tech = Tc_MATERIALS + "=9"
material = "phazon" material = "phazon"
starting_materials = list(MAT_PHAZON = CC_PER_SHEET_PHAZON / 4) // Recipe requires 1 sheet for 4 tiles
w_type = RECYK_METAL
/obj/item/stack/tile/mineral/phazon/adjust_slowdown(mob/living/L, current_slowdown) /obj/item/stack/tile/mineral/phazon/adjust_slowdown(mob/living/L, current_slowdown)
current_slowdown *= 0.75 current_slowdown *= 0.75
@@ -156,6 +177,8 @@
max_amount = 60 max_amount = 60
material = "brass" material = "brass"
starting_materials = list(MAT_BRASS = CC_PER_SHEET_BRASS / 4) // Recipe requires 1 sheet for 4 tiles
w_type = RECYK_METAL
/obj/item/stack/tile/mineral/gingerbread /obj/item/stack/tile/mineral/gingerbread
name = "gingerbread tile" name = "gingerbread tile"

View File

@@ -13,6 +13,8 @@
autoignition_temperature = AUTOIGNITION_WOOD autoignition_temperature = AUTOIGNITION_WOOD
fire_fuel = 3 fire_fuel = 3
starting_materials = list(MAT_WOOD = CC_PER_SHEET_WOOD * 6)
w_type = RECYK_WOOD
/obj/item/weapon/boomerang/Destroy() /obj/item/weapon/boomerang/Destroy()
..() ..()
@@ -32,6 +34,7 @@
starting_materials = list(MAT_PLASTIC = 1200) starting_materials = list(MAT_PLASTIC = 1200)
melt_temperature = MELTPOINT_PLASTIC melt_temperature = MELTPOINT_PLASTIC
w_type = RECYK_PLASTIC
/obj/item/weapon/boomerang/throw_at(atom/target, range, speed, override = 1) /obj/item/weapon/boomerang/throw_at(atom/target, range, speed, override = 1)
if(!usr) if(!usr)

View File

@@ -176,6 +176,8 @@
icon_state = "pspoon" icon_state = "pspoon"
melt_temperature = MELTPOINT_PLASTIC melt_temperature = MELTPOINT_PLASTIC
bendable = FALSE bendable = FALSE
starting_materials = list(MAT_PLASTIC = 1*CC_PER_SHEET_MISC) //Recipe calls for 1 sheet
w_type = RECYK_PLASTIC
/* /*
* Forks * Forks
@@ -254,6 +256,8 @@
desc = "Yay, no washing up to do." desc = "Yay, no washing up to do."
icon_state = "pfork" icon_state = "pfork"
melt_temperature = MELTPOINT_PLASTIC melt_temperature = MELTPOINT_PLASTIC
starting_materials = list(MAT_PLASTIC = 1*CC_PER_SHEET_MISC) //Recipe calls for 1 sheet
w_type = RECYK_PLASTIC
/obj/item/weapon/kitchen/utensil/fork/teflon /obj/item/weapon/kitchen/utensil/fork/teflon
name = "teflon fork" name = "teflon fork"
@@ -295,6 +299,8 @@
throwforce = 1 throwforce = 1
sharpness = 0.8 sharpness = 0.8
melt_temperature = MELTPOINT_PLASTIC melt_temperature = MELTPOINT_PLASTIC
starting_materials = list(MAT_PLASTIC = 1*CC_PER_SHEET_MISC) //Recipe calls for 1 sheet
w_type = RECYK_PLASTIC
/obj/item/weapon/kitchen/utensil/knife/nazi /obj/item/weapon/kitchen/utensil/knife/nazi
name = "nazi knife" name = "nazi knife"

View File

@@ -257,6 +257,7 @@
inhand_states = list("left_hand" = 'icons/mob/in-hand/left/shields.dmi', "right_hand" = 'icons/mob/in-hand/right/shields.dmi') inhand_states = list("left_hand" = 'icons/mob/in-hand/left/shields.dmi', "right_hand" = 'icons/mob/in-hand/right/shields.dmi')
flags = FPRINT | SLOWDOWN_WHEN_CARRIED flags = FPRINT | SLOWDOWN_WHEN_CARRIED
slowdown = 4 slowdown = 4
w_type = RECYK_METAL
/obj/item/weapon/shield/riot/rune /obj/item/weapon/shield/riot/rune
name = "rune kiteshield" name = "rune kiteshield"

View File

@@ -107,6 +107,8 @@
clothing_flags = BLOCK_BREATHING | BLOCK_GAS_SMOKE_EFFECT clothing_flags = BLOCK_BREATHING | BLOCK_GAS_SMOKE_EFFECT
no_storage_slot = list(slot_head) no_storage_slot = list(slot_head)
foldable = /obj/item/folded_bag foldable = /obj/item/folded_bag
starting_materials = list(MAT_PLASTIC = 3*CC_PER_SHEET_MISC) //Recipe calls for 3 sheets
w_type = RECYK_PLASTIC
/obj/item/weapon/storage/bag/plasticbag/can_quick_store(var/obj/item/I) /obj/item/weapon/storage/bag/plasticbag/can_quick_store(var/obj/item/I)
return can_be_inserted(I,1) return can_be_inserted(I,1)

View File

@@ -773,6 +773,9 @@
storage_slots = 10 storage_slots = 10
can_only_hold = list("/obj/item/weapon/spacecash", "/obj/item/weapon/coin") can_only_hold = list("/obj/item/weapon/spacecash", "/obj/item/weapon/coin")
starting_materials = list(MAT_GOLD = 2*CC_PER_SHEET_GOLD) // Recipe requires 2 sheets
w_type = RECYK_METAL
/* /*
* Beer Box * Beer Box
*/ */

View File

@@ -292,6 +292,7 @@
inhand_states = list("left_hand" = 'icons/mob/in-hand/left/swords_axes.dmi', "right_hand" = 'icons/mob/in-hand/right/swords_axes.dmi') inhand_states = list("left_hand" = 'icons/mob/in-hand/left/swords_axes.dmi', "right_hand" = 'icons/mob/in-hand/right/swords_axes.dmi')
item_state = "grey_sword" item_state = "grey_sword"
force = 4 force = 4
w_type = RECYK_METAL
/obj/item/weapon/rsscimmy /obj/item/weapon/rsscimmy
name = "rune scimitar" name = "rune scimitar"

View File

@@ -194,6 +194,7 @@
desc = "Parts for a plastic table for your space patio." desc = "Parts for a plastic table for your space patio."
icon_state = "plastic_tableparts" icon_state = "plastic_tableparts"
starting_materials = list(MAT_PLASTIC = 3750) starting_materials = list(MAT_PLASTIC = 3750)
w_type = RECYK_PLASTIC
table_type = /obj/structure/table/plastic table_type = /obj/structure/table/plastic
sheet_type = /obj/item/stack/sheet/mineral/plastic sheet_type = /obj/item/stack/sheet/mineral/plastic
sheet_amount = 5 sheet_amount = 5

View File

@@ -456,6 +456,7 @@
inhand_states = list("left_hand" = 'icons/mob/in-hand/left/hammer_left.dmi', "right_hand" = 'icons/mob/in-hand/right/hammer_right.dmi') inhand_states = list("left_hand" = 'icons/mob/in-hand/left/hammer_left.dmi', "right_hand" = 'icons/mob/in-hand/right/hammer_right.dmi')
force = 8 force = 8
hitsound = 'sound/weapons/toolbox.ogg' hitsound = 'sound/weapons/toolbox.ogg'
w_type = RECYK_METAL
/obj/item/weapon/pitchfork /obj/item/weapon/pitchfork
name = "pitchfork" name = "pitchfork"
@@ -467,6 +468,7 @@
sharpness = 2 sharpness = 2
sharpness = SHARP_TIP sharpness = SHARP_TIP
hitsound = 'sound/weapons/bladeslice.ogg' hitsound = 'sound/weapons/bladeslice.ogg'
w_type = RECYK_METAL
/obj/item/weapon/baseball_bat /obj/item/weapon/baseball_bat
name = "baseball bat" name = "baseball bat"
@@ -482,6 +484,7 @@
throw_speed = 1 throw_speed = 1
throw_range = 7 throw_range = 7
w_class = W_CLASS_LARGE w_class = W_CLASS_LARGE
w_type = RECYK_WOOD
/obj/item/weapon/baseball_bat/update_wield(mob/user) /obj/item/weapon/baseball_bat/update_wield(mob/user)
..() ..()
@@ -552,6 +555,7 @@
throw_speed = 1 throw_speed = 1
throw_range = 7 throw_range = 7
w_class = W_CLASS_LARGE w_class = W_CLASS_LARGE
w_type = RECYK_WOOD
/obj/item/weapon/spiked_bat/update_wield(mob/user) /obj/item/weapon/spiked_bat/update_wield(mob/user)
..() ..()

View File

@@ -30,6 +30,8 @@
req_access = null req_access = null
opened = 0 opened = 0
flags = FPRINT flags = FPRINT
w_type = RECYK_PLASTIC //This one's plastic, not metal!
// mouse_drag_pointer = MOUSE_ACTIVE_POINTER //??? // mouse_drag_pointer = MOUSE_ACTIVE_POINTER //???
var/rigged = 0 var/rigged = 0
var/sound_effect_open = 'sound/machines/click.ogg' var/sound_effect_open = 'sound/machines/click.ogg'

View File

@@ -2,7 +2,7 @@
name = "inflatable" name = "inflatable"
w_class = W_CLASS_MEDIUM w_class = W_CLASS_MEDIUM
icon = 'icons/obj/inflatable.dmi' icon = 'icons/obj/inflatable.dmi'
w_type = RECYK_METAL w_type = RECYK_PLASTIC
melt_temperature = MELTPOINT_PLASTIC melt_temperature = MELTPOINT_PLASTIC
starting_materials = list(MAT_PLASTIC = 1.5*CC_PER_SHEET_MISC) starting_materials = list(MAT_PLASTIC = 1.5*CC_PER_SHEET_MISC)

View File

@@ -9,7 +9,7 @@
melt_temperature = MELTPOINT_PLASTIC melt_temperature = MELTPOINT_PLASTIC
w_class = W_CLASS_TINY w_class = W_CLASS_TINY
starting_materials = list(MAT_PLASTIC = 10) starting_materials = list(MAT_PLASTIC = 10)
w_type = RECYK_MISC w_type = RECYK_PLASTIC
var/to_cut = 0.8 var/to_cut = 0.8
var/authorized_name = "" // The name of the card. Edited at any ATM. var/authorized_name = "" // The name of the card. Edited at any ATM.

View File

@@ -9,6 +9,8 @@
/obj/item/smithing_placeholder /obj/item/smithing_placeholder
name = "placeholder" name = "placeholder"
desc = "An incomplete object, that requires forging and striking." desc = "An incomplete object, that requires forging and striking."
w_type = RECYK_METAL
starting_materials = list()
var/obj/result var/obj/result
var/malleable = FALSE var/malleable = FALSE
var/strikes_required var/strikes_required
@@ -16,19 +18,20 @@
/obj/item/smithing_placeholder/Destroy() /obj/item/smithing_placeholder/Destroy()
result = null result = null
materials = null
..() ..()
/obj/item/smithing_placeholder/New(loc, var/obj/item/stack/S, var/obj/R, var/required_strikes) /obj/item/smithing_placeholder/New(loc, var/obj/item/stack/S, var/obj/R, var/required_strikes)
..() ..()
if(istype(S, /obj/item/stack/sheet/)) // Copy materials from result
var/obj/item/stack/sheet/SS = S material_type = R.material_type
var/datum/materials/materials_list = new materials.addFrom(R.materials)
material_type = materials_list.getMaterial(SS.mat_type)
qdel(materials_list) //Stores recipe result in...
else if(S.material_type)
material_type = S.material_type
result = R result = R
R.forceMove(null) R.forceMove(null) //...nullspace?
// Makes it look like a metal sheet
var/obj/item/stack/sheet/mineral/M = material_type.sheettype var/obj/item/stack/sheet/mineral/M = material_type.sheettype
appearance = initial(M.appearance) appearance = initial(M.appearance)
desc = initial(desc) desc = initial(desc)

View File

@@ -1,5 +1,6 @@
/obj/item/item_head /obj/item/item_head
icon = 'icons/obj/misc_components.dmi' icon = 'icons/obj/misc_components.dmi'
w_type = RECYK_METAL
var/obj/item/result var/obj/item/result
var/list/finishing_requirements = list(/obj/item/item_handle) //Things required to finish this object. var/list/finishing_requirements = list(/obj/item/item_handle) //Things required to finish this object.
@@ -17,11 +18,18 @@
if(do_after(user, src, 4 SECONDS)) if(do_after(user, src, 4 SECONDS))
if(istype(I, /obj/item/stack)) if(istype(I, /obj/item/stack))
var/obj/item/stack/S = I var/obj/item/stack/S = I
var/datum/material/stack_material = S.materials
if(!S.use(1)) if(!S.use(1))
return return
else
if (stack_material) // Not all sheets have a material type
materials.addAmount(stack_material.id, S.perunit)
else else
if(!user.drop_item(I)) if(!user.drop_item(I))
return return
else
materials.addFrom(I.materials)
finishing_requirements.Remove(I.type) finishing_requirements.Remove(I.type)
gen_quality(quality-I.quality, quality, I.material_type) gen_quality(quality-I.quality, quality, I.material_type)
if(!istype(I, /obj/item/stack)) if(!istype(I, /obj/item/stack))
@@ -30,6 +38,8 @@
if(!finishing_requirements.len) //We're done if(!finishing_requirements.len) //We're done
user.drop_item(src) user.drop_item(src)
result = new result result = new result
result.materials = new /datum/materials(result)
result.materials.addFrom(materials)
var/datum/material/mat = material_type var/datum/material/mat = material_type
if(mat) if(mat)
result.dorfify(mat, 0, quality) result.dorfify(mat, 0, quality)
@@ -61,18 +71,23 @@
icon = 'icons/obj/misc_components.dmi' icon = 'icons/obj/misc_components.dmi'
icon_state = "item_handle" icon_state = "item_handle"
desc = "a generic handle, with no purpose." desc = "a generic handle, with no purpose."
starting_materials = list(MAT_WOOD = 0.5 * CC_PER_SHEET_WOOD)
w_type = RECYK_WOOD
/obj/item/sword_handle /obj/item/sword_handle
name = "sword handle" name = "sword handle"
icon = 'icons/obj/misc_components.dmi' icon = 'icons/obj/misc_components.dmi'
icon_state = "sword_handle" icon_state = "sword_handle"
desc = "A generic sword handle." desc = "A generic sword handle."
starting_materials = list(MAT_WOOD = 0.5 * CC_PER_SHEET_WOOD, MAT_IRON = 0.5 * CC_PER_SHEET_METAL)
w_type = RECYK_METAL
/obj/item/cross_guard /obj/item/cross_guard
name = "sword crossguard" name = "sword crossguard"
icon = 'icons/obj/misc_components.dmi' icon = 'icons/obj/misc_components.dmi'
icon_state = "crossguard" icon_state = "crossguard"
desc = "Used to make sure what you're stabbing doesn't slide all the way to your hand, or your hand slide to the stabby bit." desc = "Used to make sure what you're stabbing doesn't slide all the way to your hand, or your hand slide to the stabby bit."
w_type = RECYK_METAL
/obj/item/item_head/sword /obj/item/item_head/sword
name = "sword blade" name = "sword blade"
@@ -106,3 +121,4 @@
icon_state = "large_plate" icon_state = "large_plate"
finishing_requirements = list(/obj/item/stack/leather_strip) finishing_requirements = list(/obj/item/stack/leather_strip)
result = /obj/item/weapon/shield/riot/tower result = /obj/item/weapon/shield/riot/tower
w_type = RECYK_METAL

View File

@@ -312,7 +312,7 @@
slot_flags = SLOT_BELT slot_flags = SLOT_BELT
var/stored_name = null var/stored_name = null
starting_materials = list(MAT_PLASTIC = 50) starting_materials = list(MAT_PLASTIC = 50)
w_type = RECYK_MISC w_type = RECYK_PLASTIC
/obj/item/clothing/accessory/assistantcard/attack_self(mob/user as mob) /obj/item/clothing/accessory/assistantcard/attack_self(mob/user as mob)
if(!stored_name) if(!stored_name)

View File

@@ -657,6 +657,8 @@ var/list/tag_suits_list = list()
body_parts_covered = ARMS|LEGS|FULL_TORSO|IGNORE_INV //transparent body_parts_covered = ARMS|LEGS|FULL_TORSO|IGNORE_INV //transparent
allowed = list (/obj/item/weapon/fireaxe) allowed = list (/obj/item/weapon/fireaxe)
sterility = 100 sterility = 100
starting_materials = list(MAT_PLASTIC = 5*CC_PER_SHEET_MISC) //Recipe calls for 5 sheets
w_type = RECYK_PLASTIC
/obj/item/clothing/suit/kefkarobe /obj/item/clothing/suit/kefkarobe
name = "Crazed Jester's Robe" name = "Crazed Jester's Robe"

View File

@@ -88,6 +88,13 @@ var/global/list/initial_materials //Stores all the matids = 0 in helping New
if(zero_after) if(zero_after)
mats.storage[mat_id] = 0 mats.storage[mat_id] = 0
/datum/materials/proc/addRatioFrom(var/datum/materials/mats, var/ratio)
if(mats == null)
return
for(var/mat_id in storage)
if(mats.storage[mat_id]>0)
storage[mat_id] += mats.storage[mat_id] * abs(ratio)
//Used to remove all materials from a given materials datum, and transfer it to ours //Used to remove all materials from a given materials datum, and transfer it to ours
/datum/materials/proc/removeFrom(var/datum/materials/mats) /datum/materials/proc/removeFrom(var/datum/materials/mats)
src.addFrom(mats,zero_after=1) src.addFrom(mats,zero_after=1)

View File

@@ -196,7 +196,7 @@ proc/move_mining_shuttle()
w_class = W_CLASS_LARGE w_class = W_CLASS_LARGE
sharpness = 0.6 sharpness = 0.6
sharpness_flags = SHARP_TIP sharpness_flags = SHARP_TIP
starting_materials = list(MAT_IRON = 3750) //one sheet, but where can you make them? starting_materials = list(MAT_IRON = CC_PER_SHEET_METAL * 4, MAT_WOOD = CC_PER_SHEET_WOOD * 0.5) // Blacksmithing recipe
w_type = RECYK_METAL w_type = RECYK_METAL
toolspeed = 0.4 //moving the delay to an item var so R&D can make improved picks. --NEO toolspeed = 0.4 //moving the delay to an item var so R&D can make improved picks. --NEO
origin_tech = Tc_MATERIALS + "=1;" + Tc_ENGINEERING + "=1" origin_tech = Tc_MATERIALS + "=1;" + Tc_ENGINEERING + "=1"
@@ -226,6 +226,7 @@ proc/move_mining_shuttle()
toolspeed = 0.3 toolspeed = 0.3
origin_tech = Tc_MATERIALS + "=3" origin_tech = Tc_MATERIALS + "=3"
desc = "This makes no metallurgic sense." desc = "This makes no metallurgic sense."
starting_materials = list(MAT_SILVER = CC_PER_SHEET_SILVER * 4, MAT_WOOD = CC_PER_SHEET_WOOD * 0.5)
/obj/item/weapon/pickaxe/jackhammer /obj/item/weapon/pickaxe/jackhammer
name = "sonic jackhammer" name = "sonic jackhammer"
@@ -256,6 +257,7 @@ proc/move_mining_shuttle()
toolspeed = 0.2 toolspeed = 0.2
origin_tech = Tc_MATERIALS + "=4" origin_tech = Tc_MATERIALS + "=4"
desc = "This makes no metallurgic sense." desc = "This makes no metallurgic sense."
starting_materials = list(MAT_GOLD = CC_PER_SHEET_GOLD * 4, MAT_WOOD = CC_PER_SHEET_WOOD * 0.5)
/obj/item/weapon/pickaxe/plasmacutter /obj/item/weapon/pickaxe/plasmacutter
name = "plasma torch" name = "plasma torch"
@@ -344,7 +346,8 @@ proc/move_mining_shuttle()
toolspeed = 0.1 toolspeed = 0.1
sharpness = 1.2 sharpness = 1.2
origin_tech = Tc_MATERIALS + "=6;" + Tc_ENGINEERING + "=4" origin_tech = Tc_MATERIALS + "=6;" + Tc_ENGINEERING + "=4"
desc = "A pickaxe with a diamond pick head, this is just like minecraft." desc = "A pickaxe with a diamond coated pick head, this is just like minecraft."
starting_materials = list(MAT_IRON = CC_PER_SHEET_METAL * 3.9, MAT_DIAMOND = CC_PER_SHEET_DIAMOND * 0.1, MAT_WOOD = CC_PER_SHEET_WOOD * 0.5) // Letting miners recycle their diamond pickaxes into 4 diamond sheets would be a tad bit much, so let's make it mostly iron with diamond bits
/obj/item/weapon/pickaxe/drill /obj/item/weapon/pickaxe/drill
name = "mining drill" // Can dig sand as well! name = "mining drill" // Can dig sand as well!

View File

@@ -388,6 +388,7 @@
force = 1 force = 1
throwforce = 1 throwforce = 1
w_class = W_CLASS_TINY w_class = W_CLASS_TINY
w_type = RECYK_METAL
var/string_attached var/string_attached
var/material=MAT_IRON // Ore ID, used with coinbags. var/material=MAT_IRON // Ore ID, used with coinbags.
var/credits = 0 // How many credits is this coin worth? var/credits = 0 // How many credits is this coin worth?

View File

@@ -5,6 +5,7 @@
inhand_states = list("left_hand" = 'icons/mob/in-hand/left/swords_axes.dmi', "right_hand" = 'icons/mob/in-hand/right/swords_axes.dmi') inhand_states = list("left_hand" = 'icons/mob/in-hand/left/swords_axes.dmi', "right_hand" = 'icons/mob/in-hand/right/swords_axes.dmi')
icon_state = "sword" icon_state = "sword"
w_class = W_CLASS_MEDIUM w_class = W_CLASS_MEDIUM
w_type = RECYK_METAL
hitsound = "sound/weapons/bloodyslice.ogg" hitsound = "sound/weapons/bloodyslice.ogg"
flags = FPRINT flags = FPRINT
siemens_coefficient = 1 siemens_coefficient = 1

View File

@@ -12,6 +12,9 @@
var/holes = 0 var/holes = 0
var/mode = BLOODPACK_NORMAL var/mode = BLOODPACK_NORMAL
starting_materials = list(MAT_PLASTIC = 3*CC_PER_SHEET_MISC) //Recipe calls for 3 sheets
w_type = RECYK_PLASTIC
/obj/item/weapon/reagent_containers/blood/New() /obj/item/weapon/reagent_containers/blood/New()
..() ..()
if(blood_type != null) if(blood_type != null)

View File

@@ -1220,6 +1220,7 @@
origin_tech = Tc_MATERIALS + "=1" origin_tech = Tc_MATERIALS + "=1"
melt_temperature = MELTPOINT_PLASTIC melt_temperature = MELTPOINT_PLASTIC
starting_materials = list(MAT_PLASTIC = 500) starting_materials = list(MAT_PLASTIC = 500)
w_type = RECYK_PLASTIC
volume = 100 volume = 100
amount_per_transfer_from_this = 10 amount_per_transfer_from_this = 10

View File

@@ -5230,7 +5230,7 @@
slot_flags = SLOT_MASK slot_flags = SLOT_MASK
throwforce = 1 throwforce = 1
autoignition_temperature = 0 autoignition_temperature = 0
w_type = RECYK_MISC w_type = RECYK_PLASTIC
starting_materials = list(MAT_PLASTIC = 100) starting_materials = list(MAT_PLASTIC = 100)
/obj/item/weapon/reagent_containers/food/snacks/chococoin/wrapped /obj/item/weapon/reagent_containers/food/snacks/chococoin/wrapped

View File

@@ -613,7 +613,7 @@ var/datum/disease2/disease/wizarditis = null
icon = 'icons/obj/chemical.dmi' icon = 'icons/obj/chemical.dmi'
icon_state = "bleachbottle" icon_state = "bleachbottle"
starting_materials = list(MAT_PLASTIC = 1000) starting_materials = list(MAT_PLASTIC = 1000)
w_type = RECYK_MISC w_type = RECYK_PLASTIC
melt_temperature = MELTPOINT_PLASTIC melt_temperature = MELTPOINT_PLASTIC
/obj/item/weapon/reagent_containers/glass/bottle/bleach/update_icon() /obj/item/weapon/reagent_containers/glass/bottle/bleach/update_icon()

View File

@@ -302,6 +302,9 @@
var/items_moved = 0 var/items_moved = 0
for(var/atom/movable/A in affecting) for(var/atom/movable/A in affecting)
if(items_moved >= max_items_moved)
break
if(A.anchored) if(A.anchored)
continue continue
@@ -311,8 +314,6 @@
A.forceMove(out_T) A.forceMove(out_T)
items_moved++ items_moved++
if(items_moved >= max_items_moved)
break
/obj/machinery/sorting_machine/attack_ai(mob/user) /obj/machinery/sorting_machine/attack_ai(mob/user)
interact(user) interact(user)
@@ -375,7 +376,7 @@
return MT_UPDATE return MT_UPDATE
//Honestly I didn't expect that to fit in, what, 10 lines of code? //Honestly I didn't expect that to fit in, what, 10 lines of code?
//Return 1 if the atom is to be filtered of the line. //Return 1 if the atom is to be filtered off the line.
/obj/machinery/sorting_machine/proc/sort(var/atom/movable/A) /obj/machinery/sorting_machine/proc/sort(var/atom/movable/A)
return prob(50) //Henk because the base sorting machine shouldn't ever exist anyways. return prob(50) //Henk because the base sorting machine shouldn't ever exist anyways.
@@ -384,8 +385,8 @@
/obj/machinery/sorting_machine/recycling /obj/machinery/sorting_machine/recycling
name = "Recycling Sorting Machine" name = "Recycling Sorting Machine"
var/list/selected_types = list("Glasses", "Metals/Minerals", "Electronics") var/list/selected_types = list("Glasses", "Metals/Minerals", "Electronics", "Plastic")
var/list/types[6] var/list/types[7]
/obj/machinery/sorting_machine/recycling/New() /obj/machinery/sorting_machine/recycling/New()
. = ..() . = ..()
@@ -405,8 +406,45 @@
types[RECYK_ELECTRONIC] = "Electronics" types[RECYK_ELECTRONIC] = "Electronics"
types[RECYK_GLASS] = "Glasses" types[RECYK_GLASS] = "Glasses"
types[RECYK_METAL] = "Metals/Minerals" types[RECYK_METAL] = "Metals/Minerals"
types[RECYK_PLASTIC] = "Plastic"
types[RECYK_MISC] = "Miscellaneous" types[RECYK_MISC] = "Miscellaneous"
/obj/machinery/sorting_machine/recycling/process()
//Before sorting, we'll try and open any box and crate we find
if(stat & (BROKEN | NOPOWER))
return
var/turf/in_T = get_step(src, input_dir)
var/items_moved = 0
//Open any closets/crates
for(var/obj/structure/closet/C in in_T.contents)
//Only open a limited number of closets
if(items_moved >= max_items_moved)
break
if(C.open())
C.dump_contents()
items_moved++
//Open any storage items (including those that were in closets/cages)
for(var/obj/item/weapon/storage/S in in_T.contents)
//Only open a limited number of boxes
if(items_moved >= max_items_moved)
break
if(S.contents.len > 0)
var/S_old_contents = S.contents.len
S.mass_remove(in_T)
//If you just can't empty it out, treat it as normal rubbish
if(S.contents.len < S_old_contents)
items_moved++
//We can't start sorting items until we've made sure we've emptied every box and closet
if(items_moved == 0)
..()
/obj/machinery/sorting_machine/recycling/Topic(href, href_list) /obj/machinery/sorting_machine/recycling/Topic(href, href_list)
. = ..() . = ..()
if(.) if(.)
@@ -426,6 +464,13 @@
return 1 return 1
/obj/machinery/sorting_machine/recycling/sort(atom/movable/A) /obj/machinery/sorting_machine/recycling/sort(atom/movable/A)
// A closet or crate that can't be opened can't be recycled, regardless of recycle type and selected types
if (istype(A, /obj/structure/closet))
var/obj/structure/closet/C = A
if (!C.can_open())
return FALSE
// Check atom recycle type is in selected types
return A.w_type && (types[A.w_type] in selected_types) return A.w_type && (types[A.w_type] in selected_types)
/obj/machinery/sorting_machine/recycling/interact(mob/user) /obj/machinery/sorting_machine/recycling/interact(mob/user)