From 90fbe63cc36365b07ee064eb2563496bfb77103b Mon Sep 17 00:00:00 2001 From: Nadyr <41974248+Darlantanis@users.noreply.github.com> Date: Fri, 30 Apr 2021 01:31:42 -0400 Subject: [PATCH] Delete materials.dm --- code/modules/materials/materials.dm | 1299 --------------------------- 1 file changed, 1299 deletions(-) delete mode 100644 code/modules/materials/materials.dm diff --git a/code/modules/materials/materials.dm b/code/modules/materials/materials.dm deleted file mode 100644 index acd3c5a809..0000000000 --- a/code/modules/materials/materials.dm +++ /dev/null @@ -1,1299 +0,0 @@ -/* - MATERIAL DATUMS - This data is used by various parts of the game for basic physical properties and behaviors - of the metals/materials used for constructing many objects. Each var is commented and should be pretty - self-explanatory but the various object types may have their own documentation. ~Z - - PATHS THAT USE DATUMS - turf/simulated/wall - obj/item/weapon/material - obj/structure/barricade - obj/item/stack/material - obj/structure/table - - VALID ICONS - WALLS - stone - metal - solid - resin - ONLY WALLS - cult - hull - curvy - jaggy - brick - REINFORCEMENT - reinf_over - reinf_mesh - reinf_cult - reinf_metal - DOORS - stone - metal - resin - wood -*/ - -// Assoc list containing all material datums indexed by name. -var/list/name_to_material - -//Returns the material the object is made of, if applicable. -//Will we ever need to return more than one value here? Or should we just return the "dominant" material. -/obj/proc/get_material() - return null - -//mostly for convenience -/obj/proc/get_material_name() - var/datum/material/material = get_material() - if(material) - return material.name - -// Builds the datum list above. -/proc/populate_material_list(force_remake=0) - if(name_to_material && !force_remake) return // Already set up! - name_to_material = list() - for(var/type in subtypesof(/datum/material)) - var/datum/material/new_mineral = new type - if(!new_mineral.name) - qdel(new_mineral) - continue - name_to_material[lowertext(new_mineral.name)] = new_mineral - return 1 - -// Safety proc to make sure the material list exists before trying to grab from it. -/proc/get_material_by_name(name) - if(!name_to_material) - populate_material_list() - return name_to_material[name] - -/proc/material_display_name(name) - var/datum/material/material = get_material_by_name(name) - if(material) - return material.display_name - return null - -// Material definition and procs follow. -/datum/material - var/name // Unique name for use in indexing the list. - var/display_name // Prettier name for display. - var/use_name - var/flags = 0 // Various status modifiers. - var/sheet_singular_name = "sheet" - var/sheet_plural_name = "sheets" - var/is_fusion_fuel - - // Shards/tables/structures - var/shard_type = SHARD_SHRAPNEL // Path of debris object. - var/shard_icon // Related to above. - var/shard_can_repair = 1 // Can shards be turned into sheets with a welder? - var/list/recipes // Holder for all recipes usable with a sheet of this material. - var/destruction_desc = "breaks apart" // Fancy string for barricades/tables/objects exploding. - - // Icons - var/icon_colour // Colour applied to products of this material. - var/icon_base = "metal" // Wall and table base icon tag. See header. - var/door_icon_base = "metal" // Door base icon tag. See header. - var/icon_reinf = "reinf_metal" // Overlay used - var/list/stack_origin_tech = list(TECH_MATERIAL = 1) // Research level for stacks. - var/pass_stack_colors = FALSE // Will stacks made from this material pass their colors onto objects? - - // Attributes - var/cut_delay = 0 // Delay in ticks when cutting through this wall. - var/radioactivity // Radiation var. Used in wall and object processing to irradiate surroundings. - var/ignition_point // K, point at which the material catches on fire. - var/melting_point = 1800 // K, walls will take damage if they're next to a fire hotter than this - var/integrity = 150 // General-use HP value for products. - var/protectiveness = 10 // How well this material works as armor. Higher numbers are better, diminishing returns applies. - var/opacity = 1 // Is the material transparent? 0.5< makes transparent walls/doors. - var/reflectivity = 0 // How reflective to light is the material? Currently used for laser reflection and defense. - var/explosion_resistance = 5 // Only used by walls currently. - var/negation = 0 // Objects that respect this will randomly absorb impacts with this var as the percent chance. - var/spatial_instability = 0 // Objects that have trouble staying in the same physical space by sheer laws of nature have this. Percent for respecting items to cause teleportation. - var/conductive = 1 // Objects without this var add NOCONDUCT to flags on spawn. - var/conductivity = null // How conductive the material is. Iron acts as the baseline, at 10. - var/list/composite_material // If set, object matter var will be a list containing these values. - var/luminescence - var/radiation_resistance = 0 // Radiation resistance, which is added on top of a material's weight for blocking radiation. Needed to make lead special without superrobust weapons. - var/supply_conversion_value // Supply points per sheet that this material sells for. - - // Placeholder vars for the time being, todo properly integrate windows/light tiles/rods. - var/created_window - var/created_fulltile_window - var/rod_product - var/wire_product - var/list/window_options = list() - - // Damage values. - var/hardness = 60 // Prob of wall destruction by hulk, used for edge damage in weapons. Also used for bullet protection in armor. - var/weight = 20 // Determines blunt damage/throwforce for weapons. - - // Noise when someone is faceplanted onto a table made of this material. - var/tableslam_noise = 'sound/weapons/tablehit1.ogg' - // Noise made when a simple door made of this material opens or closes. - var/dooropen_noise = 'sound/effects/stonedoor_openclose.ogg' - // Path to resulting stacktype. Todo remove need for this. - var/stack_type - // Wallrot crumble message. - var/rotting_touch_message = "crumbles under your touch" - -// Placeholders for light tiles and rglass. -/datum/material/proc/build_rod_product(var/mob/user, var/obj/item/stack/used_stack, var/obj/item/stack/target_stack) - if(!rod_product) - to_chat(user, "You cannot make anything out of \the [target_stack]") - return - if(used_stack.get_amount() < 1 || target_stack.get_amount() < 1) - to_chat(user, "You need one rod and one sheet of [display_name] to make anything useful.") - return - used_stack.use(1) - target_stack.use(1) - var/obj/item/stack/S = new rod_product(get_turf(user)) - S.add_fingerprint(user) - S.add_to_stacks(user) - -/datum/material/proc/build_wired_product(var/mob/living/user, var/obj/item/stack/used_stack, var/obj/item/stack/target_stack) - if(!wire_product) - to_chat(user, "You cannot make anything out of \the [target_stack]") - return - if(used_stack.get_amount() < 5 || target_stack.get_amount() < 1) - to_chat(user, "You need five wires and one sheet of [display_name] to make anything useful.") - return - - used_stack.use(5) - target_stack.use(1) - to_chat(user, "You attach wire to the [name].") - var/obj/item/product = new wire_product(get_turf(user)) - user.put_in_hands(product) - -// Make sure we have a display name and shard icon even if they aren't explicitly set. -/datum/material/New() - ..() - if(!display_name) - display_name = name - if(!use_name) - use_name = display_name - if(!shard_icon) - shard_icon = shard_type - -// This is a placeholder for proper integration of windows/windoors into the system. -/datum/material/proc/build_windows(var/mob/living/user, var/obj/item/stack/used_stack) - return 0 - -// Weapons handle applying a divisor for this value locally. -/datum/material/proc/get_blunt_damage() - return weight //todo - -// Return the matter comprising this material. -/datum/material/proc/get_matter() - var/list/temp_matter = list() - if(islist(composite_material)) - for(var/material_string in composite_material) - temp_matter[material_string] = composite_material[material_string] - else if(SHEET_MATERIAL_AMOUNT) - temp_matter[name] = SHEET_MATERIAL_AMOUNT - return temp_matter - -// As above. -/datum/material/proc/get_edge_damage() - return hardness //todo - -// Snowflakey, only checked for alien doors at the moment. -/datum/material/proc/can_open_material_door(var/mob/living/user) - return 1 - -// Currently used for weapons and objects made of uranium to irradiate things. -/datum/material/proc/products_need_process() - return (radioactivity>0) //todo - -// Used by walls when qdel()ing to avoid neighbor merging. -/datum/material/placeholder - name = "placeholder" - -// Places a girder object when a wall is dismantled, also applies reinforced material. -/datum/material/proc/place_dismantled_girder(var/turf/target, var/datum/material/reinf_material, var/datum/material/girder_material) - var/obj/structure/girder/G = new(target) - if(reinf_material) - G.reinf_material = reinf_material - G.reinforce_girder() - if(girder_material) - if(istype(girder_material, /datum/material)) - girder_material = girder_material.name - G.set_material(girder_material) - - -// General wall debris product placement. -// Not particularly necessary aside from snowflakey cult girders. -/datum/material/proc/place_dismantled_product(var/turf/target) - place_sheet(target) - -// Debris product. Used ALL THE TIME. -/datum/material/proc/place_sheet(var/turf/target) - if(stack_type) - return new stack_type(target) - -// As above. -/datum/material/proc/place_shard(var/turf/target) - if(shard_type) - return new /obj/item/weapon/material/shard(target, src.name) - -// Used by walls and weapons to determine if they break or not. -/datum/material/proc/is_brittle() - return !!(flags & MATERIAL_BRITTLE) - -/datum/material/proc/combustion_effect(var/turf/T, var/temperature) - return - -// Used by walls to do on-touch things, after checking for crumbling and open-ability. -/datum/material/proc/wall_touch_special(var/turf/simulated/wall/W, var/mob/living/L) - return - -// Datum definitions follow. -/datum/material/uranium - name = "uranium" - stack_type = /obj/item/stack/material/uranium - radioactivity = 12 - icon_base = "stone" - icon_reinf = "reinf_stone" - icon_colour = "#007A00" - weight = 22 - stack_origin_tech = list(TECH_MATERIAL = 5) - door_icon_base = "stone" - supply_conversion_value = 2 - -/datum/material/diamond - name = "diamond" - stack_type = /obj/item/stack/material/diamond - flags = MATERIAL_UNMELTABLE - cut_delay = 60 - icon_colour = "#00FFE1" - opacity = 0.4 - reflectivity = 0.6 - conductive = 0 - conductivity = 1 - shard_type = SHARD_SHARD - tableslam_noise = 'sound/effects/Glasshit.ogg' - hardness = 100 - stack_origin_tech = list(TECH_MATERIAL = 6) - supply_conversion_value = 8 - -/datum/material/gold - name = "gold" - stack_type = /obj/item/stack/material/gold - icon_colour = "#EDD12F" - weight = 24 - hardness = 40 - conductivity = 41 - stack_origin_tech = list(TECH_MATERIAL = 4) - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - supply_conversion_value = 2 - -/datum/material/gold/bronze //placeholder for ashtrays - name = "bronze" - icon_colour = "#EDD12F" - -/datum/material/silver - name = "silver" - stack_type = /obj/item/stack/material/silver - icon_colour = "#D1E6E3" - weight = 22 - hardness = 50 - conductivity = 63 - stack_origin_tech = list(TECH_MATERIAL = 3) - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - supply_conversion_value = 2 - -//R-UST port -/datum/material/supermatter - name = "supermatter" - icon_colour = "#FFFF00" - stack_type = /obj/item/stack/material/supermatter - shard_type = SHARD_SHARD - radioactivity = 20 - stack_type = null - luminescence = 3 - ignition_point = PHORON_MINIMUM_BURN_TEMPERATURE - icon_base = "stone" - shard_type = SHARD_SHARD - hardness = 30 - door_icon_base = "stone" - sheet_singular_name = "crystal" - sheet_plural_name = "crystals" - is_fusion_fuel = 1 - stack_origin_tech = list(TECH_MATERIAL = 8, TECH_PHORON = 5, TECH_BLUESPACE = 4) - -/datum/material/phoron - name = "phoron" - stack_type = /obj/item/stack/material/phoron - ignition_point = PHORON_MINIMUM_BURN_TEMPERATURE - icon_base = "stone" - icon_colour = "#FC2BC5" - shard_type = SHARD_SHARD - hardness = 30 - stack_origin_tech = list(TECH_MATERIAL = 2, TECH_PHORON = 2) - door_icon_base = "stone" - sheet_singular_name = "crystal" - sheet_plural_name = "crystals" - supply_conversion_value = 5 - -/* -// Commenting this out while fires are so spectacularly lethal, as I can't seem to get this balanced appropriately. -/datum/material/phoron/combustion_effect(var/turf/T, var/temperature, var/effect_multiplier) - if(isnull(ignition_point)) - return 0 - if(temperature < ignition_point) - return 0 - var/totalPhoron = 0 - for(var/turf/simulated/floor/target_tile in range(2,T)) - var/phoronToDeduce = (temperature/30) * effect_multiplier - totalPhoron += phoronToDeduce - target_tile.assume_gas("phoron", phoronToDeduce, 200+T0C) - spawn (0) - target_tile.hotspot_expose(temperature, 400) - return round(totalPhoron/100) -*/ - -/datum/material/stone - name = "sandstone" - stack_type = /obj/item/stack/material/sandstone - icon_base = "stone" - icon_reinf = "reinf_stone" - icon_colour = "#D9C179" - shard_type = SHARD_STONE_PIECE - weight = 22 - hardness = 55 - protectiveness = 5 // 20% - conductive = 0 - conductivity = 5 - door_icon_base = "stone" - sheet_singular_name = "brick" - sheet_plural_name = "bricks" - -/datum/material/stone/marble - name = "marble" - icon_colour = "#AAAAAA" - weight = 26 - hardness = 30 //VOREStation Edit - Please. - integrity = 201 //hack to stop kitchen benches being flippable, todo: refactor into weight system - stack_type = /obj/item/stack/material/marble - supply_conversion_value = 2 - -/datum/material/steel - name = DEFAULT_WALL_MATERIAL - stack_type = /obj/item/stack/material/steel - integrity = 150 - conductivity = 11 // Assuming this is carbon steel, it would actually be slightly less conductive than iron, but lets ignore that. - protectiveness = 10 // 33% - icon_base = "solid" - icon_reinf = "reinf_over" - icon_colour = "#666666" - -/datum/material/steel/hull - name = MAT_STEELHULL - stack_type = /obj/item/stack/material/steel/hull - integrity = 250 - explosion_resistance = 10 - icon_base = "hull" - icon_reinf = "reinf_mesh" - icon_colour = "#666677" - -/datum/material/steel/hull/place_sheet(var/turf/target) //Deconstructed into normal steel sheets. - new /obj/item/stack/material/steel(target) - -/datum/material/diona - name = "biomass" - icon_colour = null - stack_type = null - integrity = 600 - icon_base = "diona" - icon_reinf = "noreinf" - -/datum/material/diona/place_dismantled_product() - return - -/datum/material/diona/place_dismantled_girder(var/turf/target) - spawn_diona_nymph(target) - -/datum/material/steel/holographic - name = "holo" + DEFAULT_WALL_MATERIAL - display_name = DEFAULT_WALL_MATERIAL - stack_type = null - shard_type = SHARD_NONE - -/datum/material/plasteel - name = "plasteel" - stack_type = /obj/item/stack/material/plasteel - integrity = 400 - melting_point = 6000 - icon_base = "solid" - icon_reinf = "reinf_over" - icon_colour = "#777777" - explosion_resistance = 25 - hardness = 80 - weight = 23 - protectiveness = 20 // 50% - conductivity = 13 // For the purposes of balance. - stack_origin_tech = list(TECH_MATERIAL = 2) - composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT, "platinum" = SHEET_MATERIAL_AMOUNT) //todo - supply_conversion_value = 6 - -/datum/material/plasteel/hull - name = MAT_PLASTEELHULL - stack_type = /obj/item/stack/material/plasteel/hull - integrity = 600 - icon_base = "hull" - icon_reinf = "reinf_mesh" - icon_colour = "#777788" - explosion_resistance = 40 - -/datum/material/plasteel/hull/place_sheet(var/turf/target) //Deconstructed into normal plasteel sheets. - new /obj/item/stack/material/plasteel(target) - -// Very rare alloy that is reflective, should be used sparingly. -/datum/material/durasteel - name = "durasteel" - stack_type = /obj/item/stack/material/durasteel/hull - integrity = 600 - melting_point = 7000 - icon_base = "metal" - icon_reinf = "reinf_metal" - icon_colour = "#6EA7BE" - explosion_resistance = 75 - hardness = 100 - weight = 28 - protectiveness = 60 // 75% - reflectivity = 0.7 // Not a perfect mirror, but close. - stack_origin_tech = list(TECH_MATERIAL = 8) - composite_material = list("plasteel" = SHEET_MATERIAL_AMOUNT, "diamond" = SHEET_MATERIAL_AMOUNT) //shrug - supply_conversion_value = 9 - -/datum/material/durasteel/hull //The 'Hardball' of starship hulls. - name = MAT_DURASTEELHULL - icon_base = "hull" - icon_reinf = "reinf_mesh" - icon_colour = "#45829a" - explosion_resistance = 90 - reflectivity = 0.9 - -/datum/material/durasteel/hull/place_sheet(var/turf/target) //Deconstructed into normal durasteel sheets. - new /obj/item/stack/material/durasteel(target) - -/datum/material/plasteel/titanium - name = MAT_TITANIUM - stack_type = /obj/item/stack/material/titanium - conductivity = 2.38 - icon_base = "metal" - door_icon_base = "metal" - icon_colour = "#D1E6E3" - icon_reinf = "reinf_metal" - composite_material = null - -/datum/material/plasteel/titanium/hull - name = MAT_TITANIUMHULL - stack_type = /obj/item/stack/material/titanium/hull - icon_base = "hull" - icon_reinf = "reinf_mesh" - -/datum/material/plasteel/titanium/hull/place_sheet(var/turf/target) //Deconstructed into normal titanium sheets. - new /obj/item/stack/material/titanium(target) - -/datum/material/glass - name = "glass" - stack_type = /obj/item/stack/material/glass - flags = MATERIAL_BRITTLE - icon_colour = "#00E1FF" - opacity = 0.3 - integrity = 100 - shard_type = SHARD_SHARD - tableslam_noise = 'sound/effects/Glasshit.ogg' - hardness = 30 - weight = 15 - protectiveness = 0 // 0% - conductive = 0 - conductivity = 1 // Glass shards don't conduct. - door_icon_base = "stone" - destruction_desc = "shatters" - window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 2) - created_window = /obj/structure/window/basic - created_fulltile_window = /obj/structure/window/basic/full - rod_product = /obj/item/stack/material/glass/reinforced - -/datum/material/glass/build_windows(var/mob/living/user, var/obj/item/stack/used_stack) - - if(!user || !used_stack || !created_window || !created_fulltile_window || !window_options.len) - return 0 - - if(!user.IsAdvancedToolUser()) - to_chat(user, "This task is too complex for your clumsy hands.") - return 1 - - var/turf/T = user.loc - if(!istype(T)) - to_chat(user, "You must be standing on open flooring to build a window.") - return 1 - - var/title = "Sheet-[used_stack.name] ([used_stack.get_amount()] sheet\s left)" - var/choice = input(title, "What would you like to construct?") as null|anything in window_options - - if(!choice || !used_stack || !user || used_stack.loc != user || user.stat || user.loc != T) - return 1 - - // Get data for building windows here. - var/list/possible_directions = cardinal.Copy() - var/window_count = 0 - for (var/obj/structure/window/check_window in user.loc) - window_count++ - possible_directions -= check_window.dir - for (var/obj/structure/windoor_assembly/check_assembly in user.loc) - window_count++ - possible_directions -= check_assembly.dir - for (var/obj/machinery/door/window/check_windoor in user.loc) - window_count++ - possible_directions -= check_windoor.dir - - // Get the closest available dir to the user's current facing. - var/build_dir = SOUTHWEST //Default to southwest for fulltile windows. - var/failed_to_build - - if(window_count >= 4) - failed_to_build = 1 - else - if(choice in list("One Direction","Windoor")) - if(possible_directions.len) - for(var/direction in list(user.dir, turn(user.dir,90), turn(user.dir,270), turn(user.dir,180))) - if(direction in possible_directions) - build_dir = direction - break - else - failed_to_build = 1 - if(failed_to_build) - to_chat(user, "There is no room in this location.") - return 1 - - var/build_path = /obj/structure/windoor_assembly - var/sheets_needed = window_options[choice] - if(choice == "Windoor") - if(is_reinforced()) - build_path = /obj/structure/windoor_assembly/secure - else if(choice == "Full Window") - build_path = created_fulltile_window - else - build_path = created_window - - if(used_stack.get_amount() < sheets_needed) - to_chat(user, "You need at least [sheets_needed] sheets to build this.") - return 1 - - // Build the structure and update sheet count etc. - used_stack.use(sheets_needed) - new build_path(T, build_dir, 1) - return 1 - -/datum/material/glass/proc/is_reinforced() - return (hardness > 35) //todo - -/datum/material/glass/reinforced - name = "rglass" - display_name = "reinforced glass" - stack_type = /obj/item/stack/material/glass/reinforced - flags = MATERIAL_BRITTLE - icon_colour = "#00E1FF" - opacity = 0.3 - integrity = 100 - shard_type = SHARD_SHARD - tableslam_noise = 'sound/effects/Glasshit.ogg' - hardness = 40 - weight = 30 - stack_origin_tech = list(TECH_MATERIAL = 2) - composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 2, "glass" = SHEET_MATERIAL_AMOUNT) - window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 2) - created_window = /obj/structure/window/reinforced - created_fulltile_window = /obj/structure/window/reinforced/full - wire_product = null - rod_product = null - -/datum/material/glass/phoron - name = "borosilicate glass" - display_name = "borosilicate glass" - stack_type = /obj/item/stack/material/glass/phoronglass - flags = MATERIAL_BRITTLE - integrity = 100 - icon_colour = "#FC2BC5" - stack_origin_tech = list(TECH_MATERIAL = 4) - window_options = list("One Direction" = 1, "Full Window" = 4) - created_window = /obj/structure/window/phoronbasic - created_fulltile_window = /obj/structure/window/phoronbasic/full - wire_product = null - rod_product = /obj/item/stack/material/glass/phoronrglass - -/datum/material/glass/phoron/reinforced - name = "reinforced borosilicate glass" - display_name = "reinforced borosilicate glass" - stack_type = /obj/item/stack/material/glass/phoronrglass - stack_origin_tech = list(TECH_MATERIAL = 5) - composite_material = list() //todo - window_options = list("One Direction" = 1, "Full Window" = 4) - created_window = /obj/structure/window/phoronreinforced - created_fulltile_window = /obj/structure/window/phoronreinforced/full - hardness = 40 - weight = 30 - stack_origin_tech = list(TECH_MATERIAL = 2) - composite_material = list(DEFAULT_WALL_MATERIAL = SHEET_MATERIAL_AMOUNT / 2, "borosilicate glass" = SHEET_MATERIAL_AMOUNT) - rod_product = null - -/datum/material/plastic - name = "plastic" - stack_type = /obj/item/stack/material/plastic - flags = MATERIAL_BRITTLE - icon_base = "solid" - icon_reinf = "reinf_over" - icon_colour = "#CCCCCC" - hardness = 10 - weight = 12 - protectiveness = 5 // 20% - conductive = 0 - conductivity = 2 // For the sake of material armor diversity, we're gonna pretend this plastic is a good insulator. - melting_point = T0C+371 //assuming heat resistant plastic - stack_origin_tech = list(TECH_MATERIAL = 3) - -/datum/material/plastic/holographic - name = "holoplastic" - display_name = "plastic" - stack_type = null - shard_type = SHARD_NONE - -/datum/material/graphite - name = MAT_GRAPHITE - stack_type = /obj/item/stack/material/graphite - flags = MATERIAL_BRITTLE - icon_base = "solid" - icon_reinf = "reinf_mesh" - icon_colour = "#333333" - hardness = 75 - weight = 15 - integrity = 175 - protectiveness = 15 - conductivity = 18 - melting_point = T0C+3600 - radiation_resistance = 15 - stack_origin_tech = list(TECH_MATERIAL = 2, TECH_MAGNET = 2) - -/datum/material/osmium - name = "osmium" - stack_type = /obj/item/stack/material/osmium - icon_colour = "#9999FF" - stack_origin_tech = list(TECH_MATERIAL = 5) - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - conductivity = 100 - supply_conversion_value = 6 - -/datum/material/tritium - name = "tritium" - stack_type = /obj/item/stack/material/tritium - icon_colour = "#777777" - stack_origin_tech = list(TECH_MATERIAL = 5) - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - is_fusion_fuel = 1 - conductive = 0 - -/datum/material/deuterium - name = "deuterium" - stack_type = /obj/item/stack/material/deuterium - icon_colour = "#999999" - stack_origin_tech = list(TECH_MATERIAL = 3) - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - is_fusion_fuel = 1 - conductive = 0 - -/datum/material/mhydrogen - name = "mhydrogen" - stack_type = /obj/item/stack/material/mhydrogen - icon_colour = "#E6C5DE" - stack_origin_tech = list(TECH_MATERIAL = 6, TECH_POWER = 6, TECH_MAGNET = 5) - conductivity = 100 - is_fusion_fuel = 1 - supply_conversion_value = 6 - -/datum/material/platinum - name = "platinum" - stack_type = /obj/item/stack/material/platinum - icon_colour = "#9999FF" - weight = 27 - conductivity = 9.43 - stack_origin_tech = list(TECH_MATERIAL = 2) - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - supply_conversion_value = 5 - -/datum/material/iron - name = "iron" - stack_type = /obj/item/stack/material/iron - icon_colour = "#5C5454" - weight = 22 - conductivity = 10 - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - -/datum/material/lead - name = MAT_LEAD - stack_type = /obj/item/stack/material/lead - icon_colour = "#273956" - weight = 23 // Lead is a bit more dense than silver IRL, and silver has 22 ingame. - conductivity = 10 - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - radiation_resistance = 25 // Lead is Special and so gets to block more radiation than it normally would with just weight, totalling in 48 protection. - supply_conversion_value = 2 - -// Particle Smasher and other exotic materials. - -/datum/material/verdantium - name = MAT_VERDANTIUM - stack_type = /obj/item/stack/material/verdantium - icon_base = "metal" - door_icon_base = "metal" - icon_reinf = "reinf_metal" - icon_colour = "#4FE95A" - integrity = 80 - protectiveness = 15 - weight = 15 - hardness = 30 - shard_type = SHARD_SHARD - negation = 15 - conductivity = 60 - reflectivity = 0.3 - radiation_resistance = 5 - stack_origin_tech = list(TECH_MATERIAL = 6, TECH_POWER = 5, TECH_BIO = 4) - sheet_singular_name = "sheet" - sheet_plural_name = "sheets" - supply_conversion_value = 8 - -/datum/material/morphium - name = MAT_MORPHIUM - stack_type = /obj/item/stack/material/morphium - icon_base = "metal" - door_icon_base = "metal" - icon_colour = "#37115A" - icon_reinf = "reinf_metal" - protectiveness = 60 - integrity = 300 - conductive = 0 - conductivity = 1.5 - hardness = 90 - shard_type = SHARD_SHARD - weight = 30 - negation = 25 - explosion_resistance = 85 - reflectivity = 0.2 - radiation_resistance = 10 - stack_origin_tech = list(TECH_MATERIAL = 8, TECH_ILLEGAL = 1, TECH_PHORON = 4, TECH_BLUESPACE = 4, TECH_ARCANE = 1) - supply_conversion_value = 13 - -/datum/material/morphium/hull - name = MAT_MORPHIUMHULL - stack_type = /obj/item/stack/material/morphium/hull - icon_base = "hull" - icon_reinf = "reinf_mesh" - -/datum/material/valhollide - name = MAT_VALHOLLIDE - stack_type = /obj/item/stack/material/valhollide - icon_base = "stone" - door_icon_base = "stone" - icon_reinf = "reinf_mesh" - icon_colour = "##FFF3B2" - protectiveness = 30 - integrity = 240 - weight = 30 - hardness = 45 - negation = 2 - conductive = 0 - conductivity = 5 - reflectivity = 0.5 - radiation_resistance = 20 - spatial_instability = 30 - stack_origin_tech = list(TECH_MATERIAL = 7, TECH_PHORON = 5, TECH_BLUESPACE = 5) - sheet_singular_name = "gem" - sheet_plural_name = "gems" - - -// Adminspawn only, do not let anyone get this. -/datum/material/alienalloy - name = "alienalloy" - display_name = "durable alloy" - stack_type = null - flags = MATERIAL_UNMELTABLE - icon_colour = "#6C7364" - integrity = 1200 - melting_point = 6000 // Hull plating. - explosion_resistance = 200 // Hull plating. - hardness = 500 - weight = 500 - protectiveness = 80 // 80% - -// Likewise. -/datum/material/alienalloy/elevatorium - name = "elevatorium" - display_name = "elevator panelling" - icon_colour = "#666666" - -// Ditto. -/datum/material/alienalloy/dungeonium - name = "dungeonium" - display_name = "ultra-durable" - icon_base = "dungeon" - icon_colour = "#FFFFFF" - -/datum/material/alienalloy/bedrock - name = "bedrock" - display_name = "impassable rock" - icon_base = "rock" - icon_colour = "#FFFFFF" - -/datum/material/alienalloy/alium - name = "alium" - display_name = "alien" - icon_base = "alien" - icon_colour = "#FFFFFF" - -/datum/material/resin - name = "resin" - icon_colour = "#35343a" - icon_base = "resin" - dooropen_noise = 'sound/effects/attackblob.ogg' - door_icon_base = "resin" - icon_reinf = "reinf_mesh" - melting_point = T0C+300 - sheet_singular_name = "blob" - sheet_plural_name = "blobs" - conductive = 0 - explosion_resistance = 60 - radiation_resistance = 10 - stack_origin_tech = list(TECH_MATERIAL = 8, TECH_PHORON = 4, TECH_BLUESPACE = 4, TECH_BIO = 7) - stack_type = /obj/item/stack/material/resin - -/datum/material/resin/can_open_material_door(var/mob/living/user) - var/mob/living/carbon/M = user - if(istype(M) && locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs) - return 1 - return 0 - -/datum/material/resin/wall_touch_special(var/turf/simulated/wall/W, var/mob/living/L) - var/mob/living/carbon/M = L - if(istype(M) && locate(/obj/item/organ/internal/xenos/hivenode) in M.internal_organs) - to_chat(M, "\The [W] shudders under your touch, starting to become porous.") - playsound(W, 'sound/effects/attackblob.ogg', 50, 1) - if(do_after(L, 5 SECONDS)) - spawn(2) - playsound(W, 'sound/effects/attackblob.ogg', 100, 1) - W.dismantle_wall() - return 1 - return 0 - -/datum/material/wood - name = MAT_WOOD - stack_type = /obj/item/stack/material/wood - icon_colour = "#9c5930" - integrity = 50 - icon_base = "wood" - explosion_resistance = 2 - shard_type = SHARD_SPLINTER - shard_can_repair = 0 // you can't weld splinters back into planks - hardness = 15 - weight = 18 - protectiveness = 8 // 28% - conductive = 0 - conductivity = 1 - melting_point = T0C+300 //okay, not melting in this case, but hot enough to destroy wood - ignition_point = T0C+288 - stack_origin_tech = list(TECH_MATERIAL = 1, TECH_BIO = 1) - dooropen_noise = 'sound/effects/doorcreaky.ogg' - door_icon_base = "wood" - destruction_desc = "splinters" - sheet_singular_name = "plank" - sheet_plural_name = "planks" - -/datum/material/wood/log - name = MAT_LOG - icon_base = "log" - stack_type = /obj/item/stack/material/log - sheet_singular_name = null - sheet_plural_name = "pile" - pass_stack_colors = TRUE - supply_conversion_value = 1 - -/datum/material/wood/log/sif - name = MAT_SIFLOG - icon_colour = "#0099cc" // Cyan-ish - stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) - stack_type = /obj/item/stack/material/log/sif - -/datum/material/wood/holographic - name = "holowood" - display_name = "wood" - stack_type = null - shard_type = SHARD_NONE - -/datum/material/wood/sif - name = MAT_SIFWOOD - stack_type = /obj/item/stack/material/wood/sif - icon_colour = "#0099cc" // Cyan-ish - stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) // Alien wood would presumably be more interesting to the analyzer. - -/datum/material/cardboard - name = "cardboard" - stack_type = /obj/item/stack/material/cardboard - flags = MATERIAL_BRITTLE - integrity = 10 - icon_base = "solid" - icon_reinf = "reinf_over" - icon_colour = "#AAAAAA" - hardness = 1 - weight = 1 - protectiveness = 0 // 0% - conductive = 0 - ignition_point = T0C+232 //"the temperature at which book-paper catches fire, and burns." close enough - melting_point = T0C+232 //temperature at which cardboard walls would be destroyed - stack_origin_tech = list(TECH_MATERIAL = 1) - door_icon_base = "wood" - destruction_desc = "crumples" - radiation_resistance = 1 - pass_stack_colors = TRUE - -/datum/material/snow - name = MAT_SNOW - stack_type = /obj/item/stack/material/snow - flags = MATERIAL_BRITTLE - icon_base = "solid" - icon_reinf = "reinf_over" - icon_colour = "#FFFFFF" - integrity = 1 - hardness = 1 - weight = 1 - protectiveness = 0 // 0% - stack_origin_tech = list(TECH_MATERIAL = 1) - melting_point = T0C+1 - destruction_desc = "crumples" - sheet_singular_name = "pile" - sheet_plural_name = "pile" //Just a bigger pile - radiation_resistance = 1 - -/datum/material/snowbrick //only slightly stronger than snow, used to make igloos mostly - name = "packed snow" - flags = MATERIAL_BRITTLE - stack_type = /obj/item/stack/material/snowbrick - icon_base = "stone" - icon_reinf = "reinf_stone" - icon_colour = "#D8FDFF" - integrity = 50 - weight = 2 - hardness = 2 - protectiveness = 0 // 0% - stack_origin_tech = list(TECH_MATERIAL = 1) - melting_point = T0C+1 - destruction_desc = "crumbles" - sheet_singular_name = "brick" - sheet_plural_name = "bricks" - radiation_resistance = 1 - -/datum/material/cloth //todo - name = "cloth" - stack_origin_tech = list(TECH_MATERIAL = 2) - door_icon_base = "wood" - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - flags = MATERIAL_PADDING - conductive = 0 - integrity = 40 - pass_stack_colors = TRUE - supply_conversion_value = 2 - -/datum/material/cloth/syncloth - name = "syncloth" - stack_origin_tech = list(TECH_MATERIAL = 3, TECH_BIO = 2) - door_icon_base = "wood" - ignition_point = T0C+532 - melting_point = T0C+600 - integrity = 200 - protectiveness = 15 // 4% - flags = MATERIAL_PADDING - conductive = 0 - pass_stack_colors = TRUE - supply_conversion_value = 3 - -/datum/material/cult - name = "cult" - display_name = "disturbing stone" - icon_base = "cult" - icon_colour = "#402821" - icon_reinf = "reinf_cult" - shard_type = SHARD_STONE_PIECE - sheet_singular_name = "brick" - sheet_plural_name = "bricks" - conductive = 0 - -/datum/material/cult/place_dismantled_girder(var/turf/target) - new /obj/structure/girder/cult(target, "cult") - -/datum/material/cult/place_dismantled_product(var/turf/target) - new /obj/effect/decal/cleanable/blood(target) - -/datum/material/cult/reinf - name = "cult2" - display_name = "human remains" - -/datum/material/cult/reinf/place_dismantled_product(var/turf/target) - new /obj/effect/decal/remains/human(target) - -/datum/material/chitin - name = MAT_CHITIN - icon_colour = "#8d6653" - stack_type = /obj/item/stack/material/chitin - stack_origin_tech = list(TECH_MATERIAL = 3, TECH_BIO = 4) - icon_base = "solid" - icon_reinf = "reinf_mesh" - integrity = 60 - weight = 10 - ignition_point = T0C+400 - melting_point = T0C+500 - protectiveness = 20 - conductive = 0 - supply_conversion_value = 4 - -//TODO PLACEHOLDERS: -/datum/material/leather - name = MAT_LEATHER - display_name = "plainleather" - icon_colour = "#5C4831" - stack_type = /obj/item/stack/material/leather - stack_origin_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2) - flags = MATERIAL_PADDING - ignition_point = T0C+300 - melting_point = T0C+300 - protectiveness = 3 // 13% - conductive = 0 - integrity = 40 - supply_conversion_value = 3 - -//CHOMPstation Removal Start: Moved to materials_ch and changed to allow for material var -/* -/material/carpet - name = "carpet" - display_name = "comfy" - use_name = "red upholstery" - icon_colour = "#DA020A" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - sheet_singular_name = "tile" - sheet_plural_name = "tiles" - protectiveness = 1 // 4% - conductive = 0 -*/ -//CHOMPstation Removal End - -/datum/material/cotton - name = "cotton" - display_name ="cotton" - icon_colour = "#FFFFFF" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -// This all needs to be OOP'd and use inheritence if its ever used in the future. -/datum/material/cloth_teal - name = "teal" - display_name ="teal" - use_name = "teal cloth" - icon_colour = "#00EAFA" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_black - name = "black" - display_name = "black" - use_name = "black cloth" - icon_colour = "#505050" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_green - name = "green" - display_name = "green" - use_name = "green cloth" - icon_colour = "#01C608" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_puple - name = "purple" - display_name = "purple" - use_name = "purple cloth" - icon_colour = "#9C56C4" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_blue - name = "blue" - display_name = "blue" - use_name = "blue cloth" - icon_colour = "#6B6FE3" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_beige - name = "beige" - display_name = "beige" - use_name = "beige cloth" - icon_colour = "#E8E7C8" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_lime - name = "lime" - display_name = "lime" - use_name = "lime cloth" - icon_colour = "#62E36C" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_yellow - name = "yellow" - display_name = "yellow" - use_name = "yellow cloth" - icon_colour = "#EEF573" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/cloth_orange - name = "orange" - display_name = "orange" - use_name = "orange cloth" - icon_colour = "#E3BF49" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - protectiveness = 1 // 4% - conductive = 0 - -/datum/material/toy_foam - name = "foam" - display_name = "foam" - use_name = "foam" - flags = MATERIAL_PADDING - ignition_point = T0C+232 - melting_point = T0C+300 - icon_colour = "#ff9900" - hardness = 1 - weight = 1 - protectiveness = 0 // 0% - conductive = 0 - -/datum/material/void_opal - name = "void opal" - display_name = "void opal" - use_name = "void opal" - icon_colour = "#0f0f0f" - stack_type = /obj/item/stack/material/void_opal - flags = MATERIAL_UNMELTABLE - cut_delay = 60 - reflectivity = 0 - conductivity = 1 - shard_type = SHARD_SHARD - tableslam_noise = 'sound/effects/Glasshit.ogg' - hardness = 100 - stack_origin_tech = list(TECH_ARCANE = 1, TECH_MATERIAL = 6) - sheet_singular_name = "gem" - sheet_plural_name = "gems" - supply_conversion_value = 30 // These are hilariously rare. - -/datum/material/painite - name = "painite" - display_name = "painite" - use_name = "painite" - icon_colour = "#6b4947" - stack_type = /obj/item/stack/material/painite - flags = MATERIAL_UNMELTABLE - reflectivity = 0.3 - tableslam_noise = 'sound/effects/Glasshit.ogg' - sheet_singular_name = "gem" - sheet_plural_name = "gems" - supply_conversion_value = 4 - -/datum/material/tin - name = "tin" - display_name = "tin" - use_name = "tin" - stack_type = /obj/item/stack/material/tin - icon_colour = "#b2afaf" - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - supply_conversion_value = 1 - hardness = 50 - weight = 13 - -/datum/material/copper - name = "copper" - display_name = "copper" - use_name = "copper" - stack_type = /obj/item/stack/material/copper - conductivity = 52 - icon_colour = "#af633e" - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - supply_conversion_value = 1 - weight = 13 - hardness = 50 - -/datum/material/quartz - name = "quartz" - display_name = "quartz" - use_name = "quartz" - icon_colour = "#e6d7df" - stack_type = /obj/item/stack/material/quartz - tableslam_noise = 'sound/effects/Glasshit.ogg' - sheet_singular_name = "crystal" - sheet_plural_name = "crystals" - supply_conversion_value = 4 - -/datum/material/aluminium - name = "aluminium" - display_name = "aluminium" - use_name = "aluminium" - icon_colour = "#e5e2d0" - stack_type = /obj/item/stack/material/aluminium - sheet_singular_name = "ingot" - sheet_plural_name = "ingots" - supply_conversion_value = 2 - weight = 10