using Content.Server.Movement.Components; using Content.Server.Movement.Systems; using Content.Shared.Camera; using Content.Shared.Hands; using Content.Shared.Movement.Components; using Content.Shared.Wieldable; using Content.Shared.Wieldable.Components; namespace Content.Server.Wieldable; public sealed class WieldableSystem : SharedWieldableSystem { [Dependency] private readonly ContentEyeSystem _eye = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnEyeOffsetUnwielded); SubscribeLocalEvent(OnEyeOffsetWielded); SubscribeLocalEvent>(OnGetEyePvsScale); } private void OnEyeOffsetUnwielded(Entity entity, ref ItemUnwieldedEvent args) { _eye.UpdatePvsScale(args.User); } private void OnEyeOffsetWielded(Entity entity, ref ItemWieldedEvent args) { _eye.UpdatePvsScale(args.User); } private void OnGetEyePvsScale(Entity entity, ref HeldRelayedEvent args) { if (!TryComp(entity, out EyeCursorOffsetComponent? eyeCursorOffset) || !TryComp(entity.Owner, out WieldableComponent? wieldableComp)) return; if (!wieldableComp.Wielded) return; args.Args.Scale += eyeCursorOffset.PvsIncrease; } }