Skip to content

Commit e62b45f

Browse files
committed
hotfix
1 parent 6699c21 commit e62b45f

File tree

7 files changed

+55
-50
lines changed

7 files changed

+55
-50
lines changed

Content.Server/Backmen/Abilities/Psionics/Abilities/MetapsionicPowerSystem.cs

Lines changed: 22 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
1-
using Content.Server.Backmen.Psionics;
21
using Content.Shared.Actions;
32
using Content.Shared.Backmen.Abilities.Psionics;
4-
using Content.Shared.Backmen.Psionics;
5-
using Content.Shared.Backmen.Psionics.Components;
63
using Content.Shared.Backmen.Psionics.Events;
74
using Content.Shared.Backmen.Species.Shadowkin.Components;
85
using Content.Shared.Eye;
9-
using Content.Shared.StatusEffect;
6+
using Content.Shared.StatusEffectNew;
107
using Content.Shared.Popups;
11-
using Robust.Server.GameObjects;
128
using Robust.Shared.Prototypes;
13-
using Robust.Shared.Timing;
149

1510
namespace 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
{

Content.Server/Backmen/Abilities/Psionics/PsionicAbilitiesSystem.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
using Content.Shared.Backmen.Psionics;
1111
using Content.Shared.Interaction;
1212
using Content.Shared.Physics;
13-
using Content.Shared.StatusEffect;
13+
using Content.Shared.StatusEffectNew;
1414
using Robust.Shared.Random;
1515
using Robust.Shared.Prototypes;
1616
using Robust.Server.Player;
@@ -129,7 +129,7 @@ public void RemovePsionics(EntityUid uid, bool noEffect = false)
129129
_actionsSystem.RemoveAction(uid, psionic.PsionicAbility);
130130

131131
if(!noEffect)
132-
_statusEffectsSystem.TryAddStatusEffect(uid, "Stutter", TimeSpan.FromMinutes(5), false, "StutteringAccent");
132+
_statusEffectsSystem.TryAddStatusEffectDuration(uid, "StatusEffectStutter", TimeSpan.FromMinutes(5));
133133

134134
RemCompDeferred<PsionicComponent>(uid);
135135
}

Content.Server/Backmen/Psionics/Invisbility/PsionicInvisibilitySystem.cs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public override void Initialize()
2929

3030
// Visibility mask event
3131
SubscribeLocalEvent<GetVisMaskEvent>(OnGetVisMask);
32+
SubscribeLocalEvent<PsionicallyInvisibleComponent, GetVisMaskEvent>(OnGetVisMask2);
3233

3334
// Layer
3435
SubscribeLocalEvent<PsionicallyInvisibleComponent, ComponentInit>(OnInvisInit);
@@ -39,6 +40,14 @@ public override void Initialize()
3940
SubscribeLocalEvent<PsionicallyInvisibleComponent, EntRemovedFromContainerMessage>(OnEntRemoved);
4041
}
4142

43+
private void OnGetVisMask2(Entity<PsionicallyInvisibleComponent> ent, ref GetVisMaskEvent args)
44+
{
45+
if (ent.Comp.LifeStage > ComponentLifeStage.Running)
46+
return;
47+
48+
args.VisibilityMask |= (int)VisibilityFlags.PsionicInvisibility;
49+
}
50+
4251
private void OnGetVisMask(ref GetVisMaskEvent args)
4352
{
4453
if (HasComp<GhostComponent>(args.Entity))
@@ -48,7 +57,8 @@ private void OnGetVisMask(ref GetVisMaskEvent args)
4857
}
4958

