develop #28
4 changed files with 31 additions and 2 deletions
|
@ -8,7 +8,7 @@ local use_cmi = minetest.global_exists("cmi")
|
||||||
|
|
||||||
mobs = {
|
mobs = {
|
||||||
mod = "redo",
|
mod = "redo",
|
||||||
version = "20210102",
|
version = "20210104",
|
||||||
intllib = S,
|
intllib = S,
|
||||||
invis = minetest.global_exists("invisibility") and invisibility or {}
|
invis = minetest.global_exists("invisibility") and invisibility or {}
|
||||||
}
|
}
|
||||||
|
@ -65,6 +65,7 @@ local max_per_block = tonumber(settings:get("max_objects_per_block") or 99)
|
||||||
local mob_nospawn_range = tonumber(settings:get("mob_nospawn_range") or 12)
|
local mob_nospawn_range = tonumber(settings:get("mob_nospawn_range") or 12)
|
||||||
local active_limit = tonumber(settings:get("mob_active_limit") or 0)
|
local active_limit = tonumber(settings:get("mob_active_limit") or 0)
|
||||||
local mob_chance_multiplier = tonumber(settings:get("mob_chance_multiplier") or 1)
|
local mob_chance_multiplier = tonumber(settings:get("mob_chance_multiplier") or 1)
|
||||||
|
local peaceful_player_enabled = settings:get_bool("enable_peaceful_player")
|
||||||
local active_mobs = 0
|
local active_mobs = 0
|
||||||
|
|
||||||
|
|
||||||
|
@ -1848,6 +1849,23 @@ function mob_class:smart_mobs(s, p, dist, dtime)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- peaceful player privilege support
|
||||||
|
local function is_peaceful_player(player)
|
||||||
|
|
||||||
|
if peaceful_player_enabled then
|
||||||
|
|
||||||
|
local player_name = player:get_player_name()
|
||||||
|
|
||||||
|
if player_name
|
||||||
|
and minetest.check_player_privs(player_name, "peaceful_player") then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
-- general attack function for all mobs
|
-- general attack function for all mobs
|
||||||
function mob_class:general_attack()
|
function mob_class:general_attack()
|
||||||
|
|
||||||
|
@ -1920,7 +1938,8 @@ function mob_class:general_attack()
|
||||||
-- choose closest player to attack that isnt self
|
-- choose closest player to attack that isnt self
|
||||||
if dist ~= 0
|
if dist ~= 0
|
||||||
and dist < min_dist
|
and dist < min_dist
|
||||||
and self:line_of_sight(sp, p, 2) == true then
|
and self:line_of_sight(sp, p, 2) == true
|
||||||
|
and not is_peaceful_player(player) then
|
||||||
min_dist = dist
|
min_dist = dist
|
||||||
min_player = player
|
min_player = player
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,6 +1,12 @@
|
||||||
|
|
||||||
local path = minetest.get_modpath("mobs")
|
local path = minetest.get_modpath("mobs")
|
||||||
|
|
||||||
|
-- Peaceful player privilege
|
||||||
|
minetest.register_privilege("peaceful_player", {
|
||||||
|
description = "Prevents Mobs Redo mobs from attacking player",
|
||||||
|
give_to_singleplayer = false
|
||||||
|
})
|
||||||
|
|
||||||
-- Mob API
|
-- Mob API
|
||||||
dofile(path .. "/api.lua")
|
dofile(path .. "/api.lua")
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ Lucky Blocks: 9
|
||||||
|
|
||||||
|
|
||||||
Changelog:
|
Changelog:
|
||||||
|
- 1.55 - Add 'peaceful_player' privelage and setting so mobs don't attack specific players (thanks sfence)
|
||||||
- 1.54 - Simplified animal breeding function, added editable settings (thanks Wuzzy), Child mobs now take 20 mins to grow up, reverted to simple mob spawning with setting to use area checks, on_flop added, air_damage added.
|
- 1.54 - Simplified animal breeding function, added editable settings (thanks Wuzzy), Child mobs now take 20 mins to grow up, reverted to simple mob spawning with setting to use area checks, on_flop added, air_damage added.
|
||||||
- 1.53 - Added 'on_map_load' settings to mobs:spawn so that mobs will only spawn when new areas of map are loaded.
|
- 1.53 - Added 'on_map_load' settings to mobs:spawn so that mobs will only spawn when new areas of map are loaded.
|
||||||
- 1.52 - Added 'mob_active_limit' in settings to set number of mobs in game,
|
- 1.52 - Added 'mob_active_limit' in settings to set number of mobs in game,
|
||||||
|
|
|
@ -36,3 +36,6 @@ mob_active_limit (Mob Active Limit) float 0
|
||||||
|
|
||||||
# Enables area check when spawning mobs
|
# Enables area check when spawning mobs
|
||||||
mob_area_spawn (Mob Area Spawn) bool false
|
mob_area_spawn (Mob Area Spawn) bool false
|
||||||
|
|
||||||
|
# Enable peaceful player attack prevention
|
||||||
|
enable_peaceful_player (Mobs do not attack peaceful player without reason) bool false
|
||||||
|
|
Loading…
Reference in a new issue