Ejemplo n.º 1
0
        private bool HandleThrowItem(ICommonSession?session, EntityCoordinates coords, EntityUid uid)
        {
            if (session is not IPlayerSession playerSession)
            {
                return(false);
            }

            var playerEnt = playerSession.AttachedEntity;

            if (playerEnt == null || !playerEnt.IsValid() || !playerEnt.TryGetComponent(out SharedHandsComponent? hands))
            {
                return(false);
            }

            if (!hands.TryGetActiveHeldEntity(out var throwEnt))
            {
                return(false);
            }

            if (!_interactionSystem.TryThrowInteraction(hands.Owner, throwEnt))
            {
                return(false);
            }

            if (throwEnt.TryGetComponent(out StackComponent? stack) && stack.Count > 1 && stack.ThrowIndividually)
            {
                var splitStack = _stackSystem.Split(throwEnt.Uid, stack, 1, playerEnt.Transform.Coordinates);

                if (splitStack == null)
                {
                    return(false);
                }

                throwEnt = splitStack;
            }