/*
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/material
obj/structure/barricade
obj/item/stack/material
obj/structure/table
VALID ICONS
WALLS
stone
metal
solid
cult
DOORS
stone
metal
resin
wood
*/
//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
/obj/proc/get_material_name()
var/material/material = get_material()
if(material)
return material.name
// Material definition and procs follow.
/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"
// 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/icon/wall_icon
var/icon/multipart_reinf_icon
// 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/conductive = 1 // Objects with this var add CONDUCTS 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.
// Placeholder vars for the time being, todo properly integrate windows/light tiles/rods.
var/created_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'
// Noise made when you hit structure made of this material.
var/hitsound = 'sound/weapons/genhit.ogg'
// Path to resulting stacktype. Todo remove need for this.
var/stack_type
// Wallrot crumble message.
var/rotting_touch_message = "crumbles under your touch"
//What golem species is created with this material
var/golem = null
/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)
to_chat(user, "You attach a rod to the [display_name].")
var/obj/item/stack/S = new rod_product(get_turf(user))
S.add_fingerprint(user)
S.add_to_stacks(user)
/material/proc/build_wired_product(var/mob/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 wires to the [display_name].")
var/obj/item/product = new wire_product(get_turf(user))
if(!(user.l_hand && user.r_hand))
user.put_in_hands(product)
// Make sure we have a display name and shard icon even if they aren't explicitly set.
/material/New()
..()
if(!display_name)
display_name = name
if(!use_name)
use_name = display_name
if(!shard_icon)
shard_icon = shard_type
var/skip_blend = FALSE
switch (icon_base)
if ("solid")
wall_icon = 'icons/turf/smooth/composite_solid.dmi'
if ("stone")
wall_icon = 'icons/turf/smooth/composite_stone.dmi'
multipart_reinf_icon = 'icons/turf/smooth/composite_stone_reinf.dmi'
if ("metal")
wall_icon = 'icons/turf/smooth/composite_metal.dmi'
if ("cult")
wall_icon = 'icons/turf/smooth/cult_wall.dmi'
skip_blend = TRUE
if ("arust")
wall_icon = 'icons/turf/smooth/rusty_wall.dmi'
skip_blend = TRUE
if ("biomass")
wall_icon = 'icons/turf/smooth/diona_wall.dmi'
skip_blend = TRUE
if ("vaurca")
wall_icon = 'icons/turf/smooth/vaurca_wall.dmi'
skip_blend = TRUE
if ("shuttle")
skip_blend = TRUE
if ("skrell")
skip_blend = TRUE
else
world.log << "materials: [src] has unknown icon_base [icon_base]."
if (wall_icon && icon_colour && !skip_blend)
wall_icon = new(wall_icon)
wall_icon.Blend(icon_colour, ICON_MULTIPLY)
if (multipart_reinf_icon)
multipart_reinf_icon = new(multipart_reinf_icon)
multipart_reinf_icon.Blend(icon_colour, ICON_MULTIPLY)
// This is a placeholder for proper integration of windows/windoors into the system.
/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.
/material/proc/get_blunt_damage()
return weight //todo
// Return the matter comprising this material.
/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
temp_matter[name] = SHEET_MATERIAL_AMOUNT
return temp_matter
// As above.
/material/proc/get_edge_damage()
return hardness //todo
// Snowflakey, only checked for alien doors at the moment.
/material/proc/can_open_material_door(var/mob/living/user)
return 1
// Currently used for weapons and objects made of uranium to irradiate things.
/material/proc/products_need_process()
return (radioactivity>0) //todo
// Used by walls when qdel()ing to avoid neighbor merging.
/material/placeholder
name = "placeholder"
// Places a girder object when a wall is dismantled, also applies reinforced material.
/material/proc/place_dismantled_girder(var/turf/target, var/material/reinf_material)
var/obj/structure/girder/G = new(target)
if(reinf_material)
G.reinf_material = reinf_material
G.reinforce_girder()
// General wall debris product placement.
// Not particularly necessary aside from snowflakey cult girders.
/material/proc/place_dismantled_product(var/turf/target,var/is_devastated)
for(var/x=1;x<(is_devastated?2:3);x++)
place_sheet(target)
// Debris product. Used ALL THE TIME.
/material/proc/place_sheet(var/turf/target)
if(stack_type)
return new stack_type(target)
// As above.
/material/proc/place_shard(var/turf/target)
if(shard_type)
return new /obj/item/material/shard(target, src.name)
// Used by walls and weapons to determine if they break or not.
/material/proc/is_brittle()
return !!(flags & MATERIAL_BRITTLE)
/material/proc/combustion_effect(var/turf/T, var/temperature)
return
// Datum definitions follow.
/material/uranium
name = MATERIAL_URANIUM
stack_type = /obj/item/stack/material/uranium
radioactivity = 12
icon_base = "stone"
icon_reinf = "reinf_stone"
icon_colour = "#007A00"
weight = 25
hardness = 20
stack_origin_tech = list(TECH_MATERIAL = 5)
door_icon_base = "stone"
golem = "Uranium Golem"
/material/diamond
name = MATERIAL_DIAMOND
stack_type = /obj/item/stack/material/diamond
flags = MATERIAL_UNMELTABLE
cut_delay = 60
icon_colour = "#00FFE1"
opacity = 0.4
reflectivity = 0.6
conductivity = 1
shard_type = SHARD_SHARD
tableslam_noise = 'sound/effects/glass_hit.ogg'
hitsound = 'sound/effects/glass_hit.ogg'
hardness = 100
stack_origin_tech = list(TECH_MATERIAL = 6)
golem = "Diamond Golem"
/material/gold
name = MATERIAL_GOLD
stack_type = /obj/item/stack/material/gold
icon_colour = "#EDD12F"
weight = 30
hardness = 15
conductivity = 41
stack_origin_tech = list(TECH_MATERIAL = 4)
sheet_singular_name = "ingot"
sheet_plural_name = "ingots"
golem = "Gold Golem"
/material/bronze
name = MATERIAL_BRONZE
stack_type = /obj/item/stack/material/bronze
weight = 30
hardness = 50
conductivity = 11
icon_colour = "#EDD12F"
stack_origin_tech = list(TECH_MATERIAL = 2)
golem = "Bronze Golem"
/material/osmium
name = MATERIAL_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"
value = 30
/material/silver
name = MATERIAL_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"
golem = "Bronze Golem"
/material/phoron
name = MATERIAL_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"
golem = "Phoron Golem"
/material/stone
name = MATERIAL_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%
conductivity = 5
door_icon_base = "stone"
sheet_singular_name = "brick"
sheet_plural_name = "bricks"
golem = "Sand Golem"
/material/stone/marble
name = MATERIAL_MARBLE
icon_colour = "#AAAAAA"
weight = 26
hardness = 70
integrity = 201 //hack to stop kitchen benches being flippable, todo: refactor into weight system
stack_type = /obj/item/stack/material/marble
golem = "Marble Golem"
/material/steel
name = DEFAULT_WALL_MATERIAL
stack_type = /obj/item/stack/material/steel
integrity = 150
conductivity = 11
protectiveness = 10 // 33%
icon_base = "solid"
icon_reinf = "reinf_over"
icon_colour = "#666666"
golem = "Steel Golem"
hitsound = 'sound/weapons/smash.ogg'
/material/diona
name = MATERIAL_DIONA
icon_colour = null
stack_type = null
icon_base = "biomass"
integrity = 100
// below is same as wood
melting_point = T0C + 300
ignition_point = T0C + 288
golem = "Wood Golem"
hitsound = 'sound/effects/woodhit.ogg'
/material/diona/place_dismantled_product()
return
/material/diona/place_dismantled_girder(var/turf/target)
spawn_diona_nymph(target)
/material/steel/holographic
name = "holo" + DEFAULT_WALL_MATERIAL
display_name = DEFAULT_WALL_MATERIAL
stack_type = null
shard_type = SHARD_NONE
/material/plasteel
name = MATERIAL_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 = 10
stack_origin_tech = list(TECH_MATERIAL = 2)
composite_material = list(DEFAULT_WALL_MATERIAL = 3750, "platinum" = 3750) //todo
golem = "Plasteel Golem"
hitsound = 'sound/weapons/smash.ogg'
/material/plasteel/titanium
name = MATERIAL_TITANIUM
stack_type = /obj/item/stack/material/titanium
integrity = 600
conductivity = 2.38
hardness = 90
weight = 25
protectiveness = 25
icon_base = "metal"
door_icon_base = "metal"
icon_colour = "#D1E6E3"
icon_reinf = "reinf_metal"
golem = "Titanium Golem"
/material/glass
name = MATERIAL_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/glass_hit.ogg'
hardness = 30
weight = 15
protectiveness = 0 // 0%
conductivity = 1 // Glass shards don't conduct.
door_icon_base = "stone"
destruction_desc = "shatters"
window_options = list("One Direction" = 1, "Full Window" = 4)
created_window = /obj/structure/window/basic
wire_product = /obj/item/stack/material/glass/wired
rod_product = /obj/item/stack/material/glass/reinforced
golem = "Glass Golem"
/material/glass/build_windows(var/mob/living/user, var/obj/item/stack/used_stack)
if(!user || !used_stack || !created_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
// 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,180), turn(user.dir,270) ))
if(direction in possible_directions)
build_dir = direction
break
else
failed_to_build = 1
if(!failed_to_build && choice == "Windoor")
if(!is_reinforced())
to_chat(user, "This material is not reinforced enough to use for a door.")
return
for(var/obj/obstacle in T)
if((obstacle.flags & ON_BORDER) && obstacle.dir == user.dir)
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")
build_dir = user.dir
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
/material/glass/proc/is_reinforced()
return (hardness > 35) //todo
/material/glass/wired
name = MATERIAL_GLASS_WIRED
display_name = "wired glass"
stack_type = /obj/item/stack/material/glass/wired
flags = MATERIAL_BRITTLE
icon_colour = "#00E1FF"
opacity = 0.3
integrity = 100
shard_type = SHARD_SHARD
tableslam_noise = 'sound/effects/glass_hit.ogg'
hardness = 40
weight = 30
stack_origin_tech = list(TECH_MATERIAL = 2)
composite_material = list(DEFAULT_WALL_MATERIAL = 1875, MATERIAL_GLASS = 3750)
window_options = list()
created_window = null
wire_product = null
rod_product = null
/material/glass/reinforced
name = MATERIAL_GLASS_REINFORCED
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/glass_hit.ogg'
hardness = 40
weight = 30
stack_origin_tech = list(TECH_MATERIAL = 2)
composite_material = list(DEFAULT_WALL_MATERIAL = 1875, MATERIAL_GLASS = 3750)
window_options = list("One Direction" = 1, "Full Window" = 4, "Windoor" = 5)
created_window = /obj/structure/window/reinforced
wire_product = null
rod_product = null
/material/glass/phoron
name = MATERIAL_GLASS_PHORON
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)
created_window = /obj/structure/window/phoronbasic
wire_product = null
rod_product = /obj/item/stack/material/glass/phoronrglass
golem = "Phoron Golem"
/material/glass/phoron/reinforced
name = MATERIAL_GLASS_REINFORCED_PHORON
display_name = "reinforced borosilicate glass"
stack_type = /obj/item/stack/material/glass/phoronrglass
stack_origin_tech = list(TECH_MATERIAL = 5)
composite_material = list() //todo
created_window = /obj/structure/window/phoronreinforced
hardness = 40
weight = 30
stack_origin_tech = list(TECH_MATERIAL = 2)
composite_material = list() //todo
rod_product = null
/material/plastic
name = MATERIAL_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%
melting_point = T0C+371 //assuming heat resistant plastic
stack_origin_tech = list(TECH_MATERIAL = 3)
golem = "Plastic Golem"
/material/plastic/holographic
name = MATERIAL_PLASTIC_HOLO
display_name = "plastic"
stack_type = null
shard_type = SHARD_NONE
/material/osmium
name = MATERIAL_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"
/material/tritium
name = MATERIAL_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"
/material/mhydrogen
name = MATERIAL_HYDROGEN_METALLIC
display_name = "metallic hydrogen"
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
golem = "Metallic Hydrogen Golem"
/material/platinum
name = MATERIAL_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"
/material/iron
name = MATERIAL_IRON
stack_type = /obj/item/stack/material/iron
icon_colour = "#5C5454"
weight = 22
conductivity = 10
sheet_singular_name = "ingot"
sheet_plural_name = "ingots"
golem = "Iron Golem"
hitsound = 'sound/weapons/smash.ogg'
// Adminspawn only, do not let anyone get this.
/material/elevatorium
name = MATERIAL_ELEVATOR
display_name = "elevator panelling"
stack_type = null
icon_colour = "#666666"
integrity = 1200
melting_point = 6000
explosion_resistance = 200
hardness = 500
weight = 500
protectiveness = 80
/material/wood
name = MATERIAL_WOOD
stack_type = /obj/item/stack/material/wood // why wouldn't it have a stacktype seriously guys why
icon_colour = "#824B28"
integrity = 50
icon_base = "metal"
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%
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"
golem = "Wood Golem"
hitsound = 'sound/effects/woodhit.ogg'
/material/wood/log //This is gonna replace wood planks in a way for NBT, leaving it here for now
name = MATERIAL_WOOD_LOG
stack_type = /obj/item/stack/material/woodlog
icon_colour = "#824B28"
integrity = 50
icon_base = "solid"
explosion_resistance = 4
hardness = 30
weight = 30 //Logs are heavier then normal pieces of wood
conductivity = 0.8
melting_point = T0C+380
ignition_point = T0C+328
destruction_desc = "splinters"
sheet_singular_name = "log"
sheet_plural_name = "logs"
/material/wood/branch
name = MATERIAL_WOOD_BRANCH
stack_type = /obj/item/stack/material/woodbranch
icon_colour = "#824B28"
integrity = 50
icon_base = "solid"
explosion_resistance = 0
hardness = 0.1
weight = 7
melting_point = T0C+220
ignition_point = T0C+218
sheet_singular_name = "branch"
sheet_plural_name = "branch"
/material/rust
name = MATERIAL_RUST
display_name = "rusty steel"
stack_type = null
icon_colour = "#B7410E"
icon_base = "arust"
icon_reinf = "reinf_over"
integrity = 250
explosion_resistance = 8
hardness = 15
weight = 18
/material/wood/holographic
name = MATERIAL_WOOD_HOLO
display_name = "wood"
stack_type = null
shard_type = SHARD_NONE
/material/cardboard
name = MATERIAL_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%
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"
golem = "Cardboard Golem"
/material/cloth
name = MATERIAL_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
hardness = 1
golem = "Cloth Golem"
/material/cult
name = MATERIAL_CULT
display_name = "daemon stone"
icon_base = "cult"
icon_colour = COLOR_CULT
icon_reinf = "reinf_cult"
dooropen_noise = 'sound/effects/doorcreaky.ogg'
door_icon_base = "resin"
shard_type = SHARD_STONE_PIECE
sheet_singular_name = "brick"
sheet_plural_name = "bricks"
/material/cult/place_dismantled_girder(var/turf/target)
new /obj/structure/girder/cult(target)
/material/cult/place_dismantled_product(var/turf/target)
new /obj/effect/decal/cleanable/blood(target)
/material/cult/reinf
name = MATERIAL_CULT_REINFORCED
icon_colour = COLOR_CULT_REINFORCED
display_name = "human remains"
/material/cult/reinf/place_dismantled_product(var/turf/target)
new /obj/effect/decal/remains/human(target)
/material/resin
name = MATERIAL_RESIN
icon_colour = "#E85DD8"
dooropen_noise = 'sound/effects/attackblob.ogg'
door_icon_base = "resin"
melting_point = T0C+300
sheet_singular_name = "blob"
sheet_plural_name = "blobs"
/material/leather
name = MATERIAL_LEATHER
icon_colour = "#5C4831"
stack_origin_tech = list(TECH_MATERIAL = 2)
flags = MATERIAL_PADDING
ignition_point = T0C+300
melting_point = T0C+300
protectiveness = 3 // 13%
golem = "Homunculus"
/material/carpet
name = MATERIAL_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%
golem = "Cloth Golem"
/material/cotton
name = MATERIAL_COTTON
display_name ="cotton"
icon_colour = "#FFFFFF"
flags = MATERIAL_PADDING
ignition_point = T0C+232
melting_point = T0C+300
protectiveness = 1 // 4%
golem = "Cloth Golem"
/material/cloth_teal
name = MATERIAL_CLOTH_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%
golem = "Cloth Golem"
/material/cloth_black
name = MATERIAL_CLOTH_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%
golem = "Cloth Golem"
/material/cloth_green
name = MATERIAL_CLOTH_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%
golem = "Cloth Golem"
/material/cloth_purple
name = MATERIAL_CLOTH_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%
golem = "Cloth Golem"
/material/cloth_blue
name = MATERIAL_CLOTH_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%
golem = "Cloth Golem"
/material/cloth_beige
name = MATERIAL_CLOTH_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%
golem = "Cloth Golem"
/material/cloth_lime
name = MATERIAL_CLOTH_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%
golem = "Cloth Golem"
/material/hide //TODO make different hides somewhat different among them
name = MATERIAL_HIDE
stack_origin_tech = list(TECH_MATERIAL = 2)
stack_type = /obj/item/stack/material/animalhide
door_icon_base = "wood"
icon_colour = "#5C4831"
ignition_point = T0C+232
melting_point = T0C+300
flags = MATERIAL_PADDING
hardness = 1
weight = 1
protectiveness = 3 // 13%
golem = "Homunculus"
/material/hide/corgi
name = MATERIAL_HIDE_CORGI
stack_type = /obj/item/stack/material/animalhide/corgi
icon_colour = "#F9A635"
/material/hide/cat
name = MATERIAL_HIDE_CAT
stack_type = /obj/item/stack/material/animalhide/cat
icon_colour = "#444444"
/material/hide/monkey
name = MATERIAL_HIDE_MONKEY
stack_type = /obj/item/stack/material/animalhide/monkey
icon_colour = "#914800"
/material/hide/lizard
name = MATERIAL_HIDE_LIZARD
stack_type = /obj/item/stack/material/animalhide/lizard
icon_colour = "#34AF10"
/material/hide/xeno
name = MATERIAL_HIDE_ALIEN
stack_type = /obj/item/stack/material/animalhide/xeno
icon_colour = "#525288"
protectiveness = 10 // 33%
/material/hide/human
name = MATERIAL_HIDE_HUMAN
stack_type = /obj/item/stack/material/animalhide/human
icon_colour = "#833C00"
/material/bone
name = MATERIAL_BONE
icon_colour = "#e3dac9"
icon_base = "stone"
icon_reinf = "reinf_stone"
sheet_singular_name = "bone"
sheet_plural_name = "bones"
weight = 10
hardness = 20
integrity = 70
stack_origin_tech = list(TECH_MATERIAL = 2)
door_icon_base = "stone"
protectiveness = 10 // 33%
golem = "Homunculus"
/material/bone/necromancer
name = MATERIAL_BONE_CURSED
weight = 20
integrity = 150
hardness = 60
protectiveness = 20 // 50%
/material/vaurca
name = MATERIAL_VAURCA
display_name = "alien biomass"
stack_type = null
icon_colour = "#1C7400"
icon_base = "vaurca"
integrity = 400
melting_point = 6000
explosion_resistance = 25
hardness = 80
weight = 23
protectiveness = 20 // 50%
conductivity = 10
/material/shuttle
name = MATERIAL_SHUTTLE
display_name = "spaceship alloy"
stack_type = null
icon_colour = "#6C7364"
icon_base = "shuttle"
integrity = 1200
melting_point = 6000 // Hull plating.
explosion_resistance = 200 // Hull plating.
hardness = 500
weight = 500
protectiveness = 80 // 80%
/material/shuttle/skrell
name = MATERIAL_SHUTTLE_SKRELL
display_name = "superadvanced alloy"
icon_colour = null
icon_base = "skrell"