var sortedItems = items
.OrderByDescending(x => ItemSystem.GetItemShape(x.Comp).GetArea());
+ ClearCantFillReasons();
foreach (var ent in sortedItems)
{
if (Insert(uid, ent, out _, out var reason, storageComp: storage, playSound: false))
continue;
+ if (CantFillReasons.Count > 0)
+ {
+ var reasons = string.Join(", ", CantFillReasons.Select(s => Loc.GetString(s)));
+ if (reason == null)
+ reason = reasons;
+ else
+ reason += $", {reasons}";
+ }
+
Log.Error($"Tried to StorageFill {ToPrettyString(ent)} inside {ToPrettyString(uid)} but can't. reason: {reason}");
+ ClearCantFillReasons();
Del(ent);
}
}
using System.Linq;
using Content.Shared.ActionBlocker;
using Content.Shared.Containers.ItemSlots;
-using Content.Shared.Coordinates;
using Content.Shared.Destructible;
using Content.Shared.DoAfter;
using Content.Shared.Hands.Components;
private readonly List<ItemSizePrototype> _sortedSizes = new();
private FrozenDictionary<string, ItemSizePrototype> _nextSmallest = FrozenDictionary<string, ItemSizePrototype>.Empty;
+ protected readonly List<string> CantFillReasons = [];
+
/// <inheritdoc />
public override void Initialize()
{
if (CheckingCanInsert)
return;
- if (!CanInsert(uid, args.EntityUid, out _, component, ignoreStacks: true))
+ if (!CanInsert(uid, args.EntityUid, out var reason, component, ignoreStacks: true))
+ {
+#if DEBUG
+ if (reason != null)
+ CantFillReasons.Add(reason);
+#endif
+
args.Cancel();
+ }
}
public void UpdateAppearance(Entity<StorageComponent?, AppearanceComponent?> entity)
for (int i = 0; i < list.Count; i++)
{
var saved = list[i];
-
+
if (saved == location)
{
list.Remove(location);
}
}
+ protected void ClearCantFillReasons()
+ {
+#if DEBUG
+ CantFillReasons.Clear();
+#endif
+ }
+
/// <summary>
/// Plays a clientside pickup animation for the specified uid.
/// </summary>