Browse Source

Add furnace sounds (#2569)

Two sounds are played; one while the furnace is active (sound used is "fire_fire") and one after an item is cooked (sound used is "default_cool_lava").
An0n3m0us 3 years ago
parent
commit
0a96bac46d

+ 4 - 0
mods/default/README.txt

@@ -340,6 +340,10 @@ sonictechtonic (CC BY 3.0):
 https://www.freesound.org/people/sonictechtonic/sounds/241872/
   player_damage.ogg
 
+iankath (CC0 1.0)
+https://freesound.org/people/iankath/sounds/173991/
+  default_furnace_active.ogg
+
 
 Models
 ------

+ 13 - 0
mods/default/furnace.lua

@@ -113,6 +113,9 @@ local function furnace_node_timer(pos, elapsed)
 	local srclist, fuellist
 	local dst_full = false
 
+	local timer_elapsed = meta:get_int("timer_elapsed") or 0
+	meta:set_int("timer_elapsed", timer_elapsed + 1)
+
 	local cookable, cooked
 	local fuel
 
@@ -154,6 +157,9 @@ local function furnace_node_timer(pos, elapsed)
 					else
 						dst_full = true
 					end
+					-- Play cooling sound
+					minetest.sound_play("default_cool_lava",
+						{pos = pos, max_hear_distance = 16, gain = 0.1}, true)
 				else
 					-- Item could not be cooked: probably missing fuel
 					update = true
@@ -237,6 +243,12 @@ local function furnace_node_timer(pos, elapsed)
 		swap_node(pos, "default:furnace_active")
 		-- make sure timer restarts automatically
 		result = true
+
+		-- Play sound every 5 seconds while the furnace is active
+		if timer_elapsed == 0 or (timer_elapsed+1) % 5 == 0 then
+			minetest.sound_play("default_furnace_active",
+				{pos = pos, max_hear_distance = 16, gain = 0.5}, true)
+		end
 	else
 		if fuellist and not fuellist[1]:is_empty() then
 			fuel_state = S("@1%", 0)
@@ -245,6 +257,7 @@ local function furnace_node_timer(pos, elapsed)
 		swap_node(pos, "default:furnace")
 		-- stop timer on the inactive furnace
 		minetest.get_node_timer(pos):stop()
+		meta:set_int("timer_elapsed", 0)
 	end
 
 

BIN
mods/default/sounds/default_furnace_active.ogg