Ejemplo n.º 1
0
        public void OnRemove(GameClient Session, Item Item)
        {
            Item.ExtraData = "0";

            if (Item.InteractingUser != 0)
            {
                RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser);

                if (User != null)
                {
                    User.UnlockWalking();
                }

                Item.InteractingUser = 0;
            }

            if (Item.InteractingUser2 != 0)
            {
                RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser2);

                if (User != null)
                {
                    User.UnlockWalking();
                }

                Item.InteractingUser2 = 0;
            }
        }
Ejemplo n.º 2
0
 public override void OnRemove(GameClient Session, RoomItem RoomItem_0)
 {
     RoomItem_0.ExtraData = "0";
     if (RoomItem_0.InteractingUser != 0u)
     {
         RoomUser @class = RoomItem_0.GetRoom().GetRoomUserByHabbo(RoomItem_0.InteractingUser);
         if (@class != null)
         {
             @class.ClearMovement(true);
             @class.UnlockWalking();
         }
         RoomItem_0.InteractingUser = 0u;
     }
 }
Ejemplo n.º 3
0
 public override void OnPlace(GameClient Session, RoomItem Item)
 {
     Item.ExtraData = "0";
     if (Item.InteractingUser != 0u)
     {
         RoomUser @class = Item.GetRoom().GetRoomUserByHabbo(Item.InteractingUser);
         if (@class != null)
         {
             @class.ClearMovement(true);
             @class.UnlockWalking();
         }
         Item.InteractingUser = 0u;
     }
 }
Ejemplo n.º 4
0
 public void OnPlace(GameClient Session, RoomItem Item)
 {
     Item.ExtraData = "0";
     if (Item.InteractingUser != 0u)
     {
         RoomUser roomUserByHabbo = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser);
         if (roomUserByHabbo != null)
         {
             roomUserByHabbo.ClearMovement(true);
             roomUserByHabbo.UnlockWalking();
         }
         Item.InteractingUser = 0u;
     }
 }
Ejemplo n.º 5
0
        public override void OnPlace(GameClient Session, Item Item)
        {
            Item.ExtraData = "0";
            if (Item.InteractingUser == 0)
            {
                return;
            }
            RoomUser roomUserByHabbo = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabboId(Item.InteractingUser);

            if (roomUserByHabbo != null)
            {
                roomUserByHabbo.UnlockWalking();
            }
            Item.InteractingUser = 0;
        }
Ejemplo n.º 6
0
        public void OnRemove(GameClient Session, RoomItem item)
        {
            item.ExtraData = "0";

            if (item.InteractingUser != 0)
            {
                RoomUser User = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser);

                if (User != null)
                {
                    User.ClearMovement();
                    User.UnlockWalking();
                }

                item.InteractingUser = 0;
            }
        }
Ejemplo n.º 7
0
        public void OnPlace(GameClient Session, Item Item)
        {
            Item.ExtraData = "0";

            if (Item.InteractingUser != 0)
            {
                RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser);

                if (User != null)
                {
                    User.ClearMovement(true);
                    User.UnlockWalking();
                }

                Item.InteractingUser = 0;
            }
        }
Ejemplo n.º 8
0
        public override void OnPlace(GameClient session, RoomItem item)
        {
            item.ExtraData = "0";

            if (item.InteractingUser != 0)
            {
                RoomUser user = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser);

                if (user != null)
                {
                    user.ClearMovement();
                    user.UnlockWalking();
                }

                item.InteractingUser = 0;
            }
        }
Ejemplo n.º 9
0
 public void OnRemove(GameClient Session, RoomItem Item)
 {
     checked
     {
         Item.GetRoom().GetRoomItemHandler().HopperCount--;
         using (IQueryAdapter queryreactor = CyberEnvironment.GetDatabaseManager().getQueryReactor())
         {
             queryreactor.setQuery("DELETE FROM items_hopper WHERE item_id=@hid OR room_id=" + Item.GetRoom().RoomId + " LIMIT 1");
             queryreactor.addParameter("hid", Item.Id);
             queryreactor.runQuery();
         }
         if (Item.InteractingUser != 0u)
         {
             RoomUser roomUserByHabbo = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser);
             if (roomUserByHabbo != null)
             {
                 roomUserByHabbo.UnlockWalking();
             }
             Item.InteractingUser = 0u;
         }
     }
 }
Ejemplo n.º 10
0
 public void OnRemove(GameClient session, RoomItem item)
 {
     {
         item.GetRoom().GetRoomItemHandler().HopperCount--;
         using (IQueryAdapter queryReactor = Plus.GetDatabaseManager().GetQueryReactor())
         {
             queryReactor.SetQuery(string.Format("DELETE FROM items_hopper WHERE item_id=@hid OR room_id={0} LIMIT 1", item.GetRoom().RoomId));
             queryReactor.AddParameter("hid", item.Id);
             queryReactor.RunQuery();
         }
         if (item.InteractingUser == 0u)
         {
             return;
         }
         RoomUser roomUserByHabbo = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser);
         if (roomUserByHabbo != null)
         {
             roomUserByHabbo.UnlockWalking();
         }
         item.InteractingUser = 0u;
     }
 }
Ejemplo n.º 11
0
        public override void OnRemove(GameClient session, RoomItem item)
        {
            item.ExtraData = "0";

            if (item.InteractingUser != 0)
            {
                RoomUser user = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser);

                user?.UnlockWalking();

                item.InteractingUser = 0;
            }

            if (item.InteractingUser2 != 0)
            {
                RoomUser user = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser2);

                user?.UnlockWalking();

                item.InteractingUser2 = 0;
            }
        }
Ejemplo n.º 12
0
 public void OnRemove(GameClient Session, RoomItem Item)
 {
     Item.ExtraData = "0";
     if (Item.InteractingUser != 0u)
     {
         RoomUser roomUserByHabbo = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser);
         if (roomUserByHabbo != null)
         {
             roomUserByHabbo.UnlockWalking();
         }
         Item.InteractingUser = 0u;
     }
     if (Item.InteractingUser2 != 0u)
     {
         RoomUser roomUserByHabbo2 = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser2);
         if (roomUserByHabbo2 != null)
         {
             roomUserByHabbo2.UnlockWalking();
         }
         Item.InteractingUser2 = 0u;
     }
 }
