private void OnStepTrigger(EntityUid uid, MousetrapComponent component, ref StepTriggeredEvent args)
    {
        component.IsActive = false;
        _triggerSystem.Trigger(uid);

        UpdateVisuals(uid);
    }
Пример #2
0
    private bool UpdateColliding(StepTriggerComponent component, TransformComponent ownerTransform, EntityUid otherUid, EntityQuery <PhysicsComponent> query)
    {
        if (!query.TryGetComponent(otherUid, out var otherPhysics))
        {
            return(true);
        }

        // TODO: This shouldn't be calculating based on world AABBs.
        var ourAabb   = _entityLookup.GetWorldAABB(component.Owner, ownerTransform);
        var otherAabb = _entityLookup.GetWorldAABB(otherUid);

        if (!ourAabb.Intersects(otherAabb))
        {
            return(true);
        }

        if (otherPhysics.LinearVelocity.Length < component.RequiredTriggerSpeed ||
            component.CurrentlySteppedOn.Contains(otherUid) ||
            otherAabb.IntersectPercentage(ourAabb) < component.IntersectRatio ||
            !CanTrigger(component.Owner, otherUid, component))
        {
            return(false);
        }

        var ev = new StepTriggeredEvent {
            Source = component.Owner, Tripper = otherUid
        };

        RaiseLocalEvent(component.Owner, ref ev, true);

        component.CurrentlySteppedOn.Add(otherUid);
        Dirty(component);
        return(false);
    }
 private void HandleTriggered(EntityUid uid, LandMineComponent component, ref StepTriggeredEvent args)
 {
     // This doesn't use TriggerOnStepTrigger since we don't want to display the popup if nothing happens
     // and I didn't feel like making an `AfterTrigger` event
     if (_trigger.Trigger(uid, args.Tripper))
     {
         _popupSystem.PopupCoordinates(
             Loc.GetString("land-mine-triggered", ("mine", uid)),
             Transform(uid).Coordinates,
             Filter.Entities(args.Tripper),
             PopupType.LargeCaution);
     }
 }
    private void HandleTriggered(EntityUid uid, LandMineComponent component, ref StepTriggeredEvent args)
    {
        if (_trigger.Trigger(uid, args.Tripper))
        {
            _popupSystem.PopupCoordinates(
                Loc.GetString("land-mine-triggered", ("mine", uid)),
                Transform(uid).Coordinates,
                Filter.Entities(args.Tripper));
        }

        if (component.DeleteOnActivate)
        {
            QueueDel(uid);
        }
    }
Пример #5
0
 private void OnStepTrigger(EntityUid uid, DamageOnTriggerComponent component, ref StepTriggeredEvent args)
 {
     OnDamageTrigger(uid, args.Tripper, component);
 }
Пример #6
0
 private void HandleStepTrigger(EntityUid uid, SlipperyComponent component, ref StepTriggeredEvent args)
 {
     TrySlip(component, args.Tripper);
 }
Пример #7
0
 private void OnStepTriggered(EntityUid uid, TriggerOnStepTriggerComponent component, ref StepTriggeredEvent args)
 {
     Trigger(uid, args.Tripper);
 }