fix(B.5): make creature-pickup guard silent (retail-faithful)

The previous "Can't pick that up" toast wasn't retail behavior either —
retail silently dropped the malformed pickup with no client-side
feedback. Drop the toast, keep the guard. The user learns by trying
again (which IS the retail UX). Filter still prevents the malformed
packet from reaching ACE, so the WeenieError 0x0029 + NPC-emote chain
that originally surfaced this bug stays suppressed.
This commit is contained in:
Erik 2026-05-14 17:09:45 +02:00
parent ab7c04fb4f
commit e55ad48ade

View file

@ -8897,19 +8897,18 @@ public sealed class GameWindow : IDisposable
return;
}
// B.5 polish (2026-05-14): block client-side when the selected
// entity is a creature/NPC — ACE's HandleActionPutItemInContainer
// would otherwise reject with WeenieError.Stuck (0x0029, "You
// cannot pick that up!") AND trigger the NPC's emote chain,
// which surfaces as "the NPC talks to me when I press F" if the
// user single-clicked an NPC last before the F press. Use
// (double-click) is the right action for NPCs; F is only for
// ground items.
// B.5 polish (2026-05-14): silently block client-side when the
// selected entity is a creature/NPC. ACE's
// HandleActionPutItemInContainer would otherwise reject with
// WeenieError.Stuck (0x0029, "You cannot pick that up!") AND
// trigger the NPC's emote chain, which surfaces as "the NPC
// talks to me when I press F" if the user single-clicked an
// NPC last before the F press. Use (double-click) is the right
// action for NPCs; F is only for ground items. Silent rejection
// matches retail behavior — retail showed no client-side
// feedback for this case either.
if (IsLiveCreatureTarget(itemGuid))
{
_debugVm?.AddToast("Can't pick that up");
return;
}
var seq = _liveSession.NextGameActionSequence();
var body = AcDream.Core.Net.Messages.InteractRequests.BuildPickUp(