public static Dictionary <int, bool> CheckStatic(int x, int y) { Dictionary <int, bool> zThings = new Dictionary <int, bool>(); short landId = (short)Statics.GetLandID(x, y, Player.Map); short zValue = (short)Statics.GetLandZ(x, y, Player.Map); if (m_landdata.ContainsKey(landId)) { TileFlag templandflag = m_landdata[landId]; if ((templandflag & TileFlag.Impassable) != 0 || (templandflag & TileFlag.Wall) != 0 || (templandflag & TileFlag.Wet) != 0) { zThings.Add(zValue, true); } else { zThings.Add(zValue, false); } } List <Statics.TileInfo> staticitemsid = Statics.GetStaticsTileInfo(x, y, Player.Map); if (staticitemsid.Count > 0) { foreach (Statics.TileInfo tile in staticitemsid) { if (TileData.ItemTable[tile.StaticID].Flags != TileFlag.None) { if ((TileData.ItemTable[tile.StaticID].Flags & TileFlag.Impassable) != 0 || (TileData.ItemTable[tile.StaticID].Flags & TileFlag.Door) != 0 || (TileData.ItemTable[tile.StaticID].Flags & TileFlag.Wall) != 0 || (TileData.ItemTable[tile.StaticID].Flags & TileFlag.Damaging) != 0 || (TileData.ItemTable[tile.StaticID].Flags & TileFlag.Wet) != 0 || (TileData.ItemTable[tile.StaticID].Flags & TileFlag.Window) != 0) { if (zThings.ContainsKey(tile.StaticZ)) { zThings[tile.StaticZ] = true; } else { zThings.Add(tile.StaticZ, true); } } else if ((TileData.ItemTable[tile.StaticID].Flags & TileFlag.Roof) != 0 || (TileData.ItemTable[tile.StaticID].Flags & TileFlag.Surface) != 0) { if (!zThings.ContainsKey(tile.StaticZ)) { zThings.Add(tile.StaticZ, false); } } } } } return(zThings); }
// returns true if clear or false if blocked internal static bool CheckTile(Assistant.Mobile mobile, int x, int y, int z) { int tile = Statics.GetLandID(x, y, Player.Map); List <Statics.TileInfo> statics = Statics.GetStaticsTileInfo(x, y, Player.Map); bool blocked = false; foreach (var checkStatic in statics) { if (IsStaticWall(mobile, checkStatic) || IsFloorBlocking(mobile, checkStatic)) { blocked = true;; } } return(!blocked); }