2 Commity 567e9b0411 ... 2f00e64ec0

Autor SHA1 Wiadomość Data
  Alexand(er|ra) Yst 2f00e64ec0 Added the Mosser buff for hoes 3 lat temu
  Alexand(er|ra) Yst c8e10131d1 Added the Breaker buff for hoes 3 lat temu

+ 13 - 13
mods/specific to Mushroom Fork/runes/buff_table.lua

@@ -126,33 +126,33 @@ return {
 		sand                   = "soulbound",
 		coal_lump              = "soulbound",
 		iron_lump              = "soulbound",
-		sapling                = "spreader",
+		sapling                = "breaker",
 		mese_crystal           = "durable",
 		copper_lump            = "soulbound",
 		diamond                = "durable",
 		gold_lump              = "soulbound",
-		junglesapling          = "spreader",
-		seed_cotton            = "spreader",
-		seed_wheat             = "spreader",
+		junglesapling          = "breaker",
+		seed_cotton            = "soulbound",
+		seed_wheat             = "soulbound",
 		string                 = "soulbound",
 		wheat                  = "soulbound",
 		cotton                 = "soulbound",
-		pine_sapling           = "spreader",
-		acacia_sapling         = "spreader",
-		mushroom_brown         = "soulbound",
-		mushroom_red           = "soulbound",
+		pine_sapling           = "breaker",
+		acacia_sapling         = "breaker",
+		mushroom_brown         = "spreader",
+		mushroom_red           = "spreader",
 		mushroom_spores_brown  = "spreader",
 		mushroom_spores_red    = "spreader",
-		aspen_sapling          = "spreader",
+		aspen_sapling          = "breaker",
 		flint                  = "soulbound",
 		coral_skeleton         = "soulbound",
-		acacia_bush_sapling    = "spreader",
-		bush_sapling           = "spreader",
+		acacia_bush_sapling    = "mosser",
+		bush_sapling           = "mosser",
 		tin_lump               = "soulbound",
 		blueberries            = "soulbound",
-		blueberry_bush_sapling = "spreader",
+		blueberry_bush_sapling = "soulbound",
 		ice                    = "soulbound",
-		pine_bush_sapling      = "spreader",
+		pine_bush_sapling      = "mosser",
 		dry_dirt               = "soulbound",
 	},
 	screwdriver = {

+ 2 - 0
mods/specific to Mushroom Fork/runes/tool_crafting.lua

@@ -60,6 +60,8 @@ local buff_name = {
 	cobbleeater = S("Cobble Eater"),
 	soulbound = S("Soulbound"),
 	adjuster = S("Kelp Adjuster"),
+	breaker = S("Breaker"),
+	mosser = S("Mosser"),
 }
 
 local rune_element_modname = {

+ 46 - 12
mods/specific to Mushroom Fork/runes/tools.lua

@@ -128,14 +128,6 @@ minetest.register_tool("runes:pick", {
 	groups = {pickaxe = 1, disable_repair = 1},
 })
 
-local spread_function
-for _, ABM in next, minetest.registered_abms do
-	if ABM.mod_origin == "default" and ABM.label == "Grass spread" then
-		spread_function = ABM.action
-	end
-end
-
 minetest.register_tool("runes:shovel", {
 	description = S("Runic Shovel"),
 	inventory_image = "runes.tool_aura_stone_shovel.png",
@@ -279,6 +271,24 @@ minetest.register_tool("runes:sword", {
 	end,
 })
 
+-- Used by the Spreader buff.
+local spread_function
+for _, ABM in next, minetest.registered_abms do
+	if ABM.mod_origin == "default" and ABM.label == "Grass spread" then
+		spread_function = ABM.action
+	end
+end
+
+-- Used by the Mosser buff
+local mossed = {
+	["default:cobble"]            = "default:mossycobble",
+	["stairs:slab_cobble"]        = "stairs:slab_mossycobble",
+	["stairs:stair_cobble"]       = "stairs:stair_mossycobble",
+	["stairs:stair_inner_cobble"] = "stairs:stair_inner_mossycobble",
+	["stairs:stair_outer_cobble"] = "stairs:stair_outer_mossycobble",
+	["walls:cobble"]              = "walls:mossycobble",
+}
+
 farming.register_hoe("runes:hoe", {
 	description = S("Runic Hoe"),
 	inventory_image = "runes.tool_aura_stone_hoe.png",
@@ -290,13 +300,36 @@ minetest.override_item("runes:hoe", {
 	wield_overlay = "farming_tool_stonehoe.png",
 	on_place = function(itemstack, user, pointed_thing)
 		local target = minetest.get_node(pointed_thing.under)
-		if target.name == "default:dirt" and itemstack:get_meta():get("spreader") then
-			spread_function(pointed_thing.under, target)
-			itemstack:add_wear(math.floor(65536/810))
-			return itemstack
-		elseif minetest.registered_nodes[target.name]
+		if minetest.registered_nodes[target.name]
 		and minetest.registered_nodes[target.name].on_rightclick then
 			return minetest.registered_nodes[target.name].on_rightclick(pointed_thing.under, target, user, itemstack, pointed_thing)
+		elseif not minetest.is_protected(pointed_thing.under, user:get_player_name()) then
+			local wear_to_add
+			local meta = itemstack:get_meta()
+			if meta:get("durable") then
+				wear_to_add = math.floor(65536/540)
+			else
+				wear_to_add = math.floor(65536/810)
+			end
+			if target.name == "default:dirt" and meta:get("spreader") then
+				spread_function(pointed_thing.under, target)
+				itemstack:add_wear(wear_to_add)
+				return itemstack
+			elseif target.name == "default:stone" and meta:get("breaker") then
+				minetest.swap_node(pointed_thing.under, {
+					name = "default:cobble",
+				})
+				itemstack:add_wear(wear_to_add)
+				return itemstack
+			elseif mossed[target.name] and meta:get("mosser") then
+				minetest.swap_node(pointed_thing.under, {
+					name = mossed[target.name],
+					param1 = target.param1,
+					param2 = target.param2,
+				})
+				itemstack:add_wear(wear_to_add)
+				return itemstack
+			end
 		end
 	end,
 })