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)); }
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); }