using Content.Server.Explosion.EntitySystems; using Content.Server.Lightning; using Content.Server.Lightning.Components; using Content.Shared.Damage; namespace Content.Server.Tesla.EntitySystems; /// /// The component allows lightning to strike this target. And determining the behavior of the target when struck by lightning. /// public sealed class LightningTargetSystem : EntitySystem { [Dependency] private readonly DamageableSystem _damageable = default!; [Dependency] private readonly ExplosionSystem _explosionSystem = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnHitByLightning); } private void OnHitByLightning(Entity uid, ref HitByLightningEvent args) { DamageSpecifier damage = new(); damage.DamageDict.Add("Structural", uid.Comp.DamageFromLightning); _damageable.TryChangeDamage(uid, damage, true); if (uid.Comp.LightningExplode) { _explosionSystem.QueueExplosion( Transform(uid).MapPosition, uid.Comp.ExplosionPrototype, uid.Comp.TotalIntensity, uid.Comp.Dropoff, uid.Comp.MaxTileIntensity, canCreateVacuum: false); } } }