Ejemplo n.º 13
0
        public override void OnRemove(GameClient session, RoomItem item)
        {
            item.GetRoom().GetRoomItemHandler().HopperCount--;

            using (IQueryAdapter queryReactor = Yupi.GetDatabaseManager().GetQueryReactor())
            {
                queryReactor.SetQuery(
                    $"DELETE FROM items_hopper WHERE item_id=@hid OR room_id={item.GetRoom().RoomId} LIMIT 1");
                queryReactor.AddParameter("hid", item.Id);
                queryReactor.RunQuery();
            }

            if (item.InteractingUser == 0u)
            {
                return;
            }

            RoomUser roomUserByHabbo = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser);

            roomUserByHabbo?.UnlockWalking();

            item.InteractingUser = 0u;
        }
Ejemplo n.º 14
0
        public void OnRemove(GameClient Session, Item Item)
        {
            Item.GetRoom().GetRoomItemHandler().HopperCount--;
            using (IQueryAdapter dbClient = CloudServer.GetDatabaseManager().GetQueryReactor())
            {
                dbClient.SetQuery("DELETE FROM items_hopper WHERE item_id=@hid OR room_id=" + Item.GetRoom().RoomId +
                                  " LIMIT 1");
                dbClient.AddParameter("hid", Item.Id);
                dbClient.RunQuery();
            }

            if (Item.InteractingUser != 0)
            {
                RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Item.InteractingUser);

                if (User != null)
                {
                    User.UnlockWalking();
                }

                Item.InteractingUser = 0;
            }
        }
Ejemplo n.º 15
0
        public void OnRemove(GameClient session, RoomItem item)
        {
            item.ExtraData = "0";
            if (item.InteractingUser != 0u)
            {
                RoomUser roomUserByHabbo = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser);
                if (roomUserByHabbo != null)
                {
                    roomUserByHabbo.UnlockWalking();
                }
                item.InteractingUser = 0u;
            }
            if (item.InteractingUser2 == 0u)
            {
                return;
            }
            RoomUser roomUserByHabbo2 = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(item.InteractingUser2);

            if (roomUserByHabbo2 != null)
            {
                roomUserByHabbo2.UnlockWalking();
            }
            item.InteractingUser2 = 0u;
        }
