diff --git a/Content.Server/GameObjects/Components/Buckle/BuckleComponent.cs b/Content.Server/GameObjects/Components/Buckle/BuckleComponent.cs index 7aaeb48adb..0bfef0a98e 100644 --- a/Content.Server/GameObjects/Components/Buckle/BuckleComponent.cs +++ b/Content.Server/GameObjects/Components/Buckle/BuckleComponent.cs @@ -191,8 +191,6 @@ namespace Content.Server.GameObjects.Components.Buckle if (!Owner.InRangeUnobstructed(strap, _range, predicate: Ignored, popup: true)) { - strap.Owner.PopupMessage(user, Loc.GetString("You can't reach there!")); - return false; } @@ -203,8 +201,6 @@ namespace Content.Server.GameObjects.Components.Buckle if (!ContainerHelpers.TryGetContainer(strap.Owner, out var strapContainer) || ownerContainer != strapContainer) { - strap.Owner.PopupMessage(user, Loc.GetString("You can't reach there!")); - return false; } } diff --git a/Content.Server/GameObjects/Components/Movement/ClimbableComponent.cs b/Content.Server/GameObjects/Components/Movement/ClimbableComponent.cs index 8d719c4f55..c7c5e8f777 100644 --- a/Content.Server/GameObjects/Components/Movement/ClimbableComponent.cs +++ b/Content.Server/GameObjects/Components/Movement/ClimbableComponent.cs @@ -210,6 +210,9 @@ namespace Content.Server.GameObjects.Components.Movement private async void TryClimb(IEntity user) { + if (!user.TryGetComponent(out ClimbingComponent climbingComponent) || climbingComponent.IsClimbing) + return; + var doAfterEventArgs = new DoAfterEventArgs(user, _climbDelay, default, Owner) { BreakOnTargetMove = true, diff --git a/Content.Server/GameObjects/Components/Movement/ClimbingComponent.cs b/Content.Server/GameObjects/Components/Movement/ClimbingComponent.cs index f58a9be94a..95ab445659 100644 --- a/Content.Server/GameObjects/Components/Movement/ClimbingComponent.cs +++ b/Content.Server/GameObjects/Components/Movement/ClimbingComponent.cs @@ -14,15 +14,15 @@ namespace Content.Server.GameObjects.Components.Movement public override bool IsClimbing { - get - { - return _isClimbing; - } + get => _isClimbing; set { - if (!value && Body != null) + if (_isClimbing == value) + return; + + if (!value) { - Body.TryRemoveController(); + Body?.TryRemoveController(); } _isClimbing = value; @@ -35,37 +35,33 @@ namespace Content.Server.GameObjects.Components.Movement /// public void TryMoveTo(Vector2 from, Vector2 to) { - if (Body != null) - { - _climbController = Body.EnsureController(); - _climbController.TryMoveTo(from, to); - } + if (Body == null) + return; + + _climbController = Body.EnsureController(); + _climbController.TryMoveTo(from, to); } - public void Update(float frameTime) + public void Update() { - if (Body != null && IsClimbing) + if (!IsClimbing || Body == null) + return; + + if (_climbController != null && (_climbController.IsBlocked || !_climbController.IsActive)) { - if (_climbController != null && (_climbController.IsBlocked || !_climbController.IsActive)) + if (Body.TryRemoveController()) { - if (Body.TryRemoveController()) - { - _climbController = null; - } + _climbController = null; } - - if (IsClimbing) - { - Body.WakeBody(); - } - - if (!IsOnClimbableThisFrame && IsClimbing && _climbController == null) - { - IsClimbing = false; - } - - IsOnClimbableThisFrame = false; } + + if (IsClimbing) + Body.WakeBody(); + + if (!IsOnClimbableThisFrame && IsClimbing && _climbController == null) + IsClimbing = false; + + IsOnClimbableThisFrame = false; } public override ComponentState GetComponentState() diff --git a/Content.Server/GameObjects/EntitySystems/ClimbSystem.cs b/Content.Server/GameObjects/EntitySystems/ClimbSystem.cs index f7d2e37372..f4d5b0f6cf 100644 --- a/Content.Server/GameObjects/EntitySystems/ClimbSystem.cs +++ b/Content.Server/GameObjects/EntitySystems/ClimbSystem.cs @@ -11,7 +11,7 @@ namespace Content.Server.GameObjects.EntitySystems { foreach (var comp in ComponentManager.EntityQuery()) { - comp.Update(frameTime); + comp.Update(); } } }