public async Task <ActionResult> EatItem(Guid?itemId, Guid charId) { var model = await CharacterFacade.GetAsync(charId); if (model.CurrentHp == model.CalculateAttributes().Hp * 10) { return(RedirectToAction("Detail")); } var toHeal = model.CalculateAttributes().Hp * 10 - model.CurrentHp; DateTime?sickness = DateTime.Now.AddHours(1); if (itemId != null) { sickness = model.Sickness; var item = await EquipmentFacade.GetItemAsync(itemId.GetValueOrDefault()); toHeal = (item.Attributes.Hp * 10) >= toHeal ? toHeal : (item.Attributes.Hp * 10); await EquipmentFacade.DeleteFromInventoryAsync(model.Inventory, item); } var charUpdate = new CharacterUpdateDto() { Id = model.Id, Name = model.Name, Experience = model.Experience, Gold = model.Gold, CurrentHp = model.CurrentHp + toHeal, Sickness = sickness, SkillPoints = model.SkillPoints }; await CharacterFacade.EditAsync(charUpdate); return(RedirectToAction("Detail")); }
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> Delete(Guid id) { var item = await EquipmentFacade.GetItemAsync(id); await EquipmentFacade.DeleteItemAsync(item.Id); if (item.Attributes != null) { var attr = await AttributesFacade.GetAttributesAsync(item.Attributes.Id); await AttributesFacade.DeleteAttributesAsync(attr.Id); } return(RedirectToAction("Index", "DashBoard")); }
public async Task <ActionResult> SellItem(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 + item.Price, CurrentHp = model.CurrentHp, Sickness = model.Sickness, SkillPoints = model.SkillPoints }; await EquipmentFacade.DeleteFromInventoryAsync(model.Inventory, item); await CharacterFacade.EditAsync(charUpdate); return(RedirectToAction("Detail")); }
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")); }