public DougResponse Equip(Command command) { var user = _userRepository.GetUser(command.UserId); var position = int.Parse(command.GetArgumentAt(0)); var inventoryItem = user.InventoryItems.SingleOrDefault(itm => itm.InventoryPosition == position); if (inventoryItem == null) { return(new DougResponse(string.Format(DougMessages.NoItemInSlot, position))); } if (!inventoryItem.Item.IsEquipable()) { return(new DougResponse(DougMessages.ItemNotEquipAble)); } var equipmentItem = (EquipmentItem)inventoryItem.Item; if (!user.CanEquip(equipmentItem)) { return(new DougResponse(DougMessages.LevelRequirementNotMet)); } var unequippedItems = _equipmentRepository.EquipItem(user, equipmentItem); _inventoryRepository.AddItems(user, unequippedItems.Select(item => item)); _inventoryRepository.RemoveItem(user, position); return(new DougResponse(string.Format(DougMessages.EquippedItem, inventoryItem.Item.Name))); }
public string Equip(User user, int itemPosition) { var inventoryItem = user.InventoryItems.SingleOrDefault(itm => itm.InventoryPosition == itemPosition); if (inventoryItem == null) { return(string.Format(DougMessages.NoItemInSlot, itemPosition)); } if (!inventoryItem.Item.IsEquipable()) { return(DougMessages.ItemNotEquipAble); } var equipmentItem = (EquipmentItem)inventoryItem.Item; if (!user.CanEquip(equipmentItem)) { return(DougMessages.LevelRequirementNotMet); } var unequippedItems = _equipmentRepository.EquipItem(user, equipmentItem); _inventoryRepository.AddItems(user, unequippedItems.Select(item => item)); _inventoryRepository.RemoveItem(user, itemPosition); return(string.Format(DougMessages.EquippedItem, inventoryItem.Item.GetDisplayName())); }
private async Task AddMonsterLootToUser(User user, Monster monster, string channel) { var droppedItems = _randomService.RandomTableDrop(monster.DropTable, user.ExtraDropChance()).Select(drop => drop.Item).ToList(); if (droppedItems.Any()) { _inventoryRepository.AddItems(user, droppedItems); var itemsMessage = string.Join(", ", droppedItems.Select(item => $"*{item.Name}*")); await _slack.BroadcastMessage(string.Format(DougMessages.UserObtained, _userService.Mention(user), itemsMessage), channel); } }
public string OpenLootBox(int itemPos, User user, DropTable dropTable, string channel, string lootboxName) { _inventoryRepository.RemoveItem(user, itemPos); var loot = _randomService.RandomFromWeightedTable(dropTable); var item = _itemRepository.GetItem(loot.Id); _inventoryRepository.AddItems(user, Enumerable.Repeat(item, loot.Quantity)); user.InventoryItems.Sort((item1, item2) => item1.InventoryPosition.CompareTo(item2.InventoryPosition)); _slack.BroadcastMessage(string.Format(DougMessages.LootboxAnnouncement, _userService.Mention(user), lootboxName, $"{loot.Quantity}x {item.GetDisplayName()}"), channel).Wait(); return(string.Empty); }
public override string Use(int itemPos, User user, string channel) { base.Use(itemPos, user, channel); var loot = _randomService.RandomFromWeightedTable(_dropTable); var item = _itemFactory.CreateItem(loot.Id); _inventoryRepository.AddItems(user, Enumerable.Repeat(item, loot.Quantity)); user.LoadItems(_itemFactory); user.InventoryItems.Sort((item1, item2) => item1.InventoryPosition.CompareTo(item2.InventoryPosition)); _slack.BroadcastMessage(string.Format(DougMessages.LootboxAnnouncement, _userService.Mention(user), Name, $"{loot.Quantity}x *{item.Name}*"), channel).Wait(); return(string.Empty); }
public override string Use(int itemPos, User user, string channel) { base.Use(itemPos, user, channel); var items = new List <Item> { _itemFactory.CreateItem(FarmersArmor.ItemId), _itemFactory.CreateItem(FarmersBoots.ItemId), _itemFactory.CreateItem(FarmersGloves.ItemId), _itemFactory.CreateItem(WoodenShield.ItemId), _itemFactory.CreateItem(ShortSword.ItemId), }; _inventoryRepository.AddItems(user, items); user.LoadItems(_itemFactory); user.InventoryItems.Sort((item1, item2) => item1.InventoryPosition.CompareTo(item2.InventoryPosition)); var itemNames = string.Join(", ", items.Select(item => item.Name)); _slack.SendEphemeralMessage(string.Format(DougMessages.YouObtained, $"*{itemNames}*"), user.Id, channel).Wait(); return(string.Empty); }