From f7798e1b29c6d4620d8dd8c8053ef4c110d2a9fc Mon Sep 17 00:00:00 2001 From: TenPlus1 Date: Thu, 29 Dec 2016 15:28:53 +0000 Subject: [PATCH] added dtime to drive function --- api.txt | 5 +++-- mount.lua | 30 +++++++++++++++++++++++++++--- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/api.txt b/api.txt index de137f2..209d3f3 100644 --- a/api.txt +++ b/api.txt @@ -281,7 +281,7 @@ This function will detach the player currently riding a mob to an offset positio 'offset' position table containing offset values -mobs:drive(self, move_animation, stand_animation, can_fly) +mobs:drive(self, move_animation, stand_animation, can_fly, dtime) This function allows an attached player to move the mob around and animate it at same time. @@ -289,6 +289,7 @@ This function allows an attached player to move the mob around and animate it at 'move_animation' string containing movement animation e.g. "walk" 'stand_animation' string containing standing animation e.g. "stand" 'can_fly' if true then jump and sneak controls will allow mob to fly up and down + 'dtime' tick time used inside drive function Certain variables need to be set before using the above functions: @@ -356,7 +357,7 @@ mobs:register_mob("mob_horse:horse", { -- when riding mob call drive function to control if self.driver then - mobs.drive(self, "walk", "stand", false) + mobs.drive(self, "walk", "stand", false, dtime) return false -- skip rest of mob functions end diff --git a/mount.lua b/mount.lua index 9bbfc67..b7aaed7 100644 --- a/mount.lua +++ b/mount.lua @@ -18,6 +18,10 @@ local function node_is(pos) return "air" end + if minetest.get_item_group(node.name, "lava") ~= 0 then + return "lava" + end + if minetest.get_item_group(node.name, "liquid") ~= 0 then return "liquid" end @@ -155,7 +159,7 @@ function mobs.detach(player, offset) end -function mobs.drive(entity, moving_anim, stand_anim, can_fly) +function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime) local rot_steer, rot_view = math.pi/2, 0 @@ -283,7 +287,27 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly) new_acce.y = 0 end - elseif ni == "liquid" then + elseif ni == "liquid" or ni == "lava" then + + if ni == "lava" and entity.lava_damage ~= 0 then + + entity.lava_counter = (entity.lava_counter or 0) + dtime + + if entity.lava_counter > 1 then + + minetest.sound_play("default_punch", { + object = entity.object, + max_hear_distance = 5 + }) + + entity.object:punch(entity.object, 1.0, { + full_punch_interval = 1.0, + damage_groups = {fleshy = entity.lava_damage} + }, nil) + + entity.lava_counter = 0 + end + end if entity.terrain_type == 2 or entity.terrain_type == 3 then @@ -309,7 +333,7 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly) end end else - v = v*0.25 + v = v * 0.25 end -- elseif ni == "walkable" then -- v = 0