mirror of
				https://github.com/sys4-fr/server-nalc.git
				synced 2025-10-31 04:25:32 +01:00 
			
		
		
		
	Merge branch 'master' of github.com:MinetestForFun/minetest-minetestforfun-server
This commit is contained in:
		| @@ -634,6 +634,17 @@ columnia.register_column_ia("wood", "default:wood", | ||||
| 		"Wooden Column Linkdown", | ||||
| 		default.node_sound_wood_defaults()) | ||||
|  | ||||
| columnia.register_column_ia("tree", "default:tree", | ||||
| 		{choppy = 2, oddly_breakable_by_hande = 1, flammable = 2}, | ||||
| 		{"default_tree.png"}, | ||||
| 		"Tree Column", | ||||
| 		"Tree Column Top", | ||||
| 		"Tree Column Bottom", | ||||
| 		"Tree Column Crosslink", | ||||
| 		"Tree Column Link", | ||||
| 		"Tree Column Linkdown", | ||||
| 		default.node_sound_wood_defaults()) | ||||
|  | ||||
| columnia.register_column_ia("junglewood", "default:junglewood", | ||||
| 		{snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3}, | ||||
| 		{"default_junglewood.png"}, | ||||
|   | ||||
| @@ -448,6 +448,14 @@ function homedecor.flip_door(pos, node, player, name, side, isClosed) | ||||
| 	local rside = nil | ||||
| 	local nfdir = nil | ||||
| 	local ofdir = node.param2 or 0 | ||||
| 	-- //MFF_BEGIN(Mg|09/06/15) | ||||
| 	local upnode = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name | ||||
|  | ||||
| 	if upnode ~= "air" then | ||||
| 		minetest.add_item(pos, upnode) | ||||
| 	end | ||||
| 	-- //MFF_END(Mg|06/09/15) | ||||
| 		 | ||||
| 	if side == "left" then | ||||
| 		rside = "right" | ||||
| 		nfdir=ofdir - 1 | ||||
|   | ||||
| @@ -13,18 +13,9 @@ mff.quests.quests = { | ||||
| 		awards = {["maptools:superapple"] = 1}, | ||||
| 		tasks = { | ||||
| 			diggy = { | ||||
| 				title = "Dig 99 stone", | ||||
| 				title = "Dig 100 stone", | ||||
| 				description = "Show you can dig through stone", | ||||
| 				max = 99, | ||||
| 				objective = { | ||||
| 					dig = {"default:stone"} | ||||
| 				} | ||||
| 			}, | ||||
| 			diggysrevenge = { | ||||
| 				title = "Dig the last stone", | ||||
| 				description = "You really thought 99 was a good number? Dig the last one.", | ||||
| 				requires = {"diggy"}, | ||||
| 				max = 1, | ||||
| 				max = 100, | ||||
| 				objective = { | ||||
| 					dig = {"default:stone"} | ||||
| 				} | ||||
| @@ -38,18 +29,9 @@ mff.quests.quests = { | ||||
| 		awards = {["default:diamond"] = 1}, | ||||
| 		tasks = { | ||||
| 			diggy = { | ||||
| 				title = "Dig 19 coal", | ||||
| 				title = "Dig 20 coal", | ||||
| 				description = "Get the fire mineral", | ||||
| 				max = 19, | ||||
| 				objective = { | ||||
| 					dig = {"default:stone_with_coal"} | ||||
| 				} | ||||
| 			}, | ||||
| 			diggysrevenge = { | ||||
| 				title = "Dig the last one", | ||||
| 				description = "I do this because of a technical issue, sorry", | ||||
| 				requires = {"diggy"}, | ||||
| 				max = 1, | ||||
| 				max = 20, | ||||
| 				objective = { | ||||
| 					dig = {"default:stone_with_coal"} | ||||
| 				} | ||||
| @@ -63,18 +45,9 @@ mff.quests.quests = { | ||||
| 		awards = {["moreores:mithril_ingot"] = 1}, | ||||
| 		tasks = { | ||||
| 			diggy = { | ||||
| 				title = "Dig 4 diamond", | ||||
| 				title = "Dig 5 diamonds", | ||||
| 				description = "Yarr harr fiddle dee-dee, being a pirate is alright with me! Do what you want 'cause a pirate is free, you are a pirate! Go get the precious booty... underground. Mine it :/", | ||||
| 				max = 4, | ||||
| 				objective = { | ||||
| 					dig = {"default:stone_with_diamond"} | ||||
| 				} | ||||
| 			}, | ||||
| 			diggysrevenge = { | ||||
| 				title = "Ultimate calbon atom alignement", | ||||
| 				description = "Really, we must fix this", | ||||
| 				requires = {"diggy"}, | ||||
| 				max = 1, | ||||
| 				max = 5, | ||||
| 				objective = { | ||||
| 					dig = {"default:stone_with_diamond"} | ||||
| 				} | ||||
| @@ -111,27 +84,72 @@ for qname, quest in pairs(mff.quests.quests) do | ||||
| 	local ret = quests.register_quest(mff.QPREFIX .. qname, quest) | ||||
| end | ||||
|  | ||||
| -- TODO | ||||
| -- implement magical iterator, going through BOTH the simple quests | ||||
| -- AND tasked quests objectives, returning a tuple like this: | ||||
| -- questname, questdef, taskname (nil?), taskdef (nil?), objective_container (that is, either questdef or taskdef), pointer_to_function_to_update_the_objective_progress_with_only_one_parameter_the_others_being_automagically_passed_to_the_quests_API_so_that_we_dont_have_to_write_ifs_and_elses_everywhere_to_handle_both_quest_and_tasks_cases_because_it_would_give_crap_code | ||||
|  | ||||
| minetest.register_on_dignode(function(pos, oldnode, digger) | ||||
| 	if not digger or digger.is_fake_player then return end | ||||
| 	local pname = digger:get_player_name() | ||||
| -- The callback function parameters are as follows: | ||||
| --   questname, questdef, | ||||
| --   taskname (nil?), taskdef (nil?), | ||||
| --   objective_container (that is, either questdef or taskdef), | ||||
| --   objective (=objectives_container.objectives), | ||||
| --   function_to_update_the_objective_progress(value) | ||||
| local function iterate_through_objectives(pname, callback) | ||||
| 	for qname, quest in pairs(mff.quests.quests) do | ||||
| 		if quest.tasks then | ||||
| 			for tname, task in pairs(quest.tasks) do | ||||
| 				if quests.is_task_visible(pname, mff.QPREFIX .. qname, tname) | ||||
| 					and not quests.is_task_disabled(pname, mff.QPREFIX .. qname, tname) | ||||
| 					and task.objective.dig then | ||||
| 					if table.contains(task.objective.dig, oldnode.name) then | ||||
| 						quests.update_quest_task(pname, mff.QPREFIX .. qname, tname, 1) | ||||
| 					end | ||||
| 				if not quests.is_task_disabled(pname, mff.QPREFIX .. qname, tname) then | ||||
| 					callback(qname, quest, tname, task, task, task.objective, function (value) | ||||
| 						quests.update_quest_task(pname, mff.QPREFIX .. qname, tname, value) | ||||
| 					end) | ||||
| 				end | ||||
| 			end | ||||
| 		else | ||||
| 			callback(qname, quest, nil, nil, quest, quest.objective, function (value) | ||||
| 				quests.update_quest(pname, mff.QPREFIX .. qname, value) | ||||
| 			end) | ||||
| 		end | ||||
| 	end | ||||
| end | ||||
|  | ||||
| local function contains_node_or_group(table, element) | ||||
| 	for _, value in pairs(table) do | ||||
| 		if value == element or -- Simple node match | ||||
| 		   (value:len() > 6 and value:sub(0,6) == "group:" and | ||||
| 		   minetest.get_item_group(element, value:sub(7)) > 0) then -- Group | ||||
| 			return true | ||||
| 		end | ||||
| 	end | ||||
| 	return false | ||||
| end | ||||
|  | ||||
| -- Quest objective: node digging | ||||
| minetest.register_on_dignode(function(pos, oldnode, digger) | ||||
| 	if not digger or digger.is_fake_player then return end | ||||
| 	local pname = digger:get_player_name() | ||||
| 	iterate_through_objectives(pname, function (_, _, _, _, _, objective, update) | ||||
| 		if objective.dig and contains_node_or_group(objective.dig, oldnode.name) then | ||||
| 			update(1) | ||||
| 		end | ||||
| 	end) | ||||
| end) | ||||
|  | ||||
| -- Quest objective: node punching | ||||
| minetest.register_on_punchnode(function(pos, node, puncher, pointed_thing) | ||||
| 	if not puncher or puncher.is_fake_player then return end | ||||
| 	local pname = puncher:get_player_name() | ||||
| 	iterate_through_objectives(pname, function (_, _, _, _, _, objective, update) | ||||
| 		if objective.punch and contains_node_or_group(objective.punch, node.name) then | ||||
| 			update(1) | ||||
| 		end | ||||
| 	end) | ||||
| end) | ||||
|  | ||||
| -- Quest objective: node placement | ||||
| minetest.register_on_placenode(function(pos, newnode, placer, oldnode, itemstack, pointed_thing) | ||||
| 	if not placer or placer.is_fake_player then return end | ||||
| 	local pname = placer:get_player_name() | ||||
| 	iterate_through_objectives(pname, function (_, _, _, _, _, objective, update) | ||||
| 		if objective.place and contains_node_or_group(objective.place, newnode.name) then | ||||
| 			update(1) | ||||
| 		end | ||||
| 	end) | ||||
| end) | ||||
|  | ||||
| minetest.register_on_joinplayer(function (player) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user