using Content.Server.Administration.Logs; using Content.Server.Damage.Components; using Content.Shared.Damage; using Content.Shared.Database; using Content.Shared.MobState.Components; using Content.Shared.Throwing; namespace Content.Server.Damage.Systems { public sealed class DamageOtherOnHitSystem : EntitySystem { [Dependency] private readonly DamageableSystem _damageableSystem = default!; [Dependency] private readonly AdminLogSystem _logSystem = default!; public override void Initialize() { SubscribeLocalEvent(OnDoHit); } private void OnDoHit(EntityUid uid, DamageOtherOnHitComponent component, ThrowDoHitEvent args) { var dmg = _damageableSystem.TryChangeDamage(args.Target, component.Damage, component.IgnoreResistances); // Log damage only for mobs. Useful for when people throw spears at each other, but also avoids log-spam when explosions send glass shards flying. if (dmg != null && HasComp(args.Target)) _logSystem.Add(LogType.ThrowHit, $"{ToPrettyString(args.Target):target} received {dmg.Total:damage} damage from collision"); } } }