Ejemplo n.º 16
0
        internal void ProcessUpdates()
        {
            this.UpdateCounter--;
            if (this.UpdateCounter <= 0)
            {
                this.UpdateNeeded  = false;
                this.UpdateCounter = 0;
                if (this.TimerRunning && this.int_0 > 0)
                {
                    this.int_0            += 500;
                    this.GetRoom().int_13 += 500;
                    this.UpdateNeeded      = true;
                    if (this.int_0 > SongManager.GetSong(Convert.ToInt32(this.ExtraData)).Length)
                    {
                        ServerMessage Message = new ServerMessage(327);
                        Message.AppendInt32(7);
                        Message.AppendInt32(6);
                        Message.AppendInt32(7);
                        Message.AppendInt32(0);
                        Message.AppendInt32(0);
                        this.GetRoom().SendMessage(Message, null);
                        this.int_0            = 1;
                        this.GetRoom().int_13 = 0;
                    }
                }
                else
                {
                    string text = this.GetBaseItem().InteractionType.ToLower();
                    switch (text)
                    {
                    case "onewaygate":
                    {
                        RoomUser roomUserByHabbo = null;
                        if (this.InteractingUser > 0)
                        {
                            roomUserByHabbo = this.GetRoom().GetRoomUserByHabbo(this.InteractingUser);
                        }
                        if (roomUserByHabbo != null && roomUserByHabbo.X == this.mX && roomUserByHabbo.Y == this.mY && this.Extra1 != "tried")
                        {
                            this.ExtraData = "1";
                            this.Extra1    = "tried";
                            roomUserByHabbo.UnlockWalking();
                            roomUserByHabbo.MoveTo(this.SquareBehind);
                            this.ReqUpdate(0);
                            this.UpdateState(false, true);
                        }
                        else
                        {
                            if ((roomUserByHabbo != null && (roomUserByHabbo.Coordinate != this.SquareBehind)) || this.Extra1 == "tried")
                            {
                                this.Extra1          = "";
                                this.ExtraData       = "0";
                                this.InteractingUser = 0;
                                this.UpdateState(false, true);
                                this.GetRoom().GenerateMaps();
                            }
                            else
                            {
                                if (this.ExtraData == "1")
                                {
                                    this.ExtraData = "0";
                                    this.UpdateState(false, true);
                                }
                            }
                        }
                        if (roomUserByHabbo == null)
                        {
                            this.InteractingUser = 0u;
                        }
                        break;
                    }

                    case "teleport":
                    {
                        bool flag  = false;
                        bool flag2 = false;
                        if (this.InteractingUser > 0u)
                        {
                            RoomUser roomUserByHabbo = this.GetRoom().GetRoomUserByHabbo(this.InteractingUser);
                            if (roomUserByHabbo != null)
                            {
                                if (!(roomUserByHabbo.Coordinate == this.Coordinate))
                                {
                                    roomUserByHabbo.AllowOverride = false;
                                    if (roomUserByHabbo.TeleDelay == -1)
                                    {
                                        roomUserByHabbo.TeleDelay = 1;
                                    }
                                    if (TeleHandler.IsTeleLinked(this.Id))
                                    {
                                        flag2 = true;
                                        if (roomUserByHabbo.TeleDelay == 0)
                                        {
                                            uint num2 = TeleHandler.GetLinkedTele(this.Id);
                                            uint num3 = TeleHandler.GetTeleRoomId(num2);
                                            if (num3 == this.RoomId)
                                            {
                                                RoomItem class2 = this.GetRoom().GetItem(num2);
                                                if (class2 == null)
                                                {
                                                    roomUserByHabbo.UnlockWalking();
                                                }
                                                else
                                                {
                                                    roomUserByHabbo.SetPos(class2.GetX, class2.GetY, class2.GetZ);
                                                    roomUserByHabbo.SetRot(class2.Rot);
                                                    class2.ExtraData = "2";
                                                    class2.UpdateState(false, true);
                                                    class2.InteractingUser2 = this.InteractingUser;
                                                }
                                            }
                                            else
                                            {
                                                if (!roomUserByHabbo.IsBot)
                                                {
                                                    PhoenixEnvironment.GetGame().GetRoomManager().method_5(new TeleUserData(roomUserByHabbo.GetClient().GetMessageHandler(), roomUserByHabbo.GetClient().GetHabbo(), num3, num2));
                                                }
                                            }
                                            this.InteractingUser = 0u;
                                        }
                                        else
                                        {
                                            roomUserByHabbo.TeleDelay--;
                                        }
                                    }
                                    else
                                    {
                                        roomUserByHabbo.UnlockWalking();
                                        this.InteractingUser = 0u;
                                        roomUserByHabbo.MoveTo(this.SquareInFront);
                                    }
                                }
                                else
                                {
                                    if ((roomUserByHabbo.Coordinate == this.SquareInFront) && roomUserByHabbo.Item == this)
                                    {
                                        roomUserByHabbo.AllowOverride = true;
                                        flag = true;
                                        if (roomUserByHabbo.IsWalking && (roomUserByHabbo.GoalX != this.mX || roomUserByHabbo.GoalY != this.mY))
                                        {
                                            roomUserByHabbo.ClearMovement(true);
                                        }
                                        roomUserByHabbo.CanWalk       = false;
                                        roomUserByHabbo.AllowOverride = true;
                                        roomUserByHabbo.MoveTo(this.Coordinate);
                                    }
                                    else
                                    {
                                        this.InteractingUser = 0u;
                                    }
                                }
                            }
                            else
                            {
                                this.InteractingUser = 0u;
                            }
                        }
                        if (this.InteractingUser2 > 0u)
                        {
                            RoomUser user2 = this.GetRoom().GetRoomUserByHabbo(this.InteractingUser2);
                            if (user2 != null)
                            {
                                flag = true;
                                user2.UnlockWalking();
                                if (user2.Coordinate == this.Coordinate)
                                {
                                    user2.MoveTo(this.SquareInFront);
                                }
                            }
                            this.InteractingUser2 = 0u;
                        }
                        if (flag)
                        {
                            if (this.ExtraData != "1")
                            {
                                this.ExtraData = "1";
                                this.UpdateState(false, true);
                            }
                        }
                        else
                        {
                            if (flag2)
                            {
                                if (this.ExtraData != "2")
                                {
                                    this.ExtraData = "2";
                                    this.UpdateState(false, true);
                                }
                            }
                            else
                            {
                                if (this.ExtraData != "0")
                                {
                                    this.ExtraData = "0";
                                    this.UpdateState(false, true);
                                }
                            }
                        }
                        this.ReqUpdate(1);
                        break;
                    }

                    case "bottle":
                    {
                        int num = PhoenixEnvironment.GetRandomNumber(0, 7);
                        this.ExtraData = num.ToString();
                        this.UpdateState();
                        break;
                    }

                    case "dice":
                        try
                        {
                            RoomUser @class = this.GetRoom().GetRoomUserByHabbo(this.InteractingUser);
                            if (@class.GetClient().GetHabbo().Rigger > 0)
                            {
                                this.ExtraData = @class.GetClient().GetHabbo().Rigger.ToString();
                                @class.GetClient().GetHabbo().Rigger = 0;
                            }
                            else
                            {
                                int num = PhoenixEnvironment.GetRandomNumber(1, 6);
                                this.ExtraData = num.ToString();
                            }
                        }
                        catch
                        {
                            int num = PhoenixEnvironment.GetRandomNumber(1, 6);
                            this.ExtraData = num.ToString();
                        }
                        this.UpdateState();
                        break;

                    case "habbowheel":
                    {
                        int num = PhoenixEnvironment.GetRandomNumber(1, 10);
                        this.ExtraData = num.ToString();
                        this.UpdateState();
                        break;
                    }

                    case "loveshuffler":
                        if (this.ExtraData == "0")
                        {
                            int num = PhoenixEnvironment.GetRandomNumber(1, 4);
                            this.ExtraData = num.ToString();
                            this.ReqUpdate(20);
                        }
                        else
                        {
                            if (this.ExtraData != "-1")
                            {
                                this.ExtraData = "-1";
                            }
                        }
                        this.UpdateState(false, true);
                        break;

                    case "alert":
                        if (this.ExtraData == "1")
                        {
                            this.ExtraData = "0";
                            this.UpdateState(false, true);
                        }
                        break;

                    case "vendingmachine":
                        if (this.ExtraData == "1")
                        {
                            RoomUser @class = this.GetRoom().GetRoomUserByHabbo(this.InteractingUser);
                            if (@class != null)
                            {
                                @class.UnlockWalking();
                                int int_ = this.GetBaseItem().VendingIds[PhoenixEnvironment.GetRandomNumber(0, this.GetBaseItem().VendingIds.Count - 1)];
                                @class.CarryItem(int_);
                            }
                            this.InteractingUser = 0u;
                            this.ExtraData       = "0";
                            this.UpdateState(false, true);
                        }
                        break;

                    case "wf_trg_onsay":
                    case "wf_trg_enterroom":
                    case "wf_trg_furnistate":
                    case "wf_trg_onfurni":
                    case "wf_trg_offfurni":
                    case "wf_trg_gameend":
                    case "wf_trg_gamestart":
                    case "wf_trg_attime":
                    case "wf_trg_atscore":
                    case "wf_act_saymsg":
                    case "wf_act_togglefurni":
                    case "wf_act_givepoints":
                    case "wf_act_moverotate":
                    case "wf_act_matchfurni":
                    case "wf_act_give_phx":
                    case "wf_cnd_trggrer_on_frn":
                    case "wf_cnd_furnis_hv_avtrs":
                    case "wf_cnd_has_furni_on":
                    case "wf_cnd_phx":
                    case "bb_teleport":
                        if (this.ExtraData == "1")
                        {
                            this.ExtraData = "0";
                            this.UpdateState(false, true);
                        }
                        break;

                    case "wf_trg_timer":
                        if (this.ExtraData == "1")
                        {
                            this.ExtraData = "0";
                            this.UpdateState(false, true);
                        }
                        if (this.Extra1.Length > 0)
                        {
                            this.GetRoom().method_15(this);
                            this.ReqUpdate(Convert.ToInt32(Convert.ToDouble(this.Extra1) * 2.0));
                        }
                        break;

                    case "wf_act_moveuser":
                        if (this.dictionary_1.Count > 0 && this.GetRoom().UserList != null)
                        {
                            int        num4      = 0;
                            RoomUser[] RoomUser_ = this.GetRoom().UserList;
                            for (int i = 0; i < RoomUser_.Length; i++)
                            {
                                RoomUser class4 = RoomUser_[i];
                                if (class4 != null)
                                {
                                    if (class4.IsBot)
                                    {
                                        this.dictionary_1.Remove(class4);
                                    }
                                    if (this.dictionary_1.ContainsKey(class4))
                                    {
                                        if (this.dictionary_1[class4] > 0)
                                        {
                                            if (this.dictionary_1[class4] == 10 && !class4.IsBot)
                                            {
                                                class4.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyEffect(4, true);
                                            }
                                            Dictionary <RoomUser, int> dictionary;
                                            RoomUser key;
                                            (dictionary = this.dictionary_1)[key = class4] = dictionary[key] - 1;
                                            num4++;
                                        }
                                        else
                                        {
                                            this.dictionary_1.Remove(class4);
                                            class4.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyEffect(0, true);
                                        }
                                    }
                                }
                            }
                            if (num4 > 0)
                            {
                                this.ReqUpdate(0);
                            }
                            else
                            {
                                this.dictionary_1.Clear();
                            }
                        }
                        break;

                    case "counter":
                        if (this.TimerRunning && this.Extra1 != "1")
                        {
                            this.ExtraData = Convert.ToString(Convert.ToInt32(this.ExtraData) - 1);
                            if (Convert.ToInt32(this.ExtraData) <= 0)
                            {
                                this.ExtraData    = "0";
                                this.TimerRunning = false;
                                this.GetRoom().method_89(0, this, true);
                            }
                            this.UpdateState(true, true);
                            this.GetRoom().method_16((double)Convert.ToInt32(this.ExtraData));
                            this.Extra1 = "1";
                            this.ReqUpdate(1);
                        }
                        else
                        {
                            if (this.TimerRunning)
                            {
                                this.GetRoom().method_16((double)Convert.ToInt32(this.ExtraData) - 0.5);
                                this.Extra1 = "0";
                                this.ReqUpdate(1);
                            }
                        }
                        break;
                    }
                }
            }
        }
