From c795422bdfc6af34bfa9f07904c7509ad290466c Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Sun, 15 Sep 2024 22:23:02 +0200 Subject: [PATCH] Reset boss arena on player respawn --- mods/sf_zones/init.lua | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/mods/sf_zones/init.lua b/mods/sf_zones/init.lua index 6032a7c..ab21f9e 100644 --- a/mods/sf_zones/init.lua +++ b/mods/sf_zones/init.lua @@ -376,3 +376,28 @@ sf_zones.register_zone("forest_shrine", { }}, music = "crystal", }) + +-- Remove flyershooters and boss in boss arena if player +-- respawns from boss arena. +-- Done to reset the arena state properly so the player +-- can start from a clean slate on a retry. +minetest.register_on_respawnplayer(function(player) + if not sf_zones.is_in_zone(player:get_pos(), "boss_arena") then + return + end + local zone = sf_zones.get_zone("boss_arena") + local objs = sf_zones.get_objects_in_zone(zone) + for o=1, #objs do + local lua = objs[o]:get_luaentity() + if lua then + if lua.name == "sf_mobs:shadow_orb" then + minetest.log("action", "[sf_zones] Boss arena: Removing shadow orb at "..minetest.pos_to_string(objs[o]:get_pos()).." on player respawn") + objs[o]:remove() + elseif lua.name == "sf_mobs:flyershooter" then + minetest.log("action", "[sf_zones] Boss arena: Removing flyershooter at "..minetest.pos_to_string(objs[o]:get_pos()).." on player respawn") + objs[o]:remove() + end + end + end +end) +