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
|