From 26bbeace262dc98d451c7ba9bace233151812fc2 Mon Sep 17 00:00:00 2001 From: Neuromancer Date: Sat, 15 Sep 2012 08:58:00 -0500 Subject: [PATCH] .28 waves trump sloshing water, walking in water Splash not swim sound .28 Major reorg of water code. Also waves trump sloshing water, walking in water Splash not swim sound --- ambience.zip | Bin 9451327 -> 9451583 bytes ambience/init.lua | 108 +++++++++++++++++++++++++++++++--------------- 2 files changed, 74 insertions(+), 34 deletions(-) diff --git a/ambience.zip b/ambience.zip index b8b1b85b50a083e7dbdb0b8397b759bcb037d2e5..c97f0b6028126a42475cf3e88f42b26757508789 100644 GIT binary patch delta 4744 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 Bf4~3$ delta 4487 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 E02D(P4gdfE diff --git a/ambience/init.lua b/ambience/init.lua index 784d884..bcf588b 100644 --- a/ambience/init.lua +++ b/ambience/init.lua @@ -1,7 +1,7 @@ -------------------------------------------------------------------------------------------------------- ---Ambiance Configuration for version .27 ---Fixed removed occasional beach wave sound when treading water --- was caused by the bottom node we find is air which leads to surface noise! +--Ambiance Configuration for version .28 +--working on treading water already trumps beach, standing in water should not. +--moving while standing in water should splash not swim. local max_frequency_all = 1000 --the larger you make this number the lest frequent ALL sounds will happen recommended values between 100-2000. @@ -38,6 +38,10 @@ local music_volume = 0.3 local counter=0--***************** local last_x_pos = 0 local last_z_pos = 0 +local node_under_feet +local node_at_upper_body +local node_at_lower_body + local played_on_start = false local night = { handler = {}, @@ -148,6 +152,11 @@ local water_surface = { {name="lake_waves_2_calm", length=9.5}, {name="lake_waves_2_variety", length=13.1} } +local splashing_water = { + handler = {}, + frequency = 1000, + {name="Splash", length=1.22, gain=1} +} local flowing_water = { handler = {}, @@ -244,39 +253,70 @@ local atleast_nodes_in_grid = function(pos, search_distance, height, node_name, return false end +local get_immediate_nodes = function(pos) + pos.y = pos.y-1 + node_under_feet = minetest.env:get_node(pos).name + pos.y = pos.y+2.2 + node_at_upper_body = minetest.env:get_node(pos).name + pos.y = pos.y-1.19 + node_at_lower_body = minetest.env:get_node(pos).name + pos.y = pos.y+0.99 --1.6 + --minetest.chat_send_all("node_under_feet(" .. nodename .. ")") +end + local get_ambience = function(player) + local player_is_moving = false + local standing_in_water = false local pos = player:getpos() - local water_surface_found = false - pos.y = pos.y+1.2 - local nodename = minetest.env:get_node(pos).name - --minetest.chat_send_all("top nodename found(" .. nodename .. ")") - if string.find(nodename, "default:water") then + get_immediate_nodes(pos) + + if last_x_pos ~=pos.x or last_z_pos ~=pos.z then + player_is_moving = true + end + last_x_pos =pos.x + last_z_pos =pos.z + + if string.find(node_at_upper_body, "default:water") then if music then return {water=water, water_frequent=water_frequent, music=music} else return {water=water, water_frequent=water_frequent} end - elseif nodename == "air" then - pos.y = pos.y-1.19 --1.8 - local nodename = minetest.env:get_node(pos).name - --minetest.chat_send_all("bottom nodename found(" .. nodename .. ")") - pos.y = pos.y+0.99 --1.6 - if string.find(nodename, "default:water") then + elseif node_at_upper_body == "air" then + if string.find(node_at_lower_body, "default:water") then --minetest.chat_send_all("bottom counted as water") - if last_x_pos ~=pos.x or last_z_pos ~=pos.z then - --minetest.chat_send_all("swimming move found") - last_x_pos =pos.x - last_z_pos =pos.z - if music then - return {swimming_frequent=swimming_frequent, music=music} - else - return {swimming_frequent} - end + --we found air at upperbody, and water at lower body. Now there are 4 possibilities: + --Key: under feet, moving or not + --swimming w, m swimming + --walking in water nw, m splashing + --treading water w, nm sloshing + --standing in water nw, nm beach trumps, then sloshing + if player_is_moving then + if string.find(node_under_feet, "default:water") then + if music then + return {swimming_frequent=swimming_frequent, music=music} + else + return {swimming_frequent} + end + else --didn't find water under feet: walking in water + if music then + return {splashing_water=splashing_water, music=music} + else + return {splashing_water} + end + end + else--player is not moving + if string.find(node_under_feet, "default:water") then + if music then + return {water_surface=water_surface, music=music} + else + return {water_surface} + end + else --didn't find water under feet + standing_in_water = true + end end - last_x_pos =pos.x - last_z_pos =pos.z - water_surface_found = true end end @@ -294,13 +334,7 @@ local get_ambience = function(player) return {flowing_water=flowing_water, flowing_water2=flowing_water2} end end - if water_surface_found then - if music then - return {water_surface=water_surface, music=music} - else - return {water_surface} - end - end + --if we are near sea level and there is lots of water around the area if pos.y < 7 and pos.y >0 and atleast_nodes_in_grid(pos, 60, 1, "default:water_source", 51 ) then @@ -310,7 +344,13 @@ local get_ambience = function(player) return {beach=beach, beach_frequent=beach_frequent} end end - + if standing_in_water then + if music then + return {water_surface=water_surface, music=music} + else + return {water_surface} + end + end desert_in_range = (nodes_in_range(pos, 6, "default:desert_sand")+nodes_in_range(pos, 6, "default:desert_stone"))