Fix ThrownItemComponent's Thrower not being synced with the client.
- Fixes throwing banana peels making people become horizontal... On the client only.
This commit is contained in:
@@ -125,7 +125,7 @@ namespace Content.Shared.Stunnable
|
|||||||
if (!_standingStateSystem.Down(uid, standingState:standingState, appearance:appearance))
|
if (!_standingStateSystem.Down(uid, standingState:standingState, appearance:appearance))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
stunnable.KnockdownTimer = (_gameTiming.CurTime, _gameTiming.CurTime + time);;
|
stunnable.KnockdownTimer = (_gameTiming.CurTime, _gameTiming.CurTime + time);
|
||||||
|
|
||||||
SetAlert(uid, stunnable, alerts);
|
SetAlert(uid, stunnable, alerts);
|
||||||
|
|
||||||
@@ -144,8 +144,8 @@ namespace Content.Shared.Stunnable
|
|||||||
// Optional component.
|
// Optional component.
|
||||||
Resolve(uid, ref alerts, false);
|
Resolve(uid, ref alerts, false);
|
||||||
|
|
||||||
Stun(uid, time, stunnable, alerts);
|
|
||||||
Knockdown(uid, time, stunnable, alerts);
|
Knockdown(uid, time, stunnable, alerts);
|
||||||
|
Stun(uid, time, stunnable, alerts);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -1,12 +1,26 @@
|
|||||||
|
using System;
|
||||||
using Robust.Shared.GameObjects;
|
using Robust.Shared.GameObjects;
|
||||||
|
using Robust.Shared.GameStates;
|
||||||
|
using Robust.Shared.Serialization;
|
||||||
|
|
||||||
namespace Content.Shared.Throwing
|
namespace Content.Shared.Throwing
|
||||||
{
|
{
|
||||||
[RegisterComponent]
|
[RegisterComponent, NetworkedComponent]
|
||||||
public class ThrownItemComponent : Component
|
public class ThrownItemComponent : Component
|
||||||
{
|
{
|
||||||
public override string Name => "ThrownItem";
|
public override string Name => "ThrownItem";
|
||||||
|
|
||||||
public IEntity? Thrower { get; set; }
|
public IEntity? Thrower { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Serializable, NetSerializable]
|
||||||
|
public class ThrownItemComponentState : ComponentState
|
||||||
|
{
|
||||||
|
public EntityUid? Thrower { get; }
|
||||||
|
|
||||||
|
public ThrownItemComponentState(EntityUid? thrower)
|
||||||
|
{
|
||||||
|
Thrower = thrower;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ using Content.Shared.Physics.Pull;
|
|||||||
using Robust.Shared.Configuration;
|
using Robust.Shared.Configuration;
|
||||||
using Robust.Shared.Containers;
|
using Robust.Shared.Containers;
|
||||||
using Robust.Shared.GameObjects;
|
using Robust.Shared.GameObjects;
|
||||||
|
using Robust.Shared.GameStates;
|
||||||
using Robust.Shared.IoC;
|
using Robust.Shared.IoC;
|
||||||
using Robust.Shared.Log;
|
using Robust.Shared.Log;
|
||||||
using Robust.Shared.Maths;
|
using Robust.Shared.Maths;
|
||||||
@@ -32,9 +33,25 @@ namespace Content.Shared.Throwing
|
|||||||
SubscribeLocalEvent<ThrownItemComponent, StartCollideEvent>(HandleCollision);
|
SubscribeLocalEvent<ThrownItemComponent, StartCollideEvent>(HandleCollision);
|
||||||
SubscribeLocalEvent<ThrownItemComponent, PreventCollideEvent>(PreventCollision);
|
SubscribeLocalEvent<ThrownItemComponent, PreventCollideEvent>(PreventCollision);
|
||||||
SubscribeLocalEvent<ThrownItemComponent, ThrownEvent>(ThrowItem);
|
SubscribeLocalEvent<ThrownItemComponent, ThrownEvent>(ThrowItem);
|
||||||
|
SubscribeLocalEvent<ThrownItemComponent, ComponentGetState>(OnGetState);
|
||||||
|
SubscribeLocalEvent<ThrownItemComponent, ComponentHandleState>(OnHandleState);
|
||||||
SubscribeLocalEvent<PullStartedMessage>(HandlePullStarted);
|
SubscribeLocalEvent<PullStartedMessage>(HandlePullStarted);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void OnGetState(EntityUid uid, ThrownItemComponent component, ref ComponentGetState args)
|
||||||
|
{
|
||||||
|
args.State = new ThrownItemComponentState(component.Thrower?.Uid);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnHandleState(EntityUid uid, ThrownItemComponent component, ref ComponentHandleState args)
|
||||||
|
{
|
||||||
|
if (args.Current is not ThrownItemComponentState state || state.Thrower == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if(EntityManager.TryGetEntity(state.Thrower.Value, out var entity))
|
||||||
|
component.Thrower = entity;
|
||||||
|
}
|
||||||
|
|
||||||
private void ThrowItem(EntityUid uid, ThrownItemComponent component, ThrownEvent args)
|
private void ThrowItem(EntityUid uid, ThrownItemComponent component, ThrownEvent args)
|
||||||
{
|
{
|
||||||
if (!component.Owner.TryGetComponent(out PhysicsComponent? physicsComponent) ||
|
if (!component.Owner.TryGetComponent(out PhysicsComponent? physicsComponent) ||
|
||||||
|
|||||||
4
Resources/Changelog/Parts/peel.yml
Normal file
4
Resources/Changelog/Parts/peel.yml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
author: Zumorica
|
||||||
|
changes:
|
||||||
|
- type: Fix # One of the following: Add, Remove, Tweak, Fix
|
||||||
|
message: Fixes thrown slippery items causing the thrower to become horizontal when they shouldn't.
|
||||||
Reference in New Issue
Block a user