Fix wall vending machines spawning items in walls. (#28279)

* Find spawning of wall vending machines.

* Review fixes
This commit is contained in:
Repo
2024-05-29 02:02:15 +12:00
committed by GitHub
parent dc895feab3
commit 4cec8110b0

View File

@@ -19,6 +19,7 @@ using Content.Shared.Popups;
using Content.Shared.Throwing;
using Content.Shared.UserInterface;
using Content.Shared.VendingMachines;
using Content.Shared.Wall;
using Robust.Server.GameObjects;
using Robust.Shared.Audio;
using Robust.Shared.Prototypes;
@@ -39,6 +40,8 @@ namespace Content.Server.VendingMachines
[Dependency] private readonly IGameTiming _timing = default!;
[Dependency] private readonly SpeakOnUIClosedSystem _speakOnUIClosed = default!;
private const float WallVendEjectDistanceFromWall = 1f;
public override void Initialize()
{
base.Initialize();
@@ -384,7 +387,20 @@ namespace Content.Server.VendingMachines
return;
}
var ent = Spawn(vendComponent.NextItemToEject, Transform(uid).Coordinates);
// Default spawn coordinates
var spawnCoordinates = Transform(uid).Coordinates;
//Make sure the wallvends spawn outside of the wall.
if (TryComp<WallMountComponent>(uid, out var wallMountComponent))
{
var offset = wallMountComponent.Direction.ToWorldVec() * WallVendEjectDistanceFromWall;
spawnCoordinates = spawnCoordinates.Offset(offset);
}
var ent = Spawn(vendComponent.NextItemToEject, spawnCoordinates);
if (vendComponent.ThrowNextItem)
{
var range = vendComponent.NonLimitedEjectRange;