Esempio n. 1
0
        public void Parse(GameClient Session, ClientPacket Packet)
        {
            Room room = ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

            if (room == null)
            {
                return;
            }
            RoomUser User = room.GetRoomUserManager().GetRoomUserByHabboId(Session.GetHabbo().Id);

            if (User == null || User.RidingHorse)
            {
                return;
            }

            User.Unidle();
            int X2 = Packet.PopInt();
            int Y2 = Packet.PopInt();

            if (X2 == User.X && Y2 == User.Y)
            {
                if (User.SetStep)
                {
                    int rotation = Rotation.RotationIverse(User.RotBody);
                    User.SetRot(rotation, false, true);
                }
                return;
            }

            int Rotation2 = Rotation.Calculate(User.X, User.Y, X2, Y2);

            User.SetRot(Rotation2, false);
        }
        public void OnTrigger(GameClient Session, Item Item, int Request, bool HasRights)
        {
            if (Item.ExtraData != "1" && Item.GetBaseItem().VendingIds.Count >= 1 && Item.InteractingUser == 0 &&
                Session != null)
            {
                RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

                if (User == null)
                {
                    return;
                }

                if (!Gamemap.TilesTouching(User.X, User.Y, Item.GetX, Item.GetY))
                {
                    User.MoveTo(Item.SquareInFront);
                    return;
                }

                Item.InteractingUser = Session.GetHabbo().Id;

                if (!User.SetStep)
                {
                    User.CanWalk = false;
                    User.ClearMovement(true);
                    User.SetRot(Rotation.Calculate(User.X, User.Y, Item.GetX, Item.GetY), false);
                }

                Item.RequestUpdate(2, true);

                Item.ExtraData = "1";
                Item.UpdateState(false, true);
            }
        }
Esempio n. 3
0
        public override void OnTrigger(GameClient Session, Item Item, int Request, bool UserHasRights)
        {
            if (!(Item.ExtraData != "1") || Item.GetBaseItem().VendingIds.Count < 1 || (Item.InteractingUser != 0 || Session == null || Session.GetHabbo() == null))
            {
                return;
            }

            RoomUser roomUserByHabbo = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabboId(Session.GetHabbo().Id);

            if (roomUserByHabbo == null)
            {
                return;
            }

            if (!Gamemap.TilesTouching(roomUserByHabbo.X, roomUserByHabbo.Y, Item.GetX, Item.GetY))
            {
                roomUserByHabbo.MoveTo(Item.SquareInFront);
            }
            else
            {
                Item.InteractingUser = Session.GetHabbo().Id;
                roomUserByHabbo.SetRot(Rotation.Calculate(roomUserByHabbo.X, roomUserByHabbo.Y, Item.GetX, Item.GetY), false);
                Item.ReqUpdate(2);
                Item.ExtraData = "1";
                Item.UpdateState(false, true);
            }
        }
Esempio n. 4
0
        public override void OnTrigger(GameClient session, RoomItem item, int request, bool hasRights)
        {
            if (item.ExtraData == "1" || !item.GetBaseItem().VendingIds.Any() || item.InteractingUser != 0u ||
                session == null)
            {
                return;
            }

            RoomUser roomUserByHabbo = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id);

            if (roomUserByHabbo == null)
            {
                return;
            }

            if (!Gamemap.TilesTouching(roomUserByHabbo.X, roomUserByHabbo.Y, item.X, item.Y))
            {
                roomUserByHabbo.MoveTo(item.SquareInFront);
                return;
            }

            item.InteractingUser    = session.GetHabbo().Id;
            roomUserByHabbo.CanWalk = false;
            roomUserByHabbo.ClearMovement();

            roomUserByHabbo.SetRot(PathFinder.CalculateRotation(roomUserByHabbo.X, roomUserByHabbo.Y, item.X, item.Y));

            item.ReqUpdate(2, true);
            item.ExtraData = "1";
            item.UpdateState(false, true);
        }
Esempio n. 5
0
        public void OnTrigger(GameClient Session, Item Item, int Request, bool HasRights)
        {
            if (Session == null)
            {
                return;
            }
            RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

            if (User == null)
            {
                return;
            }

            if (!((Math.Abs((User.X - Item.GetX)) >= 2) || (Math.Abs((User.Y - Item.GetY)) >= 2)))
            {
                User.SetRot(Rotation.Calculate(User.X, User.Y, Item.GetX, Item.GetY), false);
                if (User.RotBody % 2 != 0)
                {
                    User.MoveTo(Item.GetX + 1, Item.GetY);
                    return;
                }
                Room Room     = Item.GetRoom();
                var  NewPoint = new Point(0, 0);
                if (User.RotBody == 4)
                {
                    NewPoint = new Point(Item.GetX, Item.GetY + 1);
                }

                if (User.RotBody == 0)
                {
                    NewPoint = new Point(Item.GetX, Item.GetY - 1);
                }

                if (User.RotBody == 6)
                {
                    NewPoint = new Point(Item.GetX - 1, Item.GetY);
                }

                if (User.RotBody == 2)
                {
                    NewPoint = new Point(Item.GetX + 1, Item.GetY);
                }

                if (Room.GetGameMap().ValidTile(NewPoint.X, NewPoint.Y) &&
                    Room.GetGameMap().itemCanBePlacedHere(NewPoint.X, NewPoint.Y) &&
                    Room.GetGameMap().CanRollItemHere(NewPoint.X, NewPoint.Y))
                {
                    Double NewZ = Item.GetRoom().GetGameMap().SqAbsoluteHeight(NewPoint.X, NewPoint.Y);
                    Room.SendMessage(new SlideObjectBundleComposer(Item.GetX, Item.GetY, Item.GetZ, NewPoint.X, NewPoint.Y, NewZ, 0, 0, Item.Id));
                    Item.GetRoom().GetRoomItemHandler().SetFloorItem(User.GetClient(), Item, NewPoint.X, NewPoint.Y, Item.Rotation, false, false, false);
                }
            }
            else
            {
                User.MoveTo(Item.GetX + 1, Item.GetY);
            }
        }
Esempio n. 6
0
        internal void CallGuideBot()
        {
            if (Session.GetHabbo().SpectatorMode)
            {
                Session.GetHabbo().SpectatorMode = false;// Only for disable Spectator Mode
                Session.SendNotif(LanguageLocale.GetValue("invisible.disabled"));
            }
            else
            {
                Room Room = ButterflyEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

                if (Room == null || !Room.CheckRights(Session, true))
                {
                    return;
                }

                if (Room.guideBotIsCalled)
                {
                    Session.GetMessageHandler().GetResponse().Init(33);
                    Session.GetMessageHandler().GetResponse().AppendInt32(4009);
                    Session.GetMessageHandler().SendResponse();

                    return;
                }

                if (Session.GetHabbo().CalledGuideBot)
                {
                    Session.GetMessageHandler().GetResponse().Init(33);
                    Session.GetMessageHandler().GetResponse().AppendInt32(4010);
                    Session.GetMessageHandler().SendResponse();

                    return;
                }

                RoomUser NewUser = Room.DeployBot(ButterflyEnvironment.GetGame().GetBotManager().GetBot(55));
                NewUser.SetPos(Room.GetGameMap().Model.DoorX, Room.GetGameMap().Model.DoorY, Room.GetGameMap().Model.DoorZ);
                NewUser.UpdateNeeded = true;

                RoomUser RoomOwner = Room.GetRoomUserManager().GetRoomUserByHabbo(Room.Owner);

                if (RoomOwner != null)
                {
                    NewUser.MoveTo(RoomOwner.Coordinate);
                    NewUser.SetRot(Rotation.Calculate(NewUser.X, NewUser.Y, RoomOwner.X, RoomOwner.Y), false);
                }


                Session.GetHabbo().CalledGuideBot = true;
            }
        }
Esempio n. 7
0
        private void MoveUser(Habbo Player)
        {
            if (Player == null)
            {
                return;
            }

            Room Room = Player.CurrentRoom;

            if (Room == null)
            {
                return;
            }

            RoomUser User = Player.CurrentRoom.GetRoomUserManager().GetRoomUserByHabbo(Player.Username);

            if (User == null)
            {
                return;
            }

            if (Player.IsTeleporting || Player.IsHopping || Player.TeleporterId != 0)
            {
                return;
            }

            if (Room.GetGameMap() == null)
            {
                return;
            }

            Point Point  = HandleMovement(Convert.ToInt32(this.StringData.Split(';')[0]), new Point(User.X, User.Y));
            int   newRot = HandleRotation(Convert.ToInt32(this.StringData.Split(';')[1]), Item.Rotation, User.RotBody);

            User.MoveTo(Point);
            User.SetRot(newRot, false);

            if (Player.Effects() != null && Player.LastEffect == 0 || Player.LastEffect == 4)
            {
                Player.Effects().ApplyEffect(0);
            }
            else
            {
                Player.Effects().ApplyEffect(Player.LastEffect);
            }
        }
Esempio n. 8
0
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            Room Room = null;

            if (!QuasarEnvironment.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room))
            {
                return;
            }

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

            if (User == null)
            {
                return;
            }

            if (User.IsAsleep)
            {
                return;
            }

            User.UnIdle();

            int X = Packet.PopInt();
            int Y = Packet.PopInt();

            if ((X == User.X && Y == User.Y) || User.IsWalking || User.RidingHorse)
            {
                return;
            }

            int Rot = Rotation.Calculate(User.X, User.Y, X, Y);

            User.SetRot(Rot, false);
            User.UpdateNeeded = true;

            if (User.RidingHorse)
            {
                RoomUser Horse = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByVirtualId(User.HorseID);
                if (Horse != null)
                {
                    Horse.SetRot(Rot, false);
                    Horse.UpdateNeeded = true;
                }
            }
        }
Esempio n. 9
0
        public void Parse(GameClient session, ClientPacket packet)
        {
            if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(session.GetHabbo().CurrentRoomId, out Room room))
            {
                return;
            }

            RoomUser user = room.GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id);

            if (user == null)
            {
                return;
            }

            if (user.IsAsleep)
            {
                return;
            }

            user.UnIdle();

            int x = packet.PopInt();
            int y = packet.PopInt();

            if ((x == user.X && y == user.Y) || user.IsWalking || user.RidingHorse)
            {
                return;
            }

            int rot = Rotation.Calculate(user.X, user.Y, x, y);

            user.SetRot(rot, false);
            user.UpdateNeeded = true;

            if (user.RidingHorse)
            {
                RoomUser horse = session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByVirtualId(user.HorseID);
                if (horse != null)
                {
                    horse.SetRot(rot, false);
                    horse.UpdateNeeded = true;
                }
            }
        }
Esempio n. 10
0
        internal void CallGuideBot()
        {
            Room Room = FirewindEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

            if (Room == null || !Room.CheckRights(Session, true))
            {
                return;
            }

            if (Room.guideBotIsCalled)
            {
                Session.GetMessageHandler().GetResponse().Init(33);
                Session.GetMessageHandler().GetResponse().AppendInt32(4009);
                Session.GetMessageHandler().SendResponse();

                return;
            }

            if (Session.GetHabbo().CalledGuideBot)
            {
                Session.GetMessageHandler().GetResponse().Init(33);
                Session.GetMessageHandler().GetResponse().AppendInt32(4010);
                Session.GetMessageHandler().SendResponse();

                return;
            }

            RoomUser NewUser = Room.DeployBot(FirewindEnvironment.GetGame().GetBotManager().GetBot(55));

            NewUser.SetPos(Room.GetGameMap().Model.DoorX, Room.GetGameMap().Model.DoorY, Room.GetGameMap().Model.DoorZ);
            NewUser.UpdateNeeded = true;

            RoomUser RoomOwner = Room.GetRoomUserManager().GetRoomUserByHabbo(Room.Owner);

            if (RoomOwner != null)
            {
                NewUser.MoveTo(RoomOwner.Coordinate);
                NewUser.SetRot(Rotation.Calculate(NewUser.X, NewUser.Y, RoomOwner.X, RoomOwner.Y), false);
            }


            Session.GetHabbo().CalledGuideBot = true;
        }
