[sneeker] Update to Git commit b69cc98:
https://github.com/AntumDeluge/mtmod-sneeker/tree/b69cc98master
parent
d434226284
commit
d2f78defe0
|
@ -60,7 +60,7 @@ The game includes the mods from the default [minetest_game](https://github.com/m
|
|||
* mobiles/aggressive/
|
||||
* [mobs_goblins][] ([CC-BY-SA / CC-BY / CC0][lic.mobs_goblins]) -- version: [a346f85 Git][ver.mobs_goblins] *2015-09-12* ([patched][patch.mobs_goblins])
|
||||
* [mobs_monster][] ([MIT][lic.mobs_monster]) -- version: [f6d0e01 Git][ver.mobs_monster] *2017-04-27*
|
||||
* [sneeker][] ([WTFPL][lic.wtfpl] / [CC0][lic.cc0]) -- version: [d336800 Git][ver.sneeker] *2017-05-29*
|
||||
* [sneeker][] ([WTFPL][lic.wtfpl] / [CC0][lic.cc0]) -- version: [b69cc98 Git][ver.sneeker] *2017-05-29*
|
||||
* [spidermob][] ([LGPL][lic.lgpl2.1] / [CC BY-SA][lic.ccbysa3.0] / [MIT][lic.mit] / [WTFPL][lic.spidermob] / [Unlicense][lic.unlicense]) -- version [c72d2ff Git][ver.spidermob] *2016-08-14* ([patched][patch.spidermob])
|
||||
* mobiles/engine/
|
||||
* mobiles/general/
|
||||
|
@ -462,7 +462,7 @@ The game includes the mods from the default [minetest_game](https://github.com/m
|
|||
[ver.rainbow_ore]: https://github.com/FsxShader2012/rainbow_ore/tree/6e77693
|
||||
[ver.signs_lib]: https://github.com/minetest-mods/signs_lib/tree/2c36937
|
||||
[ver.simple_protection]: https://github.com/SmallJoker/simple_protection/tree/23c024f
|
||||
[ver.sneeker]: https://github.com/AntumDeluge/mtmod-sneeker/tree/d336800
|
||||
[ver.sneeker]: https://github.com/AntumDeluge/mtmod-sneeker/tree/b69cc98
|
||||
[ver.snowdrift]: https://github.com/paramat/snowdrift/tree/fcb0537
|
||||
[ver.spawneggs]: https://github.com/thefamilygrog66/spawneggs/tree/4650370
|
||||
[ver.spectator_mode]: https://github.com/minetest-mods/spectator_mode/tree/7d68bec
|
||||
|
|
|
@ -1769,19 +1769,24 @@ sneeker.debug = true
|
|||
|
||||
# Sets maximum number of spawns that can exist in world.
|
||||
# type: int
|
||||
# default: 50
|
||||
#sneeker.spawn_cap = 50
|
||||
# default: 25
|
||||
#sneeker.spawn_cap = 25
|
||||
|
||||
# Sets possibility for sneeker mob spawn.
|
||||
# type: int
|
||||
# default: 18000
|
||||
#sneeker.spawn_chance = 18000
|
||||
# default: 2
|
||||
#sneeker.spawn_chance = 2
|
||||
|
||||
# Sets frequency of sneeker mob spawn chance. Default 1200 is
|
||||
# equivalent to 40 minutes (60 * 40).
|
||||
# type: int
|
||||
# default: 2400
|
||||
#sneeker.spawn_interval = 2400
|
||||
#sneeker.spawn_interval = 120
|
||||
|
||||
# Sets the maximum light that a node can have for spawn to occur.
|
||||
# type: int
|
||||
# default: 7
|
||||
#sneeker.spawn_maxlight = 7
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,14 +1,30 @@
|
|||
-- Functions for sneeker mod
|
||||
|
||||
|
||||
local log_mods = minetest.setting_getbool('log_mods')
|
||||
|
||||
|
||||
-- Displays a message in log output
|
||||
function sneeker.log(message)
|
||||
minetest.log('action', '[' .. sneeker.modname .. '] ' .. message)
|
||||
if log_mods then
|
||||
minetest.log('action', '[' .. sneeker.modname .. '] ' .. message)
|
||||
end
|
||||
end
|
||||
|
||||
-- Displays a message in log output only if 'sneeker.debug' is set to 'true'
|
||||
function sneeker.log_debug(message)
|
||||
if sneeker.debug then
|
||||
sneeker.log('[DEBUG] ' .. message)
|
||||
sneeker.log('DEBUG: ' .. message)
|
||||
end
|
||||
end
|
||||
|
||||
-- Spawns a sneeker entity
|
||||
function sneeker.spawn(pos)
|
||||
minetest.add_entity(pos, sneeker.mob_name)
|
||||
sneeker.log_debug('Spawned entity "' .. sneeker.mob_name .. '" at ' .. tostring(pos.x) .. ',' .. tostring(pos.y))
|
||||
end
|
||||
|
||||
-- Retrieves pos coordinates in string value
|
||||
function sneeker.get_pos_string(pos)
|
||||
return 'x=' .. tostring(pos.x) .. ', y=' .. tostring(pos.y) .. ', z=' .. tostring(pos.z)
|
||||
end
|
||||
|
|
|
@ -5,21 +5,19 @@ sneeker = {}
|
|||
sneeker.modname = minetest.get_current_modname()
|
||||
sneeker.modpath = minetest.get_modpath(sneeker.modname)
|
||||
|
||||
local log_mods = minetest.setting_getbool('log_mods')
|
||||
|
||||
if log_mods then
|
||||
if minetest.setting_getbool('log_mods') then
|
||||
minetest.log('action', 'Loading mod "' .. sneeker.modname .. '" ...')
|
||||
end
|
||||
|
||||
dofile(sneeker.modpath .. '/settings.lua')
|
||||
dofile(sneeker.modpath .. '/functions.lua')
|
||||
|
||||
sneeker.log_debug('Debugging is on')
|
||||
|
||||
sneeker.mob_name = sneeker.modname .. ':' .. sneeker.modname
|
||||
sneeker.spawnegg_name = sneeker.modname .. ':spawnegg'
|
||||
|
||||
if log_mods then
|
||||
sneeker.log('Spawn cap: ' .. tostring(sneeker.spawn_cap))
|
||||
end
|
||||
sneeker.log('Spawn cap: ' .. tostring(sneeker.spawn_cap))
|
||||
|
||||
local scripts = {
|
||||
'tnt_function',
|
||||
|
|
|
@ -2,4 +2,9 @@
|
|||
|
||||
|
||||
sneeker.debug = minetest.setting_get('sneeker.debug') or false
|
||||
|
||||
-- Maximum number of spawns active at one time
|
||||
sneeker.spawn_cap = minetest.setting_get('sneeker.spawn_cap') or 25
|
||||
|
||||
-- Maximum light of node for spawn
|
||||
sneeker.spawn_maxlight = minetest.setting_get('sneeker.spawn_maxlight') or 7
|
||||
|
|
|
@ -5,8 +5,11 @@ sneeker.debug (Log debug output) bool false
|
|||
sneeker.spawn_cap (Maximum spawns) int 25
|
||||
|
||||
# Sets possibility for spawn.
|
||||
sneeker.spawn_chance (Spawn chance) int 18000
|
||||
sneeker.spawn_chance (Spawn chance) int 2
|
||||
|
||||
# Sets frequency of spawn chance.
|
||||
# Default 1200 is equivalent to 20 minutes (60 * 40).
|
||||
sneeker.spawn_interval (Spawn interval) int 2400
|
||||
# Default 120 is equivalent to 2 minutes (60 * 2).
|
||||
sneeker.spawn_interval (Spawn interval) int 120
|
||||
|
||||
# Sets the maximum light that a node can have for spawn to occur.
|
||||
sneeker.spawn_maxlight (Max light for spawn) int 7
|
||||
|
|
|
@ -5,13 +5,13 @@ local time_min = 60
|
|||
local time_hr = time_min * 60
|
||||
local time_day = time_hr * 24
|
||||
|
||||
local spawn_chance = minetest.setting_get('sneeker.spawn_chance') or 18000
|
||||
local spawn_interval = minetest.setting_get('sneeker.spawn_interval') or time_min * 40 -- Default interval is 40 minutes
|
||||
local spawn_chance = minetest.setting_get('sneeker.spawn_chance') or 2 -- 50% chance of spawn
|
||||
local spawn_interval = minetest.setting_get('sneeker.spawn_interval') or time_min * 2 -- Default interval is 2 minutes
|
||||
|
||||
if minetest.setting_getbool('log_mods') then
|
||||
sneeker.log('Spawn chance: ' .. tostring(spawn_chance) .. ' (1/' .. tostring(spawn_chance) .. ')')
|
||||
sneeker.log('Spawn interval: ' .. tostring(spawn_interval) .. ' (' .. tostring(spawn_interval/60) .. ' minutes)')
|
||||
end
|
||||
local spawn_chance_percent = tostring(math.floor(1 / spawn_chance * 100)) .. '%'
|
||||
|
||||
sneeker.log('Spawn chance: ' .. spawn_chance_percent)
|
||||
sneeker.log('Spawn interval: ' .. tostring(spawn_interval) .. ' (' .. tostring(spawn_interval/60) .. ' minute(s))')
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {'default:dirt_with_grass', 'default:stone'},
|
||||
|
@ -22,19 +22,25 @@ minetest.register_abm({
|
|||
if active_object_count_wider > 5 then
|
||||
return
|
||||
end
|
||||
|
||||
-- Check light value of node
|
||||
pos.y = pos.y+1
|
||||
if not minetest.get_node_light(pos) then
|
||||
return
|
||||
end
|
||||
if minetest.get_node_light(pos) > 5 then
|
||||
return
|
||||
end
|
||||
if minetest.get_node_light(pos) < -1 then
|
||||
local node_light = minetest.get_node_light(pos)
|
||||
|
||||
-- Debugging spawning
|
||||
sneeker.log_debug('Node light level at ' .. sneeker.get_pos_string(pos) .. ': ' .. tostring(node_light))
|
||||
|
||||
if not node_light or node_light > sneeker.spawn_maxlight or node_light < -1 then
|
||||
sneeker.log_debug('Node not dark enough for spawn')
|
||||
return
|
||||
end
|
||||
|
||||
-- Spawn range
|
||||
if pos.y > 31000 then
|
||||
return
|
||||
end
|
||||
|
||||
-- Node must be touching air
|
||||
if minetest.get_node(pos).name ~= 'air' then
|
||||
return
|
||||
end
|
||||
|
@ -44,14 +50,20 @@ minetest.register_abm({
|
|||
end
|
||||
|
||||
-- Get total count of sneekers in world
|
||||
local name, count
|
||||
for name in pairs(minetest.luaentities) do
|
||||
if name == sneeker.mob_name then
|
||||
local count = 0
|
||||
for I in pairs(minetest.luaentities) do
|
||||
if minetest.luaentities[I].name == sneeker.mob_name then
|
||||
count = count + 1
|
||||
end
|
||||
end
|
||||
if count >= sneeker.spawn_cap then return end -- Max sneekers already exist
|
||||
|
||||
minetest.add_entity(pos, sneeker.mob_name)
|
||||
sneeker.log_debug('Current active spawns: ' .. tostring(count) .. '/' .. tostring(sneeker.spawn_cap))
|
||||
|
||||
if count >= sneeker.spawn_cap then
|
||||
sneeker.log_debug('Max spawns reached')
|
||||
return
|
||||
end
|
||||
|
||||
sneeker.spawn(pos)
|
||||
end
|
||||
})
|
||||
|
|
|
@ -107,11 +107,14 @@ sneeker.debug (Log debug output) bool false
|
|||
sneeker.spawn_cap (Maximum spawns) int 25
|
||||
|
||||
# Sets possibility for spawn.
|
||||
sneeker.spawn_chance (Spawn chance) int 18000
|
||||
sneeker.spawn_chance (Spawn chance) int 2
|
||||
|
||||
# Sets frequency of spawn chance.
|
||||
# Default 1200 is equivalent to 20 minutes (60 * 40).
|
||||
sneeker.spawn_interval (Spawn interval) int 2400
|
||||
# Default 120 is equivalent to 2 minutes (60 * 2).
|
||||
sneeker.spawn_interval (Spawn interval) int 120
|
||||
|
||||
# Sets the maximum light that a node can have for spawn to occur.
|
||||
sneeker.spawn_maxlight (Max node light for spawn) int 7
|
||||
|
||||
|
||||
[*Player Visuals]
|
||||
|
|
Loading…
Reference in New Issue