mirror of
https://codeberg.org/tenplus1/mobs_redo.git
synced 2025-07-20 01:00:22 +02:00
Compare commits
2 Commits
774ce6671f
...
34b06df758
Author | SHA1 | Date | |
---|---|---|---|
34b06df758 | |||
0f1f3b4fb3 |
41
api.lua
41
api.lua
@ -8,7 +8,7 @@ local use_cmi = minetest.global_exists("cmi")
|
|||||||
|
|
||||||
mobs = {
|
mobs = {
|
||||||
mod = "redo",
|
mod = "redo",
|
||||||
version = "20210310",
|
version = "20210323",
|
||||||
intllib = S,
|
intllib = S,
|
||||||
invis = minetest.global_exists("invisibility") and invisibility or {}
|
invis = minetest.global_exists("invisibility") and invisibility or {}
|
||||||
}
|
}
|
||||||
@ -251,9 +251,17 @@ local check_for = function(look_for, look_inside)
|
|||||||
for _, str in pairs(look_inside) do
|
for _, str in pairs(look_inside) do
|
||||||
|
|
||||||
if str == look_for then
|
if str == look_for then
|
||||||
|
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if str:find("group:") then
|
||||||
|
|
||||||
|
local group = str:split(":")[2]
|
||||||
|
|
||||||
|
if minetest.get_item_group(look_for, group) ~= 0 then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -2697,34 +2705,17 @@ function mob_class:falling(pos)
|
|||||||
-- sanity check
|
-- sanity check
|
||||||
if not v then return end
|
if not v then return end
|
||||||
|
|
||||||
local fall_speed = -10 -- gravity
|
local fall_speed = self.fall_speed
|
||||||
|
|
||||||
-- don't exceed mob fall speed
|
|
||||||
if v.y < self.fall_speed then
|
|
||||||
fall_speed = self.fall_speed
|
|
||||||
end
|
|
||||||
|
|
||||||
-- in water then use liquid viscosity for float/sink speed
|
-- in water then use liquid viscosity for float/sink speed
|
||||||
if (self.standing_in
|
if self.floats == 1 and self.standing_in
|
||||||
and minetest.registered_nodes[self.standing_in].groups.liquid)
|
and minetest.registered_nodes[self.standing_in].groups.liquid then
|
||||||
or (self.standing_on
|
|
||||||
and minetest.registered_nodes[self.standing_in].groups.liquid) then
|
|
||||||
|
|
||||||
local visc = min(
|
local visc = min(
|
||||||
minetest.registered_nodes[self.standing_in].liquid_viscosity, 7)
|
minetest.registered_nodes[self.standing_in].liquid_viscosity, 7) + 1
|
||||||
|
|
||||||
if self.floats == 1 then
|
self.object:set_velocity({x = v.x, y = 0.6, z = v.z})
|
||||||
|
fall_speed = -1.2 / visc
|
||||||
-- floating up
|
|
||||||
if visc > 0 then
|
|
||||||
fall_speed = max(1, v.y) / (visc + 1)
|
|
||||||
end
|
|
||||||
else
|
|
||||||
-- sinking down
|
|
||||||
if visc > 0 then
|
|
||||||
fall_speed = -(max(1, v.y) / (visc + 1))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
|
|
||||||
-- fall damage onto solid ground
|
-- fall damage onto solid ground
|
||||||
|
2
api.txt
2
api.txt
@ -76,7 +76,7 @@ functions needed for the mob to work properly which contains the following:
|
|||||||
'floats' when set to 1 mob will float in water, 0 has them sink.
|
'floats' when set to 1 mob will float in water, 0 has them sink.
|
||||||
'follow' mobs follow player when holding any of the items which appear
|
'follow' mobs follow player when holding any of the items which appear
|
||||||
on this table, the same items can be fed to a mob to tame or
|
on this table, the same items can be fed to a mob to tame or
|
||||||
breed e.g. {"farming:wheat", "default:apple"}
|
breed e.g. {"farming:wheat", "default:apple", "group:fish"}
|
||||||
|
|
||||||
'reach' is how far the mob can attack player when standing
|
'reach' is how far the mob can attack player when standing
|
||||||
nearby, default is 3 nodes.
|
nearby, default is 3 nodes.
|
||||||
|
Reference in New Issue
Block a user