Esempio n. 11
0
        public void parse(GameClient Session, ClientMessage Event)
        {
            Room @class = PhoenixEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

            if (@class != null && @class.CheckRights(Session, true))
            {
                for (int i = 0; i < @class.UserList.Length; i++)
                {
                    RoomUser class2 = @class.UserList[i];
                    if (class2 != null && (class2.IsBot && class2.BotData.AiType == AIType.Guide))
                    {
                        ServerMessage Message = new ServerMessage(33u);
                        Message.AppendInt32(4009);
                        Session.SendMessage(Message);
                        return;
                    }
                }
                if (Session.GetHabbo().CalledGuideBot)
                {
                    ServerMessage Message = new ServerMessage(33u);
                    Message.AppendInt32(4010);
                    Session.SendMessage(Message);
                }
                else
                {
                    RoomUser class3 = @class.method_3(PhoenixEnvironment.GetGame().GetBotManager().GetBot(2u));
                    class3.SetPos(@class.Model.DoorX, @class.Model.DoorY, @class.Model.DoorZ);
                    class3.UpdateNeeded = true;
                    RoomUser class4 = @class.GetRoomUserByHabbo(@class.Owner);
                    if (class4 != null)
                    {
                        class3.MoveTo(class4.Coordinate);
                        class3.SetRot(Rotation.Calculate(class3.X, class3.Y, class4.X, class4.Y));
                    }
                    PhoenixEnvironment.GetGame().GetAchievementManager().UnlockAchievement(Session, 6u, 1);
                    Session.GetHabbo().CalledGuideBot = true;
                }
            }
        }
Esempio n. 12
0
 public override void OnTrigger(GameClient Session, RoomItem RoomItem_0, int int_0, bool bool_0)
 {
     if (RoomItem_0.ExtraData != "1" && RoomItem_0.GetBaseItem().VendingIds.Count >= 1 && RoomItem_0.InteractingUser == 0u)
     {
         if (Session != null)
         {
             RoomUser @class = RoomItem_0.GetRoom().GetRoomUserByHabbo(Session.GetHabbo().Id);
             if (@class == null)
             {
                 return;
             }
             if (!RoomItem_0.GetRoom().method_99(@class.X, @class.Y, RoomItem_0.GetX, RoomItem_0.GetY))
             {
                 if ([email protected])
                 {
                     return;
                 }
                 try
                 {
                     @class.MoveTo(RoomItem_0.SquareInFront);
                     return;
                 }
                 catch
                 {
                     return;
                 }
             }
             RoomItem_0.InteractingUser = Session.GetHabbo().Id;
             @class.CanWalk             = false;
             @class.ClearMovement(true);
             @class.SetRot(Rotation.Calculate(@class.X, @class.Y, RoomItem_0.GetX, RoomItem_0.GetY));
         }
         RoomItem_0.ReqUpdate(2);
         RoomItem_0.ExtraData = "1";
         RoomItem_0.UpdateState(false, true);
     }
 }
Esempio n. 13
0
        public void parse(GameClient Session, ClientMessage Event)
        {
            Room room = PhoenixEnvironment.GetGame().GetRoomManager().GetRoom(Session.GetHabbo().CurrentRoomId);

            if (room != null)
            {
                RoomUser roomUserByHabbo = room.GetRoomUserByHabbo(Session.GetHabbo().Id);
                if (roomUserByHabbo != null)
                {
                    roomUserByHabbo.Unidle();
                    int num  = Event.PopWiredInt32();
                    int num2 = Event.PopWiredInt32();
                    if (num != roomUserByHabbo.X || num2 != roomUserByHabbo.Y)
                    {
                        int rotation = Rotation.Calculate(roomUserByHabbo.X, roomUserByHabbo.Y, num, num2);
                        roomUserByHabbo.SetRot(rotation);
                        if (roomUserByHabbo.Riding != null && roomUserByHabbo.Target != null)
                        {
                            roomUserByHabbo.Target.SetRot(rotation);
                        }
                    }
                }
            }
        }
Esempio n. 14
0
        public void OnTrigger(GameClient Session, Item Item, int Request, bool HasRights)
        {
            if (Session == null)
            {
                return;
            }
            RoomUser User = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

            if (User == null)
            {
                return;
            }

            if (!((Math.Abs((User.X - Item.GetX)) >= 2) || (Math.Abs((User.Y - Item.GetY)) >= 2)))
            {
                User.SetRot(Rotation.Calculate(User.X, User.Y, Item.GetX, Item.GetY), false);
                if (User.RotBody % 2 != 0)
                {
                    User.MoveTo(Item.GetX + 1, Item.GetY);
                    return;
                }
                Room Room     = Item.GetRoom();
                var  NewPoint = new Point(0, 0);
                if (User.RotBody == 4)
                {
                    NewPoint = new Point(Item.GetX, Item.GetY + 1);
                }

                if (User.RotBody == 0)
                {
                    NewPoint = new Point(Item.GetX, Item.GetY - 1);
                }

                if (User.RotBody == 6)
                {
                    NewPoint = new Point(Item.GetX - 1, Item.GetY);
                }

                if (User.RotBody == 2)
                {
                    NewPoint = new Point(Item.GetX + 1, Item.GetY);
                }

                if (Room.GetGameMap().ValidTile(NewPoint.X, NewPoint.Y) &&
                    Room.GetGameMap().ItemCanBePlaced(NewPoint.X, NewPoint.Y) &&
                    Room.GetGameMap().CanRollItemHere(NewPoint.X, NewPoint.Y))
                {
                    double NewZ = Item.GetRoom().GetGameMap().SqAbsoluteHeight(NewPoint.X, NewPoint.Y);

                    /*var mMessage = new ServerMessage();
                     * mMessage.Init(Outgoing.ObjectOnRoller); // Cf
                     * mMessage.AppendInt32(Item.GetX);
                     * mMessage.AppendInt32(Item.GetY);
                     * mMessage.AppendInt32(NewPoint.X);
                     * mMessage.AppendInt32(NewPoint.Y);
                     * mMessage.AppendInt32(1);
                     * mMessage.AppendInt32(Item.Id);
                     * mMessage.AppendString(Item.GetZ.ToString().Replace(',', '.'));
                     * mMessage.AppendString(NewZ.ToString().Replace(',', '.'));
                     * mMessage.AppendInt32(0);
                     * Room.SendMessage(mMessage);*/

                    Room.SendPacket(new SlideObjectBundleComposer(Item.GetX, Item.GetY, Item.GetZ, NewPoint.X, NewPoint.Y, NewZ, 0, 0, Item.Id));

                    Item.GetRoom().GetRoomItemHandler().SetFloorItem(User.GetClient(), Item, NewPoint.X, NewPoint.Y, Item.Rotation, false, false, false);
                }
            }
            else
            {
                User.MoveTo(Item.GetX + 1, Item.GetY);
            }
        }
Esempio n. 15
0
        internal RoomUser DeployBot(RoomBot Bot, Pet PetData)
        {
            RoomUser BotUser = new RoomUser(0, room.RoomId, primaryPrivateUserID++, room, false);
            int PersonalID = secondaryPrivateUserID++;
            BotUser.InternalRoomID = PersonalID;
            //this.UserList[PersonalID] = BotUser;
            userlist.Add(PersonalID, BotUser);
            DynamicRoomModel Model = room.GetGameMap().Model;

            if ((Bot.X > 0 && Bot.Y > 0) && Bot.X < Model.MapSizeX && Bot.Y < Model.MapSizeY)
            {
                BotUser.SetPos(Bot.X, Bot.Y, Bot.Z);
                BotUser.SetRot(Bot.Rot, false);
            }
            else
            {
                Bot.X = Model.DoorX;
                Bot.Y = Model.DoorY;

                BotUser.SetPos(Model.DoorX, Model.DoorY, Model.DoorZ);
                BotUser.SetRot(Model.DoorOrientation, false);
            }

            BotUser.BotData = Bot;
            BotUser.BotAI = Bot.GenerateBotAI(BotUser.VirtualId);

            if (BotUser.IsPet)
            {

                BotUser.BotAI.Init((int)Bot.BotId, BotUser.VirtualId, room.RoomId, BotUser, room);
                BotUser.PetData = PetData;
                BotUser.PetData.VirtualId = BotUser.VirtualId;
            }
            else
            {
                BotUser.BotAI.Init(-1, BotUser.VirtualId, room.RoomId, BotUser, room);
            }

            UpdateUserStatus(BotUser, false);
            BotUser.UpdateNeeded = true;

            ServerMessage EnterMessage = new ServerMessage(28);
            EnterMessage.AppendInt32(1);
            BotUser.Serialize(EnterMessage, room.GetGameMap().gotPublicPool);
            room.SendMessage(EnterMessage);

            BotUser.BotAI.OnSelfEnterRoom();

            if (BotUser.BotData.AiType == AIType.Guide)
                room.guideBotIsCalled = true;
            if (BotUser.IsPet)
            {
                if (pets.ContainsKey(BotUser.PetData.PetId)) //Pet allready placed
                    pets[BotUser.PetData.PetId] = BotUser;
                else
                    pets.Add(BotUser.PetData.PetId, BotUser);

                petCount++;
            }

            return BotUser;
        }
Esempio n. 16
0
        public void HandleBreakDown(GameClient Session, Item Item, int Request, bool HasRights)
        {
            if (Session == null || Session.GetHabbo() == null || Item == null)
            {
                return;
            }

            Room Room = Session.GetHabbo().CurrentRoom;

            if (Room == null)
            {
                return;
            }

            RoomUser User = null;

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

            if (User == null)
            {
                return;
            }

            if (Gamemap.TilesTouching(Item.GetX, Item.GetY, User.X, User.Y))
            {
                if (Item.ExtraData == "")
                {
                    Item.ExtraData = "0";
                }

                if (Item.ExtraData == "0")
                {
                    int Minutes = RoleplayManager.NPACoolDown;

                    User.ClearMovement(true);
                    User.SetRot(Rotation.Calculate(User.Coordinate.X, User.Coordinate.Y, Item.GetX, Item.GetY), false);

                    // 135 Cycles approximately 1 minute
                    Item.ExtraData = "1";
                    Item.UpdateState(false, true);
                    Item.RequestUpdate(135 * Minutes, true);

                    // Start the nuking breakdown process.
                    object[] Params = { Session };
                    RoleplayManager.TimerManager.CreateTimer("nuking_bd", 1000, false, Params);

                    Session.Shout("*Começa a quebrar as portas do sistema NPA*", 4);
                }
                else
                {
                    Session.SendWhisper("Opa, parece que o interruptor foi usado recentemente. Por favor, tente novamente mais tarde!", 1);
                }
            }
            else
            {
                if (User.CanWalk)
                {
                    User.MoveTo(Item.SquareInFront);
                }
            }
        }
