minetest-conjuration/tools.lua

174 lines
4.6 KiB
Lua

---( Tools )---
---( First come the Books )---
tool_type = {
"Pickaxe",
"Axe",
"Shovel",
"Sword"
}
book_level = {
{"Lesser", 100000, 50},
{"", 18000, 75},
{"Greater", 4000, 99}
}
local function scan(inv)
for s=1,32 do
local stack = inv:get_stack("main", s)
local theName = stack:get_name()
for i=1,4 do
if theName == 'conjuration:' .. tool_type[i]:lower() then
return 0
end
end
end
return 1
end
for i=1,4 do
for _, rowc in ipairs(book_level) do
local level = rowc[1]
local level_wear = rowc[2]
local color_int = rowc[3]
local inventory_image = "(default_book.png^[colorize:#008080" .. color_int .. ")^(default_bookshelf_slot.png^[colorize:#0040FF" .. color_int .. ")"
local level_name = ""
if level == "Lesser" or level == "Greater" then
level_name = level .. " "
end
minetest.register_tool("conjuration:book_" .. tool_type[i]:lower() .. level:lower(), {
description = level_name .. "Book of Conjure " .. tool_type[i],
inventory_image = inventory_image,
tool_capabilities = {
full_punch_interval = 1.1,
},
sound = {breaks = "default_cool_lava"},
on_use = function(itemstack, player)
wear = itemstack:get_wear()
itemstack:set_wear(wear + level_wear)
local inv = player:get_inventory()
local full_slots = 1
local item_in_use = 0
local error_control = 0
for s=1,8 do
local tool_present = scan(inv)
if inv:get_stack("main", s):is_empty() == true and tool_present == 1 then
inv:set_stack("main", s, "conjuration:" .. tool_type[i]:lower())
conjuration.special_effects(player)
error_control = 1
else if error_control == 0 then
error_control = 1
minetest.sound_play("default_place_node_metal", player)
end
end
end
return itemstack
end
})
end
end
conjuration.special_effects = function(player)
minetest.sound_play("default_cool_lava", player)
local blue_screen = player:hud_add({
hud_elem_type = "image",
position = {x=0.5, y=0.5},
scale = {x=200, y=200},
text = "default_snow.png^[colorize:#0040FF99",
offset = {x=0, y=0},
})
minetest.after(0.1, function()
player:hud_remove(blue_screen)
end)
minetest.after(0.4, function()
minetest.sound_play("default_place_node_metal", player)
end)
end
---( Tools (Yea, actual tools.) )---
---( Pickaxe )---
minetest.register_tool("conjuration:pickaxe", {
description = "Bound Pickaxe",
inventory_image = "(default_tool_diamondpick.png^[brighten)^[colorize:#0040ff99",
tool_capabilities = {
full_punch_interval = 0.9,
max_drop_level=3,
groupcaps={
cracky = {times={[1]=2.0, [2]=1.0, [3]=0.50}, uses=6, maxlevel=3},
},
damage_groups = {fleshy=5},
},
sound = {breaks = "default_cool_lava"},
groups = {not_in_creative_inventory = 1},
on_drop = function(itemstack, dropper, pos)
return
end,
})
---( Shovel )---
minetest.register_tool("conjuration:shovel", {
description = "Bound Shovel",
inventory_image = "(default_tool_diamondshovel.png^[brighten)^[colorize:#0040ff99",
wield_image = "((default_tool_diamondshovel.png^[brighten)^[colorize:#0040ff99)^[transformR90",
tool_capabilities = {
full_punch_interval = 1.0,
max_drop_level=1,
groupcaps={
crumbly = {times={[1]=1.10, [2]=0.50, [3]=0.30}, uses=6, maxlevel=3},
},
damage_groups = {fleshy=4},
},
sound = {breaks = "default_cool_lava"},
groups = {not_in_creative_inventory = 1},
on_drop = function(itemstack, dropper, pos)
return
end,
})
---( Axe )---
minetest.register_tool("conjuration:axe", {
description = "Bound Axe",
inventory_image = "(default_tool_diamondaxe.png^[brighten)^[colorize:#0040ff99",
tool_capabilities = {
full_punch_interval = 0.9,
max_drop_level=1,
groupcaps={
choppy={times={[1]=2.20, [2]=1.00, [3]=0.60}, uses=6, maxlevel=3},
},
damage_groups = {fleshy=6},
},
sound = {breaks = "default_cool_lava"},
groups = {not_in_creative_inventory = 1},
on_drop = function(itemstack, dropper, pos)
return
end,
})
---( Sword )---
minetest.register_tool("conjuration:sword", {
description = "Bound Sword",
inventory_image = "(default_tool_diamondsword.png^[brighten)^[colorize:#0040ff99",
tool_capabilities = {
full_punch_interval = 0.7,
max_drop_level=1,
groupcaps={
snappy={times={[1]=1.90, [2]=0.90, [3]=0.30}, uses=6, maxlevel=3},
},
damage_groups = {fleshy=8},
},
sound = {breaks = "default_cool_lava"},
groups = {not_in_creative_inventory = 1},
on_drop = function(itemstack, dropper, pos)
return
end,
})