using Content.Shared.Damage.Systems; using Content.Shared.Weapons.Hitscan.Components; using Content.Shared.Weapons.Hitscan.Events; namespace Content.Shared.Weapons.Hitscan.Systems; public sealed class HitscanBasicDamageSystem : EntitySystem { [Dependency] private readonly DamageableSystem _damage = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnHitscanHit); } private void OnHitscanHit(Entity ent, ref HitscanRaycastFiredEvent args) { if (args.Data.HitEntity == null) return; var dmg = ent.Comp.Damage * _damage.UniversalHitscanDamageModifier; if(!_damage.TryChangeDamage(args.Data.HitEntity.Value, dmg, out var damageDealt, origin: args.Data.Gun)) return; var damageEvent = new HitscanDamageDealtEvent { Target = args.Data.HitEntity.Value, DamageDealt = damageDealt, }; RaiseLocalEvent(ent, ref damageEvent); } }