Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        // 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);
        }