Esempio n. 17
0
        public static RoomUser DeployBotByID(int RoleplayBotsID, string SpawnType = "default", int RoomID = 0)
        {
            lock (SyncLock)
            {
                try
                {
                    if (!RoleplayBotManager.CachedRoleplayBots.ContainsKey(RoleplayBotsID))
                    {
                        return(null);
                    }

                    #region If the bot already exists simply transfer it
                    RoleplayBot DeployingBot = RoleplayBotManager.CachedRoleplayBots[RoleplayBotsID];

                    if (DeployingBot.DRoomUser != null)
                    {
                        if (DeployingBot.DRoom != null)
                        {
                            if (DeployingBot.DRoom.Id != RoomID)
                            {
                                RoleplayBotManager.TransportDeployedBot(DeployingBot.DRoomUser, (RoomID == 0 ? DeployingBot.SpawnId : RoomID));
                            }
                        }
                        return(null);
                    }
                    #endregion

                    Room RoleplayBotsRoom;

                    if (RoomID == 0)
                    {
                        if (RoleplayManager.GenerateRoom(DeployingBot.SpawnId, false) == null)
                        {
                            return(null);
                        }
                        else
                        {
                            RoleplayBotsRoom = RoleplayManager.GenerateRoom(DeployingBot.SpawnId, false);
                        }
                    }
                    else
                    {
                        if (RoleplayManager.GenerateRoom(RoomID, false) == null)
                        {
                            return(null);
                        }
                        else
                        {
                            RoleplayBotsRoom = RoleplayManager.GenerateRoom(RoomID, false);
                        }

                        DeployingBot.SpawnId = RoleplayBotsRoom.RoomId;
                    }

                    #region Misc variables
                    RoomUserManager     RoomManager          = RoleplayBotsRoom.GetRoomUserManager();
                    RoomUser            BotsRoomUserInstance = new RoomUser(0, RoleplayBotsRoom.RoomId, RoomManager.primaryPrivateUserID++, RoleplayBotsRoom);
                    List <RandomSpeech> BotsSpeech           = new List <RandomSpeech>();
                    int BotsPersonalID = RoomManager.secondaryPrivateUserID++;
                    BotsRoomUserInstance.InternalRoomID = BotsPersonalID;
                    RoomManager._users.TryAdd(BotsPersonalID, BotsRoomUserInstance);
                    DynamicRoomModel RoleplayBotsModel = RoleplayBotsRoom.GetGameMap().Model;
                    #endregion

                    #region Spawning & Positioning
                    if (DeployingBot.Dead)
                    {
                        RoleplayManager.SpawnBeds(null, "hosptl_bed", BotsRoomUserInstance);
                    }
                    else
                    {
                        #region Spawn at origin
                        if (SpawnType == "default")
                        {
                            if ((DeployingBot.X > 0 && DeployingBot.Y > 0) && DeployingBot.X < RoleplayBotsModel.MapSizeX && DeployingBot.Y < RoleplayBotsModel.MapSizeY)
                            {
                                BotsRoomUserInstance.SetPos(DeployingBot.X, DeployingBot.Y, DeployingBot.Z);
                                BotsRoomUserInstance.SetRot(DeployingBot.SpawnRot, false);
                            }
                            else
                            {
                                DeployingBot.X = RoleplayBotsModel.DoorX;
                                DeployingBot.Y = RoleplayBotsModel.DoorY;

                                BotsRoomUserInstance.SetPos(RoleplayBotsModel.DoorX, RoleplayBotsModel.DoorY, RoleplayBotsModel.DoorZ);
                                BotsRoomUserInstance.SetRot(RoleplayBotsModel.DoorOrientation, false);
                            }
                        }
                        #endregion

                        #region Spawn at work item
                        if (SpawnType == "workitem")
                        {
                            Item Item;
                            if (DeployingBot.GetStopWorkItem(RoleplayBotsRoom, out Item))
                            {
                                var Point = new Point(Item.GetX, Item.GetY);

                                BotsRoomUserInstance.X = Point.X;
                                BotsRoomUserInstance.Y = Point.Y;

                                BotsRoomUserInstance.SetPos(Point.X, Point.Y, RoleplayBotsRoom.GetGameMap().GetHeightForSquare(Point));
                                BotsRoomUserInstance.SetRot(Item.Rotation, false);
                            }
                            else
                            {
                                BotsRoomUserInstance.X = RoleplayBotsModel.DoorX;
                                BotsRoomUserInstance.Y = RoleplayBotsModel.DoorY;

                                BotsRoomUserInstance.SetPos(RoleplayBotsModel.DoorX, RoleplayBotsModel.DoorY, RoleplayBotsModel.DoorZ);
                                BotsRoomUserInstance.SetRot(RoleplayBotsModel.DoorOrientation, false);
                            }
                        }
                        #endregion

                        #region Spawn at owner

                        if (SpawnType == "owner" && DeployingBot.Owner != null)
                        {
                            RoomUser OwnerInstance = DeployingBot.Owner.GetRoomUser();
                            int      X             = OwnerInstance.SquareInFront.X;
                            int      Y             = OwnerInstance.SquareInFront.Y;
                            double   Z             = OwnerInstance.Z;

                            if ((OwnerInstance != null) && (X > 0 && Y > 0) && X < RoleplayBotsModel.MapSizeX && Y < RoleplayBotsModel.MapSizeY)
                            {
                                BotsRoomUserInstance.SetPos(X, Y, Z);
                                BotsRoomUserInstance.SetRot(DeployingBot.SpawnRot, false);
                            }
                            else
                            {
                                X = OwnerInstance.X;
                                Y = OwnerInstance.Y;
                                DeployingBot.X = X;
                                DeployingBot.Y = Y;

                                BotsRoomUserInstance.SetPos(X, Y, OwnerInstance.Z);
                                BotsRoomUserInstance.SetRot(DeployingBot.SpawnRot, false);
                            }
                        }
                        #endregion
                    }
                    #endregion

                    #region Generate Roleplay Bot's data, timers

                    BotsRoomUserInstance.BotData = new RoomBot(DeployingBot.Id, DeployingBot.SpawnId, DeployingBot.AITypeString, "stand", DeployingBot.Name, "Motto", DeployingBot.Figure, DeployingBot.X, DeployingBot.Y, DeployingBot.Z, DeployingBot.SpawnRot, DeployingBot.X, DeployingBot.Y, DeployingBot.X, DeployingBot.Y, ref BotsSpeech, DeployingBot.Gender, 0, 0, false, 0, false, 0);
                    BotsRoomUserInstance.RPBotAI = RoleplayBotManager.GetRoleplayBotAI(DeployingBot.AIType, BotsRoomUserInstance.VirtualId);
                    BotsRoomUserInstance.BotAI   = BotsRoomUserInstance.BotData.GenerateBotAI(BotsRoomUserInstance.VirtualId);

                    if (DeployingBot.IsPet)
                    {
                        BotsRoomUserInstance.PetData           = DeployingBot.PetInstance;
                        BotsRoomUserInstance.PetData.VirtualId = BotsRoomUserInstance.VirtualId;
                    }

                    BotsRoomUserInstance.RPBotAI.Init(DeployingBot.Id, DeployingBot, BotsRoomUserInstance.VirtualId, DeployingBot.SpawnId, BotsRoomUserInstance, RoleplayBotsRoom);

                    BotsRoomUserInstance.BotAI.Init(DeployingBot.Id, BotsRoomUserInstance.VirtualId, DeployingBot.SpawnId, BotsRoomUserInstance, RoleplayBotsRoom);

                    if (DeployingBot.TimerManager == null)
                    {
                        DeployingBot.TimerManager = new BotTimerManager(DeployingBot);
                    }
                    else
                    {
                        DeployingBot.TimerManager.CachedBot = DeployingBot;
                    }

                    if (DeployingBot.CooldownManager == null)
                    {
                        DeployingBot.CooldownManager = new BotCooldownManager(DeployingBot);
                    }
                    else
                    {
                        DeployingBot.CooldownManager.CachedBot = DeployingBot;
                    }

                    RoomManager.UpdateUserStatus(BotsRoomUserInstance, false);
                    BotsRoomUserInstance.UpdateNeeded = true;

                    #region Set general variables
                    DeployingBot.Teleporting        = false;
                    DeployingBot.TeleporterEntering = null;
                    DeployingBot.TeleporterExiting  = null;
                    DeployingBot.Teleported         = false;
                    DeployingBot.Deployed           = true;
                    DeployingBot.RoomStayTime       = new CryptoRandom().Next(0, DeployingBot.RoomStayInterval);
                    DeployingBot.FollowCooldown     = new CryptoRandom().Next(0, DeployingBot.FollowInterval);
                    DeployingBot.AttackCooldown     = new CryptoRandom().Next(0, DeployingBot.AttackInterval);
                    DeployingBot.RoamCooldown       = new CryptoRandom().Next(0, DeployingBot.RoamInterval);
                    DeployingBot.RoomStayTime       = new CryptoRandom().Next(0, DeployingBot.RoomStayInterval);
                    DeployingBot.LookCooldown       = new CryptoRandom().Next(0, DeployingBot.LookCooldown);
                    #endregion

                    #endregion

                    #region Compose Roleplay Bot's visibility & insert into deployed bots

                    DeployingBot.Invisible = false;

                    if (!DeployingBot.Invisible)
                    {
                        RoleplayBotsRoom.SendMessage(new UsersComposer(BotsRoomUserInstance));
                    }


                    if (RoomManager._bots.ContainsKey(DeployingBot.Id))
                    {
                        RoomManager._bots[DeployingBot.Id] = BotsRoomUserInstance;
                    }
                    else
                    {
                        RoomManager._bots.TryAdd(DeployingBot.Id, BotsRoomUserInstance);
                    }

                    RoleplayBotsRoom.SendMessage(new DanceComposer(BotsRoomUserInstance, 0));

                    #endregion

                    #region Attach RoleplayBot Instance to RoomUser & deliver its respective data
                    BotsRoomUserInstance.RPBotData = DeployingBot;
                    if (!RoleplayBotManager.DeployedRoleplayBots.ContainsKey(DeployingBot.Id))
                    {
                        RoleplayBotManager.DeployedRoleplayBots.TryAdd(DeployingBot.Id, BotsRoomUserInstance);
                    }
                    else
                    {
                        RoomUser NullBot;
                        RoleplayBotManager.ClearRoleplayBotClones(DeployingBot.Id);
                        RoleplayBotManager.DeployedRoleplayBots.TryAdd(DeployingBot.Id, BotsRoomUserInstance);
                    }


                    #region Start roaming
                    if (DeployingBot.RoamBot)
                    {
                        DeployingBot.MoveRandomly();
                    }
                    #endregion

                    DeployingBot.DRoomUser.GetBotRoleplayAI().OnDeployed(DeployingBot.Owner);

                    #endregion

                    return(BotsRoomUserInstance);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
            return(null);
        }
Esempio n. 18
0
        /// <summary>
        ///     Handles the <see cref="E:UserAdd" /> event.
        /// </summary>
        /// <param name="user"></param>
        private void OnUserAdd(RoomUser user)
        {
            try
            {
                if (user?.GetClient() == null || user.GetClient().GetHabbo() == null)
                    return;

                GameClient client = user.GetClient();

                if (client?.GetHabbo() == null || _userRoom == null)
                    return;

                if (!user.IsSpectator)
                {
                    DynamicRoomModel model = _userRoom.GetGameMap().Model;
                    if (model == null) return;
                    user.SetPos(model.DoorX, model.DoorY, model.DoorZ);
                    user.SetRot(model.DoorOrientation, false);

                    user.AddStatus(_userRoom.CheckRights(client, true) ? "flatctrl 4" : "flatctrl 1", string.Empty);

                    user.CurrentItemEffect = ItemEffectType.None;

                    if (!user.IsBot && client.GetHabbo().IsTeleporting)
                    {
                        client.GetHabbo().IsTeleporting = false;
                        client.GetHabbo().TeleportingRoomId = 0;

                        RoomItem item = _userRoom.GetRoomItemHandler().GetItem(client.GetHabbo().TeleporterId);

                        if (item != null)
                        {
                            item.ExtraData = "2";
                            item.UpdateState(false, true);
                            user.SetPos(item.X, item.Y, item.Z);
                            user.SetRot(item.Rot, false);
                            item.InteractingUser2 = client.GetHabbo().Id;
                            item.ExtraData = "0";
                            item.UpdateState(false, true);
                        }
                    }
                    if (!user.IsBot && client.GetHabbo().IsHopping)
                    {
                        client.GetHabbo().IsHopping = false;
                        client.GetHabbo().HopperId = 0;

                        RoomItem item2 = _userRoom.GetRoomItemHandler().GetItem(client.GetHabbo().HopperId);

                        if (item2 != null)
                        {
                            item2.ExtraData = "1";
                            item2.UpdateState(false, true);
                            user.SetPos(item2.X, item2.Y, item2.Z);
                            user.SetRot(item2.Rot, false);
                            user.AllowOverride = false;
                            item2.InteractingUser2 = client.GetHabbo().Id;
                            item2.ExtraData = "2";
                            item2.UpdateState(false, true);
                        }
                    }
                    if (!user.IsSpectator)
                    {
                        ServerMessage serverMessage =
                            new ServerMessage(LibraryParser.OutgoingRequest("SetRoomUserMessageComposer"));
                        serverMessage.AppendInteger(1);
                        user.Serialize(serverMessage, _userRoom.GetGameMap().GotPublicPool);
                        _userRoom.SendMessage(serverMessage);
                    }
                    if (!user.IsBot)
                    {
                        ServerMessage serverMessage2 = new ServerMessage();
                        serverMessage2.Init(LibraryParser.OutgoingRequest("UpdateUserDataMessageComposer"));
                        serverMessage2.AppendInteger(user.VirtualId);
                        serverMessage2.AppendString(client.GetHabbo().Look);
                        serverMessage2.AppendString(client.GetHabbo().Gender.ToLower());
                        serverMessage2.AppendString(client.GetHabbo().Motto);
                        serverMessage2.AppendInteger(client.GetHabbo().AchievementPoints);
                        _userRoom.SendMessage(serverMessage2);
                    }
                    if (_userRoom.RoomData.Owner != client.GetHabbo().UserName)
                    {
                        Yupi.GetGame()
                            .GetAchievementManager()
                            .ProgressUserAchievement(client, "ACH_RoomEntry", 1);
                    }
                }
                if (client.GetHabbo().GetMessenger() != null)
                    client.GetHabbo().GetMessenger().OnStatusChanged(true);
                client.GetMessageHandler().OnRoomUserAdd();

                //if (client.GetHabbo().HasFuse("fuse_mod")) client.GetHabbo().GetAvatarEffectsInventoryComponent().ActivateCustomEffect(102);
                //if (client.GetHabbo().Rank == Convert.ToUInt32(Yupi.GetDbConfig().DbData["ambassador.minrank"])) client.GetHabbo().GetAvatarEffectsInventoryComponent().ActivateCustomEffect(178);

                if (OnUserEnter != null)
                    OnUserEnter(user, null);
                if (_userRoom.GotMusicController() && _userRoom.GotMusicController())
                    _userRoom.GetRoomMusicController().OnNewUserEnter(user);
                _userRoom.OnUserEnter(user);
            }
            catch (Exception ex)
            {
                ServerLogManager.LogCriticalException(ex.ToString());
            }
        }
Esempio n. 19
0
        public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet)
        {
            Room Room = null;

            if (!PlusEnvironment.GetGame().GetRoomManager().TryGetRoom(Session.GetHabbo().CurrentRoomId, out Room))
            {
                return;
            }

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

            if (User == null)
            {
                return;
            }

            User.UnIdle();

            if (Session.GetRoleplay().CombatMode)
            {
                Session.GetRoleplay().InCombat = true;
            }

            if (Session.GetRoleplay().IsWorkingOut)
            {
                return;
            }

            int X = Packet.PopInt();
            int Y = Packet.PopInt();

            if ((X == User.X && Y == User.Y) || User.IsWalking || User.RidingHorse)
            {
                return;
            }

            int Rot = Rotation.Calculate(User.X, User.Y, X, Y);

            User.SetRot(Rot, false);
            User.UpdateNeeded = true;

            if (User.RidingHorse)
            {
                RoomUser Horse = Session.GetHabbo().CurrentRoom.GetRoomUserManager().GetRoomUserByVirtualId(User.HorseID);
                if (Horse != null)
                {
                    Horse.SetRot(Rot, false);
                    Horse.UpdateNeeded = true;
                }
            }

            if (User != null)
            {
                if (User.GetClient() != null)
                {
                    if (User.GetClient().GetRoleplay() != null)
                    {
                        User.GetClient().GetRoleplay().LastCoordinates = User.X + "," + User.Y + "," + User.Z + "," + Rot;
                    }
                }
            }
        }
Esempio n. 20
0
        public override void OnUserSay(RoomUser User, string Message)
        {
            if (User == null)
            {
                return;
            }

            RoomUser Pet = GetRoomUser();

            if (Pet == null)
            {
                return;
            }

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

            if (Message.ToLower().Equals(Pet.PetData.Name.ToLower()))
            {
                Pet.SetRot(Rotation.Calculate(Pet.X, Pet.Y, User.X, User.Y), false);
                return;
            }

            //if (!Pet.Statusses.ContainsKey("gst thr"))
            //    Pet.Statusses.Add("gst, TextHandling.GetString(Pet.Z));

            if ((Message.ToLower().StartsWith(Pet.PetData.Name.ToLower() + " ") && User.GetClient().GetHabbo().Username.ToLower() == Pet.PetData.OwnerName.ToLower()) || (Message.ToLower().StartsWith(Pet.PetData.Name.ToLower() + " ") && BiosEmuThiago.GetGame().GetChatManager().GetPetCommands().TryInvoke(Message.Substring(Pet.PetData.Name.ToLower().Length + 1)) == 8))
            {
                string Command = Message.Substring(Pet.PetData.Name.ToLower().Length + 1);

                int r = RandomNumber.GenerateRandom(1, 8); // Made Random
                if (Pet.PetData.Energy > 10 && r < 6 || Pet.PetData.Level > 15 || BiosEmuThiago.GetGame().GetChatManager().GetPetCommands().TryInvoke(Command) == 8)
                {
                    RemovePetStatus(); // Remove Status

                    switch (BiosEmuThiago.GetGame().GetChatManager().GetPetCommands().TryInvoke(Command))
                    {
                        // TODO - Level you can use the commands at...



                        #region free

                    case 1:
                        RemovePetStatus();

                        //int randomX = BiosEmuThiago.GetRandomNumber(0, GetRoom().Model.MapSizeX);
                        //int randomY = BiosEmuThiago.GetRandomNumber(0, GetRoom().Model.MapSizeY);
                        Point nextCoord = GetRoom().GetGameMap().GetRandomWalkableSquare();
                        Pet.MoveTo(nextCoord.X, nextCoord.Y);

                        Pet.PetData.Addexperience(10);     // Give XP

                        break;

                        #endregion

                        #region here

                    case 2:

                        RemovePetStatus();

                        int NewX = User.X;
                        int NewY = User.Y;

                        ActionTimer = 30;     // Reset ActionTimer

                        #region Rotation

                        if (User.RotBody == 4)
                        {
                            NewY = User.Y + 1;
                        }
                        else if (User.RotBody == 0)
                        {
                            NewY = User.Y - 1;
                        }
                        else if (User.RotBody == 6)
                        {
                            NewX = User.X - 1;
                        }
                        else if (User.RotBody == 2)
                        {
                            NewX = User.X + 1;
                        }
                        else if (User.RotBody == 3)
                        {
                            NewX = User.X + 1;
                            NewY = User.Y + 1;
                        }
                        else if (User.RotBody == 1)
                        {
                            NewX = User.X + 1;
                            NewY = User.Y - 1;
                        }
                        else if (User.RotBody == 7)
                        {
                            NewX = User.X - 1;
                            NewY = User.Y - 1;
                        }
                        else if (User.RotBody == 5)
                        {
                            NewX = User.X - 1;
                            NewY = User.Y + 1;
                        }

                        #endregion

                        Pet.PetData.Addexperience(10);     // Give XP

                        Pet.MoveTo(NewX, NewY);
                        break;

                        #endregion

                        #region sit

                    case 3:
                        // Remove Status
                        RemovePetStatus();

                        Pet.PetData.Addexperience(10);     // Give XP

                        // Add Status
                        Pet.Statusses.Add("sit", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;

                        ActionTimer = 25;
                        EnergyTimer = 10;
                        break;

                        #endregion

                        #region lay

                    case 4:
                        // Remove Status
                        RemovePetStatus();

                        // Add Status
                        Pet.Statusses.Add("lay", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;

                        Pet.PetData.Addexperience(10);     // Give XP

                        ActionTimer = 30;
                        EnergyTimer = 5;
                        break;

                        #endregion

                        #region dead

                    case 5:
                        // Remove Status
                        RemovePetStatus();

                        // Add Status
                        Pet.Statusses.Add("ded", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;

                        Pet.PetData.Addexperience(10);     // Give XP

                        // Don't move to speak for a set amount of time.
                        SpeechTimer = 45;
                        ActionTimer = 30;

                        break;

                        #endregion

                        #region sleep

                    case 6:
                        // Remove Status
                        RemovePetStatus();

                        Pet.Chat("ZzzZZZzzzzZzz", false);
                        Pet.Statusses.Add("lay", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;

                        Pet.PetData.Addexperience(10);     // Give XP

                        // Don't move to speak for a set amount of time.
                        EnergyTimer = 5;
                        SpeechTimer = 30;
                        ActionTimer = 45;
                        break;

                        #endregion

                        #region jump

                    case 7:
                        // Remove Status
                        RemovePetStatus();

                        // Add Status
                        Pet.Statusses.Add("jmp", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;

                        Pet.PetData.Addexperience(10);     // Give XP

                        // Don't move to speak for a set amount of time.
                        EnergyTimer = 5;
                        SpeechTimer = 10;
                        ActionTimer = 5;
                        break;

                        #endregion

                        #region breed
                    case 46:

                        break;
                        #endregion

                    default:
                        string[] Speech = BiosEmuThiago.GetGame().GetChatManager().GetPetLocale().GetValue("pet.unknowncommand");

                        Pet.Chat(Speech[RandomNumber.GenerateRandom(0, Speech.Length - 1)], false);
                        break;
                    }
                    Pet.PetData.PetEnergy(false); // Remove Energy
                }
                else
                {
                    RemovePetStatus(); // Remove Status

                    if (Pet.PetData.Energy < 10)
                    {
                        //GetRoomUser refers to the pet
                        //User refers to Owner

                        RoomUser UserRiding = GetRoom().GetRoomUserManager().GetRoomUserByVirtualId(Pet.HorseID);;

                        if (UserRiding.RidingHorse)
                        {
                            Pet.Chat("Getof my sit", false);
                            UserRiding.RidingHorse = false;
                            Pet.RidingHorse        = false;
                            UserRiding.ApplyEffect(-1);
                            UserRiding.MoveTo(new Point(GetRoomUser().X + 1, GetRoomUser().Y + 1));
                        }

                        string[] Speech = BiosEmuThiago.GetGame().GetChatManager().GetPetLocale().GetValue("pet.tired");

                        var RandomSpeech = new Random();
                        Pet.Chat(Speech[RandomNumber.GenerateRandom(0, Speech.Length - 1)], false);

                        Pet.Statusses.Add("lay", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;

                        SpeechTimer = 50;
                        ActionTimer = 45;
                        EnergyTimer = 5;
                    }
                    else
                    {
                        string[] Speech = BiosEmuThiago.GetGame().GetChatManager().GetPetLocale().GetValue("pet.lazy");

                        var RandomSpeech = new Random();
                        Pet.Chat(Speech[RandomNumber.GenerateRandom(0, Speech.Length - 1)], false);

                        Pet.PetData.PetEnergy(false); // Remove Energy
                    }
                }
            }
            //Pet = null;
        }
Esempio n. 21
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);
                        }
                    }
                }
            }
        }
Esempio n. 22
0
        public void OnTrigger(GameClient Session, RoomItem Item, int Request, bool HasRights)
        {
            if (Session == null)
            {
                return;
            }
            RoomUser roomUserByHabbo = Item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id);

            if (roomUserByHabbo == null)
            {
                return;
            }
            checked
            {
                if (Math.Abs(roomUserByHabbo.X - Item.GetX) < 2 && Math.Abs(roomUserByHabbo.Y - Item.GetY) < 2)
                {
                    roomUserByHabbo.SetRot(PathFinder.CalculateRotation(roomUserByHabbo.X, roomUserByHabbo.Y, Item.GetX, Item.GetY), false);
                    Room  room  = Item.GetRoom();
                    Point point = new Point(0, 0);
                    if (roomUserByHabbo.RotBody == 4)
                    {
                        point = new Point(Item.GetX, Item.GetY + 1);
                    }
                    else
                    {
                        if (roomUserByHabbo.RotBody == 0)
                        {
                            point = new Point(Item.GetX, Item.GetY - 1);
                        }
                        else
                        {
                            if (roomUserByHabbo.RotBody == 6)
                            {
                                point = new Point(Item.GetX - 1, Item.GetY);
                            }
                            else
                            {
                                if (roomUserByHabbo.RotBody != 2)
                                {
                                    return;
                                }
                                point = new Point(Item.GetX + 1, Item.GetY);
                            }
                        }
                    }
                    if (room.GetGameMap().validTile(point.X, point.Y))
                    {
                        double        num           = Item.GetRoom().GetGameMap().SqAbsoluteHeight(point.X, point.Y);
                        ServerMessage serverMessage = new ServerMessage();
                        serverMessage.Init(Outgoing.ItemAnimationMessageComposer);
                        serverMessage.AppendInt32(Item.GetX);
                        serverMessage.AppendInt32(Item.GetY);
                        serverMessage.AppendInt32(point.X);
                        serverMessage.AppendInt32(point.Y);
                        serverMessage.AppendInt32(1);
                        serverMessage.AppendUInt(Item.Id);
                        serverMessage.AppendString(Item.GetZ.ToString(CyberEnvironment.cultureInfo));
                        serverMessage.AppendString(num.ToString(CyberEnvironment.cultureInfo));
                        serverMessage.AppendInt32(0);
                        room.SendMessage(serverMessage);
                        Item.GetRoom().GetRoomItemHandler().SetFloorItem(roomUserByHabbo.GetClient(), Item, point.X, point.Y, Item.Rot, false, false, false);
                        return;
                    }
                }
                else
                {
                    roomUserByHabbo.MoveTo(Item.GetX + 1, Item.GetY);
                }
            }
        }
