diff --git a/Content.Server/Chemistry/ReactionEffects/ExplosionReactionEffect.cs b/Content.Server/Chemistry/ReactionEffects/ExplosionReactionEffect.cs index 5133ba4602..b26d563442 100644 --- a/Content.Server/Chemistry/ReactionEffects/ExplosionReactionEffect.cs +++ b/Content.Server/Chemistry/ReactionEffects/ExplosionReactionEffect.cs @@ -58,7 +58,7 @@ namespace Content.Server.Chemistry.ReactionEffects int finalHeavyImpactRange = (int)MathF.Round(_heavyImpactRange * floatIntensity); int finalLightImpactRange = (int)MathF.Round(_lightImpactRange * floatIntensity); int finalFlashRange = (int)MathF.Round(_flashRange * floatIntensity); - ExplosionHelper.SpawnExplosion(solutionEntity.Transform.Coordinates, finalDevastationRange, + solutionEntity.SpawnExplosion(finalDevastationRange, finalHeavyImpactRange, finalLightImpactRange, finalFlashRange); } } diff --git a/Content.Server/Explosions/ExplosionHelper.cs b/Content.Server/Explosions/ExplosionHelper.cs index 7a0e47bc9a..91d5f4f76e 100644 --- a/Content.Server/Explosions/ExplosionHelper.cs +++ b/Content.Server/Explosions/ExplosionHelper.cs @@ -24,9 +24,9 @@ namespace Content.Server.Explosions /// Distance used for camera shake when distance from explosion is (0.0, 0.0). /// Avoids getting NaN values down the line from doing math on (0.0, 0.0). /// - private static Vector2 _epicenterDistance = (0.1f, 0.1f); + private static readonly Vector2 EpicenterDistance = (0.1f, 0.1f); - public static void SpawnExplosion(EntityCoordinates coords, int devastationRange, int heavyImpactRange, int lightImpactRange, int flashRange) + public static void SpawnExplosion(this EntityCoordinates coords, int devastationRange, int heavyImpactRange, int lightImpactRange, int flashRange) { var tileDefinitionManager = IoCManager.Resolve(); var serverEntityManager = IoCManager.Resolve(); @@ -151,7 +151,7 @@ namespace Content.Server.Explosions var delta = coords.ToMapPos(entityManager) - playerPos; //Change if zero. Will result in a NaN later breaking camera shake if not changed if (delta.EqualsApprox((0.0f, 0.0f))) - delta = _epicenterDistance; + delta = EpicenterDistance; var distance = delta.LengthSquared; var effect = 10 * (1 / (1 + distance)); @@ -162,5 +162,11 @@ namespace Content.Server.Explosions } } } + + public static void SpawnExplosion(this IEntity entity, int devastationRange, int heavyImpactRange, + int lightImpactRange, int flashRange) + { + entity.Transform.Coordinates.SpawnExplosion(devastationRange, heavyImpactRange, lightImpactRange, flashRange); + } } } diff --git a/Content.Server/GameObjects/Components/Explosion/ExplosiveComponent.cs b/Content.Server/GameObjects/Components/Explosion/ExplosiveComponent.cs index 759edb5d5b..69d0c14772 100644 --- a/Content.Server/GameObjects/Components/Explosion/ExplosiveComponent.cs +++ b/Content.Server/GameObjects/Components/Explosion/ExplosiveComponent.cs @@ -34,7 +34,7 @@ namespace Content.Server.GameObjects.Components.Explosion if (_beingExploded) return true; _beingExploded = true; - ExplosionHelper.SpawnExplosion(Owner.Transform.Coordinates, DevastationRange, HeavyImpactRange, LightImpactRange, FlashRange); + Owner.SpawnExplosion(DevastationRange, HeavyImpactRange, LightImpactRange, FlashRange); Owner.Delete(); return true; diff --git a/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/AMENodeGroup.cs b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/AMENodeGroup.cs index 5d4bb54aac..57f54a9f26 100644 --- a/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/AMENodeGroup.cs +++ b/Content.Server/GameObjects/Components/NodeContainer/NodeGroups/AMENodeGroup.cs @@ -143,9 +143,7 @@ namespace Content.Server.GameObjects.Components.NodeContainer.NodeGroups intensity = Math.Min(intensity, 8); - ExplosionHelper.SpawnExplosion(epicenter.Owner.Transform.Coordinates, intensity / 2, intensity, intensity * 2, intensity * 3); - + epicenter.Owner.SpawnExplosion(intensity / 2, intensity, intensity * 2, intensity * 3); } - } } diff --git a/Content.Server/GameObjects/Components/Pointing/RoguePointingArrowComponent.cs b/Content.Server/GameObjects/Components/Pointing/RoguePointingArrowComponent.cs index 8c25d37eb1..67632cab22 100644 --- a/Content.Server/GameObjects/Components/Pointing/RoguePointingArrowComponent.cs +++ b/Content.Server/GameObjects/Components/Pointing/RoguePointingArrowComponent.cs @@ -127,7 +127,7 @@ namespace Content.Server.GameObjects.Components.Pointing return; } - ExplosionHelper.SpawnExplosion(Owner.Transform.Coordinates, 0, 2, 1, 1); + Owner.SpawnExplosion(0, 2, 1, 1); EntitySystem.Get().PlayFromEntity("/Audio/Effects/explosion.ogg", Owner); Owner.Delete();