]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
make explosions affect containers (#21625)
authordeltanedas <39013340+deltanedas@users.noreply.github.com>
Mon, 13 Nov 2023 22:57:52 +0000 (22:57 +0000)
committerGitHub <noreply@github.com>
Mon, 13 Nov 2023 22:57:52 +0000 (15:57 -0700)
Co-authored-by: deltanedas <@deltanedas:kde.org>
Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs
Content.Server/Explosion/EntitySystems/ExplosionSystem.cs

index 102b461fe02538a93188f9fc743eb8421a81d8d0..aa3f114c0e1fa78674cfcb673dee93a56ef85af6 100644 (file)
@@ -406,6 +406,19 @@ public sealed partial class ExplosionSystem
             _damageableSystem.TryChangeDamage(uid, damage, ignoreResistances: true, damageable: damageable);
         }
 
+        // if it's a container, try to damage all its contents
+        if (_containersQuery.TryGetComponent(uid, out var containers))
+        {
+            foreach (var container in containers.Containers.Values)
+            {
+                foreach (var ent in container.ContainedEntities)
+                {
+                    // setting throw force to 0 to prevent offset items inside containers
+                    ProcessEntity(ent, epicenter, damage, 0f, id, _transformQuery.GetComponent(uid));
+                }
+            }
+        }
+
         // throw
         if (xform != null // null implies anchored
             && !xform.Anchored
index aa1ad71b16c188796cff6595265251fedeca2803..2ddf314fa11ace9aadff4bd91c5036eb50eb8ddd 100644 (file)
@@ -21,6 +21,7 @@ using Robust.Server.GameStates;
 using Robust.Server.Player;
 using Robust.Shared.Audio;
 using Robust.Shared.Configuration;
+using Robust.Shared.Containers;
 using Robust.Shared.Map;
 using Robust.Shared.Physics.Components;
 using Robust.Shared.Player;
@@ -51,6 +52,7 @@ public sealed partial class ExplosionSystem : EntitySystem
     [Dependency] private readonly SharedTransformSystem _transformSystem = default!;
 
     private EntityQuery<TransformComponent> _transformQuery;
+    private EntityQuery<ContainerManagerComponent> _containersQuery;
     private EntityQuery<DamageableComponent> _damageQuery;
     private EntityQuery<PhysicsComponent> _physicsQuery;
     private EntityQuery<ProjectileComponent> _projectileQuery;
@@ -104,6 +106,7 @@ public sealed partial class ExplosionSystem : EntitySystem
         InitVisuals();
 
         _transformQuery = GetEntityQuery<TransformComponent>();
+        _containersQuery = GetEntityQuery<ContainerManagerComponent>();
         _damageQuery = GetEntityQuery<DamageableComponent>();
         _physicsQuery = GetEntityQuery<PhysicsComponent>();
         _projectileQuery = GetEntityQuery<ProjectileComponent>();