Esempio n. 23
0
        internal RoomUser DeployBot(RoomBot Bot, Pet PetData)
        {
            int num2;
            this.primaryPrivateUserID = (num2 = this.primaryPrivateUserID) + 1;
            RoomUser BotUser = new RoomUser(0, this.room.RoomId, num2, this.room, false);
            this.secondaryPrivateUserID = (num2 = this.secondaryPrivateUserID) + 1;
            int key = num2;
            BotUser.InternalRoomID = key;
            this.userlist.Add(key, BotUser);
            DynamicRoomModel Model = this.room.GetGameMap().Model;
            Point myPoint = new Point(Bot.X,Bot.Y);
            if ((Bot.X > 0 && Bot.Y > 0) && Bot.X < Model.MapSizeX && Bot.Y < Model.MapSizeY)
            {
                room.GetGameMap().AddUserToMap(BotUser, myPoint);
                BotUser.SetPos(Bot.X, Bot.Y, Bot.Z);
                BotUser.SetRot(Bot.Rot, false);
            }
            else
            {
                Bot.X = Model.DoorX;
                Bot.Y = Model.DoorY;

                BotUser.SetPos(Model.DoorX, Model.DoorY, Model.DoorZ);
                BotUser.SetRot(Model.DoorOrientation, false);
            }

            BotUser.BotData = Bot;
            BotUser.BotAI = Bot.GenerateBotAI(BotUser.VirtualId,(int)Bot.BotId);

            if (BotUser.IsPet)
            {

                BotUser.BotAI.Init(Bot.BotId, BotUser.VirtualId, room.RoomId, BotUser, room);
                BotUser.PetData = PetData;
                BotUser.PetData.VirtualId = BotUser.VirtualId;
            }
            else
            {
                BotUser.BotAI.Init(Bot.BotId, BotUser.VirtualId, room.RoomId, BotUser, room);
            }

            this.UpdateUserStatus(BotUser, false);
            BotUser.UpdateNeeded = true;

            ServerMessage EnterMessage = new ServerMessage(Outgoing.PlaceBot);
            EnterMessage.AppendInt32(1);
            BotUser.Serialize(EnterMessage, room.GetGameMap().gotPublicPool);
            room.SendMessage(EnterMessage);

            BotUser.BotAI.OnSelfEnterRoom();

            if (BotUser.IsPet)
            {
                if (pets.ContainsKey(BotUser.PetData.PetId)) //Pet allready placed
                    pets[BotUser.PetData.PetId] = BotUser;
                else
                    pets.Add(BotUser.PetData.PetId, BotUser);

                petCount++;
            }
            if (BotUser.BotData.AiType == AIType.Generic)
            {
                if (bots.ContainsKey(BotUser.BotData.BotId))
                    bots[BotUser.BotData.BotId] = BotUser;
                else
                {
                    bots.Add(BotUser.BotData.BotId, BotUser);
                }

                EnterMessage.Init(Outgoing.Dance);
                EnterMessage.AppendInt32(BotUser.VirtualId);
                EnterMessage.AppendInt32(BotUser.BotData.DanceId);
                room.SendMessage(EnterMessage);
                petCount++;
            }

            return BotUser;
        }
