using Content.Shared.Damage.Systems; namespace Content.Shared.Destructible; public abstract class SharedDestructibleSystem : EntitySystem { // TODO: I don't really like this but this is out of scope to re-do destructible triggers while refactoring damageable [Dependency] public readonly DamageableSystem Damageable = default!; /// /// Force entity to be destroyed and deleted. /// public bool DestroyEntity(Entity owner) { var ev = new DestructionAttemptEvent(); RaiseLocalEvent(owner, ev); if (ev.Cancelled) return false; var eventArgs = new DestructionEventArgs(); RaiseLocalEvent(owner, eventArgs); PredictedQueueDel(owner); return true; } /// /// Force entity to break. /// public void BreakEntity(EntityUid owner) { var eventArgs = new BreakageEventArgs(); RaiseLocalEvent(owner, eventArgs); } } /// /// Raised before an entity is about to be destroyed and deleted /// public sealed class DestructionAttemptEvent : CancellableEntityEventArgs { } /// /// Raised when entity is destroyed and about to be deleted. /// public sealed class DestructionEventArgs : EntityEventArgs { } /// /// Raised when entity was heavy damage and about to break. /// public sealed class BreakageEventArgs : EntityEventArgs { }