add df_ambience

This commit is contained in:
FaceDeer 2022-08-13 19:01:31 -06:00
parent 8f2a800e60
commit de3e15e87b
114 changed files with 397 additions and 0 deletions

24
df_ambience/LICENSE.txt Normal file
View File

@ -0,0 +1,24 @@
Sounds are under various licenses, see the license.txt file in the /sounds directory for details and also the metadata in each sound file.
License for Code
----------------
Copyright (C) 2022 FaceDeer, TenPlus1 (Ambience Redo mod), Neuromancer (Immersive Sounds mod)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

136
df_ambience/init.lua Normal file
View File

@ -0,0 +1,136 @@
df_ambience = {}
local pplus = minetest.get_modpath("playerplus")
local S = minetest.get_translator(minetest.get_current_modname())
local modpath = minetest.get_modpath(minetest.get_current_modname())
local radius = 6
local registered_sets = {}
local set_nodes = {}
local muted_players = {}
local ensure_set_node = function(node_name)
for _, existing_node in pairs(set_nodes) do
if node_name == existing_node then
return
end
end
table.insert(set_nodes, node_name)
end
df_ambience.add_set = function(def)
assert(def)
assert(def.sounds)
if def.nodes then
for _, node_name in pairs(def.nodes) do
ensure_set_node(node_name)
end
end
def.frequency = def.frequency or 0.05
table.insert(registered_sets, def)
end
local timer = 0
local random = math.random
local get_player_data = function(player, name)
-- get head level node at player position
local pos = player:get_pos()
if not pos then return end
local prop = player:get_properties()
local eyeh = prop.eye_height or 1.47 -- eye level with fallback
pos.y = pos.y + eyeh
local nod_head = pplus and name and playerplus[name]
and playerplus[name].nod_head or minetest.get_node(pos).name
pos.y = pos.y - eyeh
-- get all set nodes around player
local ps, cn = minetest.find_nodes_in_area(
{x = pos.x - radius, y = pos.y - radius, z = pos.z - radius},
{x = pos.x + radius, y = pos.y + radius, z = pos.z + radius}, set_nodes)
return {
pos = pos,
head_node = nod_head,
biome = df_caverns.get_biome(pos),
totals = cn
}
end
local check_nodes = function(totals, nodes)
for _, node in pairs(nodes) do
if (totals[node] or 0) > 1 then
return true
end
end
return false
end
-- selects sound set
local get_ambience = function(player, name)
local player_data
-- loop through sets in order and choose first that meets its conditions
for _, set in ipairs(registered_sets) do
if random() < set.frequency then
local check_passed
local sound_check = set.sound_check
local set_nodes = set.nodes
if sound_check or set_nodes then
player_data = player_data or get_player_data(player, name)
end
if ((not set_nodes) or check_nodes(player_data.totals, set_nodes)) and
((not sound_check) or sound_check(player_data)) then
return set
end
end
end
end
minetest.register_globalstep(function(dtime)
-- one second timer
timer = timer + dtime
if timer < 1 then return end
timer = 0
local player_name
-- loop through players
for _, player in pairs(minetest.get_connected_players()) do
player_name = player:get_player_name()
if not muted_players[player_name] then
local set = get_ambience(player, player_name)
if set then
-- choose random sound from set
number = random(#set.sounds)
ambience = set.sounds[number]
-- play sound
minetest.sound_play(ambience.name, {
to_player = player_name,
gain = ambience.gain or 0.3,
pitch = ambience.pitch or 1.0,
}, true)
end
end
end
end)
minetest.register_chatcommand("mute_df_ambience", {
params = "",
description = S("Mutes or unmutes ambient sounds in deep caverns"),
func = function(name, param)
local message
if muted_players[name] then
message = S("Unmuted")
muted_players[name] = nil
else
message = S("Muted, no new sounds will start playing once current sounds finish")
muted_players[name] = true
end
return true, message
end
})
dofile(modpath.."/soundsets.lua")

View File

@ -0,0 +1,9 @@
# textdomain: df_ambience
### init.lua ###
Muted, no new sounds will start playing once current sounds finish=
Mutes or unmutes ambient sounds in deep caverns=
Unmuted=

3
df_ambience/mod.conf Normal file
View File

@ -0,0 +1,3 @@
name = df_ambience
depends = df_caverns, df_dependencies
optional_depends = chasms, playerplus, df_underworld_items

View File

@ -0,0 +1,52 @@
CC-0:
howling 2 - https://freesound.org/people/PhonosUPF/sounds/499700/
howling 3 - https://freesound.org/people/PhonosUPF/sounds/499701/
howling 4 - https://freesound.org/people/PhonosUPF/sounds/499703/
howling 5 - https://freesound.org/people/PhonosUPF/sounds/499706/
howling 6 - https://freesound.org/people/PhonosUPF/sounds/499704/
howling 7 - https://freesound.org/people/PhonosUPF/sounds/499705/
howling 8 - https://freesound.org/people/PhonosUPF/sounds/499702/
cave monsters - https://freesound.org/people/Trebblofang/sounds/176930/
dark cave factory atmo - https://freesound.org/people/szegvari/sounds/583474/
bird noise - https://freesound.org/people/SpaceJoe/sounds/507257/
solitary bird song - https://freesound.org/people/nuncaconoci/sounds/623862/
pig grunting and grumbling - https://freesound.org/people/felix.blume/sounds/158746/
whalesong - https://freesound.org/people/taure/sounds/361423/
200614 fies, close buzzing, periodic, wide stereo 7am - https://freesound.org/people/TRP/sounds/567732/
howler_monkey_jungle_4 - https://freesound.org/people/itsmrjack/sounds/123044/
TRIBAL TOY BONGOS-89 - https://freesound.org/people/TA-AT/sounds/449811/
shamanic drum 1 - https://freesound.org/people/adharca/sounds/275376/
shamanic drum 2 - https://freesound.org/people/adharca/sounds/275377/
cave tribal song - https://freesound.org/people/szegvari/sounds/517317/
ghostly whispers - https://freesound.org/people/dimbark1/sounds/316797/
whisper trail 1 - https://freesound.org/people/Black%20Boe/sounds/22328/
whisper trail 2 - https://freesound.org/people/Black%20Boe/sounds/22329/
whisper trail 3 - https://freesound.org/people/Black%20Boe/sounds/22330/
frogs - https://freesound.org/people/derjuli/sounds/535066/
frog croaking (uk common frog) - https://freesound.org/people/shaunhillyard/sounds/532235/
glitched birds - https://freesound.org/people/soramoosic/sounds/256153/
bird song 03 - https://freesound.org/people/olliehahn12/sounds/474493/
pajaro_palenque - https://freesound.org/people/nicotep/sounds/619305/
CC-BY-A
exotic creature song - https://freesound.org/people/InspectorJ/sounds/469312/
crow slow - https://freesound.org/people/InspectorJ/sounds/418262/
long bird song slow - https://freesound.org/people/IESP/sounds/339907/
bird budgie song - https://freesound.org/people/danielfergusonmusic/sounds/404957/
horse neigh - https://freesound.org/people/dobroide/sounds/18229/
horse whinny - https://freesound.org/people/GoodListener/sounds/322445/
horse nicker - https://freesound.org/people/GoodListener/sounds/322449/
moan - https://freesound.org/people/GoodListener/sounds/322444/
horse snort 2 - https://freesound.org/people/GoodListener/sounds/322454/
braying donkey - ane brayant - https://freesound.org/people/beskhu/sounds/186704/
whale - https://freesound.org/people/Tritus/sounds/186899/
treBccc1 - https://freesound.org/people/tomerbe/sounds/546110/
Tribal memories - https://freesound.org/people/InSintesi/sounds/370353/
Celtic_Drum - https://freesound.org/people/13NHarri/sounds/263974/
whisper5 - thanvannispen
creepywhisper_ambient - https://freesound.org/people/ohnobones/sounds/412769/
bangkok frog - https://freesound.org/people/WIM/sounds/9099/
black casqued hornbill 5-https://freesound.org/people/ERH/sounds/56549/
exotic birds sound - https://freesound.org/people/bolkmar/sounds/423804/

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More