Mobstate Refactor (#13389)
Refactors mobstate and moves mob health thresholds to their own component Co-authored-by: DrSmugleaf <drsmugleaf@gmail.com>
This commit is contained in:
@@ -8,6 +8,9 @@ using Content.Shared.Inventory.Events;
|
||||
using Content.Shared.Item;
|
||||
using Content.Shared.Bed.Sleep;
|
||||
using Content.Shared.Database;
|
||||
using Content.Shared.Mobs;
|
||||
using Content.Shared.Mobs.Components;
|
||||
using Content.Shared.Mobs.Systems;
|
||||
using Content.Shared.Movement.Events;
|
||||
using Content.Shared.Movement.Systems;
|
||||
using Content.Shared.Standing;
|
||||
@@ -28,6 +31,7 @@ namespace Content.Shared.Stunnable
|
||||
[Dependency] private readonly StatusEffectsSystem _statusEffectSystem = default!;
|
||||
[Dependency] private readonly MovementSpeedModifierSystem _movementSpeedModifierSystem = default!;
|
||||
[Dependency] private readonly SharedAudioSystem _audio = default!;
|
||||
[Dependency] private readonly MobStateSystem _mobStateSystem = default!;
|
||||
[Dependency] private readonly ISharedAdminLogManager _adminLogger = default!;
|
||||
|
||||
/// <summary>
|
||||
@@ -71,6 +75,38 @@ namespace Content.Shared.Stunnable
|
||||
SubscribeLocalEvent<StunnedComponent, PickupAttemptEvent>(OnAttempt);
|
||||
SubscribeLocalEvent<StunnedComponent, IsEquippingAttemptEvent>(OnEquipAttempt);
|
||||
SubscribeLocalEvent<StunnedComponent, IsUnequippingAttemptEvent>(OnUnequipAttempt);
|
||||
SubscribeLocalEvent<MobStateComponent, MobStateChangedEvent>(OnMobStateChanged);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void OnMobStateChanged(EntityUid uid, MobStateComponent component, MobStateChangedEvent args)
|
||||
{
|
||||
if (!TryComp<StatusEffectsComponent>(uid, out var status))
|
||||
{
|
||||
return;
|
||||
}
|
||||
switch (args.NewMobState)
|
||||
{
|
||||
case MobState.Alive:
|
||||
{
|
||||
break;
|
||||
}
|
||||
case MobState.Critical:
|
||||
{
|
||||
_statusEffectSystem.TryRemoveStatusEffect(uid, "Stun");
|
||||
break;
|
||||
}
|
||||
case MobState.Dead:
|
||||
{
|
||||
_statusEffectSystem.TryRemoveStatusEffect(uid, "Stun");
|
||||
break;
|
||||
}
|
||||
case MobState.Invalid:
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void UpdateCanMove(EntityUid uid, StunnedComponent component, EntityEventArgs args)
|
||||
|
||||
Reference in New Issue
Block a user