Make jump_check more modular and allow mobs to turn if at a wall

This commit is contained in:
jordan4ibanez 2021-04-16 15:55:11 -04:00
parent a6a54b3414
commit fb9a55e562

View file

@ -70,9 +70,14 @@ local jump_check = function(self,dtime)
local green_flag_2 = minetest_get_item_group(minetest_get_node(test_dir).name, "solid") == 0
if green_flag_1 and green_flag_2 then
mobs.jump(self)
if green_flag_1 and green_flag_2 then -- can jump over node
return(1)
elseif green_flag_1 and not green_flag_2 then --wall in front of
return(2)
end
--nothing to jump over
return(0)
end
@ -125,7 +130,11 @@ local state_execution = function(self,dtime)
mobs.set_velocity(self,1)
--check for nodes to jump over
jump_check(self)
local node_in_front_of = jump_check(self)
if node_in_front_of == 1 then
mobs.jump(self)
end
--turn if on the edge of cliff
--(this is written like this because unlike
@ -133,7 +142,7 @@ local state_execution = function(self,dtime)
--this requires a mob to turn, removing the
--ease of a full implementation for it in a single
--function)
if cliff_check(self,dtime) then
if node_in_front_of == 2 or cliff_check(self,dtime) then
--turn 45 degrees if so
quick_rotate_45(self,dtime)
end