コード例 #1
0
 internal override void OnUserShout(Rooms.RoomUser User, string Message)
 {
     if (ButterflyEnvironment.GetRandomNumber(0, 10) >= 5)
     {
         GetRoomUser().Chat(null, LanguageLocale.GetValue("onusershout"), true); // shout nag
     }
 }
コード例 #2
0
ファイル: MovementManagement.cs プロジェクト: Stownizi/Wibbo
        public static Point HandleMovement(Point newCoordinate, MovementState state)
        {
            Point coordinate = new Point(newCoordinate.X, newCoordinate.Y);

            switch (state)
            {
            case MovementState.random:
                switch (ButterflyEnvironment.GetRandomNumber(1, 4))
                {
                case 1:
                    HandleMovement(ref coordinate, MovementState.up);
                    break;

                case 2:
                    HandleMovement(ref coordinate, MovementState.down);
                    break;

                case 3:
                    HandleMovement(ref coordinate, MovementState.left);
                    break;

                case 4:
                    HandleMovement(ref coordinate, MovementState.right);
                    break;
                }
                break;

            case MovementState.leftright:
                if (ButterflyEnvironment.GetRandomNumber(0, 1) == 1)
                {
                    HandleMovement(ref coordinate, MovementState.left);
                    break;
                }
                else
                {
                    HandleMovement(ref coordinate, MovementState.right);
                    break;
                }

            case MovementState.updown:
                if (ButterflyEnvironment.GetRandomNumber(0, 1) == 1)
                {
                    HandleMovement(ref coordinate, MovementState.up);
                    break;
                }
                else
                {
                    HandleMovement(ref coordinate, MovementState.down);
                    break;
                }

            case MovementState.up:
            case MovementState.right:
            case MovementState.down:
            case MovementState.left:
                HandleMovement(ref coordinate, state);
                break;
            }
            return(coordinate);
        }
コード例 #3
0
        public void onTeleportRoomUserEnter(RoomUser User, Item Item)
        {
            IEnumerable <Item> banzaiTeleports2 = banzaiTeleports.Values.Where(p => p.Id != Item.Id);

            int count = banzaiTeleports2.Count();

            if (count == 0)
            {
                return;
            }

            int  countID     = ButterflyEnvironment.GetRandomNumber(0, count - 1);
            Item BanzaiItem2 = banzaiTeleports2.ElementAt(countID);

            if (BanzaiItem2 == null)
            {
                return;
            }
            if (BanzaiItem2.InteractingUser != 0)
            {
                return;
            }
            User.IsWalking = false;
            User.CanWalk   = false;
            BanzaiItem2.InteractingUser = User.UserId;
            BanzaiItem2.ReqUpdate(2);

            Item.ExtraData = "1";
            Item.UpdateState(false, true);
            Item.ReqUpdate(2);
        }
コード例 #4
0
ファイル: Catalog.cs プロジェクト: nightwolf93/Bfly
        internal Item GeneratePresent()
        {
            int count = gifts.Count;

            int countID     = ButterflyEnvironment.GetRandomNumber(0, count);
            int countAmount = 0;

            if (count == 0)
            {
                return(null);
            }

            foreach (Item item in gifts.Values)
            {
                if (item == null)
                {
                    continue;
                }
                if (countAmount == countID)
                {
                    return(item);
                }

                countAmount++;
            }

            return(null);
        }
コード例 #5
0
ファイル: Catalog.cs プロジェクト: nightwolf93/Bfly
        //internal Pet GeneratePetFromRow(DataRow Row, uint PetID)
        //{
        //    if (Row == null)
        //        return null;

        //    return new Pet(PetID, (uint)Row["user_id"], (uint)Row["room_id"], (string)Row["name"], (uint)Row["type"], (string)Row["race"], (string)Row["color"], (int)Row["expirience"], (int)Row["energy"], (int)Row["nutrition"], (int)Row["respect"], (double)Row["createstamp"], (int)Row["x"], (int)Row["y"], (double)Row["z"]);
        //}

        //internal uint GenerateItemId()
        //{
        //    //uint i = 0;

        //    //using (DatabaseClient dbClient = ButterflyEnvironment.GetDatabase().GetClient())
        //    //{
        //    //    i = mCacheID++;
        //    //    dbClient.runFastQuery("UPDATE item_id_generator SET id_generator = '" + mCacheID + "' LIMIT 1");
        //    //}

        //    return mCacheID++;
        //}

        internal EcotronReward GetRandomEcotronReward()
        {
            uint Level = 1;

            if (ButterflyEnvironment.GetRandomNumber(1, 2000) == 2000)
            {
                Level = 5;
            }
            else if (ButterflyEnvironment.GetRandomNumber(1, 200) == 200)
            {
                Level = 4;
            }
            else if (ButterflyEnvironment.GetRandomNumber(1, 40) == 40)
            {
                Level = 3;
            }
            else if (ButterflyEnvironment.GetRandomNumber(1, 4) == 4)
            {
                Level = 2;
            }

            List <EcotronReward> PossibleRewards = GetEcotronRewardsForLevel(Level);

            if (PossibleRewards != null && PossibleRewards.Count >= 1)
            {
                return(PossibleRewards[ButterflyEnvironment.GetRandomNumber(0, (PossibleRewards.Count - 1))]);
            }
            else
            {
                return(new EcotronReward(0, 1479, 0)); // eco lamp two :D
            }
        }
コード例 #6
0
        private void TeleportUser(RoomUser user)
        {
            if (user == null)
            {
                return;
            }

            if (this.items.Count > 1)
            {
                Item roomItem = this.items[ButterflyEnvironment.GetRandomNumber(0, this.items.Count - 1)];
                if (roomItem == null)
                {
                    return;
                }
                if (roomItem.Coordinate != user.Coordinate)
                {
                    this.gamemap.TeleportToItem(user, roomItem);
                }
            }
            else if (this.items.Count == 1)
            {
                this.gamemap.TeleportToItem(user, Enumerable.First <Item>((IEnumerable <Item>) this.items));
            }
            ResetAnimation(user);
            return;
        }