Esempio n. 24
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;
            }
        }
Esempio n. 25
0
        internal override void OnUserSay(Rooms.RoomUser User, string Message)
        {
            RoomUser Pet = GetRoomUser();

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


            if (Message.ToLower().Equals(Pet.PetData.Name.ToLower()))
            {
                Pet.SetRot(Rotation.Calculate(Pet.X, Pet.Y, User.X, User.Y), false);
                return;
            }

            if ((Message.ToLower().StartsWith(Pet.PetData.Name.ToLower() + " ") && User.GetClient().GetHabbo().Username.ToLower() == GetRoomUser().PetData.OwnerName.ToLower()) || (Message.ToLower().StartsWith(Pet.PetData.Name.ToLower() + " ") && PetCommandHandeler.TryInvoke(Message.Substring(Pet.PetData.Name.ToLower().Length + 1)) == 8))
            {
                string Command = Message.Substring(Pet.PetData.Name.ToLower().Length + 1);

                int r = FirewindEnvironment.GetRandomNumber(1, 8); // Made Random
                if (Pet.PetData.Energy > 10 && r < 6 || Pet.PetData.Level > 15 || PetCommandHandeler.TryInvoke(Command) == 8)
                {
                    RemovePetStatus(); // Remove Status

                    switch (PetCommandHandeler.TryInvoke(Command))
                    {
                        // TODO - Level you can use the commands at...

                        #region free
                    case 1:
                        RemovePetStatus();

                        //int randomX = FirewindEnvironment.GetRandomNumber(0, GetRoom().Model.MapSizeX);
                        //int randomY = FirewindEnvironment.GetRandomNumber(0, GetRoom().Model.MapSizeY);
                        Point nextCoord = GetRoom().GetGameMap().getRandomWalkableSquare();
                        Pet.MoveTo(nextCoord.X, nextCoord.Y);

                        Pet.PetData.AddExpirience(10);     // Give XP

                        break;
                        #endregion

                        #region here
                    case 2:

                        RemovePetStatus();

                        int NewX = User.X;
                        int NewY = User.Y;

                        ActionTimer = 30;     // Reset ActionTimer

                        #region Rotation
                        if (User.RotBody == 4)
                        {
                            NewY = User.Y + 1;
                        }
                        else if (User.RotBody == 0)
                        {
                            NewY = User.Y - 1;
                        }
                        else if (User.RotBody == 6)
                        {
                            NewX = User.X - 1;
                        }
                        else if (User.RotBody == 2)
                        {
                            NewX = User.X + 1;
                        }
                        else if (User.RotBody == 3)
                        {
                            NewX = User.X + 1;
                            NewY = User.Y + 1;
                        }
                        else if (User.RotBody == 1)
                        {
                            NewX = User.X + 1;
                            NewY = User.Y - 1;
                        }
                        else if (User.RotBody == 7)
                        {
                            NewX = User.X - 1;
                            NewY = User.Y - 1;
                        }
                        else if (User.RotBody == 5)
                        {
                            NewX = User.X - 1;
                            NewY = User.Y + 1;
                        }
                        #endregion

                        Pet.PetData.AddExpirience(10);     // Give XP

                        Pet.MoveTo(NewX, NewY);
                        break;
                        #endregion

                        #region sit
                    case 3:
                        // Remove Status
                        RemovePetStatus();

                        Pet.PetData.AddExpirience(10);     // Give XP

                        // Add Status
                        Pet.Statusses.Add("sit", TextHandling.GetString(Pet.Z));
                        ActionTimer = 25;
                        EnergyTimer = 10;
                        break;
                        #endregion

                        #region lay
                    case 4:
                        // Remove Status
                        RemovePetStatus();

                        // Add Status
                        Pet.Statusses.Add("lay", TextHandling.GetString(Pet.Z));

                        Pet.PetData.AddExpirience(10);     // Give XP

                        ActionTimer = 30;
                        EnergyTimer = 5;
                        break;
                        #endregion

                        #region dead
                    case 5:
                        // Remove Status
                        RemovePetStatus();

                        // Add Status
                        Pet.Statusses.Add("ded", TextHandling.GetString(Pet.Z));

                        Pet.PetData.AddExpirience(10);     // Give XP

                        // Don't move to speak for a set amount of time.
                        SpeechTimer = 45;
                        ActionTimer = 30;

                        break;
                        #endregion

                        #region sleep
                    case 6:
                        // Remove Status
                        RemovePetStatus();

                        Pet.Chat(null, "ZzzZZZzzzzZzz", false);
                        Pet.Statusses.Add("lay", TextHandling.GetString(Pet.Z));

                        Pet.PetData.AddExpirience(10);     // Give XP

                        // Don't move to speak for a set amount of time.
                        EnergyTimer = 5;
                        SpeechTimer = 30;
                        ActionTimer = 45;
                        break;
                        #endregion

                        #region jump
                    case 7:
                        // Remove Status
                        RemovePetStatus();

                        // Add Status
                        Pet.Statusses.Add("jmp", TextHandling.GetString(Pet.Z));

                        Pet.PetData.AddExpirience(10);     // Give XP

                        // Don't move to speak for a set amount of time.
                        EnergyTimer = 5;
                        SpeechTimer = 10;
                        ActionTimer = 5;
                        break;
                        #endregion


                    default:
                        string[] Speech = PetLocale.GetValue("pet.unknowncommand");

                        Random RandomSpeech = new Random();
                        Pet.Chat(null, Speech[RandomSpeech.Next(0, Speech.Length - 1)], false);
                        break;
                    }
                    Pet.PetData.PetEnergy(false); // Remove Energy
                    Pet.PetData.PetEnergy(false); // Remove Energy
                }
                else
                {
                    RemovePetStatus(); // Remove Status

                    if (Pet.PetData.Energy < 10)
                    {
                        string[] Speech = PetLocale.GetValue("pet.tired");

                        Random RandomSpeech = new Random();
                        Pet.Chat(null, Speech[RandomSpeech.Next(0, Speech.Length - 1)], false);

                        Pet.Statusses.Add("lay", TextHandling.GetString(Pet.Z));

                        SpeechTimer = 50;
                        ActionTimer = 45;
                        EnergyTimer = 5;
                    }
                    else
                    {
                        string[] Speech = PetLocale.GetValue("pet.lazy");

                        Random RandomSpeech = new Random();
                        Pet.Chat(null, Speech[RandomSpeech.Next(0, Speech.Length - 1)], false);

                        Pet.PetData.PetEnergy(false); // Remove Energy
                    }
                }
            }
            //Pet = null;
        }