Ejemplo n.º 17
0
        public void ProcessUpdates()
        {
            this.UpdateCounter--;
            if (this.UpdateCounter > 0)
            {
                return;
            }

            this.UpdateCounter = 0;

            switch (this.GetBaseItem().InteractionType)
            {
            case InteractionType.football:
                if (this.interactionCountHelper <= 0 || this.interactionCountHelper > 6)
                {
                    this.ExtraData = "0";
                    this.UpdateState(false, true);

                    this.interactionCountHelper = 0;
                    break;
                }

                int Length = 1;
                int OldX   = this.GetX;
                int OldY   = this.GetY;

                int NewX = this.GetX;
                int NewY = this.GetY;

                Point NewPoint = this.GetMoveCoord(OldX, OldY, 1);

                if (this.interactionCountHelper > 3)
                {
                    Length = 3;

                    this.ExtraData = "6";
                    this.UpdateState(false, true);
                }
                else if (this.interactionCountHelper > 1 && this.interactionCountHelper < 4)
                {
                    Length = 2;

                    this.ExtraData = "4";
                    this.UpdateState(false, true);
                }
                else
                {
                    Length = 1;

                    this.ExtraData = "2";
                    this.UpdateState(false, true);
                }


                if (Length != 1 && !this.GetRoom().GetGameMap().CanStackItem(NewPoint.X, NewPoint.Y, true))
                {
                    this.GetNewDir(NewX, NewY);
                    this.interactionCountHelper--;
                }

                for (int i = 1; i <= Length; i++)
                {
                    NewPoint = this.GetMoveCoord(OldX, OldY, i);


                    if ((this.interactionCountHelper <= 3 && this.GetRoom().GetGameMap().SquareHasUsers(NewPoint.X, NewPoint.Y)))
                    {
                        this.interactionCountHelper = 0;
                        break;
                    }

                    if (this.GetRoom().GetGameMap().CanStackItem(NewPoint.X, NewPoint.Y, true))
                    {
                        NewX = NewPoint.X;
                        NewY = NewPoint.Y;
                        this.GetRoom().GetSoccer().HandleFootballGameItems(new Point(NewPoint.X, NewPoint.Y));
                    }
                    else
                    {
                        this.GetNewDir(NewX, NewY);
                        this.interactionCountHelper--;
                        break;
                    }

                    if (!this.GetRoom().GetGameMap().SquareTakingOpen(NewPoint.X, NewPoint.Y))
                    {
                        List <RoomUser> Users = this.GetRoom().GetGameMap().GetNearUsers(new Point(NewPoint.X, NewPoint.Y), 1);
                        if (Users != null)
                        {
                            bool BreakMe = false;
                            foreach (RoomUser User in Users)
                            {
                                if (User == null || this.InteractingUser == User.VirtualId)
                                {
                                    continue;
                                }

                                if (User.SetX != NewPoint.X || User.SetY != NewPoint.Y)
                                {
                                    continue;
                                }

                                if (User.SetStep && User.SetX == User.GoalX && User.SetY == User.GoalY)
                                {
                                    this.interactionCountHelper = 6;
                                    this.InteractingUser        = User.VirtualId;
                                    this.MovementDir            = MovementManagement.GetMovementByDirection(User.RotBody);
                                    BreakMe = true;
                                    break;
                                }
                            }

                            if (BreakMe)
                            {
                                break;
                            }
                        }
                    }

                    this.interactionCountHelper--;
                }

                double Z = this.GetRoom().GetGameMap().SqAbsoluteHeight(NewX, NewY);
                this.GetRoom().GetRoomItemHandler().PositionReset(this, NewX, NewY, Z);

                this.UpdateCounter = 1;
                break;

            case InteractionType.ChronoTimer:
                if (string.IsNullOrEmpty(this.ExtraData))
                {
                    break;
                }
                int NumChrono = 0;
                if (!int.TryParse(this.ExtraData, out NumChrono))
                {
                    break;
                }
                if (!this.ChronoStarter)
                {
                    break;
                }

                if (NumChrono > 0)
                {
                    if (this.interactionCountHelper == 1)
                    {
                        NumChrono--;

                        /*if (!this.GetRoom().GetBanzai().isBanzaiActive || !this.GetRoom().GetFreeze().isGameActive)
                         * {
                         *  NumChrono = 0;
                         * }*/
                        this.interactionCountHelper = 0;
                        this.ExtraData = NumChrono.ToString();
                        this.UpdateState();
                    }
                    else
                    {
                        this.interactionCountHelper++;
                    }

                    this.UpdateCounter = 1;
                    break;
                }
                else
                {
                    this.ChronoStarter = false;
                    this.GetRoom().GetGameManager().StopGame();
                    break;
                }

            case InteractionType.banzaitele:
                if (this.InteractingUser == 0)
                {
                    this.ExtraData = string.Empty;
                    this.UpdateState();
                    break;
                }

                this.ExtraData = "1";
                this.UpdateState();

                this.UpdateCounter = 1;

                RoomUser roomUserByHabbo = this.GetRoom().GetRoomUserManager().GetRoomUserByHabboId(this.InteractingUser);
                if (roomUserByHabbo != null)
                {
                    this.GetRoom().GetGameMap().TeleportToItem(roomUserByHabbo, this);
                    roomUserByHabbo.SetRot(ButterflyEnvironment.GetRandomNumber(0, 7), false);
                    roomUserByHabbo.CanWalk = true;
                }
                this.InteractingUser = 0;

                break;

            case InteractionType.freezetile:
                if (this.InteractingUser <= 0)
                {
                    break;
                }
                RoomUser roomUserByHabbo3 = this.GetRoom().GetRoomUserManager().GetRoomUserByHabboId(this.InteractingUser);
                if (roomUserByHabbo3 != null)
                {
                    roomUserByHabbo3.CountFreezeBall = 1;
                }
                this.ExtraData = "11000";
                this.UpdateState(false, true);
                this.GetRoom().GetFreeze().onFreezeTiles(this, this.freezePowerUp, this.InteractingUser);
                this.InteractingUser        = 0;
                this.interactionCountHelper = (byte)0;
                break;

            case InteractionType.scoreboard:
                if (string.IsNullOrEmpty(this.ExtraData))
                {
                    break;
                }
                int num4 = 0;
                try
                {
                    num4 = int.Parse(this.ExtraData);
                }
                catch
                {
                }
                if (num4 > 0)
                {
                    if (this.interactionCountHelper == 1)
                    {
                        int num2 = num4 - 1;
                        this.interactionCountHelper = (byte)0;
                        this.ExtraData = num2.ToString();
                        this.UpdateState();
                    }
                    else
                    {
                        this.interactionCountHelper++;
                    }
                    this.UpdateCounter = 1;
                    break;
                }
                else
                {
                    this.UpdateCounter = 0;
                    break;
                }

            case InteractionType.vendingmachine:
                if (!(this.ExtraData == "1"))
                {
                    break;
                }
                RoomUser roomUserByHabbo1 = this.GetRoom().GetRoomUserManager().GetRoomUserByHabboId(this.InteractingUser);
                if (roomUserByHabbo1 != null)
                {
                    int num2 = this.GetBaseItem().VendingIds[ButterflyEnvironment.GetRandomNumber(0, this.GetBaseItem().VendingIds.Count - 1)];
                    roomUserByHabbo1.CarryItem(num2);
                }
                this.InteractingUser = 0;
                this.ExtraData       = "0";
                this.UpdateState(false, true);
                break;

            case InteractionType.vendingenablemachine:
                if (!(this.ExtraData == "1"))
                {
                    break;
                }
                RoomUser roomUserByHabboEnable = this.GetRoom().GetRoomUserManager().GetRoomUserByHabboId(this.InteractingUser);
                if (roomUserByHabboEnable != null)
                {
                    int num2 = this.GetBaseItem().VendingIds[ButterflyEnvironment.GetRandomNumber(0, this.GetBaseItem().VendingIds.Count - 1)];
                    roomUserByHabboEnable.ApplyEffect(num2);
                }
                this.InteractingUser = 0;
                this.ExtraData       = "0";
                this.UpdateState(false, true);
                break;

            case InteractionType.alert:
                if (!(this.ExtraData == "1"))
                {
                    break;
                }
                this.ExtraData = "0";
                this.UpdateState(false, true);
                break;

            case InteractionType.onewaygate:
                RoomUser roomUser3 = (RoomUser)null;
                if (this.InteractingUser > 0)
                {
                    roomUser3 = this.GetRoom().GetRoomUserManager().GetRoomUserByHabboId(this.InteractingUser);
                }

                if (roomUser3 == null)
                {
                    this.InteractingUser = 0;
                    break;
                }

                if (roomUser3.Coordinate == this.SquareBehind || !Gamemap.TilesTouching(this.GetX, this.GetY, roomUser3.X, roomUser3.Y))
                {
                    roomUser3.UnlockWalking();
                    this.ExtraData       = "0";
                    this.InteractingUser = 0;
                    this.UpdateState(false, true);
                }
                else
                {
                    roomUser3.CanWalk       = false;
                    roomUser3.AllowOverride = true;
                    roomUser3.MoveTo(this.SquareBehind);

                    this.UpdateCounter = 1;
                }

                break;

            case InteractionType.loveshuffler:
                if (this.ExtraData == "0")
                {
                    this.ExtraData = ButterflyEnvironment.GetRandomNumber(1, 4).ToString();
                    this.ReqUpdate(20);
                }
                else if (this.ExtraData != "-1")
                {
                    this.ExtraData = "-1";
                }
                this.UpdateState(false, true);
                break;

            case InteractionType.habbowheel:
                this.ExtraData = ButterflyEnvironment.GetRandomNumber(1, 10).ToString();
                this.UpdateState();
                break;

            case InteractionType.dice:
                this.ExtraData = ButterflyEnvironment.GetRandomNumber(1, 6).ToString();
                this.UpdateState();
                break;

            case InteractionType.bottle:
                this.ExtraData = ButterflyEnvironment.GetRandomNumber(0, 7).ToString();
                this.UpdateState();
                break;

            case InteractionType.TELEPORT:
            case InteractionType.ARROW:
                bool keepDoorOpen   = false;
                bool showTeleEffect = false;
                if (this.InteractingUser > 0)
                {
                    RoomUser roomUserByHabbo2 = this.GetRoom().GetRoomUserManager().GetRoomUserByHabboId(this.InteractingUser);
                    if (roomUserByHabbo2 != null)
                    {
                        if (roomUserByHabbo2.Coordinate == this.Coordinate)
                        {
                            roomUserByHabbo2.AllowOverride = false;
                            if (ItemTeleporterFinder.IsTeleLinked(this.Id, this.mRoom))
                            {
                                showTeleEffect = true;
                                int linkedTele = ItemTeleporterFinder.GetLinkedTele(this.Id);
                                int teleRoomId = ItemTeleporterFinder.GetTeleRoomId(linkedTele, this.mRoom);
                                if (teleRoomId == this.RoomId)
                                {
                                    Item roomItem = this.GetRoom().GetRoomItemHandler().GetItem(linkedTele);
                                    if (roomItem == null)
                                    {
                                        roomUserByHabbo2.UnlockWalking();
                                    }
                                    else
                                    {
                                        roomUserByHabbo2.SetRot(roomItem.Rotation, false);
                                        roomItem.GetRoom().GetGameMap().TeleportToItem(roomUserByHabbo2, roomItem);
                                        roomItem.ExtraData = "2";
                                        roomItem.UpdateState(false, true);
                                        roomItem.InteractingUser2 = this.InteractingUser;
                                        roomItem.ReqUpdate(2);
                                    }
                                }
                                else if (!roomUserByHabbo2.IsBot && roomUserByHabbo2 != null && (roomUserByHabbo2.GetClient() != null && roomUserByHabbo2.GetClient().GetHabbo() != null))
                                {
                                    roomUserByHabbo2.GetClient().GetHabbo().IsTeleporting     = true;
                                    roomUserByHabbo2.GetClient().GetHabbo().TeleportingRoomID = teleRoomId;
                                    roomUserByHabbo2.GetClient().GetHabbo().TeleporterId      = linkedTele;
                                    roomUserByHabbo2.GetClient().GetHabbo().PrepareRoom(teleRoomId, "");
                                }
                                this.InteractingUser = 0;
                            }
                            else
                            {
                                roomUserByHabbo2.UnlockWalking();
                                this.InteractingUser = 0;
                            }
                        }
                        else if (roomUserByHabbo2.Coordinate == this.SquareInFront)
                        {
                            roomUserByHabbo2.AllowOverride = true;
                            keepDoorOpen = true;

                            roomUserByHabbo2.CanWalk       = false;
                            roomUserByHabbo2.AllowOverride = true;
                            roomUserByHabbo2.MoveTo(this.Coordinate.X, this.Coordinate.Y, true);
                        }
                        else
                        {
                            this.InteractingUser = 0;
                        }
                    }
                    else
                    {
                        this.InteractingUser = 0;
                    }

                    this.UpdateCounter = 1;
                }
                if (this.InteractingUser2 > 0)
                {
                    RoomUser roomUserByHabbo2 = this.GetRoom().GetRoomUserManager().GetRoomUserByHabboId(this.InteractingUser2);
                    if (roomUserByHabbo2 != null)
                    {
                        keepDoorOpen = true;
                        roomUserByHabbo2.UnlockWalking();
                        roomUserByHabbo2.MoveTo(this.SquareInFront);
                    }
                    this.UpdateCounter    = 1;
                    this.InteractingUser2 = 0;
                }
                if (keepDoorOpen)
                {
                    if (this.ExtraData != "1")
                    {
                        this.ExtraData = "1";
                        this.UpdateState(false, true);
                    }
                }
                else if (showTeleEffect)
                {
                    if (this.ExtraData != "2")
                    {
                        this.ExtraData = "2";
                        this.UpdateState(false, true);
                    }
                }
                else if (this.ExtraData != "0")
                {
                    this.ExtraData = "0";
                    this.UpdateState(false, true);
                }

                break;
            }
        }
