-using Content.Server.Actions;
using Content.Server.Polymorph.Systems;
+using Content.Shared.Zombies;
+using Content.Server.Actions;
using Content.Server.Popups;
-using Content.Shared.Actions;
using Content.Shared.Geras;
using Robust.Shared.Player;
/// <inheritdoc/>
public sealed class GerasSystem : SharedGerasSystem
{
- [Dependency] private readonly ActionsSystem _actionsSystem = default!;
[Dependency] private readonly PolymorphSystem _polymorphSystem = default!;
+ [Dependency] private readonly MetaDataSystem _metaDataSystem = default!;
+ [Dependency] private readonly ActionsSystem _actionsSystem = default!;
[Dependency] private readonly PopupSystem _popupSystem = default!;
/// <inheritdoc/>
{
SubscribeLocalEvent<GerasComponent, MorphIntoGeras>(OnMorphIntoGeras);
SubscribeLocalEvent<GerasComponent, MapInitEvent>(OnMapInit);
+ SubscribeLocalEvent<GerasComponent, EntityZombifiedEvent>(OnZombification);
+ }
+
+ private void OnZombification(EntityUid uid, GerasComponent component, EntityZombifiedEvent args)
+ {
+ _actionsSystem.RemoveAction(uid, component.GerasActionEntity);
}
private void OnMapInit(EntityUid uid, GerasComponent component, MapInitEvent args)
private void OnMorphIntoGeras(EntityUid uid, GerasComponent component, MorphIntoGeras args)
{
+ if (HasComp<ZombieComponent>(uid))
+ return; // i hate zomber.
+
var ent = _polymorphSystem.PolymorphEntity(uid, component.GerasPolymorphId);
if (!ent.HasValue)
_popupSystem.PopupEntity(Loc.GetString("geras-popup-morph-message-others", ("entity", ent.Value)), ent.Value, Filter.PvsExcept(ent.Value), true);
_popupSystem.PopupEntity(Loc.GetString("geras-popup-morph-message-user"), ent.Value, ent.Value);
+
args.Handled = true;
}
}