Files
2020-02-16 19:40:21 -08:00

177 lines
4.8 KiB
Plaintext

/*
-- D E F S --
vars:
nuke_compat: 1 to mark reagent as suitable for nuclear reactor input. all reagents in this file should set this
fissile: 1 if reagent emits particle radition suitable for fission-type reactions. "is it nuclear fuel"
part_type: emission particle type. currently only 'neutron' is valid
epv: emissivity per volume unit -- rate at which particles emit per mass (err, "vol") unit
hpe: heat generated per emission -- rate at which heat is generated per scalar emission amount
absorb: percentage of incoming particle flux absorbed -- 1.0 = perfect particle shield, 0 = vaccum
k_factor: criticality factor, rate at which new particles are generated/emitted per particle absorbtion. "The six factor formula effective neutron multiplication factor"
products: list of byproducts created when parent reagent undergoes fission. requires products_r
products_r: percentage at which the above byproducts are created. 1-to-1, must match index of above. requires products
*/
datum
material
fissile
var
nuke_compat = 1
fissile = 0
part_type = "neutron"
epv = 0
hpe = 0
absorb = 0.0
k_factor = 0
datum
material
fissile
u238
name = "uranium-238"
mat_id = "u-238"
desc = "A slightly radioactive heavy metal not suitable for nuclear fission. This is the unenriched byproduct form."
color = "#1E461E"
alpha = 255
material_flags = MATERIAL_METAL
nuke_compat = 1
fissile = 1
part_type = "neutron"
epv = 0.1
hpe = 20
absorb = 0.90
k_factor = 0.3
New()
setProperty("density", 75)
setProperty("fissile", 10)
setProperty("radioactive", 25)
setProperty("hard", 50)
setProperty("thermal", 50)
setProperty("stability", 80)
u235
name = "uranium-235"
mat_id = "u-235"
desc = "A radioactive dull silver-green heavy metal. This is the enriched form suitable for use as nuclear fuel."
color = "#286428"
alpha = 255
material_flags = MATERIAL_METAL | MATERIAL_ENERGY
nuke_compat = 1
fissile = 1
part_type = "neutron"
epv = 5
hpe = 20
absorb = 0.80
k_factor = 3.0
New()
setProperty("density", 75)
setProperty("fissile", 75)
setProperty("radioactive", 55)
setProperty("hard", 40)
setProperty("thermal", 45)
setProperty("stability", 20)
pu239
name = "plutonium-239"
mat_id = "pu-239"
desc = "A highly radioactive dull silver-blue heavy metal. This is the enriched form suitable for use as nuclear fuel."
color = "#282864"
alpha = 255
material_flags = MATERIAL_METAL | MATERIAL_ENERGY
nuke_compat = 1
fissile = 1
part_type = "neutron"
epv = 7
hpe = 30
absorb = 0.85
k_factor = 5.0
New()
setProperty("density", 85)
setProperty("radioactive", 65)
setProperty("fissile", 85)
setProperty("hard", 40)
setProperty("thermal", 40)
setProperty("stability", 20)
kremfuel
name = "kremlinium"
mat_id = "kmetal"
desc = "debug metal"
color = "#DEDEFF"
alpha = 255
material_flags = MATERIAL_METAL | MATERIAL_ENERGY
nuke_compat = 1
fissile = 1
part_type = "neutron"
epv = 400
hpe = 400
absorb = 1.0
k_factor = 20.0
New()
setProperty("density", 90)
setProperty("radioactive", 100)
setProperty("fissile", 100)
setProperty("hard", 50)
setProperty("thermal", 80)
setProperty("stability", 5)
/obj/item/material_piece/u235_o
desc = "dev ore u235"
default_material = "u-235"
/obj/item/material_piece/p239_o
desc = "dev ore p239"
default_material = "pu-239"
/obj/item/material_piece/kremfuel_o
desc = "dev ore kremfuel"
default_material = "kmetal"
/* -- P R O C S -- */
/proc/merge_mat_nuke(var/datum/material/Out, var/datum/material/fissile/FP, var/datum/material/fissile/SP) {
var/datum/material/fissile/Ret = copyMaterialNuke(Out)
DEBUG_MESSAGE_VARDBG("asdf_pre", Ret)
Ret.epv = (FP.epv + SP.epv) * 0.5
Ret.hpe = (FP.hpe + SP.hpe) * 0.5
Ret.absorb = (FP.absorb + SP.absorb) * 0.5
Ret.k_factor = (FP.k_factor + SP.k_factor) * 0.5
DEBUG_MESSAGE_VARDBG("asdf", Ret)
return Ret
}
/proc/copyMaterialNuke(var/datum/material/base)
if(!base || !istype(base, /datum/material))
var/datum/material/fissile/M = new/datum/material/fissile()
return M
else
var/datum/material/fissile/M = new/datum/material/fissile()
M.properties = mergeProperties(base.properties)
for(var/X in base.vars)
if(X == "type" || X == "parent_type" || X == "tag" || X == "vars" || X == "properties") continue
if(X in triggerVars)
M.vars[X] = getFusedTriggers(base.vars[X], list()) //Pass in an empty list to basically copy the first one.
else
if(M.vars.Find(X))
if(istype(base.vars[X],/list))
var/list/oldList = base.vars[X]
M.vars[X] = oldList.Copy()
else
M.vars[X] = base.vars[X]
return M
return null