summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTenPlus1 <kinsellaja@yahoo.com>2018-09-15 10:20:18 +0100
committerTenPlus1 <kinsellaja@yahoo.com>2018-09-15 10:20:18 +0100
commitafb7e01b918874b48fe7281166136c87d283d66c (patch)
treef93a3cfcf64897d981592aa837c957c8fb4ca308
parent830b1698ffa75c16345096b20a2b52e0276d2e5d (diff)
tweak collision functionmob_api_21sep2018
-rw-r--r--api.lua36
1 files changed, 16 insertions, 20 deletions
diff --git a/api.lua b/api.lua
index 17b3b11..7a7a930 100644
--- a/api.lua
+++ b/api.lua
@@ -6,7 +6,7 @@ local use_cmi = minetest.global_exists("cmi")
mobs = {
mod = "redo",
- version = "20180914",
+ version = "20180915",
intllib = S,
invis = minetest.global_exists("invisibility") and invisibility or {},
}
@@ -108,32 +108,37 @@ local do_attack = function(self, player)
end
--- collision function borrowed amended from jordan4ibanez open_ai mod
+-- calculate distance
+local get_distance = function(a, b)
+
+ local x, y, z = a.x - b.x, a.y - b.y, a.z - b.z
+
+ return square(x * x + y * y + z * z)
+end
+
+
+-- collision function based on similar from jordan4ibanez' open_ai mod
local collision = function(self)
local pos = self.object:get_pos()
local vel = self.object:get_velocity()
- local x = 0
- local z = 0
+ local x, z = 0, 0
local width = -self.collisionbox[1] + self.collisionbox[4] + 0.5
- for _,object in ipairs(minetest.env:get_objects_inside_radius(pos, width)) do
+ for _,object in ipairs(minetest.get_objects_inside_radius(pos, width)) do
if object:is_player()
or (object:get_luaentity()._cmi_is_mob == true and object ~= self.object) then
local pos2 = object:get_pos()
local vec = {x = pos.x - pos2.x, z = pos.z - pos2.z}
- local force = (width + 0.5) - vector.distance(
- {x = pos.x, y = 0, z = pos.z},
- {x = pos2.x, y = 0, z = pos2.z})
- x = x + (vec.x * force)
- z = z + (vec.z * force)
+ x = x + vec.x
+ z = z + vec.z
end
end
- return({x,z})
+ return({x, z})
end
@@ -250,15 +255,6 @@ function mobs:set_animation(self, anim)
end
--- calculate distance
-local get_distance = function(a, b)
-
- local x, y, z = a.x - b.x, a.y - b.y, a.z - b.z
-
- return square(x * x + y * y + z * z)
-end
-
-
-- check line of sight (by BrunoMine, tweaked by Astrobe)
local line_of_sight = function(self, pos1, pos2, stepsize)