More research regarding crystals
This commit is contained in:
parent
2059faeaa0
commit
a244fb548a
@ -57,7 +57,7 @@ minetest.register_craftitem("magicalities:tellium", {
|
|||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craftitem("magicalities:transterra", {
|
minetest.register_craftitem("magicalities:transterra", {
|
||||||
description = "Transterra",
|
description = "Transterra\nThis substance can change the world!",
|
||||||
inventory_image = "magicalities_red_stone.png",
|
inventory_image = "magicalities_red_stone.png",
|
||||||
groups = {shard = 1, transterra = 1}
|
groups = {shard = 1, transterra = 1}
|
||||||
})
|
})
|
||||||
|
37
crystals.lua
37
crystals.lua
@ -71,6 +71,20 @@ function magicalities.crystals.generate_crystal_buffer(pos)
|
|||||||
return final
|
return final
|
||||||
end
|
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 function crystal_rightclick(pos, node, clicker, itemstack, pointed_thing)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
|
|
||||||
@ -86,10 +100,27 @@ local function crystal_rightclick(pos, node, clicker, itemstack, pointed_thing)
|
|||||||
return itemstack
|
return itemstack
|
||||||
end
|
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 = {}
|
local one_of_each = {}
|
||||||
for name, count in pairs(contents) do
|
for name, count in pairs(contents) do
|
||||||
if count[1] > 0 then
|
if count[1] > mincheck then
|
||||||
one_of_each[name] = 1
|
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
|
||||||
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)
|
itemstack = magicalities.wands.wand_insert_contents(itemstack, can_put)
|
||||||
magicalities.wands.update_wand_desc(itemstack)
|
magicalities.wands.update_wand_desc(itemstack)
|
||||||
meta:set_string("contents", minetest.serialize(contents))
|
update_contents(pos, contents)
|
||||||
|
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
|
17
register.lua
17
register.lua
@ -360,9 +360,24 @@ end
|
|||||||
|
|
||||||
-- Abilities
|
-- 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({
|
magicalities.register_ability_learnable({
|
||||||
name = "magicalities:pickup_jarred",
|
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({
|
magicalities.register_recipe_learnable({
|
||||||
|
BIN
textures/magicalities_crystal_draining.png
Normal file
BIN
textures/magicalities_crystal_draining.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.6 KiB |
BIN
textures/magicalities_crystal_preservation.png
Normal file
BIN
textures/magicalities_crystal_preservation.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.6 KiB |
BIN
textures/magicalities_jarred.png
Normal file
BIN
textures/magicalities_jarred.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 3.4 KiB |
Loading…
Reference in New Issue
Block a user