コード例 #7
0
        public void PetEnergy(bool addEnergy)
        {
            if (this.Energy >= 100)
            {
                return;
            }

            int randomUsage = ButterflyEnvironment.GetRandomNumber(4, 15);

            if (!addEnergy)
            {
                this.Energy -= randomUsage;

                if (this.Energy < 0)
                {
                    this.Energy = 1;
                    randomUsage = 1;
                }
            }
            else
            {
                this.Energy = (this.Energy + randomUsage) % 100;
            }
            if (DBState != DatabaseUpdateState.NeedsInsert)
            {
                DBState = DatabaseUpdateState.NeedsUpdate;
            }
        }
コード例 #8
0
        private void Cac(RoomUser Bot, Room Room, RoomUser User)
        {
            int Dmg = ButterflyEnvironment.GetRandomNumber(this.WeaponCac.DmgMin, this.WeaponCac.DmgMax);

            if (!User.IsBot)
            {
                RolePlayer Rp = User.Roleplayer;
                if (Rp != null)
                {
                    Rp.Hit(User, Dmg, Room);
                }
            }
            else
            {
                if (User.BotData.RoleBot != null)
                {
                    User.BotData.RoleBot.Hit(User, Dmg, Room, Bot.VirtualId, User.BotData.RoleBot.Config.TeamId);
                }
            }

            int WeaponEanble = this.WeaponCac.Enable;

            Bot.ApplyEffect(WeaponEanble, true);
            Bot.TimerResetEffect = this.WeaponCac.FreezeTime + 1;

            if (Bot.FreezeEndCounter <= this.WeaponCac.FreezeTime + 1)
            {
                Bot.Freeze           = true;
                Bot.FreezeEndCounter = this.WeaponCac.FreezeTime + 1;
            }
        }
コード例 #9
0
ファイル: MovementManagement.cs プロジェクト: Stownizi/Wibbo
        public static int HandleRotation(int oldRotation, RotationState state)
        {
            int rotation = oldRotation;

            switch (state)
            {
            case RotationState.clocwise:
                HandleClockwiseRotation(ref rotation);
                return(rotation);

            case RotationState.counterClockwise:
                HandleCounterClockwiseRotation(ref rotation);
                return(rotation);

            case RotationState.random:
                if (ButterflyEnvironment.GetRandomNumber(0, 1) == 1)
                {
                    HandleClockwiseRotation(ref rotation);
                }
                else
                {
                    HandleCounterClockwiseRotation(ref rotation);
                }
                return(rotation);

            default:
                return(rotation);
            }
        }
コード例 #10
0
        private void Pan(RoomUser Bot, Room Room)
        {
            MovementDirection movement = MovementManagement.GetMovementByDirection(Bot.RotBody);

            int WeaponEanble = this.WeaponGun.Enable;

            Bot.ApplyEffect(WeaponEanble, true);
            Bot.TimerResetEffect = this.WeaponGun.FreezeTime + 1;

            if (Bot.FreezeEndCounter <= this.WeaponGun.FreezeTime)
            {
                Bot.Freeze           = true;
                Bot.FreezeEndCounter = this.WeaponGun.FreezeTime;
            }

            for (int i = 0; i < this.WeaponGun.FreezeTime; i++)
            {
                if (this.GunCharger <= 0)
                {
                    return;
                }

                this.GunCharger--;
                int Dmg = ButterflyEnvironment.GetRandomNumber(this.WeaponGun.DmgMin, this.WeaponGun.DmgMax);

                Room.GetProjectileManager().AddProjectile(Bot.VirtualId, Bot.SetX, Bot.SetY, Bot.SetZ, movement, Dmg, this.WeaponGun.Distance, this.Config.TeamId);
            }
        }
コード例 #11
0
        internal override void OnTimerTick()
        {
            if (SpeechTimer <= 0)
            {
                if (GetBotData() != null)
                {
                    if (GetBotData().RandomSpeech.Count > 0)
                    {
                        RandomSpeech Speech = GetBotData().GetRandomSpeech();
                        GetRoomUser().Chat(null, Speech.Message, Speech.Shout);
                    }
                }

                SpeechTimer = ButterflyEnvironment.GetRandomNumber(0, 150);
            }
            else
            {
                SpeechTimer--;
            }

            if (ActionTimer <= 0)
            {
                Point nextCoord = GetRoom().GetGameMap().getRandomWalkableSquare();
                //int randomX = ButterflyEnvironment.GetRandomNumber(0, GetRoom().Model.MapSizeX);
                //int randomY = ButterflyEnvironment.GetRandomNumber(0, GetRoom().Model.MapSizeY);

                GetRoomUser().MoveTo(nextCoord.X, nextCoord.Y);

                ActionTimer = ButterflyEnvironment.GetRandomNumber(0, 30);
            }
            else
            {
                ActionTimer--;
            }
        }
コード例 #12
0
ファイル: Gamemap.cs プロジェクト: nightwolf93/Bfly
        internal Point getRandomWalkableSquare()
        {
            List <Point> walkableSquares = new List <Point>();

            for (int y = 0; y < mGameMap.GetUpperBound(1) - 1; y++)
            {
                for (int x = 0; x < mGameMap.GetUpperBound(0) - 1; x++)
                {
                    if (mStaticModel.DoorX != x && mStaticModel.DoorY != y && mGameMap[x, y] == 1)
                    {
                        walkableSquares.Add(new Point(x, y));
                    }
                }
            }

            int RandomNumber = ButterflyEnvironment.GetRandomNumber(0, walkableSquares.Count);
            int i            = 0;

            foreach (Point coord in walkableSquares)
            {
                if (i == RandomNumber)
                {
                    return(coord);
                }
                i++;
            }

            return(new Point(0, 0));
        }
コード例 #13
0
ファイル: GuideManager.cs プロジェクト: EmuZoneDEV/HBBO-EMU
        public int GetRandomGuide()
        {
            if (this.GuidesCount == 0)
            {
                return(0);
            }

            List <int> List = new List <int>();

            foreach (KeyValuePair <int, bool> entry in this.GuidesOnDuty)
            {
                if (entry.Value)
                {
                    continue;
                }

                List.Add(entry.Key);
            }

            if (List.Count == 0)
            {
                return(0);
            }

            int RandomId = List[ButterflyEnvironment.GetRandomNumber(0, List.Count - 1)];

            this.GuidesOnDuty[RandomId] = true;
            return(RandomId);
        }
