fish-station/Content.Server/_Sunrise/Boss/Systems/HellSpawnInvincibilitySystem.cs
pacable 8f2445ea94
Адское Отродье - Босс для утилей (#1525)
Signed-off-by: pacable <igor.mamaev1@gmail.com>
2025-03-10 02:33:48 +03:00

46 lines
1.6 KiB
C#

using Content.Shared._Sunrise.Boss.Components;
using Content.Shared._Sunrise.Boss.Systems;
using Content.Shared.Actions;
using Content.Shared.Damage;
using Robust.Shared.Timing;
namespace Content.Server._Sunrise.Boss.Systems;
public sealed class HellSpawnInvincibilitySystem : SharedHellSpawnInvincibilitySystem
{
[Dependency] private readonly SharedActionsSystem _actions = default!;
[Dependency] private readonly IGameTiming _timing = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<HellSpawnInvincibilityComponent, DamageChangedEvent>(OnDamageReceived);
SubscribeLocalEvent<HellSpawnInvincibilityComponent, MapInitEvent>(OnMapInit);
}
private void OnMapInit(Entity<HellSpawnInvincibilityComponent> ent, ref MapInitEvent args)
{
_actions.AddAction(ent.Owner, ref ent.Comp.InvincibilityActionEntity, ent.Comp.InvincibilityAction);
}
private void OnDamageReceived(Entity<HellSpawnInvincibilityComponent> ent, ref DamageChangedEvent args)
{
if (!args.DamageIncreased)
return;
if (ent.Comp.InvincibilityActionEntity == null)
return;
if (!TryComp<InstantActionComponent>(ent.Comp.InvincibilityActionEntity, out var action))
return;
if (!_actions.ValidAction(action))
return;
_actions.PerformAction(ent.Owner,
null,
ent.Comp.InvincibilityActionEntity.Value,
action,
action.BaseEvent,
_timing.CurTime,
false);
}
}