public async Task <ActionResult> BuyItem(Guid?id, Guid?charId, Guid?shopId) { if (id == null || charId == null || shopId == null) { return(RedirectToAction("Index")); } var item = await EquipmentFacade.GetItemAsync(id.GetValueOrDefault()); var character = await CharacterFacade.GetAsync(charId.GetValueOrDefault()); if (await EquipmentFacade.AddToInventoryAsync(character.Inventory, item)) { var updatedUser = new CharacterUpdateDto() { Name = character.Name, CurrentHp = character.CurrentHp, Experience = character.Experience, Gold = character.Gold - (int)(item.Price * 1.5), Id = character.Id, SkillPoints = character.SkillPoints, Sickness = character.Sickness }; await CharacterFacade.EditAsync(updatedUser); } return(RedirectToAction("Detail", new { id = shopId })); }
public async Task <ActionResult> EquipItem(Guid itemId, Guid charId) { var item = await EquipmentFacade.GetItemAsync(itemId); var model = await CharacterFacade.GetAsync(charId); var charUpdate = new CharacterUpdateDto() { Id = model.Id, Name = model.Name, Experience = model.Experience, Gold = model.Gold, CurrentHp = model.CurrentHp + (item.Attributes.Hp * 10), Sickness = model.Sickness, SkillPoints = model.SkillPoints }; ItemDto equipped = null; foreach (var itemDto in model.Equipment.ListItems()) { if (itemDto != null && itemDto.ArmorClass == item.ArmorClass) { equipped = itemDto; } } await EquipmentFacade.DeleteFromInventoryAsync(model.Inventory, item); if (equipped != null) { charUpdate.CurrentHp -= equipped.Attributes.Hp * 10; await EquipmentFacade.AddToInventoryAsync(model.Inventory, equipped); } await EquipmentFacade.EquipItemAsync(model.Equipment, item); await CharacterFacade.EditAsync(charUpdate); return(RedirectToAction("Detail")); }