[BUGFIX] Fixed revenant malfunction ability not working properly only MediBots and Stasis bed (#38664)
* fixed * clean up * orks fix smart * review fix 1 * more requested changes * less cursed * more descriptive description * better wording
This commit is contained in:
@@ -35,6 +35,7 @@ namespace Content.Server.Revenant.EntitySystems;
|
|||||||
|
|
||||||
public sealed partial class RevenantSystem
|
public sealed partial class RevenantSystem
|
||||||
{
|
{
|
||||||
|
[Dependency] private readonly EmagSystem _emagSystem = default!;
|
||||||
[Dependency] private readonly ThrowingSystem _throwing = default!;
|
[Dependency] private readonly ThrowingSystem _throwing = default!;
|
||||||
[Dependency] private readonly EntityStorageSystem _entityStorage = default!;
|
[Dependency] private readonly EntityStorageSystem _entityStorage = default!;
|
||||||
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
[Dependency] private readonly SharedAppearanceSystem _appearance = default!;
|
||||||
@@ -345,8 +346,7 @@ public sealed partial class RevenantSystem
|
|||||||
_whitelistSystem.IsBlacklistPass(component.MalfunctionBlacklist, ent))
|
_whitelistSystem.IsBlacklistPass(component.MalfunctionBlacklist, ent))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
var ev = new GotEmaggedEvent(uid, EmagType.Interaction | EmagType.Access);
|
_emagSystem.TryEmagEffect(uid, uid, ent);
|
||||||
RaiseLocalEvent(ent, ref ev);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,9 +51,9 @@ public sealed class EmagSystem : EntitySystem
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Does the emag effect on a specified entity
|
/// Does the emag effect on a specified entity with a specified EmagType. The optional field customEmagType can be used to override the emag type defined in the component.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool TryEmagEffect(Entity<EmagComponent?> ent, EntityUid user, EntityUid target)
|
public bool TryEmagEffect(Entity<EmagComponent?> ent, EntityUid user, EntityUid target, EmagType? customEmagType = null)
|
||||||
{
|
{
|
||||||
if (!Resolve(ent, ref ent.Comp, false))
|
if (!Resolve(ent, ref ent.Comp, false))
|
||||||
return false;
|
return false;
|
||||||
@@ -68,7 +68,9 @@ public sealed class EmagSystem : EntitySystem
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
var emaggedEvent = new GotEmaggedEvent(user, ent.Comp.EmagType);
|
var typeToUse = customEmagType ?? ent.Comp.EmagType;
|
||||||
|
|
||||||
|
var emaggedEvent = new GotEmaggedEvent(user, typeToUse);
|
||||||
RaiseLocalEvent(target, ref emaggedEvent);
|
RaiseLocalEvent(target, ref emaggedEvent);
|
||||||
|
|
||||||
if (!emaggedEvent.Handled)
|
if (!emaggedEvent.Handled)
|
||||||
@@ -78,7 +80,7 @@ public sealed class EmagSystem : EntitySystem
|
|||||||
|
|
||||||
_audio.PlayPredicted(ent.Comp.EmagSound, ent, ent);
|
_audio.PlayPredicted(ent.Comp.EmagSound, ent, ent);
|
||||||
|
|
||||||
_adminLogger.Add(LogType.Emag, LogImpact.High, $"{ToPrettyString(user):player} emagged {ToPrettyString(target):target} with flag(s): {ent.Comp.EmagType}");
|
_adminLogger.Add(LogType.Emag, LogImpact.High, $"{ToPrettyString(user):player} emagged {ToPrettyString(target):target} with flag(s): {typeToUse}");
|
||||||
|
|
||||||
if (emaggedEvent.Handled)
|
if (emaggedEvent.Handled)
|
||||||
_sharedCharges.TryUseCharge(chargesEnt);
|
_sharedCharges.TryUseCharge(chargesEnt);
|
||||||
@@ -87,7 +89,7 @@ public sealed class EmagSystem : EntitySystem
|
|||||||
{
|
{
|
||||||
EnsureComp<EmaggedComponent>(target, out var emaggedComp);
|
EnsureComp<EmaggedComponent>(target, out var emaggedComp);
|
||||||
|
|
||||||
emaggedComp.EmagType |= ent.Comp.EmagType;
|
emaggedComp.EmagType |= typeToUse;
|
||||||
Dirty(target, emaggedComp);
|
Dirty(target, emaggedComp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -129,9 +131,10 @@ public sealed class EmagSystem : EntitySystem
|
|||||||
|
|
||||||
[Flags]
|
[Flags]
|
||||||
[Serializable, NetSerializable]
|
[Serializable, NetSerializable]
|
||||||
public enum EmagType : byte
|
public enum EmagType
|
||||||
{
|
{
|
||||||
None = 0,
|
None = 0,
|
||||||
|
All = ~None,
|
||||||
Interaction = 1 << 1,
|
Interaction = 1 << 1,
|
||||||
Access = 1 << 2
|
Access = 1 << 2
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,8 @@
|
|||||||
name: revenant
|
name: revenant
|
||||||
description: A spooky ghostie.
|
description: A spooky ghostie.
|
||||||
components:
|
components:
|
||||||
|
- type: Emag
|
||||||
|
emagType: All
|
||||||
- type: Input
|
- type: Input
|
||||||
context: "ghost"
|
context: "ghost"
|
||||||
- type: Spectral
|
- type: Spectral
|
||||||
|
|||||||
Reference in New Issue
Block a user