forked from VoxeLibre/VoxeLibre
Check for actual raid conditions and positions
This commit is contained in:
parent
7ab2c5fecd
commit
37144f8787
|
@ -91,36 +91,13 @@ function mcl_raids.find_villager(pos)
|
||||||
end
|
end
|
||||||
|
|
||||||
function mcl_raids.find_bed(pos)
|
function mcl_raids.find_bed(pos)
|
||||||
local beds = minetest.find_nodes_in_area(vector.offset(pos, -8, -8, -8), vector.offset(pos, 8, 8, 8), "mcl_beds:bed_red_bottom")
|
return minetest.find_node_near(pos,128,{"mcl_beds:bed_red_bottom"})
|
||||||
if beds[1] then
|
|
||||||
minetest.log("action", "[mcl_raids] Bed Found.")
|
|
||||||
return true
|
|
||||||
else
|
|
||||||
minetest.log("action", "[mcl_raids] No Bed Found.")
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function mcl_raids.find_village(pos)
|
function mcl_raids.find_village(pos)
|
||||||
local bed = mcl_raids.find_bed(pos)
|
local bed = mcl_raids.find_bed(pos)
|
||||||
local villager = mcl_raids.find_villager(pos)
|
if bed and mcl_raids.find_villager(bed) then
|
||||||
local raid_started = false
|
return bed
|
||||||
|
|
||||||
if (bed and villager) and raid_started == false then
|
|
||||||
local raid = mcl_raids.spawn_raid(pos, 1)
|
|
||||||
if raid then
|
|
||||||
minetest.log("action", "[mcl_raids] Village found, starting raid.")
|
|
||||||
raid_started = true
|
|
||||||
else
|
|
||||||
minetest.log("action", "[mcl_raids] Village found.")
|
|
||||||
end
|
|
||||||
return true
|
|
||||||
elseif raid_started == true then
|
|
||||||
minetest.log("action", "[mcl_raids] Raid already started.")
|
|
||||||
return
|
|
||||||
else
|
|
||||||
minetest.log("action", "[mcl_raids] Village not found, raid is not starting.")
|
|
||||||
return false
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -143,8 +120,11 @@ mcl_events.register_event("raid",{
|
||||||
for _,p in pairs(minetest.get_connected_players()) do
|
for _,p in pairs(minetest.get_connected_players()) do
|
||||||
local m=p:get_meta()
|
local m=p:get_meta()
|
||||||
if m:get_string("_has_bad_omen") == "yes" then
|
if m:get_string("_has_bad_omen") == "yes" then
|
||||||
|
local raid_pos = mcl_raids.find_village(p:get_pos())
|
||||||
|
if raid_pos then
|
||||||
m:set_string("_has_bad_omen","")
|
m:set_string("_has_bad_omen","")
|
||||||
table.insert(r,p:get_pos())
|
table.insert(r,raid_pos)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if #r > 0 then return r end
|
if #r > 0 then return r end
|
||||||
|
|
Loading…
Reference in New Issue