コード例 #14
0
        public void Handle(RoomUser user, Item TriggerItem)
        {
            if (this.NameBot == "" || this.items.Count == 0)
            {
                return;
            }
            Room     room = handler.GetRoom();
            RoomUser Bot  = room.GetRoomUserManager().GetBotOrPetByName(this.NameBot);

            if (Bot == null)
            {
                return;
            }

            Item roomItem = this.items[ButterflyEnvironment.GetRandomNumber(0, this.items.Count - 1)];

            if (roomItem == null)
            {
                return;
            }
            if (roomItem.Coordinate != Bot.Coordinate)
            {
                this.gamemap.TeleportToItem(Bot, roomItem);
            }
        }
コード例 #15
0
        public void Execute(GameClient Session, Room Room, RoomUser UserRoom, string[] Params)
        {
            if (Session.GetHabbo() == null)
            {
                return;
            }

            if (Room.RpRoom)
            {
                return;
            }

            int   Nombre = ButterflyEnvironment.GetRandomNumber(1, 3);
            Habbo Habbo  = Session.GetHabbo();

            if (Nombre != 1) //Gagné bravo +1Point
            {
                Habbo.Mazo += 1;

                if (Habbo.MazoHighScore < Habbo.Mazo)
                {
                    //SQL sauvegarde le score
                    UserRoom.SendWhisperChat(string.Format(ButterflyEnvironment.GetLanguageManager().TryGetValue("cmd.mazo.newscore", Session.Langue), Habbo.Mazo));
                    Habbo.MazoHighScore = Habbo.Mazo;

                    using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
                        queryreactor.RunQuery("UPDATE users SET mazoscore = '" + Habbo.MazoHighScore + "' WHERE id = " + Habbo.Id);
                }
                else
                {
                    UserRoom.SendWhisperChat(string.Format(ButterflyEnvironment.GetLanguageManager().TryGetValue("cmd.mazo.win", Session.Langue), Habbo.Mazo));
                }

                UserRoom.ApplyEffect(566, true);
                UserRoom.TimerResetEffect = 4;
            }
            else //Perdu remise à zero
            {
                //Mettre l'enable
                if (Habbo.Mazo > 0)
                {
                    UserRoom.SendWhisperChat(ButterflyEnvironment.GetLanguageManager().TryGetValue("cmd.mazo.bigloose", Session.Langue));
                }
                else
                {
                    UserRoom.SendWhisperChat(ButterflyEnvironment.GetLanguageManager().TryGetValue("cmd.mazo.loose", Session.Langue));
                }

                Habbo.Mazo = 0;

                UserRoom.ApplyEffect(567, true);
                UserRoom.TimerResetEffect = 4;
            }

            using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
                queryreactor.RunQuery("UPDATE users SET mazo = '" + Habbo.Mazo + "' WHERE id = " + Habbo.Id);
        }
コード例 #16
0
ファイル: MovementManagement.cs プロジェクト: Stownizi/Wibbo
        public static Point HandleMovementDir(int X, int Y, MovementDirection state)
        {
            Point newPoint = new Point(X, Y);

            switch (state)
            {
            case MovementDirection.up:
            case MovementDirection.down:
            case MovementDirection.left:
            case MovementDirection.right:
            case MovementDirection.downright:
            case MovementDirection.downleft:
            case MovementDirection.upright:
            case MovementDirection.upleft:
            {
                HandleMovementDir(ref newPoint, state);
                break;
            }

            case MovementDirection.random:
            {
                switch (ButterflyEnvironment.GetRandomNumber(1, 4))
                {
                case 1:
                {
                    HandleMovementDir(ref newPoint, MovementDirection.up);
                    break;
                }

                case 2:
                {
                    HandleMovementDir(ref newPoint, MovementDirection.down);
                    break;
                }

                case 3:
                {
                    HandleMovementDir(ref newPoint, MovementDirection.left);
                    break;
                }

                case 4:
                {
                    HandleMovementDir(ref newPoint, MovementDirection.right);
                    break;
                }
                }
                break;
            }
            }

            return(newPoint);
        }
コード例 #17
0
ファイル: Gamemap.cs プロジェクト: EmuZoneDEV/HBBO-EMU
        public Point getRandomWalkableSquare(int x, int y)
        {
            int rx = ButterflyEnvironment.GetRandomNumber(x - 5, x + 5);
            int ry = ButterflyEnvironment.GetRandomNumber(y - 5, y + 5);

            if (this.Model.DoorX == rx || this.Model.DoorY == ry || !this.CanWalk(rx, ry))
            {
                return(new Point(x, y));
            }

            return(new Point(rx, ry));
        }
コード例 #18
0
        internal override void OnTimerTick()
        {
            if (GetBotData() == null)
            {
                return;
            }
            if (SpeechTimer <= 0)
            {
                if (GetBotData().RandomSpeech.Count > 0)
                {
                    RandomSpeech Speech = GetBotData().GetRandomSpeech();
                    GetRoomUser().Chat(null, Speech.Message, Speech.Shout);
                }

                SpeechTimer = ButterflyEnvironment.GetRandomNumber(10, 300);
            }
            else
            {
                SpeechTimer--;
            }

            if (ActionTimer <= 0)
            {
                switch (GetBotData().WalkingMode.ToLower())
                {
                default:
                case "stand":

                    // (8) Why is my life so boring?

                    break;

                case "freeroam":
                    Point nextCoord = GetRoom().GetGameMap().getRandomWalkableSquare();
                    GetRoomUser().MoveTo(nextCoord.X, nextCoord.Y);

                    break;

                case "specified_range":
                    Point nextCoord2 = GetRoom().GetGameMap().getRandomWalkableSquare();
                    GetRoomUser().MoveTo(nextCoord2.X, nextCoord2.Y);

                    break;
                }

                ActionTimer = ButterflyEnvironment.GetRandomNumber(1, 30);
            }
            else
            {
                ActionTimer--;
            }
        }
