void IAfterInteract.AfterInteract(AfterInteractEventArgs eventArgs)
        {
            if (!InteractionChecks.InRangeUnobstructed(eventArgs))
            {
                return;
            }

            if (eventArgs.Target == null)
            {
                return;
            }
            if (eventArgs.Target.TryGetComponent <BodySystem.BodyManagerComponent>(out BodySystem.BodyManagerComponent bodyManager))
            {
                _surgeryOptionsCache.Clear();
                var toSend = new Dictionary <string, string>();
                foreach (var(key, value) in bodyManager.PartDictionary)
                {
                    if (value.SurgeryCheck(_surgeryToolClass))
                    {
                        _surgeryOptionsCache.Add(key, value);
                        toSend.Add(key, value.Name);
                    }
                }
                if (_surgeryOptionsCache.Count > 0)
                {
                    OpenSurgeryUI(eventArgs.User);
                    UpdateSurgeryUI(eventArgs.User, toSend);
                    _performerCache = eventArgs.User;
                    _targetCache    = bodyManager;
                }
            }
        }
Exemplo n.º 2
0
        private void AddHand(BodyManagerComponent body)
        {
            var prototypeManager = IoCManager.Resolve <IPrototypeManager>();

            prototypeManager.TryIndex("bodyPart.LHand.BasicHuman", out BodyPartPrototype prototype);

            var part = new BodyPart(prototype);
            var slot = part.GetHashCode().ToString();

            body.Template.Slots.Add(slot, BodyPartType.Hand);
            body.TryAddPart(slot, part, true);
        }
 protected virtual void OnRemovedFromBody(BodyManagerComponent old)
 {
 }
 public void RemovedFromBody(BodyManagerComponent old)
 {
     OnRemovedFromBody(old);
     TryRemoveNetwork(old);
 }