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