@@ -300,8 +300,9 @@ found = true end end if not found then + if user.sound then minetest.sound_fade(user.sound,1,0) end portal_context.users[name] = nil end end end @@ -314,8 +315,12 @@ if not portal_context.users[pname] then portal_context.users[pname] = { time = 0, portal = pos } end local user = portal_context.users[pname] if not vector.equals(pos,user.portal) then + if user.sound then + minetest.sound_fade(user.sound,1,0) + user.sound = nil + end user.time = 0 user.portal = pos end local cap = sorcery.ley.netcaps(pos,delta) @@ -325,8 +330,11 @@ sorcery.lib.node.preload(user.dest, u.object) end if not user.dest then goto skippad end local fac = math.min(1,(user.time / constants.portal_jump_time)) + if user.time == 0 then + user.sound = minetest.sound_play('sorcery_windup', {pos=pos}) + end minetest.add_particlespawner { time = 1, amount = 100 + (fac * 200); minsize = 0.2 + fac*0.7, maxsize = 0.4 + fac*0.9; minvel = {y = 0.2, x=0,z=0}, maxvel = {y = 0.5, x=0,z=0}; @@ -365,8 +373,12 @@ end -- hack to try and swat an unkillable fucking impossibug if user.time > constants.portal_jump_time * 2 then user.time = 0 + if user.sound then + minetest.sound_stop(user.sound) + user.sound = nil + end elseif user.time >= constants.portal_jump_time then local dd = portal_disposition(portal_composition(user.dest)) if #dd.freepads > 0 then local destpad = dd.freepads[math.random(#dd.freepads)].pad @@ -395,10 +407,17 @@ aspect_w = 16, aspect_h = 16; }; } end + if user.sound then + minetest.sound_fade(user.sound,1,0) + user.sound = nil + end user.dest = nil user.time = 0 + user.sound = nil + minetest.sound_play('sorcery_zap',{pos=pos},true) + minetest.sound_play('sorcery_zap',{pos=destpad},true) portal_context.users[pname] = nil u.object:set_pos(vector.add(destpad, {y=0.5,z=0,x=0})) end else