コード例 #1
0
        private void OnUseInHand(EntityUid uid, ClothingComponent component, UseInHandEvent args)
        {
            if (args.Handled || !component.QuickEquip)
            {
                return;
            }

            QuickEquip(uid, component, args);
        }
コード例 #2
0
        /// <summary>
        /// Eat item
        /// </summary>
        private void OnUseFoodInHand(EntityUid uid, FoodComponent foodComponent, UseInHandEvent ev)
        {
            if (ev.Handled)
            {
                return;
            }

            ev.Handled = TryFeed(ev.User, ev.User, foodComponent);
        }
コード例 #3
0
    private void OnAmmoBoxUse(EntityUid uid, AmmoBoxComponent component, UseInHandEvent args)
    {
        if (args.Handled)
        {
            return;
        }

        TryUse(args.User, component);
    }
コード例 #4
0
 /// <summary>
 /// Adds the guardian host component to the user and spawns the guardian inside said component
 /// </summary>
 private void OnCreatorUse(EntityUid uid, GuardianCreatorComponent component, UseInHandEvent args)
 {
     if (args.Handled)
     {
         return;
     }
     args.Handled = true;
     UseCreator(args.User, args.User, component);
 }
コード例 #5
0
        private void OnFlashUseInHand(EntityUid uid, FlashComponent comp, UseInHandEvent args)
        {
            if (!UseFlash(comp, args.User))
            {
                return;
            }

            FlashArea(uid, args.User, comp.Range, comp.AoeFlashDuration, comp.SlowTo, true);
        }
コード例 #6
0
        private void OnUseInHand(EntityUid uid, DiceComponent component, UseInHandEvent args)
        {
            if (args.Handled)
            {
                return;
            }

            args.Handled = true;
            Roll(uid, component);
        }
コード例 #7
0
        private void OnUseInHand(EntityUid uid, RCDComponent component, UseInHandEvent args)
        {
            if (args.Handled)
            {
                return;
            }

            NextMode(uid, component, args.User);
            args.Handled = true;
        }
コード例 #8
0
    private void OnTimerUse(EntityUid uid, OnUseTimerTriggerComponent component, UseInHandEvent args)
    {
        if (args.Handled)
        {
            return;
        }

        Trigger(uid, args.User, component);
        args.Handled = true;
    }
コード例 #9
0
    private void OnPumpUse(EntityUid uid, PumpBarrelComponent component, UseInHandEvent args)
    {
        if (args.Handled)
        {
            return;
        }

        args.Handled = true;
        CyclePump(component, true);
    }
コード例 #10
0
        private void OnUseInHand(EntityUid uid, HandLabelerComponent handLabeler, UseInHandEvent args)
        {
            if (!args.User.TryGetComponent(out ActorComponent? actor))
            {
                return;
            }

            handLabeler.Owner.GetUIOrNull(HandLabelerUiKey.Key)?.Open(actor.PlayerSession);
            args.Handled = true;
        }
コード例 #11
0
    private void OnInjectorUse(EntityUid uid, InjectorComponent component, UseInHandEvent args)
    {
        if (args.Handled)
        {
            return;
        }

        Toggle(component, args.User);
        args.Handled = true;
    }
コード例 #12
0
    private void OnHealingUse(EntityUid uid, HealingComponent component, UseInHandEvent args)
    {
        if (args.Handled)
        {
            return;
        }

        args.Handled = true;
        Heal(uid, args.User, args.User, component);
    }
コード例 #13
0
        private void OnUseInHand(EntityUid uid, HyposprayComponent component, UseInHandEvent args)
        {
            if (args.Handled)
            {
                return;
            }

            component.TryDoInject(args.User, args.User);
            args.Handled = true;
        }
コード例 #14
0
    private void OnUse(EntityUid uid, SpellbookComponent component, UseInHandEvent args)
    {
        if (args.Handled)
        {
            return;
        }

        AttemptLearn(uid, component, args);

        args.Handled = true;
    }
コード例 #15
0
    private void OnUseInHand(EntityUid uid, MousetrapComponent component, UseInHandEvent args)
    {
        component.IsActive = !component.IsActive;
        _popupSystem.PopupEntity(component.IsActive
            ? Loc.GetString("mousetrap-on-activate")
            : Loc.GetString("mousetrap-on-deactivate"),
                                 uid,
                                 Filter.Entities(args.User));

        UpdateVisuals(uid);
    }
コード例 #16
0
 private void OnUseInHand(EntityUid uid, StunbatonComponent comp, UseInHandEvent args)
 {
     if (comp.Activated)
     {
         TurnOff(comp);
     }
     else
     {
         TurnOn(comp, args.User);
     }
 }
