using Server.Mobiles;
namespace Server.Tests;
///
/// A plain : walker, target or bystander. Deriving straight from Mobile rather
/// than BaseCreature is the point: MovementImpl sees no creature capabilities (no swim, no fly, no
/// door-opening), which is exactly the walker the step cache bakes for.
///
public sealed class WalkerStub : Mobile
{
public WalkerStub() => Body = 0xC9;
}
///
/// A BaseCreature built through the Serial constructor, which skips the NPCSpeeds lookup and
/// leaves AIObject unset: call and attach an AI by hand.
///
public sealed class BareCreatureStub : BaseCreature
{
public BareCreatureStub(Serial serial) : base(serial) => Body = 0xC9;
}
public static class TestTiles
{
///
/// The first item ID whose tile data is an impassable surface, so a test can wall a cell off
/// without pinning a specific graphic. 0 when tile data is not loaded.
///
public static ushort FirstImpassableItemId()
{
for (ushort id = 1; id < TileData.MaxItemValue; id++)
{
if (TileData.ItemTable[id].ImpassableSurface)
{
return id;
}
}
return 0;
}
}