using Content.Shared.Examine; using Content.Shared.IdentityManagement; using Content.Shared.Nutrition.Components; namespace Content.Shared.Nutrition.EntitySystems; /// public sealed partial class ExaminableHungerSystem : EntitySystem { [Dependency] private HungerSystem _hunger = default!; [Dependency] private EntityQuery _hungerQuery = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnExamine); } /// /// Defines the text provided on examine. /// Changes depending on the amount of hunger the target has. /// private void OnExamine(Entity entity, ref ExaminedEvent args) { var identity = Identity.Entity(entity, EntityManager); if (!_hungerQuery.TryComp(entity, out var hungerComp) || !entity.Comp.Descriptions.TryGetValue(_hunger.GetHungerThreshold(hungerComp), out var locId)) { // Use a fallback message if the entity has no HungerComponent // or is missing a description for the current threshold locId = entity.Comp.NoHungerDescription; } var msg = Loc.GetString(locId, ("entity", identity)); args.PushMarkup(msg); } }