Fix thrown breakables (#3944)

* Fix bottles and lights being parented to player

* Fix item pickup animation
This commit is contained in:
ShadowCommander
2021-05-08 11:27:20 -07:00
committed by GitHub
parent 55a04bfc30
commit 31844fa88e
2 changed files with 7 additions and 6 deletions

View File

@@ -1,4 +1,4 @@
#nullable enable #nullable enable
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using Content.Server.GameObjects.Components.Stack; using Content.Server.GameObjects.Components.Stack;
@@ -31,7 +31,7 @@ namespace Content.Server.GameObjects.Components.Destructible.Thresholds.Behavior
if (EntityPrototypeHelpers.HasComponent<StackComponent>(entityId)) if (EntityPrototypeHelpers.HasComponent<StackComponent>(entityId))
{ {
var spawned = owner.EntityManager.SpawnEntity(entityId, owner.Transform.Coordinates); var spawned = owner.EntityManager.SpawnEntity(entityId, owner.Transform.MapPosition);
var stack = spawned.GetComponent<StackComponent>(); var stack = spawned.GetComponent<StackComponent>();
stack.Count = count; stack.Count = count;
spawned.RandomOffset(0.5f); spawned.RandomOffset(0.5f);
@@ -40,7 +40,7 @@ namespace Content.Server.GameObjects.Components.Destructible.Thresholds.Behavior
{ {
for (var i = 0; i < count; i++) for (var i = 0; i < count; i++)
{ {
var spawned = owner.EntityManager.SpawnEntity(entityId, owner.Transform.Coordinates); var spawned = owner.EntityManager.SpawnEntity(entityId, owner.Transform.MapPosition);
spawned.RandomOffset(0.5f); spawned.RandomOffset(0.5f);
} }
} }

View File

@@ -172,15 +172,16 @@ namespace Content.Server.GameObjects.Components.GUI
Dirty(); Dirty();
var position = item.Owner.Transform.Coordinates; var oldParent = item.Owner.Transform.Parent;
var oldPosition = item.Owner.Transform.Coordinates;
var contained = item.Owner.IsInContainer(); var contained = item.Owner.IsInContainer();
var success = hand.Container.Insert(item.Owner); var success = hand.Container.Insert(item.Owner);
if (success) if (success)
{ {
//If the entity isn't in a container, and it isn't located exactly at our position (i.e. in our own storage), then we can safely play the animation //If the entity isn't in a container, and it isn't located exactly at our position (i.e. in our own storage), then we can safely play the animation
if (position != Owner.Transform.Coordinates && !contained) if (oldParent != Owner.Transform && !contained)
{ {
SendNetworkMessage(new AnimatePickupEntityMessage(item.Owner.Uid, position)); SendNetworkMessage(new AnimatePickupEntityMessage(item.Owner.Uid, oldPosition));
} }
item.Owner.Transform.LocalPosition = Vector2.Zero; item.Owner.Transform.LocalPosition = Vector2.Zero;
OnItemChanged?.Invoke(); OnItemChanged?.Invoke();