| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- using Content.Shared.ActionBlocker;
- using Content.Shared.Administration.Logs;
- using Content.Shared.Mobs.Components;
- using Content.Shared.Standing;
- using Robust.Shared.Physics.Systems;
- using Robust.Shared.Timing;
- namespace Content.Shared.Mobs.Systems;
- [Virtual]
- public partial class MobStateSystem : EntitySystem
- {
- [Dependency] private readonly ActionBlockerSystem _blocker = default!;
- [Dependency] private readonly SharedAppearanceSystem _appearance = default!;
- [Dependency] private readonly StandingStateSystem _standing = default!;
- [Dependency] private readonly ISharedAdminLogManager _adminLogger = default!;
- [Dependency] private readonly ILogManager _logManager = default!;
- [Dependency] private readonly IGameTiming _timing = default!;
- private ISawmill _sawmill = default!;
- private EntityQuery<MobStateComponent> _mobStateQuery;
- public override void Initialize()
- {
- _sawmill = _logManager.GetSawmill("MobState");
- _mobStateQuery = GetEntityQuery<MobStateComponent>();
- base.Initialize();
- SubscribeEvents();
- }
- #region Public API
- /// <summary>
- /// Check if a Mob is Alive
- /// </summary>
- /// <param name="target">Target Entity</param>
- /// <param name="component">The MobState component owned by the target</param>
- /// <returns>If the entity is alive</returns>
- public bool IsAlive(EntityUid target, MobStateComponent? component = null)
- {
- if (!_mobStateQuery.Resolve(target, ref component, false))
- return false;
- return component.CurrentState == MobState.Alive;
- }
- /// <summary>
- /// Check if a Mob is Critical
- /// </summary>
- /// <param name="target">Target Entity</param>
- /// <param name="component">The MobState component owned by the target</param>
- /// <returns>If the entity is Critical</returns>
- public bool IsCritical(EntityUid target, MobStateComponent? component = null)
- {
- if (!_mobStateQuery.Resolve(target, ref component, false))
- return false;
- return component.CurrentState == MobState.Critical;
- }
- /// <summary>
- /// Check if a Mob is Dead
- /// </summary>
- /// <param name="target">Target Entity</param>
- /// <param name="component">The MobState component owned by the target</param>
- /// <returns>If the entity is Dead</returns>
- public bool IsDead(EntityUid target, MobStateComponent? component = null)
- {
- if (!_mobStateQuery.Resolve(target, ref component, false))
- return false;
- return component.CurrentState == MobState.Dead;
- }
- /// <summary>
- /// Check if a Mob is Critical or Dead
- /// </summary>
- /// <param name="target">Target Entity</param>
- /// <param name="component">The MobState component owned by the target</param>
- /// <returns>If the entity is Critical or Dead</returns>
- public bool IsIncapacitated(EntityUid target, MobStateComponent? component = null)
- {
- if (!_mobStateQuery.Resolve(target, ref component, false))
- return false;
- return component.CurrentState is MobState.Critical or MobState.Dead;
- }
- /// <summary>
- /// Check if a Mob is in an Invalid state
- /// </summary>
- /// <param name="target">Target Entity</param>
- /// <param name="component">The MobState component owned by the target</param>
- /// <returns>If the entity is in an Invalid State</returns>
- public bool IsInvalidState(EntityUid target, MobStateComponent? component = null)
- {
- if (!_mobStateQuery.Resolve(target, ref component, false))
- return false;
- return component.CurrentState is MobState.Invalid;
- }
- #endregion
- }
|