minetest-3d_armor/shields/init.lua

230 lines
7.1 KiB
Lua
Raw Normal View History

-- support for i18n
local S = armor_i18n.gettext
local disable_sounds = minetest.settings:get_bool("shields_disable_sounds")
local use_moreores = minetest.get_modpath("moreores")
2017-04-05 18:46:09 +02:00
local function play_sound_effect(player, name)
if not disable_sounds and player then
local pos = player:getpos()
2017-04-05 18:46:09 +02:00
if pos then
2018-05-13 17:31:51 +02:00
minetest.sound_play(name, {
2017-04-05 18:46:09 +02:00
pos = pos,
max_hear_distance = 10,
gain = 0.5,
})
end
end
end
if minetest.global_exists("armor") and armor.elements then
table.insert(armor.elements, "shield")
local mult = armor.config.level_multiplier or 1
armor.config.level_multiplier = mult * 0.9
end
2013-06-24 20:06:19 +02:00
-- Regisiter Shields
2017-04-05 18:46:09 +02:00
armor:register_armor("shields:shield_admin", {
2017-03-31 20:54:12 +02:00
description = S("Admin Shield"),
2014-11-10 01:53:54 +01:00
inventory_image = "shields_inv_shield_admin.png",
groups = {armor_shield=1000, armor_heal=100, armor_use=0, not_in_creative_inventory=1},
2014-11-10 01:53:54 +01:00
})
minetest.register_alias("adminshield", "shields:shield_admin")
2017-03-18 18:23:50 +01:00
if armor.materials.wood then
2017-04-05 18:46:09 +02:00
armor:register_armor("shields:shield_wood", {
2017-03-31 20:54:12 +02:00
description = S("Wooden Shield"),
inventory_image = "shields_inv_shield_wood.png",
groups = {armor_shield=1, armor_heal=0, armor_use=2000, flammable=1},
2017-04-05 18:46:09 +02:00
armor_groups = {fleshy=5},
damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=1},
reciprocate_damage = true,
on_damage = function(player, index, stack)
2017-04-05 18:46:09 +02:00
play_sound_effect(player, "default_wood_footstep")
end,
on_destroy = function(player, index, stack)
2017-04-05 18:46:09 +02:00
play_sound_effect(player, "default_wood_footstep")
end,
})
2017-04-05 18:46:09 +02:00
armor:register_armor("shields:shield_enhanced_wood", {
2017-03-31 20:54:12 +02:00
description = S("Enhanced Wood Shield"),
inventory_image = "shields_inv_shield_enhanced_wood.png",
2017-04-05 18:46:09 +02:00
groups = {armor_shield=1, armor_heal=0, armor_use=2000},
armor_groups = {fleshy=8},
damage_groups = {cracky=3, snappy=2, choppy=3, crumbly=2, level=2},
reciprocate_damage = true,
on_damage = function(player, index, stack)
2017-04-09 16:43:35 +02:00
play_sound_effect(player, "default_dig_metal")
2017-04-05 18:46:09 +02:00
end,
on_destroy = function(player, index, stack)
2017-04-09 16:43:35 +02:00
play_sound_effect(player, "default_dug_metal")
2017-04-05 18:46:09 +02:00
end,
})
minetest.register_craft({
output = "shields:shield_enhanced_wood",
recipe = {
{"default:steel_ingot"},
{"shields:shield_wood"},
{"default:steel_ingot"},
},
})
end
2013-06-24 20:06:19 +02:00
2017-03-18 18:23:50 +01:00
if armor.materials.cactus then
2017-04-05 18:46:09 +02:00
armor:register_armor("shields:shield_cactus", {
2017-03-31 20:54:12 +02:00
description = S("Cactus Shield"),
inventory_image = "shields_inv_shield_cactus.png",
2017-04-05 18:46:09 +02:00
groups = {armor_shield=1, armor_heal=0, armor_use=1000},
armor_groups = {fleshy=5},
damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=1},
reciprocate_damage = true,
on_damage = function(player, index, stack)
2017-04-05 18:46:09 +02:00
play_sound_effect(player, "default_wood_footstep")
end,
on_destroy = function(player, index, stack)
2017-04-05 18:46:09 +02:00
play_sound_effect(player, "default_wood_footstep")
end,
})
2017-04-05 18:46:09 +02:00
armor:register_armor("shields:shield_enhanced_cactus", {
2017-03-31 20:54:12 +02:00
description = S("Enhanced Cactus Shield"),
inventory_image = "shields_inv_shield_enhanced_cactus.png",
2017-04-05 18:46:09 +02:00
groups = {armor_shield=1, armor_heal=0, armor_use=1000},
armor_groups = {fleshy=8},
damage_groups = {cracky=3, snappy=3, choppy=2, crumbly=2, level=2},
reciprocate_damage = true,
on_damage = function(player, index, stack)
2017-04-09 16:43:35 +02:00
play_sound_effect(player, "default_dig_metal")
2017-04-05 18:46:09 +02:00
end,
on_destroy = function(player, index, stack)
2017-04-09 16:43:35 +02:00
play_sound_effect(player, "default_dug_metal")
2017-04-05 18:46:09 +02:00
end,
})
minetest.register_craft({
output = "shields:shield_enhanced_cactus",
recipe = {
{"default:steel_ingot"},
{"shields:shield_cactus"},
{"default:steel_ingot"},
},
})
end
2014-11-10 01:53:54 +01:00
2017-03-18 18:23:50 +01:00
if armor.materials.steel then
2017-04-05 18:46:09 +02:00
armor:register_armor("shields:shield_steel", {
2017-03-31 20:54:12 +02:00
description = S("Steel Shield"),
inventory_image = "shields_inv_shield_steel.png",
groups = {armor_shield=1, armor_heal=0, armor_use=800,
2017-04-09 19:49:44 +02:00
physics_speed=-0.03, physics_gravity=0.03},
2017-04-05 18:46:09 +02:00
armor_groups = {fleshy=10},
damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
reciprocate_damage = true,
on_damage = function(player, index, stack)
2017-04-05 18:46:09 +02:00
play_sound_effect(player, "default_dig_metal")
end,
on_destroy = function(player, index, stack)
2017-04-05 18:46:09 +02:00
play_sound_effect(player, "default_dug_metal")
end,
})
end
2013-06-24 20:06:19 +02:00
2017-03-18 18:23:50 +01:00
if armor.materials.bronze then
2017-04-05 18:46:09 +02:00
armor:register_armor("shields:shield_bronze", {
2017-03-31 20:54:12 +02:00
description = S("Bronze Shield"),
inventory_image = "shields_inv_shield_bronze.png",
groups = {armor_shield=1, armor_heal=6, armor_use=400,
2017-04-09 19:49:44 +02:00
physics_speed=-0.03, physics_gravity=0.03},
2017-04-05 18:46:09 +02:00
armor_groups = {fleshy=10},
damage_groups = {cracky=2, snappy=3, choppy=2, crumbly=1, level=2},
reciprocate_damage = true,
on_damage = function(player, index, stack)
2017-04-05 18:46:09 +02:00
play_sound_effect(player, "default_dig_metal")
end,
on_destroy = function(player, index, stack)
2017-04-05 18:46:09 +02:00
play_sound_effect(player, "default_dug_metal")
end,
})
end
2013-06-24 20:06:19 +02:00
2017-03-18 18:23:50 +01:00
if armor.materials.diamond then
2017-04-05 18:46:09 +02:00
armor:register_armor("shields:shield_diamond", {
2017-03-31 20:54:12 +02:00
description = S("Diamond Shield"),
inventory_image = "shields_inv_shield_diamond.png",
2017-04-05 18:46:09 +02:00
groups = {armor_shield=1, armor_heal=12, armor_use=200},
armor_groups = {fleshy=15},
damage_groups = {cracky=2, snappy=1, choppy=1, level=3},
reciprocate_damage = true,
on_damage = function(player, index, stack)
2017-04-05 18:46:09 +02:00
play_sound_effect(player, "default_glass_footstep")
end,
on_destroy = function(player, index, stack)
2017-04-05 18:46:09 +02:00
play_sound_effect(player, "default_break_glass")
end,
})
end
2013-06-24 20:06:19 +02:00
2017-03-18 18:23:50 +01:00
if armor.materials.gold then
2017-04-05 18:46:09 +02:00
armor:register_armor("shields:shield_gold", {
2017-03-31 20:54:12 +02:00
description = S("Gold Shield"),
inventory_image = "shields_inv_shield_gold.png",
groups = {armor_shield=1, armor_heal=6, armor_use=300,
2017-04-09 19:49:44 +02:00
physics_speed=-0.04, physics_gravity=0.04},
2017-04-05 18:46:09 +02:00
armor_groups = {fleshy=10},
damage_groups = {cracky=1, snappy=2, choppy=2, crumbly=3, level=2},
reciprocate_damage = true,
on_damage = function(player, index, stack)
2017-04-05 18:46:09 +02:00
play_sound_effect(player, "default_dig_metal")
end,
on_destroy = function(player, index, stack)
2017-04-05 18:46:09 +02:00
play_sound_effect(player, "default_dug_metal")
end,
})
end
2017-03-18 18:23:50 +01:00
if armor.materials.mithril then
2017-04-05 18:46:09 +02:00
armor:register_armor("shields:shield_mithril", {
2017-03-31 20:54:12 +02:00
description = S("Mithril Shield"),
inventory_image = "shields_inv_shield_mithril.png",
2017-04-05 18:46:09 +02:00
groups = {armor_shield=1, armor_heal=12, armor_use=100},
armor_groups = {fleshy=15},
damage_groups = {cracky=2, snappy=1, level=3},
reciprocate_damage = true,
on_damage = function(player, index, stack)
2017-04-05 18:46:09 +02:00
play_sound_effect(player, "default_glass_footstep")
end,
on_destroy = function(player, index, stack)
2017-04-05 18:46:09 +02:00
play_sound_effect(player, "default_break_glass")
end,
})
end
2013-06-24 20:06:19 +02:00
2017-03-18 18:23:50 +01:00
if armor.materials.crystal then
2017-04-05 18:46:09 +02:00
armor:register_armor("shields:shield_crystal", {
2017-03-31 20:54:12 +02:00
description = S("Crystal Shield"),
inventory_image = "shields_inv_shield_crystal.png",
2017-04-05 18:46:09 +02:00
groups = {armor_shield=1, armor_heal=12, armor_use=100, armor_fire=1},
armor_groups = {fleshy=15},
damage_groups = {cracky=2, snappy=1, level=3},
reciprocate_damage = true,
on_damage = function(player, index, stack)
2017-04-05 18:46:09 +02:00
play_sound_effect(player, "default_glass_footstep")
end,
on_destroy = function(player, index, stack)
2017-04-05 18:46:09 +02:00
play_sound_effect(player, "default_break_glass")
end,
})
end
2017-03-18 18:23:50 +01:00
for k, v in pairs(armor.materials) do
2013-06-24 20:06:19 +02:00
minetest.register_craft({
output = "shields:shield_"..k,
recipe = {
{v, v, v},
{v, v, v},
{"", v, ""},
},
})
end
minetest.log("action", "[shields] loaded.")