diff --git a/QSB/EchoesOfTheEye/Ghosts/Messages/ChangeActionMessage.cs b/QSB/EchoesOfTheEye/Ghosts/Messages/ChangeActionMessage.cs index a13048ab..ac801329 100644 --- a/QSB/EchoesOfTheEye/Ghosts/Messages/ChangeActionMessage.cs +++ b/QSB/EchoesOfTheEye/Ghosts/Messages/ChangeActionMessage.cs @@ -10,7 +10,13 @@ internal class ChangeActionMessage : QSBWorldObjectMessage().EvaluateActions(); return false; } diff --git a/QSB/EchoesOfTheEye/Ghosts/WorldObjects/QSBGhostBrain.cs b/QSB/EchoesOfTheEye/Ghosts/WorldObjects/QSBGhostBrain.cs index 8481df4e..e7b4f28d 100644 --- a/QSB/EchoesOfTheEye/Ghosts/WorldObjects/QSBGhostBrain.cs +++ b/QSB/EchoesOfTheEye/Ghosts/WorldObjects/QSBGhostBrain.cs @@ -546,7 +546,11 @@ public class QSBGhostBrain : WorldObject, IGhostObject { AttachedObject.enabled = false; AttachedObject._controller.GetDreamLanternController().enabled = false; - ChangeAction(null); + if (QSBCore.IsHost) + { + ChangeAction(null); + } + _data.OnPlayerExitDreamWorld(); } } diff --git a/QSB/EchoesOfTheEye/Ghosts/WorldObjects/QSBGhostSensors.cs b/QSB/EchoesOfTheEye/Ghosts/WorldObjects/QSBGhostSensors.cs index 6c919f49..1d3b5b2e 100644 --- a/QSB/EchoesOfTheEye/Ghosts/WorldObjects/QSBGhostSensors.cs +++ b/QSB/EchoesOfTheEye/Ghosts/WorldObjects/QSBGhostSensors.cs @@ -45,6 +45,12 @@ public class QSBGhostSensors : WorldObject, IGhostObject foreach (var pair in _data.players) { var player = pair.Value; + + if (player.player.AssignedSimulationLantern == null) + { + continue; + } + var lanternController = player.player.AssignedSimulationLantern.AttachedObject.GetLanternController(); var playerLightSensor = Locator.GetPlayerLightSensor(); player.sensor.isPlayerHoldingLantern = lanternController.IsHeldByPlayer();