summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZefram <zefram@fysh.org>2014-07-27 02:48:08 +0100
committerZefram <zefram@fysh.org>2014-07-28 13:18:51 +0100
commitb0faa708739280d435de149d753a26c9cc45f16f (patch)
treef696faa2c69410612f523d2d83ae99a5829756c2
parentd60e3fe9399dc57aa901e301c0d8e8aa022565d8 (diff)
Uranium enrichment via centrifuge
Replacing the extractor-based system, uranium to be used as reactor fuel must now be enriched in stages using the centrifuge. Uranium metal can exist at 36 levels of fissile content, from 0.0% to 3.5% in steps of 0.1%. One round of centrifuging splits two dust of a particular grade in to one dust each of the two neighbouring grades. Uranium of each grade can exist as dust, ingot, and block, with all the regular metal processes to convert between them. Uranium from ore exists in lump form, and is 0.7% fissle. The blocks are radioactive to a degree dependent on fissile content. Thus the chemical refinement and processing of uranium now follows the standard pattern for metals, and is orthogonal to isotopic enrichment. Each form of uranium (dust, ingot, block) intentionally looks identical regardless of fissile grade. If technic_worldgen is used alone, it defines only one grade of uranium (as before), but defines it in the regular metal pattern, with lump, ingot produced by cooking lump, and block crafted from ingots. It identifies the metal only as "uranium". The multiple grades of uranium are defined by the technic mod, which identifies each grade as "N.N%-fissile uranium". The single grade that was registered by technic_worldgen is redefined to be described specifically as "0.7%-fissile uranium". For the redefinition to work, technic_worldgen must load before technic, so technic now declares a dependency on technic_worldgen. Each fuel rod is made from five 3.5%-fissile ingots, each of which in turn requires one to start with five 0.7%-fissile dust, so each fuel rod is now derived from 12.5 uranium lumps (or 25 if the lumps were first cooked rather than being ground). This replaces the 20 lumps required by the former recipes. After setting up and priming the centrifuge cascade, enriching a full set of fuel for the reactor (six fuel rods) takes 14700 centrifuge operations. It's intended to be a practical necessity to automate the centrifuge. In the absence of EU upgrades for the centrifuges, these operations consume 5.88e8 EU, about 0.97% of the 6.048e10 EU that the fuel set will produce in the reactor. The intent is that, in this respect as in others, operating a reactor should carry a very high up-front cost, but ultimately be very profitable.
-rw-r--r--technic/depends.txt1
-rw-r--r--technic/items.lua39
-rw-r--r--technic/legacy.lua1
-rw-r--r--technic/locale/de.txt3
-rw-r--r--technic/locale/es.txt3
-rw-r--r--technic/locale/it.txt3
-rw-r--r--technic/locale/template.txt3
-rw-r--r--technic/machines/HV/nuclear_reactor.lua2
-rw-r--r--technic/machines/register/centrifuge_recipes.lua15
-rw-r--r--technic/machines/register/compressor_recipes.lua2
-rw-r--r--technic/machines/register/extractor_recipes.lua3
-rw-r--r--technic/machines/register/grinder_recipes.lua36
-rw-r--r--technic/textures/technic_enriched_uranium.pngbin301 -> 0 bytes
-rw-r--r--technic/textures/technic_uranium_dust.pngbin0 -> 229 bytes
-rw-r--r--technic/textures/technicx32/technic_uranium_dust.pngbin0 -> 1112 bytes
-rw-r--r--technic_worldgen/crafts.lua22
-rw-r--r--technic_worldgen/locale/de.txt3
-rw-r--r--technic_worldgen/locale/template.txt3
-rw-r--r--technic_worldgen/nodes.lua4
-rw-r--r--technic_worldgen/textures/technic_uranium_ingot.pngbin0 -> 300 bytes
-rw-r--r--technic_worldgen/textures/technic_uranium_lump.png (renamed from technic_worldgen/textures/technic_uranium.png)bin352 -> 352 bytes
21 files changed, 125 insertions, 18 deletions
diff --git a/technic/depends.txt b/technic/depends.txt
index eec4a14..c2671c5 100644
--- a/technic/depends.txt
+++ b/technic/depends.txt
@@ -1,5 +1,6 @@
default
pipeworks
+technic_worldgen
bucket?
mesecons_mvps?
intllib?
diff --git a/technic/items.lua b/technic/items.lua
index a902947..b974b95 100644
--- a/technic/items.lua
+++ b/technic/items.lua
@@ -11,11 +11,6 @@ minetest.register_craftitem( "technic:doped_silicon_wafer", {
inventory_image = "technic_doped_silicon_wafer.png",
})
-minetest.register_craftitem("technic:enriched_uranium", {
- description = S("Enriched Uranium"),
- inventory_image = "technic_enriched_uranium.png",
-})
-
minetest.register_craftitem("technic:uranium_fuel", {
description = S("Uranium Fuel"),
inventory_image = "technic_uranium_fuel.png",
@@ -163,3 +158,37 @@ minetest.register_node("technic:machine_casing", {
tiles = {"technic_machine_casing.png"},
sounds = default.node_sound_stone_defaults(),
})
+
+for p = 0, 35 do
+ local nici = (p ~= 0 and p ~= 7 and p ~= 35) and 1 or nil
+ local psuffix = p == 7 and "" or p
+ local ingot = "technic:uranium"..psuffix.."_ingot"
+ local block = "technic:uranium"..psuffix.."_block"
+ local ov = p == 7 and minetest.override_item or nil;
+ (ov or minetest.register_craftitem)(ingot, {
+ description = string.format(S("%.1f%%-Fissile Uranium Ingot"), p/10),
+ inventory_image = "technic_uranium_ingot.png",
+ groups = {uranium_ingot=1, not_in_creative_inventory=nici},
+ });
+ (ov or minetest.register_node)(block, {
+ description = string.format(S("%.1f%%-Fissile Uranium Block"), p/10),
+ tiles = {"technic_uranium_block.png"},
+ is_ground_content = true,
+ groups = {uranium_block=1, not_in_creative_inventory=nici, cracky=1, level=2, radioactive=math.floor(math.sqrt(p) + 0.5)},
+ sounds = default.node_sound_stone_defaults(),
+ });
+ if not ov then
+ minetest.register_craft({
+ output = block,
+ recipe = {
+ {ingot, ingot, ingot},
+ {ingot, ingot, ingot},
+ {ingot, ingot, ingot},
+ },
+ })
+ minetest.register_craft({
+ output = ingot.." 9",
+ recipe = {{block}},
+ })
+ end
+end
diff --git a/technic/legacy.lua b/technic/legacy.lua
index c835937..8360a71 100644
--- a/technic/legacy.lua
+++ b/technic/legacy.lua
@@ -29,6 +29,7 @@ technic.legacy_nodenames = {
["technic:generator"] = "technic:lv_generator",
["technic:generator_active"] = "technic:lv_generator_active",
["technic:iron_dust"] = "technic:wrought_iron_dust",
+ ["technic:enriched_uranium"] = "technic:uranium35_ingot",
}
for old, new in pairs(technic.legacy_nodenames) do
diff --git a/technic/locale/de.txt b/technic/locale/de.txt
index 984296b..1a1e82a 100644
--- a/technic/locale/de.txt
+++ b/technic/locale/de.txt
@@ -29,6 +29,8 @@ Graphite = Graphit
Carbon Cloth = Kohlefasergewebe
Raw Latex = Rohlatex
Rubber Fiber = Gummifaser
+%.1f%%-Fissile Uranium Ingot =
+%.1f%%-Fissile Uranium Block =
## Machine misc
Machine cannot be removed because it is not empty = Die Maschine kann nicht entfernt werden, weil sie noch nicht leer ist.
@@ -162,6 +164,7 @@ Talinite = Talinite
Tin = Zinn
Wrought Iron = Schmiedeeisen
Zinc = Zink
+%.1f%%-Fissile Uranium =
## Tools
RE Battery = Akkubatterie
diff --git a/technic/locale/es.txt b/technic/locale/es.txt
index 2323abc..9d58ebd 100644
--- a/technic/locale/es.txt
+++ b/technic/locale/es.txt
@@ -29,6 +29,8 @@ Graphite = Grafito
Carbon Cloth = Tela de Carbon
Raw Latex = Latex Crudo
Rubber Fiber = Fibra de Hule
+%.1f%%-Fissile Uranium Ingot =
+%.1f%%-Fissile Uranium Block =
## Machine misc
Machine cannot be removed because it is not empty = La maquina no puede removerse porque no esta vacia
@@ -152,6 +154,7 @@ Talinite = Talinita
Tin = Estanio
Wrought Iron = Hierro Forjado
Zinc = Zinc
+%.1f%%-Fissile Uranium =
## Tools
RE Battery =
diff --git a/technic/locale/it.txt b/technic/locale/it.txt
index 70da24e..234a858 100644
--- a/technic/locale/it.txt
+++ b/technic/locale/it.txt
@@ -26,6 +26,8 @@ Graphite = Lastra in graffite
Carbon Cloth = Fibra di carbonio
Raw Latex = Latex grezzo
Rubber Fiber = Fibra di gomma
+%.1f%%-Fissile Uranium Ingot =
+%.1f%%-Fissile Uranium Block =
## Machine misc
Machine cannot be removed because it is not empty = La macchina non può essere rimossa perchè non è vuota
@@ -159,6 +161,7 @@ Talinite = Talinite
Tin = Stagno
Wrought Iron = Ferro Battuto
Zinc = Zinco
+%.1f%%-Fissile Uranium =
## Tools
RE Battery =
diff --git a/technic/locale/template.txt b/technic/locale/template.txt
index 3d18f3b..0d47974 100644
--- a/technic/locale/template.txt
+++ b/technic/locale/template.txt
@@ -29,6 +29,8 @@ Graphite =
Carbon Cloth =
Raw Latex =
Rubber Fiber =
+%.1f%%-Fissile Uranium Ingot =
+%.1f%%-Fissile Uranium Block =
## Machine misc
Machine cannot be removed because it is not empty =
@@ -167,6 +169,7 @@ Talinite =
Tin =
Wrought Iron =
Zinc =
+%.1f%%-Fissile Uranium =
## Tools
RE Battery =
diff --git a/technic/machines/HV/nuclear_reactor.lua b/technic/machines/HV/nuclear_reactor.lua
index e5d7a1b..c4587bb 100644
--- a/technic/machines/HV/nuclear_reactor.lua
+++ b/technic/machines/HV/nuclear_reactor.lua
@@ -493,7 +493,6 @@ local default_radiation_resistance_per_node = {
["technic:mineral_uranium"] = 71,
["technic:mineral_zinc"] = 19,
["technic:stainless_steel_block"] = 40,
- ["technic:uranium_block"] = 500,
["technic:zinc_block"] = 36,
["tnt:tnt"] = 11,
["tnt:tnt_burning"] = 11,
@@ -501,6 +500,7 @@ local default_radiation_resistance_per_node = {
local default_radiation_resistance_per_group = {
concrete = 16,
tree = 3.4,
+ uranium_block = 500,
wood = 1.7,
}
local cache_radiation_resistance = {}
diff --git a/technic/machines/register/centrifuge_recipes.lua b/technic/machines/register/centrifuge_recipes.lua
index 0f33c66..7f252b6 100644
--- a/technic/machines/register/centrifuge_recipes.lua
+++ b/technic/machines/register/centrifuge_recipes.lua
@@ -20,6 +20,21 @@ local recipes = {
{ "moretrees:rubber_tree_trunk", rubber_tree_planks.." 4", "technic:raw_latex" },
}
+-- Refining uranium via centrifuge is intended to make it a practical
+-- necessity to set up an automated cascade of centrifuges. Once the
+-- cascade has been primed, production of one 3.5%-fissile dust requires
+-- input of five 0.7%-fissile dust and 490 centrifuge operations, and
+-- produces four 0.0%-fissile dust as a byproduct. The busiest stage
+-- of the cascade is the one taking 0.7%-fissile dust, which performs 28
+-- of the 490 operations. The least busy is the one taking 3.4%-fissile
+-- dust, which performs 1 of the 490 operations.
+local function uranium_dust(p)
+ return "technic:uranium"..(p == 7 and "" or p).."_dust"
+end
+for p = 1, 34 do
+ table.insert(recipes, { uranium_dust(p).." 2", uranium_dust(p-1), uranium_dust(p+1) })
+end
+
if minetest.get_modpath("bushes_classic") then
for _, berry in ipairs({ "blackberry", "blueberry", "gooseberry", "raspberry", "strawberry" }) do
table.insert(recipes, { "bushes:"..berry.."_bush", "default:stick 20", "bushes:"..berry.." 4" })
diff --git a/technic/machines/register/compressor_recipes.lua b/technic/machines/register/compressor_recipes.lua
index 5c5fe91..4fba03b 100644
--- a/technic/machines/register/compressor_recipes.lua
+++ b/technic/machines/register/compressor_recipes.lua
@@ -15,7 +15,7 @@ local recipes = {
{"default:copper_ingot 5", "technic:copper_plate"},
{"technic:coal_dust 4", "technic:graphite"},
{"technic:carbon_cloth", "technic:carbon_plate"},
- {"technic:enriched_uranium 4", "technic:uranium_fuel"},
+ {"technic:uranium35_ingot 5", "technic:uranium_fuel"},
}
for _, data in pairs(recipes) do
diff --git a/technic/machines/register/extractor_recipes.lua b/technic/machines/register/extractor_recipes.lua
index 41cf56d..f752144 100644
--- a/technic/machines/register/extractor_recipes.lua
+++ b/technic/machines/register/extractor_recipes.lua
@@ -24,9 +24,6 @@ local recipes = {
{"technic:raw_latex", "technic:rubber 3"},
{"moretrees:rubber_tree_trunk_empty", "technic:rubber"},
{"moretrees:rubber_tree_trunk", "technic:rubber"},
-
- -- Other
- {"technic:uranium 5", "technic:enriched_uranium"},
}
for _, data in pairs(recipes) do
diff --git a/technic/machines/register/grinder_recipes.lua b/technic/machines/register/grinder_recipes.lua
index df69665..6ab19e7 100644
--- a/technic/machines/register/grinder_recipes.lua
+++ b/technic/machines/register/grinder_recipes.lua
@@ -16,6 +16,7 @@ local recipes = {
{"default:gold_lump", "technic:gold_dust 2"},
{"default:iron_lump", "technic:wrought_iron_dust 2"},
{"technic:chromium_lump", "technic:chromium_dust 2"},
+ {"technic:uranium_lump", "technic:uranium_dust 2"},
{"technic:zinc_lump", "technic:zinc_dust 2"},
-- Other
@@ -87,6 +88,41 @@ if minetest.get_modpath("gloopores") or minetest.get_modpath("glooptest") then
register_dust("Talinite", "glooptest:talinite_ingot")
end
+for p = 0, 35 do
+ local nici = (p ~= 0 and p ~= 7 and p ~= 35) and 1 or nil
+ local psuffix = p == 7 and "" or p
+ local ingot = "technic:uranium"..psuffix.."_ingot"
+ local dust = "technic:uranium"..psuffix.."_dust"
+ minetest.register_craftitem(dust, {
+ description = S("%s Dust"):format(string.format(S("%.1f%%-Fissile Uranium"), p/10)),
+ inventory_image = "technic_uranium_dust.png",
+ on_place_on_ground = minetest.craftitem_place_item,
+ groups = {uranium_dust=1, not_in_creative_inventory=nici},
+ })
+ minetest.register_craft({
+ type = "cooking",
+ recipe = dust,
+ output = ingot,
+ })
+ technic.register_grinder_recipe({ input = {ingot}, output = dust })
+end
+
+local function uranium_dust(p)
+ return "technic:uranium"..(p == 7 and "" or p).."_dust"
+end
+for pa = 0, 34 do
+ for pb = pa+1, 35 do
+ local pc = (pa+pb)/2
+ if pc == math.floor(pc) then
+ minetest.register_craft({
+ type = "shapeless",
+ recipe = { uranium_dust(pa), uranium_dust(pb) },
+ output = uranium_dust(pc).." 2",
+ })
+ end
+ end
+end
+
minetest.register_craft({
type = "fuel",
recipe = "technic:coal_dust",
diff --git a/technic/textures/technic_enriched_uranium.png b/technic/textures/technic_enriched_uranium.png
deleted file mode 100644
index 8759e65..0000000
--- a/technic/textures/technic_enriched_uranium.png
+++ /dev/null
Binary files differ
diff --git a/technic/textures/technic_uranium_dust.png b/technic/textures/technic_uranium_dust.png
new file mode 100644
index 0000000..9c211dc
--- /dev/null
+++ b/technic/textures/technic_uranium_dust.png
Binary files differ
diff --git a/technic/textures/technicx32/technic_uranium_dust.png b/technic/textures/technicx32/technic_uranium_dust.png
new file mode 100644
index 0000000..d8095c3
--- /dev/null
+++ b/technic/textures/technicx32/technic_uranium_dust.png
Binary files differ
diff --git a/technic_worldgen/crafts.lua b/technic_worldgen/crafts.lua
index 759d8ed..3965258 100644
--- a/technic_worldgen/crafts.lua
+++ b/technic_worldgen/crafts.lua
@@ -1,11 +1,19 @@
local S = technic.worldgen.gettext
-minetest.register_craftitem(":technic:uranium", {
- description = S("Uranium"),
- inventory_image = "technic_uranium.png",
+minetest.register_craftitem(":technic:uranium_lump", {
+ description = S("Uranium Lump"),
+ inventory_image = "technic_uranium_lump.png",
on_place_on_ground = minetest.craftitem_place_item,
})
+minetest.register_alias("technic:uranium", "technic:uranium_lump")
+
+minetest.register_craftitem(":technic:uranium_ingot", {
+ description = S("Uranium Ingot"),
+ inventory_image = "technic_uranium_ingot.png",
+ on_place_on_ground = minetest.craftitem_place_item,
+ groups = {uranium_ingot=1},
+})
minetest.register_craftitem(":technic:chromium_lump", {
description = S("Chromium Lump"),
@@ -74,7 +82,7 @@ local function register_block(block, ingot)
})
end
-register_block("technic:uranium_block", "technic:uranium")
+register_block("technic:uranium_block", "technic:uranium_ingot")
register_block("technic:chromium_block", "technic:chromium_ingot")
register_block("technic:zinc_block", "technic:zinc_ingot")
register_block("technic:brass_block", "technic:brass_ingot")
@@ -96,6 +104,12 @@ minetest.register_craft({
minetest.register_craft({
type = 'cooking',
+ recipe = "technic:uranium_lump",
+ output = "technic:uranium_ingot",
+})
+
+minetest.register_craft({
+ type = 'cooking',
recipe = minetest.registered_aliases["technic:wrought_iron_ingot"],
output = "technic:cast_iron_ingot",
})
diff --git a/technic_worldgen/locale/de.txt b/technic_worldgen/locale/de.txt
index 1dacb41..401c94c 100644
--- a/technic_worldgen/locale/de.txt
+++ b/technic_worldgen/locale/de.txt
@@ -3,7 +3,8 @@
# by Xanthin
## crafts.lua
-Uranium = Uran
+Uranium Lump = Uranklumpen
+Uranium Ingot = Uranbarren
Chromium Lump = Chromklumpen
Chromium Ingot = Chrombarren
Zinc Lump = Zinkklumpen
diff --git a/technic_worldgen/locale/template.txt b/technic_worldgen/locale/template.txt
index a4a6e4d..594e0ce 100644
--- a/technic_worldgen/locale/template.txt
+++ b/technic_worldgen/locale/template.txt
@@ -2,7 +2,8 @@
# technic_worldgen translation template
###crafts.lua
-Uranium =
+Uranium Lump =
+Uranium Ingot =
Chromium Lump =
Chromium Ingot =
Zinc Lump =
diff --git a/technic_worldgen/nodes.lua b/technic_worldgen/nodes.lua
index 29ea5fb..20cf159 100644
--- a/technic_worldgen/nodes.lua
+++ b/technic_worldgen/nodes.lua
@@ -7,7 +7,7 @@ minetest.register_node( ":technic:mineral_uranium", {
is_ground_content = true,
groups = {cracky=3, radioactive=1},
sounds = default.node_sound_stone_defaults(),
- drop = 'craft "technic:uranium" 1',
+ drop = 'craft "technic:uranium_lump" 1',
})
minetest.register_node( ":technic:mineral_chromium", {
@@ -56,7 +56,7 @@ minetest.register_node(":technic:uranium_block", {
description = S("Uranium Block"),
tiles = { "technic_uranium_block.png" },
is_ground_content = true,
- groups = {cracky=1, level=2, radioactive=3},
+ groups = {uranium_block=1, cracky=1, level=2, radioactive=3},
sounds = default.node_sound_stone_defaults()
})
diff --git a/technic_worldgen/textures/technic_uranium_ingot.png b/technic_worldgen/textures/technic_uranium_ingot.png
new file mode 100644
index 0000000..38978f8
--- /dev/null
+++ b/technic_worldgen/textures/technic_uranium_ingot.png
Binary files differ
diff --git a/technic_worldgen/textures/technic_uranium.png b/technic_worldgen/textures/technic_uranium_lump.png
index 2f5a66c..2f5a66c 100644
--- a/technic_worldgen/textures/technic_uranium.png
+++ b/technic_worldgen/textures/technic_uranium_lump.png
Binary files differ