mirror of
https://github.com/goonstation/goonstation-2020.git
synced 2026-07-14 16:42:53 +01:00
177 lines
4.8 KiB
Plaintext
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 |