mirror of
https://github.com/goonstation/goonstation-2016.git
synced 2026-07-10 16:42:21 +01:00
1048 lines
34 KiB
Plaintext
1048 lines
34 KiB
Plaintext
/datum/trigger_delegate
|
|
var/datum/owner = null
|
|
var/procname = null
|
|
|
|
New(var/datum/D, var/name)
|
|
owner = D
|
|
procname = name
|
|
|
|
/datum/material
|
|
var/atom/owner = null
|
|
var/mat_id = "ohshitium" //used to retrieve instances of these base materials from the cache.
|
|
var/name = "Youshouldneverseemeium"
|
|
var/desc = "This is a custom material."
|
|
var/list/parent_materials = list() //Holds the parent materials.
|
|
var/list/properties = list()
|
|
|
|
var/generation = 0 //Compound generation
|
|
|
|
var/canMix = 1 //Can this be mixed with other materials?
|
|
var/material_flags = 0 //Various flags. See defines in _setup.dm.
|
|
|
|
var/list/prefixes = list() //goes before the name
|
|
var/list/suffixes = list() //and after it.
|
|
|
|
var/texture = null //if not null, texture will be set when mat is applied.
|
|
var/texture_blend = ICON_MULTIPLY //How to blend the texture.
|
|
|
|
//properties
|
|
var/color = "#FFFFFF" //The color of the material
|
|
var/alpha = 255 //The "transparency" of the material. Kept as alpha for logical reasons. Displayed as percentage ingame.
|
|
var/quality = 0 //Overall quality affects max caps of properties. -100 to 100, higher is better. Inherent quality overrides asteroid quality if higher and non-zero. This means that if you define a non-zero positive quality for a material you will never mine it at a quality below the one defined here.
|
|
//Other
|
|
|
|
proc/getAdjustedMax(var/property)
|
|
if(properties.Find(property))
|
|
var/datum/material_property/P = properties[property]
|
|
return max(P.value_max + round(P.value_max * (quality / 100)), P.value_min)
|
|
return
|
|
|
|
proc/getProperty(var/property, var/type = VALUE_CURRENT)
|
|
if(properties.Find(property))
|
|
var/datum/material_property/P = properties[property]
|
|
switch(type)
|
|
if(VALUE_CURRENT)
|
|
P.value = min(getAdjustedMax(property), P.value) //This makes sure that no values are over their maximum bounds. This can happen when quality changes after the material was created since no further maximum bound checking happens after creation (unless setProperty is used). It's not pretty but it will do.
|
|
return P.value
|
|
if(VALUE_MIN)
|
|
return P.value_min
|
|
if(VALUE_MAX)
|
|
return getAdjustedMax(property)
|
|
else return 0
|
|
|
|
proc/adjustProperty(var/property, var/value)
|
|
if(properties.Find(property))
|
|
var/datum/material_property/P = properties[property]
|
|
if(value) P.value = min(max(P.value + value, P.value_min), getAdjustedMax(property))
|
|
else
|
|
setProperty(property, value)
|
|
return
|
|
|
|
proc/setProperty(var/property, var/value, var/value_min, var/value_max) //Man overloading would be sweet.
|
|
if(istype(property, /datum/material_property))
|
|
var/datum/material_property/mt = property
|
|
properties[mt.name] = property
|
|
mt.value = min( max(mt.value, mt.value_min), getAdjustedMax(mt.name) )
|
|
else if(istext(property))
|
|
if(properties.Find(property))
|
|
var/datum/material_property/P = properties[property]
|
|
|
|
if(value_min) P.value_min = value_min
|
|
|
|
if(value_max) P.value_max = value_max
|
|
|
|
if(value) P.value = min(max(value, P.value_min), getAdjustedMax(property))
|
|
else
|
|
properties.Add(property)
|
|
var/datum/material_property/P = new/datum/material_property()
|
|
|
|
P.name = property
|
|
|
|
if(value_min) P.value_min = value_min
|
|
else P.value_min = 1
|
|
|
|
if(value_max) P.value_max = value_max
|
|
else P.value_max = 100
|
|
|
|
if(value) P.value = min(max(value, P.value_min), getAdjustedMax(property))
|
|
else P.value = 1
|
|
|
|
properties[property] = P
|
|
return
|
|
|
|
proc/hasProperty(var/property)
|
|
return properties.Find(property)
|
|
|
|
//properties
|
|
|
|
proc/addDelegate(var/list/L, var/datum/materialProc/D)
|
|
//POOLING: CREATE COPY OF MATERIAL BEFORE MODIFICATION HERE
|
|
for(var/datum/materialProc/P in L)
|
|
if(P.type == D.type) return 0
|
|
L.Add(D)
|
|
L[D] = 0
|
|
//if(L == triggersOnAdd) D.execute(owner) //Run onadd procs when they are
|
|
return
|
|
|
|
proc/fail()
|
|
del(owner)
|
|
return
|
|
|
|
var/list/triggersFail = list() //Called when the material fails due to instability.
|
|
var/list/triggersTemp = list() //Called when exposed to temperatures.
|
|
var/list/triggersChem = list() //Called when exposed to chemicals
|
|
var/list/triggersPickup = list()//Called when owning object is picked up
|
|
var/list/triggersDrop = list() //Called when owning object is dropped
|
|
var/list/triggersExp = list() //Called when exposed to explosions
|
|
var/list/triggersOnAdd = list() //Called when the material is added to an object
|
|
var/list/triggersOnLife = list()//Called when the life proc of a mob that has the owning item equipped runs
|
|
var/list/triggersOnAttack = list()//Called when the owning object is used to attack something or someone.
|
|
var/list/triggersOnAttacked = list()//Called when a mob wearing the owning object is attacked.
|
|
var/list/triggersOnEntered = list()//Called when *something* enters a turf with the material assigned.
|
|
|
|
proc/triggerOnFail(var/atom/owner)
|
|
for(var/datum/materialProc/X in triggersFail)
|
|
call(X, "execute")(owner)
|
|
fail()
|
|
return
|
|
|
|
proc/triggerOnEntered(var/atom/owner, var/atom/entering)
|
|
for(var/datum/materialProc/X in triggersOnEntered)
|
|
call(X, "execute")(owner, entering)
|
|
return
|
|
|
|
proc/triggerOnAttacked(var/obj/item/owner, var/mob/attacker, var/mob/attacked, var/atom/weapon)
|
|
for(var/datum/materialProc/X in triggersOnAttacked)
|
|
call(X, "execute")(owner, attacker, attacked, weapon)
|
|
return
|
|
|
|
proc/triggerOnAttack(var/obj/item/owner, var/mob/attacker, var/mob/attacked)
|
|
for(var/datum/materialProc/X in triggersOnAttack)
|
|
call(X, "execute")(owner, attacker, attacked)
|
|
return
|
|
|
|
proc/triggerOnLife(var/mob/M, var/obj/item/I)
|
|
for(var/datum/materialProc/X in triggersOnLife)
|
|
call(X, "execute")(M, I)
|
|
return
|
|
|
|
proc/triggerOnAdd(var/location)
|
|
for(var/datum/materialProc/X in triggersOnAdd)
|
|
call(X, "execute")(location)
|
|
return
|
|
|
|
proc/triggerChem(var/location, var/chem, var/amount)
|
|
for(var/datum/materialProc/X in triggersChem)
|
|
call(X, "execute")(location, chem, amount)
|
|
return
|
|
|
|
proc/triggerPickup(var/mob/M)
|
|
for(var/datum/materialProc/X in triggersPickup)
|
|
call(X, "execute")(M)
|
|
return
|
|
|
|
proc/triggerDrop(var/mob/M)
|
|
for(var/datum/materialProc/X in triggersDrop)
|
|
call(X, "execute")(M)
|
|
return
|
|
|
|
proc/triggerTemp(var/location, var/temp)
|
|
for(var/datum/materialProc/X in triggersTemp)
|
|
call(X, "execute")(location, temp)
|
|
return
|
|
|
|
proc/triggerExp(var/location, var/sev)
|
|
for(var/datum/materialProc/X in triggersExp)
|
|
call(X, "execute")(location, sev)
|
|
return
|
|
|
|
// Metals
|
|
|
|
/datum/material/metal
|
|
material_flags = MATERIAL_METAL
|
|
color = "#8C8C8C"
|
|
|
|
/datum/material/metal/electrum
|
|
mat_id = "electrum"
|
|
name = "electrum"
|
|
desc = "Solid energy."
|
|
color = "#44ACAC"
|
|
material_flags = MATERIAL_METAL
|
|
quality = 5
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/electrical{ value = 80 }())
|
|
setProperty(new/datum/material_property/hardness{ value = 10 }())
|
|
setProperty(new/datum/material_property/toughness{ value = 5 }())
|
|
setProperty(new/datum/material_property/energy{ value = 45 }())
|
|
return ..()
|
|
|
|
/datum/material/metal/steel
|
|
mat_id = "steel"
|
|
name = "steel"
|
|
desc = "Terrestrial steel from Earth."
|
|
color = "#8C8C8C"
|
|
material_flags = MATERIAL_METAL
|
|
|
|
/datum/material/metal/mauxite
|
|
mat_id = "mauxite"
|
|
name = "mauxite"
|
|
desc = "Mauxite is a sturdy common metal."
|
|
color = "#574846"
|
|
New()
|
|
setProperty(new/datum/material_property/hardness{ value = 15 }())
|
|
setProperty(new/datum/material_property/shear{ value = 33 }())
|
|
setProperty(new/datum/material_property/compressive{ value = 33 }())
|
|
setProperty(new/datum/material_property/tensile{ value = 33 }())
|
|
return ..()
|
|
|
|
/datum/material/metal/pharosium
|
|
mat_id = "pharosium"
|
|
name = "pharosium"
|
|
desc = "Pharosium is a conductive metal."
|
|
color = "#E39362"
|
|
New()
|
|
setProperty(new/datum/material_property/electrical{ value = 75 }())
|
|
setProperty(new/datum/material_property/dielectric{ value = 65 }())
|
|
setProperty(new/datum/material_property/permittivity{ value = 25 }())
|
|
return ..()
|
|
|
|
/datum/material/metal/cobryl
|
|
mat_id = "cobryl"
|
|
name = "cobryl"
|
|
desc = "Cobryl is a somewhat valuable metal."
|
|
color = "#84D5F0"
|
|
New()
|
|
setProperty(new/datum/material_property/value{ value = 4000 }())
|
|
setProperty(new/datum/material_property/shear{ value = 1 }())
|
|
setProperty(new/datum/material_property/compressive{ value = 1 }())
|
|
return ..()
|
|
|
|
/datum/material/metal/bohrum
|
|
mat_id = "bohrum"
|
|
name = "bohrum"
|
|
desc = "Bohrum is a heavy and highly durable metal."
|
|
color = "#3D692D"
|
|
New()
|
|
setProperty(new/datum/material_property/melting{ value = T0C + 4000 }())
|
|
setProperty(new/datum/material_property/hardness{ value = 45 }())
|
|
setProperty(new/datum/material_property/toughness{ value = 50 }())
|
|
return ..()
|
|
|
|
/datum/material/metal/cerenkite
|
|
mat_id = "cerenkite"
|
|
name = "cerenkite"
|
|
desc = "Cerenkite is a highly radioactive metal."
|
|
color = "#CDBDFF"
|
|
material_flags = MATERIAL_ENERGY | MATERIAL_METAL
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/melting{ value = T0C + 500 }())
|
|
setProperty(new/datum/material_property/hardness{ value = 5 }())
|
|
setProperty(new/datum/material_property/toughness{ value = 5 }())
|
|
setProperty(new/datum/material_property/energy{ value = 50 }())
|
|
setProperty(new/datum/material_property/radioactivity{ value = 50 }())
|
|
addDelegate(triggersPickup, new /datum/materialProc/cerenkite_pickup())
|
|
addDelegate(triggersOnLife, new /datum/materialProc/cerenkite_life())
|
|
addDelegate(triggersOnAdd, new /datum/materialProc/cerenkite_add())
|
|
addDelegate(triggersOnEntered, new /datum/materialProc/generic_radiation_onenter())
|
|
return ..()
|
|
|
|
/datum/material/metal/syreline
|
|
mat_id = "syreline"
|
|
name = "syreline"
|
|
desc = "Syreline is an extremely valuable and coveted metal."
|
|
color = "#FAF5D4"
|
|
quality = 30
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/value{ value = 10000 }())
|
|
setProperty(new/datum/material_property/hardness{ value = 1 }())
|
|
addDelegate(triggersOnAdd, new /datum/materialProc/gold_add())
|
|
return ..()
|
|
|
|
/datum/material/metal/gold
|
|
mat_id = "gold"
|
|
name = "gold"
|
|
desc = "A somewhat valuable and conductive metal."
|
|
color = "#F5BE18"
|
|
quality = 30
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/value{ value = 3000 }())
|
|
setProperty(new/datum/material_property/hardness{ value = 10 }())
|
|
setProperty(new/datum/material_property/toughness{ value = 1 }())
|
|
setProperty(new/datum/material_property/electrical{ value = 75 }())
|
|
addDelegate(triggersOnAdd, new /datum/materialProc/gold_add())
|
|
return ..()
|
|
|
|
/datum/material/metal/silver
|
|
mat_id = "silver"
|
|
name = "silver"
|
|
desc = "A slightly valuable and conductive metal."
|
|
color = "#C1D1D2"
|
|
quality = 5
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/value{ value = 100 }())
|
|
setProperty(new/datum/material_property/hardness{ value = 15 }())
|
|
setProperty(new/datum/material_property/toughness{ value = 5 }())
|
|
setProperty(new/datum/material_property/electrical{ value = 75 }())
|
|
return ..()
|
|
|
|
// Special Metals
|
|
|
|
/datum/material/metal/slag
|
|
mat_id = "slag"
|
|
name = "slag"
|
|
desc = "A by-product left over after material has been processed."
|
|
color = "#26170F"
|
|
quality = -50
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/instability{ value = 75 }())
|
|
setProperty(new/datum/material_property/hardness{ value = 1 }())
|
|
setProperty(new/datum/material_property/toughness{ value = 1 }())
|
|
setProperty(new/datum/material_property/shear{ value = 1 }())
|
|
setProperty(new/datum/material_property/compressive{ value = 1 }())
|
|
setProperty(new/datum/material_property/tensile{ value = 1 }())
|
|
return ..()
|
|
|
|
/datum/material/metal/spacelag
|
|
mat_id = "spacelag"
|
|
name = "spacelag"
|
|
desc = "*BUFFERING*"
|
|
color = "#0F0A08"
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/instability{ value = 33 }())
|
|
setProperty(new/datum/material_property/toughness{ value = 50 }())
|
|
setProperty(new/datum/material_property/tensile{ value = 90 }())
|
|
return ..()
|
|
|
|
/datum/material/metal/iridiumalloy
|
|
mat_id = "iridiumalloy"
|
|
name = "iridium-alloy"
|
|
canMix = 1 //Can not be easily modified.
|
|
desc = "Some sort of advanced iridium alloy."
|
|
color = "#756596"
|
|
material_flags = MATERIAL_METAL | MATERIAL_CRYSTAL
|
|
quality = 60
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/toughness{ value = 90 }())
|
|
setProperty(new/datum/material_property/melting{ value = T0C + 10000 }())
|
|
return ..()
|
|
|
|
//GIVE THIS STATS AND SPECIAL EFFECTS.
|
|
/datum/material/metal/soulsteel
|
|
mat_id = "soulsteel"
|
|
name = "soulsteel"
|
|
desc = "A metal imbued with souls. Creepy."
|
|
color = "#73DFF0"
|
|
material_flags = MATERIAL_METAL | MATERIAL_ENERGY
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/electrical{ value = 25 }())
|
|
setProperty(new/datum/material_property/dielectric{ value = 65 }())
|
|
setProperty(new/datum/material_property/energy{ value = 60 }())
|
|
return ..()
|
|
|
|
// Crystals
|
|
/datum/material/crystal
|
|
material_flags = MATERIAL_CRYSTAL
|
|
color = "#A3DCFF"
|
|
|
|
/datum/material/crystal/glass
|
|
mat_id = "glass"
|
|
name = "glass"
|
|
desc = "Terrestrial glass. Inferior to Molitz."
|
|
color = "#A3DCFF"
|
|
alpha = 180
|
|
|
|
/datum/material/crystal/molitz
|
|
mat_id = "molitz"
|
|
name = "molitz"
|
|
desc = "Molitz is a common crystalline substance."
|
|
color = "#FFFFFF"
|
|
alpha = 180
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/hardness{ value = 40 }())
|
|
setProperty(new/datum/material_property/toughness{ value = 40 }())
|
|
return ..()
|
|
|
|
/datum/material/crystal/claretine
|
|
mat_id = "claretine"
|
|
name = "claretine"
|
|
desc = "Claretine is a highly conductive salt."
|
|
color = "#C2280A"
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/electrical{ value = 85 }())
|
|
setProperty(new/datum/material_property/permittivity{ value = 20 }())
|
|
setProperty(new/datum/material_property/dielectric{ value = 5 }())
|
|
return ..()
|
|
|
|
/datum/material/crystal/erebite
|
|
mat_id = "erebite"
|
|
name = "erebite"
|
|
desc = "Erebite is an extremely volatile high-energy mineral."
|
|
color = "#FF3700"
|
|
material_flags = MATERIAL_CRYSTAL | MATERIAL_ENERGY
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/electrical{ value = 95 }())
|
|
setProperty(new/datum/material_property/dielectric{ value = 95 }())
|
|
setProperty(new/datum/material_property/energy{ value = 95 }())
|
|
setProperty(new/datum/material_property/instability{ value = 50 }())
|
|
addDelegate(triggersFail, new /datum/materialProc/fail_explosive(100))
|
|
addDelegate(triggersOnAdd, new /datum/materialProc/erebite_flash())
|
|
addDelegate(triggersTemp, new /datum/materialProc/erebite_temp())
|
|
addDelegate(triggersExp, new /datum/materialProc/erebite_exp())
|
|
addDelegate(triggersOnAttack, new /datum/materialProc/generic_explode_attack(33))
|
|
addDelegate(triggersOnAttacked, new /datum/materialProc/generic_explode_attack(33))
|
|
return ..()
|
|
|
|
/datum/material/crystal/plasmastone
|
|
mat_id = "plasmastone"
|
|
name = "plasmastone"
|
|
desc = "Plasma in its solid state."
|
|
color = "#A114FF"
|
|
material_flags = MATERIAL_CRYSTAL | MATERIAL_ENERGY
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/flammability{ value = 75 }())
|
|
setProperty(new/datum/material_property/energy{ value = 35 }())
|
|
setProperty(new/datum/material_property/hardness{ value = 15 }())
|
|
addDelegate(triggersTemp, new /datum/materialProc/plasmastone())
|
|
addDelegate(triggersExp, new /datum/materialProc/plasmastone())
|
|
return ..()
|
|
|
|
/datum/material/crystal/plasmaglass
|
|
mat_id = "plasmaglass"
|
|
name = "plasma glass"
|
|
desc = "Crystallized plasma that has been rendered inert. Very hard and prone to making extremely sharp edges."
|
|
color = "#A114FF"
|
|
alpha = 150
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/hardness{ value = 65 }())
|
|
setProperty(new/datum/material_property/toughness{ value = 20 }())
|
|
setProperty(new/datum/material_property/compressive{ value = 5 }())
|
|
setProperty(new/datum/material_property/shear{ value = 5 }())
|
|
setProperty(new/datum/material_property/tensile{ value = 5 }())
|
|
return ..()
|
|
|
|
/datum/material/crystal/gemstone
|
|
mat_id = "quartz"
|
|
name = "quartz"
|
|
desc = "Quartz is somewhat valuable but not paticularly useful."
|
|
color = "#BBBBBB"
|
|
quality = 50
|
|
alpha = 100
|
|
var/gem_tier = 3
|
|
|
|
New()
|
|
switch(gem_tier)
|
|
if(1)
|
|
setProperty(new/datum/material_property/hardness{ value = 95 }())
|
|
setProperty(new/datum/material_property/value{ value = 5000 }())
|
|
addDelegate(triggersOnAdd, new /datum/materialProc/gold_add())
|
|
if(2)
|
|
setProperty(new/datum/material_property/hardness{ value = 60 }())
|
|
setProperty(new/datum/material_property/value{ value = 2500 }())
|
|
if(3)
|
|
setProperty(new/datum/material_property/hardness{ value = 30 }())
|
|
setProperty(new/datum/material_property/value{ value = 1000 }())
|
|
return ..()
|
|
|
|
diamond
|
|
mat_id = "diamond"
|
|
name = "diamond"
|
|
color = "#FFFFFF"
|
|
quality = 100
|
|
gem_tier = 1
|
|
|
|
onyx
|
|
mat_id = "onyx"
|
|
name = "onyx"
|
|
color = "#000000"
|
|
|
|
ruby
|
|
mat_id = "ruby"
|
|
name = "ruby"
|
|
color = "#D00000"
|
|
quality = 100
|
|
gem_tier = 1
|
|
|
|
rose_quartz
|
|
mat_id = "rosequartz"
|
|
name = "rose quartz"
|
|
color = "#FFC9E8"
|
|
|
|
jasper
|
|
mat_id = "jasper"
|
|
name = "jasper"
|
|
color = "#FF7A21"
|
|
quality = 75
|
|
gem_tier = 2
|
|
|
|
garnet
|
|
mat_id = "garnet"
|
|
name = "garnet"
|
|
color = "#DB8412"
|
|
quality = 75
|
|
gem_tier = 2
|
|
|
|
topaz
|
|
mat_id = "topaz"
|
|
name = "topaz"
|
|
color = "#EBB028"
|
|
quality = 100
|
|
gem_tier = 1
|
|
|
|
citrine
|
|
mat_id = "citrine"
|
|
name = "citrine"
|
|
color = "#F5F11B"
|
|
|
|
peridot
|
|
mat_id = "peridot"
|
|
name = "peridot"
|
|
color = "#9CC748"
|
|
quality = 75
|
|
gem_tier = 2
|
|
|
|
emerald
|
|
mat_id = "emerald"
|
|
name = "emerald"
|
|
color = "#3AB818"
|
|
quality = 100
|
|
gem_tier = 1
|
|
|
|
jade
|
|
mat_id = "jade"
|
|
name = "jade"
|
|
color = "#3C8F4D"
|
|
|
|
malachite
|
|
mat_id = "malachite"
|
|
name = "malachite"
|
|
color = "#1DF091"
|
|
quality = 75
|
|
gem_tier = 2
|
|
|
|
aquamarine
|
|
mat_id = "aquamarine"
|
|
name = "aquamarine"
|
|
color = "#68F7D8"
|
|
|
|
sapphire
|
|
mat_id = "sapphire"
|
|
name = "sapphire"
|
|
color = "#2789F2"
|
|
quality = 100
|
|
gem_tier = 1
|
|
|
|
lapis
|
|
mat_id = "lapislazuli"
|
|
name = "lapis lazuli"
|
|
color = "#1719BD"
|
|
quality = 75
|
|
gem_tier = 2
|
|
|
|
iolite
|
|
mat_id = "iolite"
|
|
name = "iolite"
|
|
color = "#D5A8FF"
|
|
|
|
amethyst
|
|
mat_id = "amethyst"
|
|
name = "amethyst"
|
|
color = "#BD0FDB"
|
|
quality = 100
|
|
gem_tier = 1
|
|
|
|
alexandrite
|
|
mat_id = "alexandrite"
|
|
name = "alexandrite"
|
|
color = "#EB2FA9"
|
|
quality = 75
|
|
gem_tier = 2
|
|
|
|
/datum/material/crystal/uqill //Ancients
|
|
mat_id = "uqill"
|
|
name = "uqill"
|
|
desc = "Uqill is a rare and very dense stone."
|
|
color = "#0F0A08"
|
|
alpha = 255
|
|
|
|
transparent // For bulletproof windows.
|
|
mat_id = "uqillglass"
|
|
name = "transparent uqill"
|
|
desc = "Uqill-derived material developed for usage as transparent armor."
|
|
color = "#615757"
|
|
alpha = 110
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/corrosion { value = 30 }())
|
|
setProperty(new/datum/material_property/hardness{ value = 15 }())
|
|
setProperty(new/datum/material_property/toughness{ value = 80 }())
|
|
setProperty(new/datum/material_property/compressive{ value = 50 }())
|
|
setProperty(new/datum/material_property/shear{ value = 5 }())
|
|
setProperty(new/datum/material_property/tensile{ value = 5 }())
|
|
return ..()
|
|
|
|
/datum/material/crystal/telecrystal
|
|
mat_id = "telecrystal"
|
|
name = "telecrystal"
|
|
desc = "Telecrystal is a gemstone with space-warping properties."
|
|
color = "#4C14F5"
|
|
material_flags = MATERIAL_CRYSTAL | MATERIAL_ENERGY
|
|
alpha = 100
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/scattering { value = 15 }())
|
|
setProperty(new/datum/material_property/reflectivity { value = 1 }())
|
|
setProperty(new/datum/material_property/energy { value = 40 }())
|
|
addDelegate(triggersOnLife, new /datum/materialProc/telecrystal_life())
|
|
addDelegate(triggersOnEntered, new /datum/materialProc/telecrystal_entered())
|
|
return ..()
|
|
|
|
/datum/material/crystal/miracle
|
|
mat_id = "miracle"
|
|
name = "miraclium"
|
|
desc = "Miraclium is a bizarre substance that can have a wide variety of effects."
|
|
color = "#FFFFFF"
|
|
|
|
New()
|
|
addDelegate(triggersOnAdd, new /datum/materialProc/miracle_add())
|
|
quality = rand(-50, 100)
|
|
alpha = rand(20, 255)
|
|
return..()
|
|
|
|
/datum/material/crystal/starstone
|
|
mat_id = "starstone"
|
|
name = "starstone"
|
|
desc = "An extremely rare jewel."
|
|
color = "#B5E0FF"
|
|
alpha = 80
|
|
quality = 45
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/corrosion { value = 50 }())
|
|
setProperty(new/datum/material_property/scattering { value = 8 }())
|
|
setProperty(new/datum/material_property/reflectivity { value = 8 }())
|
|
setProperty(new/datum/material_property/instability { value = 1 }())
|
|
addDelegate(triggersOnAdd, new /datum/materialProc/gold_add())
|
|
return ..()
|
|
|
|
/datum/material/crystal/ice
|
|
mat_id = "ice"
|
|
name = "ice"
|
|
desc = "The frozen state of water."
|
|
color = "#E8F2FF"
|
|
alpha = 100
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/scattering { value = 20 }())
|
|
setProperty(new/datum/material_property/reflectivity { value = 20 }())
|
|
setProperty(new/datum/material_property/compressive { value = 1 }())
|
|
setProperty(new/datum/material_property/instability { value = 20 }())
|
|
addDelegate(triggersOnLife, new /datum/materialProc/ice_life())
|
|
addDelegate(triggersOnAttack, new /datum/materialProc/slippery_attack())
|
|
addDelegate(triggersOnEntered, new /datum/materialProc/slippery_entered())
|
|
return ..()
|
|
|
|
/datum/material/crystal/wizard
|
|
quality = 50
|
|
alpha = 100
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/hardness { value = 75 }())
|
|
setProperty(new/datum/material_property/toughness { value = 55 }())
|
|
setProperty(new/datum/material_property/energy { value = 20 }())
|
|
setProperty(new/datum/material_property/value { value = 15000 }())
|
|
setProperty(new/datum/material_property/luminosity { value = 3 }())
|
|
return ..()
|
|
|
|
quartz // basically wizard glass
|
|
mat_id = "wiz_quartz"
|
|
name = "enchanted quartz"
|
|
color = "#A3DCFF"
|
|
|
|
topaz
|
|
mat_id = "wiz_topaz"
|
|
name = "enchanted topaz"
|
|
color = "#FFC87C"
|
|
|
|
ruby
|
|
mat_id = "wiz_ruby"
|
|
name = "enchanted ruby"
|
|
color = "#991933"
|
|
|
|
amethyst
|
|
mat_id = "wiz_amethyst"
|
|
name = "enchanted amethyst"
|
|
color = "#9966FF"
|
|
|
|
emerald
|
|
mat_id = "wiz_emerald"
|
|
name = "enchanted emerald"
|
|
color = "#4CCC66"
|
|
|
|
sapphire
|
|
mat_id = "wiz_sapphire"
|
|
name = "enchanted sapphire"
|
|
color = "#1966B3"
|
|
|
|
// Organics
|
|
|
|
/datum/material/organic
|
|
color = "#555555"
|
|
material_flags = MATERIAL_ORGANIC
|
|
alpha = 255
|
|
quality = 0
|
|
|
|
/datum/material/organic/blob
|
|
mat_id = "blob"
|
|
name = "blob"
|
|
desc = "The material of the feared giant space amobea."
|
|
color = "#44cc44"
|
|
material_flags = MATERIAL_ORGANIC | MATERIAL_CRYSTAL | MATERIAL_CLOTH
|
|
alpha = 180
|
|
quality = 2
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/toughness { value = 33 }())
|
|
setProperty(new/datum/material_property/electrical { value = 15 }())
|
|
setProperty(new/datum/material_property/thermal { value = 90 }())
|
|
setProperty(new/datum/material_property/corrosion { value = 40 }())
|
|
setProperty(new/datum/material_property/permeability { value = 85 }())
|
|
setProperty(new/datum/material_property/flammability { value = 85 }())
|
|
setProperty(new/datum/material_property/melting { value = T0C+200 }())
|
|
return ..()
|
|
|
|
|
|
/datum/material/organic/flesh
|
|
mat_id = "flesh"
|
|
name = "flesh"
|
|
desc = "Meat from a carbon-based lifeform."
|
|
color = "#574846"
|
|
material_flags = MATERIAL_ORGANIC | MATERIAL_CLOTH
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/toughness { value = 25 }())
|
|
return ..()
|
|
|
|
butt
|
|
mat_id = "butt"
|
|
name = "butt"
|
|
desc = "...it's butt flesh. Why is this here. Why do you somehow know it's butt flesh. Fuck."
|
|
|
|
/datum/material/organic/char
|
|
mat_id = "char"
|
|
name = "char"
|
|
desc = "Char is a fossil energy source similar to coal."
|
|
color = "#555555"
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/energy { value = 35 }())
|
|
setProperty(new/datum/material_property/hardness { value = 1 }())
|
|
setProperty(new/datum/material_property/tensile { value = 15 }())
|
|
setProperty(new/datum/material_property/compressive { value = 15 }())
|
|
setProperty(new/datum/material_property/shear { value = 15 }())
|
|
return ..()
|
|
|
|
/datum/material/organic/koshmarite
|
|
mat_id = "koshmarite"
|
|
name = "koshmarite"
|
|
desc = "An unusual dense pulsating stone. You feel uneasy just looking at it."
|
|
color = "#600066"
|
|
material_flags = MATERIAL_ORGANIC | MATERIAL_CRYSTAL
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/reflectivity { value = 90 }())
|
|
setProperty(new/datum/material_property/scattering { value = 50 }())
|
|
setProperty(new/datum/material_property/hardness { value = 50 }())
|
|
setProperty(new/datum/material_property/toughness { value = 50 }())
|
|
return ..()
|
|
|
|
/datum/material/organic/viscerite
|
|
mat_id = "viscerite"
|
|
name = "viscerite"
|
|
desc = "A disgusting flesh-like material. Ugh. What the hell is this?"
|
|
color = "#D04FFF"
|
|
material_flags = MATERIAL_ORGANIC | MATERIAL_CLOTH
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/corrosion { value = 60 }())
|
|
setProperty(new/datum/material_property/permeability { value = 60 }())
|
|
setProperty(new/datum/material_property/hardness { value = 5 }())
|
|
setProperty(new/datum/material_property/toughness { value = 15 }())
|
|
return ..()
|
|
|
|
/datum/material/organic/bone
|
|
mat_id = "bone"
|
|
name = "bone"
|
|
desc = "Bone is pretty spooky stuff."
|
|
color = "#DDDDDD"
|
|
material_flags = MATERIAL_ORGANIC // i guess, whatever
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/tensile { value = 40 }())
|
|
setProperty(new/datum/material_property/compressive { value = 40 }())
|
|
setProperty(new/datum/material_property/shear { value = 40 }())
|
|
setProperty(new/datum/material_property/hardness { value = 15 }())
|
|
setProperty(new/datum/material_property/toughness { value = 25 }())
|
|
return ..()
|
|
|
|
/datum/material/organic/chitin
|
|
mat_id = "chitin"
|
|
name = "chitin"
|
|
desc = "Chitin is an organic material found in the exoskeletons of insects."
|
|
color = "#118800"
|
|
material_flags = MATERIAL_ORGANIC // i guess, whatever
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/tensile { value = 45 }())
|
|
setProperty(new/datum/material_property/compressive { value = 45 }())
|
|
setProperty(new/datum/material_property/shear { value = 20 }())
|
|
setProperty(new/datum/material_property/hardness { value = 25 }())
|
|
setProperty(new/datum/material_property/toughness { value = 15 }())
|
|
return ..()
|
|
|
|
/datum/material/organic/beeswax
|
|
mat_id = "beeswax"
|
|
name = "beeswax"
|
|
desc = "An organic material consisting of pollen and space-bee secretions. Mind your own."
|
|
color = "#C8BB62"
|
|
material_flags = MATERIAL_ORGANIC
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/flammability { value = 75 }())
|
|
setProperty(new/datum/material_property/compressive { value = 5 }())
|
|
setProperty(new/datum/material_property/melting { value = T0C + 50 }())
|
|
setProperty(new/datum/material_property/hardness { value = 5 }())
|
|
setProperty(new/datum/material_property/toughness { value = 65 }())
|
|
return ..()
|
|
// Fabrics
|
|
|
|
/datum/material/fabric
|
|
material_flags = MATERIAL_CLOTH
|
|
quality = 5
|
|
|
|
/datum/material/fabric/cloth
|
|
mat_id = "cloth"
|
|
name = "cloth"
|
|
desc = "Generic cloth. Not very special."
|
|
material_flags = MATERIAL_CLOTH
|
|
|
|
/datum/material/fabric/latex
|
|
mat_id = "latex"
|
|
name = "latex"
|
|
desc = "A type of synthetic rubber. Conducts electricity poorly."
|
|
color = "#DDDDDD" //"#FF0000" idgaf ok I want red cables back. no haine, this stuff isnt red.
|
|
material_flags = MATERIAL_RUBBER
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/hardness { value = 1 }())
|
|
setProperty(new/datum/material_property/toughness { value = 25 }())
|
|
setProperty(new/datum/material_property/electrical { value = 20 }())
|
|
return ..()
|
|
|
|
/datum/material/fabric/synthrubber
|
|
mat_id = "synthrubber"
|
|
name = "synthrubber"
|
|
desc = "A type of synthetic rubber. Conducts electricity poorly."
|
|
color = "#FF0000" //But this is red okay.
|
|
material_flags = MATERIAL_RUBBER
|
|
|
|
/datum/material/fabric/cloth/leather
|
|
mat_id = "leather"
|
|
name = "leather"
|
|
desc = "Leather is a flexible material derived from processed animal skins."
|
|
color = "#8A3B11"
|
|
material_flags = MATERIAL_CLOTH
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/hardness { value = 25 }())
|
|
setProperty(new/datum/material_property/toughness { value = 25 }())
|
|
setProperty(new/datum/material_property/tensile { value = 30 }())
|
|
return ..()
|
|
|
|
/datum/material/fabric/cloth/synthleather
|
|
mat_id = "synthleather"
|
|
name = "synthleather"
|
|
desc = "Synthleather is an artificial leather."
|
|
color = "#BB3B11"
|
|
material_flags = MATERIAL_CLOTH
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/hardness { value = 25 }())
|
|
setProperty(new/datum/material_property/toughness { value = 25 }())
|
|
setProperty(new/datum/material_property/tensile { value = 25 }())
|
|
return ..()
|
|
|
|
/datum/material/fabric/cloth/wendigohide
|
|
mat_id = "wendigohide"
|
|
name = "wendigo hide"
|
|
desc = "The hide of a fearsome wendigo!"
|
|
color = "#CCCCCC"
|
|
material_flags = MATERIAL_CLOTH
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/hardness { value = 25 }())
|
|
setProperty(new/datum/material_property/toughness { value = 35 }())
|
|
setProperty(new/datum/material_property/tensile { value = 35 }())
|
|
setProperty(new/datum/material_property/compressive { value = 35 }())
|
|
setProperty(new/datum/material_property/shear { value = 35 }())
|
|
setProperty(new/datum/material_property/thermal { value = 20 }())
|
|
return ..()
|
|
|
|
/datum/material/fabric/cloth/wendigohide/king
|
|
mat_id = "kingwendigohide"
|
|
name = "king wendigo hide"
|
|
desc = "The hide of a terrifying wendigo king!!!"
|
|
color = "#EFEEEE"
|
|
material_flags = MATERIAL_CLOTH
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/hardness { value = 65 }())
|
|
setProperty(new/datum/material_property/toughness { value = 65 }())
|
|
setProperty(new/datum/material_property/tensile { value = 65 }())
|
|
setProperty(new/datum/material_property/compressive { value = 65 }())
|
|
setProperty(new/datum/material_property/shear { value = 65 }())
|
|
setProperty(new/datum/material_property/thermal { value = 10 }())
|
|
setProperty(new/datum/material_property/flammability { value = 1 }())
|
|
setProperty(new/datum/material_property/melting { value = T0C + 4000 }())
|
|
return ..()
|
|
|
|
/datum/material/fabric/cloth/cotton
|
|
mat_id = "cotton"
|
|
name = "cotton"
|
|
desc = "Cotton is a soft and fluffy material obtained from certain plants."
|
|
color = "#FFFFFF"
|
|
material_flags = MATERIAL_CLOTH
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/hardness { value = 1 }())
|
|
setProperty(new/datum/material_property/toughness { value = 20 }())
|
|
setProperty(new/datum/material_property/shear { value = 15 }())
|
|
setProperty(new/datum/material_property/thermal { value = 20 }())
|
|
setProperty(new/datum/material_property/flammability { value = 85 }())
|
|
setProperty(new/datum/material_property/melting { value = T0C + 300 }())
|
|
return ..()
|
|
|
|
/datum/material/fabric/cloth/fibrilith
|
|
mat_id = "fibrilith"
|
|
name = "fibrilith"
|
|
desc = "Fibrilith is an odd fibrous crystal known for its high tensile strength. Seems a bit similar to asbestos."
|
|
color = "#E0FFF6"
|
|
material_flags = MATERIAL_CLOTH | MATERIAL_CRYSTAL
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/hardness { value = 50 }())
|
|
setProperty(new/datum/material_property/toughness { value = 45 }())
|
|
setProperty(new/datum/material_property/tensile { value = 70 }())
|
|
setProperty(new/datum/material_property/thermal { value = 20 }())
|
|
setProperty(new/datum/material_property/flammability { value = 5 }())
|
|
return ..()
|
|
|
|
New()
|
|
addDelegate(triggersOnLife, new /datum/materialProc/generic_itchy_onlife())
|
|
return ..()
|
|
|
|
/datum/material/fabric/cloth/spidersilk
|
|
mat_id = "spidersilk"
|
|
name = "spider silk"
|
|
desc = "Spider silk is a protein fiber spun by space spiders."
|
|
color = "#CCCCCC"
|
|
material_flags = MATERIAL_CLOTH
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/hardness { value = 33 }())
|
|
setProperty(new/datum/material_property/tensile { value = 15 }())
|
|
setProperty(new/datum/material_property/compressive { value = 15 }())
|
|
setProperty(new/datum/material_property/shear { value = 70 }())
|
|
setProperty(new/datum/material_property/thermal { value = 35 }())
|
|
return ..()
|
|
|
|
/datum/material/fabric/cloth/carbonfibre
|
|
mat_id = "carbonfibre"
|
|
name = "carbon nanofiber"
|
|
desc = "Carbon Nanofibers are highly graphitic carbon nanomaterials with excellent mechanical properties, electrical conductivity and thermal conductivity."
|
|
color = "#333333"
|
|
material_flags = MATERIAL_CLOTH
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/hardness { value = 40 }())
|
|
setProperty(new/datum/material_property/toughness { value = 40 }())
|
|
setProperty(new/datum/material_property/tensile { value = 40 }())
|
|
setProperty(new/datum/material_property/compressive { value = 40 }())
|
|
setProperty(new/datum/material_property/shear { value = 40 }())
|
|
setProperty(new/datum/material_property/electrical { value = 20 }())
|
|
setProperty(new/datum/material_property/thermal { value = 75 }())
|
|
return ..()
|
|
|
|
/datum/material/fabric/cloth/ectofibre
|
|
mat_id = "ectofibre"
|
|
name = "ectofibre"
|
|
desc = "Ectoplasmic fibres. Sort of transparent. Seems to be rather strong yet flexible."
|
|
color = "#ffffff"
|
|
material_flags = MATERIAL_CLOTH | MATERIAL_ENERGY | MATERIAL_CRYSTAL
|
|
alpha = 128
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/hardness { value = 15 }())
|
|
setProperty(new/datum/material_property/toughness { value = 65 }())
|
|
setProperty(new/datum/material_property/shear { value = 20 }())
|
|
setProperty(new/datum/material_property/electrical { value = 20 }())
|
|
setProperty(new/datum/material_property/corrosion { value = 35 }())
|
|
addDelegate(triggersOnLife, new /datum/materialProc/generic_itchy_onlife())
|
|
return ..()
|
|
|
|
/datum/material/fabric/cloth/dyneema
|
|
mat_id = "dyneema"
|
|
name = "dyneema"
|
|
desc = "A blend of carbon nanofibres and space spider silk. Highly versatile."
|
|
color = "#333333"
|
|
material_flags = MATERIAL_CLOTH
|
|
|
|
New()
|
|
setProperty(new/datum/material_property/hardness { value = 15 }())
|
|
setProperty(new/datum/material_property/compressive { value = 75 }())
|
|
setProperty(new/datum/material_property/corrosion { value = 25 }())
|
|
return ..()
|
|
// TODO: THESE
|
|
/*
|
|
/datum/material/wax
|
|
|
|
/datum/material/plastic
|
|
|
|
/datum/material/cardboard
|
|
|
|
*/
|
|
|