From d177127b99c12c4d2d4904f67f1c253d211ac44a Mon Sep 17 00:00:00 2001 From: CaypenNow <66198468+CaypenNow@users.noreply.github.com> Date: Sun, 24 Mar 2024 18:03:56 +0500 Subject: [PATCH] =?UTF-8?q?=D0=A5=D0=BE=D1=82=D1=84=D0=B8=D0=BA=D1=81=20(#?= =?UTF-8?q?242)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * hotfix * fix --- .../MovespeedModifierMetabolismComponent.cs | 6 ++++- .../_White/Chemistry/NarcoticEffect.cs | 25 ++++++++----------- .../Chemistry/NarcoticEffectComponent.cs | 5 +--- 3 files changed, 16 insertions(+), 20 deletions(-) diff --git a/Content.Shared/Chemistry/Components/MovespeedModifierMetabolismComponent.cs b/Content.Shared/Chemistry/Components/MovespeedModifierMetabolismComponent.cs index 62127ab533..2c9a98b208 100644 --- a/Content.Shared/Chemistry/Components/MovespeedModifierMetabolismComponent.cs +++ b/Content.Shared/Chemistry/Components/MovespeedModifierMetabolismComponent.cs @@ -1,3 +1,4 @@ +using System.Threading; using Robust.Shared.GameStates; namespace Content.Shared.Chemistry.Components @@ -6,6 +7,9 @@ namespace Content.Shared.Chemistry.Components [RegisterComponent, NetworkedComponent, AutoGenerateComponentState] public sealed partial class MovespeedModifierMetabolismComponent : Component { + [ViewVariables, DataField] + public CancellationTokenSource CancelTokenSource = new(); + [AutoNetworkedField, ViewVariables] public float WalkSpeedModifier { get; set; } @@ -15,7 +19,7 @@ namespace Content.Shared.Chemistry.Components /// /// When the current modifier is expected to end. /// - [AutoNetworkedField, ViewVariables] + [AutoNetworkedField, ViewVariables] // WD EDIT public TimeSpan ModifierTimer { get; set; } = TimeSpan.Zero; } } diff --git a/Content.Shared/_White/Chemistry/NarcoticEffect.cs b/Content.Shared/_White/Chemistry/NarcoticEffect.cs index bb98352db7..6af9301b16 100644 --- a/Content.Shared/_White/Chemistry/NarcoticEffect.cs +++ b/Content.Shared/_White/Chemistry/NarcoticEffect.cs @@ -23,7 +23,7 @@ public sealed class NarcoticEffect : EntitySystem base.Initialize(); SubscribeLocalEvent(OnInit); - SubscribeLocalEvent(OnRemove); + SubscribeLocalEvent(OnRemove); } private void OnInit(EntityUid uid, NarcoticEffectComponent component, ComponentInit args) @@ -33,34 +33,29 @@ public sealed class NarcoticEffect : EntitySystem Effects(uid, component, index); } - private void OnRemove(EntityUid uid, NarcoticEffectComponent component, ComponentRemove args) + private void OnRemove(EntityUid uid, MovespeedModifierMetabolismComponent component, ComponentRemove args) { - if (TryComp(uid, out var movespeedModifierComponent)) - { - if (movespeedModifierComponent.ModifierTimer != TimeSpan.Zero) - Timer.Spawn(movespeedModifierComponent.ModifierTimer, () => component.CancelTokenSource.Cancel()); - return; - } component.CancelTokenSource.Cancel(); } private void Effects(EntityUid uid, NarcoticEffectComponent component, int index) { - if(!TryComp(uid, out var standingComp)) + if(!TryComp(uid, out var standingComp) || !TryComp(uid, out var movespeedModifierComponent)) return; - RaiseLocalEvent(uid, new MoodEffectEvent("Stimulator")); - CancellationToken token = component.CancelTokenSource.Token; - TryComp(uid, out var statusEffectsComp); + RaiseLocalEvent(uid, new MoodEffectEvent("Stimulator")); + CancellationToken token = movespeedModifierComponent.CancelTokenSource.Token; + + int timer = component.TimerInterval[_robustRandom.Next(0, component.TimerInterval.Count)]; int slur = component.SlurTime[_robustRandom.Next(0, component.SlurTime.Count)]; switch (Enum.GetValues(typeof(NarcoticEffects)).GetValue(index)) { case NarcoticEffects.TremorAndShake when _statusEffectsSystem.HasStatusEffect(uid, "Drunk", statusEffectsComp): - Timer.SpawnRepeating(timer, () => _stamina.TakeStaminaDamage(uid, 15F), token); + Timer.SpawnRepeating(timer, () => _stamina.TakeStaminaDamage(uid, 25F), token); _statusEffectsSystem.TryAddTime(uid, "Drunk", TimeSpan.FromSeconds(slur), statusEffectsComp); break; @@ -78,12 +73,12 @@ public sealed class NarcoticEffect : EntitySystem break; case NarcoticEffects.TremorAndShake: - Timer.SpawnRepeating(timer, () => _stamina.TakeStaminaDamage(uid, 15F), token); + Timer.SpawnRepeating(timer, () => _stamina.TakeStaminaDamage(uid, 25F), token); _statusEffectsSystem.TryAddStatusEffect(uid, "Drunk", TimeSpan.FromSeconds(slur), true, statusEffectsComp); break; case NarcoticEffects.Tremor: - Timer.SpawnRepeating(timer, () => _stamina.TakeStaminaDamage(uid, 15F), token); + Timer.SpawnRepeating(timer, () => _stamina.TakeStaminaDamage(uid, 25F), token); break; case NarcoticEffects.Shake: diff --git a/Content.Shared/_White/Chemistry/NarcoticEffectComponent.cs b/Content.Shared/_White/Chemistry/NarcoticEffectComponent.cs index f23182685e..32e236ff59 100644 --- a/Content.Shared/_White/Chemistry/NarcoticEffectComponent.cs +++ b/Content.Shared/_White/Chemistry/NarcoticEffectComponent.cs @@ -9,11 +9,8 @@ namespace Content.Shared._White.Chemistry; [RegisterComponent] public sealed partial class NarcoticEffectComponent : Component { - [ViewVariables(VVAccess.ReadWrite), DataField] - public CancellationTokenSource CancelTokenSource = new(); - [ViewVariables(VVAccess.ReadOnly), DataField] - public List TimerInterval = new() { 3000, 6000, 3800, 7000, 5000 }; + public List TimerInterval = new() { 8000, 12000, 10000, 12500, 10500 }; [ViewVariables(VVAccess.ReadOnly), DataField] public List SlurTime = new() { 35, 60, 80, 90, 45 };