forked from VoxeLibre/VoxeLibre
59 lines
1.5 KiB
Lua
59 lines
1.5 KiB
Lua
local math_random = math.random
|
|
|
|
|
|
--generic call for sound handler for mobs (data access)
|
|
mobs.play_sound = function(self,sound)
|
|
local soundinfo = self.sounds
|
|
|
|
if not soundinfo then
|
|
return
|
|
end
|
|
|
|
local play_sound = soundinfo[sound]
|
|
|
|
if not play_sound then
|
|
return
|
|
end
|
|
|
|
mobs.play_sound_handler(self, play_sound)
|
|
end
|
|
|
|
|
|
--generic sound handler for mobs
|
|
mobs.play_sound_handler = function(self, sound)
|
|
local pitch = (100 + math_random(-15,15) + math_random()) / 100
|
|
local distance = self.sounds.distance or 16
|
|
|
|
minetest.sound_play(sound, {
|
|
object = self.object,
|
|
gain = 1.0,
|
|
max_hear_distance = distance,
|
|
pitch = pitch,
|
|
}, true)
|
|
end
|
|
|
|
|
|
--random sound timing handler
|
|
mobs.random_sound_handling = function(self,dtime)
|
|
|
|
self.random_sound_timer = self.random_sound_timer - dtime
|
|
|
|
--play sound and reset timer
|
|
if self.random_sound_timer <= 0 then
|
|
mobs.play_sound(self,"random")
|
|
self.random_sound_timer = math_random(self.random_sound_timer_min,self.random_sound_timer_max)
|
|
end
|
|
end
|
|
|
|
--used for playing a non-mob internal sound at random pitches
|
|
mobs.play_sound_specific = function(self,soundname)
|
|
local pitch = (100 + math_random(-15,15) + math_random()) / 100
|
|
local distance = self.sounds.distance or 16
|
|
|
|
minetest.sound_play(soundname, {
|
|
object = self.object,
|
|
gain = 1.0,
|
|
max_hear_distance = distance,
|
|
pitch = pitch,
|
|
}, true)
|
|
end |