Ejemplo n.º 18
0
        internal void ProcessUpdates()
        {
            this.UpdateCounter--;

            if (this.UpdateCounter <= 0 || IsTrans)
            {
                this.UpdateNeeded  = false;
                this.UpdateCounter = 0;

                RoomUser User  = null;
                RoomUser User2 = null;

                switch (GetBaseItem().InteractionType)
                {
                case InteractionType.gift:
                    // do nothing
                    break;

                case InteractionType.onewaygate:

                    User = null;

                    if (InteractingUser > 0)
                    {
                        User = GetRoom().GetRoomUserManager().GetRoomUserByHabbo(InteractingUser);
                        //GetRoom().FreeSqareForUsers(mX, mY);
                    }

                    if (User != null && User.Coordinate == SquareBehind)
                    {
                        User.UnlockWalking();

                        //data =  new StringData("0");
                        InteractingUser = 0;

                        ServerMessage update = new ServerMessage(Outgoing.OneWayDoorStatus);
                        update.AppendUInt(Id);     // id
                        update.AppendInt32(0);     // status
                        mRoom.SendMessage(update);
                    }
                    else if (data.ToString() == "1")
                    {
                        //data =  new StringData("0");

                        ServerMessage update = new ServerMessage(Outgoing.OneWayDoorStatus);
                        update.AppendUInt(Id);     // id
                        update.AppendInt32(0);     // status
                        mRoom.SendMessage(update);
                    }

                    if (User == null)
                    {
                        InteractingUser = 0;
                    }

                    break;

                case InteractionType.teleport:
                    User  = null;
                    User2 = null;

                    bool keepDoorOpen   = false;
                    bool showTeleEffect = false;

                    // Do we have a primary user that wants to go somewhere?
                    if (InteractingUser > 0)
                    {
                        User = GetRoom().GetRoomUserManager().GetRoomUserByHabbo(InteractingUser);

                        // Is this user okay?
                        if (User != null)
                        {
                            // Is he in the tele?
                            if (User.Coordinate == Coordinate)
                            {
                                //Remove the user from the square
                                User.AllowOverride = false;

                                if (TeleHandler.IsTeleLinked(Id, mRoom))
                                {
                                    showTeleEffect = true;

                                    if (true)
                                    {
                                        // Woop! No more delay.
                                        uint TeleId = TeleHandler.GetLinkedTele(Id, mRoom);
                                        uint RoomId = TeleHandler.GetTeleRoomId(TeleId, mRoom);

                                        // Do we need to tele to the same room or gtf to another?
                                        if (RoomId == this.RoomId)
                                        {
                                            RoomItem Item = GetRoom().GetRoomItemHandler().GetItem(TeleId);

                                            if (Item == null)
                                            {
                                                User.UnlockWalking();
                                            }
                                            else
                                            {
                                                // Set pos
                                                User.SetPos(Item.GetX, Item.GetY, Item.GetZ);
                                                User.SetRot(Item.Rot, false);

                                                // Force tele effect update (dirty)
                                                Item.data = new StringData("2");
                                                Item.UpdateState(false, true);

                                                // Set secondary interacting user
                                                Item.InteractingUser2 = InteractingUser;
                                            }
                                        }
                                        else
                                        {
                                            // Let's run the teleport delegate to take futher care of this.. WHY DARIO?!
                                            if (!User.IsBot && User != null && User.GetClient() != null && User.GetClient().GetHabbo() != null && User.GetClient().GetMessageHandler() != null)
                                            {
                                                User.GetClient().GetHabbo().IsTeleporting     = true;
                                                User.GetClient().GetHabbo().TeleportingRoomID = RoomId;
                                                User.GetClient().GetHabbo().TeleporterId      = TeleId;
                                                User.GetClient().GetMessageHandler().ForwardToRoom((int)RoomId);
                                            }
                                            else
                                            {
                                            }
                                            //FirewindEnvironment.GetGame().GetRoomManager().AddTeleAction(new TeleUserData(User.GetClient().GetMessageHandler(), User.GetClient().GetHabbo(), RoomId, TeleId));
                                        }

                                        // We're done with this tele. We have another one to bother.
                                        InteractingUser = 0;
                                    }
                                    else
                                    {
                                        // We're linked, but there's a delay, so decrease the delay and wait it out.
                                        //User.TeleDelay--;
                                    }
                                }
                                else
                                {
                                    // This tele is not linked, so let's gtfo.
                                    User.UnlockWalking();
                                    InteractingUser = 0;
                                }
                            }
                            // Is he in front of the tele?
                            else if (User.Coordinate == SquareInFront)
                            {
                                User.AllowOverride = true;
                                // Open the door
                                keepDoorOpen = true;

                                // Lock his walking. We're taking control over him. Allow overriding so he can get in the tele.
                                if (User.IsWalking && (User.GoalX != mX || User.GoalY != mY))
                                {
                                    User.ClearMovement(true);
                                }

                                User.CanWalk       = false;
                                User.AllowOverride = true;

                                // Move into the tele
                                User.MoveTo(Coordinate.X, Coordinate.Y, true);
                            }
                            // Not even near, do nothing and move on for the next user.
                            else
                            {
                                InteractingUser = 0;
                            }
                        }
                        else
                        {
                            // Invalid user, do nothing and move on for the next user.
                            InteractingUser = 0;
                        }
                    }

                    // Do we have a secondary user that wants to get out of the tele?
                    if (InteractingUser2 > 0)
                    {
                        User2 = GetRoom().GetRoomUserManager().GetRoomUserByHabbo(InteractingUser2);

                        // Is this user okay?
                        if (User2 != null)
                        {
                            // If so, open the door, unlock the user's walking, and try to push him out in the right direction. We're done with him!
                            keepDoorOpen = true;
                            User2.UnlockWalking();
                            User2.MoveTo(SquareInFront);
                        }

                        // This is a one time thing, whether the user's valid or not.
                        InteractingUser2 = 0;
                    }

                    // Set the new item state, by priority
                    if (keepDoorOpen)
                    {
                        if (data.ToString() != "1")
                        {
                            data = new StringData("1");
                            UpdateState(false, true);
                        }
                    }
                    else if (showTeleEffect)
                    {
                        if (data.ToString() != "2")
                        {
                            data = new StringData("2");
                            UpdateState(false, true);
                        }
                    }
                    else
                    {
                        if (data.ToString() != "0")
                        {
                            data = new StringData("0");
                            UpdateState(false, true);
                        }
                    }

                    // We're constantly going!
                    ReqUpdate(1, false);

                    break;

                case InteractionType.bottle:

                    data = new StringData(FirewindEnvironment.GetRandomNumber(0, 7).ToString());
                    UpdateState();
                    break;

                case InteractionType.dice:

                    data = new StringData(FirewindEnvironment.GetRandomNumber(1, 6).ToString());
                    UpdateState();
                    break;

                case InteractionType.habbowheel:

                    data = new StringData(FirewindEnvironment.GetRandomNumber(1, 10).ToString());
                    UpdateState();
                    break;

                case InteractionType.loveshuffler:

                    if (data.GetData() == "0")
                    {
                        data = new StringData(FirewindEnvironment.GetRandomNumber(1, 4).ToString());
                        ReqUpdate(20, false);
                    }
                    else if (data.GetData() != "-1")
                    {
                        data = new StringData("-1");
                    }

                    UpdateState(false, true);
                    break;

                case InteractionType.alert:

                    if (data.GetData() == "1")
                    {
                        data = new StringData("0");
                        UpdateState(false, true);
                    }

                    break;

                case InteractionType.vendingmachine:

                    if (data.GetData() == "1")
                    {
                        User = GetRoom().GetRoomUserManager().GetRoomUserByHabbo(InteractingUser);

                        if (User != null)
                        {
                            User.UnlockWalking();

                            int randomDrink = GetBaseItem().VendingIds[FirewindEnvironment.GetRandomNumber(0, (GetBaseItem().VendingIds.Count - 1))];
                            User.CarryItem(randomDrink);
                        }

                        this.InteractingUser = 0;
                        data = new StringData("0");

                        UpdateState(false, true);
                    }

                    break;


                case InteractionType.scoreboard:
                {
                    if (string.IsNullOrEmpty((string)data.GetData()))
                    {
                        break;
                    }


                    int seconds = 0;

                    try
                    {
                        seconds = int.Parse((string)data.GetData());
                    }
                    catch { }

                    if (seconds > 0)
                    {
                        if (interactionCountHelper == 1)
                        {
                            seconds--;
                            interactionCountHelper = 0;

                            data = new StringData(seconds.ToString());
                            UpdateState();
                        }
                        else
                        {
                            interactionCountHelper++;
                        }

                        UpdateCounter = 1;
                    }
                    else
                    {
                        UpdateCounter = 0;
                    }

                    break;
                }

                case InteractionType.banzaicounter:
                {
                    if (string.IsNullOrEmpty((string)data.GetData()))
                    {
                        break;
                    }

                    int seconds = 0;

                    try
                    {
                        seconds = int.Parse((string)data.GetData());
                    }
                    catch { }

                    if (seconds > 0)
                    {
                        if (interactionCountHelper == 1)
                        {
                            seconds--;
                            interactionCountHelper = 0;

                            if (GetRoom().GetBanzai().isBanzaiActive)
                            {
                                ((StringData)data).Data = seconds.ToString();
                                UpdateState();
                            }
                            else
                            {
                                break;
                            }
                        }
                        else
                        {
                            interactionCountHelper++;
                        }

                        UpdateCounter = 1;
                    }
                    else
                    {
                        UpdateCounter = 0;
                        GetRoom().GetBanzai().BanzaiEnd();
                    }

                    break;
                }

                case InteractionType.banzaitele:
                {
                    ((StringData)data).Data = string.Empty;
                    UpdateState();
                    break;
                }

                /*
                 * 3 = Red 1
                 * 4 = Red 2
                 * 5 = Red 3
                 *
                 * 6 = Green 1
                 * 7 = Green 2
                 * 8 = Green 3
                 *
                 * 9 = Blue 1
                 * 10= Blue 2
                 * 11= Blue 3
                 *
                 * 12= Yellow 1
                 * 13= Yellow 2
                 * 14= Yellow 3
                 */
                case InteractionType.banzaifloor:
                {
                    if (value == 3)
                    {
                        if (interactionCountHelper == 1)
                        {
                            interactionCountHelper = 0;

                            switch (team)
                            {
                            case Team.blue:
                            {
                                ((StringData)data).Data = "11";
                                break;
                            }

                            case Team.green:
                            {
                                ((StringData)data).Data = "8";
                                break;
                            }

                            case Team.red:
                            {
                                ((StringData)data).Data = "5";
                                break;
                            }

                            case Team.yellow:
                            {
                                ((StringData)data).Data = "14";
                                break;
                            }
                            }
                        }
                        else
                        {
                            ((StringData)data).Data = "";
                            interactionCountHelper++;
                        }

                        UpdateState();

                        interactionCount++;

                        if (interactionCount < 16)
                        {
                            UpdateCounter = 1;
                        }
                        else
                        {
                            UpdateCounter = 0;
                        }
                    }
                    break;
                }

                case InteractionType.banzaipuck:
                {
                    if (interactionCount > 4)
                    {
                        interactionCount++;
                        UpdateCounter = 1;
                    }
                    else
                    {
                        interactionCount = 0;
                        UpdateCounter    = 0;
                    }

                    break;
                }

                case InteractionType.freezetile:
                {
                    if (InteractingUser > 0)
                    {
                        ((StringData)data).Data = "11000";
                        UpdateState(false, true);

                        GetRoom().GetFreeze().onFreezeTiles(this, freezePowerUp, InteractingUser);
                        InteractingUser        = 0;
                        interactionCountHelper = 0;
                    }
                    break;
                }

                case InteractionType.freezetimer:
                {
                    if (string.IsNullOrEmpty((string)data.GetData()))
                    {
                        break;
                    }

                    int seconds = 0;

                    try
                    {
                        seconds = int.Parse(data.GetData().ToString());
                    }
                    catch { }

                    if (seconds > 0)
                    {
                        if (interactionCountHelper == 1)
                        {
                            seconds--;
                            interactionCountHelper = 0;
                            if (GetRoom().GetFreeze().GameIsStarted)
                            {
                                ((StringData)data).Data = seconds.ToString();
                                UpdateState();
                            }
                            else
                            {
                                break;
                            }
                        }
                        else
                        {
                            interactionCountHelper++;
                        }

                        UpdateCounter = 1;
                    }
                    else
                    {
                        UpdateNeeded = false;
                        GetRoom().GetFreeze().StopGame();
                    }

                    break;
                }
                }
            }
        }
