// PVS-detach action entities
// We do this by just giving them the ghost layer
var visSys = server.System<VisibilitySystem>();
- var enumerator = server.Transform(ent).ChildEnumerator;
- while (enumerator.MoveNext(out var child))
+
+ await server.WaitPost(() =>
{
- visSys.AddLayer(child, (int) VisibilityFlags.Ghost);
- }
+ var enumerator = server.Transform(ent).ChildEnumerator;
+ while (enumerator.MoveNext(out var child))
+ {
+ visSys.AddLayer(child, (int)VisibilityFlags.Ghost);
+ }
+ });
+
await pair.RunTicksSync(5);
// Client's actions have left been detached / are out of view, but action comp state has not changed
Assert.That(cSys.GetActions(cEnt).Count(), Is.EqualTo(initActions));
// Re-enter PVS view
- enumerator = server.Transform(ent).ChildEnumerator;
- while (enumerator.MoveNext(out var child))
+ await server.WaitPost(() =>
{
- visSys.RemoveLayer(child, (int) VisibilityFlags.Ghost);
- }
+ var enumerator = server.Transform(ent).ChildEnumerator;
+ while (enumerator.MoveNext(out var child))
+ {
+ visSys.RemoveLayer(child, (int) VisibilityFlags.Ghost);
+ }
+ });
await pair.RunTicksSync(5);
Assert.That(sys.GetActions(ent).Count(), Is.EqualTo(initActions));
Assert.That(cSys.GetActions(cEnt).Count(), Is.EqualTo(initActions));
Assert.That(pullable.BeingPulled, Is.False);
// Strap the human to the chair
- Assert.That(Server.System<SharedBuckleSystem>().TryBuckle(sUrist, SPlayer, STarget.Value));
+ await Server.WaitAssertion(() =>
+ {
+ Assert.That(Server.System<SharedBuckleSystem>().TryBuckle(sUrist, SPlayer, STarget.Value));
+ });
+
await RunTicks(5);
Assert.That(buckle.Buckled, Is.True);
Assert.That(buckle.BuckledTo, Is.EqualTo(STarget));
var entManager = server.ResolveDependency<IEntityManager>();
var priceSystem = entManager.System<PricingSystem>();
- var ent = entManager.SpawnEntity("StackEnt", MapCoordinates.Nullspace);
- var price = priceSystem.GetPrice(ent);
- Assert.That(price, Is.EqualTo(100.0));
+ await server.WaitAssertion(() =>
+ {
+ var ent = entManager.SpawnEntity("StackEnt", MapCoordinates.Nullspace);
+ var price = priceSystem.GetPrice(ent);
+ Assert.That(price, Is.EqualTo(100.0));
+ });
await pair.CleanReturnAsync();
}
mobStateComp = entManager.GetComponent<MobStateComponent>(player);
mobThresholdsComp = entManager.GetComponent<MobThresholdsComponent>(player);
damageableComp = entManager.GetComponent<DamageableComponent>(player);
- });
- if (protoMan.TryIndex<DamageTypePrototype>("Slash", out var slashProto))
- damageableSystem.TryChangeDamage(player, new DamageSpecifier(slashProto, FixedPoint2.New(46.5)));
+ if (protoMan.TryIndex<DamageTypePrototype>("Slash", out var slashProto))
+ damageableSystem.TryChangeDamage(player, new DamageSpecifier(slashProto, FixedPoint2.New(46.5)));
+ });
// Check that running the suicide command kills the player
// and properly ghosts them without them being able to return to their body
var entManager = server.ResolveDependency<IEntityManager>();
var dockingSystem = entManager.System<DockingSystem>();
var mapSystem = entManager.System<SharedMapSystem>();
+ MapGridComponent mapGrid = default!;
- var mapGrid = entManager.AddComponent<MapGridComponent>(map.MapUid);
var shuttle = EntityUid.Invalid;
// Spawn shuttle and affirm no valid docks.
await server.WaitAssertion(() =>
{
+ mapGrid = entManager.AddComponent<MapGridComponent>(map.MapUid);
entManager.DeleteEntity(map.Grid);
Assert.That(entManager.System<MapLoaderSystem>().TryLoad(otherMap.MapId, "/Maps/Shuttles/emergency.yml", out var rootUids));
shuttle = rootUids[0];