Introduce Thirst and Pruner buffs; Debug Buff buff now does nothing

master
Alexand(er|ra) Yst 2020-12-17 11:45:10 -08:00
parent c9d59a25fc
commit 02240ed601
6 changed files with 115 additions and 67 deletions

View File

@ -28,8 +28,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
coal_lump = {
axe = "debug",
@ -37,8 +37,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
iron_lump = {
axe = "debug",
@ -46,8 +46,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
sapling = {
axe = "debug",
@ -55,8 +55,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "thirst",
sword = "thirst",
},
mese_crystal = {
axe = "debug",
@ -64,8 +64,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
copper_lump = {
axe = "debug",
@ -73,8 +73,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
diamond = {
axe = "debug",
@ -82,8 +82,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
gold_lump = {
axe = "debug",
@ -91,8 +91,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
junglesapling = {
axe = "debug",
@ -100,8 +100,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "thirst",
sword = "thirst",
},
seed_cotton = {
axe = "debug",
@ -109,8 +109,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
seed_wheat = {
axe = "debug",
@ -118,8 +118,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
string = {
axe = "debug",
@ -127,8 +127,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
wheat = {
axe = "debug",
@ -136,8 +136,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
cotton = {
axe = "debug",
@ -145,8 +145,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
pine_sapling = {
axe = "debug",
@ -154,8 +154,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "thirst",
sword = "thirst",
},
acacia_sapling = {
axe = "debug",
@ -163,8 +163,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "thirst",
sword = "thirst",
},
mushroom_brown = {
axe = "debug",
@ -172,8 +172,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
mushroom_red = {
axe = "debug",
@ -181,8 +181,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
mushroom_spores_brown = {
axe = "debug",
@ -190,8 +190,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
mushroom_spores_red = {
axe = "debug",
@ -199,8 +199,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
aspen_sapling = {
axe = "debug",
@ -208,8 +208,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "thirst",
sword = "thirst",
},
flint = {
axe = "debug",
@ -217,8 +217,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "thirst",
sword = "thirst",
},
coral_skeleton = {
axe = "debug",
@ -226,8 +226,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
acacia_bush_sapling = {
axe = "debug",
@ -235,8 +235,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "thirst",
sword = "thirst",
},
bush_sapling = {
axe = "debug",
@ -244,8 +244,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "thirst",
sword = "thirst",
},
tin_lump = {
axe = "debug",
@ -253,8 +253,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
blueberries = {
axe = "debug",
@ -262,8 +262,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
blueberry_bush_sapling = {
axe = "debug",
@ -271,8 +271,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "thirst",
sword = "thirst",
},
ice = {
axe = "debug",
@ -280,8 +280,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
pine_bush_sapling = {
axe = "debug",
@ -289,8 +289,8 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "thirst",
sword = "thirst",
},
dry_dirt = {
axe = "debug",
@ -298,7 +298,7 @@ return {
pick = "debug",
hoe = "debug",
screwdriver = "debug",
shovel = "debug",
sword = "debug",
shovel = "pruner",
sword = "pruner",
},
}

View File

@ -44,7 +44,7 @@ liblevelup.register.startup_function(function()
if drops.node_dug and force_drop[drops.node_dug] then
local tool = digger:get_wielded_item()
if force_drop[drops.node_dug].tool == tool:get_name()
and tool:get_meta():get("debug") then
and tool:get_meta():get("thirst") then
drops[1] = force_drop[drops.node_dug].drop
end
end

View File

@ -0,0 +1,37 @@
minetest.register_chatcommand("updatetool", {
description = "Fix a shovel or sword that has the debug buff.",
func = function(name, arg)
local player = minetest.get_player_by_name(name)
local tool = player:get_wielded_item()
local tool_type = tool:get_name()
local meta = tool:get_meta()
-- Currently, a feature in the stable version but not the development
-- version of Minetest prevents setting the value to integer zero from
-- working correctly, but setting to string zero should work just fine.
local debug_level = tonumber(meta:get_string("debug"))
if debug_level then
if tool_type == "runes:shovel" then
meta:set_string("thirst", debug_level)
meta:set_string("debug") -- set to nil to remove key/value pair
local description = minetest.registered_tools["runes:shovel"].description.."\nRepair count: "..meta:get_int("repair").."\nThirst ("..debug_level..")"
meta:set_string("description", description)
player:set_wielded_item(tool)
elseif tool_type == "runes:sword" then
local thirst = math.ceil((debug_level - 1) / 2)
local pruner = math.floor((debug_level - 1) / 2)
local description = minetest.registered_tools["runes:shovel"].description.."\nRepair count: "..meta:get_int("repair")
if thirst > -1 then
meta:set_string("thirst", thirst)
description = description.."\nThirst ("..thirst..")"
end
if pruner > -1 then
meta:set_string("pruner", pruner)
description = description.."\nPruner ("..pruner..")"
end
meta:set_string("debug") -- set to nil to remove key/value pair
meta:set_string("description", description)
player:set_wielded_item(tool)
end
end
end,
})

View File

@ -18,4 +18,5 @@
dofile(minetest.get_modpath("runes").."/runes.lua")
dofile(minetest.get_modpath("runes").."/tools.lua")
dofile(minetest.get_modpath("runes").."/tool_crafting.lua")
dofile(minetest.get_modpath("runes").."/debug_buff.lua")
dofile(minetest.get_modpath("runes").."/buffs/thirst.lua")
dofile(minetest.get_modpath("runes").."/debug.lua")

View File

@ -48,6 +48,8 @@ local rune_and_tool_to_buff = dofile(minetest.get_modpath("runes").."/buff_table
local buff_name = {
debug = S("Debug Buff"),
thirst = S("Thirst"),
pruner = S("Pruner"),
}
local rune_element_modname = {
@ -140,7 +142,11 @@ local function generate_tool(tool_name, player_name, runes)
end
for buff, strength in next, buffs do
if strength > -1 then
meta:set_int(buff, strength)
-- Currently, a feature in the stable version but not the development
-- version of Minetest prevents setting the value to integer zero from
-- working correctly, but setting to string zero should work just fine.
-- meta:set_int(buff, strength)
meta:set_string(buff, strength)
description = description.."\n"..buff_name[buff].." ("..strength..")"
end
end
@ -300,7 +306,11 @@ local function calculate_craft_result(itemstack, player, old_craft_grid, craft_i
strength = strength + 1 + meta1:get_int(buff)
end
if strength > -1 then
meta:set_int(buff, strength)
-- Currently, a feature in the stable version but not the development
-- version of Minetest prevents setting the value to integer zero from
-- working correctly, but setting to string zero should work just fine.
-- meta:set_int(buff, strength)
meta:set_string(buff, strength)
description = description.."\n"..name.." ("..strength..")"
end
end

View File

@ -220,7 +220,7 @@ minetest.register_tool("runes:sword", {
and minetest.registered_nodes[potential_log.name].on_rightclick then
return minetest.registered_nodes[potential_log.name].on_rightclick(pointed_thing.under, potential_log, user, itemstack, pointed_thing)
elseif prunable_trunk[potential_log.name] then
if user:get_wielded_item():get_meta():get("debug") then
if user:get_wielded_item():get_meta():get("pruner") then
-- This is done in a minetest.after() callback because otherwise, the
-- tool wear gets reverted if no return value is provided. The return
-- value would need to be the post-wear tool, meaning that either tool