fix(interaction): restore retail loot placement and world-drop projection
This commit is contained in:
parent
4d095be286
commit
921712f412
24 changed files with 1581 additions and 34 deletions
|
|
@ -1051,6 +1051,47 @@ public sealed class EquippedChildProjectionWithdrawalTests
|
|||
Assert.Single(fixture.Controller.AttachedEntityIds);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void InventoryPutObjectIn3D_DoesNotWithdrawRecoveredWorldProjection()
|
||||
{
|
||||
int withdrawals = 0;
|
||||
ControllerFixture? fixture = null;
|
||||
fixture = new ControllerFixture((record, positionVersion, projectionVersion) =>
|
||||
{
|
||||
withdrawals++;
|
||||
bool completed = fixture!.Live.WithdrawLiveEntityProjection(
|
||||
record,
|
||||
positionVersion,
|
||||
projectionVersion);
|
||||
return new(
|
||||
completed
|
||||
? ExactProjectionWithdrawalDisposition.Completed
|
||||
: ExactProjectionWithdrawalDisposition.Superseded,
|
||||
Failure: null);
|
||||
});
|
||||
using (fixture)
|
||||
{
|
||||
const uint guid = 0x7000026Au;
|
||||
const uint player = 0x50000001u;
|
||||
LiveEntityRecord dropped = fixture.Spawn(guid, generation: 1);
|
||||
fixture.Objects.AddOrUpdate(new ClientObject
|
||||
{
|
||||
ObjectId = guid,
|
||||
ContainerId = player,
|
||||
CurrentlyEquippedLocation = EquipMask.None,
|
||||
});
|
||||
|
||||
Assert.True(fixture.Objects.ApplyConfirmedServerMove(
|
||||
guid,
|
||||
newContainerId: 0u,
|
||||
newWielderId: 0u));
|
||||
|
||||
Assert.Equal(0, withdrawals);
|
||||
Assert.True(dropped.IsSpatiallyProjected);
|
||||
Assert.Equal(LiveEntityProjectionKind.World, dropped.ProjectionKind);
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void OrphanRollback_PendingFailureRetainsExactRetryOwner()
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue