Exemplo n.º 1
0
        public SuicideKind Suicide(EntityUid uid, EntityUid victimUid, ToiletComponent?component = null,
                                   MetaDataComponent?meta = null, MetaDataComponent?victimMeta = null)
        {
            // check that victim even have head
            if (EntityManager.TryGetComponent <SharedBodyComponent>(victimUid, out var body) &&
                body.HasPartOfType(BodyPartType.Head))
            {
                var othersMessage = Loc.GetString("toilet-component-suicide-head-message-others",
                                                  ("victim", victimUid), ("owner", uid));
                _popupSystem.PopupEntity(othersMessage, uid, Filter.Pvs(victimUid).RemoveWhereAttachedEntity(puid => puid == victimUid));

                var selfMessage = Loc.GetString("toilet-component-suicide-head-message",
                                                ("owner", uid));
                _popupSystem.PopupEntity(selfMessage, uid, Filter.Entities(victimUid));

                return(SuicideKind.Asphyxiation);
            }
            else
            {
                var othersMessage = Loc.GetString("toilet-component-suicide-message-others",
                                                  ("victim", victimUid), ("owner", uid));
                _popupSystem.PopupEntity(othersMessage, uid, Filter.Pvs(uid).RemoveWhereAttachedEntity(puid => puid == victimUid));

                var selfMessage = Loc.GetString("toilet-component-suicide-message",
                                                ("owner", uid));
                _popupSystem.PopupEntity(selfMessage, uid, Filter.Entities(victimUid));

                return(SuicideKind.Blunt);
            }
        }
Exemplo n.º 2
0
    protected EntityPrototype?Prototype(EntityUid uid, MetaDataComponent?metaData = null)
    {
        if (!Resolve(uid, ref metaData, false))
        {
            throw CompNotFound <MetaDataComponent>(uid);
        }

        return(metaData.EntityPrototype);
    }
Exemplo n.º 3
0
    public bool Paused(EntityUid uid, MetaDataComponent?metaData = null)
    {
        if (!Resolve(uid, ref metaData, false))
        {
            throw CompNotFound <MetaDataComponent>(uid);
        }

        return(metaData.EntityPaused);
    }
Exemplo n.º 4
0
    /// <summary>
    ///     Retrieves the last <see cref="GameTick"/> the entity was modified at.
    /// </summary>
    /// <exception cref="KeyNotFoundException">Thrown when the entity doesn't exist.</exception>
    public GameTick LastModifiedTick(EntityUid uid, MetaDataComponent?metaData = null)
    {
        if (!Resolve(uid, ref metaData, false))
        {
            throw CompNotFound <MetaDataComponent>(uid);
        }

        return(metaData.EntityLastModifiedTick);
    }
Exemplo n.º 5
0
    protected string Name(EntityUid uid, MetaDataComponent?metaData = null)
    {
        if (!Resolve(uid, ref metaData, false))
        {
            throw CompNotFound <MetaDataComponent>(uid);
        }

        return(metaData.EntityName);
    }
Exemplo n.º 6
0
    public bool Deleted(EntityUid uid, MetaDataComponent?metaData = null)
    {
        if (!Resolve(uid, ref metaData, false))
        {
            return(true);
        }

        return(metaData.EntityDeleted);
    }
Exemplo n.º 7
0
    public string Description(EntityUid uid, MetaDataComponent?metaData = null)
    {
        if (!Resolve(uid, ref metaData, false))
        {
            throw CompNotFound <MetaDataComponent>(uid);
        }

        return(metaData.EntityName);
    }
Exemplo n.º 8
0
    public EntityLifeStage LifeStage(EntityUid uid, MetaDataComponent?metaData = null)
    {
        if (!Resolve(uid, ref metaData, false))
        {
            throw CompNotFound <MetaDataComponent>(uid);
        }

        return(metaData.EntityLifeStage);
    }
Exemplo n.º 9
0
    public void AddFlag(EntityUid uid, MetaDataFlags flags, MetaDataComponent?component = null)
    {
        if (!Resolve(uid, ref component))
        {
            return;
        }

        component.Flags |= flags;
    }
Exemplo n.º 10
0
    public void SetPaused(EntityUid uid, bool paused, MetaDataComponent?metaData = null)
    {
        if (!Resolve(uid, ref metaData, false))
        {
            throw CompNotFound <MetaDataComponent>(uid);
        }

        metaData.EntityPaused = paused;
    }
Exemplo n.º 11
0
    public bool TrySetPaused(EntityUid uid, bool paused, MetaDataComponent?metaData = null)
    {
        if (!Resolve(uid, ref metaData, false))
        {
            return(false);
        }

        metaData.EntityPaused = paused;
        return(true);
    }
Exemplo n.º 12
0
    public bool TryPaused(EntityUid uid, [NotNullWhen(true)] out bool?paused, MetaDataComponent?metaData = null)
    {
        if (!Resolve(uid, ref metaData, false))
        {
            paused = null;
            return(false);
        }

        paused = metaData.EntityPaused;
        return(true);
    }
Exemplo n.º 13
0
    public bool TryName(EntityUid uid, [NotNullWhen(true)] out string?name, MetaDataComponent?metaData = null)
    {
        if (!Resolve(uid, ref metaData, false))
        {
            name = null;
            return(false);
        }

        name = metaData.EntityName;
        return(true);
    }
Exemplo n.º 14
0
        public void RefreshVisibility(EntityUid uid, MetaDataComponent?metaDataComponent = null, VisibilityComponent?visibilityComponent = null)
        {
            if (!Resolve(uid, ref metaDataComponent, false))
            {
                // This means it's deleting or some shit; I'd love to make it a GetComponent<T> in future.
                return;
            }

            var visMask = 1;

            metaDataComponent.VisibilityMask = GetVisibilityMask(uid, ref visMask, visibilityComponent);
        }
        /// <summary>
        ///     Tries to hide item inside secret stash from hands of user.
        /// </summary>
        /// <returns>True if item was hidden inside stash</returns>
        public bool TryHideItem(EntityUid uid, EntityUid userUid, EntityUid itemToHideUid,
                                SecretStashComponent?component = null, ItemComponent?item         = null,
                                MetaDataComponent?itemMeta     = null, SharedHandsComponent?hands = null)
        {
            if (!Resolve(uid, ref component))
            {
                return(false);
            }
            if (!Resolve(itemToHideUid, ref item, ref itemMeta))
            {
                return(false);
            }
            if (!Resolve(userUid, ref hands))
            {
                return(false);
            }

            // check if secret stash is already occupied
            var container = component.ItemContainer;

            if (container.ContainedEntity != null)
            {
                var msg = Loc.GetString("comp-secret-stash-action-hide-container-not-empty");
                _popupSystem.PopupEntity(msg, uid, Filter.Entities(userUid));
                return(false);
            }

            // check if item is too big to fit into secret stash
            var itemName = itemMeta.EntityName;

            if (item.Size > component.MaxItemSize)
            {
                var msg = Loc.GetString("comp-secret-stash-action-hide-item-too-big",
                                        ("item", itemName), ("stash", component.SecretPartName));
                _popupSystem.PopupEntity(msg, uid, Filter.Entities(userUid));
                return(false);
            }

            // try to move item from hands to stash container
            if (!_handsSystem.TryDropIntoContainer(userUid, itemToHideUid, container))
            {
                return(false);
            }

            // all done, show success message
            var successMsg = Loc.GetString("comp-secret-stash-action-hide-success",
                                           ("item", itemName), ("this", component.SecretPartName));

            _popupSystem.PopupEntity(successMsg, uid, Filter.Entities(userUid));
            return(true);
        }
Exemplo n.º 16
0
    /// <summary>
    /// Attempts to remove the specific flag from metadata.
    /// Other systems can choose not to allow the removal if it's still relevant.
    /// </summary>
    public void RemoveFlag(EntityUid uid, MetaDataFlags flags, MetaDataComponent?component = null)
    {
        if (!Resolve(uid, ref component) ||
            (component.Flags & flags) == 0x0)
        {
            return;
        }

        var ev = new MetaFlagRemoveAttemptEvent();

        EntityManager.EventBus.RaiseLocalEvent(component.Owner, ref ev);

        if (ev.Cancelled)
        {
            return;
        }

        component.Flags &= ~flags;
    }
Exemplo n.º 17
0
 protected bool Initializing(EntityUid uid, MetaDataComponent?metaData = null)
 {
     return(LifeStage(uid, metaData) == EntityLifeStage.Initializing);
 }
Exemplo n.º 18
0
    public bool TryInitialized(EntityUid uid, [NotNullWhen(true)] out bool?initialized, MetaDataComponent?metaData = null)
    {
        if (!TryLifeStage(uid, out var lifeStage, metaData))
        {
            initialized = null;
            return(false);
        }

        initialized = lifeStage >= EntityLifeStage.Initialized;
        return(true);
    }
Exemplo n.º 19
0
 public bool Terminating(EntityUid uid, MetaDataComponent?metaData = null)
 {
     return(LifeStage(uid, metaData) == EntityLifeStage.Terminating);
 }
