using System; using System.Collections.Generic; using System.Linq; using System.Text; using Uber.Storage; using Uber.Messages; using Uber.HabboHotel.GameClients; using Uber.HabboHotel.Pathfinding; using Uber.HabboHotel.Rooms; namespace Uber.HabboHotel.Items.Interactors { class InteractorTeleport : FurniInteractor { public override void OnPlace(GameClient Session, RoomItem Item) { Item.ExtraData = "0"; if (Item.InteractingUser != 0) { RoomUser User = Item.GetRoom().GetRoomUserByHabbo(Item.InteractingUser); if (User != null) { User.ClearMovement(true); User.AllowOverride = false; User.CanWalk = true; } Item.InteractingUser = 0; } if (Item.InteractingUser2 != 0) { RoomUser User = Item.GetRoom().GetRoomUserByHabbo(Item.InteractingUser2); if (User != null) { User.ClearMovement(true); User.AllowOverride = false; User.CanWalk = true; } Item.InteractingUser2 = 0; } Item.GetRoom().RegenerateUserMatrix(); } public override void OnRemove(GameClient Session, RoomItem Item) { Item.ExtraData = "0"; if (Item.InteractingUser != 0) { RoomUser User = Item.GetRoom().GetRoomUserByHabbo(Item.InteractingUser); if (User != null) { User.UnlockWalking(); } Item.InteractingUser = 0; } if (Item.InteractingUser2 != 0) { RoomUser User = Item.GetRoom().GetRoomUserByHabbo(Item.InteractingUser2); if (User != null) { User.UnlockWalking(); } Item.InteractingUser2 = 0; } Item.GetRoom().RegenerateUserMatrix(); } public override void OnTrigger(GameClient Session, RoomItem Item, int Request, bool UserHasRights) { // Is this user valid? RoomUser User = Item.GetRoom().GetRoomUserByHabbo(Session.GetHabbo().Id); if (User == null) { return; } Item.GetRoom().Matrix[Item.X, Item.Y] = MatrixState.WALKABLE; // Alright. But is this user in the right position? if (User.Coordinate == Item.Coordinate || User.Coordinate == Item.SquareInFront) { // Fine. But is this tele even free? if (Item.InteractingUser != 0) { return; } User.TeleDelay = -1; Item.InteractingUser = User.GetClient().GetHabbo().Id; } else if (User.CanWalk) { User.MoveTo(Item.SquareInFront); } } } }