/// <summary>
        /// uses hunger to release a specific amount of miasma into the air. This heals the rat king
        /// and his servants through a specific metabolism.
        /// </summary>
        private void OnDomain(EntityUid uid, RatKingComponent component, RatKingDomainActionEvent args)
        {
            if (args.Handled)
            {
                return;
            }

            if (!TryComp <HungerComponent>(uid, out var hunger))
            {
                return;
            }

            //make sure the hunger doesn't go into the negatives
            if (hunger.CurrentHunger < component.HungerPerDomainUse)
            {
                _popup.PopupEntity(Loc.GetString("rat-king-too-hungry"), uid, Filter.Entities(uid));
                return;
            }
            args.Handled          = true;
            hunger.CurrentHunger -= component.HungerPerDomainUse;

            _popup.PopupEntity(Loc.GetString("rat-king-domain-popup"), uid, Filter.Pvs(uid));

            var tileMix = _atmos.GetTileMixture(Transform(uid).Coordinates);

            if (tileMix != null)
            {
                tileMix.AdjustMoles(Gas.Miasma, component.MolesMiasmaPerDomain);
            }
        }
        /// <summary>
        /// uses hunger to release a specific amount of miasma into the air. This heals the rat king
        /// and his servants through a specific metabolism.
        /// </summary>
        private void OnDomain(EntityUid uid, RatKingComponent component, RatKingDomainActionEvent args)
        {
            if (args.Handled)
            {
                return;
            }

            if (!TryComp <HungerComponent>(uid, out var hunger))
            {
                return;
            }

            //make sure the hunger doesn't go into the negatives
            if (hunger.CurrentHunger < component.HungerPerDomainUse)
            {
                _popup.PopupEntity(Loc.GetString("rat-king-too-hungry"), uid, Filter.Entities(uid));
                return;
            }
            args.Handled          = true;
            hunger.CurrentHunger -= component.HungerPerDomainUse;

            _popup.PopupEntity(Loc.GetString("rat-king-domain-popup"), uid, Filter.Pvs(uid));

            var transform = Transform(uid);
            var indices   = _xform.GetGridOrMapTilePosition(uid, transform);
            var tileMix   = _atmos.GetTileMixture(transform.GridUid, transform.MapUid, indices, true);

            tileMix?.AdjustMoles(Gas.Miasma, component.MolesMiasmaPerDomain);
        }
        /// <summary>
        /// Summons an allied rat servant at the King, costing a small amount of hunger
        /// </summary>
        private void OnRaiseArmy(EntityUid uid, RatKingComponent component, RatKingRaiseArmyActionEvent args)
        {
            if (args.Handled)
            {
                return;
            }

            if (!TryComp <HungerComponent>(uid, out var hunger))
            {
                return;
            }

            //make sure the hunger doesn't go into the negatives
            if (hunger.CurrentHunger < component.HungerPerArmyUse)
            {
                _popup.PopupEntity(Loc.GetString("rat-king-too-hungry"), uid, Filter.Entities(uid));
                return;
            }
            args.Handled          = true;
            hunger.CurrentHunger -= component.HungerPerArmyUse;
            Spawn(component.ArmyMobSpawnId, Transform(uid).Coordinates); //spawn the little mouse boi
        }
 private void OnStartup(EntityUid uid, RatKingComponent component, ComponentStartup args)
 {
     _action.AddAction(uid, component.ActionRaiseArmy, null);
     _action.AddAction(uid, component.ActionDomain, null);
 }