5059
// Entities with PsionicInsulationComponent can see psionic invisibility
51-
if (HasComp<PsionicInsulationComponent>(args.Entity))
60+
if (TryComp<PsionicInsulationComponent>(args.Entity, out var insulationComponent)
61+
&& insulationComponent.LifeStage <= ComponentLifeStage.Running)
5262
{
5363
args.VisibilityMask |= (int)VisibilityFlags.PsionicInvisibility;
5464
return;

Content.Server/Backmen/Species/Shadowkin/Systems/ShadowkinPowerSystem.DarkSwap.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,9 @@ public override void Initialize()
7676

7777
private void OnGetVisMask(Entity<ShadowkinDarkSwappedComponent> ent, ref GetVisMaskEvent args)
7878
{
79+
if (ent.Comp.LifeStage > ComponentLifeStage.Running)
80+
return;
81+
7982
// Entities with ShadowkinDarkSwappedComponent can see DarkSwapped entities
8083
args.VisibilityMask |= (int)VisibilityFlags.DarkSwapInvisibility;
8184
}

Content.Server/Backmen/Speech/EntitySystems/ShadowkinAccentSystem.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,20 @@ public string Accentuate(string message)
3434
{
3535
var current = c.ToString();
3636

37-
// Английские замены (шанс 30%)
38-
if (_random.Prob(0.3f) && mRegex.IsMatch(current))
37+
// Английские замены (шанс 10%)
38+
if (_random.Prob(0.1f) && mRegex.IsMatch(current))
3939
current = "m";
40-
if (_random.Prob(0.3f) && aRegex.IsMatch(current))
40+
if (_random.Prob(0.1f) && aRegex.IsMatch(current))
4141
current = "a";
4242
if (_random.Prob(0.1f) && rRegex.IsMatch(current))
4343
current = "r";
4444

45-
// Русские замены (шанс 30%)
46-
if (_random.Prob(0.3f) && mRegexRu.IsMatch(current))
45+
// Русские замены (шанс 10%)
46+
if (_random.Prob(0.1f) && mRegexRu.IsMatch(current))
4747
current = "м";
48-
if (_random.Prob(0.3f) && aRegexRu.IsMatch(current))
48+
if (_random.Prob(0.1f) && aRegexRu.IsMatch(current))
4949
current = "а";
50-
if (_random.Prob(0.3f) && rRegexRu.IsMatch(current))
50+
if (_random.Prob(0.1f) && rRegexRu.IsMatch(current))
5151
current = "р";
5252

5353
result.Append(current);

Content.Shared/Backmen/Abilities/Psionics/Abilities/MassSleep/MassSleepPowerSystem.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public sealed class MassSleepPowerSystem : EntitySystem
1414
[Dependency] private readonly SharedActionsSystem _actions = default!;
1515
[Dependency] private readonly EntityLookupSystem _lookup = default!;
1616
[Dependency] private readonly SharedPsionicAbilitiesSystem _psionics = default!;
17-
[Dependency] private readonly SleepingSystem _sleepingSystem = default!;
17+
[Dependency] private readonly StatusEffectNew.StatusEffectsSystem _effectsSystem = default!;
1818
private EntityQuery<PsionicInsulationComponent> _qPsionicInsulation;
1919

2020
public override void Initialize()
@@ -68,7 +68,7 @@ private void OnPowerUsed(EntityUid uid, MassSleepPowerComponent component, MassS
6868
if (!TryComp<DamageableComponent>(entity, out var damageable) || damageable.DamageContainerID != Biological)
6969
continue;
7070

71-
var result = _sleepingSystem.TrySleeping((entity.Owner,entity.Comp));
71+
var result = _effectsSystem.TryUpdateStatusEffectDuration(entity, "StatusEffectForcedSleeping", TimeSpan.FromSeconds(10));
7272
if (!handle && result)
7373
handle = true;
7474
}

Resources/Prototypes/_Backmen/StatusEffects/psionics.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,11 @@
1111
name: psionic disabled
1212
components:
1313
- type: PsionicsDisabled
14+
15+
16+
- type: entity
17+
parent: MobStatusEffectBase
18+
id: StatusEffectPsionicAllSee
19+
name: psionic all see
20+
components:
21+
- type: MetapsionicVisible

0 commit comments

Comments
 (0)