1
0
Fork 0

If slime/mcube was killd, smaller m. att. attacker

Previously, if you killed a big slime, the smaller slimes that spawn are neutral.
This commit is contained in:
Wuzzy 2019-02-05 20:49:34 +01:00
parent ca484cfa1a
commit 958989c80d
1 changed files with 15 additions and 0 deletions

View File

@ -20,6 +20,7 @@ local spawn_children_on_die = function(self, pos, child_mob, children_count, spa
end end
local mother_stuck = minetest.registered_nodes[minetest.get_node(pos).name].walkable local mother_stuck = minetest.registered_nodes[minetest.get_node(pos).name].walkable
angle = math.random(0, math.pi*2) angle = math.random(0, math.pi*2)
local children = {}
for i=1,children_count do for i=1,children_count do
dir = {x=math.cos(angle),y=0,z=math.sin(angle)} dir = {x=math.cos(angle),y=0,z=math.sin(angle)}
posadd = vector.multiply(vector.normalize(dir), spawn_distance) posadd = vector.multiply(vector.normalize(dir), spawn_distance)
@ -34,8 +35,22 @@ local spawn_children_on_die = function(self, pos, child_mob, children_count, spa
local mob = minetest.add_entity(newpos, child_mob) local mob = minetest.add_entity(newpos, child_mob)
mob:set_velocity(vector.multiply(dir, eject_speed * speed_penalty)) mob:set_velocity(vector.multiply(dir, eject_speed * speed_penalty))
mob:set_yaw(angle - math.pi/2) mob:set_yaw(angle - math.pi/2)
table.insert(children, mob)
angle = angle + (math.pi*2)/children_count angle = angle + (math.pi*2)/children_count
end end
-- If mother was murdered, children attack the killer after 1 second
if self.state == "attack" then
minetest.after(1.0, function(children, enemy)
for c=1, #children do
local child = children[c]
local le = child:get_luaentity()
if le ~= nil then
le.state = "attack"
le.attack = enemy
end
end
end, children, self.attack)
end
end end
end end