Esempio n. 1
0
        public void OnTrigger(GameClient Session, RoomItem Item, int Request, bool HasRights)
        {
            if (Session == null)
            {
                return;
            }

            RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

            if (Item.InteractingUser2 != User.UserId)
            {
                Item.InteractingUser2 = User.UserId;
            }

            if (User == null)
            {
                return;
            }
            if (Item.GetBaseItem().InteractionType == Interaction.OneWayGate)
            {
                if (User.Coordinate != Item.SquareInFront && User.CanWalk)
                {
                    User.MoveTo(Item.SquareInFront);
                    return;
                }

                if (Session.GetRoleplay().Dead || Session.GetRoleplay().Jailed)
                {
                    if (Session.GetRoleplay().JobId != 3 && !Session.GetRoleplay().Working)
                    {
                        Session.SendWhisper("You are dead or jailed");
                    }
                    return;
                }
            }

            if (Item.BaseItem == 1010 && Session.GetRoleplay().Working == false)
            {
                Session.SendWhisper("You must be working to enter this gate");
                return;
            }

            if (Item.BaseItem == 1013 && (!JobManager.JobRankData[Session.GetRoleplay().JobId, Session.GetRoleplay().JobRank].canSendHome() || !Session.GetRoleplay().Working))
            {
                if (Session.GetRoleplay().JobId == 3 && Session.GetRoleplay().Working)
                {
                    Session.Shout("*Slides police badge and enters the managers gate*", 4, false);
                }
                else
                {
                    Session.SendWhisper("You must be a(n) manager to enter this gate");
                    return;
                }
            }

            if (Item.BaseItem == 1008)
            {
                if (Session.GetHabbo().Credits < 10)
                {
                    Session.SendWhisper("Insufficient funds - Requires $10");
                    return;
                }
                else
                {
                    if (Session.GetRoleplay().JobId != 3 || !Session.GetRoleplay().Working)
                    {
                        Session.GetHabbo().Credits = Session.GetHabbo().Credits - 10;
                        Session.GetHabbo().UpdateCreditsBalance();
                        Session.SendWhisper("Charged $10 to enter this gate");
                    }
                    else
                    {
                        Session.Shout("*Slides police badge and enters the gate for free*", 4, false);
                    }
                }
            }

            if (!Item.GetRoom().GetGameMap().ValidTile(Item.SquareBehind.X, Item.SquareBehind.Y) ||
                !Item.GetRoom().GetGameMap().CanWalk(Item.SquareBehind.X, Item.SquareBehind.Y, false) ||
                !Item.GetRoom().GetGameMap().SquareIsOpen(Item.SquareBehind.X, Item.SquareBehind.Y, false))
            {
                return;
            }

            if ((User.LastInteraction - Plus.GetUnixTimestamp() < 0) && User.InteractingGate &&
                User.GateId == Item.Id)
            {
                User.InteractingGate = false;
                User.GateId          = 0;
            }


            if (!Item.GetRoom().GetGameMap().CanWalk(Item.SquareBehind.X, Item.SquareBehind.Y, User.AllowOverride))
            {
                return;
            }

            if (Item.GetRoom().GetGameMap().CanWalk(Item.SquareBehind.X, Item.SquareBehind.Y, User.AllowOverride) && User.Coordinate == Item.SquareInFront && (Item.InteractingUser == 0))
            {
                Item.ExtraData = "1";
                System.Threading.Thread.Sleep(1000);
                Item.InteractingUser = User.HabboId;
                User.CanWalk         = false;
                User.AllowOverride   = true;
                Item.UpdateState(false, true);
                User.MoveTo(Item.Coordinate);
                Item.ExtraData = "0";
                User.MoveTo(Item.SquareBehind);
                Item.UpdateState(false, true);
                User.CanWalk = true;
                System.Threading.Thread.Sleep(1000);
                User.AllowOverride   = false;
                Item.InteractingUser = 0;
            }
            else if (Item.GetRoom().GetGameMap().CanWalk(Item.SquareInFront.X, Item.SquareInFront.Y, User.AllowOverride) && User.Coordinate == Item.SquareBehind && (Item.InteractingUser == 0))
            {
                Item.ExtraData = "1";
                System.Threading.Thread.Sleep(1000);
                Item.InteractingUser = User.HabboId;
                User.CanWalk         = false;
                User.AllowOverride   = true;
                Item.UpdateState(false, true);
                User.MoveTo(Item.Coordinate);
                Item.ExtraData = "0";
                User.MoveTo(Item.SquareInFront);
                Item.UpdateState(false, true);
                User.CanWalk = true;
                System.Threading.Thread.Sleep(1000);
                User.AllowOverride   = false;
                Item.InteractingUser = 0;
            }
        }