EinsDreiDreiSieben/mods/technic_armor/init.lua
2025-07-26 16:19:03 +02:00

151 lines
3.1 KiB
Lua

-- Use 3d_armor translator to take advantage of existing translations for armor parts
local S = minetest.get_translator("3d_armor")
local materials = {}
if minetest.get_modpath("technic_worldgen") then
materials.lead = {
name = S("Lead"),
craft_item = "technic:lead_ingot",
armor = 1.6,
heal = 0,
use = 500,
radiation = 88,
}
materials.brass = {
name = S("Brass"),
craft_item = "technic:brass_ingot",
armor = 1.8,
heal = 0,
use = 650,
radiation = 43,
}
materials.cast = {
name = S("Cast Iron"),
craft_item = "technic:cast_iron_ingot",
armor = 2.5,
heal = 8,
use = 200,
radiation = 40,
}
materials.carbon = {
name = S("Carbon Steel"),
craft_item = "technic:carbon_steel_ingot",
armor = 2.7,
heal = 10,
use = 100,
radiation = 40,
}
materials.stainless = {
name = S("Stainless Steel"),
craft_item = "technic:stainless_steel_ingot",
armor = 2.7,
heal = 10,
use = 75,
radiation = 40,
}
end
if minetest.get_modpath("moreores") then
materials.silver = {
name = S("Silver"),
craft_item = "moreores:silver_ingot",
armor = 1.8,
heal = 6,
use = 650,
radiation = 53,
}
end
if minetest.get_modpath("default") then
materials.tin = {
name = S("Tin"),
craft_item = "default:tin_ingot",
armor = 1.6,
heal = 0,
use = 750,
radiation = 37,
}
end
local parts = {
helmet = {
name = S("Helmet"),
place = "head",
level = 5,
radlevel = 0.10,
craft = { { 1, 1, 1 }, { 1, 0, 1 } },
},
chestplate = {
name = S("Chestplate"),
place = "torso",
level = 8,
radlevel = 0.35,
craft = { { 1, 0, 1 }, { 1, 1, 1 }, { 1, 1, 1 } },
},
leggings = {
name = S("Leggings"),
place = "legs",
level = 7,
radlevel = 0.15,
craft = { { 1, 1, 1 }, { 1, 0, 1 }, { 1, 0, 1 } },
},
boots = {
name = S("Boots"),
place = "feet",
level = 4,
radlevel = 0.10,
craft = { { 1, 0, 1 }, { 1, 0, 1 } },
},
}
if minetest.get_modpath("shields") then
parts.shield = {
name = S("Shield"),
place = "shield",
level = 5,
radlevel = 0.00,
craft = { { 1, 1, 1 }, { 1, 1, 1 }, { 0, 1, 0 } },
}
end
local function make_recipe(template, material)
local recipe = {}
for i, row in ipairs(template) do
recipe[i] = {}
for j, item in ipairs(row) do
recipe[i][j] = item == 0 and "" or material
end
end
return recipe
end
for material, m in pairs(materials) do
for part, p in pairs(parts) do
local name = "technic_armor:" .. part .. "_" .. material
armor:register_armor(name, {
description = S("@1 @2", m.name, p.name),
inventory_image = "technic_armor_inv_" .. part .. "_" .. material .. ".png",
groups = {
["armor_" .. p.place] = math.floor(p.level * m.armor),
armor_heal = m.heal,
armor_use = m.use,
armor_radiation = math.floor(p.radlevel * m.radiation),
},
armor_groups = {
["fleshy"] = math.floor(p.level * m.armor),
},
--damage_groups =
--{ ["level"] = math.floor(p.level * m.armor), },
})
minetest.register_craft({
output = name,
recipe = make_recipe(p.craft, m.craft_item),
})
end
end
-- groups = {armor_legs=25, armor_heal=17, armor_use=40, armor_fire=1},
-- armor_groups = {fleshy=25},
--damage_groups = {cracky=2, snappy=1, level=3},
-- wear = 0,