Esempio n. 26
0
        public void OnTrigger(GameClient Session, Item Item, int Request, bool HasRights)
        {
            if (Session == null)
            {
                return;
            }

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

            if (User == null)
            {
                return;
            }

            if (Session.GetHabbo() == null)
            {
                return;
            }

            string Type = Item.DeliveryType;

            if (!Gamemap.TilesTouching(Item.GetX, Item.GetY, User.Coordinate.X, User.Coordinate.Y))
            {
                User.MoveTo(Item.SquareInFront);
            }
            else
            {
                User.SetRot(Rotation.Calculate(User.Coordinate.X, User.Coordinate.Y, Item.GetX, Item.GetY), false);

                switch (Type.ToLower())
                {
                case "weapon":
                case "arma":
                case "armas":
                {
                    if (!GroupManager.HasJobCommand(Session, "weapon") && !Session.GetHabbo().GetPermissions().HasRight("offer_anything"))
                    {
                        Session.SendWhisper("Apenas um trabalhador da loja de armas está certificado para abrir esta caixa de entrega!", 1);
                        break;
                    }

                    var Weapon = RoleplayManager.DeliveryWeapon;

                    if (Weapon != null)
                    {
                        Session.Shout("*Abre a caixa de entrega e tira um novo estoque de " + Weapon.PublicName + "*", 4);
                    }
                    else
                    {
                        Session.SendWhisper("Esta caixa de entrega parece estar vazia!", 1);
                    }

                    Item.GetRoom().GetRoomItemHandler().RemoveFurniture(null, Item.Id);

                    int NewStock = 50;

                    if (Weapon != null)
                    {
                        WeaponManager.Weapons[Weapon.Name.ToLower()].Stock = NewStock;

                        using (var dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor())
                        {
                            dbClient.RunQuery("UPDATE `rp_weapons` SET `stock` = '" + NewStock + "' WHERE `name` = '" + Weapon.Name.ToLower() + "'");
                        }
                    }
                    RoleplayManager.UserWhoCalledDelivery = 0;
                    RoleplayManager.DeliveryWeapon        = null;
                    RoleplayManager.CalledDelivery        = false;
                    break;
                }

                default:
                {
                    Session.SendWhisper("O conteúdo desta caixa de entrega não pôde ser encontrado!", 1);
                    break;
                }
                }
            }
        }
Esempio n. 27
0
 internal RoomUser DeployBot(RoomBot Bot, Pet PetData)
 {
     int virtualId = this.primaryPrivateUserID++;
     RoomUser roomUser = new RoomUser(0u, this.room.RoomId, virtualId, this.room, false);
     int num = this.secondaryPrivateUserID++;
     roomUser.InternalRoomID = num;
     this.userlist.Add(num, roomUser);
     DynamicRoomModel model = this.room.GetGameMap().Model;
     Point coord = new Point(Bot.X, Bot.Y);
     if (Bot.X > 0 && Bot.Y > 0 && Bot.X < model.MapSizeX && Bot.Y < model.MapSizeY)
     {
         this.room.GetGameMap().AddUserToMap(roomUser, coord);
         roomUser.SetPos(Bot.X, Bot.Y, Bot.Z);
         roomUser.SetRot(Bot.Rot, false);
     }
     else
     {
         Bot.X = model.DoorX;
         Bot.Y = model.DoorY;
         roomUser.SetPos(model.DoorX, model.DoorY, model.DoorZ);
         roomUser.SetRot(model.DoorOrientation, false);
     }
     roomUser.BotData = Bot;
     checked
     {
         roomUser.BotAI = Bot.GenerateBotAI(roomUser.VirtualId, (int)Bot.BotId);
         if (roomUser.IsPet)
         {
             roomUser.BotAI.Init(Bot.BotId, roomUser.VirtualId, this.room.RoomId, roomUser, this.room);
             roomUser.PetData = PetData;
             roomUser.PetData.VirtualId = roomUser.VirtualId;
         }
         else
         {
             roomUser.BotAI.Init(Bot.BotId, roomUser.VirtualId, this.room.RoomId, roomUser, this.room);
         }
         this.UpdateUserStatus(roomUser, false);
         roomUser.UpdateNeeded = true;
         ServerMessage serverMessage = new ServerMessage(Outgoing.SetRoomUserMessageComposer);
         serverMessage.AppendInt32(1);
         roomUser.Serialize(serverMessage, this.room.GetGameMap().gotPublicPool);
         this.room.SendMessage(serverMessage);
         roomUser.BotAI.OnSelfEnterRoom();
         if (roomUser.IsPet)
         {
             if (this.pets.Contains(roomUser.PetData.PetId))
             {
                 this.pets[roomUser.PetData.PetId] = roomUser;
             }
             else
             {
                 this.pets.Add(roomUser.PetData.PetId, roomUser);
             }
             this.petCount++;
         }
         if (roomUser.BotData.AiType == AIType.Generic)
         {
             if (this.bots.Contains(roomUser.BotData.BotId))
             {
                 this.bots[roomUser.BotData.BotId] = roomUser;
             }
             else
             {
                 this.bots.Add(roomUser.BotData.BotId, roomUser);
             }
             serverMessage.Init(Outgoing.DanceStatusMessageComposer);
             serverMessage.AppendInt32(roomUser.VirtualId);
             serverMessage.AppendInt32(roomUser.BotData.DanceId);
             this.room.SendMessage(serverMessage);
             this.petCount++;
         }
         return roomUser;
     }
 }
Esempio n. 28
0
        internal RoomUser DeployBot(RoomBot Bot, Pet PetData)
        {
            DynamicRoomModel Model = room.GetGameMap().Model;

            RoomUser BotUser = new RoomUser(0, string.Empty, room.RoomId, primaryPrivateUserID++, room, false);
            BotUser.InternalRoomID = ++secondaryPrivateUserID;
            //this.UserList[PersonalID] = BotUser;
            userlist.Add(BotUser.InternalRoomID, BotUser);

            if ((Bot.X > 0 && Bot.Y > 0) && Bot.X < Model.MapSizeX && Bot.Y < Model.MapSizeY)
            {
                BotUser.SetPos(Bot.X, Bot.Y, Bot.Z);
                BotUser.SetRot(Bot.Rot, false);
            }
            else
            {
                Bot.X = Model.DoorX;
                Bot.Y = Model.DoorY;

                BotUser.SetPos(Model.DoorX, Model.DoorY, Model.DoorZ);
                BotUser.SetRot(Model.DoorOrientation, false);
            }

            BotUser.BotData = Bot;
            BotUser.BotAI = Bot.GenerateBotAI(BotUser.VirtualId);

            if (BotUser.IsPet)
            {
                BotUser.BotAI.Init((int)Bot.BotId, BotUser.VirtualId, room.RoomId, BotUser, room);
                BotUser.PetData = PetData;
                BotUser.PetData.virtualID = BotUser.VirtualId;
            }
            else
            {
                BotUser.BotAI.Init(Bot.ownerID > 0 ? (int)Bot.BotId : -1, BotUser.VirtualId, room.RoomId, BotUser, room);
            }

            UpdateUserStatus(BotUser, false);
            BotUser.UpdateNeeded = true;

            ServerMessage EnterMessage = PacketHandelingManager.GetRecycledItem(OutputCode.UsersMessageEvent);
            EnterMessage.AddInt32(1);
            BotUser.Serialize(EnterMessage);
            room.SendMessage(EnterMessage);

            BotUser.BotAI.OnSelfEnterRoom();

            if (BotUser.IsPet)
            {
                if (pets.ContainsKey(BotUser.PetData.petID)) //Pet allready placed
                    pets[BotUser.PetData.petID] = BotUser;
                else
                    pets.Add(BotUser.PetData.petID, BotUser);

                petCount++;
            }

            return BotUser;
        }
Esempio n. 29
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;
                    }
                }
            }
        }
Esempio n. 30
0
        public void OnTrigger(GameClient session, RoomItem item, int request, bool hasRights)
        {
            if (session == null)
            {
                return;
            }
            RoomUser roomUserByHabbo = item.GetRoom().GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id);

            if (roomUserByHabbo == null)
            {
                return;
            }

            {
                if (Math.Abs(roomUserByHabbo.X - item.X) < 2 && Math.Abs(roomUserByHabbo.Y - item.Y) < 2)
                {
                    roomUserByHabbo.SetRot(PathFinder.CalculateRotation(roomUserByHabbo.X, roomUserByHabbo.Y, item.X, item.Y), false);
                    Room room  = item.GetRoom();
                    var  point = new Point(0, 0);
                    switch (roomUserByHabbo.RotBody)
                    {
                    case 4:
                        point = new Point(item.X, item.Y + 1);
                        break;

                    case 0:
                        point = new Point(item.X, item.Y - 1);
                        break;

                    case 6:
                        point = new Point(item.X - 1, item.Y);
                        break;

                    default:
                        if (roomUserByHabbo.RotBody != 2)
                        {
                            return;
                        }
                        point = new Point(item.X + 1, item.Y);
                        break;
                    }
                    if (!room.GetGameMap().ValidTile2(point.X, point.Y))
                    {
                        return;
                    }
                    double num           = item.GetRoom().GetGameMap().SqAbsoluteHeight(point.X, point.Y);
                    var    serverMessage = new ServerMessage();
                    serverMessage.Init(LibraryParser.OutgoingRequest("ItemAnimationMessageComposer"));
                    serverMessage.AppendInteger(item.X);
                    serverMessage.AppendInteger(item.Y);
                    serverMessage.AppendInteger(point.X);
                    serverMessage.AppendInteger(point.Y);
                    serverMessage.AppendInteger(1);
                    serverMessage.AppendInteger(item.Id);
                    serverMessage.AppendString(item.Z.ToString(Plus.CultureInfo));
                    serverMessage.AppendString(num.ToString(Plus.CultureInfo));
                    serverMessage.AppendInteger(0);
                    room.SendMessage(serverMessage);
                    item.GetRoom().GetRoomItemHandler().SetFloorItem(roomUserByHabbo.GetClient(), item, point.X, point.Y, item.Rot, false, false, false);
                }
                else
                {
                    roomUserByHabbo.MoveTo(item.X + 1, item.Y);
                }
            }
        }
