diff --git a/Server/src/main/java/core/game/content/activity/duel/DuelArea.java b/Server/src/main/java/core/game/content/activity/duel/DuelArea.java index c315f5d80..220d3aba3 100644 --- a/Server/src/main/java/core/game/content/activity/duel/DuelArea.java +++ b/Server/src/main/java/core/game/content/activity/duel/DuelArea.java @@ -370,6 +370,7 @@ public class DuelArea extends MapZone { * @param p the player. */ private void leave(Player p) { + p.getProperties().setSafeZone(false); if (p.getAttribute("duel:ammo", null) != null) { List ammo = p.getAttribute("duel:ammo"); Container c = new Container(40); diff --git a/Server/src/main/kotlin/Cutscene.kt b/Server/src/main/kotlin/Cutscene.kt index 55d38a9d6..aef434873 100644 --- a/Server/src/main/kotlin/Cutscene.kt +++ b/Server/src/main/kotlin/Cutscene.kt @@ -256,23 +256,33 @@ abstract class Cutscene(val player: Player) { 8 -> player.properties.teleportLocation = exitLocation 9 -> fadeFromBlack() 16 -> { - endActions?.invoke() - player.removeAttribute(ATTRIBUTE_CUTSCENE) - player.removeAttribute(ATTRIBUTE_CUTSCENE_STAGE) - player.properties.isSafeZone = false - player.properties.safeRespawn = ServerConstants.HOME_LOCATION - player.interfaceManager.restoreTabs() - player.unlock() - clearNPCs() - player.unhook(CUTSCENE_DEATH_HOOK) - player.logoutListeners.remove("cutscene") - RandomEventManager.getInstance(player)!!.enabled = true - PacketRepository.send(MinimapState::class.java, MinimapStateContext(player, 0)) + try { + endActions?.invoke() + } catch (e: Exception) { + SystemLogger.logErr("There's some bad nasty code in ${this::class.java.simpleName} end actions!") + e.printStackTrace() + } return true } } return false } + + override fun stop() { + super.stop() + player ?: return + player.removeAttribute(ATTRIBUTE_CUTSCENE) + player.removeAttribute(ATTRIBUTE_CUTSCENE_STAGE) + player.properties.isSafeZone = false + player.properties.safeRespawn = ServerConstants.HOME_LOCATION + player.interfaceManager.restoreTabs() + player.unlock() + clearNPCs() + player.unhook(CUTSCENE_DEATH_HOOK) + player.logoutListeners.remove("cutscene") + RandomEventManager.getInstance(player)?.enabled = true + PacketRepository.send(MinimapState::class.java, MinimapStateContext(player, 0)) + } }) }