Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • Illuna-Minetest/dmobs
1 result
Show changes
Commits on Source (7)
...@@ -60,7 +60,7 @@ function object_attach(entity, player, attach_at, eye_offset) ...@@ -60,7 +60,7 @@ function object_attach(entity, player, attach_at, eye_offset)
minetest.after(0.2, function() minetest.after(0.2, function()
default.player_set_animation(player, "sit" , 30) default.player_set_animation(player, "sit" , 30)
end) end)
entity.object:setyaw(player:get_look_yaw() - math.pi / 2) entity.object:set_yaw(player:get_look_yaw() - math.pi / 2)
end end
function object_detach(entity, player, offset) function object_detach(entity, player, offset)
...@@ -69,10 +69,10 @@ function object_detach(entity, player, offset) ...@@ -69,10 +69,10 @@ function object_detach(entity, player, offset)
default.player_attached[player:get_player_name()] = false default.player_attached[player:get_player_name()] = false
default.player_set_animation(player, "stand" , 30) default.player_set_animation(player, "stand" , 30)
player:set_eye_offset({x=0, y=0, z=0}, {x=0, y=0, z=0}) player:set_eye_offset({x=0, y=0, z=0}, {x=0, y=0, z=0})
local pos = player:getpos() local pos = player:get_pos()
pos = {x = pos.x + offset.x, y = pos.y + 0.2 + offset.y, z = pos.z + offset.z} pos = {x = pos.x + offset.x, y = pos.y + 0.2 + offset.y, z = pos.z + offset.z}
minetest.after(0.1, function() minetest.after(0.1, function()
player:setpos(pos) player:set_pos(pos)
end) end)
end end
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
...@@ -106,103 +106,99 @@ function object_drive(entity, dtime, speed, shoots, arrow, moving_anim, stand_an ...@@ -106,103 +106,99 @@ function object_drive(entity, dtime, speed, shoots, arrow, moving_anim, stand_an
local vec_stop = {x=0,y=0,z=0} local vec_stop = {x=0,y=0,z=0}
local yaw = entity.driver:get_look_yaw(); local yaw = entity.driver:get_look_yaw();
if ctrl.up then if ctrl.up then
entity.object:setyaw(yaw+math.pi+math.pi/2) entity.object:set_yaw(yaw+math.pi+math.pi/2)
entity.object:setvelocity(vec_forward) entity.object:set_velocity(vec_forward)
elseif ctrl.down then elseif ctrl.down then
entity.object:setyaw(yaw+math.pi+math.pi/2) entity.object:set_yaw(yaw+math.pi+math.pi/2)
entity.object:setvelocity(vec_backward) entity.object:set_velocity(vec_backward)
elseif not ctrl.down or ctrl.up then elseif not ctrl.down or ctrl.up then
entity.object:setyaw(yaw+math.pi+math.pi/2) entity.object:set_yaw(yaw+math.pi+math.pi/2)
entity.object:setvelocity(vec_stop) entity.object:set_velocity(vec_stop)
end end
if ctrl.sneak and ctrl.LMB and shoots then if ctrl.sneak and ctrl.LMB and shoots then
local pos = entity.object:getpos() local pos = entity.object:get_pos()
local obj = minetest.env:add_entity({x=pos.x+0+dir.x*2,y=pos.y+1.5+dir.y,z=pos.z+0+dir.z*2}, arrow) local obj = minetest.add_entity({x=pos.x+0+dir.x*2,y=pos.y+1.5+dir.y,z=pos.z+0+dir.z*2}, arrow)
local vec = {x=dir.x*6,y=dir.y*6,z=dir.z*6} local vec = {x=dir.x*6,y=dir.y*6,z=dir.z*6}
local yaw = entity.driver:get_look_yaw(); local yaw = entity.driver:get_look_yaw();
obj:setyaw(yaw+math.pi/2) obj:set_yaw(yaw+math.pi/2)
obj:setvelocity(vec) obj:set_velocity(vec)
end end
--lib_mount animation --lib_mount animation
local velo = entity.object:getvelocity() local velo = entity.object:get_velocity()
if velo.x == 0 and velo.y == 0 and velo.z == 0 then if velo.x == 0 and velo.y == 0 and velo.z == 0 then
if stand_anim and stand_anim ~= nil and mobs_redo == true then if stand_anim and stand_anim ~= nil and mobs_redo == true then
set_animation(entity, stand_anim) mobs:set_animation(entity, stand_anim)
end end
entity.object:setpos(entity.object:getpos()) entity.object:set_pos(entity.object:get_pos())
return return
end end
if moving_anim and moving_anim ~= nil and mobs_redo == true then if moving_anim and moving_anim ~= nil and mobs_redo == true then
set_animation(entity, moving_anim) mobs:set_animation(entity, moving_anim)
end end
--jumping not working --jumping not working
-- local jumps = jumps or false -- local jumps = jumps or false
-- if jumps == true and ctrl.jump then -- if jumps == true and ctrl.jump then
-- local xvel = entity.object:getvelocity().x -- local vel = entity.object:get_velocity()
-- local zvel = entity.object:getvelocity().z -- vel.y = 10
-- local yvel = entity.object:getvelocity().y -- entity.object:set_velocity(vel)
-- local vel = {x=xvel,y=10,z=zvel}
-- entity.object:setvelocity(vel)
-- minetest.after(1.5, function() -- minetest.after(1.5, function()
-- local xvel = entity.object:getvelocity().x -- local vel = entity.object:get_velocity()
-- local zvel = entity.object:getvelocity().z -- vel.y = -10
-- local yvel = entity.object:getvelocity().y -- entity.object:set_velocity(vel)
-- local vel = {x=xvel,y=-10,z=zvel}
-- entity.object:setvelocity(vel)
-- end) -- end)
-- end -- end
end end
function object_fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim) function object_fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim)
local ctrl = entity.driver:get_player_control() local ctrl = entity.driver:get_player_control()
local velo = entity.object:getvelocity() local velo = entity.object:get_velocity()
local dir = entity.driver:get_look_dir(); local dir = entity.driver:get_look_dir();
local vec_forward = {x=dir.x*speed,y=dir.y*speed+2,z=dir.z*speed} local vec_forward = {x=dir.x*speed,y=dir.y*speed+2,z=dir.z*speed}
local vec_backward = {x=-dir.x*speed,y=dir.y*speed+2,z=-dir.z*speed} local vec_backward = {x=-dir.x*speed,y=dir.y*speed+2,z=-dir.z*speed}
local vec_rise = {x=velo.x,y=velo.y+0.2,z=velo.z} local vec_rise = {x=velo.x,y=velo.y+0.2,z=velo.z}
local vec_stop = {x=0,y=-0.2,z=0} local vec_stop = {x=0,y=-0.2,z=0}
local yaw = entity.driver:get_look_yaw(); local yaw = entity.driver:get_look_yaw();
local pos = entity.object:getpos() local pos = entity.object:get_pos()
local node = minetest.get_node(pos).name local node = minetest.get_node(pos).name
if node == "default:water_source" or node == "default:river_water_source" or node == "default:river_water_flowing" or node == "default:water_flowing" then if node == "default:water_source" or node == "default:river_water_source" or node == "default:river_water_flowing" or node == "default:water_flowing" then
entity.object:setvelocity({x=velo.x*0.9, y=-1, z=velo.z*0.9}) entity.object:set_velocity({x=velo.x*0.9, y=-1, z=velo.z*0.9})
elseif ctrl.up then elseif ctrl.up then
entity.object:setyaw(yaw+math.pi+math.pi/2) entity.object:set_yaw(yaw+math.pi+math.pi/2)
entity.object:setvelocity(vec_forward) entity.object:set_velocity(vec_forward)
elseif ctrl.down then elseif ctrl.down then
entity.object:setyaw(yaw+math.pi+math.pi/2) entity.object:set_yaw(yaw+math.pi+math.pi/2)
entity.object:setvelocity(vec_backward) entity.object:set_velocity(vec_backward)
elseif ctrl.jump then elseif ctrl.jump then
entity.object:setyaw(yaw+math.pi+math.pi/2) entity.object:set_yaw(yaw+math.pi+math.pi/2)
entity.object:setvelocity(vec_rise) entity.object:set_velocity(vec_rise)
elseif not ctrl.down or ctrl.up or ctrl.jump then elseif not ctrl.down or ctrl.up or ctrl.jump then
entity.object:setyaw(yaw+math.pi+math.pi/2) entity.object:set_yaw(yaw+math.pi+math.pi/2)
entity.object:setvelocity(vec_stop) entity.object:set_velocity(vec_stop)
end end
if ctrl.aux1 and shoots and not entity.loaded then if ctrl.aux1 and shoots and not entity.loaded then
local pos = entity.object:getpos() local pos = entity.object:get_pos()
local obj = minetest.env:add_entity({x=pos.x+0+dir.x*2.5,y=pos.y+1.5+dir.y,z=pos.z+0+dir.z*2.5}, arrow) local obj = minetest.add_entity({x=pos.x+0+dir.x*2.5,y=pos.y+1.5+dir.y,z=pos.z+0+dir.z*2.5}, arrow)
local vec = {x=dir.x*12,y=dir.y*12,z=dir.z*12} local vec = vector.multiply(dir, 12)
local yaw = entity.driver:get_look_yaw(); local yaw = entity.driver:get_look_yaw();
entity.loaded = true entity.loaded = true
obj:setyaw(yaw+math.pi/2) obj:set_yaw(yaw+math.pi/2)
obj:setvelocity(vec) obj:set_velocity(vec)
local object = obj:get_luaentity() local object = obj:get_luaentity()
object.launcher = entity.driver object.launcher = entity.driver
minetest.after(1, function() minetest.after(1, function()
entity.loaded = false entity.loaded = false
end) end)
end end
--lib_mount animation --lib_mount animation
if velo.x == 0 and velo.y == 0 and velo.z == 0 then if velo.x == 0 and velo.y == 0 and velo.z == 0 then
if stand_anim and stand_anim ~= nil and mobs_redo == true then if stand_anim and stand_anim ~= nil and mobs_redo == true then
set_animation(entity, stand_anim) mobs:set_animation(entity, stand_anim)
end end
entity.object:setpos(entity.object:getpos()) entity.object:set_pos(entity.object:get_pos())
return return
end end
if moving_anim and moving_anim ~= nil and mobs_redo == true then if moving_anim and moving_anim ~= nil and mobs_redo == true then
set_animation(entity, moving_anim) mobs:set_animation(entity, moving_anim)
end end
end end
...@@ -248,7 +244,7 @@ function lib_mount.attach(entity, player, attach_at, eye_offset) ...@@ -248,7 +244,7 @@ function lib_mount.attach(entity, player, attach_at, eye_offset)
minetest.after(0.2, function() minetest.after(0.2, function()
default.player_set_animation(player, "sit" , 30) default.player_set_animation(player, "sit" , 30)
end) end)
entity.object:setyaw(player:get_look_yaw() - math.pi / 2) entity.object:set_yaw(player:get_look_yaw() - math.pi / 2)
end end
function lib_mount.detach(entity, player, offset) function lib_mount.detach(entity, player, offset)
...@@ -257,18 +253,18 @@ function lib_mount.detach(entity, player, offset) ...@@ -257,18 +253,18 @@ function lib_mount.detach(entity, player, offset)
default.player_attached[player:get_player_name()] = false default.player_attached[player:get_player_name()] = false
default.player_set_animation(player, "stand" , 30) default.player_set_animation(player, "stand" , 30)
player:set_eye_offset({x=0, y=0, z=0}, {x=0, y=0, z=0}) player:set_eye_offset({x=0, y=0, z=0}, {x=0, y=0, z=0})
local pos = player:getpos() local pos = player:get_pos()
pos = {x = pos.x + offset.x, y = pos.y + 0.2 + offset.y, z = pos.z + offset.z} pos = {x = pos.x + offset.x, y = pos.y + 0.2 + offset.y, z = pos.z + offset.z}
minetest.after(0.1, function() minetest.after(0.1, function()
player:setpos(pos) player:set_pos(pos)
end) end)
end end
function lib_mount.drive(entity, dtime, moving_anim, stand_anim, can_fly) function lib_mount.drive(entity, dtime, moving_anim, stand_anim, can_fly)
entity.v = get_v(entity.object:getvelocity()) * get_sign(entity.v) entity.v = get_v(entity.object:get_velocity()) * get_sign(entity.v)
local ctrl = entity.driver:get_player_control() local ctrl = entity.driver:get_player_control()
local yaw = entity.object:getyaw() local yaw = entity.object:get_yaw()
if ctrl.up then if ctrl.up then
entity.v = entity.v + 0.1 entity.v = entity.v + 0.1
elseif ctrl.down then elseif ctrl.down then
...@@ -276,33 +272,33 @@ function lib_mount.drive(entity, dtime, moving_anim, stand_anim, can_fly) ...@@ -276,33 +272,33 @@ function lib_mount.drive(entity, dtime, moving_anim, stand_anim, can_fly)
end end
if ctrl.left then if ctrl.left then
if entity.v < 0 then if entity.v < 0 then
entity.object:setyaw(yaw - (1 + dtime) * 0.03) entity.object:set_yaw(yaw - (1 + dtime) * 0.03)
else else
entity.object:setyaw(yaw + (1 + dtime) * 0.03) entity.object:set_yaw(yaw + (1 + dtime) * 0.03)
end end
elseif ctrl.right then elseif ctrl.right then
if entity.v < 0 then if entity.v < 0 then
entity.object:setyaw(yaw + (1 + dtime) * 0.03) entity.object:set_yaw(yaw + (1 + dtime) * 0.03)
else else
entity.object:setyaw(yaw - (1 + dtime) * 0.03) entity.object:set_yaw(yaw - (1 + dtime) * 0.03)
end end
end end
local velo = entity.object:getvelocity() local velo = entity.object:get_velocity()
if entity.v == 0 and velo.x == 0 and velo.y == 0 and velo.z == 0 then if entity.v == 0 and velo.x == 0 and velo.y == 0 and velo.z == 0 then
if stand_anim and stand_anim ~= nil and mobs_redo == true then if stand_anim and stand_anim ~= nil and mobs_redo == true then
set_animation(entity, stand_anim) mobs:set_animation(entity, stand_anim)
end end
entity.object:setpos(entity.object:getpos()) entity.object:set_pos(entity.object:get_pos())
return return
end end
if moving_anim and moving_anim ~= nil and mobs_redo == true then if moving_anim and moving_anim ~= nil and mobs_redo == true then
set_animation(entity, moving_anim) mobs:set_animation(entity, moving_anim)
end end
local s = get_sign(entity.v) local s = get_sign(entity.v)
entity.v = entity.v - 0.02 * s entity.v = entity.v - 0.02 * s
if s ~= get_sign(entity.v) then if s ~= get_sign(entity.v) then
entity.object:setvelocity({x = 0, y = 0, z = 0}) entity.object:set_velocity({x = 0, y = 0, z = 0})
entity.v = 0 entity.v = 0
return return
end end
...@@ -310,7 +306,7 @@ function lib_mount.drive(entity, dtime, moving_anim, stand_anim, can_fly) ...@@ -310,7 +306,7 @@ function lib_mount.drive(entity, dtime, moving_anim, stand_anim, can_fly)
entity.v = 5 * get_sign(entity.v) entity.v = 5 * get_sign(entity.v)
end end
local p = entity.object:getpos() local p = entity.object:get_pos()
p.y = p.y - 0.5 p.y = p.y - 0.5
local new_velo = {x = 0, y = 0, z = 0} local new_velo = {x = 0, y = 0, z = 0}
local new_acce = {x = 0, y = 0, z = 0} local new_acce = {x = 0, y = 0, z = 0}
...@@ -322,13 +318,13 @@ function lib_mount.drive(entity, dtime, moving_anim, stand_anim, can_fly) ...@@ -322,13 +318,13 @@ function lib_mount.drive(entity, dtime, moving_anim, stand_anim, can_fly)
else else
new_acce = {x = 0, y = -9.8, z = 0} new_acce = {x = 0, y = -9.8, z = 0}
end end
new_velo = get_velocity(entity.v, entity.object:getyaw(), new_velo = get_velocity(entity.v, entity.object:get_yaw(),
entity.object:getvelocity().y) entity.object:get_velocity().y)
entity.object:setpos(entity.object:getpos()) entity.object:set_pos(entity.object:get_pos())
else else
p.y = p.y + 1 p.y = p.y + 1
if is_group(p, "crumbly") then if is_group(p, "crumbly") then
local y = entity.object:getvelocity().y local y = entity.object:get_velocity().y
if y >= 5 then if y >= 5 then
y = 5 y = 5
elseif y < 0 then elseif y < 0 then
...@@ -336,25 +332,25 @@ function lib_mount.drive(entity, dtime, moving_anim, stand_anim, can_fly) ...@@ -336,25 +332,25 @@ function lib_mount.drive(entity, dtime, moving_anim, stand_anim, can_fly)
else else
new_acce = {x = 0, y = 5, z = 0} new_acce = {x = 0, y = 5, z = 0}
end end
new_velo = get_velocity(entity.v, entity.object:getyaw(), y) new_velo = get_velocity(entity.v, entity.object:get_yaw(), y)
entity.object:setpos(entity.object:getpos()) entity.object:set_pos(entity.object:get_pos())
else else
new_acce = {x = 0, y = 0, z = 0} new_acce = {x = 0, y = 0, z = 0}
if math.abs(entity.object:getvelocity().y) < 1 then if math.abs(entity.object:get_velocity().y) < 1 then
local pos = entity.object:getpos() local pos = entity.object:get_pos()
pos.y = math.floor(pos.y) + 0.5 pos.y = math.floor(pos.y) + 0.5
entity.object:setpos(pos) entity.object:set_pos(pos)
new_velo = get_velocity(entity.v, entity.object:getyaw(), 0) new_velo = get_velocity(entity.v, entity.object:get_yaw(), 0)
else else
new_velo = get_velocity(entity.v, entity.object:getyaw(), new_velo = get_velocity(entity.v, entity.object:get_yaw(),
entity.object:getvelocity().y) entity.object:get_velocity().y)
entity.object:setpos(entity.object:getpos()) entity.object:set_pos(entity.object:get_pos())
end end
end end
end end
if can_fly and can_fly == true and ctrl.jump then if can_fly and can_fly == true and ctrl.jump then
new_velo.y = new_velo.y + 0.75 new_velo.y = new_velo.y + 0.75
end end
entity.object:setvelocity(new_velo) entity.object:set_velocity(new_velo)
entity.object:setacceleration(new_acce) entity.object:set_acceleration(new_acce)
end end
...@@ -10,7 +10,7 @@ minetest.register_entity(fname, { ...@@ -10,7 +10,7 @@ minetest.register_entity(fname, {
local remove = minetest.after(2, function() local remove = minetest.after(2, function()
self.object:remove() self.object:remove()
end) end)
local pos = self.object:getpos() local pos = self.object:get_pos()
local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2) local objs = minetest.get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2)
for k, obj in pairs(objs) do for k, obj in pairs(objs) do
if obj:get_luaentity() ~= nil then if obj:get_luaentity() ~= nil then
...@@ -28,22 +28,22 @@ minetest.register_entity(fname, { ...@@ -28,22 +28,22 @@ minetest.register_entity(fname, {
for dz=0,1 do for dz=0,1 do
local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz} local p = {x=pos.x+dx, y=pos.y, z=pos.z+dz}
local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz} local t = {x=pos.x+dx, y=pos.y+dy, z=pos.z+dz}
local n = minetest.env:get_node(p).name local n = minetest.get_node(p).name
if n ~= fname and n ~="default:dirt_with_grass" and n ~="default:dirt_with_dry_grass" and n ~="default:stone" then if n ~= fname and n ~="default:dirt_with_grass" and n ~="default:dirt_with_dry_grass" and n ~="default:stone" then
if minetest.registered_nodes[n].groups.flammable --[[or math.random(1, 100) <= 1]] then if minetest.registered_nodes[n].groups.flammable --[[or math.random(1, 100) <= 1]] then
minetest.env:set_node(t, {name=replace_node}) minetest.set_node(t, {name=replace_node})
self.object:remove() self.object:remove()
return return
end end
if ice and n == "default:water_source" then if ice and n == "default:water_source" then
minetest.env:set_node(t, {name="default:ice"}) minetest.set_node(t, {name="default:ice"})
self.object:remove() self.object:remove()
end end
end end
end end
end end
end end
local apos = self.object:getpos() local apos = self.object:get_pos()
local part = minetest.add_particlespawner( local part = minetest.add_particlespawner(
6, --amount 6, --amount
0.3, --time 0.3, --time
......
...@@ -22,9 +22,9 @@ dmobs.dragon.ride = function(self, clicker) ...@@ -22,9 +22,9 @@ dmobs.dragon.ride = function(self, clicker)
object_detach(self, clicker, {x=1, y=0, z=1}) object_detach(self, clicker, {x=1, y=0, z=1})
if inv:room_for_item("main", "mobs:saddle") then if inv:room_for_item("main", "mobs:saddle") then
inv:add_item("main", "mobs:saddle") inv:add_item("main", "mobs:saddle")
else else
minetest.add_item(clicker.getpos(), "mobs:saddle") minetest.add_item(clicker:get_pos(), "mobs:saddle")
end end
elseif not self.driver then elseif not self.driver then
......
...@@ -59,7 +59,7 @@ mobs:register_mob("dmobs:waterdragon", { ...@@ -59,7 +59,7 @@ mobs:register_mob("dmobs:waterdragon", {
self.hydra = true -- flip switch so this part is done only once self.hydra = true -- flip switch so this part is done only once
-- get head position and define a few temp variables -- get head position and define a few temp variables
local pos = self.object:getpos() local pos = self.object:get_pos()
local obj, obj2, ent local obj, obj2, ent
-- add body and make it follow head -- add body and make it follow head
......
...@@ -7,21 +7,21 @@ dmobs = {} ...@@ -7,21 +7,21 @@ dmobs = {}
dofile(minetest.get_modpath("dmobs").."/api.lua") dofile(minetest.get_modpath("dmobs").."/api.lua")
-- Enable dragons (disable to remove tamed dragons and dragon bosses) -- Enable dragons (disable to remove tamed dragons and dragon bosses)
dmobs.dragons = minetest.setting_getbool("dmobs.dragons") dmobs.dragons = minetest.settings:get_bool("dmobs.dragons")
if dmobs.dragons == nil then if dmobs.dragons == nil then
dmobs.dragons = true dmobs.dragons = true
end end
dmobs.regulars = minetest.setting_getbool("dmobs.regulars") dmobs.regulars = minetest.settings:get_bool("dmobs.regulars")
if dmobs.regulars == nil then if dmobs.regulars == nil then
dmobs.regulars = true dmobs.regulars = true
end end
-- Enable fireballs/explosions -- Enable fireballs/explosions
dmobs.destructive = minetest.setting_getbool("dmobs.destructive") or false dmobs.destructive = minetest.settings:get_bool("dmobs.destructive") or false
-- Timer for the egg mechanics -- Timer for the egg mechanics
dmobs.eggtimer = tonumber(minetest.setting_get("dmobs.eggtimer") ) or 100 dmobs.eggtimer = tonumber(minetest.settings:get("dmobs.eggtimer") ) or 100
...@@ -64,7 +64,7 @@ local mobslist = { ...@@ -64,7 +64,7 @@ local mobslist = {
"badger", "badger",
"butterfly", "butterfly",
"elephant", "elephant",
-- baddies -- baddies
"pig_evil", "pig_evil",
"fox", "fox",
...@@ -103,7 +103,7 @@ else ...@@ -103,7 +103,7 @@ else
loadmob("great_dragon","/dragons/") loadmob("great_dragon","/dragons/")
loadmob("water_dragon","/dragons/") loadmob("water_dragon","/dragons/")
loadmob("wyvern","/dragons/") loadmob("wyvern","/dragons/")
dofile(minetest.get_modpath("dmobs").."/dragons/eggs.lua") dofile(minetest.get_modpath("dmobs").."/dragons/eggs.lua")
dofile(minetest.get_modpath("dmobs").."/dragons/aliases.lua") dofile(minetest.get_modpath("dmobs").."/dragons/aliases.lua")
end end
......
...@@ -2,11 +2,13 @@ ...@@ -2,11 +2,13 @@
--butterflies --butterflies
minetest.register_abm({ minetest.register_abm({
nodenames = {"flowers:flower_rose", "flowers:flower_tulip", "flowers:flower_dandelion_yellow", "flowers:flower_viola", "flowers:flower_dandelion_white", "flowers:flower_geranium"}, nodenames = {"flowers:flower_rose", "flowers:flower_tulip",
"flowers:flower_dandelion_yellow", "flowers:flower_viola",
"flowers:flower_dandelion_white", "flowers:flower_geranium"},
interval = 10.0, interval = 10.0,
chance = 10, chance = 10,
action = function(pos, node, active_object_count, active_object_count_wider) action = function(pos, node, active_object_count, active_object_count_wider)
minetest.env:add_entity({x=pos.x,y=pos.y+0.3,z=pos.z}, "dmobs:butterfly") minetest.add_entity({x=pos.x,y=pos.y+0.3,z=pos.z}, "dmobs:butterfly")
end end
}) })
...@@ -20,18 +22,18 @@ minetest.register_entity("dmobs:butterfly", { ...@@ -20,18 +22,18 @@ minetest.register_entity("dmobs:butterfly", {
num = math.random(1,4) num = math.random(1,4)
self.object:set_properties({textures = {"dmobs_butterfly"..num..".png",},}) self.object:set_properties({textures = {"dmobs_butterfly"..num..".png",},})
self.object:set_animation({x=1, y=10}, 20, 0) self.object:set_animation({x=1, y=10}, 20, 0)
self.object:setyaw(math.pi+num) self.object:set_yaw(math.pi+num)
minetest.after(10, function() minetest.after(10, function()
self.object:remove() self.object:remove()
end) end)
end, end,
on_step = function(self) on_step = function(self)
local pos = self.object:getpos() local pos = self.object:get_pos()
local vec = self.object:getvelocity() local vec = self.object:get_velocity()
local num = math.random(-math.pi, math.pi) local num = math.random(-math.pi, math.pi)
self.object:setyaw(math.pi+num) self.object:set_yaw(math.pi+num)
self.object:setvelocity({x=-math.sin(12*pos.y), y=math.cos(12*pos.x), z=-math.sin(12*pos.y)}) self.object:set_velocity({x=-math.sin(12*pos.y), y=math.cos(12*pos.x), z=-math.sin(12*pos.y)})
self.object:setacceleration({x=-math.sin(6*vec.y), y=math.cos(6*vec.x), z=-math.sin(6*vec.y)}) self.object:set_acceleration({x=-math.sin(6*vec.y), y=math.cos(6*vec.x), z=-math.sin(6*vec.y)})
end, end,
collisionbox = {0,0,0,0,0.1,0}, collisionbox = {0,0,0,0,0.1,0},
}) })
...@@ -44,8 +44,8 @@ mobs:register_mob("dmobs:nyan", { ...@@ -44,8 +44,8 @@ mobs:register_mob("dmobs:nyan", {
}, },
do_custom = function(self) do_custom = function(self)
local apos = self.object:getpos() local apos = self.object:get_pos()
local vec = self.object:getvelocity() local vec = self.object:get_velocity()
local part = minetest.add_particlespawner( local part = minetest.add_particlespawner(
5, --amount 5, --amount
0.3, --time 0.3, --time
......
...@@ -81,8 +81,8 @@ mobs:register_mob("dmobs:wasp_leader", { ...@@ -81,8 +81,8 @@ mobs:register_mob("dmobs:wasp_leader", {
}, },
do_custom = function(self) do_custom = function(self)
if math.random(1, 500) >= 500 then if math.random(1, 500) >= 500 then
local pos = self.object:getpos() local pos = self.object:get_pos()
minetest.env:add_entity(pos, "dmobs:wasp") minetest.add_entity(pos, "dmobs:wasp")
end end
end, end,
replace_rate = 700, replace_rate = 700,
......
...@@ -7,10 +7,10 @@ minetest.register_node("dmobs:hive", { ...@@ -7,10 +7,10 @@ minetest.register_node("dmobs:hive", {
tiles = {"dmobs_hive.png"}, tiles = {"dmobs_hive.png"},
groups = {crumbly=1, oddly_breakable_by_hand=1, falling_node=1, flammable=1}, groups = {crumbly=1, oddly_breakable_by_hand=1, falling_node=1, flammable=1},
on_destruct = function(pos, oldnode) on_destruct = function(pos, oldnode)
minetest.env:add_entity(pos, "dmobs:wasp") minetest.add_entity(pos, "dmobs:wasp")
minetest.env:add_entity(pos, "dmobs:wasp") minetest.add_entity(pos, "dmobs:wasp")
minetest.env:add_entity(pos, "dmobs:wasp") minetest.add_entity(pos, "dmobs:wasp")
minetest.env:add_entity(pos, "dmobs:wasp") minetest.add_entity(pos, "dmobs:wasp")
end, end,
}) })
...@@ -21,14 +21,14 @@ minetest.register_node("dmobs:golemstone", { ...@@ -21,14 +21,14 @@ minetest.register_node("dmobs:golemstone", {
tiles = {"dmobs_golem_stone.png",}, tiles = {"dmobs_golem_stone.png",},
groups = {cracky=1}, groups = {cracky=1},
on_construct = function(pos, node, _) on_construct = function(pos, node, _)
local node1 = minetest.env:get_node({x=pos.x, y=pos.y-1, z=pos.z}).name local node1 = minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name
local node2 = minetest.env:get_node({x=pos.x, y=pos.y-2, z=pos.z}).name local node2 = minetest.get_node({x=pos.x, y=pos.y-2, z=pos.z}).name
local node3 = minetest.env:get_node({x=pos.x, y=pos.y+1, z=pos.z}).name local node3 = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name
if node1 == "default:stone" and node2 == "default:stone" and node3 == "air" then if node1 == "default:stone" and node2 == "default:stone" and node3 == "air" then
minetest.env:add_entity(pos, "dmobs:golem_friendly") minetest.add_entity(pos, "dmobs:golem_friendly")
minetest.env:remove_node({x=pos.x, y=pos.y-1, z=pos.z}) minetest.remove_node({x=pos.x, y=pos.y-1, z=pos.z})
minetest.env:remove_node({x=pos.x, y=pos.y-2, z=pos.z}) minetest.remove_node({x=pos.x, y=pos.y-2, z=pos.z})
minetest.env:remove_node({x=pos.x, y=pos.y, z=pos.z}) minetest.remove_node({x=pos.x, y=pos.y, z=pos.z})
end end
end, end,
}) })