Example #1
0
        public async void Handle(Session session, ClientPacket message)
        {
            Room room = session.Player.CurrentRoom;

            if (room == null)
            {
                return;
            }

            int botId = message.PopInt();

            if (!session.Player.Inventory.TryGetBot(botId, out InventoryBot bot))
            {
                return;
            }

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

            if (!room.Mapping.Tiles[x, y].IsValidTile(null, true))
            {
                return;
            }

            RoomEntity entity = new RoomEntity()
            {
                Id       = bot.Id,
                Name     = bot.Name,
                Motto    = bot.Motto,
                Look     = bot.Look,
                Gender   = bot.Gender,
                OwnerId  = session.Player.Id,
                Type     = RoomEntityType.Bot,
                Room     = session.Player.CurrentRoom,
                Position = new UserPosition()
                {
                    X            = x,
                    Y            = y,
                    Rotation     = session.Player.CurrentRoom.Model.Door.Rotation,
                    HeadRotation = session.Player.CurrentRoom.Model.Door.Rotation
                }
            };

            session.Player.CurrentRoom.EntityManager.CreateEntity(entity);
            RoomEntityDatabase.AddBot(entity);

            bot.RoomId = room.Id;
            await session.Player.Inventory.UpdateBot(bot);

            session.Send(new RemoveBotComposer(bot));
        }
Example #2
0
        public async void Handle(Session session, ClientPacket message)
        {
            Room room = session.Player.CurrentRoom;

            if (room == null)
            {
                return;
            }

            int petId = message.PopInt();

            if (!session.Player.Inventory.TryGetPet(petId, out InventoryPet pet))
            {
                return;
            }

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

            if (!room.Mapping.Tiles[x, y].IsValidTile(null, true))
            {
                return;
            }

            RoomEntity entity = new RoomEntity
            {
                Id       = pet.Id,
                Name     = pet.Name,
                Motto    = "",
                Look     = pet.Type + " " + pet.Race + " " + pet.Colour + " 2 2 4 0 0",
                Gender   = pet.Type + "",
                OwnerId  = session.Player.Id,
                Type     = RoomEntityType.Pet,
                Room     = session.Player.CurrentRoom,
                Position = new UserPosition()
                {
                    X            = x,
                    Y            = y,
                    Rotation     = session.Player.CurrentRoom.Model.Door.Rotation,
                    HeadRotation = session.Player.CurrentRoom.Model.Door.Rotation
                }
            };

            session.Player.CurrentRoom.EntityManager.CreateEntity(entity);
            RoomEntityDatabase.AddPet(entity);

            pet.RoomId = room.Id;
            await session.Player.Inventory.UpdatePet(pet);

            session.Send(new RemovePetComposer(pet));
        }
        public async void Handle(Session session, ClientPacket message)
        {
            Room room = session.Player.CurrentRoom;

            if (room == null)
            {
                return;
            }

            RoomEntity bot = room.EntityManager.BotById(message.PopInt());

            if (bot == null)
            {
                return;
            }

            InventoryBot iBot = new InventoryBot(bot.Id, bot.Name, bot.Motto, bot.Look, bot.Gender, bot.DanceId, bot.EffectId, bot.CanWalk);

            RoomEntityDatabase.RemoveBot(bot);
            await session.Player.Inventory.UpdateBot(iBot);

            session.Player.CurrentRoom.EntityManager.OnUserLeave(bot);
            session.Send(new AddBotComposer(iBot));
        }
        public async void Handle(Session session, ClientPacket message)
        {
            Room room = session.Player.CurrentRoom;

            if (room == null)
            {
                return;
            }

            RoomEntity pet = room.EntityManager.PetById(message.PopInt());

            if (pet == null)
            {
                return;
            }

            InventoryPet iPet = new InventoryPet(pet.Id, pet.Name, 0, 0, "");

            RoomEntityDatabase.RemovePet(pet);
            await session.Player.Inventory.UpdatePet(iPet);

            session.Player.CurrentRoom.EntityManager.OnUserLeave(pet);
            session.Send(new AddPetComposer(iPet));
        }
        public void Handle(Session session, ClientPacket message)
        {
            Room room = session.Player.CurrentRoom;

            if (room == null)
            {
                return;
            }

            if (room.RoomData.OwnerId != session.Player.Id)
            {
                return;
            }

            int        botId = message.PopInt();
            RoomEntity bot   = room.EntityManager.BotById(botId);

            if (bot == null)
            {
                return;
            }

            int settingId = message.PopInt();

            switch (settingId)
            {
            case 1:
                bot.Look     = session.Player.Look;
                bot.Gender   = session.Player.Gender;
                bot.EffectId = session.Player.Entity.EffectId;
                room.EntityManager.Send(new RoomUserDataComposer(bot));
                room.EntityManager.Send(new RoomUserEffectComposer(bot));
                break;

            case 2:
                //to-do
                break;

            case 3:
                bot.CanWalk = !bot.CanWalk;
                break;

            case 4:
                if (bot.DanceId != 0)
                {
                    bot.DanceId = 0;
                }
                else
                {
                    bot.DanceId = Randomness.RandomNumber(1, 4);
                }

                room.EntityManager.Send(new RoomUserDanceComposer(bot));
                break;

            case 5:
                string name = message.PopString();
                if (name.Length > 25)
                {
                    return;
                }

                bot.Name = name;
                room.EntityManager.Send(new RoomUsersComposer(bot));
                break;
            }

            RoomEntityDatabase.UpdateBot(bot);
        }