Add a shim for object:getyaw returning nan, this should be fixed correctly eventually

This commit is contained in:
KaadmY 2017-05-12 09:02:12 -07:00
parent 69fc1cbb64
commit dffc4b97db
1 changed files with 1263 additions and 1255 deletions

View File

@ -150,13 +150,24 @@ function mobs:register_mob(name, def)
end,
set_velocity = function(self, v)
v = (v or 0)
if def.drawtype
and def.drawtype == "side" then
self.rotate = math.rad(90)
end
local yaw = self.object:getyaw() + self.rotate
local tmpyaw = self.object:getyaw()
local yaw = self.rotate;
if tmpyaw ~= nan then
yaw = yaw + tmpyaw
else
minetest.log("object:getyaw() nan shim used")
end
local x = math.sin(yaw) * -v
local z = math.cos(yaw) * v
self.object:setvelocity({x = x, y = self.object:getvelocity().y, z = z})
end,
get_velocity = function(self)
@ -781,7 +792,7 @@ function mobs:register_mob(name, def)
-- water swimmers cannot move out of water
if self.fly and self.fly_in == "default:water_source" and not lp then
print ("out of water")
-- print("out of water")
self.set_velocity(self, 0)
self.state = "flop" -- change to undefined state so nothing more happens
self:set_animation("stand")
@ -902,10 +913,7 @@ function mobs:register_mob(name, def)
end
-- end of exploding mobs
elseif self.state == "attack"
and self.attack_type == "dogfight" then
if not self.attack.player or not self.attack.player:getpos() then
print("stop attacking")
-- print("stop attacking")
self.state = "stand"
self:set_animation("stand")
return