コード例 #17
0
        private void OnUseInHand(EntityUid uid, PinpointerComponent component, UseInHandEvent args)
        {
            TogglePinpointer(uid, component);

            // try to find target from whitelist
            if (component.IsActive && component.Whitelist != null)
            {
                var target = FindTargetFromWhitelist(uid, component.Whitelist);
                SetTarget(uid, target, component);
            }
        }
コード例 #18
0
        private void OnUseInHand(EntityUid uid, SpawnItemsOnUseComponent component, UseInHandEvent args)
        {
            if (args.Handled)
            {
                return;
            }

            var     owner = EntityManager.GetEntity(uid);
            var     alreadySpawnedGroups = new List <string>();
            IEntity?entityToPlaceInHands = null;

            foreach (var storageItem in component.Items)
            {
                if (!string.IsNullOrEmpty(storageItem.GroupId) &&
                    alreadySpawnedGroups.Contains(storageItem.GroupId))
                {
                    continue;
                }

                if (storageItem.SpawnProbability != 1f &&
                    !_random.Prob(storageItem.SpawnProbability))
                {
                    continue;
                }

                for (var i = 0; i < storageItem.Amount; i++)
                {
                    entityToPlaceInHands = EntityManager.SpawnEntity(storageItem.PrototypeId, args.User.Transform.Coordinates);
                }

                if (!string.IsNullOrEmpty(storageItem.GroupId))
                {
                    alreadySpawnedGroups.Add(storageItem.GroupId);
                }
            }

            if (component.Sound != null)
            {
                SoundSystem.Play(Filter.Pvs(owner), component.Sound.GetSound());
            }

            component.Uses--;
            if (component.Uses == 0)
            {
                args.Handled = true;
                owner.Delete();
            }

            if (entityToPlaceInHands != null &&
                args.User.TryGetComponent <SharedHandsComponent>(out var hands))
            {
                hands.TryPutInAnyHand(entityToPlaceInHands);
            }
        }
コード例 #19
0
    private void OnUseInHand(EntityUid uid, FireExtinguisherComponent component, UseInHandEvent args)
    {
        if (args.Handled)
        {
            return;
        }

        ToggleSafety(uid, args.User, component);

        args.Handled = true;
    }
コード例 #20
0
    private void OnRevolverUse(EntityUid uid, RevolverBarrelComponent component, UseInHandEvent args)
    {
        if (args.Handled)
        {
            return;
        }

        EjectAllSlots(component);
        component.Dirty(EntityManager);
        UpdateRevolverAppearance(component);
        args.Handled = true;
    }
コード例 #21
0
        public void OnUseInHand(EntityUid uid, FlashComponent comp, UseInHandEvent args)
        {
            if (!UseFlash(comp, args.User))
            {
                return;
            }

            foreach (var entity in IoCManager.Resolve <IEntityLookup>().GetEntitiesInRange(comp.Owner.Transform.Coordinates, comp.Range))
            {
                FlashEntity(entity, args.User, comp.AoeFlashDuration, comp.SlowTo);
            }
        }
コード例 #22
0
        private void OnFlashUseInHand(EntityUid uid, FlashComponent comp, UseInHandEvent args)
        {
            if (!UseFlash(comp, args.User))
            {
                return;
            }

            foreach (var entity in _entityLookup.GetEntitiesInRange(EntityManager.GetComponent <TransformComponent>(comp.Owner).Coordinates, comp.Range))
            {
                Flash(entity, args.User, uid, comp.AoeFlashDuration, comp.SlowTo);
            }
        }
コード例 #23
0
        private void OnUseInHand(EntityUid uid, SpawnItemsOnUseComponent component, UseInHandEvent args)
        {
            if (args.Handled)
            {
                return;
            }

            var       alreadySpawnedGroups = new List <string>();
            EntityUid?entityToPlaceInHands = null;

            foreach (var storageItem in component.Items)
            {
                if (!string.IsNullOrEmpty(storageItem.GroupId) &&
                    alreadySpawnedGroups.Contains(storageItem.GroupId))
                {
                    continue;
                }

                if (storageItem.SpawnProbability != 1f &&
                    !_random.Prob(storageItem.SpawnProbability))
                {
                    continue;
                }

                for (var i = 0; i < storageItem.Amount; i++)
                {
                    entityToPlaceInHands = EntityManager.SpawnEntity(storageItem.PrototypeId, EntityManager.GetComponent <TransformComponent>(args.User).Coordinates);
                }

                if (!string.IsNullOrEmpty(storageItem.GroupId))
                {
                    alreadySpawnedGroups.Add(storageItem.GroupId);
                }
            }

            if (component.Sound != null)
            {
                SoundSystem.Play(Filter.Pvs(uid), component.Sound.GetSound(), uid);
            }

            component.Uses--;
            if (component.Uses == 0)
            {
                args.Handled = true;
                EntityManager.DeleteEntity(uid);
            }

            if (entityToPlaceInHands != null)
            {
                _handsSystem.PickupOrDrop(args.User, entityToPlaceInHands.Value);
            }
        }