コード例 #19
0
ファイル: GenericBot.cs プロジェクト: EmuZoneDEV/HBBO-EMU
        public override void OnTimerTick()
        {
            if (this.GetBotData() == null)
            {
                return;
            }

            if (this.SpeechTimer <= 0)
            {
                if (this.GetBotData().RandomSpeech.Count > 0 && this.GetBotData().AutomaticChat)
                {
                    this.GetRoomUser().OnChat(this.GetBotData().GetRandomSpeech(), 2, false);
                }
                this.SpeechTimer = this.GetBotData().SpeakingInterval * 2;
            }
            else
            {
                this.SpeechTimer--;
            }

            if (this.ActionTimer <= 0)
            {
                if (this.GetBotData().WalkingEnabled&& this.GetBotData().FollowUser == 0)
                {
                    Point randomWalkableSquare = this.GetRoom().GetGameMap().getRandomWalkableSquare(this.GetBotData().X, this.GetBotData().Y);
                    this.GetRoomUser().MoveTo(randomWalkableSquare.X, randomWalkableSquare.Y);
                }
                this.ActionTimer = ButterflyEnvironment.GetRandomNumber(10, 60);
            }
            else
            {
                this.ActionTimer--;
            }

            if (this.GetBotData().FollowUser != 0)
            {
                RoomUser user = this.GetRoom().GetRoomUserManager().GetRoomUserByVirtualId(this.GetBotData().FollowUser);
                if (user == null)
                {
                    this.GetBotData().FollowUser = 0;
                }
                else
                {
                    if (!Gamemap.TilesTouching(this.GetRoomUser().X, this.GetRoomUser().Y, user.X, user.Y))
                    {
                        this.GetRoomUser().MoveTo(user.X, user.Y, true);
                    }
                }
            }
        }
コード例 #20
0
        public RoleBot(RPEnemy EnemyConfig)
        {
            this.SetConfig(EnemyConfig);

            this.Dead            = false;
            this.AggroVirtuelId  = 0;
            this.AggroTimer      = 0;
            this.ResetBot        = false;
            this.ResetBotTimer   = 0;
            this.HitCount        = 0;
            this.Dodge           = false;
            this.DodgeTimer      = 0;
            this.GunCharger      = 6;
            this.GunLoadTimer    = 0;
            this.DodgeStartCount = ButterflyEnvironment.GetRandomNumber(2, 4);
            this.ActionTimer     = ButterflyEnvironment.GetRandomNumber(10, 30);
        }
コード例 #21
0
        internal RoomAdvertisement GetRandomRoomAdvertisement()
        {
            if (RoomAdvertisements.Count <= 0)
            {
                return(null);
            }

            while (true)
            {
                int RndId = ButterflyEnvironment.GetRandomNumber(0, (RoomAdvertisements.Count - 1));

                if (RoomAdvertisements[RndId] != null && !RoomAdvertisements[RndId].ExceededLimit)
                {
                    return(RoomAdvertisements[RndId]);
                }
            }
        }
コード例 #22
0
ファイル: GenericBot.cs プロジェクト: EmuZoneDEV/HBBO-EMU
 public GenericBot(int VirtualId)
 {
     this.SpeechTimer = ButterflyEnvironment.GetRandomNumber(10, 40);
     this.ActionTimer = ButterflyEnvironment.GetRandomNumber(10, 30);
 }
コード例 #23
0
        public static void OpenLegendBox(GameClient Session, Item Present, Room Room)
        {
            CatalogPage Page      = null;
            int         PageId    = 0;
            string      BadgeCode = "";
            string      LotType   = "";
            int         ForceItem = 0;

            if (ButterflyEnvironment.GetRandomNumber(1, 100) == 100) //Legendaire
            {
                PageId  = 14514;
                LotType = "Légendaire";
            }
            else if (ButterflyEnvironment.GetRandomNumber(1, 100) == 100) //Royal
            {
                PageId    = 584545;
                LotType   = "Royal";
                ForceItem = 37951979;
            }
            else if (ButterflyEnvironment.GetRandomNumber(1, 50) == 50) //Royal
            {
                PageId    = 584545;
                LotType   = "Royal";
                ForceItem = 70223722;
            }
            else if (ButterflyEnvironment.GetRandomNumber(1, 15) == 15) //Ultra rare
            {
                PageId  = 84641;
                LotType = "Ultra";
            }
            else if (ButterflyEnvironment.GetRandomNumber(1, 5) == 5) //Royal
            {
                PageId    = 584545;
                LotType   = "Royal";
                ForceItem = 52394359;
            }
            else
            {
                PageId  = 98747;
                LotType = "Extra";
            }


            int         PageBadgeId = 841878;
            CatalogPage PageBadge   = null;

            ButterflyEnvironment.GetGame().GetCatalog().TryGetPage(PageBadgeId, out PageBadge);
            if (PageBadge == null)
            {
                return;
            }

            foreach (KeyValuePair <int, CatalogItem> Item in PageBadge.Items.OrderBy(a => Guid.NewGuid()).ToList())
            {
                if (Session.GetHabbo().GetBadgeComponent().HasBadge(Item.Value.Badge))
                {
                    continue;
                }

                BadgeCode = Item.Value.Badge;
                break;
            }

            ButterflyEnvironment.GetGame().GetCatalog().TryGetPage(PageId, out Page);
            if (Page == null)
            {
                Session.SendNotification(ButterflyEnvironment.GetLanguageManager().TryGetValue("notif.error", Session.Langue));
                return;
            }

            ItemData LotData = null;

            if (ForceItem == 0)
            {
                LotData = Page.Items.ElementAt(ButterflyEnvironment.GetRandomNumber(0, Page.Items.Count - 1)).Value.Data;
            }
            else
            {
                LotData = Page.GetItem(ForceItem).Data;
            }

            if (LotData == null)
            {
                Session.SendNotification(ButterflyEnvironment.GetLanguageManager().TryGetValue("notif.error", Session.Langue));
                return;
            }

            int Credits = ButterflyEnvironment.GetRandomNumber(100, 10000) * 1000;

            Session.GetHabbo().Credits += Credits;
            Session.GetHabbo().UpdateCreditsBalance();

            int WinWin = ButterflyEnvironment.GetRandomNumber(100, 1000);

            Session.GetHabbo().AchievementPoints += WinWin;

            using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                queryreactor.RunQuery("UPDATE user_stats SET AchievementScore = AchievementScore + '" + WinWin + "' WHERE id = '" + Session.GetHabbo().Id + "'");
            }

            Session.SendPacket(new AchievementScoreComposer(Session.GetHabbo().AchievementPoints));
            RoomUser roomUserByHabbo = Room.GetRoomUserManager().GetRoomUserByHabboId(Session.GetHabbo().Id);

            if (roomUserByHabbo != null)
            {
                Session.SendPacket(new UserChangeComposer(roomUserByHabbo, true));
                Room.SendPacket(new UserChangeComposer(roomUserByHabbo, false));
            }

            if (!string.IsNullOrEmpty(BadgeCode))
            {
                Session.GetHabbo().GetBadgeComponent().GiveBadge(BadgeCode, true);
                Session.SendPacket(new ReceiveBadgeComposer(BadgeCode));
            }

            if (roomUserByHabbo != null)
            {
                roomUserByHabbo.SendWhisperChat(string.Format(ButterflyEnvironment.GetLanguageManager().TryGetValue("item.legendboxlot", Session.Langue), Credits, WinWin, BadgeCode, LotType));
            }

            Room.GetRoomItemHandler().RemoveFurniture(Session, Present.Id);

            using (IQueryAdapter queryreactor = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
            {
                queryreactor.SetQuery("UPDATE items SET base_item = @baseid WHERE id = " + Present.Id);
                queryreactor.AddParameter("baseid", LotData.Id);
                queryreactor.RunQuery();
            }
            string FurniType = Present.GetBaseItem().Type.ToString().ToLower();

            Present.BaseItem = LotData.Id;
            Present.ResetBaseItem();

            bool ItemIsInRoom = true;

            if (Present.Data.Type == 's')
            {
                if (!Room.GetRoomItemHandler().SetFloorItem(Session, Present, Present.GetX, Present.GetY, Present.Rotation, true, false, true))
                {
                    using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
                    {
                        dbClient.SetQuery("UPDATE `items` SET `room_id` = '0' WHERE `id` = @itemId LIMIT 1");
                        dbClient.AddParameter("itemId", Present.Id);
                        dbClient.RunQuery();
                    }

                    ItemIsInRoom = false;
                }
            }
            else
            {
                using (IQueryAdapter dbClient = ButterflyEnvironment.GetDatabaseManager().GetQueryReactor())
                {
                    dbClient.SetQuery("UPDATE `items` SET `room_id` = '0' WHERE `id` = @itemId LIMIT 1");
                    dbClient.AddParameter("itemId", Present.Id);
                    dbClient.RunQuery();
                }

                ItemIsInRoom = false;
            }

            Session.SendPacket(new OpenGiftComposer(Present.Data, Present.ExtraData, Present, ItemIsInRoom));

            if (!ItemIsInRoom)
            {
                Session.GetHabbo().GetInventoryComponent().TryAddItem(Present);
            }
        }
