3d_armor/technic_armor/init.lua

72 lines
2.8 KiB
Lua
Raw Normal View History

if not minetest.get_modpath("technic_worldgen") then
minetest.log("warning", "technic_armor: Mod loaded but unused.")
return
end
2017-03-31 20:54:12 +02:00
local S = function(s) return s end
if minetest.global_exists("intllib") then
if intllib.make_gettext_pair then
-- New method using gettext.
S = intllib.make_gettext_pair()
else
-- Old method using text files.
S = intllib.Getter()
end
2017-03-31 20:54:12 +02:00
end
2016-04-10 16:56:33 +02:00
local stats = {
2017-03-31 20:54:12 +02:00
lead = { name=S("Lead"), material="technic:lead_ingot", armor=1.6, heal=0, use=500, radiation=80*1.1 },
brass = { name=S("Brass"), material="technic:brass_ingot", armor=1.8, heal=0, use=650, radiation=43 },
cast = { name=S("Cast Iron"), material="technic:cast_iron_ingot", armor=2.5, heal=8, use=200, radiation=40 },
carbon = { name=S("Carbon Steel"), material="technic:carbon_steel_ingot", armor=2.7, heal=10, use=100, radiation=40 },
stainless = { name=S("Stainless Steel"), material="technic:stainless_steel_ingot", armor=2.7, heal=10, use=75, radiation=40 },
2016-04-10 16:56:33 +02:00
}
if minetest.get_modpath("moreores") then
2017-03-31 20:54:12 +02:00
stats.tin = { name=S("Tin"), material="moreores:tin_ingot", armor=1.6, heal=0, use=750, radiation=37 }
stats.silver = { name=S("Silver"), material="moreores:silver_ingot", armor=1.8, heal=6, use=650, radiation=53 }
2016-04-10 16:56:33 +02:00
end
local parts = {
2017-03-31 20:54:12 +02:00
helmet = { place="head", name=S("Helmet"), level=5, radlevel = 0.10, craft={{1,1,1},{1,0,1}} },
chestplate = { place="torso", name=S("Chestplate"), level=8, radlevel = 0.35, craft={{1,0,1},{1,1,1},{1,1,1}} },
leggings = { place="legs", name=S("Leggings"), level=7, radlevel = 0.15, craft={{1,1,1},{1,0,1},{1,0,1}} },
boots = { place="feet", name=S("Boots"), level=4, radlevel = 0.10, craft={{1,0,1},{1,0,1}} },
2016-04-10 16:56:33 +02:00
}
if minetest.get_modpath("shields") then
2017-03-31 20:54:12 +02:00
parts.shield = { place="shield", name=S("Shield"), level=5, radlevel=0.00, craft={{1,1,1},{1,1,1},{0,1,0}} }
2016-04-10 16:56:33 +02:00
end
-- Makes a craft recipe based on a template
-- template is a recipe-like table but indices are used instead of actual item names:
-- 0 means nothing, everything else is treated as an index in the materials table
local function make_recipe(template, materials)
local recipe = {}
for j, trow in ipairs(template) do
local rrow = {}
for i, tcell in ipairs(trow) do
if tcell == 0 then
rrow[i] = ""
else
rrow[i] = materials[tcell]
end
end
recipe[j] = rrow
2015-05-04 19:42:46 +02:00
end
2016-04-10 16:56:33 +02:00
return recipe
end
2015-05-04 19:42:46 +02:00
2016-04-10 16:56:33 +02:00
for key, armor in pairs(stats) do
for partkey, part in pairs(parts) do
local partname = "technic_armor:"..partkey.."_"..key
minetest.register_tool(partname, {
description = armor.name.." "..part.name,
inventory_image = "technic_armor_inv_"..partkey.."_"..key..".png",
groups = {["armor_"..part.place]=math.floor(part.level*armor.armor), armor_heal=armor.heal, armor_use=armor.use, armor_radiation=math.floor(part.radlevel*armor.radiation)},
2015-05-04 19:42:46 +02:00
wear = 0,
})
minetest.register_craft({
2016-04-10 16:56:33 +02:00
output = partname,
recipe = make_recipe(part.craft, {armor.material}),
2015-05-04 19:42:46 +02:00
})
end
end