using Content.Shared.Body.Components; using Content.Shared.IdentityManagement; using Content.Shared.Inventory; using Content.Shared.Popups; using JetBrains.Annotations; using Robust.Server.GameObjects; namespace Content.Server.Destructible.Thresholds.Behaviors; [UsedImplicitly] [DataDefinition] public sealed partial class BurnBodyBehavior : IThresholdBehavior { public void Execute(EntityUid bodyId, DestructibleSystem system, EntityUid? cause = null) { var transformSystem = system.EntityManager.System(); var inventorySystem = system.EntityManager.System(); var sharedPopupSystem = system.EntityManager.System(); if (system.EntityManager.TryGetComponent(bodyId, out var comp)) { foreach (var item in inventorySystem.GetHandOrInventoryEntities(bodyId)) { transformSystem.DropNextTo(item, bodyId); } } var bodyIdentity = Identity.Entity(bodyId, system.EntityManager); sharedPopupSystem.PopupCoordinates(Loc.GetString("bodyburn-text-others", ("name", bodyIdentity)), transformSystem.GetMoverCoordinates(bodyId), PopupType.LargeCaution); system.EntityManager.QueueDeleteEntity(bodyId); } }