diff --git a/api.lua b/api.lua index c361ba2..e99de19 100644 --- a/api.lua +++ b/api.lua @@ -28,7 +28,7 @@ local use_cmi = minetest.global_exists("cmi") mobs = { mod = "redo", - version = "20220421", + version = "20220430", intllib = S, invis = minetest.global_exists("invisibility") and invisibility or {} } @@ -2393,7 +2393,17 @@ function mob_class:do_states(dtime) and self.animation and self.animation.fly_start and self.animation.fly_end then - self:set_animation("fly") + + local def = minetest.registered_nodes[self.standing_on] or {} + + if def.walkable + and self.animation + and self.animation.hover_start + and self.animation.hover_end then + self:set_animation("hover") + else + self:set_animation("fly") + end else self:set_animation("walk") end diff --git a/api.txt b/api.txt index 99547af..f6dd73d 100644 --- a/api.txt +++ b/api.txt @@ -237,6 +237,8 @@ functions needed for the mob to work properly which contains the following: 'die_speed' 'die_loop' when set to false stops the animation looping. 'die_rotate' if true mob spins during death animation. + 'hover_start" hover animation when flying/swimming and solid node below + 'hover_end" Using '_loop = false' setting will stop any of the above animations from looping.