diff --git a/code/__DEFINES/research.dm b/code/__DEFINES/research.dm
index adb276c64fa..f2be6fef6da 100644
--- a/code/__DEFINES/research.dm
+++ b/code/__DEFINES/research.dm
@@ -1,6 +1,16 @@
/// For instances where we don't want a design showing up due to it being for debug/sanity purposes
#define DESIGN_ID_IGNORE "IGNORE_THIS_DESIGN"
+///The object printed from this design won't get the mats used to make it. Default setting for stacks unless specified otherwise
+#define DESIGN_DONT_INHERIT_MATS 0
+/**
+ * Default setting. The object printed from this design gets the mats used to make it.
+ * This will also be unit tested to ensure that that the mats of the printed object match with another object of the same type spawned in a generic way.
+ */
+#define DESIGN_INHERIT_MATS 1
+///The object printed from this design gets the mats used to make it but skips the unit test.
+#define DESIGN_INHERIT_MATS_SPECIAL 2
+
//! Techweb names for new point types. Can be used to define specific point values for specific types of research (science, security, engineering, etc.)
#define TECHWEB_POINT_TYPE_GENERIC "General Research"
diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm
index ecb522c3ef2..52fbb0c7b85 100644
--- a/code/__DEFINES/traits/declarations.dm
+++ b/code/__DEFINES/traits/declarations.dm
@@ -914,6 +914,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_NEEDS_TWO_HANDS "needstwohands"
/// Can't be catched when thrown
#define TRAIT_UNCATCHABLE "uncatchable"
+///Items with this trait will be ignored when redeeming materials from inserting it in a material container
+#define TRAIT_IGNORED_BY_MAT_REDEMPTION "ignored_by_mat_redemption"
/// You won't catch duds while fishing with this rod.
#define TRAIT_ROD_REMOVE_FISHING_DUD "rod_remove_fishing_dud"
/// This rod ignores environmental conditions for fishing (like low light for nocturnal fish)
diff --git a/code/__HELPERS/construction.dm b/code/__HELPERS/construction.dm
index 557f93efc34..5413b5dcdc4 100644
--- a/code/__HELPERS/construction.dm
+++ b/code/__HELPERS/construction.dm
@@ -56,63 +56,3 @@
return null
. = new target.type(target.drop_location(), amount, FALSE, target.mats_per_unit)
-
-/**
- * divides a list of materials uniformly among all contents of the target_object recursively
- * Used to set materials of printed items with their design cost by taking into consideration their already existing materials
- * e.g. if 12 iron is to be divided uniformly among 2 objects A, B who's current iron contents are 3 & 7
- * Then first we normalize those values i.e. find their weights to decide who gets an higher share of iron
- * total_sum = 3 + 7 = 10, A = 3/10 = 0.3, B = 7/10 = 0.7
- * Then we finally multiply those weights with the user value of 12 we get
- * A = 0.3 * 12 = 3.6, B = 0.7 * 12 = 8.4 i.e. 3.6 + 8.4 = 12!!
- * Off course we round the values so we don't have to deal with floating point materials so the actual value
- * ends being less but that's not an issue
- * Arguments
- *
- * * [custom_materials][list] - the list of materials to set for the object
- * * multiplier - multiplier passed to set_custom_materials
- * * [target_object][atom] - the target object who's custom materials we are trying to modify
- */
-/proc/split_materials_uniformly(list/custom_materials, multiplier, atom/target_object)
- if(!length(target_object.contents)) //most common case where the object is just 1 thing
- target_object.set_custom_materials(custom_materials, multiplier)
- return
-
- //Step 1: Get recursive contents of all objects, only filter obj cause that what's material container accepts
- var/list/reccursive_contents = target_object.get_all_contents_type(/obj/item)
-
- //Step 2: find the sum of each material type per object and record their amounts into an 2D list
- var/list/material_map_sum = list()
- var/list/material_map_amounts = list()
- for(var/atom/object as anything in reccursive_contents)
- var/list/item_materials = object.custom_materials
- for(var/mat in custom_materials)
- var/mat_amount = 1 //no materials mean we assign this default amount
- if(length(item_materials))
- mat_amount = item_materials[mat] || 1 //if this object doesn't have our material type then assign a default value of 1
-
- //record the sum of mats for normalizing
- material_map_sum[mat] += mat_amount
- //record the material amount for each item into an 2D list
- var/list/mat_list_per_item = material_map_amounts[mat]
- if(isnull(mat_list_per_item))
- material_map_amounts[mat] = list(mat_amount)
- else
- mat_list_per_item += mat_amount
-
- //Step 3: normalize & scale material_map_amounts with material_map_sum
- for(var/mat in material_map_amounts)
- var/mat_sum = material_map_sum[mat]
- var/list/mat_per_item = material_map_amounts[mat]
- for(var/i in 1 to mat_per_item.len)
- mat_per_item[i] = (mat_per_item[i] / mat_sum) * custom_materials[mat]
-
- //Step 4 flatten the 2D list and assign the final values to each atom
- var/index = 1
- for(var/atom/object as anything in reccursive_contents)
- var/list/final_material_list = list()
- for(var/mat in material_map_amounts)
- var/list/mat_per_item = material_map_amounts[mat]
- final_material_list[mat] = mat_per_item[index]
- object.set_custom_materials(final_material_list, multiplier)
- index += 1
diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm
index 35ca4d0b122..6dde06107ba 100644
--- a/code/_globalvars/traits/_traits.dm
+++ b/code/_globalvars/traits/_traits.dm
@@ -59,6 +59,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_HEARING_SENSITIVE" = TRAIT_HEARING_SENSITIVE,
"TRAIT_HYPERSPACED" = TRAIT_HYPERSPACED,
"TRAIT_IGNORE_DEMOLITION" = TRAIT_IGNORE_DEMOLITION,
+ "TRAIT_IGNORED_BY_MAT_REDEMPTION" = TRAIT_IGNORED_BY_MAT_REDEMPTION,
"TRAIT_IMMERSED" = TRAIT_IMMERSED,
"TRAIT_INVERTED_DEMOLITION" = TRAIT_INVERTED_DEMOLITION,
"TRAIT_IRRADIATED" = TRAIT_IRRADIATED,
diff --git a/code/datums/components/crafting/chemistry.dm b/code/datums/components/crafting/chemistry.dm
index dd21976be47..608906197f4 100644
--- a/code/datums/components/crafting/chemistry.dm
+++ b/code/datums/components/crafting/chemistry.dm
@@ -117,7 +117,7 @@
/obj/item/stack/sheet/glass = 1,
)
category = CAT_CHEMISTRY
-
+ crafting_flags = parent_type::crafting_flags | CRAFT_MUST_BE_LEARNED | CRAFT_SKIP_MATERIALS_PARITY
/datum/crafting_recipe/chem_separator
name = "chemical separator"
diff --git a/code/datums/components/crafting/containers.dm b/code/datums/components/crafting/containers.dm
index 52fa895a5a3..d5c40f2ec4c 100644
--- a/code/datums/components/crafting/containers.dm
+++ b/code/datums/components/crafting/containers.dm
@@ -27,7 +27,6 @@
/obj/item/stack/sheet/mineral/bamboo = 20
)
result = /obj/item/storage/basket
- crafting_flags = CRAFT_SKIP_MATERIALS_PARITY
category = CAT_CONTAINERS
crafting_flags = parent_type::crafting_flags | CRAFT_MUST_BE_LEARNED | CRAFT_SKIP_MATERIALS_PARITY
steps = list(
diff --git a/code/datums/components/crafting/guncrafting.dm b/code/datums/components/crafting/guncrafting.dm
index 0672a72c34f..8b75fb1f9ab 100644
--- a/code/datums/components/crafting/guncrafting.dm
+++ b/code/datums/components/crafting/guncrafting.dm
@@ -16,7 +16,7 @@
desc = "A prototype modular receiver and trigger assembly for a firearm."
icon = 'icons/obj/weapons/improvised.dmi'
icon_state = "receiver"
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.5, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.55, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT, /datum/material/plastic = SMALL_MATERIAL_AMOUNT)
/obj/item/weaponcrafting/receiver/create_slapcraft_component()
var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/pipegun)
@@ -29,7 +29,7 @@
/obj/item/weaponcrafting/stock
name = "rifle stock"
desc = "A classic rifle stock that doubles as a grip, roughly carved out of wood."
- custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT * 8)
+ custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT * 8, /datum/material/plastic = SMALL_MATERIAL_AMOUNT)
resistance_flags = FLAMMABLE
icon = 'icons/obj/weapons/improvised.dmi'
icon_state = "riflestock"
diff --git a/code/datums/components/profound_fisher.dm b/code/datums/components/profound_fisher.dm
index 3c2ddbef1a8..8f4665ad983 100644
--- a/code/datums/components/profound_fisher.dm
+++ b/code/datums/components/profound_fisher.dm
@@ -141,6 +141,7 @@
/obj/item/fishing_rod/mob_fisher
line = /obj/item/fishing_line/reinforced
bait = /obj/item/food/bait/doughball/synthetic/unconsumable
+ custom_materials = null
resistance_flags = INDESTRUCTIBLE
reel_overlay = null
show_in_wiki = FALSE //abstract fishing rod
diff --git a/code/datums/components/trapdoor.dm b/code/datums/components/trapdoor.dm
index 7407e467bf0..639b1c94321 100644
--- a/code/datums/components/trapdoor.dm
+++ b/code/datums/components/trapdoor.dm
@@ -331,6 +331,7 @@
name = "trapdoor controller"
desc = "A sinister-looking controller for a trapdoor."
icon_state = "trapdoor"
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5)
///if the trapdoor isn't linked it will try to link on pulse, this shouldn't be spammable
COOLDOWN_DECLARE(search_cooldown)
///trapdoor link cooldown time here!
@@ -464,6 +465,7 @@
///subtype with internals already included. If you're giving a department a roundstart trapdoor, this is what you want
/obj/item/trapdoor_remote/preloaded
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.1)
/obj/item/trapdoor_remote/preloaded/Initialize(mapload)
. = ..()
@@ -475,7 +477,7 @@
desc = "A kit containing all the parts needed to build a trapdoor. Can only be used on open space."
icon = 'icons/obj/weapons/improvised.dmi'
icon_state = "kitsuitcase"
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2.2)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6.7, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2.2)
var/in_use = FALSE
/obj/item/trapdoor_kit/Initialize(mapload)
diff --git a/code/datums/materials/material_container/material_container.dm b/code/datums/materials/material_container/material_container.dm
index e3e017727ab..8fc6f9f5e96 100644
--- a/code/datums/materials/material_container/material_container.dm
+++ b/code/datums/materials/material_container/material_container.dm
@@ -222,6 +222,9 @@
var/material_amount = OPTIMAL_COST(get_item_material_amount(target) * multiplier)
if(!material_amount)
return MATERIAL_INSERT_ITEM_NO_MATS
+ if(HAS_TRAIT(weapon, TRAIT_IGNORED_BY_MAT_REDEMPTION))
+ qdel(weapon)
+ return MATERIAL_INSERT_ITEM_NO_MATS
var/obj/item/stack/item_stack
if(isstack(weapon) && !has_space(material_amount)) //not enough space split and feed as many sheets possible
item_stack = weapon
@@ -293,10 +296,10 @@
//e.g. projectiles inside bullets are not objects
if(!istype(target_item))
continue
- //can't allow abstract, hologram items
- if((target_item.item_flags & ABSTRACT) || (target_item.flags_1 & HOLOGRAM_1))
+ //can't allow abstract, hologram items, or if they item is designed to be ignored by the mat container without throwing warnings and stuff (unlike NO_MAT_REDEMPTION flag).
+ if((target_item.item_flags & ABSTRACT) || (target_item.flags_1 & HOLOGRAM_1) || HAS_TRAIT(target_item, TRAIT_IGNORED_BY_MAT_REDEMPTION))
continue
- //user defined conditions
+ //user defined conditions for the object the material container datum is attached to
if(SEND_SIGNAL(src, COMSIG_MATCONTAINER_PRE_USER_INSERT, target_item, user) & MATCONTAINER_BLOCK_INSERT)
continue
//item is either indestructible, not allowed for redemption or not in the allowed types
diff --git a/code/game/atom/atom_materials.dm b/code/game/atom/atom_materials.dm
index 1f787d217bd..01f349dab44 100644
--- a/code/game/atom/atom_materials.dm
+++ b/code/game/atom/atom_materials.dm
@@ -556,6 +556,31 @@
/atom/proc/get_custom_material_amount()
return isnull(custom_materials) ? 0 : counterlist_sum(custom_materials)
+/**
+ * Returns a list with the sum of the materials of the source and its contents for each mat type.
+ * If contents_type is set, only consider contained objects of that type (plus src).
+ * Any object that has any of the traits in skip_traits will also be skipped.
+ */
+/atom/proc/get_contents_custom_materials(contents_type, list/skip_traits)
+ var/list/contained = ispath(contents_type) ? get_all_contents_type(contents_type) : get_all_contents()
+ if(skip_traits && !islist(skip_traits))
+ skip_traits = list(skip_traits)
+ var/list/all_mats = list()
+ for(var/atom/atom as anything in contained)
+ if(!length(atom.custom_materials))
+ continue
+ if(skip_traits)
+ var/skip = FALSE
+ for(var/trait in skip_traits)
+ if(HAS_TRAIT(atom, trait))
+ skip = TRUE
+ break
+ if(skip)
+ continue
+ for(var/material in atom.custom_materials)
+ all_mats[material] += atom.custom_materials[material]
+ return all_mats
+
/// A simple proc that iterates through each material that the object is made of and spawns some stacks based on their amount and associated sheet/ore type.
/atom/proc/drop_custom_materials(multiplier = 1)
for(var/datum/material/material as anything in custom_materials)
@@ -609,20 +634,7 @@
var/index = 1
var/mats_len = length(mats_list)
for(var/datum/material/mat as anything in mats_list)
- var/amount_string = ""
- if(as_sheets)
- var/amount = sheets_from_value(mats_list[mat])
- switch(amount)
- if(0 to 0.49)
- amount_string = "SMALL_MATERIAL_AMOUNT * " + num2text(amount * 10)
- if(0.5)
- amount_string = "HALF_SHEET_MATERIAL_AMOUNT"
- if(1)
- amount_string = "SHEET_MATERIAL_AMOUNT"
- else
- amount_string = "SHEET_MATERIAL_AMOUNT * " + num2text(amount)
- else
- amount_string = "[mats_list[mat]]"
+ var/amount_string = as_sheets ? transcribe_mat_value_as_sheet(mats_list[mat]) : "[mats_list[mat]]"
text += "[mat.type] = " + amount_string
if(index < mats_len)
text += ", "
@@ -630,6 +642,22 @@
text += ")"
return text
+/proc/transcribe_mat_value_as_sheet(value)
+ var/amount = sheets_from_value(value)
+ switch(amount)
+ if(0 to 0.09)
+ return "SMALL_MATERIAL_AMOUNT * " + num2text(amount * 10)
+ if(0.1)
+ return "SMALL_MATERIAL_AMOUNT"
+ if(0.11 to 0.49)
+ return "SMALL_MATERIAL_AMOUNT * " + num2text(amount * 10)
+ if(0.5)
+ return "HALF_SHEET_MATERIAL_AMOUNT"
+ if(1)
+ return "SHEET_MATERIAL_AMOUNT"
+ else
+ return "SHEET_MATERIAL_AMOUNT * " + num2text(amount)
+
/// Convert a raw material amount into
/// "SHEET_MATERIAL_AMOUNT", or "* N", with rounding rules.
/proc/sheets_from_value(value, sheet_amount = SHEET_MATERIAL_AMOUNT)
diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index 247b729f1e9..6d5ad0529cf 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -326,7 +326,7 @@
materials_needed[material] += amount_needed
//checks for available materials
- var/material_cost_coefficient = ispath(design.build_path, /obj/item/stack) ? 1 : creation_efficiency
+ var/material_cost_coefficient = (ispath(design.build_path, /obj/item/stack) || design.fixed_cost_efficiency) ? 1 : creation_efficiency
if(!materials.has_materials(materials_needed, material_cost_coefficient, build_count))
say("Not enough materials to begin production.")
return
@@ -409,22 +409,22 @@
materials.use_materials(materials_needed, material_cost_coefficient, is_stack ? items_remaining : 1)
var/atom/movable/created
+ var/number_to_make = 1
if(is_stack)
var/obj/item/stack/stack_item = initial(design.build_path)
var/max_stack_amount = initial(stack_item.max_amount)
- var/number_to_make = (initial(stack_item.amount) * items_remaining)
+ number_to_make = (initial(stack_item.amount) * items_remaining)
while(number_to_make > max_stack_amount)
created = design.create_result(target, materials_needed, amount = max_stack_amount)
if(isitem(created))
created.pixel_x = created.base_pixel_x + rand(-6, 6)
created.pixel_y = created.base_pixel_y + rand(-6, 6)
number_to_make -= max_stack_amount
- created = design.create_result(target, materials_needed, amount = number_to_make)
- else
- created = design.create_result(target, materials_needed)
- if (length(slots_chosen))
- created.set_material_slots(slots_chosen)
- split_materials_uniformly(materials_needed, material_cost_coefficient, created)
+ created = design.create_result(target, materials_needed, amount = number_to_make)
+ if (length(slots_chosen))
+ created.set_material_slots(slots_chosen)
+ if(design.inherit_materials != DESIGN_DONT_INHERIT_MATS)
+ design.transfer_materials(materials_needed, material_cost_coefficient, created)
if(isitem(created))
created.pixel_x = created.base_pixel_x + rand(-6, 6)
diff --git a/code/game/machinery/computer/telescreen.dm b/code/game/machinery/computer/telescreen.dm
index 95bfe0e7b64..21171e200a9 100644
--- a/code/game/machinery/computer/telescreen.dm
+++ b/code/game/machinery/computer/telescreen.dm
@@ -26,6 +26,7 @@
icon_state = "telescreen"
result_path = /obj/machinery/computer/security/telescreen
pixel_shift = 32
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/machinery/computer/security/telescreen/on_deconstruction(disassembled)
new frame_type(loc)
diff --git a/code/game/machinery/defibrillator_mount.dm b/code/game/machinery/defibrillator_mount.dm
index a84c91ad0c8..90577c5a757 100644
--- a/code/game/machinery/defibrillator_mount.dm
+++ b/code/game/machinery/defibrillator_mount.dm
@@ -209,7 +209,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/defibrillator_mount, 28)
desc = "A frame for a defibrillator mount. Once placed, it can be removed with a wrench."
icon = 'icons/obj/machines/defib_mount.dmi'
icon_state = "defibrillator_mount"
- custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
w_class = WEIGHT_CLASS_BULKY
result_path = /obj/machinery/defibrillator_mount
pixel_shift = 28
@@ -218,7 +218,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/defibrillator_mount, 28)
name = "unhooked PENLITE defibrillator mount"
desc = "A frame for a PENLITE defibrillator mount. Unlike the normal mount, it can passively recharge the unit inside."
icon_state = "penlite_mount"
- custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 0.5)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
result_path = /obj/machinery/defibrillator_mount/charging
//mobile defib
diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm
index 9dff3a3a1e0..769f357740c 100644
--- a/code/game/machinery/dna_scanner.dm
+++ b/code/game/machinery/dna_scanner.dm
@@ -155,6 +155,7 @@
/obj/item/disk/data
name = "\improper DNA data disk"
icon_state = "datadisk0" //Gosh I hope syndies don't mistake them for the nuke disk.
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 0.5)
var/list/genetic_makeup_buffer = list()
var/list/mutations = list()
var/max_mutations = 10
diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm
index 7dc013c8057..7b52a4e9287 100644
--- a/code/game/machinery/iv_drip.dm
+++ b/code/game/machinery/iv_drip.dm
@@ -20,7 +20,7 @@
mouse_drag_pointer = MOUSE_ACTIVE_POINTER
use_power = NO_POWER_USE
interaction_flags_mouse_drop = NEED_HANDS
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.1, /datum/material/plastic = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.2)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/plastic = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.2)
/// Information and effects about where the IV drip is attached to
var/datum/iv_drip_attachment/attachment
diff --git a/code/game/objects/items/AI_modules/_AI_modules.dm b/code/game/objects/items/AI_modules/_AI_modules.dm
index 32d3e848b48..12d1f437e9d 100644
--- a/code/game/objects/items/AI_modules/_AI_modules.dm
+++ b/code/game/objects/items/AI_modules/_AI_modules.dm
@@ -136,6 +136,7 @@
law_datum.replace_random_law(templaw, list(LAW_INHERENT, LAW_SUPPLIED), LAW_INHERENT)
/obj/item/ai_module/core/full
+ custom_materials = list(/datum/material/diamond = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT)
var/law_id // if non-null, loads the laws from the ai_laws datums
/obj/item/ai_module/core/full/Initialize(mapload)
diff --git a/code/game/objects/items/AI_modules/freeform.dm b/code/game/objects/items/AI_modules/freeform.dm
index 05ef00c9467..95b04228bad 100644
--- a/code/game/objects/items/AI_modules/freeform.dm
+++ b/code/game/objects/items/AI_modules/freeform.dm
@@ -6,6 +6,7 @@
/obj/item/ai_module/core/freeformcore
name = "'Freeform' Core AI Module"
laws = list("")
+ custom_materials = list(/datum/material/diamond = SHEET_MATERIAL_AMOUNT * 5, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/ai_module/core/freeformcore/attack_self(mob/user)
var/targName = tgui_input_text(user, "Enter a new core law for the AI.", "Freeform Law Entry", laws[1], max_length = CONFIG_GET(number/max_law_len), multiline = TRUE)
@@ -31,6 +32,7 @@
name = "'Freeform' AI Module"
lawpos = 15
laws = list("")
+ custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT * 5, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/ai_module/supplied/freeform/attack_self(mob/user)
var/newpos = tgui_input_number(user, "Please enter the priority for your new law. Can only write to law sectors 15 and above.", "Law Priority ", lawpos, 50, 15)
diff --git a/code/game/objects/items/AI_modules/repair.dm b/code/game/objects/items/AI_modules/repair.dm
index 4559a315727..e7db26e5a59 100644
--- a/code/game/objects/items/AI_modules/repair.dm
+++ b/code/game/objects/items/AI_modules/repair.dm
@@ -8,6 +8,7 @@
name = "\improper 'Remove Law' AI module"
desc = "An AI Module for removing single laws."
bypass_law_amt_check = TRUE
+ custom_materials = list(/datum/material/diamond = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT)
var/lawpos = 1
/obj/item/ai_module/remove/attack_self(mob/user)
@@ -35,6 +36,7 @@
var/targetName = "name"
desc = "An AI Module for removing all non-core laws."
bypass_law_amt_check = TRUE
+ custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/ai_module/reset/handle_unique_ai()
return
@@ -53,6 +55,7 @@
/obj/item/ai_module/reset/purge
name = "'Purge' AI Module"
desc = "An AI Module for purging all programmed laws."
+ custom_materials = list(/datum/material/diamond = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/ai_module/reset/purge/transmitInstructions(datum/ai_laws/law_datum, mob/sender, overflow)
..()
diff --git a/code/game/objects/items/AI_modules/supplied.dm b/code/game/objects/items/AI_modules/supplied.dm
index 76f47157306..112513ede95 100644
--- a/code/game/objects/items/AI_modules/supplied.dm
+++ b/code/game/objects/items/AI_modules/supplied.dm
@@ -9,6 +9,7 @@
/obj/item/ai_module/supplied
name = "Optional Law board"
var/lawpos = 50
+ custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/ai_module/supplied/transmitInstructions(datum/ai_laws/law_datum, mob/sender)
var/lawpostemp = lawpos
diff --git a/code/game/objects/items/AI_modules/zeroth.dm b/code/game/objects/items/AI_modules/zeroth.dm
index 480735bfe2f..2dc15252c5d 100644
--- a/code/game/objects/items/AI_modules/zeroth.dm
+++ b/code/game/objects/items/AI_modules/zeroth.dm
@@ -23,6 +23,7 @@
name = "'OneHuman' AI Module"
var/targetName = ""
laws = list("Only SUBJECT is human.")
+ custom_materials = list(/datum/material/diamond = SHEET_MATERIAL_AMOUNT * 3, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/ai_module/zeroth/onehuman/attack_self(mob/user)
var/targName = tgui_input_text(user, "Enter the subject who is the only human.", "One Human", user.real_name, max_length = MAX_NAME_LEN)
diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm
index 512daefd1e1..8497fc9b82b 100644
--- a/code/game/objects/items/blueprints.dm
+++ b/code/game/objects/items/blueprints.dm
@@ -26,6 +26,7 @@
attack_verb_simple = list("attack", "bap", "hit")
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
interaction_flags_atom = parent_type::interaction_flags_atom | INTERACT_ATOM_ALLOW_USER_LOCATION | INTERACT_ATOM_IGNORE_MOBILITY
+ custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT)
///A string of flavortext to be displayed at the top of the UI, related to the type of blueprints we are.
var/fluffnotice = "Property of Nanotrasen. For heads of staff only. Store in high-secure storage."
diff --git a/code/game/objects/items/botpad_remote.dm b/code/game/objects/items/botpad_remote.dm
index 21620f05a7b..fc039f2f04f 100644
--- a/code/game/objects/items/botpad_remote.dm
+++ b/code/game/objects/items/botpad_remote.dm
@@ -5,6 +5,7 @@
icon = 'icons/obj/devices/remote.dmi'
icon_state = "botpad_controller"
w_class = WEIGHT_CLASS_SMALL
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
// ID of the remote, used for linking up
var/id = "botlauncher"
var/obj/machinery/botpad/connected_botpad
diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm
index d1c68efd61c..86f36ca65ff 100644
--- a/code/game/objects/items/cards_ids.dm
+++ b/code/game/objects/items/cards_ids.dm
@@ -68,6 +68,8 @@
interaction_flags_click = FORBID_TELEKINESIS_REACH
armor_type = /datum/armor/card_id
resistance_flags = FIRE_PROOF | ACID_PROOF
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT)
+ item_flags = parent_type::item_flags | NO_MAT_REDEMPTION // A little clemency to the people who fumble and misclick stuff, even if it's already easy enough to destroy one.
/// The name registered on the card (for example: Dr Bryan See)
var/registered_name = null
diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm
index f24b84dc8e0..755436205e4 100644
--- a/code/game/objects/items/circuitboards/computer_circuitboards.dm
+++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm
@@ -14,6 +14,7 @@
name = "AI Upload"
greyscale_colors = CIRCUIT_COLOR_COMMAND
build_path = /obj/machinery/computer/upload/ai
+ custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
req_one_access = list(ACCESS_AI_UPLOAD)
/obj/item/circuitboard/computer/aiupload/no_lock
@@ -25,6 +26,7 @@
greyscale_colors = CIRCUIT_COLOR_COMMAND
req_one_access = list(ACCESS_AI_UPLOAD)
build_path = /obj/machinery/computer/upload/borg
+ custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/circuitboard/computer/borgupload/no_lock
req_one_access = null
@@ -549,6 +551,7 @@
name = "Robotics Control"
greyscale_colors = CIRCUIT_COLOR_SCIENCE
build_path = /obj/machinery/computer/robotics
+ custom_materials = list(/datum/material/bluespace = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/circuitboard/computer/teleporter
name = "Teleporter"
diff --git a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm
index bbac71237a7..ff039b8b9e7 100644
--- a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm
+++ b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm
@@ -1170,6 +1170,7 @@
build_path = /obj/machinery/recharger
req_components = list(/datum/stock_part/capacitor = 1)
needs_anchored = FALSE
+ custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/circuitboard/machine/techfab/department/security
name = "\improper Departmental Techfab - Security"
@@ -1714,6 +1715,7 @@
/datum/stock_part/scanning_module = 1,
/datum/stock_part/micro_laser = 1,
)
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT)
/obj/item/circuitboard/machine/refinery
name = "Boulder Refinery"
@@ -1725,6 +1727,7 @@
/datum/stock_part/matter_bin = 2,
/obj/item/reagent_containers/cup/beaker = 1,
)
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT)
/obj/item/circuitboard/machine/smelter
name = "Boulder Smelter"
@@ -1736,6 +1739,7 @@
/datum/stock_part/matter_bin = 2,
/obj/item/reagent_containers/cup/beaker = 1,
)
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT)
/obj/item/circuitboard/machine/shieldwallgen
name = "Shield Wall Generator"
diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm
index be4b16908c1..eb0495123bc 100644
--- a/code/game/objects/items/clown_items.dm
+++ b/code/game/objects/items/clown_items.dm
@@ -238,6 +238,7 @@
icon_state = "air_horn"
worn_icon_state = "horn_air"
sound_file = 'sound/items/airhorn/airhorn2.ogg'
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT)
/datum/crafting_recipe/airhorn
name = "Air Horn"
@@ -320,6 +321,7 @@
max_integrity = 20
armor_type = /datum/armor/item_banhammer
resistance_flags = FIRE_PROOF
+ custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 10.8)
/obj/item/balloon_mallet/examine(mob/user)
. = ..()
diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm
index 37f32507dd6..4dbc9900b1b 100644
--- a/code/game/objects/items/cosmetics.dm
+++ b/code/game/objects/items/cosmetics.dm
@@ -197,6 +197,7 @@
sound_vary = TRUE
pickup_sound = SFX_GENERIC_DEVICE_PICKUP
drop_sound = SFX_GENERIC_DEVICE_DROP
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.7)
/obj/item/razor/suicide_act(mob/living/carbon/user)
user.visible_message(span_suicide("[user] begins shaving [user.p_them()]self without the razor guard! It looks like [user.p_theyre()] trying to commit suicide!"))
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index 2c66b352a47..cbbbce8109a 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -770,6 +770,7 @@
name = "spray can"
icon_state = "spraycan"
worn_icon_state = "spraycan"
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT)
icon_capped = "spraycan_cap"
icon_uncapped = "spraycan"
diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm
index c5472863e2f..cd5c97ea599 100644
--- a/code/game/objects/items/devices/aicard.dm
+++ b/code/game/objects/items/devices/aicard.dm
@@ -14,6 +14,7 @@
sound_vary = TRUE
pickup_sound = SFX_GENERIC_DEVICE_PICKUP
drop_sound = SFX_GENERIC_DEVICE_DROP
+ custom_materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2)
var/flush = FALSE
var/mob/living/silicon/ai/AI
@@ -34,14 +35,14 @@
desc = "A stylish upgrade (?) to the intelliCard."
icon_state = "aitater"
base_icon_state = "aitater"
- custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5)
+ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 5.5, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5)
/obj/item/aicard/aispook
name = "intelliLantern"
desc = "A spoOoOoky upgrade to the intelliCard."
icon_state = "aispook"
base_icon_state = "aispook"
- custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5)
+ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 5.5, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5)
/obj/item/aicard/suicide_act(mob/living/user)
user.visible_message(span_suicide("[user] is trying to upload [user.p_them()]self into [src]! That's not going to work out well!"))
diff --git a/code/game/objects/items/devices/anomaly_neutralizer.dm b/code/game/objects/items/devices/anomaly_neutralizer.dm
index 32f0674690e..864451f45fb 100644
--- a/code/game/objects/items/devices/anomaly_neutralizer.dm
+++ b/code/game/objects/items/devices/anomaly_neutralizer.dm
@@ -10,6 +10,7 @@
w_class = WEIGHT_CLASS_SMALL
slot_flags = ITEM_SLOT_BELT
item_flags = NOBLUDGEON
+ custom_materials = list(/datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/uranium = SHEET_MATERIAL_AMOUNT)
/obj/item/anomaly_neutralizer/Initialize(mapload)
. = ..()
diff --git a/code/game/objects/items/devices/beacon.dm b/code/game/objects/items/devices/beacon.dm
index 4e4bdcbf885..695cab69717 100644
--- a/code/game/objects/items/devices/beacon.dm
+++ b/code/game/objects/items/devices/beacon.dm
@@ -7,6 +7,7 @@
lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
obj_flags = UNIQUE_RENAME
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT)
var/enabled = TRUE
var/renamed = FALSE
diff --git a/code/game/objects/items/devices/blood_scanner.dm b/code/game/objects/items/devices/blood_scanner.dm
index 4a32545b0a4..2f584f680b2 100644
--- a/code/game/objects/items/devices/blood_scanner.dm
+++ b/code/game/objects/items/devices/blood_scanner.dm
@@ -15,7 +15,7 @@
w_class = WEIGHT_CLASS_TINY
throw_speed = 3
throw_range = 7
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*2, /datum/material/glass=SMALL_MATERIAL_AMOUNT*2)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5)
/obj/item/blood_scanner/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if(!usable_check(person_scanning = user, scanee = interacting_with))
diff --git a/code/game/objects/items/devices/desynchronizer.dm b/code/game/objects/items/devices/desynchronizer.dm
index 31006c8dc1d..a3191364108 100644
--- a/code/game/objects/items/devices/desynchronizer.dm
+++ b/code/game/objects/items/devices/desynchronizer.dm
@@ -8,7 +8,7 @@
item_flags = NOBLUDGEON
lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
- custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 2.5, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 5)
+ custom_materials = list(/datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT)
interaction_flags_click = NEED_DEXTERITY|ALLOW_RESTING
/// Max time this can be set
var/max_duration = 300 SECONDS
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index 73e774205b5..d2f6954175a 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -343,6 +343,7 @@
light_color = "#CCFFFF"
has_closed_handle = FALSE
COOLDOWN_DECLARE(holosign_cooldown)
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5)
/obj/item/flashlight/pen/ranged_interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if(!COOLDOWN_FINISHED(src, holosign_cooldown))
@@ -366,6 +367,7 @@
desc = "A high-powered UV penlight intended to help stave off infection in the field on serious burned patients. Probably really bad to look into."
icon_state = "penlight_surgical"
light_color = LIGHT_COLOR_PURPLE
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT)
/// Our current UV cooldown
COOLDOWN_DECLARE(uv_cooldown)
/// How long between UV fryings
@@ -400,6 +402,7 @@
light_color = "#99ccff"
hitsound = 'sound/items/weapons/genhit1.ogg'
has_closed_handle = FALSE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25)
// the desk lamps are a bit special
/obj/item/flashlight/lamp
diff --git a/code/game/objects/items/devices/forcefieldprojector.dm b/code/game/objects/items/devices/forcefieldprojector.dm
index e41c346c993..b9b380ab87a 100644
--- a/code/game/objects/items/devices/forcefieldprojector.dm
+++ b/code/game/objects/items/devices/forcefieldprojector.dm
@@ -10,7 +10,7 @@
worn_icon_state = "electronic"
lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
- custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 2.5, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 5)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
var/max_shield_integrity = 250
var/shield_integrity = 250
var/max_fields = 3
diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm
index c3b17c4ce1f..213e89ed2f9 100644
--- a/code/game/objects/items/devices/gps.dm
+++ b/code/game/objects/items/devices/gps.dm
@@ -14,6 +14,7 @@
sound_vary = TRUE
pickup_sound = SFX_GENERIC_DEVICE_PICKUP
drop_sound = SFX_GENERIC_DEVICE_DROP
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
var/gpstag
var/tracking_on = TRUE
var/debug_mode = FALSE
diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm
index 6ea93fb9297..0b9e11cd178 100644
--- a/code/game/objects/items/devices/lightreplacer.dm
+++ b/code/game/objects/items/devices/lightreplacer.dm
@@ -44,6 +44,7 @@
obj_flags = CONDUCTS_ELECTRICITY
slot_flags = ITEM_SLOT_BELT
force = 8
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 1.5)
/// How many uses does our light replacer have?
var/uses = 10
@@ -331,6 +332,7 @@
bluespace_toggle = TRUE
actions_types = list(/datum/action/item_action/lightreplacer_scan)
action_slots = ALL
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 1.5)
COOLDOWN_DECLARE(lightreplacer_spot_cooldown)
/obj/item/lightreplacer/blue/emag_act()
diff --git a/code/game/objects/items/devices/quantum_keycard.dm b/code/game/objects/items/devices/quantum_keycard.dm
index abe5d99b55d..2d822518a17 100644
--- a/code/game/objects/items/devices/quantum_keycard.dm
+++ b/code/game/objects/items/devices/quantum_keycard.dm
@@ -12,6 +12,7 @@
w_class = WEIGHT_CLASS_TINY
obj_flags = UNIQUE_RENAME
interaction_flags_click = NEED_DEXTERITY|ALLOW_RESTING
+ custom_materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT)
/// The linked quantum pad
var/obj/machinery/quantumpad/qpad
diff --git a/code/game/objects/items/devices/scanners/autopsy_scanner.dm b/code/game/objects/items/devices/scanners/autopsy_scanner.dm
index 5e0376879e7..77a21f3c890 100644
--- a/code/game/objects/items/devices/scanners/autopsy_scanner.dm
+++ b/code/game/objects/items/devices/scanners/autopsy_scanner.dm
@@ -11,7 +11,7 @@
item_flags = CRUEL_IMPLEMENT
slot_flags = ITEM_SLOT_BELT
w_class = WEIGHT_CLASS_NORMAL
- custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*2)
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT)
custom_price = PAYCHECK_COMMAND
sound_vary = TRUE
pickup_sound = SFX_GENERIC_DEVICE_PICKUP
diff --git a/code/game/objects/items/devices/scanners/health_analyzer.dm b/code/game/objects/items/devices/scanners/health_analyzer.dm
index c3ae145b51e..0380c45e032 100644
--- a/code/game/objects/items/devices/scanners/health_analyzer.dm
+++ b/code/game/objects/items/devices/scanners/health_analyzer.dm
@@ -19,7 +19,7 @@
w_class = WEIGHT_CLASS_TINY
throw_speed = 3
throw_range = 7
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT *2)
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5)
interaction_flags_click = NEED_LITERACY|NEED_LIGHT|ALLOW_RESTING
custom_price = PAYCHECK_COMMAND
sound_vary = TRUE
@@ -604,6 +604,7 @@
icon_state = "health_adv"
desc = "A hand-held body scanner able to distinguish vital signs of the subject with high accuracy."
advanced = TRUE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/silver = SHEET_MATERIAL_AMOUNT, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.75)
#define AID_EMOTION_NEUTRAL "neutral"
#define AID_EMOTION_HAPPY "happy"
diff --git a/code/game/objects/items/devices/scanners/sequence_scanner.dm b/code/game/objects/items/devices/scanners/sequence_scanner.dm
index 938c5637b74..a763c7c1cc8 100644
--- a/code/game/objects/items/devices/scanners/sequence_scanner.dm
+++ b/code/game/objects/items/devices/scanners/sequence_scanner.dm
@@ -18,6 +18,7 @@
sound_vary = TRUE
pickup_sound = SFX_GENERIC_DEVICE_PICKUP
drop_sound = SFX_GENERIC_DEVICE_DROP
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
var/list/discovered = list() //hit a dna console to update the scanners database
var/list/buffer
diff --git a/code/game/objects/items/devices/scanners/slime_scanner.dm b/code/game/objects/items/devices/scanners/slime_scanner.dm
index c355da8ba7d..19e6ca2d090 100644
--- a/code/game/objects/items/devices/scanners/slime_scanner.dm
+++ b/code/game/objects/items/devices/scanners/slime_scanner.dm
@@ -11,7 +11,7 @@
throwforce = 0
throw_speed = 3
throw_range = 7
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.30, /datum/material/glass=SMALL_MATERIAL_AMOUNT * 0.20)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
/obj/item/slime_scanner/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if(!isliving(interacting_with))
diff --git a/code/game/objects/items/devices/scanners/t_scanner.dm b/code/game/objects/items/devices/scanners/t_scanner.dm
index 30083139abd..69450724877 100644
--- a/code/game/objects/items/devices/scanners/t_scanner.dm
+++ b/code/game/objects/items/devices/scanners/t_scanner.dm
@@ -14,6 +14,7 @@
sound_vary = TRUE
pickup_sound = SFX_GENERIC_DEVICE_PICKUP
drop_sound = SFX_GENERIC_DEVICE_DROP
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5)
/// Is this T-Ray scanner currently on?
var/on = FALSE
diff --git a/code/game/objects/items/devices/swapper.dm b/code/game/objects/items/devices/swapper.dm
index 642f0c80589..91b0b36d277 100644
--- a/code/game/objects/items/devices/swapper.dm
+++ b/code/game/objects/items/devices/swapper.dm
@@ -9,6 +9,7 @@
lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
interaction_flags_click = NEED_DEXTERITY|ALLOW_RESTING
+ custom_materials = list(/datum/material/bluespace = SHEET_MATERIAL_AMOUNT, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/// Cooldown for usage
var/cooldown = 30 SECONDS
/// Next available time
diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm
index 4664bf85d71..65aa3261ace 100644
--- a/code/game/objects/items/devices/taperecorder.dm
+++ b/code/game/objects/items/devices/taperecorder.dm
@@ -366,7 +366,7 @@ GAME_VERB(/obj/item/taperecorder, print_transcript, "Print Transcript", null)
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
w_class = WEIGHT_CLASS_TINY
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT * 0.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.05)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.2)
force = 1
throwforce = 0
obj_flags = UNIQUE_RENAME //my mixtape
diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm
index 4737c49dc51..bf91d8a0fe5 100644
--- a/code/game/objects/items/devices/traitordevices.dm
+++ b/code/game/objects/items/devices/traitordevices.dm
@@ -404,7 +404,7 @@ effective or pretty fucking useless.
desc = "A jury-rigged device that disrupts nearby radio communication. Its crude construction provides a significantly smaller area of effect compared to its Syndicate counterpart."
range = 5
disruptor_range = 3
- custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.8, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.55)
/obj/item/jammer/makeshift/Initialize(mapload)
. = ..()
diff --git a/code/game/objects/items/door_seal.dm b/code/game/objects/items/door_seal.dm
index a3189c94cfb..095f9e2c5e7 100644
--- a/code/game/objects/items/door_seal.dm
+++ b/code/game/objects/items/door_seal.dm
@@ -13,7 +13,7 @@
throw_speed = 2
throw_range = 1
w_class = WEIGHT_CLASS_NORMAL
- custom_materials = list(/datum/material/iron= SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/plasma= SMALL_MATERIAL_AMOUNT * 5)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 5)
/// how long the seal takes to place on the door
var/seal_time = 3 SECONDS
/// how long it takes to remove the seal from a door
diff --git a/code/game/objects/items/floppy_disk.dm b/code/game/objects/items/floppy_disk.dm
index 3b7a75f1fa6..60dfac95a56 100644
--- a/code/game/objects/items/floppy_disk.dm
+++ b/code/game/objects/items/floppy_disk.dm
@@ -361,6 +361,7 @@
/obj/item/disk/manipulator
name = "manipulator task disk"
desc = "A floppy disk containing manipulator tasks."
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT)
var/list/tasks_data = list()
/obj/item/disk/manipulator/proc/set_tasks(list/new_tasks_data)
diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm
index e1780c09c6e..88018ecbc56 100644
--- a/code/game/objects/items/grenades/chem_grenade.dm
+++ b/code/game/objects/items/grenades/chem_grenade.dm
@@ -298,6 +298,7 @@
affected_area = 5
ignition_temp = 25 // Large grenades are slightly more effective at setting off heat-sensitive mixtures than smaller grenades.
threatscale = 1.1 // 10% more effective.
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5)
/obj/item/grenade/chem_grenade/large/detonate(mob/living/lanced_by)
if(stage != GRENADE_READY || dud_flags)
@@ -357,6 +358,7 @@
base_icon_state = "cryog"
affected_area = 2
ignition_temp = -100
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/grenade/chem_grenade/pyro // Intended for pyrotechnical mixes. Produces a small fire upon detonation, igniting potentially flammable mixtures.
name = "pyro grenade"
@@ -365,6 +367,7 @@
icon_state = "pyrog"
base_icon_state = "pyrog"
ignition_temp = 500 // This is enough to expose a hotspot.
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/grenade/chem_grenade/adv_release // Intended for weaker, but longer lasting effects. Could have some interesting uses.
name = "advanced release grenade"
@@ -372,6 +375,7 @@
casedesc = "This casing is able to detonate more than once. Can be configured using a multitool."
icon_state = "timeg"
base_icon_state = "timeg"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
var/unit_spread = 10 // Amount of units per repeat. Can be altered with a multitool.
/obj/item/grenade/chem_grenade/adv_release/multitool_act(mob/living/user, obj/item/tool)
diff --git a/code/game/objects/items/gun_maintenance.dm b/code/game/objects/items/gun_maintenance.dm
index d580d37fe25..eef9ea10b9e 100644
--- a/code/game/objects/items/gun_maintenance.dm
+++ b/code/game/objects/items/gun_maintenance.dm
@@ -77,3 +77,4 @@
inhand_icon_state = "toolbox_blue"
uses = 1
max_uses = 1
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6, /datum/material/plastic = SMALL_MATERIAL_AMOUNT)
diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm
index f24a699d54f..9b24ef3d763 100644
--- a/code/game/objects/items/handcuffs.dm
+++ b/code/game/objects/items/handcuffs.dm
@@ -353,6 +353,7 @@
breakouttime = 45 SECONDS
color = null
cable_color = null
+ custom_materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2.5)
/obj/item/restraints/handcuffs/cable/zipties/on_uncuffed(datum/source, mob/living/wearer)
. = ..()
@@ -433,6 +434,7 @@
throw_range = 1
icon_state = "beartrap"
desc = "A trap used to catch bears and other legged creatures."
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT)
///If true, the trap is "open" and can trigger.
var/armed = FALSE
///How much damage the trap deals when triggered.
@@ -563,6 +565,7 @@
breakouttime = 3 SECONDS
item_flags = DROPDEL
flags_1 = NONE
+ custom_materials = null // cannot be recycled anyway
/obj/item/restraints/legcuffs/beartrap/energy/Initialize(mapload)
. = ..()
@@ -668,7 +671,7 @@
w_class = WEIGHT_CLASS_SMALL
breakouttime = 6 SECONDS
custom_price = PAYCHECK_COMMAND * 0.35
- custom_materials = null
+ custom_materials = list(/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/restraints/legcuffs/bola/energy/Initialize(mapload)
. = ..()
diff --git a/code/game/objects/items/holosign_creator.dm b/code/game/objects/items/holosign_creator.dm
index 6e46cdb2a4d..3e62bbe94a8 100644
--- a/code/game/objects/items/holosign_creator.dm
+++ b/code/game/objects/items/holosign_creator.dm
@@ -16,6 +16,7 @@
sound_vary = TRUE
pickup_sound = SFX_GENERIC_DEVICE_PICKUP
drop_sound = SFX_GENERIC_DEVICE_DROP
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
var/list/signs
var/max_signs = 10
//time to create a holosign in deciseconds.
@@ -119,6 +120,7 @@
holosign_type = /obj/structure/holosign/barrier/wetsign
creation_time = 1 SECONDS
max_signs = 12
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/holosign_creator/security
name = "security holobarrier projector"
@@ -127,6 +129,7 @@
holosign_type = /obj/structure/holosign/barrier
creation_time = 2 SECONDS
max_signs = 6
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/holosign_creator/engineering
name = "engineering holobarrier projector"
@@ -135,6 +138,7 @@
holosign_type = /obj/structure/holosign/barrier/engineering
creation_time = 1 SECONDS
max_signs = 12
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/holosign_creator/atmos
name = "ATMOS holofan projector"
@@ -149,6 +153,7 @@
/obj/structure/window,
/obj/structure/grille,
)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/// Clearview holograms don't catch clicks and are more transparent
var/clearview = FALSE
/// Timer for auto-turning off clearview
@@ -207,6 +212,7 @@
holosign_type = /obj/structure/holosign/barrier/medical
creation_time = 1 SECONDS
max_signs = 6
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = SMALL_MATERIAL_AMOUNT)
/obj/item/holosign_creator/cyborg
name = "Energy Barrier Projector"
diff --git a/code/game/objects/items/implants/implant_clown.dm b/code/game/objects/items/implants/implant_clown.dm
index adcd272b8c2..81bac749a5a 100644
--- a/code/game/objects/items/implants/implant_clown.dm
+++ b/code/game/objects/items/implants/implant_clown.dm
@@ -2,6 +2,7 @@
/obj/item/implant/sad_trombone
name = "sad trombone implant"
actions_types = null
+ custom_materials = list(/datum/material/bananium = HALF_SHEET_MATERIAL_AMOUNT)
/// What do we play when the implantee deathgasps?
var/death_noise = 'sound/misc/sadtrombone.ogg'
diff --git a/code/game/objects/items/implants/security/implant_beacon.dm b/code/game/objects/items/implants/security/implant_beacon.dm
index 95840516bee..16b9dd4d1ea 100644
--- a/code/game/objects/items/implants/security/implant_beacon.dm
+++ b/code/game/objects/items/implants/security/implant_beacon.dm
@@ -5,6 +5,7 @@
actions_types = null
implant_flags = IMPLANT_TYPE_SECURITY
hud_icon_state = "hud_imp_beacon"
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3)
///How long will the implant be teleportable to after death?
var/lifespan_postmortem = 10 MINUTES
diff --git a/code/game/objects/items/implants/security/implant_chem.dm b/code/game/objects/items/implants/security/implant_chem.dm
index a6361051169..e4f3a379f79 100644
--- a/code/game/objects/items/implants/security/implant_chem.dm
+++ b/code/game/objects/items/implants/security/implant_chem.dm
@@ -5,6 +5,7 @@
actions_types = null
implant_flags = IMPLANT_TYPE_SECURITY
hud_icon_state = "hud_imp_chem"
+ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
/// All possible injection sizes for the implant shown in the prisoner management console.
var/list/implant_sizes = list(1, 5, 10)
/// Frequency of radio signal we've been synced to
diff --git a/code/game/objects/items/implants/security/implant_exile.dm b/code/game/objects/items/implants/security/implant_exile.dm
index 588c8a17b45..faeffa2b4eb 100644
--- a/code/game/objects/items/implants/security/implant_exile.dm
+++ b/code/game/objects/items/implants/security/implant_exile.dm
@@ -7,6 +7,7 @@
actions_types = null
implant_flags = IMPLANT_TYPE_SECURITY
hud_icon_state = "hud_imp_exile"
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 3)
implant_info = "Automatically activates upon implantation. \
Prevents returning through Nanotrasen gateway systems, and prevents usage of Nanotrasen mining shuttle controls."
diff --git a/code/game/objects/items/implants/security/implant_noteleport.dm b/code/game/objects/items/implants/security/implant_noteleport.dm
index 38efeb1a028..7d74953faa6 100644
--- a/code/game/objects/items/implants/security/implant_noteleport.dm
+++ b/code/game/objects/items/implants/security/implant_noteleport.dm
@@ -5,6 +5,7 @@
actions_types = null
implant_flags = IMPLANT_TYPE_SECURITY
hud_icon_state = "hud_imp_noteleport"
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3)
implant_info = "Automatically activates upon implantation. \
Grounds users' bluespace signatures, preventing jaunting and/or teleportation."
diff --git a/code/game/objects/items/implants/security/implant_track.dm b/code/game/objects/items/implants/security/implant_track.dm
index 17fa6c4cef8..6839bb8d56a 100644
--- a/code/game/objects/items/implants/security/implant_track.dm
+++ b/code/game/objects/items/implants/security/implant_track.dm
@@ -4,6 +4,7 @@
actions_types = null
implant_flags = IMPLANT_TYPE_SECURITY
hud_icon_state = "hud_imp_tracking"
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
///How long will the implant continue to function after death?
var/lifespan_postmortem = 10 MINUTES
diff --git a/code/game/objects/items/inspector.dm b/code/game/objects/items/inspector.dm
index 4ca2320caa2..975bcaf8309 100644
--- a/code/game/objects/items/inspector.dm
+++ b/code/game/objects/items/inspector.dm
@@ -24,6 +24,7 @@
sound_vary = TRUE
pickup_sound = SFX_GENERIC_DEVICE_PICKUP
drop_sound = SFX_GENERIC_DEVICE_DROP
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/uranium = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4.6, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT)
///Power cell used to power the scanner. Paths g
var/obj/item/stock_parts/power_store/cell = /obj/item/stock_parts/power_store/cell/crap
///Cell cover status
diff --git a/code/game/objects/items/mop.dm b/code/game/objects/items/mop.dm
index 35f4e267530..cd7446a180a 100644
--- a/code/game/objects/items/mop.dm
+++ b/code/game/objects/items/mop.dm
@@ -15,6 +15,7 @@
attack_verb_continuous = list("mops", "bashes", "bludgeons", "whacks")
attack_verb_simple = list("mop", "bash", "bludgeon", "whack")
resistance_flags = FLAMMABLE
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
var/mopcount = 0
///Maximum volume of reagents it can hold.
var/max_reagent_volume = 15
@@ -84,6 +85,7 @@
throwforce = 14
throw_range = 4
mopspeed = 0.8 SECONDS
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
var/refill_enabled = TRUE //Self-refill toggle for when a janitor decides to mop with something other than water.
/// Amount of reagent to refill per second
var/refill_rate = 0.5
diff --git a/code/game/objects/items/paint.dm b/code/game/objects/items/paint.dm
index 7d5cc7eabe8..7921088a520 100644
--- a/code/game/objects/items/paint.dm
+++ b/code/game/objects/items/paint.dm
@@ -131,6 +131,7 @@
name = "paint remover"
desc = "Used to remove color from anything."
icon_state = "paint_neutral"
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/paint/paint_remover/interact_with_atom(atom/interacting_with, mob/living/user, list/modifiers)
if(!isturf(interacting_with) || !isobj(interacting_with))
diff --git a/code/game/objects/items/pillow.dm b/code/game/objects/items/pillow.dm
index 3eb167e25d6..789c5c1fbb6 100644
--- a/code/game/objects/items/pillow.dm
+++ b/code/game/objects/items/pillow.dm
@@ -174,6 +174,7 @@
worn_icon = 'icons/mob/clothing/suits/pillow.dmi'
icon_state = "pillow_suit"
armor_type = /datum/armor/suit_pillow_suit
+ custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT)
var/obj/item/pillow/unstoppably_plushed
/datum/armor/suit_pillow_suit
@@ -199,6 +200,7 @@
body_parts_covered = HEAD
flags_inv = HIDEHAIR|HIDEEARS
armor_type = /datum/armor/head_pillow_hood
+ custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT)
/datum/armor/head_pillow_hood
melee = 5
diff --git a/code/game/objects/items/pinpointer.dm b/code/game/objects/items/pinpointer.dm
index db79f9388df..526668d18a0 100644
--- a/code/game/objects/items/pinpointer.dm
+++ b/code/game/objects/items/pinpointer.dm
@@ -111,6 +111,7 @@
worn_icon_state = "pinpointer_crew"
custom_price = PAYCHECK_CREW * 6
custom_premium_price = PAYCHECK_CREW * 6
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT)
/// The mob that the pinpointer is owned by.
var/pinpointer_owner = null
/// Do we find people even if their suit sensors are turned off
diff --git a/code/game/objects/items/rcd/RCD.dm b/code/game/objects/items/rcd/RCD.dm
index 1e531a2ddcc..25392395677 100644
--- a/code/game/objects/items/rcd/RCD.dm
+++ b/code/game/objects/items/rcd/RCD.dm
@@ -20,6 +20,7 @@
drop_sound = 'sound/items/handling/tools/rcd_drop.ogg'
pickup_sound = 'sound/items/handling/tools/rcd_pickup.ogg'
sound_vary = TRUE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 3)
/// main category of currently selected design[Structures, Airlocks, Airlock Access]
var/root_category
@@ -43,7 +44,7 @@
/// variable for R walls to deconstruct them
var/canRturf = FALSE
/// integrated airlock electronics for setting access to a newly built airlocks
- var/obj/item/electronics/airlock/airlock_electronics
+ var/obj/item/electronics/airlock/rcd/airlock_electronics
COOLDOWN_DECLARE(destructive_scan_cooldown)
@@ -54,6 +55,10 @@
name = "hologram"
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
+/obj/item/electronics/airlock/rcd
+ item_flags = parent_type::item_flags | ABSTRACT
+ custom_materials = null
+
/obj/effect/rcd_hologram/Initialize(mapload)
. = ..()
QDEL_IN(src, RCD_HOLOGRAM_FADE_TIME)
@@ -568,8 +573,9 @@
ranged = TRUE
has_ammobar = FALSE
resistance_flags = FIRE_PROOF | INDESTRUCTIBLE // should NOT be destroyed unless the equipment is destroyed
- item_flags = NO_MAT_REDEMPTION | NOBLUDGEON | DROPDEL // already qdeleted in the equipment's Destroy() but you can never be too sure
+ item_flags = NOBLUDGEON | DROPDEL // already qdeleted in the equipment's Destroy() but you can never be too sure
delay_mod = 0.5
+ custom_materials = null
/obj/item/construction/rcd/exosuit/ui_status(mob/user, datum/ui_state/state)
if(ismecha(owner))
@@ -639,9 +645,9 @@
w_class = WEIGHT_CLASS_TINY
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
- custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT *6, /datum/material/glass=SHEET_MATERIAL_AMOUNT*4)
+ custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT * 6, /datum/material/glass=SHEET_MATERIAL_AMOUNT*3)
var/ammoamt = 40
/obj/item/rcd_ammo/large
- custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*24, /datum/material/glass=SHEET_MATERIAL_AMOUNT*16)
+ custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*24, /datum/material/glass=SHEET_MATERIAL_AMOUNT*12)
ammoamt = 160
diff --git a/code/game/objects/items/rcd/RDD.dm b/code/game/objects/items/rcd/RDD.dm
index b3b65931fe1..65d4083d670 100644
--- a/code/game/objects/items/rcd/RDD.dm
+++ b/code/game/objects/items/rcd/RDD.dm
@@ -1,7 +1,7 @@
//RAPID DECORATION DEVICE
/// Multiplier applied to cost when using RDD — each decoration costs this many matter units
-#define RDD_COST_MULTIPLIER 2
+#define RDD_COST_MULTIPLIER 1
/// All decoration designs available in the RDD
GLOBAL_LIST_INIT(rdd_designs, list(
@@ -162,7 +162,7 @@ GLOBAL_LIST_INIT(rdd_designs, list(
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
custom_premium_price = PAYCHECK_COMMAND * 1
- max_matter = 200
+ max_matter = 60
slot_flags = ITEM_SLOT_BELT
item_flags = NO_MAT_REDEMPTION | NOBLUDGEON
has_ammobar = TRUE
@@ -171,6 +171,7 @@ GLOBAL_LIST_INIT(rdd_designs, list(
drop_sound = 'sound/items/handling/tools/rcd_drop.ogg'
pickup_sound = 'sound/items/handling/tools/rcd_pickup.ogg'
sound_vary = TRUE
+ custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 4, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.5)
/// Currently selected decoration path
var/obj/structure/decoration/selected_decoration
@@ -311,8 +312,9 @@ GLOBAL_LIST_INIT(rdd_designs, list(
/obj/item/construction/rdd/borg
desc = "A device used to rapidly deploy plastic decorative flora. Uses the cyborg's internal cell."
+ custom_materials = null
/// energy usage per decoration
- var/energyfactor = 0.05 * STANDARD_CELL_CHARGE
+ var/energyfactor = 0.1 * STANDARD_CELL_CHARGE
/obj/item/construction/rdd/borg/get_matter(mob/user)
if(!iscyborg(user))
@@ -339,6 +341,6 @@ GLOBAL_LIST_INIT(rdd_designs, list(
return TRUE
/obj/item/construction/rdd/loaded
- matter = 200
+ matter = /obj/item/construction/rdd::max_matter
#undef RDD_COST_MULTIPLIER
diff --git a/code/game/objects/items/rcd/RHD.dm b/code/game/objects/items/rcd/RHD.dm
index 93663639a9c..6022fe83e59 100644
--- a/code/game/objects/items/rcd/RHD.dm
+++ b/code/game/objects/items/rcd/RHD.dm
@@ -299,6 +299,7 @@
desc = "It seems to be empty."
icon = 'icons/obj/devices/floppy_disks.dmi'
icon_state = "datadisk3"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/titanium = SHEET_MATERIAL_AMOUNT, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75)
var/upgrade
/obj/item/rcd_upgrade/frames
@@ -324,18 +325,21 @@
desc = "It contains the upgrades necessary to allow more frequent use of the RCD."
icon_state = "datadisk7"
upgrade = RCD_UPGRADE_NO_FREQUENT_USE_COOLDOWN
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/rcd_upgrade/silo_link
name = "RCD advanced upgrade: silo link"
desc = "It contains direct silo connection RCD upgrade."
icon_state = "datadisk8"
upgrade = RCD_UPGRADE_SILO_LINK
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT * 1.25)
/obj/item/rcd_upgrade/furnishing
name = "RCD advanced upgrade: furnishings"
desc = "It contains the design for chairs, stools, tables, and glass tables."
icon_state = "datadisk5"
upgrade = RCD_UPGRADE_FURNISHING
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/titanium = SHEET_MATERIAL_AMOUNT, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75)
/datum/action/item_action/rcd_scan
name = "Destruction Scan"
diff --git a/code/game/objects/items/rcd/RLD.dm b/code/game/objects/items/rcd/RLD.dm
index 5e3cf374c1c..154a33c4cd1 100644
--- a/code/game/objects/items/rcd/RLD.dm
+++ b/code/game/objects/items/rcd/RLD.dm
@@ -225,6 +225,7 @@
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
matter = 100
max_matter = 100
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 4, /datum/material/gold = SHEET_MATERIAL_AMOUNT)
#undef LIGHT_TUBE_COST
#undef FLOOR_LIGHT_COST
diff --git a/code/game/objects/items/rcd/RPD.dm b/code/game/objects/items/rcd/RPD.dm
index 9cbe5a9bd3e..2663ce0c97a 100644
--- a/code/game/objects/items/rcd/RPD.dm
+++ b/code/game/objects/items/rcd/RPD.dm
@@ -607,6 +607,7 @@
desc = "Adds reverse wrench mode to the RPD. Attention, due to budget cuts, the mode is hard linked to the destroy mode control button."
icon_state = "datadisk1"
upgrade_flags = RPD_UPGRADE_UNWRENCH
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25)
#undef ATMOS_CATEGORY
#undef DISPOSALS_CATEGORY
diff --git a/code/game/objects/items/rcd/RPLD.dm b/code/game/objects/items/rcd/RPLD.dm
index 46c39e53619..80bacbfe087 100644
--- a/code/game/objects/items/rcd/RPLD.dm
+++ b/code/game/objects/items/rcd/RPLD.dm
@@ -15,6 +15,7 @@
drop_sound = 'sound/items/handling/tools/rcd_drop.ogg'
pickup_sound = 'sound/items/handling/tools/rcd_pickup.ogg'
sound_vary = TRUE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 38, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 18, /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT)
///category of design selected
var/selected_category
@@ -298,6 +299,7 @@
icon_state = "plumberer_service"
///Extra price because it appears in bartender's vendor
custom_premium_price = PAYCHECK_CREW * 6
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 37.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 18.75, /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT)
///Design types for plumbing service constructor
var/static/list/service_design_types = list(
//Category 1 synthesizers
diff --git a/code/game/objects/items/rcd/RTD.dm b/code/game/objects/items/rcd/RTD.dm
index b552fc33d4e..ce04a4f2663 100644
--- a/code/game/objects/items/rcd/RTD.dm
+++ b/code/game/objects/items/rcd/RTD.dm
@@ -27,6 +27,7 @@
drop_sound = 'sound/items/handling/tools/rcd_drop.ogg'
pickup_sound = 'sound/items/handling/tools/rcd_pickup.ogg'
sound_vary = TRUE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 15, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25)
/// main category for tile design
var/root_category = "Conventional"
diff --git a/code/game/objects/items/rcd/RWD.dm b/code/game/objects/items/rcd/RWD.dm
index 0204e12ae2f..86553acb0db 100644
--- a/code/game/objects/items/rcd/RWD.dm
+++ b/code/game/objects/items/rcd/RWD.dm
@@ -1,3 +1,6 @@
+//This represents the amount of materials (both iron and glass that the max_amount of cable would amount to
+#define MAX_CABLE_AMOUNT (SMALL_MATERIAL_AMOUNT * 0.1 * /obj/item/rwd/loaded::max_amount)
+
/obj/item/rwd
name = "rapid wiring device"
desc = "A device used to rapidly lay cable & pick up stray cable pieces laying around."
@@ -12,6 +15,7 @@
w_class = WEIGHT_CLASS_NORMAL
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5 - MAX_CABLE_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5 - MAX_CABLE_AMOUNT)
/// maximum amount of cable this device can hold
var/max_amount = 210
@@ -28,6 +32,8 @@
/// radial menu to select cable layer
var/list/radial_menu = null
+#undef MAX_CABLE_AMOUNT
+
/obj/item/rwd/Initialize(mapload)
. = ..()
AddComponent(/datum/component/two_handed, wield_callback = CALLBACK(src, PROC_REF(on_wield)), unwield_callback = CALLBACK(src, PROC_REF(on_unwield)))
diff --git a/code/game/objects/items/robot/ai_upgrades.dm b/code/game/objects/items/robot/ai_upgrades.dm
index 80e97acab18..34458f6f646 100644
--- a/code/game/objects/items/robot/ai_upgrades.dm
+++ b/code/game/objects/items/robot/ai_upgrades.dm
@@ -75,6 +75,7 @@
name = "surveillance software upgrade"
desc = "An illegal software package that will allow an artificial intelligence to 'hear' from its cameras via lip reading and hidden microphones."
to_gift = /datum/ai_module/malf/upgrade/eavesdrop
+ custom_materials = list(/datum/material/diamond = SHEET_MATERIAL_AMOUNT * 10, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 5, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/item/aiupgrade/surveillance_upgrade/Initialize(mapload)
. = ..()
@@ -85,3 +86,4 @@
name = "power transfer upgrade"
desc = "A legal upgrade that allows an artificial intelligence to directly provide power to APCs from a distance"
to_gift = /datum/ai_module/power_apc
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5)
diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm
index dd3fe6a3073..eb183f1e8d4 100644
--- a/code/game/objects/items/robot/robot_parts.dm
+++ b/code/game/objects/items/robot/robot_parts.dm
@@ -1,5 +1,3 @@
-
-
//The robot bodyparts have been moved to code/module/surgery/bodyparts/robot_bodyparts.dm
/obj/item/robot_suit
@@ -7,6 +5,7 @@
desc = "A complex metal backbone with standard limb sockets and pseudomuscle anchors."
icon = 'icons/mob/augmentation/augments.dmi'
icon_state = "robo_suit"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5)
/// Left arm part of the endoskeleton
var/obj/item/bodypart/arm/left/robot/l_arm = null
/// Right arm part of the endoskeleton
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index efebac762bc..dcd503e0238 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -75,8 +75,9 @@
desc = "Used to rename a cyborg."
icon = 'icons/obj/devices/circuitry_n_data.dmi'
icon_state = "cyborg_upgrade1"
- var/heldname = ""
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5)
one_use = TRUE
+ var/heldname = ""
/obj/item/borg/upgrade/rename/attack_self(mob/user)
var/new_heldname = sanitize_name(tgui_input_text(user, "Enter new robot name", "Cyborg Reclassification", heldname, MAX_NAME_LEN), allow_numbers = TRUE)
@@ -106,6 +107,7 @@
model_flags = BORG_MODEL_SECURITY
// We handle this in a custom way
allow_duplicates = TRUE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 3, /datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = SHEET_MATERIAL_AMOUNT)
/obj/item/borg/upgrade/disablercooler/action(mob/living/silicon/robot/borg, mob/living/user = usr)
. = ..()
@@ -136,6 +138,7 @@
name = "ion thruster upgrade"
desc = "An energy-operated thruster system for cyborgs."
icon_state = "module_general"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 3, /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 3, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/item/borg/upgrade/thrusters/action(mob/living/silicon/robot/borg, mob/living/user = usr)
. = ..()
@@ -161,6 +164,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/miner)
model_flags = BORG_MODEL_MINER
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 3, /datum/material/diamond = SHEET_MATERIAL_AMOUNT)
items_to_add = list(/obj/item/pickaxe/drill/diamonddrill)
items_to_remove = list(/obj/item/pickaxe/drill, /obj/item/shovel)
@@ -172,6 +176,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/miner)
model_flags = BORG_MODEL_MINER
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 5)
items_to_add = list(/obj/item/storage/bag/ore/holding)
items_to_remove = list(/obj/item/storage/bag/ore/cyborg)
@@ -183,6 +188,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/janitor)
model_flags = BORG_MODEL_JANITOR
+ custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 5)
items_to_add = list(/obj/item/storage/bag/trash/bluespace/cyborg)
items_to_remove = list(/obj/item/storage/bag/trash)
@@ -194,6 +200,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/janitor)
model_flags = BORG_MODEL_JANITOR
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT)
items_to_add = list(/obj/item/mop/advanced)
items_to_remove = list(/obj/item/mop)
@@ -205,6 +212,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/janitor)
model_flags = BORG_MODEL_JANITOR
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.1, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3.7)
items_to_add = list(/obj/item/cautery/prt)
@@ -215,6 +223,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/janitor)
model_flags = BORG_MODEL_JANITOR
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.1, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3.7)
items_to_add = list(/obj/item/plunger)
@@ -225,6 +234,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/janitor)
model_flags = BORG_MODEL_JANITOR
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.1, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 7.5)
items_to_add = list (/obj/item/lightreplacer/advanced)
items_to_remove = list(/obj/item/lightreplacer)
@@ -234,6 +244,7 @@
desc = "Unlocks the hidden, deadlier functions of a cyborg."
icon_state = "module_illegal"
require_model = TRUE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 5)
/obj/item/borg/upgrade/syndicate/Initialize(mapload)
. = ..()
@@ -266,6 +277,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/miner)
model_flags = BORG_MODEL_MINER
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2)
/obj/item/borg/upgrade/lavaproof/action(mob/living/silicon/robot/borg, mob/living/user = usr)
. = ..()
@@ -284,6 +296,7 @@
desc = "This module will repair the cyborg over time."
icon_state = "module_general"
require_model = TRUE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 7.5)
var/repair_amount = -1
/// world.time of next repair
var/next_repair = 0
@@ -406,12 +419,14 @@
name = "medical cyborg expanded hypospray"
desc = "An upgrade to the Medical model's hypospray, allowing it \
to treat a wider range of conditions and problems."
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 4, /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 4)
/obj/item/borg/upgrade/piercing_hypospray
name = "cyborg piercing hypospray"
desc = "An upgrade to a cyborg's hypospray, allowing it to \
pierce armor and thick material."
icon_state = "module_medical"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 1.5)
/obj/item/borg/upgrade/piercing_hypospray/action(mob/living/silicon/robot/borg, mob/living/user = usr)
. = ..()
@@ -450,6 +465,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/medical, /obj/item/robot_model/syndicate_medical)
model_flags = BORG_MODEL_MEDICAL
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2)
items_to_add = list(/obj/item/healthanalyzer/advanced)
items_to_remove = list(/obj/item/healthanalyzer)
@@ -478,6 +494,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/engineering, /obj/item/robot_model/saboteur)
model_flags = BORG_MODEL_ENGINEERING
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 2)
/obj/item/borg/upgrade/engineering_omnitool/action(mob/living/silicon/robot/cyborg, mob/living/user = usr)
. = ..()
@@ -505,6 +522,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/medical)
model_flags = BORG_MODEL_MEDICAL
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 1.5)
items_to_add = list(/obj/item/shockpaddles/cyborg)
@@ -554,6 +572,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/medical, /obj/item/robot_model/syndicate_medical)
model_flags = BORG_MODEL_MEDICAL
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2)
items_to_add = list(/obj/item/surgical_processor)
@@ -562,6 +581,7 @@
desc = "Bluespace Optimized Remote Intelligence Synchronization. An uplink device which takes the place of an MMI in cyborg endoskeletons, creating a robotic shell controlled by an AI."
icon = 'icons/obj/devices/circuitry_n_data.dmi'
icon_state = "boris"
+ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 7.5, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 6, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2)
/obj/item/borg/upgrade/ai/action(mob/living/silicon/robot/borg, mob/living/user = usr)
. = ..()
@@ -585,6 +605,7 @@
name = "borg expander"
desc = "A cyborg resizer, it makes a cyborg huge."
icon_state = "module_general"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 100, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/item/borg/upgrade/expand/action(mob/living/silicon/robot/borg, mob/living/user = usr)
. = ..()
@@ -632,6 +653,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/engineering, /obj/item/robot_model/saboteur)
model_flags = BORG_MODEL_ENGINEERING
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 1.25)
items_to_add = list(/obj/item/storage/part_replacer/cyborg)
@@ -664,6 +686,7 @@
model_type = list(/obj/item/robot_model/engineering, /obj/item/robot_model/saboteur)
model_flags = BORG_MODEL_ENGINEERING
items_to_add = list(/obj/item/inducer/cyborg)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2)
/obj/item/borg/upgrade/pinpointer
name = "medical cyborg crew pinpointer"
@@ -672,6 +695,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/medical, /obj/item/robot_model/syndicate_medical)
model_flags = BORG_MODEL_MEDICAL
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
items_to_add = list(/obj/item/pinpointer/crew)
var/datum/action/crew_monitor
@@ -718,6 +742,7 @@
desc = "Allows you to turn a cyborg into a clown, honk."
icon_state = "module_honk"
new_model = /obj/item/robot_model/clown
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/bananium = SMALL_MATERIAL_AMOUNT * 5)
/obj/item/borg/upgrade/engineering_app
name = "engineering manipulation apparatus"
@@ -726,6 +751,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/engineering, /obj/item/robot_model/saboteur)
model_flags = BORG_MODEL_ENGINEERING
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 5)
items_to_add = list(/obj/item/borg/apparatus/engineering)
@@ -736,6 +762,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/medical)
model_flags = BORG_MODEL_MEDICAL
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.1, /datum/material/iron = SHEET_MATERIAL_AMOUNT)
items_to_add = list(/obj/item/borg/apparatus/beaker/extra)
@@ -746,6 +773,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/medical)
model_flags = BORG_MODEL_MEDICAL
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 5, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 5)
items_to_add = list(/obj/item/reagent_containers/syringe/bluespace)
items_to_remove = list(/obj/item/reagent_containers/syringe)
@@ -757,6 +785,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/service)
model_flags = BORG_MODEL_SERVICE
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 5)
items_to_add = list(/obj/item/borg/apparatus/beaker/drink)
@@ -767,6 +796,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/janitor)
model_flags = BORG_MODEL_JANITOR
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
items_to_add = list(/obj/item/pushbroom)
@@ -777,6 +807,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/service)
model_flags = BORG_MODEL_SERVICE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 6, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 3, /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 3)
items_to_add = list(/obj/item/reagent_containers/borghypo/condiment_synthesizer)
@@ -787,6 +818,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/service)
model_flags = BORG_MODEL_SERVICE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 5)
items_to_add = list(/obj/item/knife/kitchen/silicon)
@@ -797,6 +829,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/service)
model_flags = BORG_MODEL_SERVICE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5)
items_to_add = list(/obj/item/borg/apparatus/service)
@@ -807,6 +840,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/service)
model_flags = BORG_MODEL_SERVICE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 7.5)
items_to_add = list(/obj/item/rolling_table_dock)
@@ -817,6 +851,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/service)
model_flags = BORG_MODEL_SERVICE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 5)
items_to_add = list(/obj/item/borg/cookbook)
@@ -827,6 +862,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/service)
model_flags = BORG_MODEL_SERVICE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 13, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2)
items_to_add = list(/obj/item/storage/bag/plants/cyborg, /obj/item/borg/cyborg_omnitool/botany, /obj/item/plant_analyzer)
@@ -837,6 +873,7 @@
require_model = TRUE
model_type = list(/obj/item/robot_model/engineering, /obj/item/robot_model/saboteur)
model_flags = BORG_MODEL_ENGINEERING
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5)
items_to_add = list(/obj/item/shuttle_blueprints/borg)
@@ -849,6 +886,7 @@
w_class = WEIGHT_CLASS_SMALL
icon = 'icons/obj/devices/circuitry_n_data.dmi'
icon_state = "cyborg_upgrade1"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/item/borg_restart_board/pre_attack(mob/living/silicon/robot/borgo, mob/living/user, list/modifiers, list/attack_modifiers)
if(!istype(borgo))
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 29851abbfa8..d7162b5665a 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -889,7 +889,7 @@ GLOBAL_LIST_INIT(plastic_recipes, list(
new /datum/stack_recipe("large water bottle", /obj/item/reagent_containers/cup/glass/waterbottle/large/empty, 3, crafting_flags = NONE, category = CAT_CONTAINERS), \
new /datum/stack_recipe("colo cups", /obj/item/reagent_containers/cup/glass/colocup, 1, crafting_flags = NONE, category = CAT_CONTAINERS, removed_mats = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT)), \
new /datum/stack_recipe("mannequin", /obj/structure/mannequin/plastic, 25, time = 5 SECONDS, crafting_flags = CRAFT_ONE_PER_TURF, category = CAT_ENTERTAINMENT), \
- new /datum/stack_recipe("wet floor sign", /obj/item/clothing/suit/caution, 2, crafting_flags = NONE, category = CAT_EQUIPMENT), \
+ new /datum/stack_recipe("wet floor sign", /obj/item/clothing/suit/caution, 2, crafting_flags = CRAFT_SKIP_MATERIALS_PARITY, category = CAT_EQUIPMENT), \
new /datum/stack_recipe("warning cone", /obj/item/clothing/head/cone, 2, crafting_flags = NONE, category = CAT_EQUIPMENT), \
new /datum/stack_recipe("blank wall sign", /obj/item/sign, 1, crafting_flags = NONE, category = CAT_FURNITURE), \
new /datum/stack_recipe("liquid cooler jug", /obj/item/reagent_containers/cooler_jug, 4, time = 5 SECONDS, crafting_flags = NONE, category = CAT_CONTAINERS), \
diff --git a/code/game/objects/items/stacks/tape.dm b/code/game/objects/items/stacks/tape.dm
index 8c8e3f7ebdb..59bd6be3445 100644
--- a/code/game/objects/items/stacks/tape.dm
+++ b/code/game/objects/items/stacks/tape.dm
@@ -18,6 +18,7 @@
apply_verb = "taping"
heal_begin_sound = 'sound/items/duct_tape/duct_tape_rip.ogg'
heal_end_sound = 'sound/items/duct_tape/duct_tape_rip.ogg'
+ mats_per_unit = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT)
/// Prefix applied to the target when wrapped with this tape.
var/prefix = "sticky"
@@ -101,6 +102,7 @@
merge_type = /obj/item/stack/medical/wrap/sticky_tape/super
greyscale_colors = "#4D4D4D#75433F"
tape_gag = /obj/item/clothing/mask/muzzle/tape/super
+ mats_per_unit = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT * 3)
/datum/embedding/sticky_tape/super
embed_chance = 100
@@ -119,6 +121,7 @@
greyscale_config = /datum/greyscale_config/tape/spikes
greyscale_colors = "#E64539#808080#AD2F45"
tape_gag = /obj/item/clothing/mask/muzzle/tape/pointy
+ mats_per_unit = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/plastic = SMALL_MATERIAL_AMOUNT)
/datum/embedding/pointy_tape
ignore_throwspeed_threshold = TRUE
@@ -132,6 +135,7 @@
merge_type = /obj/item/stack/medical/wrap/sticky_tape/pointy/super
greyscale_colors = "#8C0A00#4F4F4F#300008"
tape_gag = /obj/item/clothing/mask/muzzle/tape/pointy/super
+ mats_per_unit = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2)
/datum/embedding/pointy_tape/super
embed_chance = 100
diff --git a/code/game/objects/items/stacks/wrap.dm b/code/game/objects/items/stacks/wrap.dm
index 47f58f11030..6869f635955 100644
--- a/code/game/objects/items/stacks/wrap.dm
+++ b/code/game/objects/items/stacks/wrap.dm
@@ -94,6 +94,7 @@
max_amount = 25
resistance_flags = FLAMMABLE
merge_type = /obj/item/stack/package_wrap
+ mats_per_unit = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.1, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.1)
/obj/item/stack/package_wrap/grind_results()
return list(/datum/reagent/cellulose = 5)
diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm
index e75a81dcee2..c507d7ff14f 100644
--- a/code/game/objects/items/storage/backpack.dm
+++ b/code/game/objects/items/storage/backpack.dm
@@ -48,6 +48,7 @@
w_class = WEIGHT_CLASS_BULKY
resistance_flags = FIRE_PROOF
item_flags = NO_MAT_REDEMPTION
+ custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 2.5)
/obj/item/bag_of_holding_inert/Initialize(mapload)
. = ..()
@@ -65,6 +66,7 @@
storage_type = /datum/storage/bag_of_holding
pickup_sound = null
drop_sound = null
+ custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 7.5, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 2.5)
/datum/armor/backpack_holding
fire = 60
diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm
index ce94e36099a..9aac3935db3 100644
--- a/code/game/objects/items/storage/bags.dm
+++ b/code/game/objects/items/storage/bags.dm
@@ -34,6 +34,7 @@
lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi'
storage_type = /datum/storage/bag/trash
+ custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT)
///If true, can be inserted into the janitor cart
var/insertable = TRUE
@@ -88,6 +89,7 @@
inhand_icon_state = "bluetrashbag"
item_flags = NO_MAT_REDEMPTION
storage_type = /datum/storage/bag/trash/bluespace
+ custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 2.5)
/obj/item/storage/bag/trash/bluespace/cyborg
insertable = FALSE
@@ -243,6 +245,7 @@
desc = "A revolution in convenience, this satchel allows for huge amounts of ore storage. It's been outfitted with anti-malfunction safety measures."
icon_state = "satchel_bspace"
storage_type = /datum/storage/bag/ore/holding
+ custom_materials = list(/datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2.5)
/obj/item/storage/bag/plants
name = "plant bag"
@@ -256,6 +259,7 @@
name = "portable seed extractor"
desc = "For the enterprising botanist on the go. Less efficient than the stationary model, it creates one seed per plant."
icon_state = "portaseeder"
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4)
/obj/item/storage/bag/plants/portaseeder/Initialize(mapload)
. = ..()
@@ -516,8 +520,8 @@
slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_SUITSTORE|ITEM_SLOT_NECK
resistance_flags = FLAMMABLE
storage_type = /datum/storage/bag/rebar_quiver
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.15, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.5)
actions_types = list(/datum/action/item_action/reload_rebar)
- custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 6.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.5)
/obj/item/storage/bag/rebar_quiver/Initialize(mapload)
diff --git a/code/game/objects/items/storage/pillbottles.dm b/code/game/objects/items/storage/pillbottles.dm
index e1398988841..27887ca479d 100644
--- a/code/game/objects/items/storage/pillbottles.dm
+++ b/code/game/objects/items/storage/pillbottles.dm
@@ -15,6 +15,7 @@
pickup_sound = 'sound/items/handling/pill_bottle_pickup.ogg'
drop_sound = 'sound/items/handling/pill_bottle_place.ogg'
storage_type = /datum/storage/pillbottle
+ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 0.2)
///Number of pills to spawn
VAR_PROTECTED/spawn_count
diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm
index 74557295dac..b8ee955aefa 100644
--- a/code/game/objects/items/tanks/jetpack.dm
+++ b/code/game/objects/items/tanks/jetpack.dm
@@ -184,7 +184,7 @@
gas_type = null //it starts empty
full_speed = FALSE
drift_force = 1 NEWTONS
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4.4, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.8, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3)
/obj/item/tank/jetpack/improvised/allow_thrust(num)
if(!ismob(loc))
diff --git a/code/game/objects/items/tanks/tank_types.dm b/code/game/objects/items/tanks/tank_types.dm
index 9bc4796162b..a1f15cc681e 100644
--- a/code/game/objects/items/tanks/tank_types.dm
+++ b/code/game/objects/items/tanks/tank_types.dm
@@ -150,6 +150,7 @@
force = 5
volume = 6 //same size as the engineering ones but plasmamen have special lungs that consume less plasma per breath
w_class = WEIGHT_CLASS_SMALL //thanks i forgot this
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.8)
/obj/item/tank/internals/plasmaman/belt/full/populate_gas()
air_contents.set_gas(/datum/gas/plasma, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
@@ -176,7 +177,7 @@
force = 4
distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE
volume = 3 //Tiny. Real life equivalents only have 21 breaths of oxygen in them. They're EMERGENCY tanks anyway -errorage (dangercon 2011)
-
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/tank/internals/emergency_oxygen/populate_gas()
air_contents.set_gas(/datum/gas/oxygen, (10*ONE_ATMOSPHERE)*volume/(R_IDEAL_GAS_EQUATION*T20C))
@@ -193,6 +194,7 @@
tank_holder_icon_state = "holder_emergency_engi"
worn_icon = null
volume = 6 // should last 24 minutes if full
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.75)
/obj/item/tank/internals/emergency_oxygen/engi/empty/populate_gas()
return
@@ -203,6 +205,7 @@
worn_icon_state = "emergency_engi"
tank_holder_icon_state = "holder_emergency_engi"
volume = 12 //If it's double of the above, shouldn't it be double the volume??
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT)
/obj/item/tank/internals/emergency_oxygen/double/empty/populate_gas()
return
@@ -219,6 +222,7 @@
distribute_pressure = TANK_DEFAULT_RELEASE_PRESSURE
force = 10
dog_fashion = /datum/dog_fashion/back
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/tank/internals/generic/populate_gas()
return
diff --git a/code/game/objects/items/tanks/tanks.dm b/code/game/objects/items/tanks/tanks.dm
index 78d6983292c..80d68c1beb5 100644
--- a/code/game/objects/items/tanks/tanks.dm
+++ b/code/game/objects/items/tanks/tanks.dm
@@ -32,7 +32,7 @@
throw_speed = 1
throw_range = 4
demolition_mod = 1.25
- custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*5)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT)
actions_types = list(/datum/action/item_action/set_internals)
action_slots = ALL
armor_type = /datum/armor/item_tank
diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm
index 5b1d94e6b9e..89970927cd5 100644
--- a/code/game/objects/items/tanks/watertank.dm
+++ b/code/game/objects/items/tanks/watertank.dm
@@ -234,6 +234,7 @@ GAME_VERB(/obj/item/watertank, toggle_mister_verb, "Toggle Mister", null)
w_class = WEIGHT_CLASS_HUGE
item_flags = ABSTRACT // don't put in storage
chem = null //holds no chems of its own, it takes from the tank.
+ custom_materials = null
var/obj/item/tank
var/nozzle_mode = 0
var/metal_synthesis_cooldown = 0
diff --git a/code/game/objects/items/teleportation.dm b/code/game/objects/items/teleportation.dm
index b42a79c156c..931e7c6a66a 100644
--- a/code/game/objects/items/teleportation.dm
+++ b/code/game/objects/items/teleportation.dm
@@ -23,7 +23,7 @@
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
throw_speed = 3
throw_range = 7
- custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 4)
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
var/tracking_range = 35
/obj/item/locator/ui_interact(mob/user, datum/tgui/ui)
diff --git a/code/game/objects/items/tools/engineering/crowbar.dm b/code/game/objects/items/tools/engineering/crowbar.dm
index bd7ccaca3aa..3a5da9d0136 100644
--- a/code/game/objects/items/tools/engineering/crowbar.dm
+++ b/code/game/objects/items/tools/engineering/crowbar.dm
@@ -302,8 +302,8 @@
)
custom_materials = list(
/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4.75,
- /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2.50,
/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 1.75,
+ /datum/material/silver = SHEET_MATERIAL_AMOUNT * 1.25,
/datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25,
)
radio_alert = TRUE
diff --git a/code/game/objects/items/tools/engineering/weldingtool.dm b/code/game/objects/items/tools/engineering/weldingtool.dm
index 35cdccdce8b..afb4ae2b225 100644
--- a/code/game/objects/items/tools/engineering/weldingtool.dm
+++ b/code/game/objects/items/tools/engineering/weldingtool.dm
@@ -30,7 +30,7 @@
toolspeed = 1
wound_bonus = 10
exposed_wound_bonus = 15
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.7, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.3)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.7, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.2)
/// Whether the welding tool is on or off.
var/welding = FALSE
/// Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower)
@@ -344,7 +344,7 @@
icon_state = "indwelder"
inhand_icon_state = "indwelder"
max_fuel = 40
- custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*0.6)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.7, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.6)
/obj/item/weldingtool/largetank/flamethrower_screwdriver()
return
diff --git a/code/game/objects/items/tools/engineering/wirebrush.dm b/code/game/objects/items/tools/engineering/wirebrush.dm
index 830470e68a5..f60c0b8119c 100644
--- a/code/game/objects/items/tools/engineering/wirebrush.dm
+++ b/code/game/objects/items/tools/engineering/wirebrush.dm
@@ -9,3 +9,4 @@
icon_state = "wirebrush"
tool_behaviour = TOOL_RUSTSCRAPER
toolspeed = 1
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
diff --git a/code/game/objects/items/tools/engineering/wrench.dm b/code/game/objects/items/tools/engineering/wrench.dm
index 25f7e75593f..908557f9198 100644
--- a/code/game/objects/items/tools/engineering/wrench.dm
+++ b/code/game/objects/items/tools/engineering/wrench.dm
@@ -138,3 +138,4 @@
inhand_icon_state = "bolter_wrench"
icon_angle = -90
w_class = WEIGHT_CLASS_NORMAL
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT)
diff --git a/code/game/objects/items/tools/extinguisher.dm b/code/game/objects/items/tools/extinguisher.dm
index 689d064c031..386134fb3f1 100644
--- a/code/game/objects/items/tools/extinguisher.dm
+++ b/code/game/objects/items/tools/extinguisher.dm
@@ -16,7 +16,7 @@
throw_range = 7
force = 13
demolition_mod = 1.25
- custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.9)
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
attack_verb_continuous = list("slams", "whacks", "bashes", "thunks", "batters", "bludgeons", "thrashes")
attack_verb_simple = list("slam", "whack", "bash", "thunk", "batter", "bludgeon", "thrash")
dog_fashion = /datum/dog_fashion/back
@@ -168,6 +168,7 @@
dog_fashion = null
cooling_power = 1.5
power = 3
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT)
/obj/item/extinguisher/crafted/attack_self(mob/user)
safety = !safety
@@ -207,6 +208,7 @@
)
sprite_name = "foam_extinguisher"
precision = TRUE
+ custom_materials = list(/datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/extinguisher/advanced/empty
starting_water = FALSE
diff --git a/code/game/objects/items/tools/inducer.dm b/code/game/objects/items/tools/inducer.dm
index 27ea7e73bfb..03e5ce7da31 100644
--- a/code/game/objects/items/tools/inducer.dm
+++ b/code/game/objects/items/tools/inducer.dm
@@ -7,6 +7,7 @@
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
force = 7
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/// Multiplier that determines the speed at which this inducer works at.
var/power_transfer_multiplier = 1
diff --git a/code/game/objects/items/tools/janitorial/broom.dm b/code/game/objects/items/tools/janitorial/broom.dm
index e34e0044b08..16738ff7041 100644
--- a/code/game/objects/items/tools/janitorial/broom.dm
+++ b/code/game/objects/items/tools/janitorial/broom.dm
@@ -18,6 +18,7 @@
attack_verb_continuous = list("sweeps", "brushes off", "bludgeons", "whacks")
attack_verb_simple = list("sweep", "brush off", "bludgeon", "whack")
resistance_flags = FLAMMABLE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT)
/obj/item/pushbroom/Initialize(mapload)
. = ..()
diff --git a/code/game/objects/items/tools/medical/bodybag.dm b/code/game/objects/items/tools/medical/bodybag.dm
index 9ca7d370ab9..fedbbc16d7e 100644
--- a/code/game/objects/items/tools/medical/bodybag.dm
+++ b/code/game/objects/items/tools/medical/bodybag.dm
@@ -59,6 +59,7 @@
unfoldedbag_path = /obj/structure/closet/body_bag/bluespace
w_class = WEIGHT_CLASS_SMALL
item_flags = NO_MAT_REDEMPTION
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/bodybag/bluespace/examine(mob/user)
. = ..()
@@ -145,6 +146,7 @@
icon = 'icons/obj/medical/bodybag.dmi'
icon_state = "stasis_bag_folded"
unfoldedbag_path = /obj/structure/closet/body_bag/environmental/stasis
+ custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 10, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/bodybag/stasis/deploy_bodybag(mob/user, atom/location)
var/obj/structure/closet/body_bag/environmental/stasis/bag = ..()
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 8cc5d16adf6..29baf111f1c 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -53,6 +53,7 @@
icon = 'icons/obj/toys/balloons.dmi'
icon_state = "balloon_red-e"
inhand_icon_state = "balloon-empty"
+ custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/toy/waterballoon/Initialize(mapload)
. = ..()
@@ -142,6 +143,7 @@
throw_speed = 3
throw_range = 7
force = 0
+ custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 0.6)
var/random_color = TRUE
/// the string describing the name of balloon's current colour.
var/current_color
@@ -512,7 +514,7 @@
obj_flags = CONDUCTS_ELECTRICITY
slot_flags = ITEM_SLOT_BELT
w_class = WEIGHT_CLASS_NORMAL
- custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.1, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 0.1)
+ custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT)
attack_verb_continuous = list("strikes", "pistol whips", "hits", "bashes")
attack_verb_simple = list("strike", "pistol whip", "hit", "bash")
var/bullets = 7
@@ -568,7 +570,7 @@
icon = 'icons/obj/weapons/guns/ammo.dmi'
icon_state = "357OLD-7"
w_class = WEIGHT_CLASS_TINY
- custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 0.1, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 0.1)
+ custom_materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT * 3)
var/amount_left = 7
/obj/item/toy/ammo/gun/update_icon_state()
@@ -711,6 +713,7 @@
attack_verb_simple = list("prick", "absorb", "gore")
w_class = WEIGHT_CLASS_SMALL
resistance_flags = FLAMMABLE
+ custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT)
/obj/item/toy/windup_toolbox
name = "windup toolbox"
@@ -1862,6 +1865,7 @@ GLOBAL_LIST_EMPTY(intento_players)
force = 0
throwforce = 5
reach = 2
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5)
var/min_reach = 2
/obj/item/extendohand/acme
diff --git a/code/game/objects/items/v8_engine.dm b/code/game/objects/items/v8_engine.dm
index 5b5e934bb25..145fcf41d88 100644
--- a/code/game/objects/items/v8_engine.dm
+++ b/code/game/objects/items/v8_engine.dm
@@ -66,7 +66,7 @@
throw_speed = 1
armour_penetration = 15
hitsound = 'sound/items/car_engine_start.ogg'
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 14, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.8)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 14.1, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT, /datum/material/plastic = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.7)
/// The number of charges the house edge has accrued through 2-handed hits, to charge a more powerful charge attack.
var/fire_charges = 0
///Sound played when wielded.
diff --git a/code/game/objects/items/vending_items.dm b/code/game/objects/items/vending_items.dm
index 6d11220251a..74c27056f48 100644
--- a/code/game/objects/items/vending_items.dm
+++ b/code/game/objects/items/vending_items.dm
@@ -16,6 +16,7 @@
throw_range = 7
w_class = WEIGHT_CLASS_BULKY
armor_type = /datum/armor/item_vending_refill
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT)
///Name of the vending machine this canister is associated with
var/machine_name = "Generic"
diff --git a/code/game/objects/items/weaponry/melee/knives.dm b/code/game/objects/items/weaponry/melee/knives.dm
index c26f460871b..937081876e5 100644
--- a/code/game/objects/items/weaponry/melee/knives.dm
+++ b/code/game/objects/items/weaponry/melee/knives.dm
@@ -119,7 +119,7 @@
obj_flags = CONDUCTS_ELECTRICITY
force = 15
throwforce = 10
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 9)
attack_verb_continuous = list("slices", "dices", "chops", "cubes", "minces", "juliennes", "chiffonades", "batonnets")
attack_verb_simple = list("slice", "dice", "chop", "cube", "mince", "julienne", "chiffonade", "batonnet")
w_class = WEIGHT_CLASS_NORMAL
@@ -429,6 +429,7 @@
w_class = WEIGHT_CLASS_SMALL
resistance_flags = FIRE_PROOF
force = 0
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT)
/// Used on Initialize, how much time to cut cable restraints and zipties.
var/snap_time_weak_handcuffs = 0 SECONDS
/// Used on Initialize, how much time to cut real handcuffs. Null means it can't.
diff --git a/code/game/objects/items/weaponry/melee/misc.dm b/code/game/objects/items/weaponry/melee/misc.dm
index 35f3151987e..e012437dcde 100644
--- a/code/game/objects/items/weaponry/melee/misc.dm
+++ b/code/game/objects/items/weaponry/melee/misc.dm
@@ -109,6 +109,7 @@
force = 0
attack_verb_continuous = list("hits", "pokes")
attack_verb_simple = list("hit", "poke")
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 2.5)
/// The sausage attatched to our stick.
var/obj/item/food/sausage/held_sausage
/// Static list of things our roasting stick can interact with.
diff --git a/code/game/objects/items/weaponry/ranged/flamethrower.dm b/code/game/objects/items/weaponry/ranged/flamethrower.dm
index c8421c9fe80..ae9cb7dd809 100644
--- a/code/game/objects/items/weaponry/ranged/flamethrower.dm
+++ b/code/game/objects/items/weaponry/ranged/flamethrower.dm
@@ -12,7 +12,7 @@
throw_speed = 1
throw_range = 5
w_class = WEIGHT_CLASS_NORMAL
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.05, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.8)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.05, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.7)
resistance_flags = FIRE_PROOF
trigger_guard = TRIGGER_GUARD_NORMAL
light_system = OVERLAY_LIGHT
@@ -263,6 +263,7 @@
/obj/item/flamethrower/full
create_full = TRUE
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/flamethrower/full/tank
create_with_tank = TRUE
diff --git a/code/game/objects/items/weaponry/ranged/pneumatic_cannon.dm b/code/game/objects/items/weaponry/ranged/pneumatic_cannon.dm
index 508bb2d3f72..ce16248146d 100644
--- a/code/game/objects/items/weaponry/ranged/pneumatic_cannon.dm
+++ b/code/game/objects/items/weaponry/ranged/pneumatic_cannon.dm
@@ -24,7 +24,7 @@
lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi'
armor_type = /datum/armor/item_pneumatic_cannon
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6.05, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.8)
/// The max weight of items that can fit into the cannon
var/maxWeightClass = 20
/// The weight of items currently in the cannon
diff --git a/code/game/objects/items/weaponry/shields.dm b/code/game/objects/items/weaponry/shields.dm
index 2f8b5ab46cb..c2bc88b8748 100644
--- a/code/game/objects/items/weaponry/shields.dm
+++ b/code/game/objects/items/weaponry/shields.dm
@@ -17,6 +17,7 @@
attack_verb_simple = list("shove", "bash")
armor_type = /datum/armor/item_shield
block_sound = 'sound/items/weapons/block_shield.ogg'
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.55, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 4.8)
/// makes beam projectiles pass through the shield
var/transparent = FALSE
/// if the shield will break by sustaining damage
@@ -204,7 +205,7 @@
icon_state = "flashshield"
inhand_icon_state = "flashshield"
var/obj/item/assembly/flash/handheld/embedded_flash = /obj/item/assembly/flash/handheld
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.1, /datum/material/glass= SHEET_MATERIAL_AMOUNT * 4.35)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.55, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 4.8)
/obj/item/shield/riot/flash/Initialize(mapload)
. = ..()
@@ -393,7 +394,7 @@
icon_state = "teleriot"
inhand_icon_state = "teleriot"
worn_icon_state = "teleriot"
- custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 3.6, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT * 3.6, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2.7, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 1.8)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 3, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 2)
slot_flags = null
force = 3
throwforce = 3
@@ -481,7 +482,7 @@
desc = "A crude shield made out of several sheets of iron taped together, not very durable."
icon_state = "improvised"
inhand_icon_state = "improvised"
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2)
max_integrity = 35
shield_break_leftover = /obj/item/stack/rods/two
armor_type = /datum/armor/item_shield/improvised
diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm
index c6435e1973d..b48169d6ecb 100644
--- a/code/game/objects/structures/beds_chairs/bed.dm
+++ b/code/game/objects/structures/beds_chairs/bed.dm
@@ -128,6 +128,7 @@
elevation = 0
buckle_sound = SFX_SEATBELT_BUCKLE
unbuckle_sound = SFX_SEATBELT_UNBUCKLE
+ custom_materials = list(/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 2.7, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 1.7)
/// The item it spawns when it's folded up.
var/foldable_type
@@ -254,6 +255,7 @@
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
w_class = WEIGHT_CLASS_NORMAL // No more excuses, stop getting blood everywhere
+ custom_materials = list(/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 2.7, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 1.7)
/obj/item/emergency_bed/attackby(obj/item/item, mob/living/user, list/modifiers, list/attack_modifiers)
if(istype(item, /obj/item/emergency_bed/silicon))
diff --git a/code/game/objects/structures/cannons/cannon.dm b/code/game/objects/structures/cannons/cannon.dm
index 383e3517209..bff6a32ff69 100644
--- a/code/game/objects/structures/cannons/cannon.dm
+++ b/code/game/objects/structures/cannons/cannon.dm
@@ -117,7 +117,7 @@
icon_state = "garbagegun"
anchored = FALSE
anchorable_cannon = FALSE
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 11.15, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.5)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 11.65, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.5)
var/fires_before_deconstruction = 5
/obj/structure/cannon/trash/fire()
diff --git a/code/game/objects/structures/cannons/mounted_guns/mounted_gun.dm b/code/game/objects/structures/cannons/mounted_guns/mounted_gun.dm
index c128511fff2..09f9c06f707 100644
--- a/code/game/objects/structures/cannons/mounted_guns/mounted_gun.dm
+++ b/code/game/objects/structures/cannons/mounted_guns/mounted_gun.dm
@@ -282,11 +282,7 @@
fire_delay = 1
shot_delay = 2
firing_shakes_camera = FALSE
- custom_materials = list(
- /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.25,
- /datum/material/bronze = SHEET_MATERIAL_AMOUNT * 5,
- /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.29
- )
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.55, /datum/material/bronze = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.45)
debris = list(
/obj/item/stack/cable_coil = 4,
/obj/item/stock_parts/micro_laser = 1,
diff --git a/code/game/objects/structures/lavaland/geyser.dm b/code/game/objects/structures/lavaland/geyser.dm
index 5c790457e44..eb969552f3a 100644
--- a/code/game/objects/structures/lavaland/geyser.dm
+++ b/code/game/objects/structures/lavaland/geyser.dm
@@ -135,6 +135,7 @@
icon_state = "plunger"
worn_icon_state = "plunger"
icon_angle = 90
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 1.5)
slot_flags = ITEM_SLOT_MASK
flags_inv = HIDESNOUT
diff --git a/code/game/objects/structures/signboards/holosign.dm b/code/game/objects/structures/signboards/holosign.dm
index 2c5c074d127..1449b371b03 100644
--- a/code/game/objects/structures/signboards/holosign.dm
+++ b/code/game/objects/structures/signboards/holosign.dm
@@ -11,7 +11,7 @@
light_power = 0.3
light_color = COLOR_CARP_TEAL
light_on = FALSE
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.05, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.7)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.15, /datum/material/glass = SMALL_MATERIAL_AMOUNT)
/// If set, only IDs with this name can (un)lock the sign.
var/registered_owner
/// The current color of the sign.
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 88dea7f8269..df7347eed53 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -23,7 +23,7 @@
pass_flags_self = PASSTABLE | LETPASSTHROW
layer = TABLE_LAYER
obj_flags = CAN_BE_HIT | IGNORE_DENSITY
- custom_materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT)
max_integrity = 100
integrity_failure = 0.33
smoothing_flags = SMOOTH_BITMASK
@@ -455,6 +455,7 @@
canSmoothWith = null
icon = 'icons/obj/smooth_structures/rollingtable.dmi'
icon_state = "rollingtable"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2)
/// Lazylist of the items that we have on our surface.
var/list/attached_items = null
can_flip = FALSE
diff --git a/code/game/objects/structures/toiletbong.dm b/code/game/objects/structures/toiletbong.dm
index 93e54886e6e..4d8eed5386d 100644
--- a/code/game/objects/structures/toiletbong.dm
+++ b/code/game/objects/structures/toiletbong.dm
@@ -6,7 +6,7 @@
base_icon_state = "toiletbong"
density = FALSE
anchored = TRUE
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.05, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.8)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.7)
var/smokeradius = 1
var/mutable_appearance/weed_overlay
diff --git a/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm b/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm
index e0078558bbc..030fb27c60d 100644
--- a/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm
+++ b/code/modules/antagonists/abductor/equipment/gear/abductor_items.dm
@@ -571,6 +571,7 @@ Return to step 11 of normal process."}
icon_angle = 180
surgical_tray_overlay = "scalpel_alien"
toolspeed = 0.25
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/hemostat/alien
name = "alien hemostat"
@@ -579,6 +580,7 @@ Return to step 11 of normal process."}
surgical_tray_overlay = "hemostat_alien"
icon_angle = 180
toolspeed = 0.25
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/retractor/alien
name = "alien retractor"
@@ -587,6 +589,7 @@ Return to step 11 of normal process."}
surgical_tray_overlay = "retractor_alien"
icon_angle = 180
toolspeed = 0.25
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/circular_saw/alien
name = "alien saw"
@@ -595,6 +598,7 @@ Return to step 11 of normal process."}
surgical_tray_overlay = "saw_alien"
icon_angle = 180
toolspeed = 0.25
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/surgicaldrill/alien
name = "alien drill"
@@ -603,6 +607,7 @@ Return to step 11 of normal process."}
surgical_tray_overlay = "drill_alien"
icon_angle = 180
toolspeed = 0.25
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/cautery/alien
name = "alien cautery"
@@ -612,6 +617,7 @@ Return to step 11 of normal process."}
surgical_tray_overlay = "cautery_alien"
icon_angle = 180
toolspeed = 0.25
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/clothing/head/helmet/abductor
name = "agent headgear"
diff --git a/code/modules/assembly/doorcontrol.dm b/code/modules/assembly/doorcontrol.dm
index 71a0fc3ebde..e8521f03f1f 100644
--- a/code/modules/assembly/doorcontrol.dm
+++ b/code/modules/assembly/doorcontrol.dm
@@ -2,6 +2,7 @@
name = "controller assembly"
desc = "An assembly that controls something. It's so vaguely designed that it probably shouldn't exist."
icon_state = "control"
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5)
/// The ID of the electronics to match to the ID of the machine being used.
var/id = -1
/// Cooldown of the controller. Updates when pressed (activate())
@@ -210,6 +211,7 @@
desc = "A remote controller for a floor igniter or wall sparker."
generically_adjustable = TRUE
copyable = TRUE
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5)
/obj/item/assembly/control/igniter/activate()
if(cooldown)
diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm
index dfb5c628a68..769b60ecb04 100644
--- a/code/modules/assembly/flash.dm
+++ b/code/modules/assembly/flash.dm
@@ -332,6 +332,7 @@
righthand_file = 'icons/mob/inhands/weapons/melee_righthand.dmi'
/obj/item/assembly/flash/handheld //this is now the regular pocket flashes
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 7.5)
/obj/item/assembly/flash/armimplant
name = "photon projector"
diff --git a/code/modules/cargo/markets/market_uplink.dm b/code/modules/cargo/markets/market_uplink.dm
index d727453da15..32d9a33f382 100644
--- a/code/modules/cargo/markets/market_uplink.dm
+++ b/code/modules/cargo/markets/market_uplink.dm
@@ -3,7 +3,7 @@
desc = "A market uplink. Usable with markets. You probably shouldn't have this!"
icon = 'icons/obj/devices/blackmarket.dmi'
icon_state = "uplink"
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.65, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3.3)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3.6)
// UI variables.
/// What category is the current uplink viewing?
var/viewing_category
diff --git a/code/modules/cargo/supplypod.dm b/code/modules/cargo/supplypod.dm
index 6d237f67f8d..62c346be9a1 100644
--- a/code/modules/cargo/supplypod.dm
+++ b/code/modules/cargo/supplypod.dm
@@ -796,6 +796,7 @@
desc = "This disk provides a firmware update to the Express Supply Console, granting the use of Nanotrasen's Bluespace Drop Pods to the supply department."
icon_state = "datadisk12"
sticker_icon_state = "o_cargopod"
+ custom_materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/disk/cargo/bluespace_pod/setup_reskins()
return
diff --git a/code/modules/cargo/universal_scanner.dm b/code/modules/cargo/universal_scanner.dm
index ed98427ea16..11189aa5798 100644
--- a/code/modules/cargo/universal_scanner.dm
+++ b/code/modules/cargo/universal_scanner.dm
@@ -11,6 +11,7 @@
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
item_flags = NOBLUDGEON
w_class = WEIGHT_CLASS_SMALL
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/// Which mode is the scanner currently on?
var/scanning_mode = SCAN_EXPORTS
/// A list of all available export scanner modes.
diff --git a/code/modules/clothing/belts/polymorph_belt.dm b/code/modules/clothing/belts/polymorph_belt.dm
index 4177a24b28b..7cf0c89540c 100644
--- a/code/modules/clothing/belts/polymorph_belt.dm
+++ b/code/modules/clothing/belts/polymorph_belt.dm
@@ -8,6 +8,7 @@
worn_icon_state = "polybelt_inactive"
base_icon_state = "polybelt"
item_flags = NOBLUDGEON
+ custom_materials = list(/datum/material/silver = SHEET_MATERIAL_AMOUNT * 2, /datum/material/uranium = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = SHEET_MATERIAL_AMOUNT)
/// Typepath of a mob we have scanned, we only store one at a time
var/stored_mob_type
/// Have we activated the belt?
diff --git a/code/modules/clothing/ears/_ears.dm b/code/modules/clothing/ears/_ears.dm
index 63fa58c0c15..7875549e089 100644
--- a/code/modules/clothing/ears/_ears.dm
+++ b/code/modules/clothing/ears/_ears.dm
@@ -22,6 +22,7 @@
resistance_flags = FLAMMABLE
custom_price = PAYCHECK_COMMAND * 1.5
flags_cover = EARS_COVERED
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/clothing/ears/earmuffs/Initialize(mapload)
. = ..()
diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm
index 3dd8c07ab18..f4c5e444a3a 100644
--- a/code/modules/clothing/glasses/_glasses.dm
+++ b/code/modules/clothing/glasses/_glasses.dm
@@ -88,6 +88,7 @@
pickup_sound = SFX_GOGGLES_PICKUP
drop_sound = SFX_GOGGLES_DROP
equip_sound = SFX_GOGGLES_EQUIP
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/clothing/glasses/meson/suicide_act(mob/living/carbon/user)
user.visible_message(span_suicide("[user] is putting \the [src] to [user.p_their()] eyes and overloading the brightness! It looks like [user.p_theyre()] trying to commit suicide!"))
@@ -103,6 +104,7 @@
color_cutoffs = list(10, 35, 10)
glass_colour_type = /datum/client_colour/glass_colour/lightgreen
actions_types = list(/datum/action/item_action/toggle_nv)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 3.5)
/obj/item/clothing/glasses/meson/night/update_icon_state()
. = ..()
@@ -135,6 +137,7 @@
pickup_sound = SFX_GOGGLES_PICKUP
drop_sound = SFX_GOGGLES_DROP
equip_sound = SFX_GOGGLES_EQUIP
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/datum/armor/glasses_science
fire = 80
@@ -153,6 +156,7 @@
color_cutoffs = list(30, 5, 15)
glass_colour_type = /datum/client_colour/glass_colour/lightpurple
actions_types = list(/datum/action/item_action/toggle_nv)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 3.5)
/obj/item/clothing/glasses/science/night/update_icon_state()
. = ..()
@@ -172,6 +176,7 @@
pickup_sound = SFX_GOGGLES_PICKUP
drop_sound = SFX_GOGGLES_DROP
equip_sound = SFX_GOGGLES_EQUIP
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 3.5)
/obj/item/clothing/glasses/night/update_icon_state()
. = ..()
@@ -410,7 +415,7 @@
icon_state = "sunhudsci"
desc = "A pair of tacky purple sunglasses that allow the wearer to recognize various chemical compounds with only a glance."
clothing_traits = list(TRAIT_REAGENT_SCANNER, TRAIT_RESEARCH_SCANNER)
- custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.55, /datum/material/iron = SMALL_MATERIAL_AMOUNT / 2)
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.8, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.55)
/obj/item/clothing/glasses/sunglasses/chemical/add_glasses_slapcraft_component()
var/static/list/slapcraft_recipe_list = list(/datum/crafting_recipe/scienceglassesremoval)
@@ -492,7 +497,7 @@
actions_types = list(/datum/action/item_action/toggle)
flash_protect = FLASH_PROTECTION_WELDER
visor_flags_cover = GLASSESCOVERSEYES
- custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*2.5)
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
tint = 2
visor_vars_to_toggle = VISOR_FLASHPROTECT | VISOR_TINT
glass_colour_type = /datum/client_colour/glass_colour/gray
diff --git a/code/modules/clothing/glasses/engine_goggles.dm b/code/modules/clothing/glasses/engine_goggles.dm
index e9aba450395..3ff47bfea08 100644
--- a/code/modules/clothing/glasses/engine_goggles.dm
+++ b/code/modules/clothing/glasses/engine_goggles.dm
@@ -22,6 +22,7 @@
gender = PLURAL
vision_flags = NONE
color_cutoffs = null
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plasma = SMALL_MATERIAL_AMOUNT)
/// List of selectable modes that can be used by the goggles
var/list/modes = list(MODE_NONE, MODE_MESON, MODE_TRAY)
/// The current mode string that is selected from the modes list (used for icons)
@@ -154,6 +155,7 @@
desc = "Used by engineering staff to see underfloor objects such as cables and pipes."
range = 2
modes = list(MODE_NONE, MODE_TRAY, MODE_PIPE_CONNECTABLE, MODE_ATMOS_THERMAL) // atmos techs now finally have 3 modes on their goggles!
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/clothing/glasses/meson/engine/tray/dropped(mob/user)
. = ..()
diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm
index 28f5fc69937..743406c3868 100644
--- a/code/modules/clothing/glasses/hud.dm
+++ b/code/modules/clothing/glasses/hud.dm
@@ -4,6 +4,7 @@
desc = "A heads-up display that provides important info in (almost) real time."
flags_1 = null //doesn't protect eyes because it's a monocle, duh
actions_types = list(/datum/action/item_action/toggle_wearable_hud)
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/// Whether the HUD info is on or off
var/display_active = TRUE
@@ -77,6 +78,7 @@
color_cutoffs = list(20, 20, 45)
glass_colour_type = /datum/client_colour/glass_colour/lightgreen
actions_types = list(/datum/action/item_action/toggle_nv)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 3.5)
/obj/item/clothing/glasses/hud/health/night/update_icon_state()
. = ..()
@@ -102,7 +104,7 @@
flags_cover = GLASSESCOVERSEYES
tint = 1
glass_colour_type = /datum/client_colour/glass_colour/blue
- custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.55, /datum/material/iron = SMALL_MATERIAL_AMOUNT / 2)
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.8, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.55)
/obj/item/clothing/glasses/hud/health/sunglasses/Initialize(mapload)
. = ..()
@@ -131,6 +133,7 @@
color_cutoffs = list(25, 15, 5)
glass_colour_type = /datum/client_colour/glass_colour/lightyellow
actions_types = list(/datum/action/item_action/toggle_nv)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 3)
/obj/item/clothing/glasses/hud/diagnostic/night/update_icon_state()
. = ..()
@@ -145,7 +148,7 @@
flash_protect = FLASH_PROTECTION_FLASH
flags_cover = GLASSESCOVERSEYES
tint = 1
- custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.55, /datum/material/iron = SMALL_MATERIAL_AMOUNT / 2)
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.8, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.55)
/obj/item/clothing/glasses/hud/diagnostic/sunglasses/Initialize(mapload)
. = ..()
@@ -190,7 +193,7 @@
flags_cover = GLASSESCOVERSEYES
tint = 1
glass_colour_type = /datum/client_colour/glass_colour/darkred
- custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.55, /datum/material/iron = SMALL_MATERIAL_AMOUNT / 2)
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.8, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.55)
/obj/item/clothing/glasses/hud/security/sunglasses/Initialize(mapload)
. = ..()
@@ -211,6 +214,7 @@
color_cutoffs = list(40, 15, 10)
glass_colour_type = /datum/client_colour/glass_colour/lightred
actions_types = list(/datum/action/item_action/toggle_nv)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 3.5)
/obj/item/clothing/glasses/hud/security/night/update_icon_state()
. = ..()
diff --git a/code/modules/clothing/gloves/special.dm b/code/modules/clothing/gloves/special.dm
index 4619ebcf485..e7f5db7ff58 100644
--- a/code/modules/clothing/gloves/special.dm
+++ b/code/modules/clothing/gloves/special.dm
@@ -181,6 +181,7 @@
name = "athletic fishing gloves"
desc = "A pair of gloves to fish without a fishing rod but your raw athletics strength. It doubles as a good workout device. WARNING: May cause injuries when catching bigger fish."
icon_state = "fishing_gloves"
+ custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT, /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
///The current fishing minigame datum the wearer is engaged in.
var/datum/fishing_challenge/challenge
diff --git a/code/modules/clothing/gloves/tacklers.dm b/code/modules/clothing/gloves/tacklers.dm
index cc4ec1337c3..0c348c5468d 100644
--- a/code/modules/clothing/gloves/tacklers.dm
+++ b/code/modules/clothing/gloves/tacklers.dm
@@ -55,6 +55,7 @@
desc = "Sleek, aerodynamic gripper gloves that are less effective at actually performing takedowns, but more effective at letting the user sail through the hallways and cause accidents."
icon_state = "tackledolphin"
inhand_icon_state = null
+ custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 1.25)
tackle_stam_cost = 15
base_knockdown = 0.5 SECONDS
@@ -96,6 +97,7 @@
desc = "The ultimate in high risk, high reward, perfect for when you need to stop a criminal from fifty feet away or die trying. Banned in most Spinward gridiron football and rugby leagues."
icon_state = "tacklerocket"
inhand_icon_state = null
+ custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT)
tackle_stam_cost = 50
base_knockdown = 2 SECONDS
@@ -115,6 +117,7 @@
min_distance = 2
skill_mod = -1
fishing_modifier = -5
+ custom_materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT)
/obj/item/clothing/gloves/tackler/football
name = "football gloves"
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index cf379ab556c..3bdf4aeca0c 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -283,6 +283,7 @@
flags_inv = HIDEHAIR|HIDEEARS|HIDESNOUT
resistance_flags = FIRE_PROOF
dog_fashion = null
+ custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 3.6)
/datum/armor/balloon
melee = 10
diff --git a/code/modules/clothing/head/perceptomatrix.dm b/code/modules/clothing/head/perceptomatrix.dm
index 1bd39cba5bd..20984484f2a 100644
--- a/code/modules/clothing/head/perceptomatrix.dm
+++ b/code/modules/clothing/head/perceptomatrix.dm
@@ -28,6 +28,13 @@
drop_sound = 'sound/items/handling/helmet/helmet_drop1.ogg'
armor_type = /datum/armor/head_helmet_matrix
actions_types = list(/datum/action/cooldown/spell/pointed/percept_hallucination)
+ custom_materials = list(
+ /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 3,
+ /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 2,
+ /datum/material/silver = SHEET_MATERIAL_AMOUNT,
+ /datum/material/uranium = SHEET_MATERIAL_AMOUNT,
+ /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT,
+ )
/// If we have a core or not
var/core_installed = FALSE
diff --git a/code/modules/clothing/head/tinfoilhat.dm b/code/modules/clothing/head/tinfoilhat.dm
index 5d5a6cc25bc..19f357c6ac5 100644
--- a/code/modules/clothing/head/tinfoilhat.dm
+++ b/code/modules/clothing/head/tinfoilhat.dm
@@ -6,6 +6,7 @@
armor_type = /datum/armor/costume_foilhat
equip_delay_other = 14 SECONDS
clothing_flags = ANTI_TINFOIL_MANEUVER
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5)
clothing_traits = list(TRAIT_DONT_HEAR_PRAYERS) //stops you from hearing prayers as well, yes
var/datum/brain_trauma/mild/phobia/conspiracies/paranoia
var/warped = FALSE
diff --git a/code/modules/clothing/head/tophat.dm b/code/modules/clothing/head/tophat.dm
index add97bc164a..2b587287aa2 100644
--- a/code/modules/clothing/head/tophat.dm
+++ b/code/modules/clothing/head/tophat.dm
@@ -44,5 +44,6 @@
throwforce = 0
resistance_flags = FIRE_PROOF
dog_fashion = null
+ custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 3.6)
#undef RABBIT_CD_TIME
diff --git a/code/modules/clothing/masks/gas_filter.dm b/code/modules/clothing/masks/gas_filter.dm
index 5c1463b901b..49ce45f1b1d 100644
--- a/code/modules/clothing/masks/gas_filter.dm
+++ b/code/modules/clothing/masks/gas_filter.dm
@@ -17,6 +17,7 @@
icon = 'icons/obj/clothing/masks.dmi'
icon_state = "gas_atmos_filter"
w_class = WEIGHT_CLASS_TINY
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT)
///Amount of filtering points available
var/filter_status = 100
///strength of the filter against high filtering gases
diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm
index 292ead0d920..9e29f0834c1 100644
--- a/code/modules/clothing/masks/gasmask.dm
+++ b/code/modules/clothing/masks/gasmask.dm
@@ -217,7 +217,7 @@ GLOBAL_LIST_INIT(clown_mask_options, list(
desc = "A gas mask with built-in welding goggles and a face shield. Looks like a skull - clearly designed by a nerd."
icon_state = "weldingmask"
flash_protect = FLASH_PROTECTION_WELDER
- custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*2, /datum/material/glass=SHEET_MATERIAL_AMOUNT)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.4, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
tint = 2
toggle_message = "You pull the visor down."
alt_toggle_message = "You push the visor up."
diff --git a/code/modules/clothing/neck/_neck.dm b/code/modules/clothing/neck/_neck.dm
index 2d61617c03c..321c6c8b782 100644
--- a/code/modules/clothing/neck/_neck.dm
+++ b/code/modules/clothing/neck/_neck.dm
@@ -235,6 +235,7 @@
name = "stethoscope"
desc = "An outdated medical apparatus for listening to the sounds of the human body. It also makes you look like you know what you're doing."
icon_state = "stethoscope"
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/clothing/neck/stethoscope/Initialize(mapload)
. = ..()
diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm
index 7ac4cfb5aa9..60f7d33b93e 100644
--- a/code/modules/clothing/shoes/magboots.dm
+++ b/code/modules/clothing/shoes/magboots.dm
@@ -14,6 +14,7 @@
resistance_flags = FIRE_PROOF
clothing_flags = parent_type::clothing_flags | STOPSPRESSUREDAMAGE
slowdown = SHOES_SLOWDOWN
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75)
/// Whether the magpulse system is active
var/magpulse = FALSE
/// Slowdown applied wwhen magpulse is active. This is added onto existing slowdown
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index 3800660851a..0923bd0bc51 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -326,6 +326,7 @@
siemens_coefficient = 0
strip_delay = 7 SECONDS
equip_delay_other = 5 SECONDS
+ custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 10.8)
/datum/armor/balloon_vest
melee = 10
diff --git a/code/modules/clothing/suits/reactive_armour.dm b/code/modules/clothing/suits/reactive_armour.dm
index a38ffbadce8..97c622d8e90 100644
--- a/code/modules/clothing/suits/reactive_armour.dm
+++ b/code/modules/clothing/suits/reactive_armour.dm
@@ -4,6 +4,7 @@
icon_state = "reactiveoff"
icon = 'icons/obj/clothing/suits/armor.dmi'
w_class = WEIGHT_CLASS_BULKY
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 4, /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/item/reactive_armor_shell/item_interaction(mob/living/user, obj/item/tool, list/modifiers)
. = ..()
diff --git a/code/modules/clothing/suits/wetfloor.dm b/code/modules/clothing/suits/wetfloor.dm
index 9a623d88f8b..e1d241ac901 100644
--- a/code/modules/clothing/suits/wetfloor.dm
+++ b/code/modules/clothing/suits/wetfloor.dm
@@ -23,7 +23,7 @@
/obj/item/tank/internals/plasmaman,
/obj/item/gun/ballistic/rifle/boltaction/pipegun,
)
- custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2)
+ custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT)
/datum/armor/suit_caution
melee = 5
diff --git a/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm b/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm
index 9f64535e13b..93744f64d74 100644
--- a/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm
+++ b/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm
@@ -77,6 +77,7 @@
desc = "A cartridge loaded with a compressed extinguisher mix, used to refill the automatic extinguisher on plasma envirosuits."
icon_state = "plasmarefill"
icon = 'icons/obj/canisters.dmi'
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/clothing/under/plasmaman/cargo
name = "cargo plasma envirosuit"
diff --git a/code/modules/detectivework/evidence.dm b/code/modules/detectivework/evidence.dm
index f4e41d09cd6..d58acd54193 100644
--- a/code/modules/detectivework/evidence.dm
+++ b/code/modules/detectivework/evidence.dm
@@ -11,6 +11,7 @@
drop_sound = 'sound/items/evidence_bag/evidence_bag_drop.ogg'
pickup_sound = 'sound/items/evidence_bag/evidence_bag_pickup.ogg'
sound_vary = TRUE
+ custom_materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT)
/obj/item/evidencebag/Initialize(mapload)
. = ..()
diff --git a/code/modules/experisci/handheld_scanner.dm b/code/modules/experisci/handheld_scanner.dm
index a91db73a017..ef572c9e22e 100644
--- a/code/modules/experisci/handheld_scanner.dm
+++ b/code/modules/experisci/handheld_scanner.dm
@@ -14,6 +14,7 @@
sound_vary = TRUE
pickup_sound = SFX_GENERIC_DEVICE_PICKUP
drop_sound = SFX_GENERIC_DEVICE_DROP
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/experi_scanner/Initialize(mapload)
..()
diff --git a/code/modules/fishing/aquarium/aquarium.dm b/code/modules/fishing/aquarium/aquarium.dm
index 39f1ed99149..0880bdd5c1c 100644
--- a/code/modules/fishing/aquarium/aquarium.dm
+++ b/code/modules/fishing/aquarium/aquarium.dm
@@ -9,7 +9,7 @@
base_icon_state = "aquarium"
integrity_failure = 0.3
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 10)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 10)
//This is the area where fish can swim
var/aquarium_zone_min_pw = 2
@@ -130,7 +130,7 @@
throw_range = 3
w_class = WEIGHT_CLASS_BULKY
item_flags = SLOWS_WHILE_IN_HAND
- custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 5)
+ custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 5, /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
custom_price = PAYCHECK_CREW * 9
diff --git a/code/modules/fishing/aquarium/aquarium_kit.dm b/code/modules/fishing/aquarium/aquarium_kit.dm
index 9a248c8b286..9d2f6ba52e2 100644
--- a/code/modules/fishing/aquarium/aquarium_kit.dm
+++ b/code/modules/fishing/aquarium/aquarium_kit.dm
@@ -28,6 +28,7 @@
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
storage_type = /datum/storage/fish_case/adjust_size
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/plastic = SMALL_MATERIAL_AMOUNT)
/obj/item/storage/fish_case/Initialize(mapload)
. = ..()
@@ -113,6 +114,7 @@
desc = "An improved fish case to keep large fish in stasis in a compact little space."
w_class = WEIGHT_CLASS_NORMAL
storage_type = /datum/storage/fish_case
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/plastic = SMALL_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT)
/obj/item/aquarium_kit
name = "DIY Aquarium Construction Kit"
@@ -120,6 +122,7 @@
icon = 'icons/obj/aquarium/supplies.dmi'
icon_state = "construction_kit"
w_class = WEIGHT_CLASS_TINY
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/aquarium_kit/Initialize(mapload)
. = ..()
diff --git a/code/modules/fishing/aquarium/aquarium_upgrades.dm b/code/modules/fishing/aquarium/aquarium_upgrades.dm
index 042074500af..2ca3f7005b4 100644
--- a/code/modules/fishing/aquarium/aquarium_upgrades.dm
+++ b/code/modules/fishing/aquarium/aquarium_upgrades.dm
@@ -33,6 +33,7 @@
desc = "All the required components to allow an aquarium to harness energy bioelectric fish."
icon_state = "bioelec_kit"
upgrade_to_type = /obj/structure/aquarium/bioelec_gen
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT)
/obj/structure/aquarium/bioelec_gen
name = "bioelectricity generator"
@@ -65,6 +66,7 @@
icon_state = "bluespace_kit"
upgrade_from_type = /obj/item/fish_tank
upgrade_to_type = /obj/item/fish_tank/bluespace
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3, /datum/material/titanium = SMALL_MATERIAL_AMOUNT)
/obj/item/fish_tank/bluespace
name = "bluespace fish tank"
diff --git a/code/modules/fishing/aquarium/fish_analyzer.dm b/code/modules/fishing/aquarium/fish_analyzer.dm
index 401b1c67ef9..1b6b06086d0 100644
--- a/code/modules/fishing/aquarium/fish_analyzer.dm
+++ b/code/modules/fishing/aquarium/fish_analyzer.dm
@@ -19,6 +19,7 @@
greyscale_config_inhand_left = /datum/greyscale_config/fish_analyzer_inhand_left
greyscale_config_inhand_right = /datum/greyscale_config/fish_analyzer_inhand_right
greyscale_config_worn = /datum/greyscale_config/fish_analyzer_worn
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5)
///The color of the case. Used by grayscale configs and update_overlays()
var/case_color
///the atom (aquarium or fish) we have scanned
diff --git a/code/modules/fishing/fishing_equipment.dm b/code/modules/fishing/fishing_equipment.dm
index 8d6ab561e8b..8963e4dd632 100644
--- a/code/modules/fishing/fishing_equipment.dm
+++ b/code/modules/fishing/fishing_equipment.dm
@@ -95,6 +95,7 @@
wiki_desc = "Automatically starts the minigame and helps guide the bait a little. It also spin fishing lures for you without need of an input. \
It can also be used to snag in objects from a distance and throw them in your direction.
\
It requires the Advanced Fishing Technology Node to be researched to be printed."
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 4, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 3, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 3)
/obj/item/fishing_line/auto_reel/Initialize(mapload)
. = ..()
@@ -153,6 +154,7 @@
cast_range = 6
wiki_desc = "It can be used to reach distant fishing spots as well as other things that a normal fishing line cannot, with the exception of reinforced walls.
\
It requires the Marine Utility Node to be researched to be printed."
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 4, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 3, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3)
// Hooks
@@ -314,6 +316,7 @@
rod_overlay_icon_state = "hook_gyro_overlay"
wiki_desc = "It allows you to move both up (left-click) and down (right-click) during the minigame while negating gravity.
\
It requires the Advanced Fishing Technology Node to be researched to be printed."
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 3, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 2)
/obj/item/fishing_hook/stabilized/examine(mob/user)
. = ..()
@@ -508,6 +511,7 @@
attack_verb_continuous = list("pricked", "stabbed", "poked")
attack_verb_simple = list("prick", "stab", "poke")
hitsound = 'sound/items/hypospray.ogg'
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 3, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 2)
//This can be an empty syringe or a gene injector
var/obj/item/loaded_injector
diff --git a/code/modules/fishing/fishing_rod.dm b/code/modules/fishing/fishing_rod.dm
index a6d6fe48425..5d7df05303d 100644
--- a/code/modules/fishing/fishing_rod.dm
+++ b/code/modules/fishing/fishing_rod.dm
@@ -11,6 +11,7 @@
inhand_y_dimension = 64
force = 8
w_class = WEIGHT_CLASS_HUGE
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
/// How far can you cast this
var/cast_range = 3
@@ -804,6 +805,7 @@
bait_speed_mult = 1.1
deceleration_mult = 1.1
gravity_mult = 1.2
+ custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/fishing_rod/tech/Initialize(mapload)
. = ..()
diff --git a/code/modules/food_and_drinks/equipment/kitchen_utensils.dm b/code/modules/food_and_drinks/equipment/kitchen_utensils.dm
index ca5a338fa4c..8669ba83f82 100644
--- a/code/modules/food_and_drinks/equipment/kitchen_utensils.dm
+++ b/code/modules/food_and_drinks/equipment/kitchen_utensils.dm
@@ -30,7 +30,7 @@
throwforce = 0
throw_speed = 3
throw_range = 5
- custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.8)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT)
obj_flags = CONDUCTS_ELECTRICITY
attack_verb_continuous = list("attacks", "stabs", "pokes")
attack_verb_simple = list("attack", "stab", "poke")
@@ -79,7 +79,7 @@
force = 0
w_class = WEIGHT_CLASS_TINY
throwforce = 0
- custom_materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT * 0.8)
+ custom_materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT)
custom_price = PAYCHECK_LOWER * 1
pickup_sound = null
drop_sound = null
@@ -366,6 +366,7 @@
icon_angle = -45
attack_verb_continuous = list("pinches", "tongs", "nips")
attack_verb_simple = list("pinch", "tong", "nip")
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2)
/// What are we holding in our tongs?
var/obj/item/tonged
/// Sound to play when we click our tongs together
diff --git a/code/modules/food_and_drinks/equipment/plate.dm b/code/modules/food_and_drinks/equipment/plate.dm
index 539a22f8171..a0116c389c1 100644
--- a/code/modules/food_and_drinks/equipment/plate.dm
+++ b/code/modules/food_and_drinks/equipment/plate.dm
@@ -118,6 +118,13 @@
max_height_offset = 5
biggest_w_class = WEIGHT_CLASS_SMALL
+/obj/item/plate/iron
+ name = "metal plate"
+ icon_state = "plate_metal"
+ desc = "Holds food, powerful. Good for morale when you're not eating your spaghetti off of a desk. Made from sturdier iron instead of more fragile ceramic."
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5)
+ fragile = FALSE
+
/obj/item/plate_shard
name = "ceramic shard"
icon = 'icons/obj/service/kitchen.dmi'
diff --git a/code/modules/food_and_drinks/food/lizard.dm b/code/modules/food_and_drinks/food/lizard.dm
index 86829276528..e085d7d2453 100644
--- a/code/modules/food_and_drinks/food/lizard.dm
+++ b/code/modules/food_and_drinks/food/lizard.dm
@@ -224,7 +224,6 @@
desc = "One of the many human foods to make its way to the lizards was french fries, which are called poms-franzisks in Draconic. When topped with barbecued meat and sauce, they make a hearty meal."
icon = 'icons/obj/food/lizard.dmi'
icon_state = "lizard_fries"
- trash_type = /obj/item/plate
food_reagents = list(
/datum/reagent/consumable/nutriment = 4,
/datum/reagent/consumable/nutriment/protein = 6,
diff --git a/code/modules/food_and_drinks/food/misc.dm b/code/modules/food_and_drinks/food/misc.dm
index cf6413dc5da..d46633c502b 100644
--- a/code/modules/food_and_drinks/food/misc.dm
+++ b/code/modules/food_and_drinks/food/misc.dm
@@ -362,7 +362,7 @@
foodtypes = GRAIN | FRUIT | SUGAR
food_flags = FOOD_FINGER_FOOD
crafting_complexity = FOOD_COMPLEXITY_5
- custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.7)
/obj/item/food/branrequests
name = "bran requests cereal"
diff --git a/code/modules/food_and_drinks/machinery/coffeemaker.dm b/code/modules/food_and_drinks/machinery/coffeemaker.dm
index 79c25e42583..d6c9f35c75a 100644
--- a/code/modules/food_and_drinks/machinery/coffeemaker.dm
+++ b/code/modules/food_and_drinks/machinery/coffeemaker.dm
@@ -444,6 +444,7 @@
desc = "A coffee cartridge manufactured by Piccionaia Coffee, for use with the Modello 3 system."
icon = 'icons/obj/food/cartridges.dmi'
icon_state = "cartridge_basic"
+ custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT)
var/charges = 4
var/list/drink_type = list(/datum/reagent/consumable/coffee = 120)
@@ -494,6 +495,7 @@
desc = "A blank coffee cartridge, ready to be filled with coffee paste."
icon = 'icons/obj/food/cartridges.dmi'
icon_state = "cartridge_blank"
+ custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT)
//now, how do you store coffee carts? well, in a rack, of course!
/obj/item/storage/fancy/coffee_cart_rack
diff --git a/code/modules/food_and_drinks/machinery/oven.dm b/code/modules/food_and_drinks/machinery/oven.dm
index d388b06fb48..95647c4bdbb 100644
--- a/code/modules/food_and_drinks/machinery/oven.dm
+++ b/code/modules/food_and_drinks/machinery/oven.dm
@@ -268,6 +268,8 @@
sound_vary = TRUE
pickup_sound = SFX_TRAY_PICKUP
drop_sound = SFX_TRAY_DROP
+ fragile = FALSE //oven trays are metallic
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/plate/oven_tray/item_interaction_secondary(mob/living/user, obj/item/item, list/modifiers)
if(isnull(item.atom_storage))
diff --git a/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm b/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm
index 8dc2a208742..8ed7580758e 100644
--- a/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm
+++ b/code/modules/food_and_drinks/recipes/tablecraft/recipes_lizard.dm
@@ -109,7 +109,6 @@
/obj/item/food/fries = 1,
/obj/item/food/meat/cutlet = 2,
/datum/reagent/consumable/bbqsauce = 5,
- /obj/item/plate = 1,
)
result = /obj/item/food/lizard_fries
cuisine_category = CUISINE_LIZARD
diff --git a/code/modules/food_and_drinks/restaurant/_venue.dm b/code/modules/food_and_drinks/restaurant/_venue.dm
index e540da3cbf8..278becbd559 100644
--- a/code/modules/food_and_drinks/restaurant/_venue.dm
+++ b/code/modules/food_and_drinks/restaurant/_venue.dm
@@ -310,6 +310,7 @@
holosign_type = /obj/structure/holosign/robot_seat
desc = "Use this to place seats for your restaurant guests!"
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/holosign_creator/robot_seat/attack_self(mob/user)
return
diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm
index 1eb888dc1cd..66a38bd1edc 100644
--- a/code/modules/hydroponics/hydroitemdefines.dm
+++ b/code/modules/hydroponics/hydroitemdefines.dm
@@ -259,7 +259,7 @@
throwforce = 8
w_class = WEIGHT_CLASS_SMALL
slot_flags = ITEM_SLOT_BELT
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*2, /datum/material/uranium=HALF_SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/gold=SMALL_MATERIAL_AMOUNT*5)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
attack_verb_continuous = list("slashes", "slices", "cuts")
attack_verb_simple = list("slash", "slice", "cut")
hitsound = 'sound/items/weapons/bladeslice.ogg'
diff --git a/code/modules/manufactorio/machines/lathe.dm b/code/modules/manufactorio/machines/lathe.dm
index c248bc6e47c..e82c5c0a120 100644
--- a/code/modules/manufactorio/machines/lathe.dm
+++ b/code/modules/manufactorio/machines/lathe.dm
@@ -168,7 +168,7 @@
created = design.create_result(drop_location(), materials_needed)
if (length(slots_chosen))
created.set_material_slots(slots_chosen)
- split_materials_uniformly(materials_needed, target_object = created)
+ design.transfer_materials(materials_needed, target_object = created)
if(isitem(created))
created.pixel_x = created.base_pixel_x + rand(-6, 6)
diff --git a/code/modules/mining/equipment/mineral_scanner.dm b/code/modules/mining/equipment/mineral_scanner.dm
index 93b0a26a3df..bbaab539cb7 100644
--- a/code/modules/mining/equipment/mineral_scanner.dm
+++ b/code/modules/mining/equipment/mineral_scanner.dm
@@ -64,6 +64,7 @@
icon_state = "mining0"
range = 4
cooldown = 50
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/t_scanner/adv_mining_scanner/scan()
if(current_cooldown <= world.time)
diff --git a/code/modules/mining/equipment/mining_tools.dm b/code/modules/mining/equipment/mining_tools.dm
index d16be7e4b4c..b237ddc415a 100644
--- a/code/modules/mining/equipment/mining_tools.dm
+++ b/code/modules/mining/equipment/mining_tools.dm
@@ -72,6 +72,7 @@
usesound = 'sound/items/weapons/drill.ogg'
hitsound = 'sound/items/weapons/drill.ogg'
desc = "An electric mining drill for the especially scrawny."
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/pickaxe/drill/Initialize(mapload)
. = ..()
@@ -83,6 +84,7 @@
inhand_icon_state = "diamonddrill"
toolspeed = 0.2
desc = "Yours is the drill that will pierce the heavens!"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/diamond = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/pickaxe/drill/jackhammer
name = "sonic jackhammer"
@@ -92,6 +94,7 @@
usesound = 'sound/items/weapons/sonic_jackhammer.ogg'
hitsound = 'sound/items/weapons/sonic_jackhammer.ogg'
desc = "Cracks rocks with sonic blasts."
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 3, /datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/silver = SHEET_MATERIAL_AMOUNT)
/obj/item/pickaxe/improvised
name = "improvised pickaxe"
@@ -104,7 +107,7 @@
toolspeed = 3 //3 times slower than a normal pickaxe
slot_flags = ITEM_SLOT_BELT
w_class = WEIGHT_CLASS_NORMAL
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*6) //This number used to be insane and I'm just going to save your sanity and not tell you what it was.
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6.05, /datum/material/plastic = SMALL_MATERIAL_AMOUNT) //This number used to be insane and I'm just going to save your sanity and not tell you what it was.
/obj/item/shovel
name = "shovel"
@@ -323,7 +326,7 @@
item_flags = SLOWS_WHILE_IN_HAND | IMMUTABLE_SLOW
slowdown = 3
attack_speed = 1.2 SECONDS
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6.6, /datum/material/alloy/plasteel = SHEET_MATERIAL_AMOUNT * 5)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 8.6, /datum/material/alloy/plasteel = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/// The factor at which the recoil becomes less.
var/recoil_factor = 3
/// Wether we knock down and launch away out enemies when we attack.
diff --git a/code/modules/mining/equipment/resonator.dm b/code/modules/mining/equipment/resonator.dm
index dcd980e71cd..7223bbd231b 100644
--- a/code/modules/mining/equipment/resonator.dm
+++ b/code/modules/mining/equipment/resonator.dm
@@ -12,6 +12,12 @@
force = 15
throwforce = 10
slot_flags = ITEM_SLOT_BELT
+ custom_materials = list(
+ /datum/material/iron = SHEET_MATERIAL_AMOUNT*2,
+ /datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT * 1.5,
+ /datum/material/silver =HALF_SHEET_MATERIAL_AMOUNT,
+ /datum/material/uranium =HALF_SHEET_MATERIAL_AMOUNT,
+ )
/// the mode of the resonator; has three modes: auto (1), manual (2), and matrix (3)
var/mode = RESONATOR_MODE_AUTO
diff --git a/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm b/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm
index 4d26f285838..24ec3d55e5e 100644
--- a/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm
+++ b/code/modules/mob/living/basic/bots/cleanbot/cleanbot.dm
@@ -8,7 +8,7 @@
health = 25
maxHealth = 25
light_color = "#99ccff"
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
req_one_access = list(ACCESS_ROBOTICS, ACCESS_JANITOR)
radio_key = /obj/item/encryptionkey/headset_service
diff --git a/code/modules/mob/living/basic/bots/ed209/ed209.dm b/code/modules/mob/living/basic/bots/ed209/ed209.dm
index 83373e25a82..15ae317a63e 100644
--- a/code/modules/mob/living/basic/bots/ed209/ed209.dm
+++ b/code/modules/mob/living/basic/bots/ed209/ed209.dm
@@ -14,10 +14,7 @@
bot_type = ADVANCED_SEC_BOT
hackables = "combat inhibitors"
- custom_materials = list(
- /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.8,
- /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2.1,
- )
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 20.3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2.1)
///sound of the projectiles we shoot
var/projectile_sound = 'sound/items/weapons/laser.ogg'
diff --git a/code/modules/mob/living/basic/bots/firebot/firebot.dm b/code/modules/mob/living/basic/bots/firebot/firebot.dm
index b49aa011bbb..049bd660e2e 100644
--- a/code/modules/mob/living/basic/bots/firebot/firebot.dm
+++ b/code/modules/mob/living/basic/bots/firebot/firebot.dm
@@ -7,7 +7,7 @@
icon_state = "firebot1"
light_color = "#8cffc9"
light_power = 0.8
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.9, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6.3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
req_one_access = list(ACCESS_ROBOTICS, ACCESS_CONSTRUCTION)
radio_key = /obj/item/encryptionkey/headset_eng
diff --git a/code/modules/mob/living/basic/bots/honkbots/honkbot.dm b/code/modules/mob/living/basic/bots/honkbots/honkbot.dm
index 5daa8e5b25b..fbe91b7cc4d 100644
--- a/code/modules/mob/living/basic/bots/honkbots/honkbot.dm
+++ b/code/modules/mob/living/basic/bots/honkbots/honkbot.dm
@@ -4,7 +4,7 @@
icon_state = "honkbot"
base_icon_state = "honkbot"
damage_coeff = list(BRUTE = 1, BURN = 1, TOX = 0, STAMINA = 0, OXY = 0)
- custom_materials = list(/datum/material/cardboard = SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.8, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.8, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
req_access = list(ACCESS_ROBOTICS, ACCESS_THEATRE, ACCESS_JANITOR)
radio_key = /obj/item/encryptionkey/headset_service
ai_controller = /datum/ai_controller/basic_controller/bot/honkbot
diff --git a/code/modules/mob/living/basic/bots/medbot/medbot.dm b/code/modules/mob/living/basic/bots/medbot/medbot.dm
index 7e2bd3d8574..2dfb4c2fed0 100644
--- a/code/modules/mob/living/basic/bots/medbot/medbot.dm
+++ b/code/modules/mob/living/basic/bots/medbot/medbot.dm
@@ -14,7 +14,7 @@
pass_flags = PASSMOB | PASSFLAPS
status_flags = (CANPUSH | CANSTUN)
ai_controller = /datum/ai_controller/basic_controller/bot/medbot
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6.3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2.5)
req_one_access = list(ACCESS_ROBOTICS, ACCESS_MEDICAL)
radio_key = /obj/item/encryptionkey/headset_med
diff --git a/code/modules/mob/living/basic/bots/repairbot/repairbot.dm b/code/modules/mob/living/basic/bots/repairbot/repairbot.dm
index 0e3647adb19..c7f9554102a 100644
--- a/code/modules/mob/living/basic/bots/repairbot/repairbot.dm
+++ b/code/modules/mob/living/basic/bots/repairbot/repairbot.dm
@@ -11,7 +11,7 @@
health = 35
can_be_held = TRUE
maxHealth = 35
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.8, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
path_image_color = "#80dae7"
bot_ui = "RepairBot"
req_one_access = list(ACCESS_ROBOTICS, ACCESS_ENGINEERING)
diff --git a/code/modules/mob/living/basic/bots/secbot/secbot.dm b/code/modules/mob/living/basic/bots/secbot/secbot.dm
index df71f848a94..46b2835764c 100644
--- a/code/modules/mob/living/basic/bots/secbot/secbot.dm
+++ b/code/modules/mob/living/basic/bots/secbot/secbot.dm
@@ -27,7 +27,7 @@
possessed_message = "You are a securitron! Guard the station to the best of your ability!"
additional_access = /datum/id_trim/job/detective
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3.2)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3.2)
ai_controller = /datum/ai_controller/basic_controller/bot/secbot
///Whether this secbot is considered 'commissioned' and given the trait on Initialize.
var/commissioned = FALSE
diff --git a/code/modules/mob/living/basic/bots/vibebot/vibebot.dm b/code/modules/mob/living/basic/bots/vibebot/vibebot.dm
index ab89baea651..b2db02de081 100644
--- a/code/modules/mob/living/basic/bots/vibebot/vibebot.dm
+++ b/code/modules/mob/living/basic/bots/vibebot/vibebot.dm
@@ -9,7 +9,7 @@
light_range = 6
ai_controller = /datum/ai_controller/basic_controller/bot/vibebot
light_power = 2
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.8, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3.3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4)
hackables = "vibing scanners"
diff --git a/code/modules/mob/living/brain/MMI.dm b/code/modules/mob/living/brain/MMI.dm
index 09bcf02737e..3f2d984e67e 100644
--- a/code/modules/mob/living/brain/MMI.dm
+++ b/code/modules/mob/living/brain/MMI.dm
@@ -5,8 +5,10 @@
icon_state = "mmi_off"
base_icon_state = "mmi"
w_class = WEIGHT_CLASS_NORMAL
+
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
var/braintype = "Cyborg"
- var/obj/item/radio/radio = null //Let's give it a radio.
+ var/obj/item/radio/mmi/radio = null //Let's give it a radio.
var/mob/living/brain/brainmob = null //The current occupant.
var/mob/living/silicon/robot = null //Appears unused.
var/obj/vehicle/sealed/mecha = null //This does not appear to be used outside of reference in mecha.dm.
@@ -17,10 +19,12 @@
/// Whether the brainmob can move. Doesnt usually matter but SPHERICAL POSIBRAINSSS
var/immobilize = TRUE
+/obj/item/radio/mmi
+ custom_materials = null
+
/obj/item/mmi/Initialize(mapload)
. = ..()
radio = new(src) //Spawns a radio inside the MMI.
- radio.set_broadcasting(FALSE) //researching radio mmis turned the robofabs into radios because this didnt start as 0.
laws.set_laws_config()
/obj/item/mmi/Destroy()
diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm
index 7bfc3612e88..f4792ddef96 100644
--- a/code/modules/mob/living/brain/posibrain.dm
+++ b/code/modules/mob/living/brain/posibrain.dm
@@ -9,6 +9,7 @@ GLOBAL_VAR(posibrain_notify_cooldown)
w_class = WEIGHT_CLASS_NORMAL
req_access = list(ACCESS_ROBOTICS)
braintype = "Android"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.85, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.67, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT)
///Message sent to the user when polling ghosts
var/begin_activation_message = span_notice("You carefully locate the manual activation switch and start the positronic brain's boot process.")
@@ -230,6 +231,7 @@ GLOBAL_VAR(posibrain_notify_cooldown)
icon_state = "spheribrain"
base_icon_state = "spheribrain"
immobilize = FALSE
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 4.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3.2, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2.5)
/// Delay between movements
var/move_delay = 0.5 SECONDS
/// when can we move again?
diff --git a/code/modules/mod/mod_construction.dm b/code/modules/mod/mod_construction.dm
index da27123ba92..c7bf37c1fc4 100644
--- a/code/modules/mod/mod_construction.dm
+++ b/code/modules/mod/mod_construction.dm
@@ -6,6 +6,7 @@
/obj/item/mod/construction/helmet
name = "MOD helmet"
icon_state = "helmet"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/item/mod/construction/helmet/examine(mob/user)
. = ..()
@@ -14,6 +15,7 @@
/obj/item/mod/construction/chestplate
name = "MOD chestplate"
icon_state = "chestplate"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/item/mod/construction/chestplate/examine(mob/user)
. = ..()
@@ -22,6 +24,7 @@
/obj/item/mod/construction/gauntlets
name = "MOD gauntlets"
icon_state = "gauntlets"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/item/mod/construction/gauntlets/examine(mob/user)
. = ..()
@@ -30,6 +33,7 @@
/obj/item/mod/construction/boots
name = "MOD boots"
icon_state = "boots"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/item/mod/construction/boots/examine(mob/user)
. = ..()
@@ -83,6 +87,7 @@
name = "MOD external plating"
desc = "External plating used to finish a MOD control unit."
icon_state = "standard-plating"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5)
var/datum/mod_theme/theme = /datum/mod_theme
/obj/item/mod/construction/plating/Initialize(mapload)
@@ -94,24 +99,30 @@
/obj/item/mod/construction/plating/civilian
theme = /datum/mod_theme/civilian
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5)
/obj/item/mod/construction/plating/portable_suit
theme = /datum/mod_theme/portable_suit
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/plastic = SHEET_MATERIAL_AMOUNT, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5)
/obj/item/mod/construction/plating/engineering
theme = /datum/mod_theme/engineering
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5)
/obj/item/mod/construction/plating/atmospheric
theme = /datum/mod_theme/atmospheric
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/titanium = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5)
/obj/item/mod/construction/plating/medical
theme = /datum/mod_theme/medical
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/silver = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5)
/obj/item/mod/construction/plating/security
theme = /datum/mod_theme/security
/obj/item/mod/construction/plating/cosmohonk
theme = /datum/mod_theme/cosmohonk
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/bananium = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5)
#define START_STEP "start"
#define CORE_STEP "core"
@@ -127,6 +138,7 @@
name = "MOD shell"
icon_state = "mod-construction_start"
desc = "A MOD shell."
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2.5)
var/obj/item/core
var/obj/item/helmet
var/obj/item/chestplate
diff --git a/code/modules/mod/mod_core.dm b/code/modules/mod/mod_core.dm
index e9d0f5f3dbf..5c6eac13c7b 100644
--- a/code/modules/mod/mod_core.dm
+++ b/code/modules/mod/mod_core.dm
@@ -302,7 +302,7 @@
liquid electricity, this core makes it much more efficient, running all soft, hard, and wetware with several \
times less energy usage."
/// A modifier to all charge we use, ethereals don't need to spend as much energy as normal suits.
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.15, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.05)
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.05, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.05)
var/charge_modifier = 0.1
/obj/item/mod/core/ethereal/charge_source()
diff --git a/code/modules/mod/mod_link.dm b/code/modules/mod/mod_link.dm
index 966462f6809..ca2da15e0e0 100644
--- a/code/modules/mod/mod_link.dm
+++ b/code/modules/mod/mod_link.dm
@@ -143,6 +143,7 @@
desc = "An intricate piece of machinery that creates a holographic video call with another MODlink-compatible device. Essentially a video necklace."
icon_state = "modlink"
actions_types = list(/datum/action/item_action/call_link)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3)
/// The installed power cell.
var/obj/item/stock_parts/power_store/cell
/// The MODlink datum we operate.
diff --git a/code/modules/mod/mod_paint.dm b/code/modules/mod/mod_paint.dm
index 5446884ec8b..94f44635628 100644
--- a/code/modules/mod/mod_paint.dm
+++ b/code/modules/mod/mod_paint.dm
@@ -10,6 +10,7 @@
desc = "This kit will repaint your MODsuit to something unique."
icon = 'icons/obj/clothing/modsuit/mod_construction.dmi'
icon_state = "paintkit"
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 5)
var/obj/item/mod/control/editing_mod
var/atom/movable/screen/map_view/proxy_view
var/list/current_color
diff --git a/code/modules/mod/modules/module_holding.dm b/code/modules/mod/modules/module_holding.dm
index 1d8c8642333..06f3a8c5f24 100644
--- a/code/modules/mod/modules/module_holding.dm
+++ b/code/modules/mod/modules/module_holding.dm
@@ -9,6 +9,7 @@
icon_state = "storage_holding"
complexity = 4
storage_type = null // core-less modules should be safe to insert into bags of holding
+ custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 7.5, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 2.5)
var/prebuilt = FALSE
var/core_removable = TRUE
var/datum/component/anomaly_locked_module/anomalock
diff --git a/code/modules/mod/modules/module_kinesis.dm b/code/modules/mod/modules/module_kinesis.dm
index f79701e7961..027bbf587bf 100644
--- a/code/modules/mod/modules/module_kinesis.dm
+++ b/code/modules/mod/modules/module_kinesis.dm
@@ -16,6 +16,7 @@
overlay_state_active = "module_kinesis_on"
accepted_anomalies = list(/obj/item/assembly/signaler/anomaly/grav)
required_slots = list(ITEM_SLOT_GLOVES)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT)
/// Range of the knesis grab.
var/grab_range = 8
/// Time between us hitting objects with kinesis.
diff --git a/code/modules/mod/modules/module_pathfinder.dm b/code/modules/mod/modules/module_pathfinder.dm
index 657aa42b084..e179f12390e 100644
--- a/code/modules/mod/modules/module_pathfinder.dm
+++ b/code/modules/mod/modules/module_pathfinder.dm
@@ -18,6 +18,7 @@
incompatible_modules = list(/obj/item/mod/module/pathfinder)
required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT)
allow_flags = list(MODULE_ALLOW_INACTIVE|MODULE_ALLOW_UNWORN)
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT)
/// The pathfinding implant.
var/obj/item/implant/mod/implant
/// Whether the implant has been used or not
@@ -196,6 +197,7 @@
desc = "Lets you recall a MODsuit to you at any time."
actions_types = list(/datum/action/item_action/mod_recall)
allow_multiple = TRUE // Surgrey is annoying if you loose your MOD
+ custom_materials = null
/// The pathfinder module we are linked to.
var/obj/item/mod/module/pathfinder/module
implant_info = "Activated manually. Allows for the recall of a Modular Outerwear Device by the implant owner at any time."
diff --git a/code/modules/mod/modules/modules_engineering.dm b/code/modules/mod/modules/modules_engineering.dm
index 9b24c5b7dc3..4bbf420b55b 100644
--- a/code/modules/mod/modules/modules_engineering.dm
+++ b/code/modules/mod/modules/modules_engineering.dm
@@ -11,6 +11,7 @@
incompatible_modules = list(/obj/item/mod/module/welding)
overlay_state_inactive = "module_welding"
required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_EYES|ITEM_SLOT_MASK)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
/obj/item/mod/module/welding/on_part_activation()
var/obj/item/clothing/head_cover = mod.get_part_from_slot(ITEM_SLOT_HEAD) || mod.get_part_from_slot(ITEM_SLOT_MASK) || mod.get_part_from_slot(ITEM_SLOT_EYES)
@@ -68,6 +69,7 @@
active_power_cost = DEFAULT_CHARGE_DRAIN * 0.5
incompatible_modules = list(/obj/item/mod/module/t_ray)
required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_EYES|ITEM_SLOT_MASK)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
/// T-ray scan range.
var/range = 4
@@ -87,6 +89,7 @@
active_power_cost = DEFAULT_CHARGE_DRAIN * 0.5
incompatible_modules = list(/obj/item/mod/module/magboot, /obj/item/mod/module/atrocinator)
required_slots = list(ITEM_SLOT_FEET)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 5)
/// Slowdown added onto the suit.
var/slowdown_active = 0.5
/// A list of traits to add to the wearer when we're active (see: Magboots)
@@ -132,6 +135,7 @@
incompatible_modules = list(/obj/item/mod/module/tether)
cooldown_time = 1.5 SECONDS
required_slots = list(ITEM_SLOT_GLOVES)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 5)
/obj/item/mod/module/tether/used()
if(HAS_TRAIT_FROM(mod.wearer, TRAIT_TETHER_ATTACHED, REF(src)))
@@ -376,6 +380,7 @@
incompatible_modules = list(/obj/item/mod/module/rad_protection)
tgui_id = "rad_counter"
required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_MASK, ITEM_SLOT_OCLOTHING|ITEM_SLOT_ICLOTHING, ITEM_SLOT_GLOVES, ITEM_SLOT_FEET)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 5)
/// Radiation threat level being perceived.
var/perceived_threat_level
@@ -421,6 +426,7 @@
incompatible_modules = list(/obj/item/mod/module/constructor, /obj/item/mod/module/quick_carry)
cooldown_time = 11 SECONDS
required_slots = list(ITEM_SLOT_GLOVES)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 5)
/obj/item/mod/module/constructor/on_part_activation()
ADD_TRAIT(mod.wearer, TRAIT_QUICK_BUILD, REF(src))
@@ -444,6 +450,7 @@
complexity = 1
incompatible_modules = list(/obj/item/mod/module/welding/syndicate, /obj/item/mod/module/infiltrator)
required_slots = list(ITEM_SLOT_HEAD)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
/obj/item/mod/module/headprotector/on_part_activation()
ADD_TRAIT(mod.wearer, TRAIT_HEAD_INJURY_BLOCKED, REF(src))
@@ -476,6 +483,7 @@
desc = "An atmospheric resin mister, able to fix up areas quickly."
device = /obj/item/extinguisher/mini/nozzle/mod
volume = 250
+ custom_materials = list(/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/mod/module/mister/atmos/Initialize(mapload)
. = ..()
diff --git a/code/modules/mod/modules/modules_general.dm b/code/modules/mod/modules/modules_general.dm
index d3be4eaca02..6a6862e918b 100644
--- a/code/modules/mod/modules/modules_general.dm
+++ b/code/modules/mod/modules/modules_general.dm
@@ -9,6 +9,7 @@
complexity = 1
incompatible_modules = list(/obj/item/mod/module/storage, /obj/item/mod/module/plate_compression)
required_slots = list(ITEM_SLOT_BACK)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
/// The storage type to create for the module
var/datum/storage/storage_type = /datum/storage/mod_storage
@@ -55,6 +56,7 @@
complexity = 3
icon_state = "storage_large"
storage_type = /datum/storage/mod_storage/expanded
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/uranium = SHEET_MATERIAL_AMOUNT)
/obj/item/mod/module/storage/syndicate
name = "MOD syndicate storage module"
@@ -98,6 +100,7 @@
overlay_state_inactive = "module_jetpack"
overlay_state_active = "module_jetpack_on"
required_slots = list(ITEM_SLOT_BACK)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 7.5, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5)
/// Do we have stabilizers? If yes the user won't move from inertia.
var/stabilize = TRUE
/// Callback to see if we can thrust the user.
@@ -228,6 +231,7 @@
incompatible_modules = list(/obj/item/mod/module/status_readout)
tgui_id = "status_readout"
required_slots = list(ITEM_SLOT_BACK)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 2)
/// Does this show damage types, body temp, satiety?
var/display_detailed_vitals = TRUE
/// Does this show DNA data?
@@ -319,6 +323,7 @@
complexity = 1
incompatible_modules = list(/obj/item/mod/module/mouthhole)
required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_MASK)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 7.5)
/// Former flags of the helmet.
var/former_helmet_flags = NONE
/// Former visor flags of the helmet.
@@ -376,6 +381,7 @@
idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.3
incompatible_modules = list(/obj/item/mod/module/emp_shield)
required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5)
/obj/item/mod/module/emp_shield/on_install()
. = ..()
@@ -416,6 +422,7 @@
light_power = 1
light_on = FALSE
required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_MASK)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
/// Charge drain per range amount.
var/base_power = DEFAULT_CHARGE_DRAIN * 0.1
/// Minimum range we can set.
@@ -526,6 +533,7 @@
use_energy_cost = DEFAULT_CHARGE_DRAIN * 5
incompatible_modules = list(/obj/item/mod/module/longfall)
required_slots = list(ITEM_SLOT_FEET)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5)
/obj/item/mod/module/longfall/on_part_activation()
RegisterSignal(mod.wearer, COMSIG_LIVING_Z_IMPACT, PROC_REF(z_impact_react))
@@ -564,6 +572,7 @@
active_power_cost = DEFAULT_CHARGE_DRAIN * 0.3
incompatible_modules = list(/obj/item/mod/module/thermal_regulator)
required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
/// The temperature we are regulating to.
var/temperature_setting = BODYTEMP_NORMAL
/// Minimum temperature we can set.
@@ -595,6 +604,7 @@
use_energy_cost = DEFAULT_CHARGE_DRAIN * 3
incompatible_modules = list(/obj/item/mod/module/dna_lock, /obj/item/mod/module/eradication_lock)
cooldown_time = 0.5 SECONDS
+ custom_materials = list(/datum/material/diamond = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
/// The DNA we lock with.
var/dna = null
@@ -671,6 +681,7 @@
idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.3
incompatible_modules = list(/obj/item/mod/module/plasma_stabilizer)
required_slots = list(ITEM_SLOT_HEAD)
+ custom_materials = list(/datum/material/plasma = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
/obj/item/mod/module/plasma_stabilizer/generate_worn_overlay(obj/item/source, mutable_appearance/standing)
. = ..()
@@ -742,6 +753,7 @@
idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.3
incompatible_modules = list(/obj/item/mod/module/signlang_radio)
required_slots = list(ITEM_SLOT_GLOVES)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
/obj/item/mod/module/signlang_radio/on_part_activation()
ADD_TRAIT(mod.wearer, TRAIT_CAN_SIGN_ON_COMMS, REF(src))
@@ -756,6 +768,7 @@
icon_state = "joint_torsion"
complexity = 1
required_slots = list(ITEM_SLOT_FEET)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2.5, /datum/material/titanium = SMALL_MATERIAL_AMOUNT)
var/power_per_step = DEFAULT_CHARGE_DRAIN * 0.45
/obj/item/mod/module/joint_torsion/on_part_activation()
@@ -799,6 +812,7 @@
overlay_state_inactive = "module_recycler"
overlay_state_active = "module_recycler"
required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2)
/// A multiplier of the amount of material extracted from the item
var/efficiency = 1
/// Items that will be collected
@@ -935,6 +949,7 @@
overlay_state_inactive = "fishing_glove"
incompatible_modules = list(/obj/item/mod/module/fishing_glove)
required_slots = list(ITEM_SLOT_GLOVES)
+ custom_materials = list(/datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT)
var/obj/item/fishing_rod/equipped
/obj/item/mod/module/fishing_glove/Initialize(mapload)
diff --git a/code/modules/mod/modules/modules_medical.dm b/code/modules/mod/modules/modules_medical.dm
index 16e3bbe9061..3e36b1734bf 100644
--- a/code/modules/mod/modules/modules_medical.dm
+++ b/code/modules/mod/modules/modules_medical.dm
@@ -18,6 +18,7 @@
cooldown_time = 0.5 SECONDS
tgui_id = "health_analyzer"
required_slots = list(ITEM_SLOT_GLOVES)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
/// Scanning mode, changes how we scan something.
var/mode = HEALTH_SCAN
@@ -73,6 +74,7 @@
idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.3
incompatible_modules = list(/obj/item/mod/module/quick_carry, /obj/item/mod/module/constructor)
required_slots = list(ITEM_SLOT_GLOVES)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 5)
var/quick_carry_trait = TRAIT_QUICK_CARRY
/obj/item/mod/module/quick_carry/on_part_activation()
@@ -105,6 +107,7 @@
incompatible_modules = list(/obj/item/mod/module/injector)
cooldown_time = 0.5 SECONDS
required_slots = list(ITEM_SLOT_GLOVES)
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/reagent_containers/syringe/mod
name = "MOD injector syringe"
@@ -116,6 +119,7 @@
possible_transfer_amounts = list(5, 10, 15, 20, 30)
volume = 30
inject_flags = INJECT_CHECK_PENETRATE_THICK
+ custom_materials = null
/obj/item/reagent_containers/syringe/mod/update_reagent_overlay()
if(reagents?.total_volume)
@@ -138,6 +142,7 @@
incompatible_modules = list(/obj/item/mod/module/organizer, /obj/item/mod/module/microwave_beam)
cooldown_time = 0.5 SECONDS
required_slots = list(ITEM_SLOT_GLOVES)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
/// How many organs the module can hold.
var/max_organs = 5
/// A list of all our organs.
@@ -225,6 +230,7 @@
bodybag_type = /obj/structure/closet/body_bag/environmental/hardlight
capture_time = 1.5 SECONDS
packup_time = 0.5 SECONDS
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 5)
///Defibrillator - Gives the suit an extendable pair of shock paddles.
/obj/item/mod/module/defibrillator
@@ -245,6 +251,7 @@
incompatible_modules = list(/obj/item/mod/module/defibrillator)
cooldown_time = 0.5 SECONDS
required_slots = list(ITEM_SLOT_GLOVES)
+ custom_materials = list(/datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 2.5)
var/defib_cooldown = 5 SECONDS
/obj/item/mod/module/defibrillator/Initialize(mapload)
@@ -307,6 +314,7 @@
cooldown_time = 1.5 SECONDS
overlay_state_inactive = "module_threadripper"
required_slots = list(ITEM_SLOT_GLOVES)
+ custom_materials = list(/datum/material/silver = SMALL_MATERIAL_AMOUNT * 7.5, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 5, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 2.5)
/// An associated list of ripped clothing and the body part covering slots they covered before
var/list/ripped_clothing = list()
@@ -380,9 +388,11 @@
device = /obj/item/surgical_processor/mod
incompatible_modules = list(/obj/item/mod/module/surgical_processor)
cooldown_time = 0.5 SECONDS
+ custom_materials = list(/datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 2.5)
/obj/item/surgical_processor/mod
name = "MOD surgical processor"
+ custom_materials = null
/obj/item/mod/module/surgical_processor/preloaded
desc = "A module using an onboard surgical computer which can be connected to other computers to download and \
diff --git a/code/modules/mod/modules/modules_ninja.dm b/code/modules/mod/modules/modules_ninja.dm
index 1f530e8904d..83f698a23d9 100644
--- a/code/modules/mod/modules/modules_ninja.dm
+++ b/code/modules/mod/modules/modules_ninja.dm
@@ -14,6 +14,7 @@
incompatible_modules = list(/obj/item/mod/module/stealth)
cooldown_time = 5 SECONDS
required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_MASK, ITEM_SLOT_OCLOTHING|ITEM_SLOT_ICLOTHING, ITEM_SLOT_GLOVES, ITEM_SLOT_FEET)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 5)
/// Whether or not the cloak turns off on bumping.
var/bumpoff = TRUE
/// The alpha applied when the cloak is on.
diff --git a/code/modules/mod/modules/modules_science.dm b/code/modules/mod/modules/modules_science.dm
index 8a41d449edf..3cae66ab525 100644
--- a/code/modules/mod/modules/modules_science.dm
+++ b/code/modules/mod/modules/modules_science.dm
@@ -12,6 +12,7 @@
active_power_cost = DEFAULT_CHARGE_DRAIN * 0.2
incompatible_modules = list(/obj/item/mod/module/reagent_scanner)
required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_EYES|ITEM_SLOT_MASK)
+ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
/obj/item/mod/module/reagent_scanner/on_activation(mob/activator)
ADD_TRAIT(mod.wearer, TRAIT_REAGENT_SCANNER, REF(src))
@@ -60,6 +61,7 @@
incompatible_modules = list(/obj/item/mod/module/atrocinator, /obj/item/mod/module/anomaly_locked/antigrav)
accepted_anomalies = list(/obj/item/assembly/signaler/anomaly/grav)
required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/uranium = SHEET_MATERIAL_AMOUNT)
/obj/item/mod/module/anomaly_locked/antigrav/on_activation(mob/activator)
if(mod.wearer.has_gravity())
@@ -93,6 +95,7 @@
incompatible_modules = list(/obj/item/mod/module/anomaly_locked/teleporter)
accepted_anomalies = list(/obj/item/assembly/signaler/anomaly/bluespace)
required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT)
/// Time it takes to teleport
var/teleport_time = 1 SECONDS
/// Maximum turf range
diff --git a/code/modules/mod/modules/modules_security.dm b/code/modules/mod/modules/modules_security.dm
index 9f5f1a257b9..9446bb4e552 100644
--- a/code/modules/mod/modules/modules_security.dm
+++ b/code/modules/mod/modules/modules_security.dm
@@ -9,6 +9,7 @@
use_energy_cost = DEFAULT_CHARGE_DRAIN
incompatible_modules = list(/obj/item/mod/module/magnetic_harness)
required_slots = list(ITEM_SLOT_OCLOTHING)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 7.5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 5)
/// Time before we activate the magnet.
var/magnet_delay = 0.5 SECONDS
/// The typecache of all guns we allow.
@@ -116,6 +117,7 @@
incompatible_modules = list(/obj/item/mod/module/holster)
cooldown_time = 0.5 SECONDS
allow_flags = MODULE_ALLOW_INACTIVE
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
/// Gun we have holstered.
var/obj/item/gun/holstered
@@ -198,6 +200,7 @@
incompatible_modules = list(/obj/item/mod/module/criminalcapture)
cooldown_time = 0.5 SECONDS
required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 5)
/// Time to capture a prisoner.
var/capture_time = 2.5 SECONDS
/// Time to dematerialize a bodybag.
@@ -275,6 +278,7 @@
icon_state = "mirage_grenade"
cooldown_time = 20 SECONDS
overlay_state_inactive = "module_mirage_grenade"
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 5)
dispense_type = /obj/item/grenade/mirage
/obj/item/mod/module/dispenser/mirage/on_use(mob/activator)
@@ -313,6 +317,7 @@
incompatible_modules = list(/obj/item/mod/module/projectile_dampener)
cooldown_time = 1.5 SECONDS
required_slots = list(ITEM_SLOT_BACK|ITEM_SLOT_BELT)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 5)
/// Radius of the dampening field.
var/field_radius = 2
/// Damage multiplier on projectiles.
@@ -354,6 +359,7 @@
incompatible_modules = list(/obj/item/mod/module/active_sonar)
cooldown_time = 15 SECONDS
required_slots = list(ITEM_SLOT_HEAD|ITEM_SLOT_EYES|ITEM_SLOT_MASK)
+ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 5, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 2.5, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 2.5)
/// Time between us displaying radial scans
var/scan_cooldown_time = 0.5 SECONDS
/// The current slice we're going to scan
@@ -468,6 +474,7 @@
complexity = 3
incompatible_modules = list(/obj/item/mod/module/shooting_assistant)
required_slots = list(ITEM_SLOT_GLOVES)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2, /datum/material/gold = SMALL_MATERIAL_AMOUNT, /datum/material/diamond = SMALL_MATERIAL_AMOUNT)
var/selected_mode = SHOOTING_ASSISTANT_OFF
///Association list, the assoc values are the balloon alerts shown to the user when the mode is set.
var/static/list/available_modes = list(
diff --git a/code/modules/mod/modules/modules_service.dm b/code/modules/mod/modules/modules_service.dm
index 1ef5a55b5c5..0e23f8adb10 100644
--- a/code/modules/mod/modules/modules_service.dm
+++ b/code/modules/mod/modules/modules_service.dm
@@ -11,6 +11,7 @@
use_energy_cost = DEFAULT_CHARGE_DRAIN
incompatible_modules = list(/obj/item/mod/module/bikehorn)
cooldown_time = 1 SECONDS
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 5)
/obj/item/mod/module/bikehorn/on_use(mob/activator)
playsound(src, 'sound/items/bikehorn.ogg', 100, FALSE)
@@ -38,6 +39,7 @@
incompatible_modules = list(/obj/item/mod/module/microwave_beam, /obj/item/mod/module/organizer)
cooldown_time = 4 SECONDS
required_slots = list(ITEM_SLOT_GLOVES)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 5)
/obj/item/mod/module/microwave_beam/on_select_use(atom/target)
. = ..()
@@ -71,6 +73,7 @@
idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.2
incompatible_modules = list(/obj/item/mod/module/waddle)
required_slots = list(ITEM_SLOT_FEET)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 5)
/obj/item/mod/module/waddle/on_part_activation()
var/obj/item/shoes = mod.get_part_from_slot(ITEM_SLOT_FEET)
@@ -95,6 +98,7 @@
device = /obj/item/reagent_containers/spray/mister/janitor
volume = 100
active_power_cost = DEFAULT_CHARGE_DRAIN
+ custom_materials = list(/datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/mod/module/mister/cleaner/Initialize(mapload)
. = ..()
diff --git a/code/modules/mod/modules/modules_supply.dm b/code/modules/mod/modules/modules_supply.dm
index 8c679440668..bef136cabea 100644
--- a/code/modules/mod/modules/modules_supply.dm
+++ b/code/modules/mod/modules/modules_supply.dm
@@ -13,6 +13,7 @@
incompatible_modules = list(/obj/item/mod/module/gps)
cooldown_time = 0.5 SECONDS
allow_flags = MODULE_ALLOW_INACTIVE
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/mod/module/gps/Initialize(mapload)
. = ..()
@@ -36,6 +37,7 @@
overlay_state_inactive = "module_clamp"
overlay_state_active = "module_clamp_on"
required_slots = list(ITEM_SLOT_GLOVES, ITEM_SLOT_BACK)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT)
/// Time it takes to load a crate.
var/load_time = 3 SECONDS
/// The max amount of crates you can carry.
@@ -136,6 +138,7 @@
overlay_state_active = "module_drill"
required_slots = list(ITEM_SLOT_GLOVES)
toolspeed = 0.25
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/// Are we currently in passive sphere mode?
var/ballin = FALSE
/// Last tick when we bumpmined. Prevents diagonal bumpnining being thrice as fast as normal
@@ -250,6 +253,7 @@
cooldown_time = 0.5 SECONDS
allow_flags = MODULE_ALLOW_INACTIVE
required_slots = list(ITEM_SLOT_BACK)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 7.5)
/// Are we currently dropping off ores? Used to prevent the bag from instantly picking up ores after dropping them
var/dropping_ores = FALSE
@@ -370,6 +374,7 @@
complexity = 2
idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.3
incompatible_modules = list(/obj/item/mod/module/disposal_connector)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT)
var/disposal_tag = NONE
/obj/item/mod/module/disposal_connector/Initialize(mapload)
diff --git a/code/modules/mod/modules/modules_visor.dm b/code/modules/mod/modules/modules_visor.dm
index 443db90c51c..edb880d74ba 100644
--- a/code/modules/mod/modules/modules_visor.dm
+++ b/code/modules/mod/modules/modules_visor.dm
@@ -30,6 +30,7 @@
access data such as patient files in a convenient readout. They say these also let you see behind you."
icon_state = "medhud_visor"
visor_traits = list(TRAIT_MEDICAL_HUD)
+ custom_materials = list(/datum/material/silver = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
//Diagnostic Visor - Gives you a diagnostic HUD.
/obj/item/mod/module/visor/diaghud
@@ -39,6 +40,7 @@
and integrity of such. They say these also let you see behind you."
icon_state = "diaghud_visor"
visor_traits = list(TRAIT_DIAGNOSTIC_HUD, TRAIT_BOT_PATH_HUD)
+ custom_materials = list(/datum/material/gold = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
//Security Visor - Gives you a security HUD.
/obj/item/mod/module/visor/sechud
@@ -48,6 +50,7 @@
and generally know who to shoot. They say these also let you see behind you."
icon_state = "sechud_visor"
visor_traits = list(TRAIT_SECURITY_HUD)
+ custom_materials = list(/datum/material/titanium = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
//Meson Visor - Gives you meson vision.
/obj/item/mod/module/visor/meson
@@ -57,6 +60,7 @@
through walls, regardless of lighting conditions. They say these also let you see behind you."
icon_state = "meson_visor"
visor_traits = list(TRAIT_MESON_VISION, TRAIT_MADNESS_IMMUNE)
+ custom_materials = list(/datum/material/uranium = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
//Thermal Visor - Gives you thermal vision.
/obj/item/mod/module/visor/thermal
diff --git a/code/modules/modular_computers/computers/item/disks/computer_disk.dm b/code/modules/modular_computers/computers/item/disks/computer_disk.dm
index 6740aefbe12..84de84c3065 100644
--- a/code/modules/modular_computers/computers/item/disks/computer_disk.dm
+++ b/code/modules/modular_computers/computers/item/disks/computer_disk.dm
@@ -1,4 +1,5 @@
/obj/item/disk/computer
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT)
/// The amount of free storage space
var/max_capacity = 16
/// The amount of storage space occupied
@@ -49,9 +50,11 @@
name = "advanced data disk"
icon_state = "datadisk5"
max_capacity = 64
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 2)
/obj/item/disk/computer/super
name = "super data disk"
desc = "Removable disk used to store large amounts of data."
icon_state = "datadisk3"
max_capacity = 256
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 4)
diff --git a/code/modules/modular_computers/computers/item/laptop.dm b/code/modules/modular_computers/computers/item/laptop.dm
index 6c68da7dcaa..62896058747 100644
--- a/code/modules/modular_computers/computers/item/laptop.dm
+++ b/code/modules/modular_computers/computers/item/laptop.dm
@@ -7,6 +7,7 @@
icon_state_powered = "laptop"
icon_state_unpowered = "laptop-off"
icon_state_menu = "menu"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4.3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4.5)
hardware_flag = PROGRAM_LAPTOP
max_idle_programs = 3
diff --git a/code/modules/pai/card.dm b/code/modules/pai/card.dm
index b5d2e183c9f..be057d5a517 100644
--- a/code/modules/pai/card.dm
+++ b/code/modules/pai/card.dm
@@ -14,6 +14,7 @@
sound_vary = TRUE
pickup_sound = SFX_GENERIC_DEVICE_PICKUP
drop_sound = SFX_GENERIC_DEVICE_DROP
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/// Spam alert prevention
var/alert_cooldown
diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm
index 5ffe1ccbaf2..b3bc4f087fc 100644
--- a/code/modules/paperwork/handlabeler.dm
+++ b/code/modules/paperwork/handlabeler.dm
@@ -162,6 +162,7 @@
resistance_flags = FLAMMABLE
max_integrity = 100
item_flags = NOBLUDGEON
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.2)
/// The label item applied when labelling something
/obj/item/label
diff --git a/code/modules/paperwork/paper_biscuit.dm b/code/modules/paperwork/paper_biscuit.dm
index 75d14f551d2..88f4a0067e8 100644
--- a/code/modules/paperwork/paper_biscuit.dm
+++ b/code/modules/paperwork/paper_biscuit.dm
@@ -10,6 +10,7 @@
contents_hidden = TRUE
paper_overlay_state = "paperbiscuit_paper"
folder_type_name = "biscuit"
+ custom_materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT * 0.2)
/// Is biscuit cracked open or not?
var/cracked = FALSE
/// The paper slip inside, if there is one
@@ -110,6 +111,7 @@
On the back, DO NOT DIGEST is printed in large lettering."
icon_state = "paperbiscuit_secret"
bg_color = "#355e9f"
+ custom_materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT * 0.3)
/obj/item/folder/biscuit/confidential/spare_id_safe_code
name = "spare ID safe code biscuit card"
@@ -164,3 +166,4 @@
icon_state = "paperbiscuit_secret_cracked"
bg_color = "#355e9f"
sealed_icon = "paperbiscuit_secret"
+ custom_materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT * 0.3)
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index deae5f862d2..2580e11bd4e 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -574,6 +574,7 @@
desc = "This is a red ink pen exclusively provided to members of the Security Department. Its opposite end features a built-in holographic projector designed for issuing arrest prompts to individuals."
icon_state = "pen_sec"
COOLDOWN_DECLARE(holosign_cooldown)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT)
/obj/item/pen/red/security/examine(mob/user)
. = ..()
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index b9c6abcab50..5f590001c47 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -882,6 +882,7 @@ GLOBAL_LIST_INIT(paper_blanks, init_paper_blanks())
icon = 'icons/obj/service/bureaucracy.dmi'
icon_state = "tonercartridge"
w_class = WEIGHT_CLASS_SMALL
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.1, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.1)
var/charges = 5
var/max_charges = 5
@@ -895,6 +896,7 @@ GLOBAL_LIST_INIT(paper_blanks, init_paper_blanks())
/obj/item/toner/large
name = "large toner cartridge"
desc = "A hefty cartridge of Nanotrasen ValueBrand toner. Fits photocopiers and autopainters alike."
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5)
charges = 25
max_charges = 25
@@ -904,6 +906,8 @@ GLOBAL_LIST_INIT(paper_blanks, init_paper_blanks())
/obj/item/toner/extreme
name = "extremely large toner cartridge"
desc = "Why would ANYONE need THIS MUCH TONER?"
+ w_class = WEIGHT_CLASS_NORMAL
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 4, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4)
charges = 200
max_charges = 200
diff --git a/code/modules/paperwork/ticketmachine.dm b/code/modules/paperwork/ticketmachine.dm
index 05b037f90c5..b1b9086820c 100644
--- a/code/modules/paperwork/ticketmachine.dm
+++ b/code/modules/paperwork/ticketmachine.dm
@@ -77,6 +77,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/ticket_machine, 32)
icon_state = "ticketmachine_off"
result_path = /obj/machinery/ticket_machine
pixel_shift = 32
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 4)
///Increments the counter by one, if there is a ticket after the current one we are serving.
///If we have a current ticket, remove it from the top of our tickets list and replace it with the next one if applicable
diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm
index 2cf50d568c7..3494d0708a8 100644
--- a/code/modules/photography/camera/camera.dm
+++ b/code/modules/photography/camera/camera.dm
@@ -16,7 +16,7 @@
w_class = WEIGHT_CLASS_SMALL
obj_flags = CONDUCTS_ELECTRICITY
slot_flags = ITEM_SLOT_NECK
- custom_materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*0.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT*1.5)
+ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5)
custom_price = PAYCHECK_CREW * 2
/// Cooldown before we can take another picture.
diff --git a/code/modules/power/apc/apc_main.dm b/code/modules/power/apc/apc_main.dm
index 90dd03444f2..eae4e3f181e 100644
--- a/code/modules/power/apc/apc_main.dm
+++ b/code/modules/power/apc/apc_main.dm
@@ -808,6 +808,7 @@
name = "power control module"
icon_state = "power_mod"
desc = "Heavy-duty switching circuits for power control."
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT)
/// Returns the amount of time it will take the APC at its current trickle charge rate to reach a charge level. If the APC is functionally not charging, returns null.
/obj/machinery/power/apc/proc/time_to_charge(joules)
diff --git a/code/modules/power/battery.dm b/code/modules/power/battery.dm
index 3f0256129b3..1d8318d7c88 100644
--- a/code/modules/power/battery.dm
+++ b/code/modules/power/battery.dm
@@ -12,7 +12,7 @@
throwforce = 5
throw_speed = 2
throw_range = 2
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*12, /datum/material/glass=SMALL_MATERIAL_AMOUNT*2)
+ custom_materials = list(/datum/material/iron= SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/glass=SMALL_MATERIAL_AMOUNT*2)
rating_base = STANDARD_BATTERY_CHARGE
maxcharge = STANDARD_BATTERY_CHARGE
chargerate = STANDARD_BATTERY_RATE
@@ -27,14 +27,13 @@
name = "upgraded megacell"
desc = "A battery with a slightly higher capacity than normal!"
maxcharge = STANDARD_BATTERY_CHARGE * 2.5
- custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*2.5)
chargerate = STANDARD_BATTERY_RATE * 0.5
/obj/item/stock_parts/power_store/battery/high
name = "high-capacity megacell"
icon_state = "hcellbig"
maxcharge = STANDARD_BATTERY_CHARGE * 10
- custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT * 3)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3)
chargerate = STANDARD_BATTERY_RATE * 0.75
/obj/item/stock_parts/power_store/battery/high/empty
@@ -44,7 +43,7 @@
name = "super-capacity megacell"
icon_state = "scellbig"
maxcharge = STANDARD_BATTERY_CHARGE * 20
- custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT * 4)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4)
chargerate = STANDARD_BATTERY_RATE
/obj/item/stock_parts/power_store/battery/super/empty
@@ -54,7 +53,7 @@
name = "hyper-capacity megacell"
icon_state = "hpcellbig"
maxcharge = STANDARD_BATTERY_CHARGE * 30
- custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT * 5)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 1.5)
chargerate = STANDARD_BATTERY_RATE * 1.5
/obj/item/stock_parts/power_store/battery/hyper/empty
@@ -65,7 +64,14 @@
desc = "A rechargeable transdimensional megacell."
icon_state = "bscellbig"
maxcharge = STANDARD_BATTERY_CHARGE * 40
- custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*6)
+ custom_materials = list(
+ /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2,
+ /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6,
+ /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 3,
+ /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 1.6,
+ /datum/material/gold = SMALL_MATERIAL_AMOUNT * 1.2,
+ /datum/material/bluespace = SMALL_MATERIAL_AMOUNT,
+ )
chargerate = STANDARD_BATTERY_RATE * 2
/obj/item/stock_parts/power_store/battery/bluespace/empty
@@ -75,7 +81,6 @@
name = "\improper Nanotrasen brand rechargeable AA megacell"
desc = "You can't top the plasma top." //TOTALLY TRADEMARK INFRINGEMENT
maxcharge = STANDARD_BATTERY_CHARGE * 0.5
- custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*1)
/obj/item/stock_parts/power_store/battery/crap/empty
empty = TRUE
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index a79e079cbe9..cc01d6cbc42 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -116,7 +116,7 @@
icon_state = "hcell"
emp_damage_modifier = 3
maxcharge = STANDARD_CELL_CHARGE * 10
- custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*0.6)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.7, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.6)
chargerate = STANDARD_CELL_RATE * 0.75
@@ -128,7 +128,7 @@
icon_state = "scell"
emp_damage_modifier = 5
maxcharge = STANDARD_CELL_CHARGE * 20
- custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT * 3)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.7, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.7)
chargerate = STANDARD_CELL_RATE
/obj/item/stock_parts/power_store/cell/super/empty
@@ -139,7 +139,7 @@
icon_state = "hpcell"
emp_damage_modifier = 5
maxcharge = STANDARD_CELL_CHARGE * 30
- custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT * 4)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.7, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.8)
chargerate = STANDARD_CELL_RATE * 1.5
/obj/item/stock_parts/power_store/cell/hyper/empty
@@ -151,7 +151,14 @@
icon_state = "bscell"
emp_damage_modifier = 5
maxcharge = STANDARD_CELL_CHARGE * 40
- custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*6)
+ custom_materials = list(
+ /datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.8,
+ /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 3,
+ /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.6,
+ /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 1.6,
+ /datum/material/gold = SMALL_MATERIAL_AMOUNT * 1.2,
+ /datum/material/bluespace = SMALL_MATERIAL_AMOUNT,
+ )
chargerate = STANDARD_CELL_RATE * 2
/obj/item/stock_parts/power_store/cell/bluespace/empty
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index af4e7fa98ac..cedec224d97 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -644,6 +644,7 @@
consumed_on_removal = FALSE
consumable = FALSE
laser_color = COLOR_TRUE_BLUE
+ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5)
/obj/item/emitter_disk/healing
name = "\improper Diode Disk: Bioregenerative"
@@ -652,6 +653,7 @@
consumed_on_removal = FALSE
consumable = FALSE
laser_color = COLOR_YELLOW
+ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT, /datum/material/silver = SMALL_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5)
/obj/item/emitter_disk/incendiary
name = "\improper Diode Disk: Conflagratory"
@@ -660,7 +662,7 @@
consumed_on_removal = FALSE
consumable = FALSE
laser_color = COLOR_RED_LIGHT
-
+ custom_materials = list(/datum/material/plasma = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 0.5)
/obj/item/emitter_disk/sanity
name = "\improper Diode Disk: Psychosiphoning"
@@ -669,7 +671,7 @@
consumed_on_removal = FALSE
consumable = FALSE
laser_color = COLOR_TONGUE_PINK
-
+ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 0.5)
/obj/item/emitter_disk/magnetic
name = "\improper Diode Disk: Magnetogenerative"
@@ -678,6 +680,7 @@
consumed_on_removal = FALSE
consumable = FALSE
laser_color = COLOR_SILVER
+ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 0.5)
/obj/item/emitter_disk/blast
name = "\improper Diode Disk: Hyperconcussive"
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index 5f4ba2c0c70..8f1c31e195a 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -266,6 +266,7 @@
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
w_class = WEIGHT_CLASS_BULKY // Pretty big!
anchored = FALSE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.75, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
var/tracker = 0
var/glass_type = null
var/random_offset = 6 //amount in pixels an unanchored assembly may be offset by
diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm
index acdac510065..91ed11bf37b 100644
--- a/code/modules/power/tracker.dm
+++ b/code/modules/power/tracker.dm
@@ -160,6 +160,7 @@
/obj/item/electronics/tracker
name = "tracker electronics"
+ custom_materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT)
#undef TRACKER_Z_OFFSET
#undef TRACKER_EDGE_Z_OFFSET
diff --git a/code/modules/power/turbine/turbine_parts.dm b/code/modules/power/turbine/turbine_parts.dm
index 2da60eff131..f934f984ee9 100644
--- a/code/modules/power/turbine/turbine_parts.dm
+++ b/code/modules/power/turbine/turbine_parts.dm
@@ -8,6 +8,7 @@
desc = "you really should call an admin"
icon = 'icons/obj/machines/engine/turbine.dmi'
icon_state = "inlet_compressor"
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
///Current part tier
var/current_tier = TURBINE_PART_TIER_ONE
diff --git a/code/modules/projectiles/ammunition/ballistic/foam.dm b/code/modules/projectiles/ammunition/ballistic/foam.dm
index 2a232d4dba7..fb46c6206cc 100644
--- a/code/modules/projectiles/ammunition/ballistic/foam.dm
+++ b/code/modules/projectiles/ammunition/ballistic/foam.dm
@@ -63,4 +63,4 @@
base_icon_state = "foamdart_riot"
tip_color = "red"
embed_type = /datum/embedding/foam_dart/riot
- custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 1.125)
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
diff --git a/code/modules/projectiles/ammunition/ballistic/junk.dm b/code/modules/projectiles/ammunition/ballistic/junk.dm
index 2ec346b7d21..52c4fd5c51b 100644
--- a/code/modules/projectiles/ammunition/ballistic/junk.dm
+++ b/code/modules/projectiles/ammunition/ballistic/junk.dm
@@ -6,7 +6,7 @@
icon_state = "improvshell"
caliber = CALIBER_JUNK
projectile_type = /obj/projectile/bullet/junk
- custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT)
// Junk Shell Spawner; used to spawn in our random shells upon crafting
diff --git a/code/modules/projectiles/ammunition/ballistic/revolver.dm b/code/modules/projectiles/ammunition/ballistic/revolver.dm
index 55029a1e45a..819a948d6f1 100644
--- a/code/modules/projectiles/ammunition/ballistic/revolver.dm
+++ b/code/modules/projectiles/ammunition/ballistic/revolver.dm
@@ -5,6 +5,7 @@
desc = "A .357 bullet casing."
caliber = CALIBER_357
projectile_type = /obj/projectile/bullet/c357
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3)
/obj/item/ammo_casing/c357/spent
projectile_type = null
diff --git a/code/modules/projectiles/ammunition/ballistic/rifle.dm b/code/modules/projectiles/ammunition/ballistic/rifle.dm
index 6df10adf61f..0ece2eed5c5 100644
--- a/code/modules/projectiles/ammunition/ballistic/rifle.dm
+++ b/code/modules/projectiles/ammunition/ballistic/rifle.dm
@@ -6,6 +6,7 @@
icon_state = "310-casing"
caliber = CALIBER_STRILKA310
projectile_type = /obj/projectile/bullet/strilka310
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3)
/obj/item/ammo_casing/strilka310/Initialize(mapload)
. = ..()
@@ -56,6 +57,7 @@
name = "40mm rubber shell"
desc = "A cased rubber puck. The big brother of the beanbag slug. Made for stopping someone dead in their tracks."
projectile_type = /obj/projectile/bullet/shotgun_beanbag/a40mm
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2)
/obj/item/ammo_casing/a40mm/flak
name = "40mm titanium flak shell"
@@ -74,6 +76,7 @@
desc = "A cased tear gas grenade that can only be activated once fired out of a ballistic grenade launcher. Spreads a large amount of tear gas into the air upon impact. \
Great for suppressing riots, protests and birthday parties!"
projectile_type = /obj/projectile/bullet/a40mm/tear_gas
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 2)
/obj/item/disk/design_disk/tear_gas_40mm
name = "40mm riot suppression grenade shells design disk"
diff --git a/code/modules/projectiles/ammunition/ballistic/shotgun.dm b/code/modules/projectiles/ammunition/ballistic/shotgun.dm
index 4382be5fa8c..2bb10d3a3f3 100644
--- a/code/modules/projectiles/ammunition/ballistic/shotgun.dm
+++ b/code/modules/projectiles/ammunition/ballistic/shotgun.dm
@@ -31,7 +31,7 @@
name = "beanbag slug"
desc = "A weak beanbag slug for riot control."
icon_state = "bshell"
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*2.5)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3)
projectile_type = /obj/projectile/bullet/shotgun_beanbag
/obj/item/ammo_casing/shotgun/incendiary
@@ -39,6 +39,7 @@
desc = "An incendiary-coated shotgun slug."
icon_state = "ishell"
projectile_type = /obj/projectile/bullet/incendiary/shotgun
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3)
/obj/item/ammo_casing/shotgun/incendiary/no_trail
name = "precision incendiary slug"
@@ -53,6 +54,7 @@
pellets = 6
variance = 15
randomspread = TRUE
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
/obj/item/ammo_casing/shotgun/stunslug
name = "taser slug"
@@ -66,7 +68,7 @@
desc = "A shotgun shell rigged with CMC technology, which launches a massive slug when fired."
icon_state = "mshell"
projectile_type = /obj/projectile/bullet/cannonball/meteorslug
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 8, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 4)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 3.2)
/obj/item/ammo_casing/shotgun/pulseslug
name = "pulse slug"
@@ -75,13 +77,14 @@
would have difficulty with."
icon_state = "pshell"
projectile_type = /obj/projectile/beam/pulse/shotgun
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.1, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.2)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.8, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.65, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 0.6)
/obj/item/ammo_casing/shotgun/frag12
name = "FRAG-12 slug"
desc = "A high explosive breaching round for a 12 gauge shotgun."
icon_state = "heshell"
projectile_type = /obj/projectile/bullet/shotgun_frag12
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
/obj/item/ammo_casing/shotgun/buckshot
name = "buckshot shell"
@@ -119,7 +122,7 @@
pellets = 6
variance = 15
randomspread = TRUE
- custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT*2)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3)
/obj/item/ammo_casing/shotgun/incapacitate
name = "custom incapacitating shot"
@@ -136,7 +139,7 @@
into outsides."
icon_state = "flechette"
projectile_type = /obj/projectile/bullet/pellet/flechette
- custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
pellets = 8
variance = 10
@@ -148,7 +151,7 @@
Looks like a donk-pocket! Tastes like death!"
icon_state = "flechette_donk"
projectile_type = /obj/projectile/bullet/pellet/flechette/donk
- custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2)
pellets = 5
/obj/item/ammo_casing/shotgun/ion
@@ -160,7 +163,7 @@
pellets = 4
variance = 15
randomspread = TRUE
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.7)
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.15, /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = SMALL_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 0.6)
/obj/item/ammo_casing/shotgun/scatterlaser
name = "scatter laser shell"
@@ -170,6 +173,7 @@
pellets = 6
variance = 15
randomspread = TRUE
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 2)
/obj/item/ammo_casing/shotgun/scatterlaser/emp_act(severity)
. = ..()
@@ -185,6 +189,7 @@
desc = "A high-tech shotgun shell which can be loaded with materials to produce unique effects."
icon_state = "cshell"
projectile_type = null
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
/obj/item/ammo_casing/shotgun/techshell/Initialize(mapload)
. = ..()
@@ -201,6 +206,7 @@
desc = "A dart for use in shotguns. Can be injected with up to 15 units of any chemical."
icon_state = "cshell"
projectile_type = /obj/projectile/bullet/dart
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 3)
var/reagent_amount = 15
/obj/item/ammo_casing/shotgun/dart/Initialize(mapload)
@@ -214,11 +220,13 @@
name = "XL shotgun dart"
desc = "A dart for use in shotguns. Can be injected with up to 25 units of any chemical."
reagent_amount = 25
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5)
/obj/item/ammo_casing/shotgun/dart/bioterror
name = "bioterror dart"
desc = "An improved shotgun dart filled with deadly toxins. Can be injected with up to 30 units of any chemical."
reagent_amount = 30
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5)
/obj/item/ammo_casing/shotgun/dart/bioterror/Initialize(mapload)
. = ..()
diff --git a/code/modules/projectiles/ammunition/energy/_energy.dm b/code/modules/projectiles/ammunition/energy/_energy.dm
index 1ec145650f1..aed40baf5c5 100644
--- a/code/modules/projectiles/ammunition/energy/_energy.dm
+++ b/code/modules/projectiles/ammunition/energy/_energy.dm
@@ -4,6 +4,7 @@
caliber = ENERGY
projectile_type = /obj/projectile/energy
slot_flags = null
+ custom_materials = null
var/e_cost = LASER_SHOTS(10, STANDARD_CELL_CHARGE) //The amount of energy a cell needs to expend to create this shot.
var/select_name = CALIBER_ENERGY
fire_sound = 'sound/items/weapons/laser.ogg'
diff --git a/code/modules/projectiles/ammunition/special/syringe.dm b/code/modules/projectiles/ammunition/special/syringe.dm
index 5ae0e41cfd9..f23eba19caf 100644
--- a/code/modules/projectiles/ammunition/special/syringe.dm
+++ b/code/modules/projectiles/ammunition/special/syringe.dm
@@ -4,6 +4,7 @@
slot_flags = null
projectile_type = /obj/projectile/bullet/dart/syringe
firing_effect_type = null
+ custom_materials = null
/obj/item/ammo_casing/syringegun/ready_proj(atom/target, mob/living/user, quiet, zone_override = "")
if(!loaded_projectile)
diff --git a/code/modules/projectiles/boxes_magazines/external/rifle.dm b/code/modules/projectiles/boxes_magazines/external/rifle.dm
index 41f9ec15492..612645ce83a 100644
--- a/code/modules/projectiles/boxes_magazines/external/rifle.dm
+++ b/code/modules/projectiles/boxes_magazines/external/rifle.dm
@@ -23,10 +23,7 @@
w_class = WEIGHT_CLASS_NORMAL
ammo_type = /obj/item/ammo_casing/c38
caliber = CALIBER_38
- custom_materials = list(
- /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT * 4,
- /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT * 1,
- )
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2)
max_ammo = 15
ammo_band_icon = "+38mag_ammo_band"
ammo_band_color = null
@@ -43,6 +40,7 @@
desc = parent_type::desc + " TRAC bullets embed a tracking implant within the target's body and are entirely nonlethal."
ammo_type = /obj/item/ammo_casing/c38/trac
ammo_band_color = COLOR_AMMO_TRACK
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/ammo_box/magazine/m38/match
name = "battle rifle magazine (.38 Match)"
@@ -55,12 +53,14 @@
desc = parent_type::desc + " These rounds are incredibly bouncy and MOSTLY nonlethal, making them great to show off trickshots with."
ammo_type = /obj/item/ammo_casing/c38/match/bouncy
ammo_band_color = COLOR_AMMO_RUBBER
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2)
/obj/item/ammo_box/magazine/m38/true
name = "battle rifle magazine (.38 True Strike)"
desc = parent_type::desc + " Bullets bounce towards new targets with surprising accuracy and can strike through armored target"
ammo_type = /obj/item/ammo_casing/c38/match/true
ammo_band_color = COLOR_AMMO_TRUESTRIKE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT * 0.75)
/obj/item/ammo_box/magazine/m38/dumdum
name = "battle rifle magazine (.38 DumDum)"
@@ -73,15 +73,18 @@
desc = parent_type::desc + " Hot Shot bullets contain an incendiary payload."
ammo_type = /obj/item/ammo_casing/c38/hotshot
ammo_band_color = COLOR_AMMO_HOTSHOT
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 0.75)
/obj/item/ammo_box/magazine/m38/iceblox
name = "battle rifle magazine (.38 Iceblox)"
desc = parent_type::desc + " Iceblox bullets contain a cryogenic payload."
ammo_type = /obj/item/ammo_casing/c38/iceblox
ammo_band_color = COLOR_AMMO_ICEBLOX
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 0.75)
/obj/item/ammo_box/magazine/m38/flare
name = "battle rifle magazine (.38 Flare)"
desc = parent_type::desc + " Flare casings launch a concentrated particle beam towards a target, lighting them up for everyone to see."
ammo_type = /obj/item/ammo_casing/c38/flare
ammo_band_color = COLOR_AMMO_HELLFIRE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.75)
diff --git a/code/modules/projectiles/boxes_magazines/external/smg.dm b/code/modules/projectiles/boxes_magazines/external/smg.dm
index d8563905475..e8b595d5201 100644
--- a/code/modules/projectiles/boxes_magazines/external/smg.dm
+++ b/code/modules/projectiles/boxes_magazines/external/smg.dm
@@ -8,6 +8,7 @@
ammo_type = /obj/item/ammo_casing/c46x30mm
caliber = CALIBER_46X30MM
max_ammo = 20
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2)
/obj/item/ammo_box/magazine/wt550m9/update_icon_state()
. = ..()
@@ -17,11 +18,13 @@
name = "\improper WT-550 magazine (4.6x30mm AP)"
MAGAZINE_TYPE_ARMORPIERCE
ammo_type = /obj/item/ammo_casing/c46x30mm/ap
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.6)
/obj/item/ammo_box/magazine/wt550m9/wtic
name = "\improper WT-550 magazine (4.6x30mm incendiary)"
MAGAZINE_TYPE_INCENDIARY
ammo_type = /obj/item/ammo_casing/c46x30mm/inc
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/ammo_box/magazine/smartgun
diff --git a/code/modules/projectiles/boxes_magazines/speedloaders.dm b/code/modules/projectiles/boxes_magazines/speedloaders.dm
index 0fe437f05b9..f50b3710110 100644
--- a/code/modules/projectiles/boxes_magazines/speedloaders.dm
+++ b/code/modules/projectiles/boxes_magazines/speedloaders.dm
@@ -49,6 +49,7 @@
custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT)
ammo_band_icon = "+38_ammo_band"
ammo_band_color = null
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3)
/obj/item/ammo_box/speedloader/c38/update_icon_state()
. = ..()
@@ -67,6 +68,7 @@
desc = parent_type::desc + " TRAC bullets embed a tracking implant within the target's body."
ammo_type = /obj/item/ammo_casing/c38/trac
ammo_band_color = COLOR_AMMO_TRACK
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/ammo_box/speedloader/c38/match
name = "speed loader (.38 Match)"
@@ -79,12 +81,14 @@
desc = parent_type::desc + " Rubber rounds are incredibly bouncy and MOSTLY less-lethal, making them great to show off trickshots with."
ammo_type = /obj/item/ammo_casing/c38/match/bouncy
ammo_band_color = COLOR_AMMO_RUBBER
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5)
/obj/item/ammo_box/speedloader/c38/true
name = "speed loader (.38 True Strike)"
desc = parent_type::desc + " True Strike bullets bounce towards new targets with surprising accuracy after ricocheting."
ammo_type = /obj/item/ammo_casing/c38/match/true
ammo_band_color = COLOR_AMMO_TRUESTRIKE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT * 0.75)
/obj/item/ammo_box/speedloader/c38/dumdum
name = "speed loader (.38 DumDum)"
@@ -99,18 +103,21 @@
desc = parent_type::desc + " Hot Shot bullets contain an incendiary payload that ignites struck targets."
ammo_type = /obj/item/ammo_casing/c38/hotshot
ammo_band_color = COLOR_AMMO_HOTSHOT
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 0.75)
/obj/item/ammo_box/speedloader/c38/iceblox
name = "speed loader (.38 Iceblox)"
desc = parent_type::desc + " Iceblox bullets contain a cryogenic payload that lower the body temperature of struck targets."
ammo_type = /obj/item/ammo_casing/c38/iceblox
ammo_band_color = COLOR_AMMO_ICEBLOX
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 0.75)
/obj/item/ammo_box/speedloader/c38/flare
name = "speed loader (.38 Flare)"
desc = parent_type::desc + " Flare casings launch a concentrated particle beam towards a target, lighting them up for everyone to see."
ammo_type = /obj/item/ammo_casing/c38/flare
ammo_band_color = COLOR_AMMO_HELLFIRE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/ammo_box/speedloader/strilka310
name = "stripper clip (.310 Strilka)"
diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm
index 425fb613b79..4ea2f4c5b21 100644
--- a/code/modules/projectiles/guns/ballistic.dm
+++ b/code/modules/projectiles/guns/ballistic.dm
@@ -884,5 +884,6 @@ GLOBAL_LIST_INIT(gun_saw_types, typecacheof(list(
icon = 'icons/obj/weapons/guns/ballistic.dmi'
icon_state = "suppressor"
w_class = WEIGHT_CLASS_TINY
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/// How quiet should the gun be when we're installed?
var/suppression = SUPPRESSED_QUIET
diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm
index 08ddb0155ed..1dd4039a57c 100644
--- a/code/modules/projectiles/guns/ballistic/pistol.dm
+++ b/code/modules/projectiles/guns/ballistic/pistol.dm
@@ -269,7 +269,7 @@
name = "\improper Liberator"
desc = "A poorly made 3D printed \"gun\", only capable of firing a single shot."
icon_state = "doorhickey"
- custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2)
+ custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5)
bolt_type = BOLT_TYPE_NO_BOLT
internal_magazine = TRUE
casing_ejector = FALSE
diff --git a/code/modules/projectiles/guns/ballistic/rifle.dm b/code/modules/projectiles/guns/ballistic/rifle.dm
index 0603c00a5c1..3f28d788182 100644
--- a/code/modules/projectiles/guns/ballistic/rifle.dm
+++ b/code/modules/projectiles/guns/ballistic/rifle.dm
@@ -218,7 +218,7 @@
fire_sound = 'sound/items/xbow_lock.ogg'
can_be_sawn_off = FALSE
tac_reloads = FALSE
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3.1, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.2)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.62)
var/draw_time = 1.5 SECONDS
var/reload_time = 1.5 SECONDS
var/doafter_flags = NONE
@@ -306,7 +306,7 @@
inhand_icon_state = "pipegun"
worn_icon_state = "pipegun"
fire_sound = 'sound/items/weapons/gun/sniper/shot.ogg'
- custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT * 8, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 8, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 8.05, /datum/material/wood = SHEET_MATERIAL_AMOUNT * 8, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 3)
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/pipegun
projectile_damage_multiplier = 1.35
@@ -345,7 +345,7 @@
icon_state = "pipepistol"
inhand_icon_state = "pipepistol"
worn_icon_state = "gun"
- custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT * 4, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 7, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.25, /datum/material/wood = SHEET_MATERIAL_AMOUNT * 4, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT, /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2)
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/pipegun/pistol
projectile_damage_multiplier = 0.50
spread = 15 //kinda inaccurate
@@ -371,11 +371,12 @@
accepted_magazine_type = /obj/item/ammo_box/magazine/internal/boltaction/pipegun/prime
projectile_damage_multiplier = 2
custom_materials = list(
- /datum/material/iron = SHEET_MATERIAL_AMOUNT * 9.15,
- /datum/material/wood = SHEET_MATERIAL_AMOUNT *8,
+ /datum/material/iron = SHEET_MATERIAL_AMOUNT * 9.2,
+ /datum/material/wood = SHEET_MATERIAL_AMOUNT * 8,
/datum/material/gold = SHEET_MATERIAL_AMOUNT * 5,
/datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.15,
/datum/material/cardboard = SHEET_MATERIAL_AMOUNT,
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 3,
)
/obj/item/gun/ballistic/rifle/boltaction/pipegun/pistol/prime
@@ -502,7 +503,12 @@
semi_auto = TRUE
slot_flags = ITEM_SLOT_BACK
projectile_damage_multiplier = 0.5
- custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT * 8, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.5, /datum/material/cardboard = SHEET_MATERIAL_AMOUNT)
+ custom_materials = list(
+ /datum/material/wood = SHEET_MATERIAL_AMOUNT * 8,
+ /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.55,
+ /datum/material/cardboard = SHEET_MATERIAL_AMOUNT,
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2,
+ )
SET_BASE_PIXEL(-8, 0)
diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm
index 77d61147b67..cf291a52863 100644
--- a/code/modules/projectiles/guns/energy.dm
+++ b/code/modules/projectiles/guns/energy.dm
@@ -103,6 +103,7 @@
if(cell && resistance_flags & INDESTRUCTIBLE)
cell.resistance_flags |= INDESTRUCTIBLE
cell.resistance_flags |= BOMB_PROOF
+ cell.custom_materials = null //do not give printed energy guns more mats than they already have.
update_ammo_types()
recharge_newshot(TRUE)
if(selfcharge)
diff --git a/code/modules/projectiles/guns/energy/crank_guns.dm b/code/modules/projectiles/guns/energy/crank_guns.dm
index e2405192fb7..138bb45def5 100644
--- a/code/modules/projectiles/guns/energy/crank_guns.dm
+++ b/code/modules/projectiles/guns/energy/crank_guns.dm
@@ -8,7 +8,7 @@
slot_flags = ITEM_SLOT_BACK
obj_flags = UNIQUE_RENAME
weapon_weight = WEAPON_HEAVY
- custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT * 8, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2)
+ custom_materials = list(/datum/material/wood = SHEET_MATERIAL_AMOUNT * 8, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.35, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.3, /datum/material/plastic = SMALL_MATERIAL_AMOUNT)
light_color = COLOR_PURPLE
/obj/item/gun/energy/laser/musket/add_bayonet_point()
@@ -40,12 +40,11 @@
custom_materials = list(
/datum/material/wood = SHEET_MATERIAL_AMOUNT * 8,
/datum/material/silver = SHEET_MATERIAL_AMOUNT * 5,
- /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.4,
- /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.35,
- /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2,
+ /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.55,
+ /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.45,
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT * 3,
)
-
/obj/item/gun/energy/disabler/smoothbore
name = "smoothbore disabler"
desc = "A hand-crafted disabler, using a hard knock on an energy cell to fire the stunner laser. A lack of proper focusing means it has no accuracy whatsoever."
@@ -57,9 +56,10 @@
obj_flags = UNIQUE_RENAME
custom_materials = list(
/datum/material/wood = SHEET_MATERIAL_AMOUNT * 8,
- /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.25,
+ /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.35,
/datum/material/cardboard = SHEET_MATERIAL_AMOUNT,
- /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.2,
+ /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.5,
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT,
)
/obj/item/gun/energy/disabler/smoothbore/Initialize(mapload)
@@ -92,10 +92,13 @@
spread = 0 //could be like 5, but having just very tiny spread kinda feels like bullshit
custom_materials = list(
/datum/material/wood = SHEET_MATERIAL_AMOUNT * 8,
- /datum/material/gold = SHEET_MATERIAL_AMOUNT * 5,
- /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.25,
+ /datum/material/gold = SHEET_MATERIAL_AMOUNT * 5.15,
+ /datum/material/iron = SHEET_MATERIAL_AMOUNT * 3,
/datum/material/cardboard = SHEET_MATERIAL_AMOUNT,
- /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5.2)
+ /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2.3,
+ /datum/material/silver = SMALL_MATERIAL_AMOUNT * 1.5,
+ /datum/material/plastic = SMALL_MATERIAL_AMOUNT,
+ )
//Inferno and Cryo Pistols
@@ -166,9 +169,9 @@
charge_sections = 1
item_flags = SLOWS_WHILE_IN_HAND | IMMUTABLE_SLOW
custom_materials = list(
- /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.25,
+ /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.55,
/datum/material/bronze = SHEET_MATERIAL_AMOUNT * 5,
- /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.29
+ /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.45,
)
/obj/item/gun/energy/laser/musket/repeater/Initialize(mapload)
diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
index c91985e71ea..927e4c169e0 100644
--- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
+++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
@@ -397,6 +397,7 @@
desc = "Increases the range of a kinetic accelerator when installed."
modifier = 1
cost = 25
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/borg/upgrade/modkit/range/modify_projectile(obj/projectile/kinetic/K)
K.range += modifier
@@ -407,6 +408,7 @@
name = "damage increase"
desc = "Increases the damage of kinetic accelerator when installed."
modifier = 10
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/borg/upgrade/modkit/damage/modify_projectile(obj/projectile/kinetic/K)
K.damage += modifier
@@ -418,6 +420,7 @@
desc = "Decreases the cooldown of a kinetic accelerator. Not rated for minebot use."
modifier = 3.2
minebot_upgrade = FALSE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT)
// Recalculate recharge time after adding or removing cooldown mods.
/obj/item/borg/upgrade/modkit/cooldown/proc/get_recharge_time(obj/item/gun/energy/recharge/kinetic_accelerator/KA)
@@ -511,6 +514,7 @@
name = "mining explosion"
desc = "Causes the kinetic accelerator to destroy rock in an AoE."
turf_aoe = TRUE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4, /datum/material/silver = SHEET_MATERIAL_AMOUNT, /datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.75)
// Negates one CD modifier
modifier = -/obj/item/borg/upgrade/modkit/cooldown::modifier
@@ -524,6 +528,7 @@
desc = "Causes the kinetic accelerator to destroy rock and damage mobs in an AoE."
turf_aoe = TRUE
modifier = -1 // Slightly better than normal turf AOE as its a rare find
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3.5, /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 1.5)
// Minebot passthrough
/obj/item/borg/upgrade/modkit/minebot_passthrough
@@ -561,6 +566,7 @@
denied_type = /obj/item/borg/upgrade/modkit/cooldown/repeater
modifier = -14 //Makes the cooldown 3 seconds(with no cooldown mods) if you miss. Don't miss.
cost = 50
+ custom_materials = list(/datum/material/uranium = SHEET_MATERIAL_AMOUNT * 4, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT)
/obj/item/borg/upgrade/modkit/cooldown/repeater/projectile_strike_predamage(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA)
var/valid_repeat = FALSE
@@ -602,6 +608,7 @@
denied_type = /obj/item/borg/upgrade/modkit/resonator_blasts
cost = 30
modifier = 0.25 //A bonus 15 damage if you burst the field on a target, 60 if you lure them into it.
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/item/borg/upgrade/modkit/resonator_blasts/projectile_strike(obj/projectile/kinetic/K, turf/target_turf, atom/target, obj/item/gun/energy/recharge/kinetic_accelerator/KA)
if(target_turf && !ismineralturf(target_turf)) //Don't make fields on mineral turfs.
@@ -618,6 +625,7 @@
denied_type = /obj/item/borg/upgrade/modkit/bounty
modifier = 1.25
cost = 30
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 2, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT * 2)
var/maximum_bounty = 25
var/list/bounties_reaped = list()
@@ -669,6 +677,7 @@
desc = "Allows creatures normally incapable of firing guns to operate the weapon when installed."
cost = 20
denied_type = /obj/item/borg/upgrade/modkit/trigger_guard
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/borg/upgrade/modkit/trigger_guard/install(obj/item/gun/energy/recharge/kinetic_accelerator/KA, mob/user)
. = ..()
diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm
index 8fc3bff1008..aa43ff7d345 100644
--- a/code/modules/projectiles/guns/energy/special.dm
+++ b/code/modules/projectiles/guns/energy/special.dm
@@ -46,6 +46,7 @@
ammo_x_offset = 1
selfcharge = 1
gun_flags = NOT_A_REAL_GUN
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/uranium = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/gun/energy/meteorgun
name = "meteor gun"
@@ -100,6 +101,7 @@
usesound = list('sound/items/tools/welder.ogg', 'sound/items/tools/welder2.ogg')
tool_behaviour = TOOL_WELDER
toolspeed = 0.7 //plasmacutters can be used as welders, and are faster than standard welders
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 4)
/obj/item/gun/energy/plasmacutter/Initialize(mapload)
AddElement(/datum/element/update_icon_blocker)
@@ -195,6 +197,7 @@
inhand_icon_state = "adv_plasmacutter"
force = 15
ammo_type = list(/obj/item/ammo_casing/energy/plasma/adv)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT)
#define AMMO_SELECT_BLUE 1
#define AMMO_SELECT_ORANGE 2
@@ -209,6 +212,7 @@
icon_state = "wormhole_projector"
base_icon_state = "wormhole_projector"
automatic_charge_overlays = FALSE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/bluespace = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = SHEET_MATERIAL_AMOUNT)
var/obj/effect/portal/p_blue
var/obj/effect/portal/p_orange
var/firing_core = FALSE
@@ -355,6 +359,14 @@
inhand_icon_state = "gravity_gun"
icon_state = "gravity_gun"
automatic_charge_overlays = FALSE
+ custom_materials = list(
+ /datum/material/glass = SHEET_MATERIAL_AMOUNT * 6,
+ /datum/material/iron = SHEET_MATERIAL_AMOUNT * 6,
+ /datum/material/silver = SHEET_MATERIAL_AMOUNT * 4,
+ /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 4,
+ /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 1.5,
+ /datum/material/bluespace = SHEET_MATERIAL_AMOUNT * 1.5,
+ )
var/power = 4
var/firing_core = FALSE
gun_flags = NOT_A_REAL_GUN
diff --git a/code/modules/projectiles/guns/special/syringe_gun.dm b/code/modules/projectiles/guns/special/syringe_gun.dm
index ceecb89044b..9e440c91f1e 100644
--- a/code/modules/projectiles/guns/special/syringe_gun.dm
+++ b/code/modules/projectiles/guns/special/syringe_gun.dm
@@ -147,6 +147,7 @@
pixel_x = 0
max_syringes = 6
force = 4
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/gun/syringe/syndicate
name = "dart pistol"
diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm
index 2c6845db94c..66c75f9d623 100644
--- a/code/modules/projectiles/pins.dm
+++ b/code/modules/projectiles/pins.dm
@@ -9,6 +9,7 @@
w_class = WEIGHT_CLASS_TINY
attack_verb_continuous = list("pokes")
attack_verb_simple = list("poke")
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3)
var/fail_message = "invalid user!"
/// Explode when user check is failed.
var/selfdestruct = FALSE
@@ -131,6 +132,7 @@
desc = "This Security firing pin authorizes the weapon for only mindshield-implanted users."
icon_state = "firing_pin_loyalty"
req_implant = /obj/item/implant/mindshield
+ custom_materials = list(/datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 2)
/obj/item/firing_pin/implant/pindicate
name = "syndicate firing pin"
@@ -147,6 +149,7 @@
color = COLOR_YELLOW
fail_message = "honk!"
force_replace = TRUE
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bananium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3)
/obj/item/firing_pin/clown/pin_auth(mob/living/user)
playsound(src, 'sound/items/bikehorn.ogg', 50, TRUE)
@@ -344,6 +347,7 @@
desc = "A firing pin used by the Australian defense force, retrofit to prevent weapon discharge on the station."
icon_state = "firing_pin_explorer"
fail_message = "cannot fire while on station, mate!"
+ custom_materials = list(/datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
// This checks that the user isn't on the station Z-level.
/obj/item/firing_pin/explorer/pin_auth(mob/living/user)
diff --git a/code/modules/projectiles/projectile/energy/net_snare.dm b/code/modules/projectiles/projectile/energy/net_snare.dm
index 13a293c9a65..8777c47c71b 100644
--- a/code/modules/projectiles/projectile/energy/net_snare.dm
+++ b/code/modules/projectiles/projectile/energy/net_snare.dm
@@ -67,6 +67,7 @@
inhand_icon_state = "beacon"
lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2)
///Has a security ID been used to lock this in place?
var/locked = FALSE
diff --git a/code/modules/reagents/chemistry/items.dm b/code/modules/reagents/chemistry/items.dm
index 34da7832d47..95bf5e0d0bf 100644
--- a/code/modules/reagents/chemistry/items.dm
+++ b/code/modules/reagents/chemistry/items.dm
@@ -102,6 +102,7 @@
icon_state = "pHmeter"
icon = 'icons/obj/medical/chemical.dmi'
w_class = WEIGHT_CLASS_TINY
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT)
///level of detail for output for the meter
var/scanmode = DETAILED_CHEM_OUTPUT
diff --git a/code/modules/reagents/chemistry/machinery/portable_chem_mixer.dm b/code/modules/reagents/chemistry/machinery/portable_chem_mixer.dm
index e360c24f270..71e73cf4296 100644
--- a/code/modules/reagents/chemistry/machinery/portable_chem_mixer.dm
+++ b/code/modules/reagents/chemistry/machinery/portable_chem_mixer.dm
@@ -12,6 +12,7 @@
interaction_flags_click = FORBID_TELEKINESIS_REACH
interaction_flags_mouse_drop = FORBID_TELEKINESIS_REACH
storage_type = /datum/storage/portable_chem_mixer
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.5)
///Creating an empty slot for a beaker that can be added to dispense into
var/obj/item/reagent_containers/beaker
diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm
index b98191f1679..5009d3d3a65 100644
--- a/code/modules/reagents/reagent_containers/blood_pack.dm
+++ b/code/modules/reagents/reagent_containers/blood_pack.dm
@@ -6,6 +6,7 @@
volume = 200
fill_icon_thresholds = list(10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
obj_flags = UNIQUE_RENAME | RENAME_NO_DESC
+ custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT)
var/blood_type = null
var/labeled = FALSE
diff --git a/code/modules/reagents/reagent_containers/chem_pack.dm b/code/modules/reagents/reagent_containers/chem_pack.dm
index abe9d39dab9..d1f4c66c82d 100644
--- a/code/modules/reagents/reagent_containers/chem_pack.dm
+++ b/code/modules/reagents/reagent_containers/chem_pack.dm
@@ -10,6 +10,7 @@
fill_icon_thresholds = list(10, 20, 30, 40, 50, 60, 70, 80, 90, 100)
has_variable_transfer_amount = FALSE
interaction_flags_click = NEED_DEXTERITY
+ custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT)
/obj/item/reagent_containers/chem_pack/click_alt(mob/living/user)
if(reagents.flags & SEALED_CONTAINER)
diff --git a/code/modules/reagents/reagent_containers/cups/_cup.dm b/code/modules/reagents/reagent_containers/cups/_cup.dm
index 7b503ebc9cb..8b2cf23b9d5 100644
--- a/code/modules/reagents/reagent_containers/cups/_cup.dm
+++ b/code/modules/reagents/reagent_containers/cups/_cup.dm
@@ -493,7 +493,7 @@
300 units."
icon_state = "beakerbluespace"
inhand_icon_state = "beaker_bluespace"
- custom_materials = list(/datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/plasma =SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/diamond =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace =HALF_SHEET_MATERIAL_AMOUNT)
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/plastic = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT)
volume = 300
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(5,10,15,20,25,30,50,100,300)
@@ -752,6 +752,7 @@
icon_state = "coffeepot"
fill_icon_state = "coffeepot"
fill_icon_thresholds = list(0, 1, 30, 60, 100)
+ custom_materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/reagent_containers/cup/coffeepot/bluespace
name = "bluespace coffeepot"
@@ -759,6 +760,7 @@
volume = 240
icon_state = "coffeepot_bluespace"
fill_icon_thresholds = null
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT)
///Test tubes created by chem master and pandemic and placed in racks
/obj/item/reagent_containers/cup/tube
diff --git a/code/modules/reagents/reagent_containers/cups/bottle.dm b/code/modules/reagents/reagent_containers/cups/bottle.dm
index 9d262a576bc..1ca466bb9e3 100644
--- a/code/modules/reagents/reagent_containers/cups/bottle.dm
+++ b/code/modules/reagents/reagent_containers/cups/bottle.dm
@@ -518,6 +518,7 @@
possible_transfer_amounts = list(5, 10)
amount_per_transfer_from_this = 5
can_lid = FALSE
+ custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/reagent_containers/cup/bottle/syrup_bottle/Initialize(mapload)
. = ..()
diff --git a/code/modules/reagents/reagent_containers/cups/glassbottle.dm b/code/modules/reagents/reagent_containers/cups/glassbottle.dm
index 77239e8be08..81ed8161a49 100644
--- a/code/modules/reagents/reagent_containers/cups/glassbottle.dm
+++ b/code/modules/reagents/reagent_containers/cups/glassbottle.dm
@@ -982,6 +982,7 @@
icon = 'icons/obj/service/janitor.dmi'
icon_state = "trashbag"
list_reagents = list(/datum/reagent/consumable/prunomix = 50)
+ custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT)
var/fermentation_time = 30 SECONDS /// time it takes to ferment
var/fermentation_time_remaining /// for partial fermentation
var/fermentation_timer /// store the timer id of fermentation
diff --git a/code/modules/reagents/reagent_containers/cups/mauna_mug.dm b/code/modules/reagents/reagent_containers/cups/mauna_mug.dm
index dcee96829dd..06137d6dd6f 100644
--- a/code/modules/reagents/reagent_containers/cups/mauna_mug.dm
+++ b/code/modules/reagents/reagent_containers/cups/mauna_mug.dm
@@ -7,6 +7,7 @@
initial_reagent_flags = OPENCONTAINER
fill_icon_state = "maunafilling"
fill_icon_thresholds = list(25)
+ custom_materials = list(/datum/material/iron= SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass= SMALL_MATERIAL_AMOUNT * 0.5)
var/obj/item/stock_parts/power_store/cell
var/open = FALSE
var/on = FALSE
diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm
index 6702fcf4fe6..d13741380be 100644
--- a/code/modules/reagents/reagent_containers/dropper.dm
+++ b/code/modules/reagents/reagent_containers/dropper.dm
@@ -10,7 +10,7 @@
volume = 5
initial_reagent_flags = TRANSPARENT
custom_price = PAYCHECK_CREW
- custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT)
+ custom_materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT * 0.3, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.1)
/obj/item/reagent_containers/dropper/interact_with_atom(atom/target, mob/living/user, list/modifiers)
if(!target.reagents)
diff --git a/code/modules/reagents/reagent_containers/medigel.dm b/code/modules/reagents/reagent_containers/medigel.dm
index 12ee08f0d30..ff8db553f80 100644
--- a/code/modules/reagents/reagent_containers/medigel.dm
+++ b/code/modules/reagents/reagent_containers/medigel.dm
@@ -46,6 +46,7 @@
amount_per_transfer_from_this = 10
possible_transfer_amounts = list(5,10)
volume = 60
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
var/can_fill_from_container = TRUE
var/apply_type = PATCH
var/apply_method = "spray" //the thick gel is sprayed and then dries into patch like film.
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index e62c81a25b1..29713179d0e 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -14,6 +14,7 @@
w_class = WEIGHT_CLASS_SMALL
throw_speed = 3
throw_range = 7
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
var/stream_mode = FALSE //whether we use the more focused mode
var/current_range = 3 //the range of tiles the sprayer will reach.
var/spray_range = 3 //the range of tiles the sprayer will reach when in spray mode.
@@ -226,6 +227,7 @@ GAME_VERB_SRC(/obj/item/reagent_containers/spray, empty, usr, "Empty Spray Bottl
list_reagents = list(/datum/reagent/consumable/condensedcapsaicin = 50)
pickup_sound = 'sound/items/handling/pepper_spray/pepper_spray_pick_up.ogg'
drop_sound = 'sound/items/handling/pepper_spray/pepper_spray_drop.ogg'
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/reagent_containers/spray/pepper/empty //for protolathe printing
list_reagents = null
@@ -447,6 +449,7 @@ GAME_VERB_SRC(/obj/item/reagent_containers/spray, empty, usr, "Empty Spray Bottl
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
volume = 100
+ custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT)
/obj/item/reagent_containers/spray/medical/setup_reskins()
AddComponent(/datum/component/reskinable_item, /datum/atom_skin/med_spray)
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 4136687774e..f3cb6eb68d7 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -11,7 +11,7 @@
amount_per_transfer_from_this = 5
possible_transfer_amounts = list(5, 10, 15)
volume = 15
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.2)
+ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.2, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 0.1)
initial_reagent_flags = TRANSPARENT
custom_price = PAYCHECK_CREW * 0.5
sharpness = SHARP_POINTY
@@ -331,6 +331,7 @@
volume = 60
dart_insert_casing_icon_state = "overlay_syringe_bluespace"
dart_insert_projectile_icon_state = "overlay_syringe_bluespace_proj"
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/reagent_containers/syringe/piercing
name = "piercing syringe"
@@ -345,6 +346,7 @@
dart_insert_casing_icon_state = "overlay_syringe_piercing"
dart_insert_projectile_icon_state = "overlay_syringe_piercing_proj"
embed_type = /datum/embedding/syringe/piercing
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT)
/datum/embedding/syringe/piercing
embed_chance = 100
diff --git a/code/modules/recycling/conveyor.dm b/code/modules/recycling/conveyor.dm
index d050b974573..a71928f9deb 100644
--- a/code/modules/recycling/conveyor.dm
+++ b/code/modules/recycling/conveyor.dm
@@ -606,6 +606,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id)
icon = 'icons/obj/machines/recycling.dmi'
icon_state = "switch-off"
w_class = WEIGHT_CLASS_BULKY
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 4.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
// ID of the switch-in-the-making, to link conveyor belts to it.
var/id = ""
@@ -644,6 +645,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id)
singular_name = "conveyor belt"
w_class = WEIGHT_CLASS_BULKY
merge_type = /obj/item/stack/conveyor
+ mats_per_unit = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5)
/// ID for linking a belt to one or more switches, all conveyors with the same ID will be controlled the same switch(es).
var/id = ""
diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm
index 997bc6540bc..9d4a3632265 100644
--- a/code/modules/recycling/sortingmachinery.dm
+++ b/code/modules/recycling/sortingmachinery.dm
@@ -266,6 +266,7 @@
sound_vary = TRUE
pickup_sound = SFX_GENERIC_DEVICE_PICKUP
drop_sound = SFX_GENERIC_DEVICE_DROP
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.5)
/obj/item/dest_tagger/borg
name = "cyborg destination tagger"
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index bc1d5eaee0f..19cb1e6e1d4 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -58,6 +58,42 @@ other types of metals and chemistry for reagents).
/// For protolathe designs that don't require reagents: If they can be exported to autolathes with a design disk or not.
var/autolathe_exportable = TRUE
+ /**
+ * A variable for if and how we want the printed object to receive the materials that were used to print it.
+ *
+ * * DESIGN_INHERIT_MATS: default setting, this will also be unit tested to ensure that the object built from an unupgraded protolathe
+ * has the same materials of an object of the same type only instantiated in a generic way.
+ * * DESIGN_INHERIT_MATS_SPECIAL: get the materials, but don't perform unit test checks
+ * * DESIGN_DONT_INHERIT_MATS: The printed object won't have the materials that were used to print it.
+ *
+ * P.S. unit test checks for materials are not performed on designs that use /datum/material_requirement.
+ * The only thing we would've to check in that case would be the amounts but not the types, and that isn't worth it.
+ */
+ var/inherit_materials = DESIGN_INHERIT_MATS
+ // If true, the efficiency of this design won't be influenced by the tier of the stock parts of the machine printing it
+ var/fixed_cost_efficiency = FALSE
+
+ /**
+ * If set, instead of transfering the contents of the materials var to the item(s), this list will be used.
+ * This is useful for printed items that possess fewer mats than those used in the process of printing them,
+ * Or items that in turn contain more items that can be extracted and recycled singularly.
+ *
+ * Here's an example of how it's supposed to be structured:
+ * transfered_materials = list(
+ * /obj/item/printed = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2.5),
+ * /obj/item/inside_printed = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 2.5),
+ * )
+ *
+ * A few things to consider though:
+ * 1) It shouldn't include materials not present in the 'materials' variable.
+ * 2) The sum of each material in the lists shouldn't surpass what present in the 'materials' list.
+ * 3) It's incompatible with material_slot and material_requirement datums. This might change in the future, i dunno.
+ * 4) this does nothing if 'inherit_materials' is set to DESIGN_DONT_INHERIT_MATS.
+ *
+ * I've set a few unit test checks to make sure that things don't go wrong anyway, so don't worry too much about it
+ */
+ var/list/transfered_materials
+
/datum/design/error_design
name = "ERROR"
desc = "This usually means something in the database has corrupted. If this doesn't go away automatically, inform Central Command so their techs can fix this ASAP(tm)"
@@ -80,6 +116,14 @@ other types of metals and chemistry for reagents).
materials = temp_list
+ for(var/object, mats in transfered_materials)
+ temp_list = list()
+ var/list/mat_list = mats
+ for(var/mat_type in mat_list)
+ var/datum/material/mat = SSmaterials.get_material(mat_type)
+ temp_list[mat] = mat_list[mat_type]
+ transfered_materials[object] = temp_list
+
/datum/design/proc/icon_html(client/user)
var/datum/asset/spritesheet_batched/sheet = get_asset_datum(/datum/asset/spritesheet_batched/research_designs)
sheet.send(user)
@@ -92,9 +136,9 @@ other types of metals and chemistry for reagents).
return isnull(desc) ? initial(object_build_item_path.desc) : desc
/// Produce the resulting item, optionally with a specfic amount if we're a stack design
-/datum/design/proc/create_result(atom/drop_loc, list/custom_materials, amount = null)
- if (!ispath(build_path, /obj/item/stack) && !isnull(amount))
- CRASH("[src] create_result was passed an amount, despite not being a stack design!")
+/datum/design/proc/create_result(atom/drop_loc, list/custom_materials, amount)
+ if (!ispath(build_path, /obj/item/stack) && amount > 1)
+ CRASH("[src] create_result was passed an amount higher than 1, despite not being a stack design!")
if (!ispath(build_path, /obj/item/stack))
return new build_path(drop_loc)
@@ -103,6 +147,40 @@ other types of metals and chemistry for reagents).
amount = 1
return new build_path(drop_loc, amount)
+///A proc that handles transfering the materials to the target object and anything it contains that isn't abstract. You can check the doc for var/list/transfered_materials for how it works.
+/datum/design/proc/transfer_materials(list/custom_materials, multiplier, atom/target_object)
+ SHOULD_NOT_OVERRIDE(TRUE)
+
+ ASSERT(islist(custom_materials), "design/transfer_materials() called with invalid 'custom_materials' arg value")
+ ASSERT(multiplier, "design/transfer_materials() called with invalid 'multiplier' arg value")
+ ASSERT(isatom(target_object), "design/transfer_materials() called with invalid 'target_object' arg value")
+
+ if(!length(transfered_materials)) //most common case where the object is just one thing and 'transferred_materials' is null
+ simple_transfer_materials(custom_materials, multiplier, target_object)
+ return
+
+ var/list/recursive_contents = target_object.get_all_contents_type(/obj/item)
+
+ for(var/obj/item/object as anything in recursive_contents)
+ if(object.item_flags & ABSTRACT) //skip abstract entities
+ continue
+ if(!(object.type in transfered_materials))
+ stack_trace("[object.type] missing from the 'transfered_materials' list of the design. Edit the 'transfered_materials' var of [type], or give it the ABSTRACT item flag if appropriate.")
+ continue
+ simple_transfer_materials(transfered_materials[object.type], multiplier, object)
+
+///Called by [proc/transfer_materials] in two places and it's basically the meat and bone of the function. Having it as a separate proc reduces copypaste a little.
+/datum/design/proc/simple_transfer_materials(list/custom_materials, multiplier, atom/target_object)
+ SHOULD_NOT_OVERRIDE(TRUE)
+ PRIVATE_PROC(TRUE)
+
+ if(isstack(target_object))
+ var/obj/item/stack/stack = target_object
+ stack.mats_per_unit = SSmaterials.get_material_set_cache(custom_materials, multiplier / stack.amount)
+ stack.update_custom_materials()
+ else
+ target_object.set_custom_materials(custom_materials, multiplier)
+
////////////////////////////////////////
//Disks for transporting design datums//
////////////////////////////////////////
diff --git a/code/modules/research/designs/autolathe/materials.dm b/code/modules/research/designs/autolathe/materials.dm
index 2027882e524..3ad5b0762e3 100644
--- a/code/modules/research/designs/autolathe/materials.dm
+++ b/code/modules/research/designs/autolathe/materials.dm
@@ -1,7 +1,21 @@
-/datum/design/rods
+/datum/design/material
+ build_type = AUTOLATHE
+ category = list(
+ RND_CATEGORY_INITIAL,
+ RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS,
+ )
+ //We can reasonably believe that material sheets already have said materials to begin with and don't need this.
+ inherit_materials = DESIGN_DONT_INHERIT_MATS
+
+/datum/design/material/iron
+ name = "Iron"
+ id = "iron"
+ materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT)
+ build_path = /obj/item/stack/sheet/iron
+
+/datum/design/material/rods
name = "Iron Rod"
id = "rods"
- build_type = AUTOLATHE
materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
build_path = /obj/item/stack/rods
category = list(
@@ -9,14 +23,10 @@
RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS,
)
-/datum/design/rglass
+/datum/design/material/rglass
name = "Reinforced Glass"
id = "rglass"
build_type = AUTOLATHE | SMELTER | PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT)
build_path = /obj/item/stack/sheet/rglass
- category = list(
- RND_CATEGORY_INITIAL,
- RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS,
- )
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
diff --git a/code/modules/research/designs/autolathe/multi-department_designs.dm b/code/modules/research/designs/autolathe/multi-department_designs.dm
index b9bcbc4c808..8b49d790301 100644
--- a/code/modules/research/designs/autolathe/multi-department_designs.dm
+++ b/code/modules/research/designs/autolathe/multi-department_designs.dm
@@ -68,13 +68,18 @@
name = "Rapid Wiring Device"
id = "rwd"
build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*5, /datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5)
+ materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5)
+ //The cable coils don't count toward the total mats of the item to avoid a possible way to generate more iron and glass.
+ transfered_materials = list(
+ /obj/item/rwd/loaded = /obj/item/rwd::custom_materials,
+ )
build_path = /obj/item/rwd/loaded
category = list(
RND_CATEGORY_INITIAL,
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING,
)
departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SCIENCE
+ fixed_cost_efficiency = TRUE // The cable coils can be removed and recycled to generate more material than that spent printing it at higher stock part tiers.
/datum/design/analyzer
name = "Gas Analyzer"
@@ -566,7 +571,11 @@
name = "Laptop Frame"
id = "laptop"
build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*5, /datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT)
+ materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
+ transfered_materials = list(
+ /obj/item/modular_computer/laptop/buildable = /obj/item/modular_computer/laptop::custom_materials,
+ /obj/item/stock_parts/power_store/cell = /obj/item/stock_parts/power_store/cell::custom_materials,
+ )
build_path = /obj/item/modular_computer/laptop/buildable
category = list(
RND_CATEGORY_INITIAL,
diff --git a/code/modules/research/designs/autolathe/security_designs.dm b/code/modules/research/designs/autolathe/security_designs.dm
index c6a96542ef3..3f977218900 100644
--- a/code/modules/research/designs/autolathe/security_designs.dm
+++ b/code/modules/research/designs/autolathe/security_designs.dm
@@ -125,6 +125,7 @@
RND_CATEGORY_WEAPONS + RND_SUBCATEGORY_WEAPONS_PARTS,
)
departmental_flags = DEPARTMENT_BITFLAG_SECURITY
+ inherit_materials = DESIGN_INHERIT_MATS_SPECIAL //We also have a crafting recipe for this that uses different components.
/datum/design/shotgun_dart
name = "Shotgun Dart (Lethal)"
@@ -202,7 +203,10 @@
name = "Ammo Box (10mm) (Lethal)"
id = "c10mm"
build_type = AUTOLATHE
- materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT * 300)
+ materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 30)
+ transfered_materials = list(
+ /obj/item/ammo_box/c10mm = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 15),
+ )
build_path = /obj/item/ammo_box/c10mm
category = list(
RND_CATEGORY_HACKED,
@@ -214,7 +218,10 @@
name = "Ammo Box (.45) (Lethal)"
id = "c45"
build_type = AUTOLATHE
- materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT * 300)
+ materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 30)
+ transfered_materials = list(
+ /obj/item/ammo_box/c45 = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 15),
+ )
build_path = /obj/item/ammo_box/c45
category = list(
RND_CATEGORY_HACKED,
@@ -226,7 +233,10 @@
name = "Ammo Box (9mm) (Lethal)"
id = "c9mm"
build_type = AUTOLATHE
- materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT * 300)
+ materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 30)
+ transfered_materials = list(
+ /obj/item/ammo_box/c9mm = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 15),
+ )
build_path = /obj/item/ammo_box/c9mm
category = list(
RND_CATEGORY_HACKED,
diff --git a/code/modules/research/designs/autolathe/service_designs.dm b/code/modules/research/designs/autolathe/service_designs.dm
index 316feffcd93..ea61ef88dcb 100644
--- a/code/modules/research/designs/autolathe/service_designs.dm
+++ b/code/modules/research/designs/autolathe/service_designs.dm
@@ -14,7 +14,7 @@
name = "Wet Floor Sign"
id = "wet_floor_sign"
build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/plastic =SMALL_MATERIAL_AMOUNT)
+ materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT)
build_path = /obj/item/clothing/suit/caution
category = list(
RND_CATEGORY_INITIAL,
@@ -183,7 +183,7 @@
id = "plate"
build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*1.5)
- build_path = /obj/item/plate
+ build_path = /obj/item/plate/iron
category = list(
RND_CATEGORY_INITIAL,
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN,
@@ -374,7 +374,7 @@
name = "Cap Gun"
id = "toygun"
build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT, /datum/material/glass =SMALL_MATERIAL_AMOUNT*0.5)
+ materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT)
build_path = /obj/item/toy/gun
category = list(
RND_CATEGORY_HACKED,
@@ -386,7 +386,7 @@
name = "Box of Cap Gun Shots"
id = "capbox"
build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*0.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT*0.1)
+ materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT * 3)
build_path = /obj/item/toy/ammo/gun
category = list(
RND_CATEGORY_HACKED,
@@ -398,7 +398,7 @@
name = "Plastic Balloon"
id = "toy_balloon"
build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT*1.2)
+ materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 0.6)
build_path = /obj/item/toy/balloon
category = list(
RND_CATEGORY_HACKED,
@@ -667,9 +667,13 @@
id = "rdd"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(
- /datum/material/iron = SHEET_MATERIAL_AMOUNT * 8,
+ /datum/material/iron = SHEET_MATERIAL_AMOUNT * 12,
/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 4,
- /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2,
+ /datum/material/glass = SHEET_MATERIAL_AMOUNT * 6,
+ )
+ //Some of the material is "lost" to make up for the fact that the rdd is loaded to the brim
+ transfered_materials = list(
+ /obj/item/construction/rdd/loaded = /obj/item/construction/rdd::custom_materials,
)
build_path = /obj/item/construction/rdd/loaded
category = list(
diff --git a/code/modules/research/designs/biogenerator_designs.dm b/code/modules/research/designs/biogenerator_designs.dm
index 14d5c12eb43..5c7e6f0a789 100644
--- a/code/modules/research/designs/biogenerator_designs.dm
+++ b/code/modules/research/designs/biogenerator_designs.dm
@@ -2,194 +2,175 @@
///////Biogenerator Designs ///////
///////////////////////////////////
-/datum/design/milk
+/datum/design/biogen
+ build_type = BIOGENERATOR
+ // biomass doesn't have a sheet type, and the biogenerator isn't meant to churn out unprocessed biomass anyway.
+ inherit_materials = DESIGN_DONT_INHERIT_MATS
+
+/datum/design/biogen/milk
name = "Synthetic Milk"
id = "milk"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.4)
make_reagent = /datum/reagent/consumable/milk
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD)
-/datum/design/soymilk
+/datum/design/biogen/soymilk
name = "Synthetic Soy Milk"
id = "soymilk"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.4)
make_reagent = /datum/reagent/consumable/soymilk
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD)
-/datum/design/ethanol
+/datum/design/biogen/ethanol
name = "Synthetic Ethanol"
id = "ethanol"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.6)
make_reagent = /datum/reagent/consumable/ethanol
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD)
-/datum/design/cream
+/datum/design/biogen/cream
name = "Synthetic Cream"
id = "cream"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.6)
make_reagent = /datum/reagent/consumable/cream
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD)
-/datum/design/black_pepper
+/datum/design/biogen/black_pepper
name = "Synthetic Black Pepper"
id = "black_pepper"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.6)
make_reagent = /datum/reagent/consumable/blackpepper
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD)
-/datum/design/enzyme
+/datum/design/biogen/enzyme
name = "Synthetic Enzyme"
id = "enzyme"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.6)
make_reagent = /datum/reagent/consumable/enzyme
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD)
-/datum/design/flour
+/datum/design/biogen/flour
name = "Synthetic Flour"
id = "flour_sack"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.6)
make_reagent = /datum/reagent/consumable/flour
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD)
-/datum/design/sugar
+/datum/design/biogen/sugar
name = "Synthetic Sugar"
id = "sugar"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.6)
make_reagent = /datum/reagent/consumable/sugar
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD)
-/datum/design/monkey_cube
+/datum/design/biogen/monkey_cube
name = "Monkey Cube"
id = "mcube"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 50)
build_path = /obj/item/food/monkeycube
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD)
-/datum/design/seaweed_sheet
+/datum/design/biogen/seaweed_sheet
name = "Seaweed Sheet"
id = "seaweedsheet"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 3)
build_path = /obj/item/food/seaweedsheet
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_FOOD)
-/datum/design/ez_nut //easy nut :)
+/datum/design/biogen/ez_nut //easy nut :)
name = "E-Z Nutrient"
id = "ez_nut"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.1)
make_reagent = /datum/reagent/plantnutriment/eznutriment
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS)
-/datum/design/l4z_nut
+/datum/design/biogen/l4z_nut
name = "Left 4 Zed"
id = "l4z_nut"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.1)
make_reagent = /datum/reagent/plantnutriment/left4zednutriment
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS)
-/datum/design/rh_nut
+/datum/design/biogen/rh_nut
name = "Robust Harvest"
id = "rh_nut"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.2)
make_reagent = /datum/reagent/plantnutriment/robustharvestnutriment
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS)
-/datum/design/end_gro
+/datum/design/biogen/end_gro
name = "Enduro Grow"
id = "end_gro"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.3)
make_reagent = /datum/reagent/plantnutriment/endurogrow
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS)
-/datum/design/liq_earth
+/datum/design/biogen/liq_earth
name = "Liquid Earthquake"
id = "liq_earth"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.3)
make_reagent = /datum/reagent/plantnutriment/liquidearthquake
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS)
-/datum/design/weed_killer
+/datum/design/biogen/weed_killer
name = "Weed Killer"
id = "weed_killer"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.2)
make_reagent = /datum/reagent/toxin/plantbgone/weedkiller
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS)
-/datum/design/pest_spray
+/datum/design/biogen/pest_spray
name = "Pest Killer"
id = "pest_spray"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.4)
make_reagent = /datum/reagent/toxin/pestkiller
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS)
-/datum/design/org_pest_spray
+/datum/design/biogen/org_pest_spray
name = "Organic Pest Killer"
id = "org_pest_spray"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 0.6)
make_reagent = /datum/reagent/toxin/pestkiller/organic
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_CHEMICALS)
-/datum/design/leather
+/datum/design/biogen/leather
name = "Sheet of Leather"
id = "leather"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 30)
build_path = /obj/item/stack/sheet/leather
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_MATERIALS)
-/datum/design/cloth
+/datum/design/biogen/cloth
name = "Sheet of Cloth"
id = "cloth"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 10)
build_path = /obj/item/stack/sheet/cloth
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_MATERIALS)
-/datum/design/cardboard
+/datum/design/biogen/cardboard
name = "Sheet of Cardboard"
id = "cardboard"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 5)
build_path = /obj/item/stack/sheet/cardboard
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_MATERIALS)
-/datum/design/paper
+/datum/design/biogen/paper
name = "Sheet of Paper"
id = "paper"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 2)
build_path = /obj/item/paper
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_MATERIALS)
-/datum/design/rolling_paper
+/datum/design/biogen/rolling_paper
name = "Sheet of Rolling Paper"
id = "rollingpaper"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 1)
build_path = /obj/item/rollingpaper
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_MATERIALS)
-/datum/design/candle
+/datum/design/biogen/candle
name = "Candle"
id = "candle"
- build_type = BIOGENERATOR
materials = list(/datum/material/biomass = 3)
build_path = /obj/item/flashlight/flare/candle
category = list(RND_CATEGORY_INITIAL, RND_CATEGORY_BIO_MATERIALS)
diff --git a/code/modules/research/designs/bluespace_designs.dm b/code/modules/research/designs/bluespace_designs.dm
index 6e586c27d93..df746f9615c 100644
--- a/code/modules/research/designs/bluespace_designs.dm
+++ b/code/modules/research/designs/bluespace_designs.dm
@@ -38,6 +38,7 @@
RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS
)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
+ inherit_materials = DESIGN_DONT_INHERIT_MATS
/datum/design/telesci_gps
name = "GPS Device"
diff --git a/code/modules/research/designs/mechfabricator_designs.dm b/code/modules/research/designs/mechfabricator_designs.dm
index 44aaec1a21b..c619728f2c0 100644
--- a/code/modules/research/designs/mechfabricator_designs.dm
+++ b/code/modules/research/designs/mechfabricator_designs.dm
@@ -1077,12 +1077,12 @@
name = "Plasma Generator"
id = "mech_generator"
build_type = MECHFAB
- build_path = /obj/item/mecha_parts/mecha_equipment/generator
+ build_path = /obj/item/mecha_parts/mecha_equipment/generator/printed
materials = list(
/datum/material/iron=SHEET_MATERIAL_AMOUNT*5,
/datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT,
/datum/material/silver=SHEET_MATERIAL_AMOUNT,
- /datum/material/plasma=SHEET_MATERIAL_AMOUNT * 2.5,
+ /datum/material/plasma=SHEET_MATERIAL_AMOUNT * 1.5,
)
construction_time = 10 SECONDS
category = list(
diff --git a/code/modules/research/designs/medical_designs.dm b/code/modules/research/designs/medical_designs.dm
index 9ff9e638b2d..5632b74011e 100644
--- a/code/modules/research/designs/medical_designs.dm
+++ b/code/modules/research/designs/medical_designs.dm
@@ -399,7 +399,7 @@
name = "Paramedic Penlight"
id = "penlight_paramedic"
build_type = PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass =SMALL_MATERIAL_AMOUNT*1)
+ materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT*5, /datum/material/glass = SMALL_MATERIAL_AMOUNT)
build_path = /obj/item/flashlight/pen/paramedic
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_MEDICAL
@@ -780,7 +780,7 @@
desc = "A glass case for containing an implant."
id = "implantcase"
build_type = PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/glass =SMALL_MATERIAL_AMOUNT*5)
+ materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
build_path = /obj/item/implantcase
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_TOOLS
@@ -792,7 +792,11 @@
desc = "Makes death amusing."
id = "implant_trombone"
build_type = PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/glass =SMALL_MATERIAL_AMOUNT*5, /datum/material/bananium =SMALL_MATERIAL_AMOUNT*5)
+ materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bananium = HALF_SHEET_MATERIAL_AMOUNT)
+ transfered_materials = list(
+ /obj/item/implantcase/sad_trombone = /datum/design/implantcase::materials,
+ /obj/item/implant/sad_trombone = list(/datum/material/bananium = HALF_SHEET_MATERIAL_AMOUNT),
+ )
build_path = /obj/item/implantcase/sad_trombone
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_HEALTH
@@ -804,7 +808,11 @@
desc = "A glass case containing a chemical implant."
id = "implant_chem"
build_type = PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 7)
+ materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.7)
+ transfered_materials = list(
+ /obj/item/implantcase/chem = /datum/design/implantcase::materials,
+ /obj/item/implant/chem = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 2),
+ )
build_path = /obj/item/implantcase/chem
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_SECURITY
@@ -816,7 +824,11 @@
desc = "A glass case containing a tracking implant."
id = "implant_tracking"
build_type = PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
+ materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
+ transfered_materials = list(
+ /obj/item/implantcase/tracking = /datum/design/implantcase::materials,
+ /obj/item/implant/tracking = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT),
+ )
build_path = /obj/item/implantcase/tracking
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_SECURITY
@@ -828,7 +840,11 @@
desc = "A glass case containing a beacon implant."
id = "implant_beacon"
build_type = PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3)
+ materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3)
+ transfered_materials = list(
+ /obj/item/implantcase/beacon = /datum/design/implantcase::materials,
+ /obj/item/implant/beacon = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3),
+ )
build_path = /obj/item/implantcase/beacon
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_SECURITY
@@ -840,7 +856,11 @@
desc = "A glass case containing a teleport blocker implant."
id = "implant_bluespace"
build_type = PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3)
+ materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3)
+ transfered_materials = list(
+ /obj/item/implantcase/teleport_blocker = /datum/design/implantcase::materials,
+ /obj/item/implant/teleport_blocker = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 3),
+ )
build_path = /obj/item/implantcase/teleport_blocker
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_SECURITY
@@ -852,7 +872,11 @@
desc = "A glass case containing an exile implant."
id = "implant_exile"
build_type = PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 3)
+ materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 3)
+ transfered_materials = list(
+ /obj/item/implantcase/exile = /datum/design/implantcase::materials,
+ /obj/item/implant/exile = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 3),
+ )
build_path = /obj/item/implantcase/exile
category = list(
RND_CATEGORY_CYBERNETICS + RND_SUBCATEGORY_CYBERNETICS_IMPLANTS_SECURITY
diff --git a/code/modules/research/designs/misc_designs.dm b/code/modules/research/designs/misc_designs.dm
index cc109ccd36b..c4efb2d2cce 100644
--- a/code/modules/research/designs/misc_designs.dm
+++ b/code/modules/research/designs/misc_designs.dm
@@ -107,6 +107,10 @@
id = "weldingmask"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT)
+ transfered_materials = list(
+ /obj/item/clothing/mask/gas/welding = /obj/item/clothing/mask/gas/welding::custom_materials,
+ /obj/item/gas_filter = /obj/item/gas_filter::custom_materials,
+ )
build_path = /obj/item/clothing/mask/gas/welding
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_ENGINEERING
@@ -135,7 +139,11 @@
desc = "This awesome mug will ensure your coffee never stays cold!"
id = "mauna_mug"
build_type = PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/iron =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass =SMALL_MATERIAL_AMOUNT)
+ materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/glass =SMALL_MATERIAL_AMOUNT)
+ transfered_materials = list(
+ /obj/item/reagent_containers/cup/maunamug = /obj/item/reagent_containers/cup/maunamug::custom_materials,
+ /obj/item/stock_parts/power_store/cell = /obj/item/stock_parts/power_store/cell::custom_materials,
+ )
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SCIENCE
)
@@ -825,6 +833,10 @@
id = "inspector"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold =HALF_SHEET_MATERIAL_AMOUNT, /datum/material/uranium =SHEET_MATERIAL_AMOUNT)
+ transfered_materials = list(
+ /obj/item/inspector = /obj/item/inspector::custom_materials,
+ /obj/item/stock_parts/power_store/cell/crap = /obj/item/stock_parts/power_store/cell/crap::custom_materials,
+ )
build_path = /obj/item/inspector
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SECURITY
diff --git a/code/modules/research/designs/power_designs.dm b/code/modules/research/designs/power_designs.dm
index 8b4d7074987..cc6fc0df18a 100644
--- a/code/modules/research/designs/power_designs.dm
+++ b/code/modules/research/designs/power_designs.dm
@@ -67,7 +67,7 @@
desc = "A basic megacell that holds 1 MJ of energy."
id = "basic_battery"
build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE |MECHFAB
- materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 12, /datum/material/glass =SMALL_MATERIAL_AMOUNT * 2)
+ materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/glass =SMALL_MATERIAL_AMOUNT * 2)
construction_time = 5 SECONDS
build_path = /obj/item/stock_parts/power_store/battery/empty
category = list(
@@ -80,7 +80,7 @@
desc = "A megacell that holds 10 MJ of energy."
id = "high_battery"
build_type = PROTOLATHE | AWAY_LATHE | AUTOLATHE | MECHFAB
- materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 12, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3)
+ materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 3)
construction_time = 5 SECONDS
build_path = /obj/item/stock_parts/power_store/battery/high/empty
category = list(
@@ -93,7 +93,7 @@
desc = "A megacell that holds 20 MJ of energy."
id = "super_battery"
build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
- materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 12, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4)
+ materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4)
construction_time = 5 SECONDS
build_path = /obj/item/stock_parts/power_store/battery/super/empty
category = list(
@@ -106,7 +106,7 @@
desc = "A megacell that holds 30 MJ of energy."
id = "hyper_battery"
build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
- materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 12, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
+ materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5)
construction_time = 5 SECONDS
build_path = /obj/item/stock_parts/power_store/battery/hyper/empty
category = list(
@@ -119,7 +119,7 @@
desc = "A megacell that holds 40 MJ of energy."
id = "bluespace_battery"
build_type = PROTOLATHE | AWAY_LATHE | MECHFAB
- materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 12, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 1.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 6, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 1.6, /datum/material/titanium =SMALL_MATERIAL_AMOUNT * 3, /datum/material/bluespace =SMALL_MATERIAL_AMOUNT)
+ materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.2, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 1.2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 6, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 1.6, /datum/material/titanium =SMALL_MATERIAL_AMOUNT * 3, /datum/material/bluespace =SMALL_MATERIAL_AMOUNT)
construction_time = 5 SECONDS
build_path = /obj/item/stock_parts/power_store/battery/bluespace/empty
category = list(
diff --git a/code/modules/research/designs/smelting_designs.dm b/code/modules/research/designs/smelting_designs.dm
index b65ca64c6f5..2612415b1fc 100644
--- a/code/modules/research/designs/smelting_designs.dm
+++ b/code/modules/research/designs/smelting_designs.dm
@@ -1,79 +1,53 @@
///////SMELTABLE ALLOYS///////
-/datum/design/plasteel_alloy
+/datum/design/alloy
+ build_type = SMELTER | PROTOLATHE | AWAY_LATHE
+ category = list(
+ RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS
+ )
+ departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
+ //The resulting alloy sheets have different material types, but can be deconstructed back to their base mats with a recycler iirc.
+ inherit_materials = DESIGN_DONT_INHERIT_MATS
+
+/datum/design/alloy/plasteel_alloy
name = "Plasteel"
id = "plasteel"
- build_type = SMELTER | PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT, /datum/material/plasma = SHEET_MATERIAL_AMOUNT)
build_path = /obj/item/stack/sheet/plasteel
- category = list(
- RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS
- )
- departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
-/datum/design/plastitanium_alloy
+/datum/design/alloy/plastitanium
name = "Plastitanium"
id = "plastitanium"
- build_type = SMELTER | PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/titanium = SHEET_MATERIAL_AMOUNT, /datum/material/plasma = SHEET_MATERIAL_AMOUNT)
build_path = /obj/item/stack/sheet/mineral/plastitanium
- category = list(
- RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS
- )
- departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
-/datum/design/plaglass_alloy
+/datum/design/alloy/plaglass
name = "Plasma Glass"
id = "plasmaglass"
- build_type = SMELTER | PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/plasma = SHEET_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT)
+ materials = list(/datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT)
build_path = /obj/item/stack/sheet/plasmaglass
- category = list(
- RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS
- )
- departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
-/datum/design/plasmarglass_alloy
+/datum/design/alloy/plasmarglass
name = "Reinforced Plasma Glass"
id = "plasmareinforcedglass"
- build_type = SMELTER | PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/plasma = SHEET_MATERIAL_AMOUNT * 0.5, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT)
+ materials = list(/datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT)
build_path = /obj/item/stack/sheet/plasmarglass
- category = list(
- RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS
- )
- departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
-/datum/design/titaniumglass_alloy
+/datum/design/alloy/titaniumglass
name = "Titanium Glass"
id = "titaniumglass"
- build_type = SMELTER | PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT)
+ materials = list(/datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT)
build_path = /obj/item/stack/sheet/titaniumglass
- category = list(
- RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS
- )
- departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
-/datum/design/plastitaniumglass_alloy
+/datum/design/alloy/plastitaniumglass
name = "Plastitanium Glass"
id = "plastitaniumglass"
- build_type = SMELTER | PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/plasma = SHEET_MATERIAL_AMOUNT * 0.5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 0.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT)
+ materials = list(/datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SHEET_MATERIAL_AMOUNT)
build_path = /obj/item/stack/sheet/plastitaniumglass
- category = list(
- RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS
- )
- departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
-/datum/design/alienalloy
+/datum/design/alloy/alien
name = "Alien Alloy"
desc = "A sheet of reverse-engineered alien alloy."
id = "alienalloy"
- build_type = SMELTER | PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*2, /datum/material/plasma = SHEET_MATERIAL_AMOUNT*2)
+ materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 2)
build_path = /obj/item/stack/sheet/mineral/abductor
- category = list(
- RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MATERIALS
- )
- departmental_flags = DEPARTMENT_BITFLAG_CARGO | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_ENGINEERING
diff --git a/code/modules/research/designs/tool_designs.dm b/code/modules/research/designs/tool_designs.dm
index 6decd962122..2480a36a2df 100644
--- a/code/modules/research/designs/tool_designs.dm
+++ b/code/modules/research/designs/tool_designs.dm
@@ -79,7 +79,10 @@
desc = "A tool that can construct and deconstruct walls, airlocks and floors on the fly."
id = "rcd_loaded"
build_type = PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT*30, /datum/material/glass =SHEET_MATERIAL_AMOUNT * 2.5)
+ materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 30, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 15)
+ transfered_materials = list(
+ /obj/item/construction/rcd/loaded = /obj/item/construction/rcd::custom_materials, //The RCD has less materials than what's used, as some is converted to charge/matter
+ )
build_path = /obj/item/construction/rcd/loaded
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED
@@ -102,7 +105,7 @@
name = "RCD Matter Cartridge"
id = "rcd_ammo"
build_type = PROTOLATHE | AWAY_LATHE
- materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT*6, /datum/material/glass =SHEET_MATERIAL_AMOUNT*4)
+ materials = list(/datum/material/iron= SHEET_MATERIAL_AMOUNT * 6, /datum/material/glass= SHEET_MATERIAL_AMOUNT * 3)
build_path = /obj/item/rcd_ammo
category = list(
RND_CATEGORY_TOOLS + RND_SUBCATEGORY_TOOLS_ENGINEERING_ADVANCED
diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm
index 767c5bfcfb3..5322d0d7e7e 100644
--- a/code/modules/research/designs/weapon_designs.dm
+++ b/code/modules/research/designs/weapon_designs.dm
@@ -635,7 +635,7 @@
desc = "A dirt cheap 3D printed gun. Only holds one bullet, and is infamous for sometimes exploding on it's user."
id = "liberator_gun"
build_type = AUTOLATHE
- materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 15)
+ materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT * 2, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5)
build_path = /obj/item/gun/ballistic/automatic/pistol/doohickey
category = list(RND_CATEGORY_IMPORTED)
diff --git a/code/modules/research/designs/wiremod_designs.dm b/code/modules/research/designs/wiremod_designs.dm
index 112f3ad2512..723cb24b600 100644
--- a/code/modules/research/designs/wiremod_designs.dm
+++ b/code/modules/research/designs/wiremod_designs.dm
@@ -735,6 +735,10 @@
/datum/material/glass = SMALL_MATERIAL_AMOUNT * 5,
)
build_path = /obj/item/implantcase/circuit
+ transfered_materials = list(
+ /obj/item/implantcase/circuit = /obj/item/implantcase/circuit::custom_materials,
+ /obj/item/implant/circuit = /obj/item/implant/circuit::custom_materials,
+ )
build_type = COMPONENT_PRINTER
category = list(
RND_CATEGORY_CIRCUITRY + RND_SUBCATEGORY_CIRCUITRY_SHELLS
diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm
index 01f3631c77b..2084913113f 100644
--- a/code/modules/research/machinery/_production.dm
+++ b/code/modules/research/machinery/_production.dm
@@ -210,14 +210,13 @@
*
* * path - the design path to check for
*/
-/obj/machinery/rnd/production/proc/build_efficiency(path)
+/obj/machinery/rnd/production/proc/build_efficiency(datum/design/design)
PRIVATE_PROC(TRUE)
SHOULD_BE_PURE(TRUE)
- if(ispath(path, /obj/item/stack/sheet) || ispath(path, /obj/item/stack/ore/bluespace_crystal))
+ if(ispath(design.build_path, /obj/item/stack) || design.fixed_cost_efficiency)
return 1
- else
- return efficiency_coeff
+ return efficiency_coeff
/obj/machinery/rnd/production/ui_assets(mob/user)
return list(
@@ -243,7 +242,7 @@
for(var/datum/design/design in cached_designs)
var/cost = list()
- coefficient = build_efficiency(design.build_path)
+ coefficient = build_efficiency(design)
for(var/datum/material/mat as anything in design.materials)
var/amount = design.materials[mat]
cost[mat.name] = OPTIMAL_COST(amount * coefficient)
@@ -330,7 +329,7 @@
print_quantity = clamp(print_quantity, 1, 50)
//efficiency for this design, stacks use exact materials
- var/coefficient = build_efficiency(design.build_path)
+ var/coefficient = build_efficiency(design)
//check for materials
if(!materials.can_use_resource(user_data = ID_DATA(usr)))
@@ -412,29 +411,29 @@
return
var/is_stack = ispath(design.build_path, /obj/item/stack)
- var/list/design_materials = design.materials
- if(!materials.mat_container.has_materials(design_materials, material_cost_coefficient, is_stack ? items_remaining : 1))
+
+ if(!materials.mat_container.has_materials(design.materials, material_cost_coefficient, is_stack ? items_remaining : 1))
say("Unable to continue production, missing materials.")
finalize_build()
return
- materials.use_materials(design_materials, material_cost_coefficient, is_stack ? items_remaining : 1, "processed", "[design.name]", user_data = user_data)
+ materials.use_materials(design.materials, material_cost_coefficient, is_stack ? items_remaining : 1, "processed", "[design.name]", user_data = user_data)
var/atom/movable/created
+ var/number_to_make = 1
if(is_stack)
var/obj/item/stack/stack_item = initial(design.build_path)
var/max_stack_amount = initial(stack_item.max_amount)
- var/number_to_make = (initial(stack_item.amount) * items_remaining)
+ number_to_make = (initial(stack_item.amount) * items_remaining)
while(number_to_make > max_stack_amount)
- created = design.create_result(target, design_materials, amount = max_stack_amount)
+ created = design.create_result(target, design.materials, amount = max_stack_amount)
if(isitem(created))
created.pixel_x = created.base_pixel_x + rand(-6, 6)
created.pixel_y = created.base_pixel_y + rand(-6, 6)
number_to_make -= max_stack_amount
- created = design.create_result(target, design_materials, amount = number_to_make)
- else
- created = design.create_result(target, design_materials)
- split_materials_uniformly(design_materials, material_cost_coefficient, created)
+ created = design.create_result(target, design.materials, amount = number_to_make)
+ if(design.inherit_materials != DESIGN_DONT_INHERIT_MATS)
+ design.transfer_materials(design.materials, material_cost_coefficient, created)
if(isitem(created))
created.pixel_x = created.base_pixel_x + rand(-6, 6)
diff --git a/code/modules/research/part_replacer.dm b/code/modules/research/part_replacer.dm
index 3b022850f65..72c9d3394ab 100644
--- a/code/modules/research/part_replacer.dm
+++ b/code/modules/research/part_replacer.dm
@@ -9,6 +9,7 @@
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
w_class = WEIGHT_CLASS_HUGE
storage_type = /datum/storage/rped
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/item/storage/part_replacer/interact_with_atom(obj/attacked_object, mob/living/user, list/modifiers)
if(user.combat_mode)
@@ -58,6 +59,7 @@
inhand_icon_state = "BS_RPED"
w_class = WEIGHT_CLASS_NORMAL
storage_type = /datum/storage/rped/bluespace
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 1.25)
/obj/item/storage/part_replacer/bluespace/Initialize(mapload)
. = ..()
diff --git a/code/modules/research/stock_parts.dm b/code/modules/research/stock_parts.dm
index ffbf453f393..661d0e1c3c7 100644
--- a/code/modules/research/stock_parts.dm
+++ b/code/modules/research/stock_parts.dm
@@ -31,32 +31,32 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
name = "capacitor"
desc = "A basic capacitor used in the construction of a variety of devices."
icon_state = "capacitor"
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.5, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.5)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT)
/obj/item/stock_parts/scanning_module
name = "scanning module"
desc = "A compact, high resolution scanning module used in the construction of certain devices."
icon_state = "scan_module"
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.5, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.2)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5)
/obj/item/stock_parts/servo
name = "micro-servo"
desc = "A tiny little servo motor used in the construction of certain devices."
icon_state = "micro_servo"
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.3)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT)
base_name = "servo"
/obj/item/stock_parts/micro_laser
name = "micro-laser"
desc = "A tiny laser used in certain devices."
icon_state = "micro_laser"
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.1, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.2)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.5)
/obj/item/stock_parts/matter_bin
name = "matter bin"
desc = "A container designed to hold compressed matter awaiting reconstruction."
icon_state = "matter_bin"
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.8)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT)
//Rating 2
@@ -66,7 +66,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
icon_state = "adv_capacitor"
rating = 2
energy_rating = 3
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.5, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.5)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.5)
/obj/item/stock_parts/scanning_module/adv
name = "advanced scanning module"
@@ -74,7 +74,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
icon_state = "adv_scan_module"
rating = 2
energy_rating = 3
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.5, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.2)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT)
/obj/item/stock_parts/servo/nano
name = "nano-servo"
@@ -82,7 +82,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
icon_state = "nano_servo"
rating = 2
energy_rating = 3
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.3)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 1.5)
/obj/item/stock_parts/micro_laser/high
name = "high-power micro-laser"
@@ -90,7 +90,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
icon_state = "high_micro_laser"
rating = 2
energy_rating = 3
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.1, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.2)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT)
/obj/item/stock_parts/matter_bin/adv
name = "advanced matter bin"
@@ -98,7 +98,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
icon_state = "advanced_matter_bin"
rating = 2
energy_rating = 3
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.8)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 1.5)
//Rating 3
@@ -108,7 +108,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
icon_state = "super_capacitor"
rating = 3
energy_rating = 5
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.5, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.5)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2, /datum/material/gold = SMALL_MATERIAL_AMOUNT)
/obj/item/stock_parts/scanning_module/phasic
name = "phasic scanning module"
@@ -116,7 +116,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
icon_state = "super_scan_module"
rating = 3
energy_rating = 5
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.5, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.2)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 0.6)
/obj/item/stock_parts/servo/pico
name = "pico-servo"
@@ -124,7 +124,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
icon_state = "pico_servo"
rating = 3
energy_rating = 5
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.3)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2)
/obj/item/stock_parts/micro_laser/ultra
name = "ultra-high-power micro-laser"
@@ -132,7 +132,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
desc = "A tiny laser used in certain devices."
rating = 3
energy_rating = 5
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.1, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.2)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.5, /datum/material/uranium = SMALL_MATERIAL_AMOUNT * 0.6)
/obj/item/stock_parts/matter_bin/super
name = "super matter bin"
@@ -140,7 +140,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
icon_state = "super_matter_bin"
rating = 3
energy_rating = 5
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.8)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2)
//Rating 4
@@ -150,7 +150,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
icon_state = "quadratic_capacitor"
rating = 4
energy_rating = 10
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.5, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.5)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2, /datum/material/gold = SMALL_MATERIAL_AMOUNT, /datum/material/diamond = SMALL_MATERIAL_AMOUNT)
/obj/item/stock_parts/scanning_module/triphasic
name = "triphasic scanning module"
@@ -158,7 +158,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
icon_state = "triphasic_scan_module"
rating = 4
energy_rating = 10
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.5, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.2)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT * 0.5, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 0.3)
/obj/item/stock_parts/servo/femto
name = "femto-servo"
@@ -166,7 +166,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
icon_state = "femto_servo"
rating = 4
energy_rating = 10
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.3)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 0.3, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 0.3)
/obj/item/stock_parts/micro_laser/quadultra
name = "quad-ultra micro-laser"
@@ -174,7 +174,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
desc = "A tiny laser used in certain devices."
rating = 4
energy_rating = 10
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.1, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.2)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2, /datum/material/uranium = SMALL_MATERIAL_AMOUNT, /datum/material/diamond = SMALL_MATERIAL_AMOUNT * 0.6)
/obj/item/stock_parts/matter_bin/bluespace
name = "bluespace matter bin"
@@ -182,7 +182,7 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
icon_state = "bluespace_matter_bin"
rating = 4
energy_rating = 10
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.8)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2.5, /datum/material/diamond = SMALL_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT)
// Subspace stock parts
@@ -195,43 +195,43 @@ If you create T5+ please take a pass at mech_fabricator.dm. The parts being good
name = "subspace ansible"
icon_state = "subspace_ansible"
desc = "A compact module capable of sensing extradimensional activity."
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.3, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.1)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/silver = SMALL_MATERIAL_AMOUNT)
/obj/item/stock_parts/subspace/filter
name = "hyperwave filter"
icon_state = "hyperwave_filter"
desc = "A tiny device capable of filtering and converting super-intense radio waves."
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.3, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.1)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/silver = SMALL_MATERIAL_AMOUNT)
/obj/item/stock_parts/subspace/amplifier
name = "subspace amplifier"
icon_state = "subspace_amplifier"
desc = "A compact micro-machine capable of amplifying weak subspace transmissions."
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.3, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.1)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT, /datum/material/uranium = SMALL_MATERIAL_AMOUNT)
/obj/item/stock_parts/subspace/treatment
name = "subspace treatment disk"
icon_state = "treatment_disk"
desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves."
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.3, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.1)
+ custom_materials = list(/datum/material/silver = SMALL_MATERIAL_AMOUNT * 2, /datum/material/iron = SMALL_MATERIAL_AMOUNT)
/obj/item/stock_parts/subspace/analyzer
name = "subspace wavelength analyzer"
icon_state = "wavelength_analyzer"
desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths."
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.3, /datum/material/glass=SMALL_MATERIAL_AMOUNT*0.1)
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT)
/obj/item/stock_parts/subspace/crystal
name = "ansible crystal"
icon_state = "ansible_crystal"
desc = "A crystal made from pure glass used to transmit laser databursts to subspace."
- custom_materials = list(/datum/material/glass=SMALL_MATERIAL_AMOUNT*0.5)
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.8, /datum/material/silver = SMALL_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT)
/obj/item/stock_parts/subspace/transmitter
name = "subspace transmitter"
icon_state = "subspace_transmitter"
desc = "A large piece of equipment used to open a window into the subspace dimension."
- custom_materials = list(/datum/material/iron=SMALL_MATERIAL_AMOUNT*0.5)
+ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT, /datum/material/silver = SMALL_MATERIAL_AMOUNT, /datum/material/uranium = SMALL_MATERIAL_AMOUNT)
// Misc. Parts
diff --git a/code/modules/research/xenobiology/vatgrowing/biopsy_tool.dm b/code/modules/research/xenobiology/vatgrowing/biopsy_tool.dm
index cfc3e56bc5b..e8ecf571a7e 100644
--- a/code/modules/research/xenobiology/vatgrowing/biopsy_tool.dm
+++ b/code/modules/research/xenobiology/vatgrowing/biopsy_tool.dm
@@ -6,6 +6,7 @@
icon_state = "biopsy"
worn_icon_state = "biopsy"
base_icon_state = "biopsy"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.5)
/// Whether or not we can swab objects
var/can_swap_objects = FALSE
diff --git a/code/modules/research/xenobiology/vatgrowing/petri_dish.dm b/code/modules/research/xenobiology/vatgrowing/petri_dish.dm
index c26906c0091..20adbc60f18 100644
--- a/code/modules/research/xenobiology/vatgrowing/petri_dish.dm
+++ b/code/modules/research/xenobiology/vatgrowing/petri_dish.dm
@@ -5,6 +5,7 @@
icon = 'icons/obj/science/vatgrowing.dmi'
icon_state = "petri_dish"
w_class = WEIGHT_CLASS_TINY
+ custom_materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
///The sample stored on the dish
var/datum/biological_sample/sample
diff --git a/code/modules/research/xenobiology/vatgrowing/swab.dm b/code/modules/research/xenobiology/vatgrowing/swab.dm
index 4236c9c7ac9..06d947568a7 100644
--- a/code/modules/research/xenobiology/vatgrowing/swab.dm
+++ b/code/modules/research/xenobiology/vatgrowing/swab.dm
@@ -5,6 +5,7 @@
icon = 'icons/obj/science/vatgrowing.dmi'
icon_state = "swab"
w_class = WEIGHT_CLASS_TINY
+ custom_materials = list(/datum/material/plastic = SMALL_MATERIAL_AMOUNT * 2)
///Adds the swabbing component to the biopsy tool
/obj/item/swab/Initialize(mapload)
diff --git a/code/modules/shuttle/misc/shuttle_remote.dm b/code/modules/shuttle/misc/shuttle_remote.dm
index 795fe7fd2a1..8b026f99430 100644
--- a/code/modules/shuttle/misc/shuttle_remote.dm
+++ b/code/modules/shuttle/misc/shuttle_remote.dm
@@ -4,6 +4,7 @@
icon = 'icons/obj/devices/remote.dmi'
icon_state = "shuttleremote"
w_class = WEIGHT_CLASS_SMALL
+ custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 2, /datum/material/glass = SMALL_MATERIAL_AMOUNT)
/// if the docks may be changed
var/may_change_docks = TRUE //if this is set to FALSE make sure the shuttle it will be linked to does NOT get to have multiple instances of itself
/// the port where the shuttle leaves to
diff --git a/code/modules/shuttle/misc/spaceship_navigation_beacon.dm b/code/modules/shuttle/misc/spaceship_navigation_beacon.dm
index 41b3f5e39ed..9aa7245b46b 100644
--- a/code/modules/shuttle/misc/spaceship_navigation_beacon.dm
+++ b/code/modules/shuttle/misc/spaceship_navigation_beacon.dm
@@ -98,6 +98,7 @@
desc = "A compact radio navigation gigabeacon, a device used to provide shuttle navigation waypoints in unexplored areas. Must be deployed before use."
icon = 'icons/obj/machines/navigation_beacon.dmi'
icon_state = "beacon_folded"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/folded_navigation_gigabeacon/Initialize(mapload)
. = ..()
diff --git a/code/modules/shuttle/mobile_port/variants/custom/blueprints.dm b/code/modules/shuttle/mobile_port/variants/custom/blueprints.dm
index c37cb6cef7d..28b0955dcee 100644
--- a/code/modules/shuttle/mobile_port/variants/custom/blueprints.dm
+++ b/code/modules/shuttle/mobile_port/variants/custom/blueprints.dm
@@ -129,6 +129,7 @@
attack_verb_continuous = list("attacks", "baps", "hits")
attack_verb_simple = list("attack", "bap", "hit")
interaction_flags_atom = parent_type::interaction_flags_atom | INTERACT_ATOM_ALLOW_USER_LOCATION | INTERACT_ATOM_IGNORE_MOBILITY
+ custom_materials = list(/datum/material/plastic = HALF_SHEET_MATERIAL_AMOUNT)
var/base_desc = "A blank sheet of synthetic engineering-grade paper."
var/linked_desc = "A sheet of synthetic engineering-grade paper with shuttle schematics printed on it."
diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm
index 3c7f572a559..62a7e7e5635 100644
--- a/code/modules/surgery/bodyparts/robot_bodyparts.dm
+++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm
@@ -27,6 +27,7 @@
bodyshape = BODYSHAPE_HUMANOID
change_exempt_flags = BP_BLOCK_CHANGE_SPECIES
dmg_overlay_type = "robotic"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5)
brute_modifier = 0.8
burn_modifier = 0.8
@@ -67,6 +68,7 @@
bodyshape = BODYSHAPE_HUMANOID
change_exempt_flags = BP_BLOCK_CHANGE_SPECIES
dmg_overlay_type = "robotic"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5)
brute_modifier = 0.8
burn_modifier = 0.8
@@ -108,6 +110,7 @@
bodyshape = BODYSHAPE_HUMANOID
change_exempt_flags = BP_BLOCK_CHANGE_SPECIES
dmg_overlay_type = "robotic"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5)
brute_modifier = 0.8
burn_modifier = 0.8
@@ -163,6 +166,7 @@
bodyshape = BODYSHAPE_HUMANOID
change_exempt_flags = BP_BLOCK_CHANGE_SPECIES
dmg_overlay_type = "robotic"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5)
brute_modifier = 0.8
burn_modifier = 0.8
@@ -217,6 +221,7 @@
bodyshape = BODYSHAPE_HUMANOID
change_exempt_flags = BP_BLOCK_CHANGE_SPECIES
dmg_overlay_type = "robotic"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 20)
brute_modifier = 0.8
burn_modifier = 0.8
@@ -402,6 +407,7 @@
bodyshape = BODYSHAPE_HUMANOID
change_exempt_flags = BP_BLOCK_CHANGE_SPECIES
dmg_overlay_type = "robotic"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5)
brute_modifier = 0.8
burn_modifier = 0.8
@@ -590,6 +596,7 @@
max_damage = LIMB_MAX_HP_ADVANCED
body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_ADVANCED
is_emissive = TRUE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 3)
/obj/item/bodypart/arm/right/robot/advanced
name = "advanced robotic right arm"
@@ -602,6 +609,7 @@
max_damage = LIMB_MAX_HP_ADVANCED
body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_ADVANCED
is_emissive = TRUE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 3)
/obj/item/bodypart/leg/left/robot/advanced
name = "advanced robotic left leg"
@@ -614,6 +622,7 @@
max_damage = LIMB_MAX_HP_ADVANCED
body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_ADVANCED
is_emissive = TRUE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 3)
/obj/item/bodypart/leg/right/robot/advanced
name = "advanced robotic right leg"
@@ -626,6 +635,7 @@
max_damage = LIMB_MAX_HP_ADVANCED
body_damage_coeff = LIMB_BODY_DAMAGE_COEFFICIENT_ADVANCED
is_emissive = TRUE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 3, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 3)
#undef ROBOTIC_LIGHT_BRUTE_MSG
#undef ROBOTIC_MEDIUM_BRUTE_MSG
diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm
index 8f4e7f2dbea..597afad48b2 100644
--- a/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm
+++ b/code/modules/surgery/organs/internal/cyberimp/augments_arms.dm
@@ -66,10 +66,12 @@
. = ..()
if(ispath(active_item))
active_item = new active_item(src)
+ active_item.set_custom_materials(null)
items_list += WEAKREF(active_item)
for(var/typepath in items_to_create)
var/atom/new_item = new typepath(src)
+ new_item.set_custom_materials(null)
items_list += WEAKREF(new_item)
/obj/item/organ/cyberimp/arm/toolkit/Destroy()
@@ -278,6 +280,7 @@
/obj/item/wirecutters/cyborg,
/obj/item/multitool/cyborg,
)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75)
//The order of the item list for this implant is not alphabetized due to it actually affecting how it shows up playerside when opening the implant
/obj/item/organ/cyberimp/arm/toolkit/paperwork
@@ -396,6 +399,7 @@
/obj/item/circular_saw/augment,
/obj/item/surgical_drapes,
)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75)
/obj/item/organ/cyberimp/arm/toolkit/surgery/emagged
name = "hacked surgical toolset implant"
diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm b/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm
index 20f37927c82..b882872d467 100644
--- a/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm
+++ b/code/modules/surgery/organs/internal/cyberimp/augments_chest.dm
@@ -9,6 +9,7 @@
desc = "This implant will synthesize and pump into your bloodstream a small amount of nutriment when you are starving."
icon_state = "nutriment_implant"
aug_overlay = "nutripump"
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT)
var/hunger_threshold = NUTRITION_LEVEL_STARVING
var/synthesizing = 0
var/poison_amount = 5
@@ -47,6 +48,7 @@
aug_overlay = "nutripump_adv"
hunger_threshold = NUTRITION_LEVEL_HUNGRY
poison_amount = 10
+ custom_materials = list(/datum/material/uranium = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/organ/cyberimp/chest/nutriment/black_market
name = "nutriment pump implant PLUS PLUS PLUS"
@@ -68,6 +70,7 @@
aug_overlay = "reviver"
emissive_overlay = TRUE
slot = ORGAN_SLOT_HEART_AID
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.8, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.8, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 3)
var/revive_cost = 0
var/reviving = FALSE
COOLDOWN_DECLARE(reviver_cooldown)
@@ -188,6 +191,7 @@
emissive_overlay = TRUE
actions_types = list(/datum/action/item_action/organ_action/toggle)
w_class = WEIGHT_CLASS_NORMAL
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT)
var/on = FALSE
/obj/item/organ/cyberimp/chest/thrusters/Initialize(mapload)
@@ -299,6 +303,7 @@
Contains a slot which can be upgraded with a gravity anomaly core, improving its performance."
icon_state = "herculean_implant"
slot = ORGAN_SLOT_SPINE
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 3, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 3)
/// How much faster does the spinal implant improve our lifting speed, workout ability, reducing falling damage and improving climbing and standing speed
var/athletics_boost_multiplier = 0.8
/// How much additional throwing speed does our spinal implant grant us.
diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm b/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm
index 19ff1031d79..1d5e48a59e6 100644
--- a/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm
+++ b/code/modules/surgery/organs/internal/cyberimp/augments_eyes.dm
@@ -56,6 +56,7 @@
icon_state = "eye_implant_medical"
HUD_traits = list(TRAIT_MEDICAL_HUD)
hud_color = "#1D8FEC"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/organ/cyberimp/eyes/hud/security
name = "security HUD implant"
@@ -63,6 +64,7 @@
icon_state = "eye_implant_security"
HUD_traits = list(TRAIT_SECURITY_HUD)
hud_color = "#9A151E"
+ custom_materials = list(/datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6)
/obj/item/organ/cyberimp/eyes/hud/diagnostic
name = "diagnostic HUD implant"
@@ -70,6 +72,7 @@
icon_state = "eye_implant_diagnostic"
HUD_traits = list(TRAIT_DIAGNOSTIC_HUD, TRAIT_BOT_PATH_HUD)
hud_color = "#CC6E33"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.6)
/obj/item/organ/cyberimp/eyes/hud/security/syndicate
name = "contraband security HUD implant"
diff --git a/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm b/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm
index 8a6b28e5567..2d04b6d1e43 100644
--- a/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm
+++ b/code/modules/surgery/organs/internal/cyberimp/augments_internal.dm
@@ -105,6 +105,7 @@
name = "anti-drop implant"
desc = "This cybernetic brain implant will allow you to force your hand muscles to contract, preventing item dropping. Twitch ear to toggle."
icon_state = "brain_implant_antidrop"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 4, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 4)
var/active = FALSE
var/list/stored_items = list()
slot = ORGAN_SLOT_BRAIN_CEREBELLUM
@@ -168,6 +169,7 @@
desc = "This implant will automatically give you back control over your central nervous system, reducing downtime when stunned."
icon_state = "brain_implant_rebooter"
slot = ORGAN_SLOT_BRAIN_CNS
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT)
var/static/list/signalCache = list(
COMSIG_LIVING_STATUS_STUN,
@@ -250,6 +252,7 @@
icon_state = "brain_implant_connector"
slot = ORGAN_SLOT_BRAIN_CNS
actions_types = list(/datum/action/item_action/organ_action/use)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 3)
/obj/item/organ/cyberimp/brain/connector/ui_action_click()
@@ -355,6 +358,7 @@
slot = ORGAN_SLOT_BRAIN_HIPPOCAMPUS
emp_stun_duration = 0 SECONDS
emp_immobilize_duration = 4 SECONDS
+ custom_materials = list(/datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 2.5)
/// Lazylist of surgeries this implant provides
var/list/loaded_surgeries
@@ -482,6 +486,7 @@
slot = ORGAN_SLOT_BREATHING_TUBE
w_class = WEIGHT_CLASS_TINY
aug_overlay = "breathing_tube"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2.5)
/obj/item/organ/cyberimp/mouth/breathing_tube/emp_act(severity)
. = ..()
diff --git a/code/modules/surgery/organs/internal/ears/_ears.dm b/code/modules/surgery/organs/internal/ears/_ears.dm
index d9e2d68c870..3ab8ebb26a6 100644
--- a/code/modules/surgery/organs/internal/ears/_ears.dm
+++ b/code/modules/surgery/organs/internal/ears/_ears.dm
@@ -203,20 +203,16 @@
sprite_accessory_override = /datum/sprite_accessory/ears/cat/cybernetic
organ_flags = ORGAN_ROBOTIC
failing_desc = "seems to be broken."
+ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 4, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 2.5)
restyle_flags = NONE
-/obj/item/organ/ears/cat/cybernetic/upgraded
- name = "cybernetic cat ears"
- icon_state = "ears-c-cat-u"
- desc = "A cybernetic cat ear, still less durable than human ears."
- damage_multiplier = 1.5
-
/obj/item/organ/ears/cat/cybernetic/volume
name = "volume-adjusting cybernetic cat ears"
icon_state = "ears-c-cat-u2"
desc = "Advanced cybernetic cat ears capable of dampening loud noises to protect their user."
damage_multiplier = 1
bang_protect = 1
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/organ/ears/cat/cybernetic/whisper
name = "whisper-sensiive cybernetic cat ears"
@@ -225,6 +221,7 @@
damage_multiplier = 3 // 4 would be excessive
organ_traits = list(TRAIT_GOOD_HEARING)
bodypart_overlay = /datum/bodypart_overlay/mutant/cat_ears/cybernetic/green
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/organ/ears/cat/cybernetic/xray
name = "wall-penetrating cybernetic cat ears"
@@ -233,6 +230,7 @@
damage_multiplier = 3 // As above, 4 would be excessive
organ_traits = list(TRAIT_XRAY_HEARING)
bodypart_overlay = /datum/bodypart_overlay/mutant/cat_ears/cybernetic/blue
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/datum/bodypart_overlay/mutant/cat_ears/cybernetic
color_source = null
@@ -263,6 +261,13 @@
/datum/bodypart_overlay/mutant/cat_ears/cybernetic/blue
inner_color = "#0079EA"
+/obj/item/organ/ears/cat/cybernetic/upgraded
+ name = "cybernetic cat ears"
+ icon_state = "ears-c-cat-u"
+ desc = "A cybernetic cat ear, still less durable than human ears."
+ damage_multiplier = 1.5
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
+
/obj/item/organ/ears/ghost
name = "ghost ears"
desc = "All the more to hear you... though it can't hear through walls."
@@ -291,12 +296,14 @@
damage_multiplier = 1.2
organ_flags = ORGAN_ROBOTIC
failing_desc = "seems to be broken."
+ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 4, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 2.5)
/obj/item/organ/ears/cybernetic/upgraded
name = "cybernetic ears"
icon_state = "ears-c-u"
desc = "A cybernetic ear, surpassing the performance of organic ears."
damage_multiplier = 0.75
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/organ/ears/cybernetic/whisper
name = "whisper-sensitive cybernetic ears"
@@ -307,6 +314,7 @@
// The original idea was to use signals to do this not traits. Unfortunately, the star effect used for whispers applies before any relevant signals
// This seems like the least invasive solution
organ_traits = list(TRAIT_GOOD_HEARING)
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/organ/ears/cybernetic/volume
name = "volume-adjusting cybernetic ears"
@@ -314,13 +322,7 @@
desc = "Advanced cybernetic ears capable of dampening loud noises to protect their user."
bang_protect = EAR_PROTECTION_NORMAL
damage_multiplier = 0.5
-
-/obj/item/organ/ears/cybernetic/volume
- name = "volume-adjusting cybernetic ears"
- icon_state = "ears-c-u"
- desc = "Advanced cybernetic ears capable of dampening loud noises to protect their user."
- bang_protect = 1
- damage_multiplier = 0.5
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
// "X-ray ears" that let you hear through walls
/obj/item/organ/ears/cybernetic/xray
@@ -330,6 +332,7 @@
// Same sensitivity as felinid ears
damage_multiplier = 2
organ_traits = list(TRAIT_XRAY_HEARING)
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/organ/ears/cybernetic/emp_act(severity)
. = ..()
diff --git a/code/modules/surgery/organs/internal/eyes/eyes_augments.dm b/code/modules/surgery/organs/internal/eyes/eyes_augments.dm
index 0cce64e4c0c..59e26372389 100644
--- a/code/modules/surgery/organs/internal/eyes/eyes_augments.dm
+++ b/code/modules/surgery/organs/internal/eyes/eyes_augments.dm
@@ -6,6 +6,7 @@
failing_desc = "seems to be broken."
pupils_name = "apertures"
penlight_message = "are cybernetic, click-whirring as they refocus"
+ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 4, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 2.5)
/obj/item/organ/eyes/robotic/emp_act(severity)
. = ..()
@@ -25,6 +26,7 @@
eye_color_right = "#2f3032"
flash_protect = FLASH_PROTECTION_SENSITIVE
penlight_message = "are low grade cybernetics, poorly compensating for the light"
+ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 4, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 2.5)
/obj/item/organ/eyes/robotic/basic/emp_act(severity)
. = ..()
@@ -47,6 +49,7 @@
flash_protect = FLASH_PROTECTION_SENSITIVE
organ_traits = list(TRAIT_XRAY_VISION)
penlight_message = "are replaced by small radiation emitters and detectors"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/uranium = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/diamond = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/organ/eyes/robotic/thermals
name = "thermal eyes"
@@ -61,6 +64,7 @@
flash_protect = FLASH_PROTECTION_SENSITIVE
pupils_name = "slit aperatures"
penlight_message = "are cybernetic, with vertically slit metalic lenses."
+ custom_materials = list(/datum/material/diamond = SHEET_MATERIAL_AMOUNT, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/organ/eyes/robotic/flashlight
name = "flashlight eyes"
@@ -108,6 +112,7 @@
flash_protect = FLASH_PROTECTION_WELDER
pupils_name = "flash shields"
penlight_message = "have polarized cybernetic lenses, blocking bright lights"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4)
/obj/item/organ/eyes/robotic/shield/Initialize(mapload)
. = ..()
@@ -127,6 +132,7 @@
eye_color_left = "#19191a"
eye_color_right = "#19191a"
actions_types = list(/datum/action/item_action/organ_action/use, /datum/action/item_action/organ_action/toggle)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
var/max_light_beam_distance = 5
var/obj/item/flashlight/eyelight/glow/eye
/// base icon state for eye overlays
@@ -399,6 +405,7 @@
flash_protect = FLASH_PROTECTION_SENSITIVE
pupils_name = "aperture clusters"
penlight_message = "are metal hemispheres, resembling insect eyes"
+ custom_materials = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 4, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 2.5)
/obj/item/organ/eyes/robotic/basic/moth
name = "basic robotic moth eyes"
@@ -517,6 +524,7 @@
penlight_message = "are a wide reinforced faceplate with an inbuilt screen and a multitude of combat sensors"
light_reactive = FALSE
actions_types = list(/datum/action/item_action/organ_action/use)
+ custom_materials = list(/datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.6, /datum/material/plasma = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/iron = SMALL_MATERIAL_AMOUNT * 4, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 4, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 4)
/// Used to detect when unmasked mobs enter range
var/datum/proximity_monitor/tacvisor/proximity_monitor
/// List of mob refs -> their overlays
diff --git a/code/modules/surgery/organs/internal/heart/_heart.dm b/code/modules/surgery/organs/internal/heart/_heart.dm
index feb34bf041e..f2f7f9484fb 100644
--- a/code/modules/surgery/organs/internal/heart/_heart.dm
+++ b/code/modules/surgery/organs/internal/heart/_heart.dm
@@ -211,6 +211,7 @@
maxHealth = STANDARD_ORGAN_THRESHOLD * 0.75 //This also hits defib timer, so a bit higher than its less important counterparts
failing_desc = "seems to be broken."
beat_noise = "a steady fsssh of hydraulics"
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/// Whether or not we have a stabilization available. This prevents our owner from entering softcrit for an amount of time.
var/stabilization_available = FALSE
/// How long our stabilization lasts for.
@@ -298,6 +299,7 @@
toxification_probability = 0
bleed_prevention = TRUE
emp_vulnerability = 20
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/organ/heart/cybernetic/surplus
name = "surplus prosthetic heart"
diff --git a/code/modules/surgery/organs/internal/heart/heart_anomalock.dm b/code/modules/surgery/organs/internal/heart/heart_anomalock.dm
index 288544cda2c..36af2ec072e 100644
--- a/code/modules/surgery/organs/internal/heart/heart_anomalock.dm
+++ b/code/modules/surgery/organs/internal/heart/heart_anomalock.dm
@@ -12,6 +12,7 @@
toxification_probability = 0
COOLDOWN_DECLARE(survival_cooldown)
+ custom_materials = list(/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5, /datum/material/diamond = SHEET_MATERIAL_AMOUNT, /datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
///Cooldown for the activation of the organ
var/survival_cooldown_time = 5 MINUTES
///The lightning effect on our mob when the implant is active
diff --git a/code/modules/surgery/organs/internal/liver/_liver.dm b/code/modules/surgery/organs/internal/liver/_liver.dm
index 2b2bb77780b..1c70956e7f4 100644
--- a/code/modules/surgery/organs/internal/liver/_liver.dm
+++ b/code/modules/surgery/organs/internal/liver/_liver.dm
@@ -246,6 +246,7 @@
maxHealth = STANDARD_ORGAN_THRESHOLD*0.5
toxTolerance = 2
liver_resistance = 0.9 * LIVER_DEFAULT_TOX_RESISTANCE // -10%
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
var/emp_vulnerability = 80 //Chance of permanent effects if emp-ed.
/obj/item/organ/liver/cybernetic/emp_act(severity)
@@ -276,6 +277,7 @@
toxTolerance = 10 //can shrug off up to 10u of toxins
liver_resistance = 1.5 * LIVER_DEFAULT_TOX_RESISTANCE // +50%
emp_vulnerability = 20
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/organ/liver/cybernetic/surplus
name = "surplus prosthetic liver"
diff --git a/code/modules/surgery/organs/internal/lungs/_lungs.dm b/code/modules/surgery/organs/internal/lungs/_lungs.dm
index fda2762d9ee..d1a95d8f014 100644
--- a/code/modules/surgery/organs/internal/lungs/_lungs.dm
+++ b/code/modules/surgery/organs/internal/lungs/_lungs.dm
@@ -944,6 +944,7 @@
breath_noise = "a steady whirr"
organ_flags = ORGAN_ROBOTIC
maxHealth = STANDARD_ORGAN_THRESHOLD * 0.5
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
var/emp_vulnerability = 80 //Chance of permanent effects if emp-ed.
/obj/item/organ/lungs/cybernetic/emp_act(severity)
@@ -973,6 +974,7 @@
maxHealth = 2 * STANDARD_ORGAN_THRESHOLD
safe_oxygen_min = 13
emp_vulnerability = 20
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
cold_level_1_threshold = COLD_LEVEL_1_THRESHOLD - 60
cold_level_2_threshold = COLD_LEVEL_2_THRESHOLD - 60
diff --git a/code/modules/surgery/organs/internal/stomach/_stomach.dm b/code/modules/surgery/organs/internal/stomach/_stomach.dm
index 6870d931614..ce80ca5a9dd 100644
--- a/code/modules/surgery/organs/internal/stomach/_stomach.dm
+++ b/code/modules/surgery/organs/internal/stomach/_stomach.dm
@@ -503,6 +503,7 @@
organ_flags = ORGAN_ROBOTIC
maxHealth = STANDARD_ORGAN_THRESHOLD * 0.5
metabolism_efficiency = 0.035 // not as good at digestion
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
var/emp_vulnerability = 80 //Chance of permanent effects if emp-ed.
/obj/item/organ/stomach/cybernetic/emp_act(severity)
@@ -539,6 +540,7 @@
disgust_metabolism = 3
emp_vulnerability = 20
metabolism_efficiency = 0.1
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/organ/stomach/cybernetic/tier3/stomach_acid_power(atom/movable/nomnom)
if (isliving(nomnom))
diff --git a/code/modules/surgery/surgery_tools.dm b/code/modules/surgery/surgery_tools.dm
index 7dde72e5fd4..eb7e1e063fc 100644
--- a/code/modules/surgery/surgery_tools.dm
+++ b/code/modules/surgery/surgery_tools.dm
@@ -334,6 +334,7 @@
drop_sound = SFX_CLOTH_DROP
pickup_sound = SFX_CLOTH_PICKUP
gender = PLURAL
+ custom_materials = list(/datum/material/plastic = SHEET_MATERIAL_AMOUNT)
/obj/item/surgical_drapes/Initialize(mapload)
. = ..()
@@ -609,7 +610,7 @@
icon_angle = 135
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
- custom_materials = list(/datum/material/iron =SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT*1.25, /datum/material/silver = SHEET_MATERIAL_AMOUNT*1.25)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25)
obj_flags = CONDUCTS_ELECTRICITY
item_flags = SURGICAL_TOOL
w_class = WEIGHT_CLASS_SMALL
@@ -634,7 +635,7 @@
icon_state = "bloodfilter"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
- custom_materials = list(/datum/material/iron=SHEET_MATERIAL_AMOUNT, /datum/material/glass=HALF_SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/silver=SMALL_MATERIAL_AMOUNT*5)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 0.75, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
item_flags = SURGICAL_TOOL
w_class = WEIGHT_CLASS_NORMAL
attack_verb_continuous = list("pumps", "siphons")
diff --git a/code/modules/unit_tests/crafting.dm b/code/modules/unit_tests/crafting.dm
index 7734732389e..8e152e17c09 100644
--- a/code/modules/unit_tests/crafting.dm
+++ b/code/modules/unit_tests/crafting.dm
@@ -161,7 +161,7 @@
var/what_it_is = copycat.transcribe_materials_list(copycat_mats)
//compose a text string containing the syntax and paths to use for editing the custom_materials var
if(result.custom_materials)
- what_it_should_be += " (you can round a bit for values above 100)"
+ what_it_should_be += " (you can round values above SHEET_MATERIAL_AMOUNT to the nearest decimal)"
///This tells you about other ways to deal with the issue, if you can't just change the materials of the object. For example, if there are two different recipes for it.
diff --git a/code/modules/unit_tests/designs.dm b/code/modules/unit_tests/designs.dm
index a9b293ed24a..eebbd2a1848 100644
--- a/code/modules/unit_tests/designs.dm
+++ b/code/modules/unit_tests/designs.dm
@@ -4,10 +4,10 @@
//Can't use allocate because of bug with certain datums
var/datum/design/default_design = new /datum/design()
- for(var/path in subtypesof(/datum/design) - typesof(/datum/design/surgery)) //We are checking surgery design separatly later since they work differently
- var/datum/design/current_design = new path //Create an instance of each design
- if (current_design.id == DESIGN_ID_IGNORE) //Don't check designs with ignore ID
- continue
+ for(var/design_id in SSresearch.techweb_designs) //We are checking surgery design separatly later since they work differently
+ var/datum/design/current_design = SSresearch.techweb_designs[design_id]
+ if(istype(current_design, /datum/design/surgery))
+ return
if (isnull(current_design.name) || current_design.name == default_design.name) //Designs with ID must have non default/null Name
TEST_FAIL("Design [current_design.type] has default or null name var but has an ID")
if ((!isnull(current_design.materials) && LAZYLEN(current_design.materials)) || (!isnull(current_design.reagents_list) && LAZYLEN(current_design.reagents_list))) //Design requires materials
@@ -29,28 +29,23 @@
if (isnull(path::desc) && isnull(path::surgery::rnd_desc) && isnull(path::surgery::desc))
TEST_FAIL("Surgery Design [path] has no desc set or inferable from surgery type")
+///Check that all designs have a corresponding id and viceversa, and that they're actually implemented (techweb or disks)
/datum/unit_test/design_source
/datum/unit_test/design_source/Run()
var/list/all_designs = list()
- for (var/datum/design/design as anything in subtypesof(/datum/design))
- design = new design()
- if (design.id == DESIGN_ID_IGNORE)
- continue
- if (design.id in all_designs)
- TEST_FAIL("Design [design.type] shares an ID \"[design.id]\" with another design")
- continue
+ for(var/id in SSresearch.techweb_designs)
+ var/datum/design/design = SSresearch.techweb_designs[id]
all_designs[design.id] = design.type
- for (var/datum/techweb_node/node as anything in subtypesof(/datum/techweb_node))
- node = new node()
+ for (var/node_id in SSresearch.techweb_nodes)
+ var/datum/techweb_node/node = SSresearch.techweb_nodes[node_id]
for (var/design_id in node.design_ids)
if (!all_designs[design_id])
TEST_FAIL("Techweb node [node.display_name] ([node.id]) has a design_id \"[design_id]\" which doesn't correspond to any existing design!")
continue
all_designs -= design_id
- qdel(node)
// Designs can also be disk-exclusive
for (var/obj/item/disk/design_disk/design_disk as anything in subtypesof(/obj/item/disk/design_disk))
@@ -81,3 +76,90 @@
for (var/missing_id in all_designs)
TEST_FAIL("Design [all_designs[missing_id]] has an ID \"[missing_id]\" which is not in any of the techweb nodes or tech disks, or it is possibly misconfigured!")
+
+///Check that the materials present in the printed objects are consistent with the materials used in techweb design that prints said object.
+/datum/unit_test/design_mats
+
+/datum/unit_test/design_mats/Run()
+ var/list/special_types = typesof(/datum/material_requirement) + typesof(/datum/material_slot) //we skip designs that can be printed with non-specific materials.
+
+ for (var/design_id in SSresearch.techweb_designs)
+ var/datum/design/design = SSresearch.techweb_designs[design_id]
+
+ var/mat_requirement_design = length(special_types & design.materials)
+
+ if(mat_requirement_design && length(design.transfered_materials))
+ TEST_FAIL("'transfer_materials' doesn't work for [design.type] and other designs that have [/datum/material_slot] or [/datum/material_requirement] in their 'materials' var yet")
+ continue
+
+ //Do not perform further checks if it doesn't have a built path, mat requirements or if it's one of those designs with choosable requirements (harder to implement checks for those)
+ if(mat_requirement_design || !design.build_path || !length(design.materials))
+ continue
+
+ if(length(design.transfered_materials))
+ var/list/mats_total = list()
+ for(var/object_type in design.transfered_materials)
+ var/list/transfered_to_obj = design.transfered_materials[object_type]
+ for(var/mat in design.transfered_materials[object_type])
+ if(!(mat in design.materials))
+ TEST_FAIL("Found material type [mat] in the 'transfered_materials' var of [design.type] that isn't present in its 'materials' var")
+ continue
+ mats_total[mat] += transfered_to_obj[mat]
+ for(var/mat in mats_total)
+ if(round(mats_total[mat]) > design.materials[mat]) // some sneaky weird bug may require rounding the value down
+ TEST_FAIL("Amount of [mat] in the 'transfered_materials' var of [design.type] exceeds what present in its 'materials' var \
+ ([transcribe_mat_value_as_sheet(mats_total[mat])] vs [transcribe_mat_value_as_sheet(design.materials[mat])])")
+
+ //The design is exempted from the unit test if it doesn't have the standard inherit_materials val.
+ if(design.inherit_materials != DESIGN_INHERIT_MATS)
+ continue
+
+ // The object that represents the type of object that can be built from the design, though it's simple spawned in this case
+ var/atom/movable/generic_instance = allocate_build_path_for_design(design.build_path)
+
+ // The object that represents the type of object built from the design.
+ var/atom/movable/printed_instance = allocate_build_path_for_design(design.build_path)
+
+ design.transfer_materials(design.materials, 1, printed_instance)
+
+ if(generic_instance.compare_materials(printed_instance))
+ continue
+
+ var/target_var = NAMEOF(generic_instance, custom_materials)
+ var/warning = "[target_var] of [generic_instance.type] differs from the materials of [design.type]"
+
+ var/what_it_should_be
+ var/what_it_is
+ if(isstack(generic_instance))
+ var/obj/item/stack/generic_stack = generic_instance
+ var/obj/item/stack/printed_stack = printed_instance
+ target_var = NAMEOF(generic_stack, mats_per_unit)
+ what_it_should_be = printed_stack.transcribe_materials_list(printed_stack.mats_per_unit)
+ what_it_is = generic_stack.transcribe_materials_list(generic_stack.mats_per_unit)
+ else
+ what_it_should_be = printed_instance.transcribe_materials_list()
+ what_it_is = generic_instance.transcribe_materials_list()
+
+ TEST_FAIL("[warning]. should be: [target_var] = [what_it_should_be] (current value: [what_it_is]). \
+ Fix it or change the value of the [NAMEOF(design, inherit_materials)] var of [design.type]. \
+ You can also edit the [NAMEOF(design, transfered_materials)] list of the design")
+
+ if(!length(printed_instance.contents))
+ continue
+
+ var/list/all_mats = printed_instance.get_contents_custom_materials(/obj/item, TRAIT_IGNORED_BY_MAT_REDEMPTION)
+ for(var/datum/material/mat as anything in all_mats)
+ if(all_mats[mat] > design.materials[mat])
+ var/sheet_val = transcribe_mat_value_as_sheet(all_mats[mat])
+ var/design_val = transcribe_mat_value_as_sheet(design.materials[mat])
+ TEST_FAIL("The [mat.name] ([mat.type] = [sheet_val]) of [printed_instance.type] plus its contents exceeds what presents in [design.type] ([design_val]). Review the code of the object and fix that.")
+
+///Proc made to reduce copypasted code when allocating an object from a design, because stacks have a tendency to merge with each other, and we don't want that.
+/datum/unit_test/design_mats/proc/allocate_build_path_for_design(build_path)
+ var/is_stack = ispath(build_path)
+ if(is_stack) //If this is a stack, we don't want it to merge with any other stack on the same location
+ var/obj/item/stack/stack_path = build_path
+ var/stack_amount = initial(stack_path.amount)
+ //So we need to specify the args up to the merge argument to avoid issues
+ return allocate(stack_path, run_loc_floor_bottom_left, /*new_amount =*/ stack_amount, /*merge =*/ FALSE)
+ return allocate(build_path)
diff --git a/code/modules/vehicles/mecha/equipment/tools/air_tank.dm b/code/modules/vehicles/mecha/equipment/tools/air_tank.dm
index eae27f5a183..654a6efc49b 100644
--- a/code/modules/vehicles/mecha/equipment/tools/air_tank.dm
+++ b/code/modules/vehicles/mecha/equipment/tools/air_tank.dm
@@ -5,10 +5,11 @@
icon_state = "mecha_air_tank"
equipment_slot = MECHA_UTILITY
can_be_toggled = TRUE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5)
///Whether the pressurization should start automatically when the cabin is sealed airtight
var/auto_pressurize_on_seal = TRUE
///The internal air tank obj of the mech
- var/obj/machinery/portable_atmospherics/canister/internal_tank
+ var/obj/machinery/portable_atmospherics/canister/mecha/internal_tank
///Volume of this air tank
var/volume = TANK_STANDARD_VOLUME * 10
///Maximum pressure of this air tank
@@ -25,6 +26,9 @@
///Target pressure of the pump
var/tank_pump_pressure = ONE_ATMOSPHERE
+/obj/machinery/portable_atmospherics/canister/mecha
+ custom_materials = null
+
/obj/item/mecha_parts/mecha_equipment/air_tank/Initialize(mapload)
. = ..()
internal_tank = new(src)
diff --git a/code/modules/vehicles/mecha/equipment/tools/medical_tools.dm b/code/modules/vehicles/mecha/equipment/tools/medical_tools.dm
index 4d08ef0cccc..2636186bb06 100644
--- a/code/modules/vehicles/mecha/equipment/tools/medical_tools.dm
+++ b/code/modules/vehicles/mecha/equipment/tools/medical_tools.dm
@@ -30,6 +30,7 @@
energy_drain = 20
range = MECHA_MELEE
equip_cooldown = 20
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5)
/// ref to the patient loaded in the sleeper
var/mob/living/carbon/patient
@@ -213,6 +214,7 @@
range = MECHA_MELEE|MECHA_RANGED
equip_cooldown = 10
energy_drain = 10
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT)
///Lazylist of syringes that we've picked up
var/list/syringes
///List of all scanned reagents, starts with epinephrine and multiver
diff --git a/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm b/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm
index 1551e003faa..9a097d772e4 100644
--- a/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm
+++ b/code/modules/vehicles/mecha/equipment/tools/mining_tools.dm
@@ -19,6 +19,7 @@
tool_behaviour = TOOL_DRILL
toolspeed = 0.9
mech_flags = EXOSUIT_MODULE_WORKING | EXOSUIT_MODULE_COMBAT
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5)
var/drill_delay = 7
var/drill_level = DRILL_BASIC
@@ -228,6 +229,7 @@
drill_level = DRILL_HARDENED
force = 15
toolspeed = 0.7
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 3.25)
/obj/item/mecha_parts/mecha_equipment/mining_scanner
name = "exosuit mining scanner"
@@ -236,6 +238,7 @@
equip_cooldown = 1.5 SECONDS
equipment_slot = MECHA_UTILITY
mech_flags = EXOSUIT_MODULE_WORKING
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 1.25)
var/scanning_time = 0
COOLDOWN_DECLARE(area_scan_cooldown)
diff --git a/code/modules/vehicles/mecha/equipment/tools/other_tools.dm b/code/modules/vehicles/mecha/equipment/tools/other_tools.dm
index 6b4e4e77ffe..f584bb3822d 100644
--- a/code/modules/vehicles/mecha/equipment/tools/other_tools.dm
+++ b/code/modules/vehicles/mecha/equipment/tools/other_tools.dm
@@ -11,6 +11,7 @@
equip_cooldown = 150
energy_drain = STANDARD_CELL_CHARGE
range = MECHA_RANGED
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/diamond = SHEET_MATERIAL_AMOUNT * 5)
var/teleport_range = 7
/obj/item/mecha_parts/mecha_equipment/teleporter/action(mob/source, atom/target, list/modifiers)
@@ -32,6 +33,7 @@
equip_cooldown = 50
energy_drain = 300
range = MECHA_RANGED
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5)
/obj/item/mecha_parts/mecha_equipment/wormhole_generator/action(mob/source, atom/target, list/modifiers)
@@ -73,6 +75,7 @@
equip_cooldown = 10
energy_drain = 100
range = MECHA_MELEE|MECHA_RANGED
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5)
///Which atom we are movable_target onto for
var/atom/movable/movable_target
///Whether we will throw movable atomstothrow by locking onto them or just throw them back from where we click
@@ -167,6 +170,7 @@
desc = "Boosts exosuit armor against melee attacks"
icon_state = "mecha_abooster_ccw"
armor_mod = /datum/armor/mecha_equipment_ccw_boost
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2.5)
/datum/armor/mecha_equipment_ccw_boost
melee = 20
@@ -176,6 +180,7 @@
desc = "Boosts exosuit armor against ranged kinetic and energy projectiles. Completely blocks taser shots."
icon_state = "mecha_abooster_proj"
armor_mod = /datum/armor/mecha_equipment_ranged_boost
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 2.5)
/datum/armor/mecha_equipment_ranged_boost
bullet = 15
@@ -187,6 +192,7 @@
exosuit slightly more vulnerable to kinetic blows due to taking up valuable hull cushioning."
icon_state = "mecha_abooster_emp"
armor_mod = /datum/armor/mecha_equipment_energy_boost
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 2.5)
/datum/armor/mecha_equipment_energy_boost
melee = -5
@@ -222,6 +228,7 @@
can_be_toggled = TRUE
active = FALSE
equipment_slot = MECHA_UTILITY
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT)
/// Repaired health per second
var/health_boost = 0.5
var/icon/droid_overlay
@@ -297,6 +304,7 @@
equipment_slot = MECHA_POWER
can_be_toggled = TRUE
active = FALSE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
///Type of fuel the generator is using. Is set in generator_init() to add the starting amount of fuel
var/obj/item/stack/sheet/fuel = null
///Fuel used per second while idle, not generating, in units
@@ -385,7 +393,13 @@
///Introduces the actual fuel type to be used, as well as the starting amount of said fuel
/obj/item/mecha_parts/mecha_equipment/generator/proc/generator_init()
- fuel = new /obj/item/stack/sheet/mineral/plasma(src, 1)
+ fuel = new /obj/item/stack/sheet/mineral/plasma(src, 10)
+
+/// Version without the initial fuel
+/obj/item/mecha_parts/mecha_equipment/generator/printed
+
+/obj/item/mecha_parts/mecha_equipment/generator/generator_init()
+ return
/////////////////////////////////////////// THRUSTERS /////////////////////////////////////////////
@@ -396,6 +410,7 @@
equipment_slot = MECHA_UTILITY
can_be_toggled = TRUE
active_label = "Thrusters"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 12.5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 1.5)
var/effect_type = /obj/effect/particle_effect/sparks
/obj/item/mecha_parts/mecha_equipment/thrusters/try_attach_part(mob/user, obj/vehicle/sealed/mecha/mecha, attach_right)
@@ -532,6 +547,7 @@
icon = 'icons/obj/devices/mecha_equipment.dmi'
icon_state = "mecha_camera"
w_class = WEIGHT_CLASS_SMALL
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/plasma = SMALL_MATERIAL_AMOUNT * 2, /datum/material/titanium = SMALL_MATERIAL_AMOUNT * 2)
/obj/item/mecha_parts/camera_kit/try_attach_part(mob/user, obj/vehicle/sealed/mecha/mech, attach_right)
if(mech.chassis_camera)
diff --git a/code/modules/vehicles/mecha/equipment/tools/radio.dm b/code/modules/vehicles/mecha/equipment/tools/radio.dm
index 18740fc22b9..63a5c76e8b6 100644
--- a/code/modules/vehicles/mecha/equipment/tools/radio.dm
+++ b/code/modules/vehicles/mecha/equipment/tools/radio.dm
@@ -4,6 +4,7 @@
desc = "A basic component of every vehicle."
icon_state = "mecha_radio"
equipment_slot = MECHA_UTILITY
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5)
///Internal radio item
var/obj/item/radio/mech/radio
@@ -48,3 +49,4 @@
/obj/item/radio/mech
subspace_transmission = TRUE
+ custom_materials = null
diff --git a/code/modules/vehicles/mecha/equipment/tools/work_tools.dm b/code/modules/vehicles/mecha/equipment/tools/work_tools.dm
index 76a23c28159..ff727fb5790 100644
--- a/code/modules/vehicles/mecha/equipment/tools/work_tools.dm
+++ b/code/modules/vehicles/mecha/equipment/tools/work_tools.dm
@@ -13,6 +13,7 @@
toolspeed = 0.8
harmful = TRUE
mech_flags = EXOSUIT_MODULE_RIPLEY
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5)
///Bool for whether we beat the hell out of things we punch (and tear off their arms)
var/killer_clamp = FALSE
///How much base damage this clamp does
@@ -161,6 +162,7 @@
mech_flags = ALL
can_be_triggered = TRUE
action_type = /datum/action/vehicle/sealed/mecha/equipment/extinguisher_action
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5)
///Minimum amount of reagent needed to activate.
var/required_amount = 80
@@ -233,6 +235,7 @@
energy_drain = 0 // internal RCD handles power consumption based on matter use
range = MECHA_MELEE | MECHA_RANGED
item_flags = NO_MAT_REDEMPTION
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 15, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 12.5, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 10, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 10)
///The location the mech was when it began using the rcd
var/atom/initial_location = FALSE
@@ -329,6 +332,7 @@
desc = "A pressurized canopy attachment kit for an Autonomous Power Loader Unit \"Ripley\" MK-I exosuit, to convert it to the slower, but space-worthy MK-II design. This kit cannot be removed, once applied."
icon_state = "ripleyupgrade"
mech_flags = EXOSUIT_MODULE_RIPLEY
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 5)
var/result = /obj/vehicle/sealed/mecha/ripley/mk2
/obj/item/mecha_parts/mecha_equipment/ripleyupgrade/can_attach(obj/vehicle/sealed/mecha/ripley/mecha, attach_right = FALSE, mob/user)
@@ -400,6 +404,7 @@
desc = "A hardpoint modification kit for an Autonomous Power Loader Unit \"Ripley\" MK-I exosuit, to convert it to the Paddy lightweight security design. This kit cannot be removed, once applied."
icon_state = "paddyupgrade"
mech_flags = EXOSUIT_MODULE_RIPLEY
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5)
result = /obj/vehicle/sealed/mecha/ripley/paddy
/obj/item/mecha_parts/mecha_equipment/ripleyupgrade/paddy/can_attach(obj/vehicle/sealed/mecha/ripley/mecha, attach_right = FALSE, mob/user)
diff --git a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm
index 6a75eafcfbd..2ed37dc4101 100644
--- a/code/modules/vehicles/mecha/equipment/weapons/weapons.dm
+++ b/code/modules/vehicles/mecha/equipment/weapons/weapons.dm
@@ -101,6 +101,7 @@
projectile = /obj/projectile/beam/laser
fire_sound = 'sound/items/weapons/laser.ogg'
harmful = TRUE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5)
/obj/item/mecha_parts/mecha_equipment/weapon/energy/disabler
equip_cooldown = 1.5 SECONDS
@@ -113,6 +114,7 @@
projectiles_per_shot = 5
fire_sound = 'sound/items/weapons/taser2.ogg'
firing_effect_type = /obj/effect/temp_visual/dir_setting/firing_effect/blue
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5)
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy
equip_cooldown = 15
@@ -122,6 +124,7 @@
energy_drain = 6 KILO JOULES
projectile = /obj/projectile/beam/laser/heavylaser
fire_sound = 'sound/items/weapons/lasercannonfire.ogg'
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5)
/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion
equip_cooldown = 20
@@ -131,6 +134,7 @@
energy_drain = 1.2 KILO JOULES
projectile = /obj/projectile/ion
fire_sound = 'sound/items/weapons/laser.ogg'
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 3, /datum/material/uranium = SHEET_MATERIAL_AMOUNT)
/obj/item/mecha_parts/mecha_equipment/weapon/energy/tesla
equip_cooldown = 35
@@ -141,6 +145,7 @@
projectile = /obj/projectile/energy/tesla/cannon
fire_sound = 'sound/effects/magic/lightningbolt.ogg'
harmful = TRUE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 4)
/obj/item/mecha_parts/mecha_equipment/weapon/energy/pulse
equip_cooldown = 30
@@ -165,6 +170,7 @@
fire_sound = 'sound/items/weapons/plasma_cutter.ogg'
harmful = TRUE
mech_flags = EXOSUIT_MODULE_COMBAT | EXOSUIT_MODULE_WORKING
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4, /datum/material/plasma = SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
///Exosuit thermal guns
@@ -236,6 +242,7 @@
fire_sound = 'sound/items/weapons/kinetic_accel.ogg'
harmful = TRUE
mech_flags = EXOSUIT_MODULE_COMBAT | EXOSUIT_MODULE_WORKING
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/mecha_parts/mecha_equipment/weapon/energy/taser
name = "\improper PBT \"Pacifier\" mounted taser"
@@ -258,6 +265,7 @@
range = MECHA_MELEE|MECHA_RANGED
kickback = FALSE
mech_flags = EXOSUIT_MODULE_HONK
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/bananium = SHEET_MATERIAL_AMOUNT * 5)
/obj/item/mecha_parts/mecha_equipment/weapon/honker/action(mob/source, atom/target, list/modifiers)
if(!action_checks(target))
@@ -357,6 +365,7 @@
projectiles_cache_max = 96
harmful = TRUE
ammo_type = MECHA_AMMO_INCENDIARY
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5)
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/silenced
name = "\improper S.H.H. \"Quietus\" Carbine"
@@ -383,6 +392,7 @@
variance = 25
harmful = TRUE
ammo_type = MECHA_AMMO_BUCKSHOT
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5)
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg
name = "\improper Ultra AC 2"
@@ -399,6 +409,7 @@
projectile_delay = 2
harmful = TRUE
ammo_type = MECHA_AMMO_LMG
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5)
/// Missiles
/// SRM-8 Missile Rack - Used by Nuclear Operatives - Explodes when it hits anything
@@ -415,6 +426,7 @@
equip_cooldown = 60
harmful = TRUE
ammo_type = MECHA_AMMO_MISSILE_SRM
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 11, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 4, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 3)
/// PEP-6 Missile Rack - Used by Robotics - Explodes only when it hits dense objects like walls, borgs and mechs
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/breaching
@@ -470,7 +482,8 @@
missile_speed = 1.5
equip_cooldown = 60
ammo_type = MECHA_AMMO_FLASHBANG
- var/det_time = 20
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 11, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 4, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 3)
+ var/det_time = 2 SECONDS
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/proj_init(obj/item/grenade/flashbang/F, mob/user)
var/turf/T = get_turf(src)
@@ -489,6 +502,7 @@
projectile = /obj/item/grenade/clusterbuster
equip_cooldown = 90
ammo_type = MECHA_AMMO_CLUSTERBANG
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 5, /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 5)
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/banana_mortar
name = "banana mortar"
@@ -503,6 +517,7 @@
equip_cooldown = 20
mech_flags = EXOSUIT_MODULE_HONK
ammo_type = MECHA_AMMO_BANANA_PEEL
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/bananium = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/mousetrap_mortar
name = "mousetrap mortar"
@@ -517,6 +532,7 @@
equip_cooldown = 10
mech_flags = EXOSUIT_MODULE_HONK
ammo_type = MECHA_AMMO_MOUSETRAP
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/bananium = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/mousetrap_mortar/proj_init(obj/item/assembly/mousetrap/armed/M)
M.secured = TRUE
@@ -541,6 +557,7 @@
var/punch_damage = 35
mech_flags = EXOSUIT_MODULE_HONK
ammo_type = MECHA_AMMO_PUNCHING_GLOVE
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/bananium = SHEET_MATERIAL_AMOUNT * 3.75)
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/punching_glove/get_snowflake_data()
. = ..()
@@ -623,6 +640,7 @@
toolspeed = 0.8
mech_flags = EXOSUIT_MODULE_PADDY
projectiles_per_shot = 0
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5)
///Chassis but typed for the cargo_hold var
var/obj/vehicle/sealed/mecha/ripley/secmech
///Audio for using the hydraulic clamp
diff --git a/code/modules/vehicles/mecha/mecha_control_console.dm b/code/modules/vehicles/mecha/mecha_control_console.dm
index 9ad6a4e0f6b..66c165f6462 100644
--- a/code/modules/vehicles/mecha/mecha_control_console.dm
+++ b/code/modules/vehicles/mecha/mecha_control_console.dm
@@ -79,6 +79,7 @@
icon = 'icons/obj/devices/new_assemblies.dmi'
icon_state = "motion2"
w_class = WEIGHT_CLASS_SMALL
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5)
/// If this beacon allows for AI control. Exists to avoid using istype() on checking
var/ai_beacon = FALSE
/// Cooldown variable for EMP pulsing
@@ -155,5 +156,6 @@
/obj/item/mecha_parts/mecha_tracking/ai_control
name = "exosuit AI control beacon"
desc = "A device used to transmit exosuit data. Also allows active AI units to take control of said exosuit."
+ custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 5, /datum/material/silver = SMALL_MATERIAL_AMOUNT * 2)
ai_beacon = TRUE
flag_to_check = BEACON_CONTROLLABLE
diff --git a/code/modules/vehicles/mecha/mecha_parts.dm b/code/modules/vehicles/mecha/mecha_parts.dm
index e04d7bc2d14..6154b257efe 100644
--- a/code/modules/vehicles/mecha/mecha_parts.dm
+++ b/code/modules/vehicles/mecha/mecha_parts.dm
@@ -39,109 +39,130 @@
/obj/item/mecha_parts/chassis/ripley
name = "\improper Ripley chassis"
construct_type = /datum/component/construction/unordered/mecha_chassis/ripley
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10)
/obj/item/mecha_parts/part/ripley_torso
name = "\improper Ripley torso"
desc = "A torso part of Ripley APLU. Contains power unit, processing core and life support systems."
icon_state = "ripley_harness"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 3.75)
/obj/item/mecha_parts/part/ripley_left_arm
name = "\improper Ripley left arm"
desc = "A Ripley APLU left arm. Data and power sockets are compatible with most exosuit tools."
icon_state = "ripley_l_arm"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5)
/obj/item/mecha_parts/part/ripley_right_arm
name = "\improper Ripley right arm"
desc = "A Ripley APLU right arm. Data and power sockets are compatible with most exosuit tools."
icon_state = "ripley_r_arm"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5)
/obj/item/mecha_parts/part/ripley_left_leg
name = "\improper Ripley left leg"
desc = "A Ripley APLU left leg. Contains somewhat complex servodrives and balance maintaining systems."
icon_state = "ripley_l_leg"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5)
/obj/item/mecha_parts/part/ripley_right_leg
name = "\improper Ripley right leg"
desc = "A Ripley APLU right leg. Contains somewhat complex servodrives and balance maintaining systems."
icon_state = "ripley_r_leg"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5)
///////// Odysseus
/obj/item/mecha_parts/chassis/odysseus
name = "\improper Odysseus chassis"
construct_type = /datum/component/construction/unordered/mecha_chassis/odysseus
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10)
/obj/item/mecha_parts/part/odysseus_head
name = "\improper Odysseus head"
desc = "An Odysseus head. Contains an integrated medical HUD scanner."
icon_state = "odysseus_head"
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 3)
/obj/item/mecha_parts/part/odysseus_torso
name = "\improper Odysseus torso"
desc="A torso part of Odysseus. Contains power unit, processing core and life support systems along with an attachment port for a mounted sleeper."
icon_state = "odysseus_torso"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6)
/obj/item/mecha_parts/part/odysseus_left_arm
name = "\improper Odysseus left arm"
desc = "An Odysseus left arm. Data and power sockets are compatible with specialized medical equipment."
icon_state = "odysseus_l_arm"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3)
/obj/item/mecha_parts/part/odysseus_right_arm
name = "\improper Odysseus right arm"
desc = "An Odysseus right arm. Data and power sockets are compatible with specialized medical equipment."
icon_state = "odysseus_r_arm"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3)
/obj/item/mecha_parts/part/odysseus_left_leg
name = "\improper Odysseus left leg"
desc = "An Odysseus left leg. Contains complex servodrives and balance maintaining systems to maintain stability for critical patients."
icon_state = "odysseus_l_leg"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3.5)
/obj/item/mecha_parts/part/odysseus_right_leg
name = "\improper Odysseus right leg"
desc = "An odysseus right leg. Contains complex servodrives and balance maintaining systems to maintain stability for critical patients."
icon_state = "odysseus_r_leg"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3.5)
///////// Gygax
/obj/item/mecha_parts/chassis/gygax
name = "\improper Gygax chassis"
construct_type = /datum/component/construction/unordered/mecha_chassis/gygax
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10)
/obj/item/mecha_parts/part/gygax_torso
name = "\improper Gygax torso"
desc = "A torso part of Gygax. Contains power unit, processing core and life support systems."
icon_state = "gygax_harness"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, /datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/silver = SHEET_MATERIAL_AMOUNT)
/obj/item/mecha_parts/part/gygax_head
name = "\improper Gygax head"
desc = "A Gygax head. Houses advanced surveillance and targeting sensors."
icon_state = "gygax_head"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/gold = SHEET_MATERIAL_AMOUNT, /datum/material/silver = SHEET_MATERIAL_AMOUNT)
/obj/item/mecha_parts/part/gygax_left_arm
name = "\improper Gygax left arm"
desc = "A Gygax left arm. Data and power sockets are compatible with most exosuit tools and weapons."
icon_state = "gygax_l_arm"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/mecha_parts/part/gygax_right_arm
name = "\improper Gygax right arm"
desc = "A Gygax right arm. Data and power sockets are compatible with most exosuit tools and weapons."
icon_state = "gygax_r_arm"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/mecha_parts/part/gygax_left_leg
name = "\improper Gygax left leg"
desc = "A Gygax left leg. Constructed with advanced servomechanisms and actuators to enable faster speed."
icon_state = "gygax_l_leg"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/mecha_parts/part/gygax_right_leg
name = "\improper Gygax right leg"
desc = "A Gygax right leg. Constructed with advanced servomechanisms and actuators to enable faster speed."
icon_state = "gygax_r_leg"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/silver = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/mecha_parts/part/gygax_armor
gender = PLURAL
name = "\improper Gygax armor plates"
desc = "A set of armor plates designed for the Gygax. Designed to effectively deflect damage with a lightweight construction."
icon_state = "gygax_armor"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 5)
//////////// Durand
@@ -149,104 +170,124 @@
/obj/item/mecha_parts/chassis/durand
name = "\improper Durand chassis"
construct_type = /datum/component/construction/unordered/mecha_chassis/durand
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 12.5)
/obj/item/mecha_parts/part/durand_torso
name = "\improper Durand torso"
desc = "A torso part of Durand. Contains power unit, processing core and life support systems within a robust protective frame."
icon_state = "durand_harness"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 12.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 5)
/obj/item/mecha_parts/part/durand_head
name = "\improper Durand head"
desc = "A Durand head. Houses advanced surveillance and targeting sensors."
icon_state = "durand_head"
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT)
/obj/item/mecha_parts/part/durand_left_arm
name = "\improper Durand left arm"
desc = "A Durand left arm. Data and power sockets are compatible with most exosuit tools and weapons. Packs a really mean punch as well."
icon_state = "durand_l_arm"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2)
/obj/item/mecha_parts/part/durand_right_arm
name = "\improper Durand right arm"
desc = "A Durand right arm. Data and power sockets are compatible with most exosuit tools and weapons. Packs a really mean punch as well."
icon_state = "durand_r_arm"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2)
/obj/item/mecha_parts/part/durand_left_leg
name = "\improper Durand left leg"
desc = "A Durand left leg. Built particularly sturdy to support the Durand's heavy weight and defensive needs."
icon_state = "durand_l_leg"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2)
/obj/item/mecha_parts/part/durand_right_leg
name = "\improper Durand right leg"
desc = "A Durand right leg. Built particularly sturdy to support the Durand's heavy weight and defensive needs."
icon_state = "durand_r_leg"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2)
/obj/item/mecha_parts/part/durand_armor
gender = PLURAL
name = "\improper Durand armor plates"
desc = "A set of armor plates for the Durand. Built heavy to resist an incredible amount of brute force."
icon_state = "durand_armor"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 30, /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 12.5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 10)
////////// Clarke
/obj/item/mecha_parts/chassis/clarke
name = "\improper Clarke chassis"
construct_type = /datum/component/construction/unordered/mecha_chassis/clarke
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10)
/obj/item/mecha_parts/part/clarke_torso
name = "\improper Clarke torso"
desc = "A torso part of Clarke. Contains power unit, processing core and life support systems."
icon_state = "clarke_harness"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 3.75)
/obj/item/mecha_parts/part/clarke_head
name = "\improper Clarke head"
desc = "A Clarke head. Contains an integrated diagnostic HUD scanner."
icon_state = "clarke_head"
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 3)
/obj/item/mecha_parts/part/clarke_left_arm
name = "\improper Clarke left arm"
desc = "A Clarke left arm. Data and power sockets are compatible with most exosuit tools."
icon_state = "clarke_l_arm"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5)
/obj/item/mecha_parts/part/clarke_right_arm
name = "\improper Clarke right arm"
desc = "A Clarke right arm. Data and power sockets are compatible with most exosuit tools."
icon_state = "clarke_r_arm"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5)
////////// HONK
/obj/item/mecha_parts/chassis/honker
name = "\improper H.O.N.K chassis"
construct_type = /datum/component/construction/unordered/mecha_chassis/honker
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10)
/obj/item/mecha_parts/part/honker_torso
name = "\improper H.O.N.K torso"
desc = "A torso part of H.O.N.K. Contains chuckle unit, bananium core and honk support systems."
icon_state = "honker_harness"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, /datum/material/bananium = SHEET_MATERIAL_AMOUNT * 5)
/obj/item/mecha_parts/part/honker_head
name = "\improper H.O.N.K head"
desc = "A H.O.N.K head. Appears to lack a face plate."
icon_state = "honker_head"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/bananium = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/item/mecha_parts/part/honker_left_arm
name = "\improper H.O.N.K left arm"
desc = "A H.O.N.K left arm. With unique sockets that accept odd weaponry designed by clown scientists."
icon_state = "honker_l_arm"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/bananium = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/item/mecha_parts/part/honker_right_arm
name = "\improper H.O.N.K right arm"
desc = "A H.O.N.K right arm. With unique sockets that accept odd weaponry designed by clown scientists."
icon_state = "honker_r_arm"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/bananium = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/item/mecha_parts/part/honker_left_leg
name = "\improper H.O.N.K left leg"
desc = "A H.O.N.K left leg. The foot appears just large enough to fully accommodate a clown shoe."
icon_state = "honker_l_leg"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/bananium = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/item/mecha_parts/part/honker_right_leg
name = "\improper H.O.N.K right leg"
desc = "A H.O.N.K right leg. The foot appears just large enough to fully accommodate a clown shoe."
icon_state = "honker_r_leg"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/bananium = SHEET_MATERIAL_AMOUNT * 2.5)
////////// Phazon
@@ -254,82 +295,98 @@
/obj/item/mecha_parts/chassis/phazon
name = "\improper Phazon chassis"
construct_type = /datum/component/construction/unordered/mecha_chassis/phazon
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10)
/obj/item/mecha_parts/part/phazon_torso
name="\improper Phazon torso"
desc="A Phazon torso part. The socket for the ectoplasmic core that powers the exosuit's unique phase drives is located in the middle."
icon_state = "phazon_harness"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 17.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5)
/obj/item/mecha_parts/part/phazon_head
name="\improper Phazon head"
desc="A Phazon head. Its sensors are carefully calibrated to provide vision and data even when the exosuit is phasing."
icon_state = "phazon_head"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/item/mecha_parts/part/phazon_left_arm
name="\improper Phazon left arm"
desc="A Phazon left arm. Several microtool arrays are located under the armor plating, which can be adjusted to the situation at hand."
icon_state = "phazon_l_arm"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 5)
/obj/item/mecha_parts/part/phazon_right_arm
name="\improper Phazon right arm"
desc="A Phazon right arm. Several microtool arrays are located under the armor plating, which can be adjusted to the situation at hand."
icon_state = "phazon_r_arm"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 5)
/obj/item/mecha_parts/part/phazon_left_leg
name="\improper Phazon left leg"
desc="A Phazon left leg. It contains the unique phase drives that allow the exosuit to phase through solid matter when engaged."
icon_state = "phazon_l_leg"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 5)
/obj/item/mecha_parts/part/phazon_right_leg
name="\improper Phazon right leg"
desc="A Phazon right leg. It contains the unique phase drives that allow the exosuit to phase through solid matter when engaged."
icon_state = "phazon_r_leg"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 5)
/obj/item/mecha_parts/part/phazon_armor
name="Phazon armor"
desc="Phazon armor plates. They are layered with plasma to protect the pilot from the stress of phasing and have unusual properties."
icon_state = "phazon_armor"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 12.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 10, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 10)
// Savannah-Ivanov
/obj/item/mecha_parts/chassis/savannah_ivanov
name = "\improper Savannah-Ivanov chassis"
construct_type = /datum/component/construction/unordered/mecha_chassis/savannah_ivanov
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 12.5)
/obj/item/mecha_parts/part/savannah_ivanov_torso
name="\improper Savannah-Ivanov torso"
desc="A Savannah-Ivanov torso part. It's missing a huge chunk of space..."
icon_state = "savannah_ivanov_harness"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 12.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 5)
/obj/item/mecha_parts/part/savannah_ivanov_head
name="\improper Savannah-Ivanov head"
desc="A Savannah-Ivanov head. It's sensors have been adjusted to support graceful landings."
icon_state = "savannah_ivanov_head"
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT)
/obj/item/mecha_parts/part/savannah_ivanov_left_arm
name="\improper Savannah-Ivanov left arm"
desc="A Savannah-Ivanov left arm. Hidden rocket fabrication included in the wrists."
icon_state = "savannah_ivanov_l_arm"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2)
/obj/item/mecha_parts/part/savannah_ivanov_right_arm
name="\improper Savannah-Ivanov right arm"
desc="A Savannah-Ivanov left arm. Hidden rocket fabrication included in the wrists."
icon_state = "savannah_ivanov_r_arm"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2)
/obj/item/mecha_parts/part/savannah_ivanov_left_leg
name="\improper Savannah-Ivanov left leg"
desc="A Savannah-Ivanov left leg. In production they were designed to carry more than two passengers, so the leaping functionality was added as to not waste potential."
icon_state = "savannah_ivanov_l_leg"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2)
/obj/item/mecha_parts/part/savannah_ivanov_right_leg
name="\improper Savannah-Ivanov right leg"
desc="A Savannah-Ivanov left leg. In production they were designed to carry more than two passengers, so the leaping functionality was added as to not waste potential."
icon_state = "savannah_ivanov_r_leg"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 2)
/obj/item/mecha_parts/part/savannah_ivanov_armor
name="Savannah-Ivanov armor"
desc="Savannah-Ivanov armor plates. They are uniquely shaped and reinforced to deal with the stresses of two pilots, grandiose leaps, and missiles."
icon_state = "savannah_ivanov_armor"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 30, /datum/material/uranium = SHEET_MATERIAL_AMOUNT * 12.5, /datum/material/titanium = SHEET_MATERIAL_AMOUNT * 10)
///////// Circuitboards
@@ -403,13 +460,16 @@
/obj/item/circuitboard/mecha/phazon/peripherals
name = "Phazon Peripherals Control module (Exosuit Board)"
icon_state = "mcontroller"
+ custom_materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT)
/obj/item/circuitboard/mecha/phazon/targeting
name = "Phazon Weapon Control and Targeting module (Exosuit Board)"
icon_state = "mcontroller"
+ custom_materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT)
/obj/item/circuitboard/mecha/phazon/main
name = "Phazon Central Control module (Exosuit Board)"
+ custom_materials = list(/datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/bluespace = SMALL_MATERIAL_AMOUNT)
/obj/item/circuitboard/mecha/clarke/peripherals
name = "Clarke Peripherals Control module (Exosuit Board)"
diff --git a/code/modules/vehicles/mecha/miniature/vim.dm b/code/modules/vehicles/mecha/miniature/vim.dm
index 13bb19a1801..af72be3bb48 100644
--- a/code/modules/vehicles/mecha/miniature/vim.dm
+++ b/code/modules/vehicles/mecha/miniature/vim.dm
@@ -17,7 +17,7 @@
light_range = 4
light_power = 1.5
light_on = FALSE
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 0.55, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.7)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 10.55, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 0.7)
stepsound = 'sound/effects/servostep.ogg'
pivot_step = TRUE
step_energy_drain = 4
diff --git a/code/modules/vehicles/motorized_wheelchair.dm b/code/modules/vehicles/motorized_wheelchair.dm
index 771b9ab55ab..b127d0b35b2 100644
--- a/code/modules/vehicles/motorized_wheelchair.dm
+++ b/code/modules/vehicles/motorized_wheelchair.dm
@@ -6,7 +6,7 @@
foldabletype = null
max_integrity = 150
ttv_icon = "motor_chair_ttv"
- custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 14.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 15, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 1.5)
///How "fast" the wheelchair goes only affects ramming
var/speed = 2
///Self explanatory, ratio of how much power we use
diff --git a/code/modules/vehicles/pimpin_ride.dm b/code/modules/vehicles/pimpin_ride.dm
index e389403a13d..11e30da92b5 100644
--- a/code/modules/vehicles/pimpin_ride.dm
+++ b/code/modules/vehicles/pimpin_ride.dm
@@ -181,6 +181,7 @@
icon = 'icons/obj/service/janicart_upgrade.dmi'
icon_state = "janicart_upgrade"
greyscale_config = /datum/greyscale_config/janicart_upgrade
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.5, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2)
/// The greyscale config for the on-cart installed upgrade overlay
var/overlay_greyscale_config = /datum/greyscale_config/janicart_upgrade/installed
diff --git a/code/modules/vending/toys.dm b/code/modules/vending/toys.dm
index 500dac81294..978af216faf 100644
--- a/code/modules/vending/toys.dm
+++ b/code/modules/vending/toys.dm
@@ -37,3 +37,4 @@
/obj/item/vending_refill/donksoft
machine_name = "Donksoft Toy Vendor"
icon_state = "refill_donksoft"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 12.5, /datum/material/plasma = SHEET_MATERIAL_AMOUNT * 10, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 5, /datum/material/silver = SHEET_MATERIAL_AMOUNT * 5)
diff --git a/code/modules/wiremod/core/integrated_circuit.dm b/code/modules/wiremod/core/integrated_circuit.dm
index 5f6197e885f..487744420de 100644
--- a/code/modules/wiremod/core/integrated_circuit.dm
+++ b/code/modules/wiremod/core/integrated_circuit.dm
@@ -17,6 +17,7 @@ GLOBAL_LIST_EMPTY_TYPED(integrated_circuits, /obj/item/integrated_circuit)
lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
w_class = WEIGHT_CLASS_TINY
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/// The name that appears on the shell.
var/display_name = ""
@@ -168,7 +169,7 @@ GLOBAL_LIST_EMPTY_TYPED(integrated_circuits, /obj/item/integrated_circuit)
balloon_alert(user, "owner id set for [tool]")
owner_id = WEAKREF(tool)
return ITEM_INTERACT_SUCCESS
-
+
return NONE
/obj/item/integrated_circuit/screwdriver_act(mob/living/user, obj/item/tool)
diff --git a/code/modules/wiremod/core/marker.dm b/code/modules/wiremod/core/marker.dm
index e50c238659e..dabf877ac4d 100644
--- a/code/modules/wiremod/core/marker.dm
+++ b/code/modules/wiremod/core/marker.dm
@@ -4,6 +4,7 @@
Acts as a normal multitool otherwise. Use in hand to clear marked entity so that you can mark another entity."
icon_state = "multitool_circuit"
apc_scanner = FALSE // would conflict with mark clearing
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/// The marked atom of this multitool
var/atom/marked_atom
diff --git a/code/modules/wiremod/core/usb_cable.dm b/code/modules/wiremod/core/usb_cable.dm
index 9c07a5e9e48..74d396aee54 100644
--- a/code/modules/wiremod/core/usb_cable.dm
+++ b/code/modules/wiremod/core/usb_cable.dm
@@ -9,7 +9,7 @@
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
base_icon_state = "coil"
w_class = WEIGHT_CLASS_TINY
- custom_materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT*0.75)
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 1.25)
/// The currently connected circuit
var/obj/item/integrated_circuit/attached_circuit
diff --git a/code/modules/wiremod/shell/assembly.dm b/code/modules/wiremod/shell/assembly.dm
index 136f255b610..3a658814bdc 100644
--- a/code/modules/wiremod/shell/assembly.dm
+++ b/code/modules/wiremod/shell/assembly.dm
@@ -8,6 +8,7 @@
desc = "A small electronic device that can house an integrated circuit."
icon_state = "wiremod"
assembly_behavior = ASSEMBLY_ALL
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT)
/// A reference to any holder to use power from instead of the circuit's own cell
var/atom/movable/power_use_proxy
diff --git a/code/modules/wiremod/shell/compact_remote.dm b/code/modules/wiremod/shell/compact_remote.dm
index 3bf216a4c32..e7690004473 100644
--- a/code/modules/wiremod/shell/compact_remote.dm
+++ b/code/modules/wiremod/shell/compact_remote.dm
@@ -14,6 +14,7 @@
light_system = OVERLAY_LIGHT_DIRECTIONAL
light_on = FALSE
w_class = WEIGHT_CLASS_TINY
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT)
/obj/item/compact_remote/Initialize(mapload)
. = ..()
diff --git a/code/modules/wiremod/shell/controller.dm b/code/modules/wiremod/shell/controller.dm
index f68dd0c50b2..214bf44acf8 100644
--- a/code/modules/wiremod/shell/controller.dm
+++ b/code/modules/wiremod/shell/controller.dm
@@ -15,6 +15,7 @@
light_system = OVERLAY_LIGHT_DIRECTIONAL
light_on = FALSE
w_class = WEIGHT_CLASS_SMALL
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT)
/obj/item/controller/Initialize(mapload)
. = ..()
diff --git a/code/modules/wiremod/shell/gun.dm b/code/modules/wiremod/shell/gun.dm
index 6e9043a146a..b68fd8e2db8 100644
--- a/code/modules/wiremod/shell/gun.dm
+++ b/code/modules/wiremod/shell/gun.dm
@@ -16,6 +16,7 @@
automatic_charge_overlays = FALSE
trigger_guard = TRIGGER_GUARD_ALLOW_ALL
gun_flags = NOT_A_REAL_GUN
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/plasma = SMALL_MATERIAL_AMOUNT)
/obj/item/ammo_casing/energy/wiremod_gun
projectile_type = /obj/projectile/energy/wiremod_gun
diff --git a/code/modules/wiremod/shell/implant.dm b/code/modules/wiremod/shell/implant.dm
index 409c1921c6f..d07c7924d7c 100644
--- a/code/modules/wiremod/shell/implant.dm
+++ b/code/modules/wiremod/shell/implant.dm
@@ -1,6 +1,7 @@
/obj/item/implant/circuit
name = "circuit implant"
actions_types = null
+ custom_materials = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT)
implant_info = "Functions as a shell for integrated circuits. Activation conditions and effects are defined by the installed circuit."
diff --git a/code/modules/wiremod/shell/keyboard.dm b/code/modules/wiremod/shell/keyboard.dm
index 505c89e0dde..546eaf57340 100644
--- a/code/modules/wiremod/shell/keyboard.dm
+++ b/code/modules/wiremod/shell/keyboard.dm
@@ -9,6 +9,7 @@
light_system = OVERLAY_LIGHT_DIRECTIONAL
light_on = FALSE
w_class = WEIGHT_CLASS_SMALL
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT)
/obj/item/keyboard_shell/Initialize(mapload)
. = ..()
diff --git a/code/modules/wiremod/shell/module.dm b/code/modules/wiremod/shell/module.dm
index a19a02f7fd9..6c2458d5ec9 100644
--- a/code/modules/wiremod/shell/module.dm
+++ b/code/modules/wiremod/shell/module.dm
@@ -6,6 +6,7 @@
idle_power_cost = DEFAULT_CHARGE_DRAIN * 0.5
incompatible_modules = list(/obj/item/mod/module/circuit)
cooldown_time = 0.5 SECONDS
+ custom_materials = list(/datum/material/glass = SHEET_MATERIAL_AMOUNT)
/// A reference to the shell component, used to access the shell and its attached circuit
var/datum/component/shell/shell
diff --git a/code/modules/wiremod/shell/scanner.dm b/code/modules/wiremod/shell/scanner.dm
index 29a061a535a..a5415784821 100644
--- a/code/modules/wiremod/shell/scanner.dm
+++ b/code/modules/wiremod/shell/scanner.dm
@@ -14,6 +14,7 @@
light_system = OVERLAY_LIGHT_DIRECTIONAL
light_on = FALSE
w_class = WEIGHT_CLASS_SMALL
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 3.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT)
/obj/item/wiremod_scanner/Initialize(mapload)
. = ..()
diff --git a/code/modules/wiremod/shell/shell_items.dm b/code/modules/wiremod/shell/shell_items.dm
index eac5715f22b..aafa5dacc38 100644
--- a/code/modules/wiremod/shell/shell_items.dm
+++ b/code/modules/wiremod/shell/shell_items.dm
@@ -30,23 +30,27 @@
name = "bot assembly"
icon_state = "setup_medium_box-open"
shell_to_spawn = /obj/structure/bot
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT)
/obj/item/shell/money_bot
name = "money bot assembly"
icon_state = "setup_large-open"
shell_to_spawn = /obj/structure/money_bot
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/gold = SMALL_MATERIAL_AMOUNT * 0.5)
/obj/item/shell/drone
name = "drone assembly"
icon_state = "setup_medium_med-open"
shell_to_spawn = /mob/living/circuit_drone
w_class = WEIGHT_CLASS_SMALL
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT, /datum/material/gold = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/shell/server
name = "server assembly"
icon_state = "setup_stationary-open"
shell_to_spawn = /obj/structure/server
screw_delay = 10 SECONDS
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/gold = SHEET_MATERIAL_AMOUNT * 0.75)
/obj/item/shell/airlock
name = "circuit airlock assembly"
@@ -55,20 +59,24 @@
shell_to_spawn = /obj/machinery/door/airlock/shell
screw_delay = 10 SECONDS
w_class = WEIGHT_CLASS_BULKY
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/item/shell/dispenser
name = "circuit dispenser assembly"
icon_state = "setup_drone_arms-open"
shell_to_spawn = /obj/structure/dispenser_bot
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7.5, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2.5)
/obj/item/shell/bci
name = "brain-computer interface assembly"
icon_state = "bci-open"
shell_to_spawn = /obj/item/organ/cyberimp/bci
w_class = WEIGHT_CLASS_TINY
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 4, /datum/material/glass = SHEET_MATERIAL_AMOUNT)
/obj/item/shell/scanner_gate
name = "scanner gate assembly"
icon = 'icons/obj/machines/scangate.dmi'
icon_state = "scangate_black_open"
shell_to_spawn = /obj/structure/scanner_gate_shell
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 6, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 2)
diff --git a/code/modules/wiremod/shell/undertile.dm b/code/modules/wiremod/shell/undertile.dm
index 69ef66b61c0..3344b88dd82 100644
--- a/code/modules/wiremod/shell/undertile.dm
+++ b/code/modules/wiremod/shell/undertile.dm
@@ -6,6 +6,7 @@
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
icon_state = "undertile"
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 2.5, /datum/material/glass = HALF_SHEET_MATERIAL_AMOUNT)
/obj/item/undertile_circuit/Initialize(mapload)
. = ..()
diff --git a/code/modules/wiremod/shell/wallmount.dm b/code/modules/wiremod/shell/wallmount.dm
index d461f696da1..f672fce10cf 100644
--- a/code/modules/wiremod/shell/wallmount.dm
+++ b/code/modules/wiremod/shell/wallmount.dm
@@ -31,3 +31,4 @@
icon_state = "wallmount_assembly"
result_path = /obj/structure/wallmount_circuit
pixel_shift = 32
+ custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 5, /datum/material/glass = SHEET_MATERIAL_AMOUNT)
diff --git a/icons/map_icons/objects.dmi b/icons/map_icons/objects.dmi
index c6f765f81e8..45969ab9ce8 100644
Binary files a/icons/map_icons/objects.dmi and b/icons/map_icons/objects.dmi differ
diff --git a/icons/obj/food/lizard.dmi b/icons/obj/food/lizard.dmi
index 670887d3bc1..377a202a278 100644
Binary files a/icons/obj/food/lizard.dmi and b/icons/obj/food/lizard.dmi differ
diff --git a/icons/obj/service/kitchen.dmi b/icons/obj/service/kitchen.dmi
index ff9a3e2a58c..7029ff6cd50 100644
Binary files a/icons/obj/service/kitchen.dmi and b/icons/obj/service/kitchen.dmi differ