diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/BaseCharger.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/BaseCharger.cs index 2ad077044f..ad415b2877 100644 --- a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/BaseCharger.cs +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/BaseCharger.cs @@ -229,7 +229,7 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents.PowerRece /// protected abstract bool IsEntityCompatible(IEntity entity); - protected abstract BatteryComponent GetBatteryFrom(IEntity entity); + protected abstract BatteryComponent? GetBatteryFrom(IEntity entity); private void UpdateStatus() { diff --git a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/WeaponCapacitorChargerComponent.cs b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/WeaponCapacitorChargerComponent.cs index 480d5c2a8c..c0f437fa9c 100644 --- a/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/WeaponCapacitorChargerComponent.cs +++ b/Content.Server/GameObjects/Components/Power/ApcNetComponents/PowerReceiverUsers/WeaponCapacitorChargerComponent.cs @@ -1,4 +1,4 @@ -#nullable enable +#nullable enable using Content.Server.GameObjects.Components.Weapon.Ranged.Barrels; using Content.Shared.Interfaces.GameObjects.Components; using Robust.Shared.GameObjects; @@ -17,12 +17,29 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents.PowerRece protected override bool IsEntityCompatible(IEntity entity) { - return entity.HasComponent(); + return entity.TryGetComponent(out ServerBatteryBarrelComponent? battery) && battery.PowerCell != null || + entity.TryGetComponent(out PowerCellSlotComponent? slot) && slot.HasCell; } - protected override BatteryComponent GetBatteryFrom(IEntity entity) + protected override BatteryComponent? GetBatteryFrom(IEntity entity) { - return entity.GetComponent().PowerCell; + if (entity.TryGetComponent(out PowerCellSlotComponent? slot)) + { + if (slot.Cell != null) + { + return slot.Cell; + } + } + + if (entity.TryGetComponent(out ServerBatteryBarrelComponent? battery)) + { + if (battery.PowerCell != null) + { + return battery.PowerCell; + } + } + + return null; } } } diff --git a/Content.Server/GameObjects/Components/Weapon/Ranged/Barrels/ServerBatteryBarrelComponent.cs b/Content.Server/GameObjects/Components/Weapon/Ranged/Barrels/ServerBatteryBarrelComponent.cs index d2da01a17d..63f61cbd9a 100644 --- a/Content.Server/GameObjects/Components/Weapon/Ranged/Barrels/ServerBatteryBarrelComponent.cs +++ b/Content.Server/GameObjects/Components/Weapon/Ranged/Barrels/ServerBatteryBarrelComponent.cs @@ -130,6 +130,7 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels _appearanceComponent?.SetData(MagazineBarrelVisuals.MagLoaded, _powerCellContainer.ContainedEntity != null); _appearanceComponent?.SetData(AmmoVisuals.AmmoCount, ShotsLeft); _appearanceComponent?.SetData(AmmoVisuals.AmmoMax, Capacity); + Dirty(); } public override IEntity PeekAmmo()