Re-enable "boom" (WIP)

This commit is contained in:
Jordan Irwin 2021-05-05 22:11:25 -07:00
parent 43855a6e6b
commit ea4e576ee6

@ -111,19 +111,26 @@ local def = {
animation_speed = 30, animation_speed = 30,
knockback_level = 2 knockback_level = 2
} }
]]
def.on_activate = function(self, staticdata) local sneeker_on_activate = function(self, staticdata)
--[[
self.yaw = 0 self.yaw = 0
self.anim = 1 self.anim = 1
]]
self.timer = 0 self.timer = 0
self.visualx = 1 self.visualx = 1
--[[
self.jump_timer = 0 self.jump_timer = 0
self.turn_timer = 0 self.turn_timer = 0
self.turn_speed = 0 self.turn_speed = 0
]]
self.powered = false self.powered = false
--[[
self.knockback = false self.knockback = false
self.state = math.random(1, 2) self.state = math.random(1, 2)
self.old_y = self.object:get_pos().y self.old_y = self.object:get_pos().y
]]
local data = core.deserialize(staticdata) local data = core.deserialize(staticdata)
if data and type(data) == "table" then if data and type(data) == "table" then
@ -139,7 +146,60 @@ def.on_activate = function(self, staticdata)
end end
end end
def.on_step = function(self, dtime) local sneeker_on_step = function(self, dtime)
-- DEBUG:
--core.log("Mode: " .. tostring(self.mode))
if self.stunned then return false end
local pos = self.object:get_pos()
local inside = core.get_objects_inside_radius(pos, 10)
self.timer = self.timer+0.01
if self.mode == "follow" and self.visualx < 2 then
if self.hiss == false then
core.sound_play("sneeker_hiss", {pos=pos, gain=1.5, max_hear_distance=2*64})
end
self.visualx = self.visualx+0.05
self.object:set_properties({
visual_size = {x=self.visualx, y=1}
})
self.hiss = true
elseif self.visualx > 1 then
self.visualx = self.visualx-0.05
self.object:set_properties({
visual_size = {x=self.visualx, y=1}
})
self.hiss = false
end
--self.mode = "idle"
for _, object in ipairs(inside) do
if object:is_player() then
self.mode = "follow"
end
end
if self.mode == "follow" then
local inside_2 = core.get_objects_inside_radius(pos, 2)
if #inside_2 ~= 0 then
for _, object in ipairs(inside_2) do
if object:is_player() and object:get_hp() ~= 0 then
if self.visualx >= 2 then
self.object:remove()
sneeker.boom(pos, self.powered)
core.sound_play("sneeker_explode", {pos=pos, gain=1.5, max_hear_distance=2*64})
return true
end
end
end
end
end
--[[
if self.knockback then if self.knockback then
return return
end end
@ -331,8 +391,10 @@ def.on_step = function(self, dtime)
else else
self.object:set_acceleration({x=0, y=-10, z=0}) self.object:set_acceleration({x=0, y=-10, z=0})
end end
]]
end end
--[[
def.on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir) def.on_punch = function(self, puncher, time_from_last_punch, tool_capabilities, dir)
if self.knockback == false then if self.knockback == false then
local knockback_level = self.knockback_level local knockback_level = self.knockback_level
@ -354,15 +416,15 @@ def.on_punch = function(self, puncher, time_from_last_punch, tool_capabilities,
local obj = core.add_item(p, {name="tnt:gunpowder", count=math.random(0, 2)}) local obj = core.add_item(p, {name="tnt:gunpowder", count=math.random(0, 2)})
end end
end end
]]
def.get_staticdata = function(self) local sneeker_get_staticdata = function(self)
return core.serialize({ return core.serialize({
powered = self.powered powered = self.powered
}) })
end end
core.register_entity(sneeker.mob_name, def) --core.register_entity(sneeker.mob_name, def)
--]]
local spawn_nodes = { local spawn_nodes = {
@ -399,6 +461,7 @@ cmer.register_mob({
modes = { modes = {
idle = {chance=0.3, moving_speed=0,}, idle = {chance=0.3, moving_speed=0,},
walk = {chance=0.7, moving_speed=1.5,}, walk = {chance=0.7, moving_speed=1.5,},
follow = {chance=0.0, moving_speed=1.5,},
}, },
model = { model = {
mesh = "character.b3d", mesh = "character.b3d",
@ -408,6 +471,7 @@ cmer.register_mob({
animations = { animations = {
idle = {start=0, stop=79, speed=30,}, idle = {start=0, stop=79, speed=30,},
walk = {start=168, stop=187, speed=30,}, walk = {start=168, stop=187, speed=30,},
follow = {start=168, stop=187, speed=30,},
}, },
}, },
sounds = {}, sounds = {},
@ -424,6 +488,9 @@ cmer.register_mob({
light = {min=sneeker.spawn_minlight, max=sneeker.spawn_maxlight}, light = {min=sneeker.spawn_minlight, max=sneeker.spawn_maxlight},
height_limit = {min=sneeker.spawn_minheight, max=sneeker.spawn_maxheight}, height_limit = {min=sneeker.spawn_minheight, max=sneeker.spawn_maxheight},
}, },
on_step = sneeker_on_step,
on_activate = sneeker_on_activate,
get_staticdata = sneeker_get_staticdata,
}) })
if core.global_exists("asm") then if core.global_exists("asm") then