many worldgen mods and gonna try technic now
This commit is contained in:
@@ -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.
|
||||
@@ -0,0 +1,138 @@
|
||||
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
|
||||
local number
|
||||
local ambience
|
||||
|
||||
-- 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")
|
||||
@@ -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=
|
||||
@@ -0,0 +1,4 @@
|
||||
name = df_ambience
|
||||
description = Ambient wildlife sounds for DFCaverns
|
||||
depends = df_caverns, df_dependencies
|
||||
optional_depends = chasms, playerplus, df_underworld_items
|
||||
@@ -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/
|
||||
avalanche - https://freesound.org/people/mystiscool/sounds/7141/
|
||||
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.
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
Reference in New Issue
Block a user