コード例 #24
0
        public void ExecutePile(Point coordinate, RoomUser user, Item item)
        {
            if (!this.actionStacks.ContainsKey(coordinate))
            {
                return;
            }

            if (this.WiredUsed.ContainsKey(coordinate))
            {
                if (this.WiredUsed[coordinate].Contains(user))
                {
                    return;
                }
                else
                {
                    this.WiredUsed[coordinate].Add(user);
                }
            }
            else
            {
                this.WiredUsed.TryAdd(coordinate, new List <RoomUser>()
                {
                    user
                });
            }

            if (this.conditionStacks.ContainsKey(coordinate))
            {
                List <Item> ConditionStack = this.conditionStacks[coordinate];
                int         CycleCountCdt  = 0;
                foreach (Item roomItem in ConditionStack.ToArray())
                {
                    CycleCountCdt++;
                    if (CycleCountCdt > 20)
                    {
                        break;
                    }
                    if (roomItem == null || roomItem.WiredHandler == null)
                    {
                        continue;
                    }
                    if (!((IWiredCondition)roomItem.WiredHandler).AllowsExecution(user, item))
                    {
                        return;
                    }
                }
            }

            List <Item> ActionStack = (List <Item>) this.actionStacks[coordinate];

            if (this.SpecialRandom.Contains(coordinate))
            {
                int CountAct = ActionStack.Count - 1;

                int  RdnWired = ButterflyEnvironment.GetRandomNumber(0, CountAct);
                Item ActRand  = ActionStack[RdnWired];
                ((IWiredEffect)ActRand.WiredHandler).Handle(user, item);
            }
            else if (this.SpecialUnseen.ContainsKey(coordinate))
            {
                int CountAct = ActionStack.Count - 1;

                int NextWired = this.SpecialUnseen[coordinate];
                if (NextWired > CountAct)
                {
                    NextWired = 0;
                    this.SpecialUnseen[coordinate] = 0;
                }
                this.SpecialUnseen[coordinate]++;

                Item ActNext = ActionStack[NextWired];
                if (ActNext != null && ActNext.WiredHandler != null)
                {
                    ((IWiredEffect)ActNext.WiredHandler).Handle(user, item);
                }
            }
            else
            {
                int CycleCount = 0;
                foreach (Item roomItem in ActionStack.ToArray())
                {
                    CycleCount++;

                    if (CycleCount > 20)
                    {
                        break;
                    }
                    if (roomItem != null && roomItem.WiredHandler != null)
                    {
                        ((IWiredEffect)roomItem.WiredHandler).Handle(user, item);
                    }
                }
            }
        }
