From a244fb548a40aff2b03eae4800539946aa103482 Mon Sep 17 00:00:00 2001 From: Evert Prants Date: Fri, 8 Nov 2019 15:25:38 +0200 Subject: [PATCH] More research regarding crystals --- craftitems.lua | 2 +- crystals.lua | 37 ++++++++++++++++-- register.lua | 17 +++++++- textures/magicalities_crystal_draining.png | Bin 0 -> 4691 bytes .../magicalities_crystal_preservation.png | Bin 0 -> 4707 bytes textures/magicalities_jarred.png | Bin 0 -> 3439 bytes 6 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 textures/magicalities_crystal_draining.png create mode 100644 textures/magicalities_crystal_preservation.png create mode 100644 textures/magicalities_jarred.png diff --git a/craftitems.lua b/craftitems.lua index 7f54d5d..fa271b6 100644 --- a/craftitems.lua +++ b/craftitems.lua @@ -57,7 +57,7 @@ minetest.register_craftitem("magicalities:tellium", { }) minetest.register_craftitem("magicalities:transterra", { - description = "Transterra", + description = "Transterra\nThis substance can change the world!", inventory_image = "magicalities_red_stone.png", groups = {shard = 1, transterra = 1} }) diff --git a/crystals.lua b/crystals.lua index b7848e5..ea370cf 100644 --- a/crystals.lua +++ b/crystals.lua @@ -71,6 +71,20 @@ function magicalities.crystals.generate_crystal_buffer(pos) return final end +-- If content goes to zero, remove element from crystal +local function update_contents(pos, contents) + local meta = minetest.get_meta(pos) + local keep = {} + + for name,data in pairs(contents) do + if data[1] > 0 then + keep[name] = data + end + end + + meta:set_string("contents", minetest.serialize(keep)) +end + local function crystal_rightclick(pos, node, clicker, itemstack, pointed_thing) local meta = minetest.get_meta(pos) @@ -86,10 +100,27 @@ local function crystal_rightclick(pos, node, clicker, itemstack, pointed_thing) return itemstack end + -- Check if player can preserve this crystal + local preserve = magicalities.player_has_ability(clicker:get_player_name(), "magicalities:crystal_preserve") + local mincheck = 0 + if preserve then mincheck = 1 end + + -- Check if we can take more than one + local draining = magicalities.player_has_ability(clicker:get_player_name(), "magicalities:crystal_draining") + local maxtake = 1 + if draining then maxtake = 5 end + local one_of_each = {} for name, count in pairs(contents) do - if count[1] > 0 then - one_of_each[name] = 1 + if count[1] > mincheck then + local take = maxtake + if count[1] <= maxtake then + take = count[1] - mincheck + end + + if take > 0 then + one_of_each[name] = take + end end end @@ -126,7 +157,7 @@ local function crystal_rightclick(pos, node, clicker, itemstack, pointed_thing) itemstack = magicalities.wands.wand_insert_contents(itemstack, can_put) magicalities.wands.update_wand_desc(itemstack) - meta:set_string("contents", minetest.serialize(contents)) + update_contents(pos, contents) return itemstack end diff --git a/register.lua b/register.lua index 86ec5a2..bad2a78 100644 --- a/register.lua +++ b/register.lua @@ -360,9 +360,24 @@ end -- Abilities +magicalities.register_ability_learnable({ + name = "magicalities:crystal_preserve", + description = "Crystal Preservation\nAvoid collecting every last drop of elements", + icon = "magicalities_crystal_preservation.png" +}) + +magicalities.register_ability_learnable({ + name = "magicalities:crystal_draining", + description = "Efficient Crystal Draining\nIncrease element drain rate", + depends = {"magicalities:crystal_preserve"}, + icon = "magicalities_crystal_draining.png" +}) + magicalities.register_ability_learnable({ name = "magicalities:pickup_jarred", - description = "Crystal Jarring" + description = "Crystal Jarring\nPick up intact crystals using jarring", + depends = {"magicalities:crystal_preserve"}, + icon = "magicalities_jarred.png" }) magicalities.register_recipe_learnable({ diff --git a/textures/magicalities_crystal_draining.png b/textures/magicalities_crystal_draining.png new file mode 100644 index 0000000000000000000000000000000000000000..2f6ed95f3c3bd9f44a7465607686c1488bc8d3a5 GIT binary patch literal 4691 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 literal 0 HcmV?d00001 diff --git a/textures/magicalities_jarred.png b/textures/magicalities_jarred.png new file mode 100644 index 0000000000000000000000000000000000000000..315b396e5c7c3140a3b8d16a7a26aa010634a463 GIT binary patch literal 3439 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