split it into separate files
This commit is contained in:
86
scripts/powerball.lua
Normal file
86
scripts/powerball.lua
Normal file
@@ -0,0 +1,86 @@
|
||||
stone_sounds = {}
|
||||
stone_sounds.footstep = {name = "stone_walk", gain = 1.0}
|
||||
stone_sounds.dug = {name = "stone_break", gain = 1.0}
|
||||
stone_sounds.place = {name = "block_place", gain = 1.0}
|
||||
glass_sounds = {}
|
||||
glass_sounds.footstep = {name = "glass_walk", gain = 1.0}
|
||||
glass_sounds.dug = {name = "glass_break", gain = 1.0}
|
||||
glass_sounds.place = {name = "block_place", gain = 1.0}
|
||||
wood_sounds = {}
|
||||
wood_sounds.footstep = {name = "wood_walk", gain = 1.0}
|
||||
wood_sounds.dug = {name = "wood_break", gain = 1.0}
|
||||
wood_sounds.place = {name = "block_place", gain = 1.0}
|
||||
new = 0
|
||||
minetest.register_entity(
|
||||
"portalgun:powerball",
|
||||
{
|
||||
hp_max = 1000,
|
||||
physical = true,
|
||||
weight = 0,
|
||||
collisionbox = {-0.4, -0.4, -0.4, 0.4, 0.4, 0.4},
|
||||
visual = "sprite",
|
||||
visual_size = {x = 1.1, y = 1.1},
|
||||
textures = {"portalgun_powrball.png"},
|
||||
initial_sprite_basepos = {x = 0, y = 0},
|
||||
is_visible = true,
|
||||
makes_footstep_sound = false,
|
||||
automatic_rotate = 0,
|
||||
portalgun = 2,
|
||||
powerball = 1,
|
||||
on_activate = function(self, staticdata)
|
||||
if new == 0 then
|
||||
self.object:remove()
|
||||
return self
|
||||
end
|
||||
new = 0
|
||||
local pos = self.object:get_pos()
|
||||
self.sound = minetest.sound_play("portalgun_powerball", {pos = pos, max_hear_distance = 10, gain = 0.5})
|
||||
minetest.sound_play("portalgun_powerballbonce", {pos = pos, max_hear_distance = 10, gain = 1})
|
||||
end,
|
||||
on_step = function(self, dtime)
|
||||
self.timer = self.timer + dtime
|
||||
if self.timer < 0.2 then
|
||||
return self
|
||||
end
|
||||
self.timer = 0
|
||||
local pos = self.object:get_pos()
|
||||
for i, ob in pairs(minetest.get_objects_inside_radius(pos, 2)) do
|
||||
if
|
||||
ob:is_player() or
|
||||
(ob:get_luaentity() and ob:get_luaentity().portalgun ~= 1 and ob:get_luaentity().wsc == nil and
|
||||
ob:get_luaentity().powerball ~= 1)
|
||||
then
|
||||
ob:set_hp(0)
|
||||
end
|
||||
end
|
||||
self.timer2 = self.timer2 + 1
|
||||
self.timer3 = self.timer3 + 1
|
||||
if self.timer3 >= 9 then
|
||||
self.timer3 = 0
|
||||
minetest.sound_stop(self.sound)
|
||||
self.sound = minetest.sound_play("portalgun_powerball", {pos = pos, max_hear_distance = 10, gain = 0.5})
|
||||
end
|
||||
if self.timer2 > 40 then
|
||||
minetest.sound_stop(self.sound)
|
||||
self.object:set_hp(0)
|
||||
return self
|
||||
end
|
||||
local v = self.object:get_velocity()
|
||||
local nextn = {x = pos.x + (v.x) / 3, y = pos.y + (v.y) / 3, z = pos.z + (v.z) / 3}
|
||||
local nname = minetest.get_node(nextn).name
|
||||
if minetest.registered_nodes[nname].walkable then
|
||||
if nname == "portalgun:powerballtarget" and mesecon then
|
||||
mesecon.receptor_on(nextn)
|
||||
minetest.get_node_timer(nextn):start(5)
|
||||
self.object:remove()
|
||||
end
|
||||
self.object:set_velocity({x = v.x * -1, y = v.y * -1, z = v.z * -1})
|
||||
minetest.sound_play("portalgun_powerballbonce", {pos = pos, max_hear_distance = 10, gain = 1})
|
||||
end
|
||||
end,
|
||||
timer = 0,
|
||||
timer2 = 0,
|
||||
timer3 = 0,
|
||||
sound = {}
|
||||
}
|
||||
)
|
Reference in New Issue
Block a user