コード例 #25
0
        public override void OnUserSay(RoomUser User, string Message)
        {
            RoomUser roomUser = this.GetRoomUser();

            if (roomUser.PetData.DBState != DatabaseUpdateState.NeedsInsert)
            {
                roomUser.PetData.DBState = DatabaseUpdateState.NeedsUpdate;
            }

            if (roomUser.PetData.OwnerId != User.GetClient().GetHabbo().Id)
            {
                return;
            }

            if (!Message.ToLower().StartsWith(roomUser.PetData.Name.ToLower() + " "))
            {
                return;
            }

            if (Message.ToLower().Equals(roomUser.PetData.Name.ToLower()))
            {
                roomUser.SetRot(Rotation.Calculate(roomUser.X, roomUser.Y, User.X, User.Y), false);
            }
            else
            {
                string input        = Message.Substring(roomUser.PetData.Name.ToLower().Length + 1);
                int    randomNumber = ButterflyEnvironment.GetRandomNumber(1, 8);
                if (roomUser.PetData.Energy > 10 && randomNumber < 6)
                {
                    this.RemovePetStatus();
                    switch (ButterflyEnvironment.GetGame().GetChatManager().GetPetCommands().TryInvoke(input))
                    {
                    case 0:     //Libre
                        this.RemovePetStatus();
                        Point randomWalkableSquare = this.GetRoom().GetGameMap().getRandomWalkableSquare(this.GetBotData().X, this.GetBotData().Y);
                        roomUser.MoveTo(randomWalkableSquare.X, randomWalkableSquare.Y);
                        roomUser.PetData.AddExpirience(10);
                        break;

                    case 1:     //Assis
                        this.RemovePetStatus();
                        roomUser.PetData.AddExpirience(10);
                        roomUser.SetStatus("sit", TextHandling.GetString(roomUser.Z));
                        roomUser.IsSit        = true;
                        roomUser.UpdateNeeded = true;
                        this.ActionTimer      = 25;
                        this.EnergyTimer      = 10;
                        break;

                    case 2:     //Couché
                        this.RemovePetStatus();
                        roomUser.SetStatus("lay", TextHandling.GetString(roomUser.Z));
                        roomUser.IsLay        = true;
                        roomUser.UpdateNeeded = true;
                        roomUser.PetData.AddExpirience(10);
                        this.ActionTimer = 30;
                        this.EnergyTimer = 5;
                        break;

                    case 3:
                        this.RemovePetStatus();
                        int pX = User.X;
                        int pY = User.Y;
                        this.ActionTimer = 30;
                        if (User.RotBody == 4)
                        {
                            pY = User.Y + 1;
                        }
                        else if (User.RotBody == 0)
                        {
                            pY = User.Y - 1;
                        }
                        else if (User.RotBody == 6)
                        {
                            pX = User.X - 1;
                        }
                        else if (User.RotBody == 2)
                        {
                            pX = User.X + 1;
                        }
                        else if (User.RotBody == 3)
                        {
                            pX = User.X + 1;
                            pY = User.Y + 1;
                        }
                        else if (User.RotBody == 1)
                        {
                            pX = User.X + 1;
                            pY = User.Y - 1;
                        }
                        else if (User.RotBody == 7)
                        {
                            pX = User.X - 1;
                            pY = User.Y - 1;
                        }
                        else if (User.RotBody == 5)
                        {
                            pX = User.X - 1;
                            pY = User.Y + 1;
                        }
                        roomUser.PetData.AddExpirience(10);
                        roomUser.MoveTo(pX, pY);
                        break;

                    case 4:     //demande
                        this.RemovePetStatus();
                        roomUser.PetData.AddExpirience(10);
                        roomUser.SetRot(Rotation.Calculate(roomUser.X, roomUser.Y, User.X, User.Y), false);
                        roomUser.SetStatus("beg", TextHandling.GetString(roomUser.Z));
                        roomUser.UpdateNeeded = true;
                        this.ActionTimer      = 25;
                        this.EnergyTimer      = 10;
                        break;

                    case 5:
                        this.RemovePetStatus();
                        roomUser.SetStatus("ded", TextHandling.GetString(roomUser.Z));
                        roomUser.UpdateNeeded = true;
                        roomUser.PetData.AddExpirience(10);
                        this.SpeechTimer = 45;
                        this.ActionTimer = 30;
                        break;

                    case 6:
                        break;

                    case 7:
                        break;

                    case 8:
                        break;

                    case 9:
                        this.RemovePetStatus();
                        roomUser.SetStatus("jmp", TextHandling.GetString(roomUser.Z));
                        roomUser.UpdateNeeded = true;
                        roomUser.PetData.AddExpirience(10);
                        this.EnergyTimer = 5;
                        this.SpeechTimer = 10;
                        this.ActionTimer = 5;
                        break;

                    case 10:
                        break;

                    case 11:
                        break;

                    case 12:
                        break;

                    case 13:     //Panier ?
                        this.RemovePetStatus();
                        roomUser.OnChat("ZzzZZZzzzzZzz", 0, false);
                        roomUser.SetStatus("lay", TextHandling.GetString(roomUser.Z));
                        roomUser.IsLay        = true;
                        roomUser.UpdateNeeded = true;
                        roomUser.PetData.AddExpirience(10);
                        this.EnergyTimer = 5;
                        this.SpeechTimer = 30;
                        this.ActionTimer = 45;
                        break;

                    case 14:
                        break;

                    case 15:
                        break;

                    case 16:
                        break;

                    case 17:
                        break;

                    case 18:
                        break;

                    case 19:
                        break;

                    case 20:
                        break;

                    default:
                        string[] strArray = ButterflyEnvironment.GetLanguageManager().TryGetValue("pet.unknowncommand", roomUser.mRoom.RoomData.Langue).Split(new char[1] {
                            ','
                        });
                        Random random = new Random();
                        roomUser.OnChat(strArray[random.Next(0, strArray.Length - 1)], 0, false);
                        break;
                    }
                    roomUser.PetData.PetEnergy(false);
                    roomUser.PetData.PetEnergy(false);
                }
                else
                {
                    this.RemovePetStatus();
                    if (!roomUser.mRoom.RoomMutePets)
                    {
                        if (roomUser.PetData.Energy < 10)
                        {
                            string[] strArray = ButterflyEnvironment.GetLanguageManager().TryGetValue("pet.tired", roomUser.mRoom.RoomData.Langue).Split(new char[1] {
                                ','
                            });
                            Random random = new Random();
                            roomUser.OnChat(strArray[random.Next(0, strArray.Length - 1)], 0, false);
                            roomUser.SetStatus("lay", TextHandling.GetString(roomUser.Z));
                            roomUser.IsLay   = true;
                            this.SpeechTimer = 50;
                            this.ActionTimer = 45;
                            this.EnergyTimer = 5;
                        }
                        else
                        {
                            string[] strArray = ButterflyEnvironment.GetLanguageManager().TryGetValue("pet.lazy", roomUser.mRoom.RoomData.Langue).Split(new char[1] {
                                ','
                            });
                            Random random = new Random();
                            roomUser.OnChat(strArray[random.Next(0, strArray.Length - 1)], 0, false);
                            roomUser.PetData.PetEnergy(false);
                        }
                    }
                }
            }
        }
