internal static bool IsTeleLinked(uint TeleId, Room pRoom) { uint linkedTele = TeleHandler.GetLinkedTele(TeleId, pRoom); if (linkedTele == 0u) { return false; } RoomItem item = pRoom.GetRoomItemHandler().GetItem(linkedTele); return (item != null && item.GetBaseItem().InteractionType == InteractionType.teleport) || TeleHandler.GetTeleRoomId(linkedTele, pRoom) != 0u; }
internal void DeliverRandomPinataItem(RoomUser User, Room Room, RoomItem Item) { if (Room == null || Item == null || Item.GetBaseItem().InteractionType != InteractionType.pinata || !this.Pinatas.ContainsKey(Item.GetBaseItem().ItemId)) { return; } PinataItem pinataItem; this.Pinatas.TryGetValue(Item.GetBaseItem().ItemId, out pinataItem); if (pinataItem == null || pinataItem.Rewards.Count < 1) { return; } int getX = Item.GetX; int getY = Item.GetY; double getZ = Item.GetZ; Thread.Sleep(900); Item.refreshItem(); Item.BaseItem = pinataItem.Rewards[new Random().Next(checked(pinataItem.Rewards.Count - 1))]; Item.ExtraData = ""; Room.GetRoomItemHandler().RemoveFurniture(User.GetClient(), Item.Id, false); using (IQueryAdapter queryreactor = CyberEnvironment.GetDatabaseManager().getQueryReactor()) { queryreactor.runFastQuery(string.Concat(new object[] { "UPDATE items SET base_item = '", Item.BaseItem, "', extra_data = '' WHERE id = ", Item.Id })); queryreactor.runQuery(); } Room.GetRoomItemHandler().SetFloorItem(Item, getX, getY, getZ, 0, false); ServerMessage serverMessage = new ServerMessage(Outgoing.AddFloorItemMessageComposer); Item.Serialize(serverMessage); serverMessage.AppendString(Room.Owner); Room.SendMessage(serverMessage); Room.GetRoomItemHandler().SetFloorItem(User.GetClient(), Item, Item.GetX, Item.GetY, 0, true, false, true); }
internal static uint GetTeleRoomId(uint TeleId, Room pRoom) { if (pRoom.GetRoomItemHandler().GetItem(TeleId) != null) { return pRoom.RoomId; } uint result; using (IQueryAdapter queryreactor = CyberEnvironment.GetDatabaseManager().getQueryReactor()) { queryreactor.setQuery("SELECT room_id FROM items WHERE id = " + TeleId + " LIMIT 1"); DataRow row = queryreactor.getRow(); if (row == null) { result = 0u; } else { result = Convert.ToUInt32(row[0]); } } return result; }
internal void PlantMonsterplant(RoomItem Mopla, Room Room) { if (Room == null) { return; } if (Mopla == null) { return; } if (Mopla.GetBaseItem().InteractionType != InteractionType.moplaseed) { return; } int rarity = int.Parse(Mopla.ExtraData); int getX = Mopla.GetX; int getY = Mopla.GetY; Room.GetRoomItemHandler().RemoveFurniture(this.Session, Mopla.Id, false); Pet pet = Catalog.CreatePet(this.Session.GetHabbo().Id, "Monsterplant", 16, "0", "0", rarity); this.Response.Init(Outgoing.SendMonsterplantIdMessageComposer); this.Response.AppendUInt(pet.PetId); this.SendResponse(); using (IQueryAdapter queryreactor = CyberEnvironment.GetDatabaseManager().getQueryReactor()) { queryreactor.runFastQuery(string.Concat(new object[] { "UPDATE bots SET room_id = '", Room.RoomId, "', x = '", getX, "', y = '", getY, "' WHERE id = '", pet.PetId, "'" })); } pet.PlacedInRoom = true; pet.RoomId = Room.RoomId; List<RandomSpeech> list = new List<RandomSpeech>(); List<BotResponse> list2 = new List<BotResponse>(); RoomBot bot = new RoomBot(pet.PetId, pet.OwnerId, pet.RoomId, AIType.Pet, "freeroam", pet.Name, "", pet.Look, getX, getY, 0.0, 4, 0, 0, 0, 0, ref list, ref list2, "", 0, false); Room.GetRoomUserManager().DeployBot(bot, pet); if (pet.DBState != DatabaseUpdateState.NeedsInsert) { pet.DBState = DatabaseUpdateState.NeedsUpdate; } using (IQueryAdapter queryreactor2 = CyberEnvironment.GetDatabaseManager().getQueryReactor()) { queryreactor2.runFastQuery("DELETE FROM items WHERE id = " + Mopla.Id); Room.GetRoomUserManager().SavePets(queryreactor2); } }