mirror of
				https://github.com/sys4-fr/server-nalc.git
				synced 2025-10-31 12:35:22 +01:00 
			
		
		
		
	- Use a table to store bounce values - Trampolines now absorb up to 95% of falling dammage
		
			
				
	
	
		
			85 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Lua
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Lua
		
	
	
		
			Executable File
		
	
	
	
	
| local trampolinebox = {
 | |
| 	type = "fixed",
 | |
| 	fixed = {
 | |
| 		{-0.5, -0.2, -0.5,  0.5,    0,  0.5},
 | |
| 
 | |
| 		{-0.5, -0.5, -0.5, -0.4, -0.2, -0.4},
 | |
| 		{ 0.4, -0.5, -0.5,  0.5, -0.2, -0.4},
 | |
| 		{ 0.4, -0.5,  0.4,  0.5, -0.2,  0.5},
 | |
| 		{-0.5, -0.5,  0.4, -0.4, -0.2,  0.5},
 | |
| 		}
 | |
| }
 | |
| 
 | |
| local cushionbox = {
 | |
| 	type = "fixed",
 | |
| 	fixed = {
 | |
| 		{-0.5, -0.5, -0.5,  0.5, -0.3,  0.5},
 | |
| 		}
 | |
| }
 | |
| 
 | |
| local trampoline_punch = function(pos, node)
 | |
| 	local id = string.sub(node.name, #node.name)
 | |
| 	id = id + 1
 | |
| 	if id == 7 then id = 1 end
 | |
| 	minetest.add_node(pos, {name = string.sub(node.name, 1, #node.name - 1)..id})
 | |
| end
 | |
| 
 | |
| local u = 6
 | |
| 
 | |
| local bounces = {90, 100, 110, 120, 130, 140}
 | |
| 
 | |
| for i = 1, u do
 | |
| 	local bnc_pct = bounces[i]
 | |
| 	minetest.register_node("jumping:trampoline_" .. i, {
 | |
| 		description = "Trampoline (bounce : " .. bnc_pct .. "%)",
 | |
| 		drawtype = "nodebox",
 | |
| 		node_box = trampolinebox,
 | |
| 		selection_box = trampolinebox,
 | |
| 		paramtype = "light",
 | |
| 		on_punch = trampoline_punch,
 | |
| 		tiles = {
 | |
| 			"jumping_trampoline_top.png",
 | |
| 			"jumping_trampoline_bottom.png",
 | |
| 			"jumping_trampoline_sides.png^jumping_trampoline_sides_overlay_" .. i .. ".png",
 | |
| 		},
 | |
| 		drop = "jumping:trampoline_1",
 | |
| 		groups = {dig_immediate = 2, bouncy = bnc_pct, fall_damage_add_percent = -95},
 | |
| 	})
 | |
| end
 | |
| 
 | |
| minetest.register_node("jumping:cushion", {
 | |
| 	description = "Cushion",
 | |
| 	drawtype = "nodebox",
 | |
| 	node_box = cushionbox,
 | |
| 	selection_box = cushionbox,
 | |
| 	paramtype = "light",
 | |
| 	tiles = {
 | |
| 		"jumping_cushion_tb.png",
 | |
| 		"jumping_cushion_tb.png",
 | |
| 		"jumping_cushion_sides.png",
 | |
| 	},
 | |
| 	groups = {dig_immediate = 2, disable_jump = 1, fall_damage_add_percent = -100},
 | |
| })
 | |
| 
 | |
| minetest.register_craft({
 | |
| 	output = "jumping:trampoline_1",
 | |
| 	recipe = {
 | |
| 		{"group:ingot", "group:ingot", "group:ingot"},
 | |
| 		{"default:leaves", "default:leaves", "default:leaves"},
 | |
| 		{"default:stick", "default:stick", "default:stick"},
 | |
| 	}
 | |
| })
 | |
| 
 | |
| minetest.register_craft({
 | |
| 	output = "jumping:cushion",
 | |
| 	recipe = {
 | |
| 		{"default:junglegrass", "default:junglegrass", "default:junglegrass"},
 | |
| 		{"default:leaves", "default:leaves", "default:leaves"},
 | |
| 		{"default:stick", "default:stick", "default:stick"},
 | |
| 	}
 | |
| })
 | |
| 
 | |
| if minetest.setting_getbool("log_mods") then
 | |
| 	minetest.log("action", "Carbone: [jumping] loaded.")
 | |
| end
 |