fix(items): complete retail corpse looting feedback
Route corpse Use through the shared ItemHolder policy so Stuck corpses open instead of being sent as pickup requests. Restore the framed, horizontally resizable external-container strip and use a compact initial width. Port retail's target-list pending item projection so loot is marked in the chosen inventory slot without changing canonical ownership before the server confirms. Co-authored-by: OpenAI Codex <codex@openai.com>
This commit is contained in:
parent
20ce67b625
commit
d51a0fc825
13 changed files with 275 additions and 102 deletions
|
|
@ -134,6 +134,30 @@ public sealed class ItemInteractionControllerTests
|
|||
Assert.Equal(chest, h.GroundObject);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CorpseUse_UsesStuckContainerInsteadOfTryingToPickItUp()
|
||||
{
|
||||
var h = new Harness();
|
||||
const uint corpse = 0x70000002u;
|
||||
h.Objects.AddOrUpdate(new ClientObject
|
||||
{
|
||||
ObjectId = corpse,
|
||||
Type = ItemType.Container,
|
||||
ItemsCapacity = 24,
|
||||
Useability = ItemUseability.Remote,
|
||||
PublicWeenieBitfield = (uint)(
|
||||
PublicWeenieFlags.Openable
|
||||
| PublicWeenieFlags.Stuck
|
||||
| PublicWeenieFlags.Corpse),
|
||||
});
|
||||
|
||||
Assert.True(h.Controller.UseSelectedOrEnterMode(corpse));
|
||||
|
||||
Assert.Equal(new uint[] { corpse }, h.Uses);
|
||||
Assert.Equal(new uint[] { corpse }, h.ExternalRequests);
|
||||
Assert.Empty(h.Puts);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void DropOwnedItemOnOpenExternalContainer_SendsPutWithoutOptimisticMove()
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue