mirror of
https://github.com/space-syndicate/space-station-14.git
synced 2026-10-10 10:51:14 +03:00
* the great mindshield rework
* it just works :D
* glory to nyanotransen, I said with my very obviously fake mindshield.
* work on things to remove manual mindshield queries
* very wip impl
* yeah there we go apc destroyed mission accomplished
* some comments
* textures!
* i will stab the person who decided to spell it differently.
* rename things since i am crazy (i was also crazy once)
* minor spelling mistake :(
* Revert "minor spelling mistake :("
This reverts commit ece1f1c3509063d1c43b7f136509ed4df2cd62e7.
* Revert "rename things since i am crazy (i was also crazy once)"
This reverts commit e75411d4bb84e819ca525b9fa0fe1792b6ace0b6.
* Revert "i will stab the person who decided to spell it differently."
This reverts commit 696ffdc062094cc9e4cf382f1e39b4ae4e3d781d.
* fixed things + better texs
* aaaa
* INSANITY RAHHHHH
* e
* changing things a bit.
* testifying things actually no insanity
* cleaning
* only doing this cuz of heseintests failing
* cleanup
* Update Content.Server/Revolutionary/RevolutionarySystem.cs
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* Apply suggestions from code review
fucking suggestions WHY IS THE BUTTON THERE EVEN WHEN ITS DISABLED!!!!
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* half of things for scarky0
* event merging stub / beginning
* big rewrite
* there ya go scar
* e
* NETWORK YOU PRICK
* Update Content.Shared/Mindshield/SharedMindShieldSystem.cs
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* Update Content.Shared/Mindshield/SharedMindShieldSystem.cs
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* Update Content.Server/Revolutionary/RevolutionarySystem.cs
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* Update Content.Shared/Mindshield/FakeMindshieldSystem.cs
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* e
* RAHHHH
* cleaning
* Update changeling.yml
* Update meta.json
* slarti 1/3
* slarti things 2
* le real fix
* commit & push
* Update Content.Client/Overlays/ShowMindShieldIconsSystem.cs
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* Update Content.Server/Implants/MindshieldImplantSystem.cs
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* Update Content.Shared/Mindshield/SharedMindShieldSystem.cs
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* Update Content.Shared/Mindshield/FakeMindshieldSystem.cs
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* Update Content.Shared/Mindshield/Components/MindShieldStatusComponent.cs
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* scarky0
* dirty
* fml
* robust thyself now
* minor fix
* stub
* Revert "stub"
This reverts commit c1204b88d3ae1bbdca2deeb075a9dd0d6c529326.
* s
* jrwebiwerhweir
* shrimple fix
* Apply suggestions from code review
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
* yeeeuuuwhqeheueuuu
* rweifohgeterwt
* cleaning, compiling
* container bs and icons
* werewrewr
* fix
* crisis averted
* howd i forget this
* leave me ALONE
---------
Co-authored-by: nomdéraisonnablementlong <you@example.com>
Co-authored-by: ScarKy0 <106310278+ScarKy0@users.noreply.github.com>
Co-authored-by: ScarKy0 <scarky0@onet.eu>
Co-authored-by: Pok245 <113675512+Pok27@users.noreply.github.com>
84 lines
3.2 KiB
C#
84 lines
3.2 KiB
C#
using Content.Shared.Chat;
|
|
using Content.Shared.IdentityManagement.Components;
|
|
using Content.Shared.Implants.Components;
|
|
using Content.Shared.Interaction.Events;
|
|
using Content.Shared.Mindshield;
|
|
using Content.Shared.Mobs;
|
|
using Content.Shared.Store;
|
|
using Content.Shared.VoiceMask;
|
|
|
|
namespace Content.Shared.Implants;
|
|
|
|
public abstract partial class SharedSubdermalImplantSystem
|
|
{
|
|
public void InitializeRelay()
|
|
{
|
|
SubscribeLocalEvent<ImplantedComponent, MobStateChangedEvent>(RelayToImplantEvent);
|
|
SubscribeLocalEvent<ImplantedComponent, SuicideEvent>(RelayToImplantEvent);
|
|
SubscribeLocalEvent<ImplantedComponent, TransformSpeakerNameEvent>(RelayToImplantEvent);
|
|
SubscribeLocalEvent<ImplantedComponent, TransformSpeechEvent>(RelayToImplantEvent);
|
|
SubscribeLocalEvent<ImplantedComponent, SeeIdentityAttemptEvent>(RelayToImplantEvent);
|
|
SubscribeLocalEvent<ImplantedComponent, VoiceMaskToggledEvent>(RelayToImplantEvent);
|
|
SubscribeLocalEvent<ImplantedComponent, FakeMindShieldToggleEvent>(RelayToImplantEvent);
|
|
|
|
// Ref relays, for when you need to write to the event!
|
|
SubscribeLocalEvent<ImplantedComponent, CurrencyInsertAttemptEvent>(RefRelayToImplantEvent);
|
|
SubscribeLocalEvent<ImplantedComponent, GetStoreEvent>(RefRelayToImplantEvent);
|
|
SubscribeLocalEvent<ImplantedComponent, GetMindShieldStatusEvent>(RefRelayToImplantEvent, after: [typeof(MindShieldSystem)]);
|
|
SubscribeLocalEvent<ImplantedComponent, ChameleonControllerOutfitSelectedEvent>(RefRelayToImplantEvent);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Relays events from the implanted to the implant.
|
|
/// </summary>
|
|
private void RelayToImplantEvent<T>(EntityUid uid, ImplantedComponent component, T args) where T : notnull
|
|
{
|
|
if (!_container.TryGetContainer(uid, ImplanterComponent.ImplantSlotId, out var implantContainer))
|
|
return;
|
|
|
|
var relayEv = new ImplantRelayEvent<T>(args, uid);
|
|
foreach (var implant in implantContainer.ContainedEntities)
|
|
{
|
|
if (args is HandledEntityEventArgs { Handled: true })
|
|
return;
|
|
|
|
RaiseLocalEvent(implant, relayEv);
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Relays events from the implanted to the implant.
|
|
/// </summary>
|
|
private void RefRelayToImplantEvent<T>(Entity<ImplantedComponent> entity, ref T args) where T : notnull
|
|
{
|
|
if (!_container.TryGetContainer(entity, ImplanterComponent.ImplantSlotId, out var implantContainer))
|
|
return;
|
|
|
|
var relayEv = new ImplantRelayEvent<T>(args, entity);
|
|
foreach (var implant in implantContainer.ContainedEntities)
|
|
{
|
|
if (args is HandledEntityEventArgs { Handled: true })
|
|
return;
|
|
|
|
RaiseLocalEvent(implant, relayEv);
|
|
}
|
|
|
|
args = relayEv.Args;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Wrapper for relaying events from an implanted entity to their implants.
|
|
/// </summary>
|
|
public sealed class ImplantRelayEvent<T> where T : notnull
|
|
{
|
|
public T Args;
|
|
|
|
public readonly EntityUid ImplantedEntity;
|
|
|
|
public ImplantRelayEvent(T ev, EntityUid implantedEntity)
|
|
{
|
|
Args = ev;
|
|
ImplantedEntity = implantedEntity;
|
|
}
|
|
}
|