Skip to content

Instantly share code, notes, and snippets.

@corarona
Created September 14, 2022 13:14
Show Gist options
  • Save corarona/925c1922b0ee04dadf9c9ae1192483dd to your computer and use it in GitHub Desktop.
Save corarona/925c1922b0ee04dadf9c9ae1192483dd to your computer and use it in GitHub Desktop.
z-siege
mcl_events = {}
local siegenight = false
local siege_active = false
local function is_in_village(pl)
local pos = pl:get_pos()
local bell = minetest.find_node_near(pos,64,{"mcl_bells:bell"})
if bell then return true end
--local m = minetest.get_meta(bell)
end
minetest.register_globalstep(function(dtime)
if minetest.get_timeofday() > 0.2 then
siegenight = false
elseif not siegenight then
if minetest.get_timeofday() - 0.1 <= 0 then
--if math.random(10) == 1 then
siegenight = true
minetest.log("it's siege night")
--end
end
elseif not siege_active then
for _,pl in pairs(minetest.get_connected_players()) do
if is_in_village(pl) then
local pos = pl:get_pos()
minetest.log("siege is happening")
siege_active = true
local p1 = vector.offset(pos,-32,-10,-32)
local p2 = vector.offset(pos,32,10,32)
local nn = minetest.find_nodes_in_area_under_air(p1,p2,{"group:solid"})
for k,v in pairs(nn) do
if vector.distance(pos,v) < 24 then
table.remove(nn,k)
end
end
table.shuffle(nn)
for i=math.min(15,#nn),math.min(#nn,math.random(20,40)) do
local p = vector.offset(nn[i],0,1,0)
minetest.add_entity(p,"mobs_mc:zombie")
end
end
end
end
end)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment