Files

210 lines
7.2 KiB
Plaintext

/// Materials made from other materials.
/datum/material/alloy
name = "alloy"
desc = "A material composed of two or more other materials."
abstract_type = /datum/material/alloy
/// The materials this alloy is made from weighted by their ratios.
var/list/composition = null
/datum/material/alloy/return_composition(amount = 1, flags)
if(flags & MATCONTAINER_ACCEPT_ALLOYS)
return ..()
. = list()
var/list/cached_comp = composition
for(var/comp_mat in cached_comp)
var/datum/material/component_material = SSmaterials.get_material(comp_mat)
var/list/component_composition = component_material.return_composition(cached_comp[comp_mat], flags)
for(var/comp_comp_mat in component_composition)
.[comp_comp_mat] += component_composition[comp_comp_mat] * amount
/**
* Plasteel
* An alloy of iron and plasma.
* Applies a significant slowdown effect to any and all items that contain it.
*/
/datum/material/alloy/plasteel
name = "plasteel"
desc = "The heavy duty result of infusing iron with plasma."
color = "#706374"
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_METAL | MATERIAL_CLASS_RIGID
mat_properties = list(
MATERIAL_DENSITY = 6,
MATERIAL_HARDNESS = 8,
MATERIAL_FLEXIBILITY = 1,
MATERIAL_REFLECTIVITY = 5,
MATERIAL_ELECTRICAL = 8,
MATERIAL_THERMAL = 4,
MATERIAL_CHEMICAL = 6,
)
value_per_unit = 0.135
sheet_type = /obj/item/stack/sheet/plasteel
material_reagent = list(/datum/reagent/iron = 1, /datum/reagent/toxin/plasma = 1)
composition = list(/datum/material/iron = 1, /datum/material/plasma = 1)
mat_rust_resistance = RUST_RESISTANCE_REINFORCED
/datum/material/alloy/plasteel/on_applied(atom/source, mat_amount, multiplier, from_slot)
. = ..()
if(istype(source, /obj/item/fishing_rod))
ADD_TRAIT(source, TRAIT_ROD_LAVA_USABLE, REF(src))
/datum/material/alloy/plasteel/on_removed(atom/source, mat_amount, multiplier, from_slot)
. = ..()
if(istype(source, /obj/item/fishing_rod))
REMOVE_TRAIT(source, TRAIT_ROD_LAVA_USABLE, REF(src))
/**
* Plastitanium
* An alloy of titanium and plasma.
*/
/datum/material/alloy/plastitanium
name = "plastitanium"
desc = "The extremely heat resistant result of infusing titanium with plasma."
color = "#3a313a"
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_METAL | MATERIAL_CLASS_RIGID
mat_properties = list(
MATERIAL_DENSITY = 4,
MATERIAL_HARDNESS = 8,
MATERIAL_FLEXIBILITY = 1,
MATERIAL_REFLECTIVITY = 8,
MATERIAL_ELECTRICAL = 6,
MATERIAL_THERMAL = 1,
MATERIAL_CHEMICAL = 8,
)
value_per_unit = 0.225
sheet_type = /obj/item/stack/sheet/mineral/plastitanium
material_reagent = /datum/reagent/toxin/plasma
composition = list(/datum/material/titanium = 1, /datum/material/plasma = 1)
mat_rust_resistance = RUST_RESISTANCE_TITANIUM
/datum/material/alloy/plastitanium/on_applied(atom/source, mat_amount, multiplier, from_slot)
. = ..()
if(istype(source, /obj/item/fishing_rod))
ADD_TRAIT(source, TRAIT_ROD_LAVA_USABLE, REF(src))
/datum/material/alloy/plastitanium/on_removed(atom/source, mat_amount, multiplier, from_slot)
. = ..()
if(istype(source, /obj/item/fishing_rod))
REMOVE_TRAIT(source, TRAIT_ROD_LAVA_USABLE, REF(src))
/**
* Plasmaglass
* An alloy of silicate and plasma.
*/
/datum/material/alloy/plasmaglass
name = "plasmaglass"
desc = "Plasma-infused silicate. It is much more durable and heat resistant than either of its component materials."
color = "#ff80f4"
alpha = 150
starlight_color = COLOR_STRONG_MAGENTA
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_CRYSTAL | MATERIAL_CLASS_RIGID
mat_properties = list(
MATERIAL_DENSITY = 5,
MATERIAL_HARDNESS = 6,
MATERIAL_FLEXIBILITY = 0,
MATERIAL_REFLECTIVITY = 8,
MATERIAL_ELECTRICAL = 0,
MATERIAL_THERMAL = 2,
MATERIAL_CHEMICAL = 8,
)
sheet_type = /obj/item/stack/sheet/plasmaglass
shard_type = /obj/item/shard/plasma
debris_type = /obj/effect/decal/cleanable/glass/plasma
material_reagent = list(/datum/reagent/silicon = 1, /datum/reagent/toxin/plasma = 0.5)
value_per_unit = 0.075
composition = list(/datum/material/glass = 1, /datum/material/plasma = 0.5)
/**
* Titanium Glass
* An alloy of glass and titanium.
*/
/datum/material/alloy/titaniumglass
name = "titanium glass"
desc = "A specialized silicate-titanium alloy that is commonly used in shuttle windows."
color = "#cfbee0"
alpha = 150
starlight_color = COLOR_COMMAND_BLUE
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_CRYSTAL | MATERIAL_CLASS_RIGID
mat_properties = list(
MATERIAL_DENSITY = 5,
MATERIAL_HARDNESS = 7,
MATERIAL_FLEXIBILITY = 0,
MATERIAL_REFLECTIVITY = 8,
MATERIAL_ELECTRICAL = 0,
MATERIAL_THERMAL = 4,
MATERIAL_CHEMICAL = 8,
)
sheet_type = /obj/item/stack/sheet/titaniumglass
shard_type = /obj/item/shard/titanium
debris_type = /obj/effect/decal/cleanable/glass/titanium
material_reagent = /datum/reagent/silicon
value_per_unit = 0.04
composition = list(/datum/material/glass = 1, /datum/material/titanium = 0.5)
/**
* Plastitanium Glass
* An alloy of plastitanium and glass.
*/
/datum/material/alloy/plastitaniumglass
name = "plastitanium glass"
desc = "A specialized silicate-plastitanium alloy."
color = "#5d3369"
starlight_color = COLOR_CENTCOM_BLUE
alpha = 150
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_CRYSTAL | MATERIAL_CLASS_RIGID
mat_properties = list(
MATERIAL_DENSITY = 4,
MATERIAL_HARDNESS = 8,
MATERIAL_FLEXIBILITY = 0,
MATERIAL_REFLECTIVITY = 8,
MATERIAL_ELECTRICAL = 0,
MATERIAL_THERMAL = 2,
MATERIAL_CHEMICAL = 8,
)
sheet_type = /obj/item/stack/sheet/plastitaniumglass
shard_type = /obj/item/shard/plastitanium
debris_type = /obj/effect/decal/cleanable/glass/plastitanium
material_reagent = list(/datum/reagent/silicon = 1, /datum/reagent/toxin/plasma = 0.5)
value_per_unit = 0.125
composition = list(/datum/material/glass = 1, /datum/material/alloy/plastitanium = 0.5)
/**
* Alien Alloy
* Densified plasteel.
* Applies a significant slowdown effect to anything that contains it.
* Anything constructed from it can slowly regenerate.
*/
/datum/material/alloy/alien
name = "alien alloy"
desc = "An extremely dense alloy similar to plasteel in composition. It requires exotic metallurgical processes to create."
color = "#6041aa"
mat_flags = MATERIAL_BASIC_RECIPES | MATERIAL_CLASS_METAL | MATERIAL_CLASS_RIGID
mat_properties = list(
MATERIAL_DENSITY = 8,
MATERIAL_HARDNESS = 8,
MATERIAL_FLEXIBILITY = 3,
MATERIAL_REFLECTIVITY = 7,
MATERIAL_ELECTRICAL = 8,
MATERIAL_THERMAL = 1,
MATERIAL_CHEMICAL = 10,
)
sheet_type = /obj/item/stack/sheet/mineral/abductor
material_reagent = list(/datum/reagent/iron = 1, /datum/reagent/toxin/plasma = 1)
value_per_unit = 0.4
composition = list(/datum/material/iron = 2, /datum/material/plasma = 2)
/datum/material/alloy/alien/on_applied(atom/source, mat_amount, multiplier, from_slot)
. = ..()
if(isobj(source))
source.AddElement(/datum/element/obj_regen, _rate=0.02) // 2% regen per tick.
if(istype(source, /obj/item/fishing_rod))
ADD_TRAIT(source, TRAIT_ROD_LAVA_USABLE, REF(src))
/datum/material/alloy/alien/on_removed(atom/source, mat_amount, multiplier, from_slot)
. = ..()
if(isobj(source))
source.RemoveElement(/datum/element/obj_regen, _rate=0.02)
if(istype(source, /obj/item/fishing_rod))
REMOVE_TRAIT(source, TRAIT_ROD_LAVA_USABLE, REF(src))