コード例 #26
0
        public override void OnTimerTick()
        {
            /*if (this.SpeechTimer <= 0)
             * {
             *  RoomUser roomUser = this.GetRoomUser();
             *
             *  if (roomUser.PetData.DBState != DatabaseUpdateState.NeedsInsert)
             *      roomUser.PetData.DBState = DatabaseUpdateState.NeedsUpdate;
             *
             *  /*if (roomUser != null)
             *  {
             *      if (!roomUser.mRoom.RoomMutePets)
             *      {
             *          Random random = new Random();
             *          this.RemovePetStatus();
             *          string[] strArray = ButterflyEnvironment.GetGame().GetChatManager().GetPetLocale().GetValue("speech.pet" + roomUser.PetData.Type);
             *          string str = strArray[random.Next(0, strArray.Length - 1)];
             *
             *          if (!string.IsNullOrEmpty(str))
             *          {
             *              if (str.Length != 3)
             *                  roomUser.OnChat(str, 0, false);
             *              else
             *                  roomUser.SetStatus(str, TextHandling.GetString(roomUser.Z));
             *          }
             *      }
             *  }
             *  this.SpeechTimer = ButterflyEnvironment.GetRandomNumber(20, 120);
             * }
             * else
             *  this.SpeechTimer--;*/

            if (this.ActionTimer <= 0)
            {
                try
                {
                    this.RemovePetStatus();
                    this.ActionTimer = ButterflyEnvironment.GetRandomNumber(10, 60);
                    if (!this.GetRoomUser().RidingHorse&& this.GetRoomUser().PetData.Type != 16)
                    {
                        this.RemovePetStatus();
                        Point randomWalkableSquare = this.GetRoom().GetGameMap().getRandomWalkableSquare(this.GetBotData().X, this.GetBotData().Y);
                        this.GetRoomUser().MoveTo(randomWalkableSquare.X, randomWalkableSquare.Y);
                    }
                }
                catch (Exception ex)
                {
                    Logging.HandleException(ex, "PetBot.OnTimerTick");
                }
            }
            else
            {
                --this.ActionTimer;
            }
            if (this.EnergyTimer <= 0)
            {
                this.RemovePetStatus();
                this.GetRoomUser().PetData.PetEnergy(true);
                this.EnergyTimer = ButterflyEnvironment.GetRandomNumber(30, 120);
            }
            else
            {
                --this.EnergyTimer;
            }

            if (this.GetBotData().FollowUser != 0)
            {
                RoomUser user = this.GetRoom().GetRoomUserManager().GetRoomUserByVirtualId(this.GetBotData().FollowUser);
                if (user == null)
                {
                    this.GetBotData().FollowUser = 0;
                }
                else
                {
                    if (!Gamemap.TilesTouching(this.GetRoomUser().X, this.GetRoomUser().Y, user.X, user.Y))
                    {
                        this.GetRoomUser().MoveTo(user.X, user.Y, true);
                    }
                }
            }
        }
コード例 #27
0
ファイル: RoomBot.cs プロジェクト: nightwolf93/Bfly
 internal RandomSpeech GetRandomSpeech()
 {
     return(RandomSpeech[ButterflyEnvironment.GetRandomNumber(0, (RandomSpeech.Count - 1))]);
 }
コード例 #28
0
        public void Execute(GameClient Session, Room Room, RoomUser UserRoom, string[] Params)
        {
            if (Params.Length != 2)
            {
                return;
            }

            if (!Room.RpRoom || !Room.Pvp)
            {
                return;
            }

            RolePlayer Rp = UserRoom.Roleplayer;

            if (Rp == null)
            {
                return;
            }

            if (Rp.Dead || !Rp.PvpEnable || Rp.SendPrison || UserRoom.Freeze)
            {
                return;
            }

            int WeaponEanble = Rp.WeaponCac.Enable;

            UserRoom.ApplyEffect(WeaponEanble, true);
            UserRoom.TimerResetEffect = Rp.WeaponCac.FreezeTime + 1;

            if (UserRoom.FreezeEndCounter <= Rp.WeaponCac.FreezeTime)
            {
                UserRoom.Freeze           = true;
                UserRoom.FreezeEndCounter = Rp.WeaponCac.FreezeTime;
            }

            RoomUser TargetRoomUser = Room.GetRoomUserManager().GetRoomUserByHabbo(Params[1].ToString());

            if (TargetRoomUser == null)
            {
                RoomUser BotOrPet = Room.GetRoomUserManager().GetBotOrPetByName(Params[1].ToString());
                if (BotOrPet == null || BotOrPet.BotData == null || BotOrPet.BotData.RoleBot == null)
                {
                    return;
                }

                if (BotOrPet.BotData.RoleBot.Dead)
                {
                    return;
                }

                if (Math.Abs(BotOrPet.X - UserRoom.X) >= 2 || Math.Abs(BotOrPet.Y - UserRoom.Y) >= 2)
                {
                    return;
                }

                int Dmg = ButterflyEnvironment.GetRandomNumber(Rp.WeaponCac.DmgMin, Rp.WeaponCac.DmgMax);
                BotOrPet.BotData.RoleBot.Hit(BotOrPet, Dmg, Room, UserRoom.VirtualId, -1);
            }
            else
            {
                RolePlayer RpTwo = TargetRoomUser.Roleplayer;
                if (RpTwo == null || (!RpTwo.PvpEnable && RpTwo.AggroTimer <= 0))
                {
                    return;
                }

                if (TargetRoomUser.GetClient().GetHabbo().Id == Session.GetHabbo().Id)
                {
                    return;
                }

                if (RpTwo.Dead || RpTwo.SendPrison)
                {
                    return;
                }

                if (Math.Abs(TargetRoomUser.X - UserRoom.X) >= 2 || Math.Abs(TargetRoomUser.Y - UserRoom.Y) >= 2)
                {
                    return;
                }

                int Dmg = ButterflyEnvironment.GetRandomNumber(Rp.WeaponCac.DmgMin, Rp.WeaponCac.DmgMax);

                Rp.AggroTimer = 30;
                RpTwo.Hit(TargetRoomUser, Dmg, Room);
            }
        }