Esempio n. 31
0
        /// <summary>
        ///     Deploys the bot.
        /// </summary>
        /// <param name="bot">The bot.</param>
        /// <param name="petData">The pet data.</param>
        /// <returns>RoomUser.</returns>
        internal RoomUser DeployBot(RoomBot bot, Pet petData)
        {
            int virtualId = _primaryPrivateUserId++;

            RoomUser roomUser = new RoomUser(0u, _userRoom.RoomId, virtualId, _userRoom, false);

            int num = _secondaryPrivateUserId++;

            roomUser.InternalRoomId = num;
            UserList.TryAdd(num, roomUser);
            OnUserAdd(roomUser);

            DynamicRoomModel model = _userRoom.GetGameMap().Model;
            Point coord = new Point(bot.X, bot.Y);

            if ((bot.X > 0) && (bot.Y >= 0) && (bot.X < model.MapSizeX) && (bot.Y < model.MapSizeY))
            {
                _userRoom.GetGameMap().AddUserToMap(roomUser, coord);
                roomUser.SetPos(bot.X, bot.Y, bot.Z);
                roomUser.SetRot(bot.Rot, false);
            }
            else
            {
                bot.X = model.DoorX;
                bot.Y = model.DoorY;
                roomUser.SetPos(model.DoorX, model.DoorY, model.DoorZ);
                roomUser.SetRot(model.DoorOrientation, false);
            }

            bot.RoomUser = roomUser;
            roomUser.BotData = bot;

            roomUser.BotAi = bot.GenerateBotAi(roomUser.VirtualId, (int) bot.BotId);

            if (roomUser.IsPet)
            {
                roomUser.BotAi.Init(bot.BotId, roomUser.VirtualId, _userRoom.RoomId, roomUser, _userRoom);
                roomUser.PetData = petData;
                roomUser.PetData.VirtualId = roomUser.VirtualId;
            }
            else
                roomUser.BotAi.Init(bot.BotId, roomUser.VirtualId, _userRoom.RoomId, roomUser, _userRoom);

            UpdateUserStatus(roomUser, false);
            roomUser.UpdateNeeded = true;

            ServerMessage serverMessage = new ServerMessage(LibraryParser.OutgoingRequest("SetRoomUserMessageComposer"));

            serverMessage.AppendInteger(1);
            roomUser.Serialize(serverMessage, _userRoom.GetGameMap().GotPublicPool);

            _userRoom.SendMessage(serverMessage);

            roomUser.BotAi.OnSelfEnterRoom();

            if (roomUser.IsPet)
            {
                if (_pets.Contains(roomUser.PetData.PetId))
                    _pets[roomUser.PetData.PetId] = roomUser;
                else
                    _pets.Add(roomUser.PetData.PetId, roomUser);

                PetCount++;
            }

            roomUser.BotAi.Modified();

            if (roomUser.BotData.AiType != AiType.Generic)
                return roomUser;

            if (_bots.Contains(roomUser.BotData.BotId))
                _bots[roomUser.BotData.BotId] = roomUser;
            else
                _bots.Add(roomUser.BotData.BotId, roomUser);

            serverMessage.Init(LibraryParser.OutgoingRequest("DanceStatusMessageComposer"));
            serverMessage.AppendInteger(roomUser.VirtualId);
            serverMessage.AppendInteger(roomUser.BotData.DanceId);
            _userRoom.SendMessage(serverMessage);
            PetCount++;

            return roomUser;
        }
Esempio n. 32
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;
                }
                }
            }
        }
