diff --git a/api/item_hoover.lua b/api/item_hoover.lua new file mode 100644 index 0000000..3c52cfb --- /dev/null +++ b/api/item_hoover.lua @@ -0,0 +1,93 @@ +local step_timer = 0 +local activate = true + +-- Code and sounds taken from PilzAdam's `item_drop` mod (WTFPL) +-- https://github.com/PilzAdam/item_drop +-- Hereby re-licensed under LGPL v2.1 or later + +-- Ostensibly for testing for now +-- Entities do not move within the expected radius + +if not minetest.get_modpath("itemdrop") and not activate then + minetest.register_globalstep(function(dtime) + step_timer = step_timer + dtime + if step_timer >= 0.5 then + step_timer = 0 + else + return + end + + for _,player in ipairs(minetest.get_connected_players()) do + if player:get_hp() > 0 or not minetest.setting_getbool("enable_damage") then + local pos = player:getpos() + pos.y = pos.y+0.5 + local inv = player:get_inventory() + + for _,object in ipairs(minetest.env:get_objects_inside_radius(pos, 1)) do + if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" then + if inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then + inv:add_item("main", ItemStack(object:get_luaentity().itemstring)) + if object:get_luaentity().itemstring ~= "" then + minetest.sound_play("item_drop_pickup", { + to_player = player:get_player_name(), + gain = 0.4, + }) + end + object:get_luaentity().itemstring = "" + object:remove() + end + end + end + + for _,object in ipairs(minetest.env:get_objects_inside_radius(pos, 3)) do + if not object:is_player() and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" then + if object:get_luaentity().collect then + if inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then + local pos1 = pos + pos1.y = pos1.y+0.2 + local pos2 = object:getpos() + local vec = {x=pos1.x-pos2.x, y=pos1.y-pos2.y, z=pos1.z-pos2.z} + vec.x = vec.x*3 + vec.y = vec.y*3 + vec.z = vec.z*3 + object:setvelocity(vec) + object:get_luaentity().physical_state = false + object:get_luaentity().object:set_properties({ + physical = false + }) + + --minetest.after(1, + --function(args) + local lua = object:get_luaentity() + if object == nil or lua == nil or lua.itemstring == nil then + return + end + if inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then + inv:add_item("main", ItemStack(object:get_luaentity().itemstring)) + if object:get_luaentity().itemstring ~= "" then + minetest.sound_play("item_drop_pickup", { + to_player = player:get_player_name(), + gain = 0.4, + }) + end + object:get_luaentity().itemstring = "" + object:remove() + else + --object:setvelocity({x=0,y=0,z=0}) + object:setvelocity(vec) + object:get_luaentity().physical_state = true + object:get_luaentity().object:set_properties({ + physical = true + }) + end + --end + --, {player, object}) + + end + end + end + end + end + end + end) +end diff --git a/depends.txt b/depends.txt index f7ad32f..3757aeb 100644 --- a/depends.txt +++ b/depends.txt @@ -6,3 +6,4 @@ nssb? farming? 3d_armor? shields? +itemdrop? diff --git a/init.lua b/init.lua index 188c9a3..1bb0f14 100644 --- a/init.lua +++ b/init.lua @@ -11,6 +11,7 @@ end nssm:load("api/settings.lua") nssm:load("api/main_api.lua") nssm:load("api/darts.lua") +nssm:load("api/item_hoover.lua") --Mobs diff --git a/sounds/sounds/item_drop_pickup.1.ogg b/sounds/sounds/item_drop_pickup.1.ogg new file mode 100644 index 0000000..2ae432d Binary files /dev/null and b/sounds/sounds/item_drop_pickup.1.ogg differ diff --git a/sounds/sounds/item_drop_pickup.2.ogg b/sounds/sounds/item_drop_pickup.2.ogg new file mode 100644 index 0000000..f58bf08 Binary files /dev/null and b/sounds/sounds/item_drop_pickup.2.ogg differ diff --git a/sounds/sounds/item_drop_pickup.3.ogg b/sounds/sounds/item_drop_pickup.3.ogg new file mode 100644 index 0000000..cf57c94 Binary files /dev/null and b/sounds/sounds/item_drop_pickup.3.ogg differ diff --git a/sounds/sounds/item_drop_pickup.4.ogg b/sounds/sounds/item_drop_pickup.4.ogg new file mode 100644 index 0000000..bfe99d9 Binary files /dev/null and b/sounds/sounds/item_drop_pickup.4.ogg differ diff --git a/tools/bomb_evocation.lua b/tools/bomb_evocation.lua index f843376..df876f0 100644 --- a/tools/bomb_evocation.lua +++ b/tools/bomb_evocation.lua @@ -23,6 +23,6 @@ nssm_register_evocation ("bloco","Bloco Evocation", 3) nssm_register_evocation ("enderduck","Enderduck Evocation", 2) nssm_register_evocation ("flying_duck","Flying Duck Evocation", 3) nssm_register_evocation ("swimming_duck","Swimming Duck Evocation", 3) -nssm_register_evocation ("duckking_egg","Duckking Evocation", 1) +nssm_register_evocation ("duckking","Duckking Evocation", 1) nssm_register_evocation ("spiderduck","Spiderduck Evocation", 2)