コード例 #29
0
ファイル: Pan.cs プロジェクト: EmuZoneDEV/HBBO-EMU
        public void Execute(GameClient Session, Room Room, RoomUser UserRoom, string[] Params)
        {
            if (!Room.RpRoom || !Room.Pvp || UserRoom.Freeze)
            {
                return;
            }

            RolePlayer Rp = UserRoom.Roleplayer;

            if (Rp == null)
            {
                return;
            }

            if (Rp.Dead || !Rp.PvpEnable || Rp.SendPrison)
            {
                return;
            }

            if (Rp.Munition <= 0)
            {
                UserRoom.SendWhisperChat(ButterflyEnvironment.GetLanguageManager().TryGetValue("rp.munitionnotfound", Session.Langue));
                return;
            }

            if (Rp.GunLoad <= 0)
            {
                UserRoom.SendWhisperChat(ButterflyEnvironment.GetLanguageManager().TryGetValue("rp.reloadweapon", Session.Langue));
                return;
            }

            MovementDirection movement = MovementManagement.GetMovementByDirection(UserRoom.RotBody);

            int WeaponEanble = Rp.WeaponGun.Enable;

            UserRoom.ApplyEffect(WeaponEanble, true);
            UserRoom.TimerResetEffect = Rp.WeaponGun.FreezeTime + 1;

            Rp.AggroTimer = 30;

            if (UserRoom.FreezeEndCounter <= Rp.WeaponGun.FreezeTime)
            {
                UserRoom.Freeze           = true;
                UserRoom.FreezeEndCounter = Rp.WeaponGun.FreezeTime;
            }

            for (int i = 0; i < Rp.WeaponGun.FreezeTime; i++)
            {
                if (Rp.Munition <= 0 || Rp.GunLoad <= 0)
                {
                    break;
                }

                Rp.Munition--;
                Rp.GunLoad--;

                int Dmg = ButterflyEnvironment.GetRandomNumber(Rp.WeaponGun.DmgMin, Rp.WeaponGun.DmgMax);
                Room.GetProjectileManager().AddProjectile(UserRoom.VirtualId, UserRoom.SetX, UserRoom.SetY, UserRoom.SetZ, movement, Dmg, Rp.WeaponGun.Distance);
            }

            Rp.SendUpdate();
        }
コード例 #30
0
ファイル: RoomItem.cs プロジェクト: nightwolf93/Bfly
        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.onewaygate:

                    User = null;

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

                    if (User != null && User.X == mX && User.Y == mY)
                    {
                        ExtraData = "1";

                        User.MoveTo(SquareBehind);

                        ReqUpdate(1, false);
                        UpdateState(false, true);
                    }
                    else if (User != null && User.Coordinate == SquareBehind)
                    {
                        User.UnlockWalking();

                        ExtraData       = "0";
                        InteractingUser = 0;

                        UpdateState(false, true);
                    }
                    else if (ExtraData == "1")
                    {
                        ExtraData = "0";
                        UpdateState(false, true);
                    }

                    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.ExtraData = "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().PrepareRoomForUser(RoomId, "");
                                            }
                                            //ButterflyEnvironment.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 (ExtraData != "1")
                        {
                            ExtraData = "1";
                            UpdateState(false, true);
                        }
                    }
                    else if (showTeleEffect)
                    {
                        if (ExtraData != "2")
                        {
                            ExtraData = "2";
                            UpdateState(false, true);
                        }
                    }
                    else
                    {
                        if (ExtraData != "0")
                        {
                            ExtraData = "0";
                            UpdateState(false, true);
                        }
                    }

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

                    break;

                case InteractionType.bottle:

                    ExtraData = ButterflyEnvironment.GetRandomNumber(0, 7).ToString();
                    UpdateState();
                    break;

                case InteractionType.dice:

                    ExtraData = ButterflyEnvironment.GetRandomNumber(1, 6).ToString();
                    UpdateState();
                    break;

                case InteractionType.habbowheel:

                    ExtraData = ButterflyEnvironment.GetRandomNumber(1, 10).ToString();
                    UpdateState();
                    break;

                case InteractionType.loveshuffler:

                    if (ExtraData == "0")
                    {
                        ExtraData = ButterflyEnvironment.GetRandomNumber(1, 4).ToString();
                        ReqUpdate(20, false);
                    }
                    else if (ExtraData != "-1")
                    {
                        ExtraData = "-1";
                    }

                    UpdateState(false, true);
                    break;

                case InteractionType.alert:

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

                    break;

                case InteractionType.vendingmachine:

                    if (this.ExtraData == "1")
                    {
                        User = GetRoom().GetRoomUserManager().GetRoomUserByHabbo(InteractingUser);

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

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

                        this.InteractingUser = 0;
                        this.ExtraData       = "0";

                        UpdateState(false, true);
                    }

                    break;


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


                    int seconds = 0;

                    try
                    {
                        seconds = int.Parse(ExtraData);
                    }
                    catch { }

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

                            ExtraData = seconds.ToString();
                            UpdateState();
                        }
                        else
                        {
                            interactionCountHelper++;
                        }

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

                    break;
                }

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


                    int seconds = 0;

                    try
                    {
                        seconds = int.Parse(ExtraData);
                    }
                    catch { }

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

                            ExtraData = seconds.ToString();
                            UpdateState();
                        }
                        else
                        {
                            interactionCountHelper++;
                        }

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

                    break;
                }

                case InteractionType.banzaitele:
                {
                    ExtraData = 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:
                            {
                                ExtraData = "11";
                                break;
                            }

                            case Team.green:
                            {
                                ExtraData = "8";
                                break;
                            }

                            case Team.red:
                            {
                                ExtraData = "5";
                                break;
                            }

                            case Team.yellow:
                            {
                                ExtraData = "14";
                                break;
                            }
                            }
                        }
                        else
                        {
                            ExtraData = "";
                            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)
                    {
                        ExtraData = "11000";
                        UpdateState(false, true);

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

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

                    if (!GetRoom().GetFreeze().GameIsStarted)
                    {
                        GetRoom().GetFreeze().StartGame();
                    }

                    int seconds = 0;

                    try
                    {
                        seconds = int.Parse(ExtraData);
                    }
                    catch { }

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

                            ExtraData = seconds.ToString();
                            UpdateState();
                        }
                        else
                        {
                            interactionCountHelper++;
                        }

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

                    break;
                }
                }
            }
        }