add tools
This commit is contained in:
parent
94ad146852
commit
bdc256994d
3
init.lua
3
init.lua
@ -12,6 +12,9 @@ dofile(path.."/darts.lua")
|
||||
-- bow and arrows
|
||||
dofile(path.."/nssm_bows.lua")
|
||||
|
||||
-- tools
|
||||
dofile(path.."/nssm_tools.lua")
|
||||
|
||||
--Mobs
|
||||
dofile(path.."/mobs/albino_spider.lua")
|
||||
dofile(path.."/mobs/berinhog.lua")
|
||||
|
177
nssm_tools.lua
Normal file
177
nssm_tools.lua
Normal file
@ -0,0 +1,177 @@
|
||||
--tools
|
||||
minetest.register_tool(":nssm:ice_sword", {
|
||||
description = "Ice Sword",
|
||||
inventory_image = "ice_sword.png",
|
||||
tool_capabilities = {
|
||||
full_punch_interval =0.4 ,
|
||||
max_drop_level=1,
|
||||
groupcaps={
|
||||
snappy={times={[1]=0.4, [2]=0.3, [3]=0.2}, uses=300, maxlevel=1},
|
||||
fleshy={times={[2]=0.7, [3]=0.3}, uses=300, maxlevel=1}
|
||||
},
|
||||
damage_groups = {fleshy=12},
|
||||
},
|
||||
on_drop = function(itemstack, dropper, pos)
|
||||
local objects = minetest.get_objects_inside_radius(pos, 10)
|
||||
local flag = 0
|
||||
local vec = dropper:get_look_dir()
|
||||
local pos = dropper:getpos()
|
||||
--vec.y = 0
|
||||
|
||||
for i=1,4 do
|
||||
pos = vector.add(pos, vec)
|
||||
end
|
||||
|
||||
local pname = dropper:get_player_name()
|
||||
local player_inv = minetest.get_inventory({type='player', name = pname})
|
||||
local found = 0
|
||||
for i = 1,32 do
|
||||
local items = player_inv:get_stack('main', i)
|
||||
local n = items:get_name()
|
||||
if n == "nssm:life_energy" then
|
||||
found = i
|
||||
break
|
||||
end
|
||||
end
|
||||
if found == 0 then
|
||||
minetest.chat_send_player(pname, "You haven't got any Life Energy!")
|
||||
return
|
||||
else
|
||||
local items = player_inv:get_stack('main', found)
|
||||
items:take_item()
|
||||
player_inv:set_stack('main', found, items)
|
||||
for dx = -1,1 do
|
||||
for dz = -1,1 do
|
||||
local pos = {x = pos.x+dx, y=pos.y-1, z=pos.z+dz}
|
||||
if not minetest.is_protected(pos, "") or not minetest.get_item_group(minetest.get_node(pos).name, "unbreakable") == 1 then
|
||||
minetest.set_node(pos, {name="default:ice"})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_tool(":nssm:earth_warhammer", {
|
||||
description = "Earth Warhammer",
|
||||
inventory_image = "earth_warhammer.png",
|
||||
tool_capabilities = {
|
||||
full_punch_interval =0.4 ,
|
||||
max_drop_level=1,
|
||||
groupcaps={
|
||||
snappy={times={[1]=0.4, [2]=0.3, [3]=0.2}, uses=300, maxlevel=1},
|
||||
fleshy={times={[2]=0.7, [3]=0.3}, uses=300, maxlevel=1}
|
||||
},
|
||||
damage_groups = {fleshy=12},
|
||||
},
|
||||
on_drop = function(itemstack, dropper, pos)
|
||||
local objects = minetest.env:get_objects_inside_radius(pos, 10)
|
||||
local flag = 0
|
||||
for _,obj in ipairs(objects) do
|
||||
local part = 0
|
||||
if flag == 0 then
|
||||
local pname = dropper:get_player_name()
|
||||
local player_inv = minetest.get_inventory({type='player', name = pname})
|
||||
|
||||
if player_inv:is_empty('main') then
|
||||
--minetest.chat_send_all("Inventory empty")
|
||||
else
|
||||
local found = 0
|
||||
for i = 1,32 do
|
||||
local items = player_inv:get_stack('main', i)
|
||||
local n = items:get_name()
|
||||
if n == "nssm:energy_globe" then
|
||||
found = i
|
||||
break
|
||||
end
|
||||
end
|
||||
if found == 0 then
|
||||
minetest.chat_send_player(pname, "You haven't got any Energy Globe!")
|
||||
return
|
||||
else
|
||||
local pos = obj:get_pos()
|
||||
pos.y = pos.y - 3
|
||||
if (obj:is_player()) then
|
||||
if (obj:get_player_name()~=dropper:get_player_name()) then
|
||||
part=1
|
||||
obj:setpos(pos)
|
||||
--flag = 1
|
||||
|
||||
local items = player_inv:get_stack('main', found)
|
||||
items:take_item()
|
||||
player_inv:set_stack('main', found, items)
|
||||
end
|
||||
else
|
||||
if (obj:get_luaentity().health) then
|
||||
obj:get_luaentity().old_y = pos.y
|
||||
obj:setpos(pos)
|
||||
part=1
|
||||
--flag = 1
|
||||
|
||||
local items = player_inv:get_stack('main', found)
|
||||
items:take_item()
|
||||
player_inv:set_stack('main', found, items)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_tool(":nssm:earth_sword", {
|
||||
description = "Earth Sword",
|
||||
inventory_image = "earth_sword.png",
|
||||
tool_capabilities = {
|
||||
full_punch_interval =0.4 ,
|
||||
max_drop_level=1,
|
||||
groupcaps={
|
||||
snappy={times={[1]=0.4, [2]=0.3, [3]=0.2}, uses=300, maxlevel=1},
|
||||
fleshy={times={[2]=0.7, [3]=0.3}, uses=300, maxlevel=1}
|
||||
},
|
||||
damage_groups = {fleshy=12},
|
||||
},
|
||||
on_drop = function(itemstack, dropper, pos)
|
||||
local objects = minetest.get_objects_inside_radius(pos, 10)
|
||||
local flag = 0
|
||||
local vec = dropper:get_look_dir()
|
||||
local pos = dropper:get_pos()
|
||||
--vec.y = 0
|
||||
|
||||
for i=1,6 do
|
||||
pos = vector.add(pos, vec)
|
||||
end
|
||||
|
||||
local pname = dropper:get_player_name()
|
||||
local player_inv = minetest.get_inventory({type='player', name = pname})
|
||||
local found = 0
|
||||
for i = 1,32 do
|
||||
local items = player_inv:get_stack('main', i)
|
||||
local n = items:get_name()
|
||||
if n == "nssm:energy_globe" then
|
||||
found = i
|
||||
break
|
||||
end
|
||||
end
|
||||
if found == 0 then
|
||||
minetest.chat_send_player(pname, "You haven't got any Energy Globe!")
|
||||
return
|
||||
else
|
||||
local items = player_inv:get_stack('main', found)
|
||||
items:take_item()
|
||||
player_inv:set_stack('main', found, items)
|
||||
for dx = -1,1 do
|
||||
for dy = -12,3 do
|
||||
for dz = -1,1 do
|
||||
local pos = {x = pos.x+dx, y=pos.y+dy, z=pos.z+dz}
|
||||
if not minetest.is_protected(pos, "") or not minetest.get_item_group(minetest.get_node(pos).name, "unbreakable") == 1 then
|
||||
minetest.set_node(pos, {name="air"})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
BIN
textures/earth_sword.png
Normal file
BIN
textures/earth_sword.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 825 B |
BIN
textures/earth_warhammer.png
Normal file
BIN
textures/earth_warhammer.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 787 B |
BIN
textures/ice_axe.png
Normal file
BIN
textures/ice_axe.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 727 B |
BIN
textures/ice_sword.png
Normal file
BIN
textures/ice_sword.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 701 B |
Loading…
x
Reference in New Issue
Block a user