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; } }