Add in much better nether teleport effect
parent
737bde8ba4
commit
a66d5449f2
45
nether.lua
45
nether.lua
|
@ -7,6 +7,8 @@ local nether_id = nil --the nether incoming
|
|||
local cool_off_timer = 0 --use this to stop players teleporting back and forth
|
||||
local init_sound = nil
|
||||
local teleport_sound = nil
|
||||
local opacity = 0
|
||||
|
||||
minetest.register_globalstep(function(dtime)
|
||||
if not minetest.localplayer or not minetest.camera then
|
||||
return
|
||||
|
@ -25,31 +27,32 @@ minetest.register_globalstep(function(dtime)
|
|||
local node = minetest.get_node_or_nil(pos)
|
||||
|
||||
if node and node.name == "nether:portal" and cool_off_timer == 0 then
|
||||
if init_sound == nil then
|
||||
init_sound = minetest.sound_play("portal_initialize",{gain=0,pitch=math.random(70,90)/100})
|
||||
minetest.sound_fade(init_sound, 0.34, 1)
|
||||
end
|
||||
if hud_bg_id == nil then
|
||||
hud_bg_id = minetest.localplayer:hud_add({
|
||||
hud_elem_type = "image", -- see HUD element types, default "text"
|
||||
position = {x=0.5, y=0.5},
|
||||
name = "", -- default ""
|
||||
scale = {x=-100, y=-100}, -- default {x=0,y=0}
|
||||
text = "darkness.png", -- default ""
|
||||
text = "darkness.png^[opacity:"..opacity, -- default ""
|
||||
})
|
||||
hud_id = minetest.localplayer:hud_add({
|
||||
hud_elem_type = "image", -- see HUD element types, default "text"
|
||||
position = {x=0.5, y=0.5},
|
||||
name = "", -- default ""
|
||||
scale = {x=-1, y=-1}, -- default {x=0,y=0}
|
||||
text = "nether_portal_gui.png", -- default ""
|
||||
text = "nether_portal_gui.png^[opacity:"..opacity, -- default ""
|
||||
})
|
||||
nether_id = minetest.localplayer:hud_add({
|
||||
hud_elem_type = "image", -- see HUD element types, default "text"
|
||||
position = {x=0.5, y=0.5},
|
||||
name = "", -- default ""
|
||||
scale = {x=0, y=0}, -- default {x=0,y=0}
|
||||
text = "darkness.png", -- default ""
|
||||
text = "darkness.png^[opacity:"..opacity, -- default ""
|
||||
})
|
||||
init_sound = minetest.sound_play("portal_initialize",{gain=0,pitch=math.random(70,90)/100})
|
||||
minetest.sound_fade(init_sound, 0.34, 1)
|
||||
|
||||
else
|
||||
--make the hud zoom in
|
||||
local scale = minetest.localplayer:hud_get(hud_id).scale.x
|
||||
|
@ -58,7 +61,13 @@ minetest.register_globalstep(function(dtime)
|
|||
elseif scale < -100 then
|
||||
scale = -100
|
||||
end
|
||||
opacity = -scale * 2.55
|
||||
minetest.localplayer:hud_change(hud_id, "scale", {x=scale,y=scale})
|
||||
minetest.localplayer:hud_change(hud_id, "text", "nether_portal_gui.png^[opacity:"..opacity)
|
||||
|
||||
minetest.localplayer:hud_change(hud_bg_id, "text", "darkness.png^[opacity:"..opacity)
|
||||
|
||||
minetest.localplayer:hud_change(nether_id, "text", "darkness.png^[opacity:"..opacity)
|
||||
end
|
||||
elseif hud_bg_id and hud_id then
|
||||
--play spooky sounds
|
||||
|
@ -78,8 +87,15 @@ minetest.register_globalstep(function(dtime)
|
|||
elseif scale > -1 then
|
||||
scale = -1
|
||||
end
|
||||
opacity = -scale * 2.55
|
||||
minetest.localplayer:hud_change(hud_id, "scale", {x=scale,y=scale})
|
||||
|
||||
minetest.localplayer:hud_change(hud_id, "text", "nether_portal_gui.png^[opacity:"..opacity)
|
||||
|
||||
minetest.localplayer:hud_change(hud_bg_id, "text", "darkness.png^[opacity:"..opacity)
|
||||
|
||||
minetest.localplayer:hud_change(nether_id, "text", "darkness.png^[opacity:"..opacity)
|
||||
|
||||
if scale == -1 then
|
||||
minetest.localplayer:hud_remove(hud_bg_id)
|
||||
minetest.localplayer:hud_remove(hud_id)
|
||||
|
@ -87,9 +103,10 @@ minetest.register_globalstep(function(dtime)
|
|||
nether_id = nil
|
||||
hud_bg_id = nil
|
||||
hud_id = nil
|
||||
opacity = 0
|
||||
end
|
||||
--teleport complete animation
|
||||
else
|
||||
elseif cool_off_timer > 0 then
|
||||
local scale = minetest.localplayer:hud_get(nether_id).scale.x
|
||||
if scale == 0 then scale = -1 end
|
||||
if scale > -100 then
|
||||
|
@ -97,7 +114,18 @@ minetest.register_globalstep(function(dtime)
|
|||
elseif scale < -100 then
|
||||
scale = -100
|
||||
end
|
||||
|
||||
opacity = (100+scale) * 2.55
|
||||
minetest.localplayer:hud_change(nether_id, "scale", {x=scale,y=scale})
|
||||
|
||||
|
||||
minetest.localplayer:hud_change(hud_id, "text", "nether_portal_gui.png^[opacity:"..opacity)
|
||||
|
||||
minetest.localplayer:hud_change(hud_bg_id, "text", "darkness.png^[opacity:"..opacity)
|
||||
|
||||
minetest.localplayer:hud_change(nether_id, "text", "darkness.png^[opacity:"..opacity)
|
||||
|
||||
|
||||
if scale == -100 then
|
||||
minetest.localplayer:hud_remove(hud_bg_id)
|
||||
minetest.localplayer:hud_remove(hud_id)
|
||||
|
@ -105,7 +133,10 @@ minetest.register_globalstep(function(dtime)
|
|||
nether_id = nil
|
||||
hud_bg_id = nil
|
||||
hud_id = nil
|
||||
opacity = 0
|
||||
end
|
||||
else
|
||||
init_sound = nil
|
||||
end
|
||||
elseif hud_bg_id and hud_id then
|
||||
minetest.localplayer:hud_remove(hud_bg_id)
|
||||
|
|
Loading…
Reference in New Issue