Add Destructible SpawnGasBehavior (#18965)
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using System.Linq;
|
||||
using Content.Server.Administration.Logs;
|
||||
using Content.Server.Atmos.EntitySystems;
|
||||
using Content.Server.Body.Systems;
|
||||
using Content.Server.Chemistry.EntitySystems;
|
||||
using Content.Server.Construction;
|
||||
@@ -26,6 +27,7 @@ namespace Content.Server.Destructible
|
||||
[Dependency] public readonly IRobustRandom Random = default!;
|
||||
public new IEntityManager EntityManager => base.EntityManager;
|
||||
|
||||
[Dependency] public readonly AtmosphereSystem AtmosphereSystem = default!;
|
||||
[Dependency] public readonly AudioSystem AudioSystem = default!;
|
||||
[Dependency] public readonly BodySystem BodySystem = default!;
|
||||
[Dependency] public readonly ConstructionSystem ConstructionSystem = default!;
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
using Content.Server.Atmos;
|
||||
using JetBrains.Annotations;
|
||||
|
||||
namespace Content.Server.Destructible.Thresholds.Behaviors;
|
||||
|
||||
[UsedImplicitly]
|
||||
[DataDefinition]
|
||||
public sealed class SpawnGasBehavior : IThresholdBehavior
|
||||
{
|
||||
[DataField("gasMixture", required: true)]
|
||||
public GasMixture Gas = new();
|
||||
|
||||
public void Execute(EntityUid owner, DestructibleSystem system, EntityUid? cause = null)
|
||||
{
|
||||
var air = system.AtmosphereSystem.GetContainingMixture(owner, false, true);
|
||||
|
||||
if (air != null)
|
||||
system.AtmosphereSystem.Merge(air, Gas);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user