From 4e085d884769d8254c596ac0f2a0859d223002f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Aguilera=20Puerto?= Date: Fri, 9 Oct 2020 12:04:18 +0200 Subject: [PATCH] Fix event crashing when ghosts are present. --- Content.Server/StationEvents/BoltsDown.cs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Content.Server/StationEvents/BoltsDown.cs b/Content.Server/StationEvents/BoltsDown.cs index c7d2c362d4..ec15efb6b9 100644 --- a/Content.Server/StationEvents/BoltsDown.cs +++ b/Content.Server/StationEvents/BoltsDown.cs @@ -1,3 +1,4 @@ +#nullable enable using JetBrains.Annotations; using Content.Server.GameObjects.Components.Doors; using Content.Server.GameObjects.Components.GUI; @@ -22,7 +23,7 @@ namespace Content.Server.StationEvents public override StationEventWeight Weight => StationEventWeight.Low; public override int? MaxOccurrences => 1; private float _elapsedTime; - private int _eventDuration; + private int _eventDuration; protected override string StartAnnouncement => Loc.GetString( "The clover hat hackers turned the bolts of all the airlocks in the station down. We have dispatched high quality hacking equipment at every crewmember location so that this productive shift can continue"); protected override string EndAnnouncement => Loc.GetString( @@ -39,11 +40,10 @@ namespace Content.Server.StationEvents var playerManager = IoCManager.Resolve(); foreach (var player in playerManager.GetAllPlayers()) { - var inventory = player.AttachedEntity.GetComponent(); - if (player.AttachedEntity == null) return; - if (inventory.TryGetSlotItem(EquipmentSlotDefines.Slots.BELT, out ItemComponent item) - && item.Owner.Prototype.ID == "UtilityBeltClothingFilledEvent") return; - if (player.AttachedEntity.TryGetComponent(out var damageable) + if (player.AttachedEntity == null || !player.AttachedEntity.TryGetComponent(out InventoryComponent? inventory)) return; + if (inventory.TryGetSlotItem(EquipmentSlotDefines.Slots.BELT, out ItemComponent? item) + && item?.Owner.Prototype?.ID == "UtilityBeltClothingFilledEvent") return; + if (player.AttachedEntity.TryGetComponent(out var damageable) && damageable.CurrentDamageState == DamageState.Dead) return; var entityManager = IoCManager.Resolve(); @@ -65,7 +65,7 @@ namespace Content.Server.StationEvents { return; } - + _elapsedTime += frameTime; if (_elapsedTime < _eventDuration) @@ -76,4 +76,4 @@ namespace Content.Server.StationEvents Running = false; } } -} \ No newline at end of file +}