Exemplo n.º 20
0
    /// <summary>
    /// Set the alert level based on the station's entity ID.
    /// </summary>
    /// <param name="station">Station entity UID.</param>
    /// <param name="level">Level to change the station's alert level to.</param>
    /// <param name="playSound">Play the alert level's sound.</param>
    /// <param name="announce">Say the alert level's announcement.</param>
    /// <param name="force">Force the alert change. This applies if the alert level is not selectable or not.</param>
    /// <param name="locked">Will it be possible to change level by crew.</param>
    public void SetLevel(EntityUid station, string level, bool playSound, bool announce, bool force = false,
                         bool locked = false, MetaDataComponent?dataComponent = null, AlertLevelComponent?component = null)
    {
        if (!Resolve(station, ref component, ref dataComponent) ||
            component.AlertLevels == null ||
            !component.AlertLevels.Levels.TryGetValue(level, out var detail) ||
            component.CurrentLevel == level)
        {
            return;
        }

        if (!force)
        {
            if (!detail.Selectable ||
                component.CurrentDelay > 0 ||
                component.IsLevelLocked)
            {
                return;
            }

            component.CurrentDelay = AlertLevelComponent.Delay;
            component.ActiveDelay  = true;
        }

        component.CurrentLevel  = level;
        component.IsLevelLocked = locked;

        var stationName = dataComponent.EntityName;

        var name = level.ToLower();

        if (Loc.TryGetString($"alert-level-{level}", out var locName))
        {
            name = locName.ToLower();
        }

        // Announcement text. Is passed into announcementFull.
        var announcement = detail.Announcement;

        if (Loc.TryGetString(detail.Announcement, out var locAnnouncement))
        {
            announcement = locAnnouncement;
        }

        // The full announcement to be spat out into chat.
        var announcementFull = Loc.GetString("alert-level-announcement", ("name", name), ("announcement", announcement));

        var playDefault = false;

        if (playSound)
        {
            if (detail.Sound != null)
            {
                SoundSystem.Play(detail.Sound.GetSound(), Filter.Broadcast());
            }
            else
            {
                playDefault = true;
            }
        }

        if (announce)
        {
            _chatSystem.DispatchStationAnnouncement(station, announcementFull, playDefaultSound: playDefault,
                                                    colorOverride: detail.Color, sender: stationName);
        }

        RaiseLocalEvent(new AlertLevelChangedEvent(station, level));
    }
Exemplo n.º 21
0
 public bool Initialized(EntityUid uid, MetaDataComponent?metaData = null)
 {
     return(LifeStage(uid, metaData) >= EntityLifeStage.Initialized);
 }
Exemplo n.º 22
0
    public bool TryTerminating(EntityUid uid, [NotNullWhen(true)] out bool?terminating, MetaDataComponent?metaData = null)
    {
        if (!TryLifeStage(uid, out var lifeStage, metaData))
        {
            terminating = null;
            return(false);
        }

        terminating = lifeStage == EntityLifeStage.Terminating;
        return(true);
    }
Exemplo n.º 23
0
    public bool TryLifeStage(EntityUid uid, [NotNullWhen(true)] out EntityLifeStage?lifeStage, MetaDataComponent?metaData = null)
    {
        if (!Resolve(uid, ref metaData))
        {
            lifeStage = null;
            return(false);
        }

        lifeStage = metaData.EntityLifeStage;
        return(true);
    }
Exemplo n.º 24
0
    public bool TryLastModifiedTick(EntityUid uid, [NotNullWhen(true)] out GameTick?lastModifiedTick, MetaDataComponent?metaData = null)
    {
        if (!Resolve(uid, ref metaData, false))
        {
            lastModifiedTick = null;
            return(false);
        }

        lastModifiedTick = metaData.EntityLastModifiedTick;
        return(true);
    }
Exemplo n.º 25
0
    public bool TryPrototype(EntityUid uid, [NotNullWhen(true)] out EntityPrototype?prototype, MetaDataComponent?metaData = null)
    {
        if (!Resolve(uid, ref metaData, false))
        {
            prototype = null;
            return(false);
        }

        prototype = metaData.EntityPrototype;
        return(prototype != null);
    }
Exemplo n.º 26
0
    public bool TryDescription(EntityUid uid, [NotNullWhen(true)] out string?description, MetaDataComponent?metaData = null)
    {
        if (!Resolve(uid, ref metaData, false))
        {
            description = null;
            return(false);
        }

        description = metaData.EntityDescription;
        return(true);
    }
Exemplo n.º 27
0
    protected bool TryInitializing(EntityUid uid, [NotNullWhen(true)] out bool?initializing, MetaDataComponent?metaData = null)
    {
        if (!TryLifeStage(uid, out var lifeStage, metaData))
        {
            initializing = null;
            return(false);
        }

        initializing = lifeStage == EntityLifeStage.Initializing;
        return(true);
    }