コード例 #24
0
    private void OnClugUse(EntityUid uid, ClusterGrenadeComponent component, UseInHandEvent args)
    {
        if (component.CountDown || (component.GrenadesContainer.ContainedEntities.Count + component.UnspawnedCount) <= 0)
        {
            return;
        }

        // TODO: Should be an Update loop
        uid.SpawnTimer((int)(component.Delay * 1000), () =>
        {
            if (Deleted(component.Owner))
            {
                return;
            }

            component.CountDown  = true;
            var delay            = 20;
            var grenadesInserted = component.GrenadesContainer.ContainedEntities.Count + component.UnspawnedCount;
            var thrownCount      = 0;
            var segmentAngle     = 360 / grenadesInserted;
            while (TryGetGrenade(component, out var grenade))
            {
                var angleMin = segmentAngle * thrownCount;
                var angleMax = segmentAngle * (thrownCount + 1);
                var angle    = Angle.FromDegrees(_random.Next(angleMin, angleMax));
                // var distance = random.NextFloat() * _throwDistance;

                delay += _random.Next(550, 900);
                thrownCount++;

                // TODO: Suss out throw strength
                grenade.TryThrow(angle.ToVec().Normalized *component.ThrowDistance);

                grenade.SpawnTimer(delay, () =>
                {
                    if ((!EntityManager.EntityExists(grenade) ? EntityLifeStage.Deleted : MetaData(grenade).EntityLifeStage) >= EntityLifeStage.Deleted)
                    {
                        return;
                    }

                    _trigger.Trigger(grenade, args.User);
                });
            }

            EntityManager.DeleteEntity(uid);
        });

        args.Handled = true;
    }
コード例 #25
0
 private void OnUseInHand(EntityUid uid, StunbatonComponent comp, UseInHandEvent args)
 {
     if (!ActionBlockerSystem.CanUse(args.User))
     {
         return;
     }
     if (comp.Activated)
     {
         TurnOff(comp);
     }
     else
     {
         TurnOn(comp, args.User);
     }
 }
コード例 #26
0
 private void OnUseInHand(EntityUid uid, WieldableComponent component, UseInHandEvent args)
 {
     if (args.Handled)
     {
         return;
     }
     if (!component.Wielded)
     {
         AttemptWield(uid, component, args.User);
     }
     else
     {
         AttemptUnwield(uid, component, args.User);
     }
 }
コード例 #27
0
        private void OnUse(EntityUid uid, HolosignProjectorComponent component, UseInHandEvent args)
        {
            if (args.Handled ||
                !_cellSystem.TryGetBatteryFromSlot(uid, out var battery) ||
                !battery.TryUseCharge(component.ChargeUse))
            {
                return;
            }

            // TODO: Too tired to deal
            var holo = EntityManager.SpawnEntity(component.SignProto, Transform(args.User).Coordinates.SnapToGrid(EntityManager));

            Transform(holo).Anchored = true;

            args.Handled = true;
        }
コード例 #28
0
        private void OnUseInHand(EntityUid uid, EnergySwordComponent comp, UseInHandEvent args)
        {
            if (args.Handled)
            {
                return;
            }

            args.Handled = true;

            if (comp.Activated)
            {
                TurnOff(comp);
            }
            else
            {
                TurnOn(comp);
            }
        }
コード例 #29
0
    private void OnBoltUse(EntityUid uid, BoltActionBarrelComponent component, UseInHandEvent args)
    {
        if (args.Handled)
        {
            return;
        }

        args.Handled = true;

        if (component.BoltOpen)
        {
            component.BoltOpen = false;
            _popup.PopupEntity(Loc.GetString("bolt-action-barrel-component-bolt-closed"), uid, Filter.Entities(args.User));
            return;
        }

        CycleBolt(component, true);
    }
コード例 #30
0
        private void OnUse(EntityUid uid, DrinkComponent component, UseInHandEvent args)
        {
            if (args.Handled)
            {
                return;
            }

            if (!component.Opened)
            {
                //Do the opening stuff like playing the sounds.
                SoundSystem.Play(Filter.Pvs(args.User), component.OpenSounds.GetSound(), args.User, AudioParams.Default);

                SetOpen(uid, true, component);
                return;
            }

            args.Handled = TryDrink(args.User, args.User, component);
        }