1- using Content . Server . Backmen . Psionics ;
21using Content . Shared . Actions ;
32using Content . Shared . Backmen . Abilities . Psionics ;
4- using Content . Shared . Backmen . Psionics ;
5- using Content . Shared . Backmen . Psionics . Components ;
63using Content . Shared . Backmen . Psionics . Events ;
74using Content . Shared . Backmen . Species . Shadowkin . Components ;
85using Content . Shared . Eye ;
9- using Content . Shared . StatusEffect ;
6+ using Content . Shared . StatusEffectNew ;
107using Content . Shared . Popups ;
11- using Robust . Server . GameObjects ;
128using Robust . Shared . Prototypes ;
13- using Robust . Shared . Timing ;
149
1510namespace Content . Server . Backmen . Abilities . Psionics ;
1611
@@ -21,10 +16,9 @@ public sealed class MetapsionicPowerSystem : EntitySystem
2116 [ Dependency ] private readonly EntityLookupSystem _lookup = default ! ;
2217 [ Dependency ] private readonly SharedPopupSystem _popups = default ! ;
2318 [ Dependency ] private readonly SharedPsionicAbilitiesSystem _psionics = default ! ;
24- [ Dependency ] private readonly IGameTiming _gameTiming = default ! ;
2519 [ Dependency ] private readonly SharedEyeSystem _eye = default ! ;
26- [ Dependency ] private readonly PsionicInvisibilitySystem _invisibilitySystem = default ! ;
27- [ Dependency ] private readonly VisibilitySystem _visibility = default ! ;
20+
21+ private EntityQuery < PsionicInsulationComponent > _insulationQuery ;
2822
2923
3024 public override void Initialize ( )
@@ -34,47 +28,33 @@ public override void Initialize()
3428 SubscribeLocalEvent < MetapsionicPowerComponent , MetapsionicPowerActionEvent > ( OnPowerUsed ) ;
3529 SubscribeLocalEvent < MetapsionicVisibleComponent , ComponentStartup > ( OnAddCanSeeAll ) ;
3630 SubscribeLocalEvent < MetapsionicVisibleComponent , ComponentShutdown > ( OnRemoveCanSeeAll ) ;
31+ SubscribeLocalEvent < MetapsionicVisibleComponent , GetVisMaskEvent > ( OnGetVisMask ) ;
32+
33+ _insulationQuery = GetEntityQuery < PsionicInsulationComponent > ( ) ;
3734 }
3835
39- private void OnRemoveCanSeeAll ( Entity < MetapsionicVisibleComponent > ent , ref ComponentShutdown args )
36+ private void OnGetVisMask ( Entity < MetapsionicVisibleComponent > ent , ref GetVisMaskEvent args )
4037 {
41- if ( ! TryComp < EyeComponent > ( ent , out var eye ) )
38+ if ( ent . Comp . LifeStage > ComponentLifeStage . Running )
4239 return ;
4340
41+ args . VisibilityMask |= ( int ) VisibilityFlags . DarkSwapInvisibility ;
42+ args . VisibilityMask |= ( int ) VisibilityFlags . PsionicInvisibility ;
43+ }
44+
45+ private void OnRemoveCanSeeAll ( Entity < MetapsionicVisibleComponent > ent , ref ComponentShutdown args )
46+ {
4447 // Visibility mask will be recalculated automatically by GetVisMaskEvent handler
4548 _eye . RefreshVisibilityMask ( ent . Owner ) ;
46-
47- var vm = ( VisibilityFlags ) eye . VisibilityMask ;
48- if ( vm . HasFlag ( VisibilityFlags . DarkSwapInvisibility ) && ! HasComp < ShadowkinDarkSwappedComponent > ( ent ) )
49- {
50- _eye . SetVisibilityMask ( ent , eye . VisibilityMask & ~ ( int ) VisibilityFlags . DarkSwapInvisibility , eye ) ;
51-
52- var eyeEnt = ( ent . Owner , EnsureComp < VisibilityComponent > ( ent ) ) ;
53- _visibility . RemoveLayer ( eyeEnt , ( int ) VisibilityFlags . DarkSwapInvisibility , false ) ;
54- _visibility . RefreshVisibility ( eyeEnt ) ;
55- }
5649 }
5750
5851 private void OnAddCanSeeAll ( Entity < MetapsionicVisibleComponent > ent , ref ComponentStartup args )
5952 {
60- if ( ! TryComp < EyeComponent > ( ent , out var eye ) )
61- return ;
62-
6353 // Visibility mask will be recalculated automatically by GetVisMaskEvent handler
6454 _eye . RefreshVisibilityMask ( ent . Owner ) ;
65-
66- var vm = ( VisibilityFlags ) eye . VisibilityMask ;
67- if ( ! vm . HasFlag ( VisibilityFlags . DarkSwapInvisibility ) )
68- {
69- _eye . SetVisibilityMask ( ent , eye . VisibilityMask | ( int ) VisibilityFlags . DarkSwapInvisibility , eye ) ;
70-
71- var eyeEnt = ( ent . Owner , EnsureComp < VisibilityComponent > ( ent ) ) ;
72- _visibility . AddLayer ( eyeEnt , ( int ) VisibilityFlags . DarkSwapInvisibility , false ) ;
73- _visibility . RefreshVisibility ( eyeEnt ) ;
74- }
7555 }
7656
77- private readonly EntProtoId ActionMetapsionicPulse = "ActionMetapsionicPulse" ;
57+ private static readonly EntProtoId ActionMetapsionicPulse = "ActionMetapsionicPulse" ;
7858
7959 private void OnInit ( EntityUid uid , MetapsionicPowerComponent component , ComponentInit args )
8060 {
@@ -88,16 +68,19 @@ private void OnInit(EntityUid uid, MetapsionicPowerComponent component, Componen
8868 psionic . PsionicAbility = component . MetapsionicPowerAction ;
8969 }
9070
71+ private static readonly EntProtoId MetapsionicVisibleStatus = "MetapsionicVisible" ;
72+
9173 private void OnPowerUsed ( EntityUid uid , MetapsionicPowerComponent component , MetapsionicPowerActionEvent args )
9274 {
9375 if ( args . Handled )
9476 return ;
9577
96- _statusEffects . TryAddStatusEffect < MetapsionicVisibleComponent > ( uid , "SeeAll" , TimeSpan . FromSeconds ( 2 ) , true ) ;
78+ _statusEffects . TryAddStatusEffectDuration ( uid , MetapsionicVisibleStatus , TimeSpan . FromSeconds ( 10 ) ) ;
9779 var coord = Transform ( uid ) . Coordinates ;
80+
9881 foreach ( var entity in _lookup . GetEntitiesInRange < PsionicComponent > ( coord , component . Range ) )
9982 {
100- if ( entity . Owner != uid && ! HasComp < PsionicInsulationComponent > ( entity )
83+ if ( entity . Owner != uid && ! _insulationQuery . HasComp ( entity )
10184 //&& !(HasComp<ClothingGrantPsionicPowerComponent>(entity) && Transform(entity).ParentUid == uid)
10285 )
10386 {
@@ -106,9 +89,10 @@ private void OnPowerUsed(EntityUid uid, MetapsionicPowerComponent component, Met
10689 return ;
10790 }
10891 }
92+
10993 foreach ( var entity in _lookup . GetEntitiesInRange < ShadowkinDarkSwappedComponent > ( coord , component . Range ) )
11094 {
111- if ( entity . Owner != uid && ! HasComp < PsionicInsulationComponent > ( entity )
95+ if ( entity . Owner != uid && ! _insulationQuery . HasComp ( entity )
11296 //&& !(HasComp<ClothingGrantPsionicPowerComponent>(entity) && Transform(entity).ParentUid == uid)
11397 )
11498 {
0 commit comments