private void OnSuicide(EntityUid uid, RecyclerComponent component, SuicideEvent args)
        {
            if (args.Handled)
            {
                return;
            }
            args.SetHandled(SuicideKind.Bloodloss);
            var victim = args.Victim;

            if (TryComp(victim, out ActorComponent? actor) &&
                actor.PlayerSession.ContentData()?.Mind is { } mind)
            {
                _ticker.OnGhostAttempt(mind, false);
                if (mind.OwnedEntity is { Valid : true } entity)
                {
                    _popup.PopupEntity(Loc.GetString("recycler-component-suicide-message"), entity, Filter.Pvs(entity, entityManager : EntityManager));
                }
            }

            _popup.PopupEntity(Loc.GetString("recycler-component-suicide-message-others", ("victim", Identity.Entity(victim, EntityManager))),
                               victim,
                               Filter.Pvs(victim, entityManager: EntityManager).RemoveWhereAttachedEntity(e => e == victim));

            if (TryComp <SharedBodyComponent?>(victim, out var body))
            {
                body.Gib(true);
            }

            Bloodstain(component);
        }
Exemple #2
0
    private void OnSuicide(EntityUid uid, CrematoriumComponent component, SuicideEvent args)
    {
        if (args.Handled)
        {
            return;
        }
        args.SetHandled(SuicideKind.Heat);

        var victim = args.Victim;

        if (TryComp(victim, out ActorComponent? actor) && actor.PlayerSession.ContentData()?.Mind is { } mind)
        {
            _ticker.OnGhostAttempt(mind, false);

            if (mind.OwnedEntity is { Valid : true } entity)
            {
                _popup.PopupEntity(Loc.GetString("crematorium-entity-storage-component-suicide-message"), entity, Filter.Pvs(entity));
            }
        }

        _popup.PopupEntity(Loc.GetString("crematorium-entity-storage-component-suicide-message-others",
                                         ("victim", Identity.Entity(victim, EntityManager))),
                           victim, Filter.PvsExcept(victim), PopupType.LargeCaution);

        if (_entityStorage.CanInsert(uid))
        {
            _entityStorage.CloseStorage(uid);
            _standing.Down(victim, false);
            _entityStorage.Insert(victim, uid);
        }
        else
        {
            EntityManager.DeleteEntity(victim);
        }
        _entityStorage.CloseStorage(uid);
        Cremate(uid, component);
    }
        private void OnSuicide(EntityUid uid, CrematoriumEntityStorageComponent component, SuicideEvent args)
        {
            if (args.Handled)
            {
                return;
            }
            args.SetHandled(SuicideKind.Heat);
            var victim = args.Victim;

            if (TryComp(victim, out ActorComponent? actor) && actor.PlayerSession.ContentData()?.Mind is { } mind)
            {
                _ticker.OnGhostAttempt(mind, false);

                if (mind.OwnedEntity is { Valid : true } entity)
                {
                    _popup.PopupEntity(Loc.GetString("crematorium-entity-storage-component-suicide-message"), entity, Filter.Pvs(entity, entityManager : EntityManager));
                }
            }

            _popup.PopupEntity(
                Loc.GetString("crematorium-entity-storage-component-suicide-message-others", ("victim", victim)),
                victim,
                Filter.Pvs(victim, entityManager: EntityManager).RemoveWhereAttachedEntity(e => e == victim));

            if (component.CanInsert(victim))
            {
                component.Insert(victim);
                _stando.Down(victim, false);
            }
            else
            {
                EntityManager.DeleteEntity(victim);
            }

            component.Cremate();
        }