Esempio n. 33
0
        public override void OnUserSay(RoomUser User, string Message)
        {
            if (User == null)
            {
                return;
            }

            RoomUser Pet = GetRoomUser();

            if (Pet == null)
            {
                return;
            }

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

            if (Message.ToLower().Equals(Pet.PetData.Name.ToLower()))
            {
                Pet.SetRot(Rotation.Calculate(Pet.X, Pet.Y, User.X, User.Y), false);
                return;
            }

            //if (!Pet.Statusses.ContainsKey("gst thr"))
            //    Pet.Statusses.Add("gst thr", TextHandling.GetString(Pet.Z));

            if ((Message.ToLower().StartsWith(Pet.PetData.Name.ToLower() + " ") && User.GetClient().GetHabbo().Username.ToLower() == Pet.PetData.OwnerName.ToLower()) || (Message.ToLower().StartsWith(Pet.PetData.Name.ToLower() + " ") && QuasarEnvironment.GetGame().GetChatManager().GetPetCommands().TryInvoke(Message.Substring(Pet.PetData.Name.ToLower().Length + 1)) == 8))
            {
                string Command = Message.Substring(Pet.PetData.Name.ToLower().Length + 1);

                int r = RandomNumber.GenerateRandom(1, 8); // Made Random
                if (Pet.PetData.Energy > 10 && r < 6 || Pet.PetData.Level > 15 || QuasarEnvironment.GetGame().GetChatManager().GetPetCommands().TryInvoke(Command) == 8)
                {
                    RemovePetStatus(); // Remove Status

                    switch (QuasarEnvironment.GetGame().GetChatManager().GetPetCommands().TryInvoke(Command))
                    {
                        // TODO - Level you can use the commands at...



                        #region [1] Rennen

                    case 1:
                        RemovePetStatus();

                        //int randomX = QuasarEnvironment.GetRandomNumber(0, GetRoom().Model.MapSizeX);
                        //int randomY = QuasarEnvironment.GetRandomNumber(0, GetRoom().Model.MapSizeY);
                        Point nextCoord = GetRoom().GetGameMap().getRandomWalkableSquare();
                        Pet.MoveTo(nextCoord.X, nextCoord.Y);

                        Pet.PetData.Addexperience(10);     // Give XP

                        break;

                        #endregion

                        #region [2] Kom Hier

                    case 2:

                        RemovePetStatus();

                        int NewX = User.X;
                        int NewY = User.Y;

                        ActionTimer = 30;     // Reset ActionTimer

                        #region Draaien

                        if (User.RotBody == 4)
                        {
                            NewY = User.Y + 1;
                        }
                        else if (User.RotBody == 0)
                        {
                            NewY = User.Y - 1;
                        }
                        else if (User.RotBody == 6)
                        {
                            NewX = User.X - 1;
                        }
                        else if (User.RotBody == 2)
                        {
                            NewX = User.X + 1;
                        }
                        else if (User.RotBody == 3)
                        {
                            NewX = User.X + 1;
                            NewY = User.Y + 1;
                        }
                        else if (User.RotBody == 1)
                        {
                            NewX = User.X + 1;
                            NewY = User.Y - 1;
                        }
                        else if (User.RotBody == 7)
                        {
                            NewX = User.X - 1;
                            NewY = User.Y - 1;
                        }
                        else if (User.RotBody == 5)
                        {
                            NewX = User.X - 1;
                            NewY = User.Y + 1;
                        }

                        #endregion

                        Pet.PetData.Addexperience(10);     // Give XP

                        Pet.MoveTo(NewX, NewY);
                        break;

                        #endregion

                        #region [3] Zitten

                    case 3:
                        // Remove Status
                        RemovePetStatus();

                        Pet.PetData.Addexperience(10);     // Give XP

                        // Add Status
                        Pet.Statusses.Add("sit", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;

                        ActionTimer = 25;
                        EnergyTimer = 10;
                        break;

                        #endregion

                        #region [4] Liggen

                    case 4:
                        // Remove Status
                        RemovePetStatus();

                        // Add Status
                        Pet.Statusses.Add("lay", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;

                        Pet.PetData.Addexperience(10);     // Give XP

                        ActionTimer = 30;
                        EnergyTimer = 5;
                        break;

                        #endregion

                        #region [5] Lig Dood

                    case 5:
                        // Remove Status
                        RemovePetStatus();

                        // Add Status
                        Pet.Statusses.Add("ded", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;

                        Pet.PetData.Addexperience(10);     // Give XP

                        // Don't move to speak for a set amount of time.
                        SpeechTimer = 45;
                        ActionTimer = 30;

                        break;

                        #endregion

                        #region [6] Slapen

                    case 6:
                        // Remove Status
                        RemovePetStatus();

                        Pet.Chat("ZzzZZZzzzzZzz", false);
                        Pet.Statusses.Add("lay", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;

                        Pet.PetData.Addexperience(10);     // Give XP

                        // Don't move to speak for a set amount of time.
                        EnergyTimer = 5;
                        SpeechTimer = 30;
                        ActionTimer = 45;
                        break;

                        #endregion

                        #region [7] Springen

                    case 7:
                        // Remove Status
                        RemovePetStatus();

                        // Add Status
                        Pet.Statusses.Add("jmp", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;

                        Pet.PetData.Addexperience(10);     // Give XP

                        // Don't move to speak for a set amount of time.
                        EnergyTimer = 5;
                        SpeechTimer = 10;
                        ActionTimer = 5;
                        break;

                        #endregion

                        #region [8] Tellen
                    case 8:
                        // Remove Status
                        RemovePetStatus();

                        // Add Status
                        Pet.Chat("1..3...39 : 3 = 13 tot de macht 38,5.. huh?", false);
                        Pet.Statusses.Add("count", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;

                        Pet.PetData.Addexperience(10);     // Give XP

                        // Don't move to speak for a set amount of time.
                        SpeechTimer = 45;
                        ActionTimer = 30;
                        break;
                        #endregion

                    default:
                        string[] Speech = QuasarEnvironment.GetGame().GetChatManager().GetPetLocale().GetValue("pet.unknowncommand");

                        Pet.Chat(Speech[RandomNumber.GenerateRandom(0, Speech.Length - 1)], false);
                        break;
                    }
                    Pet.PetData.PetEnergy(false); // Remove Energy
                }
                else
                {
                    RemovePetStatus(); // Remove Status

                    if (Pet.PetData.Energy < 10)
                    {
                        string[] Speech = QuasarEnvironment.GetGame().GetChatManager().GetPetLocale().GetValue("pet.tired");

                        var RandomSpeech = new Random();
                        Pet.Chat(Speech[RandomNumber.GenerateRandom(0, Speech.Length - 1)], false);

                        Pet.Statusses.Add("lay", TextHandling.GetString(Pet.Z));
                        Pet.UpdateNeeded = true;

                        SpeechTimer = 50;
                        ActionTimer = 45;
                        EnergyTimer = 5;
                    }
                    else
                    {
                        string[] Speech = QuasarEnvironment.GetGame().GetChatManager().GetPetLocale().GetValue("pet.lazy");

                        var RandomSpeech = new Random();
                        Pet.Chat(Speech[RandomNumber.GenerateRandom(0, Speech.Length - 1)], false);

                        Pet.PetData.PetEnergy(false); // Remove Energy
                    }
                }
            }
            //Pet = null;
        }
Esempio n. 34
0
        public override bool Execute(GameClient session, string[] pms)
        {
            Room     room = session.GetHabbo().CurrentRoom;
            RoomUser user = room.GetRoomUserManager().GetRoomUserByHabbo(session.GetHabbo().Id);

            if (user == null)
            {
                return(true);
            }

            if (room.RoomData.DisablePush)
            {
                session.SendWhisper("Realizar Push Foi Desativado pelo Dono do Quarto");
                return(true);
            }

            GameClient client = Yupi.GetGame().GetClientManager().GetClientByUserName(pms[0]);

            if (client == null)
            {
                session.SendWhisper(Yupi.GetLanguage().GetVar("user_not_found"));
                return(true);
            }
            if (client.GetHabbo().Id == session.GetHabbo().Id)
            {
                session.SendWhisper(Yupi.GetLanguage().GetVar("command_pull_error_own"));
                return(true);
            }
            RoomUser user2 = room.GetRoomUserManager().GetRoomUserByHabbo(client.GetHabbo().Id);

            if (user2 == null)
            {
                return(true);
            }
            if (user2.TeleportEnabled)
            {
                session.SendWhisper(Yupi.GetLanguage().GetVar("command_error_teleport_enable"));
                return(true);
            }

            if (PathFinder.GetDistance(user.X, user.Y, user2.X, user2.Y) > 2)
            {
                session.SendWhisper(Yupi.GetLanguage().GetVar("command_pull_error_far_away"));
                return(true);
            }

            switch (user.RotBody)
            {
            case 0:
                user2.MoveTo(user2.X, user2.Y - 1);
                break;

            case 1:
                user2.MoveTo(user2.X + 1, user2.Y);
                user2.MoveTo(user2.X, user2.Y - 1);
                break;

            case 2:
                user2.MoveTo(user2.X + 1, user2.Y);
                break;

            case 3:
                user2.MoveTo(user2.X + 1, user2.Y);
                user2.MoveTo(user2.X, user2.Y + 1);
                break;

            case 4:
                user2.MoveTo(user2.X, user2.Y + 1);
                break;

            case 5:
                user2.MoveTo(user2.X - 1, user2.Y);
                user2.MoveTo(user2.X, user2.Y + 1);
                break;

            case 6:
                user2.MoveTo(user2.X - 1, user2.Y);
                break;

            case 7:
                user2.MoveTo(user2.X - 1, user2.Y);
                user2.MoveTo(user2.X, user2.Y - 1);
                break;
            }

            user2.UpdateNeeded = true;
            user2.SetRot(PathFinder.CalculateRotation(user2.X, user2.Y, user.GoalX, user.GoalY));
            return(true);
        }
Esempio n. 35
0
        public override void OnUserSay(RoomUser User, string Message)
        {
            RoomUser Pet = base.GetRoomUser();

            if (Pet.BotData.Rider == null)
            {
                if (Message.ToLower().Equals(Pet.PetData.Name.ToLower()))
                {
                    Pet.SetRot(Rotation.Calculate(Pet.X, Pet.Y, User.X, User.Y));
                }
                else
                {
                    if (Message.ToLower().StartsWith(Pet.PetData.Name.ToLower() + " ") && User.GetClient().GetHabbo().Username.ToLower() == base.GetRoomUser().PetData.OwnerName.ToLower())
                    {
                        string key = Message.Substring(Pet.PetData.Name.ToLower().Length + 1);
                        if ((Pet.PetData.Energy >= 10 && this.LevelStake() < 6) || Pet.PetData.Level >= 15)
                        {
                            Pet.Statusses.Clear();
                            if (!PhoenixEnvironment.GetGame().GetRoleManager().PetCommandsList.ContainsKey(key))
                            {
                                string[] array = new string[]
                                {
                                    TextManager.GetText("pet_response_confused1"),
                                    TextManager.GetText("pet_response_confused2"),
                                    TextManager.GetText("pet_response_confused3"),
                                    TextManager.GetText("pet_response_confused4"),
                                    TextManager.GetText("pet_response_confused5"),
                                    TextManager.GetText("pet_response_confused6"),
                                    TextManager.GetText("pet_response_confused7")
                                };
                                Random random = new Random();
                                Pet.Chat(null, array[random.Next(0, array.Length - 1)], false);
                            }
                            else
                            {
                                switch (PhoenixEnvironment.GetGame().GetRoleManager().PetCommandsList[key])
                                {
                                case 1:
                                    Pet.PetData.AddExpirience(10, -25);
                                    Pet.Chat(null, TextManager.GetText("pet_response_sleep"), false);
                                    Pet.Statusses.Add("lay", Pet.Z.ToString());
                                    break;

                                case 2:
                                    this.PetMove(0, 0, true);
                                    Pet.PetData.AddExpirience(5, 5);
                                    break;

                                case 3:
                                    Pet.PetData.AddExpirience(5, 5);
                                    Pet.Statusses.Add("sit", Pet.Z.ToString());
                                    break;

                                case 4:
                                    Pet.PetData.AddExpirience(5, 5);
                                    Pet.Statusses.Add("lay", Pet.Z.ToString());
                                    break;

                                case 5:
                                    Pet.PetData.AddExpirience(10, 10);
                                    this.EnergyTimer = 60;
                                    break;

                                case 6:
                                {
                                    int NewX = User.X;
                                    int NewY = User.Y;
                                    if (User.RotBody == 4)
                                    {
                                        NewY = User.Y + 1;
                                    }
                                    else if (User.RotBody == 0)
                                    {
                                        NewY = User.Y - 1;
                                    }
                                    else if (User.RotBody == 6)
                                    {
                                        NewX = User.X - 1;
                                    }
                                    else if (User.RotBody == 2)
                                    {
                                        NewX = User.X + 1;
                                    }
                                    else if (User.RotBody == 3)
                                    {
                                        NewX = User.X + 1;
                                        NewY = User.Y + 1;
                                    }
                                    else if (User.RotBody == 1)
                                    {
                                        NewX = User.X + 1;
                                        NewY = User.Y - 1;
                                    }
                                    else if (User.RotBody == 7)
                                    {
                                        NewX = User.X - 1;
                                        NewY = User.Y - 1;
                                    }
                                    else if (User.RotBody == 5)
                                    {
                                        NewX = User.X - 1;
                                        NewY = User.Y + 1;
                                    }
                                    Pet.PetData.AddExpirience(15, 15);
                                    this.PetMove(NewX, NewY, false);
                                    break;
                                }

                                case 7:
                                    Pet.PetData.AddExpirience(20, 20);
                                    Pet.Statusses.Add("ded", Pet.Z.ToString());
                                    break;

                                case 8:
                                    Pet.PetData.AddExpirience(10, 10);
                                    Pet.Statusses.Add("beg", Pet.Z.ToString());
                                    break;

                                case 9:
                                    Pet.PetData.AddExpirience(15, 15);
                                    Pet.Statusses.Add("jmp", Pet.Z.ToString());
                                    break;

                                case 10:
                                    Pet.PetData.AddExpirience(25, 25);
                                    Pet.Chat(null, TextManager.GetText("pet_response_silent"), false);
                                    this.SpeechTimer = 120;
                                    break;

                                case 11:
                                    Pet.PetData.AddExpirience(15, 15);
                                    this.SpeechTimer = 2;
                                    break;
                                }
                            }
                        }
                        else
                        {
                            string[] array2 = new string[]
                            {
                                TextManager.GetText("pet_response_sleeping1"),
                                TextManager.GetText("pet_response_sleeping2"),
                                TextManager.GetText("pet_response_sleeping3"),
                                TextManager.GetText("pet_response_sleeping4"),
                                TextManager.GetText("pet_response_sleeping5")
                            };
                            string[] array3 = new string[]
                            {
                                TextManager.GetText("pet_response_refusal1"),
                                TextManager.GetText("pet_response_refusal2"),
                                TextManager.GetText("pet_response_refusal3"),
                                TextManager.GetText("pet_response_refusal4"),
                                TextManager.GetText("pet_response_refusal5")
                            };
                            Pet.GoalX = Pet.SetX;
                            Pet.GoalY = Pet.SetY;
                            Pet.Statusses.Clear();
                            if (Pet.PetData.Energy < 10)
                            {
                                Random random2 = new Random();
                                Pet.Chat(null, array2[random2.Next(0, array2.Length - 1)], false);
                                if (Pet.PetData.Type != 13)
                                {
                                    Pet.Statusses.Add("lay", Pet.Z.ToString());
                                }
                                else
                                {
                                    Pet.Statusses.Add("lay", (Pet.Z - 1.0).ToString());
                                }
                                this.SpeechTimer = 25;
                                this.EnergyTimer = 20;
                                base.GetRoomUser().PetData.PetEnergy(-25);
                            }
                            else
                            {
                                Random random2 = new Random();
                                Pet.Chat(null, array3[random2.Next(0, array3.Length - 1)], false);
                            }
                        }
                        Pet.UpdateNeeded = true;
                    }
                }
            }
        }
Esempio n. 36
0
        public void HandleNuke(GameClient Session, Item Item, int Request, bool HasRights)
        {
            if (Session == null || Session.GetHabbo() == null || Item == null)
            {
                return;
            }

            Room Room = Session.GetHabbo().CurrentRoom;

            if (Room == null)
            {
                return;
            }

            RoomUser User = null;

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

            if (User == null)
            {
                return;
            }

            if (Gamemap.TilesTouching(Item.GetX, Item.GetY, User.X, User.Y))
            {
                if (Item.ExtraData == "")
                {
                    Item.ExtraData = "0";
                }

                if (Item.ExtraData == "0")
                {
                    int Minutes = RoleplayManager.NPACoolDown;

                    User.ClearMovement(true);
                    User.SetRot(Rotation.Calculate(User.Coordinate.X, User.Coordinate.Y, Item.GetX, Item.GetY), false);

                    // 135 Cycles approximately 1 minute
                    Item.ExtraData = "1";
                    Item.UpdateState(false, true);
                    Item.RequestUpdate(135 * Minutes, true);

                    // Start the nuking process.
                    object[] Params = { Session };
                    RoleplayManager.TimerManager.CreateTimer("nuking", 1000, false, Params);

                    Session.Shout("*Começa a invadir a máquina nuclear, comandando-a para explodir a cidade*", 4);

                    #region Notify all on-duty NPA associates

                    lock (PlusEnvironment.GetGame().GetClientManager().GetClients.ToList())
                    {
                        foreach (GameClient client in PlusEnvironment.GetGame().GetClientManager().GetClients.ToList())
                        {
                            if (client == null || client.GetHabbo() == null || client.GetRoleplay() == null)
                            {
                                continue;
                            }

                            if (!Groups.GroupManager.HasJobCommand(client, "npa") && !client.GetHabbo().GetPermissions().HasRight("corporation_rights"))
                            {
                                continue;
                            }

                            if (!client.GetRoleplay().IsWorking)
                            {
                                continue;
                            }

                            if (client.GetRoleplay().DisableRadio)
                            {
                                continue;
                            }

                            client.SendWhisper("[Alerta RÁDIO] [BOMBA NUCLEAR] Atenção! Alguém entrou na máquina nuclear, e ordenou que explodisse a cidade! Descubra quem é e interrompe-os rapidamente!", 30);
                        }
                    }

                    #endregion
                }
                else
                {
                    Session.SendWhisper("Opa, parece que alguém recentemente usou. Por favor, tente novamente mais tarde!", 1);
                }
            }
            else
            {
                if (User.CanWalk)
                {
                    User.MoveTo(Item.SquareInFront);
                }
            }
        }