private bool ConstructMapForItem(RoomItem Item, int x, int y) { try { if (x > (Model.MapSizeX - 1)) { Model.AddX(); GenerateMaps(); return false; } if (y > (Model.MapSizeY - 1)) { Model.AddY(); GenerateMaps(); return false; } if (Model.SqState[x, y] == SquareState.BLOCKED || Model.SqFloorHeight[x, y] > Item.GetZ) { Model.OpenSquare(x, y, Item.GetZ); Model.SetUpdateState(); } stackmap.AddItem(Item.Id, x, y, Item.GetZ, Item.Height, Item.GetSquareState()); if (mItemHeightMap[x, y] <= Item.TotalHeight) { mItemHeightMap[x, y] = Item.TotalHeight - mDynamicModel.SqFloorHeight[Item.GetX, Item.GetY]; mUserItemEffect[x, y] = 0; switch (Item.GetBaseItem().InteractionType) { case InteractionType.pool: mUserItemEffect[x, y] = 1; break; case InteractionType.normslaskates: mUserItemEffect[x, y] = 2; break; case InteractionType.iceskates: mUserItemEffect[x, y] = 3; break; case InteractionType.lowpool: mUserItemEffect[x, y] = 4; break; case InteractionType.haloweenpool: mUserItemEffect[x, y] = 5; break; } //SwimHalloween if (Item.GetBaseItem().Walkable)// If this item is walkable and on the floor, allow users to walk here. { if (mGameMap[x, y] != 3) mGameMap[x, y] = 1; } else if (Item.GetZ <= (Model.SqFloorHeight[Item.GetX, Item.GetY] + 0.1) && Item.GetBaseItem().InteractionType == Butterfly.HabboHotel.Items.InteractionType.gate && Item.ExtraData == "1") // If this item is a gate, open, and on the floor, allow users to walk here. { if (mGameMap[x, y] != 3) mGameMap[x, y] = 1; } else if (Item.GetBaseItem().IsSeat || Item.GetBaseItem().InteractionType == Butterfly.HabboHotel.Items.InteractionType.bed) { mGameMap[x, y] = 3; } else // Finally, if it's none of those, block the square. { if (mGameMap[x, y] != 3) mGameMap[x, y] = 0; } } // Set bad maps if (Item.GetBaseItem().InteractionType == Butterfly.HabboHotel.Items.InteractionType.bed) mGameMap[x, y] = 3; } catch (Exception e) { Logging.LogException("Error during map generation for room " + room.RoomId + ". Exception: " + e.ToString()); } return true; }