private void AddCremateVerb(EntityUid uid, CrematoriumEntityStorageComponent component, GetAlternativeVerbsEvent args)
        {
            if (!args.CanAccess || !args.CanInteract || component.Cooking || component.Open)
            {
                return;
            }

            Verb verb = new();

            verb.Text = Loc.GetString("cremate-verb-get-data-text");
            // TODO VERB ICON add flame/burn symbol?
            verb.Act = () => component.TryCremate();
            args.Verbs.Add(verb);
        }
Ejemplo n.º 2
0
        private void AddCremateVerb(EntityUid uid, CrematoriumEntityStorageComponent component, GetVerbsEvent <AlternativeVerb> args)
        {
            if (!args.CanAccess || !args.CanInteract || component.Cooking || component.Open)
            {
                return;
            }

            AlternativeVerb verb = new();

            verb.Text = Loc.GetString("cremate-verb-get-data-text");
            // TODO VERB ICON add flame/burn symbol?
            verb.Act    = () => component.TryCremate();
            verb.Impact = LogImpact.Medium; // could be a body? or evidence? I dunno.
            args.Verbs.Add(verb);
        }
Ejemplo n.º 3
0
        private void OnCrematoriumExamined(EntityUid uid, CrematoriumEntityStorageComponent component, ExaminedEvent args)
        {
            if (!TryComp <AppearanceComponent>(uid, out var appearance))
            {
                return;
            }

            if (args.IsInDetailsRange)
            {
                if (appearance.TryGetData(CrematoriumVisuals.Burning, out bool isBurning) && isBurning)
                {
                    args.PushMarkup(Loc.GetString("crematorium-entity-storage-component-on-examine-details-is-burning", ("owner", uid)));
                }

                if (appearance.TryGetData(MorgueVisuals.HasContents, out bool hasContents) && hasContents)
                {
                    args.PushMarkup(Loc.GetString("crematorium-entity-storage-component-on-examine-details-has-contents"));
                }
                else
                {
                    args.PushMarkup(Loc.GetString("crematorium-entity-storage-component-on-examine-details-empty"));
                }
            }
        }
Ejemplo n.º 4
0
        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();
        }