dm shoot sound

pull/4/head
HybridDog 2015-12-13 15:59:15 +01:00
parent c49cc4726c
commit 2fdcd61b95
3 changed files with 93 additions and 40 deletions

55
api.lua
View File

@ -533,9 +533,55 @@ function mobs:register_arrow(name, def)
hit_player = def.hit_player,
hit_node = def.hit_node,
count = 0,
sounds = {},
on_step = function(self, dtime)
self.object:set_properties({textures = {"mobs_fireball.png^[transform"..math.random(0,7)}})
local vel = self.object:getvelocity()
local quiet = vector.equals(vel, {x=0,y=0,z=0})
if quiet
and (not self.vel or vector.equals(self.vel, {x=0,y=0,z=0})) then
for _,i in pairs(self.sounds) do
minetest.sound_stop(i)
end
self.object:remove()
return
end
if not self.vel then
self.vel = vel
self.object:setvelocity({x=0,y=0,z=0})
local newp = vector.normalize({x=vel.x, y=0, z=vel.z})
self.object:setpos(vector.add(self.object:getpos(), newp))
for _,i in pairs(self.sounds) do
minetest.sound_stop(i)
end
end
local pos = self.object:getpos()
if minetest.env:get_node(self.object:getpos()).name ~= "air" then
if quiet then
local count = self.count
if count >= 60 then
minetest.sound_play("mobs_fireball", {pos = pos})
for _,i in pairs(self.sounds) do
minetest.sound_stop(i)
end
self.object:setvelocity(self.vel)
return
end
count = count+1
self.sounds[count] = minetest.sound_play("mobs_dm", {
pos = pos,
gain = count/50,
loop = true
})
self.count = count
return
end
for _,i in pairs(self.sounds) do
minetest.sound_stop(i)
end
if minetest.env:get_node(pos).name ~= "air" then
self.hit_node(self, pos, node)
self.object:remove()
return
@ -548,6 +594,13 @@ function mobs:register_arrow(name, def)
return
end
end
end,
on_serialize = function(self)
self.object:remove()
for _,i in pairs(self.sounds) do
minetest.sound_stop(i)
end
end,
})
end

View File

@ -376,9 +376,9 @@ mobs:register_mob("mobs:dungeon_master", {
attack_type = "shoot",
arrow = "mobs:fireball",
shoot_interval = 2.5,
sounds = {
--[[sounds = {
attack = "mobs_fireball",
},
},--]]
animation = {
stand_start = 0,
stand_end = 19,

BIN
sounds/mobs_dm.ogg Normal file

Binary file not shown.