Ejemplo n.º 19
0
        private bool TeleportUser(RoomUser user)
        {
            if (user == null)
                return false;
            else if (user.GetClient() == null)
                return false;
            else if (user.GetClient().GetHabbo() == null || user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent() == null)
                return false;

            if (disposed || user.GetClient().GetHabbo().IsHopping || user.GetClient().GetHabbo().IsTeleporting)
            {
                user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(0);
                return false;
            }

            if (user.InteractingGate)
            {
                RoomItem itemm = user.GetClient().GetHabbo().CurrentRoom.GetRoomItemHandler().GetItem(user.GateId);
                if (itemm != null)
                    itemm.InteractingUser = 0;
                    user.UnlockWalking();
                    user.InteractingGate = false;
                    user.GateId = 0;
                    user.UpdateNeeded = true;
            }
            user.UnlockWalking();
            if (items.Count > 1)
            {
                int toTest = 0;
                RoomItem item;
                for (int i = 0; i < items.Count; i++)
                {
                    toTest = rnd.Next(0, items.Count);
                    item = items[toTest];
                    if (item == null)
                        continue;
                    if (item.Coordinate != user.Coordinate)
                    {
                        gamemap.TeleportToItem(user, item);
                        user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(0);
                        return true;
                    }
                }
            }
            else if (items.Count == 1)
            {
                gamemap.TeleportToItem(user, items.First());
                user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(0);
                return true;
            }
            else if (items.Count == 0)
            {
                user.GetClient().GetHabbo().GetAvatarEffectsInventoryComponent().ApplyCustomEffect(0);
            }

            return false;
        }