using Content.Server.Explosion.EntitySystems;
using Content.Server.Lightning;
using Content.Server.Lightning.Components;
using Content.Shared.Damage;
using Robust.Server.GameObjects;
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!;
[Dependency] private readonly TransformSystem _transform = 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.GetMapCoordinates(uid),
uid.Comp.ExplosionPrototype,
uid.Comp.TotalIntensity, uid.Comp.Dropoff,
uid.Comp.MaxTileIntensity,
uid,
canCreateVacuum: false);
}
}
}