diff --git a/src/AcDream.Core/Items/ClientObjectTable.cs b/src/AcDream.Core/Items/ClientObjectTable.cs index 48893182..a80b0fb2 100644 --- a/src/AcDream.Core/Items/ClientObjectTable.cs +++ b/src/AcDream.Core/Items/ClientObjectTable.cs @@ -482,6 +482,10 @@ public sealed class ClientObjectTable return total; } + // NOTE: WielderId is populated from wire data only (CreateObject → Ingest). An + // optimistically-wielded item (WieldItemOptimistic, before the server confirm) has + // WielderId == 0 and is detected via the ContainerId walk below (ContainerId == wielder). + // A future "is this wielded by me?" check must therefore use ContainerId, NOT WielderId alone. private bool IsCarriedBy(ClientObject o, uint ownerGuid) { if (o.WielderId == ownerGuid) return true;