public async Task <IActionResult> Edit(int id, [Bind("ScreenEnemyID,ScreenID,EnemyID,ScreenEnemyAction")] ScreenEnemy screenEnemy) { if (id != screenEnemy.ScreenEnemyID) { return(NotFound()); } if (ModelState.IsValid) { try { _context.Update(screenEnemy); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ScreenEnemyExists(screenEnemy.ScreenEnemyID)) { return(NotFound()); } else { throw; } } return(RedirectToAction(nameof(Index))); } return(View(screenEnemy)); }
public IActionResult Attack(int screenEnemyID) { // Roll enemy damage // I want the enemy to attack first so you dont kill it before it gets a chance to hit you. ScreenEnemy screenEnemy = _context.ScreenEnemy.Where(se => se.ScreenEnemyID == screenEnemyID).FirstOrDefault(); Enemy enemy = _context.Enemy.Where(e => e.EnemyID == screenEnemy.EnemyID).FirstOrDefault(); int enemyDamage = enemy.EnemyModifier; Random rand = new Random(); for (int r = 0; r < enemy.EnemyMultipler; r++) { enemyDamage += rand.Next(1, enemy.EnemyDie + 1); } User user = GetUser(); user.Health -= enemyDamage; string fight = $"A {enemy.EnemyName} attacks you, doing {enemyDamage} HP damage.<br />"; // Roll player damage Item weapon = new Item(); foreach (Item item in user.Inventory) { if (item.ItemID == user.WeaponID) { weapon = item; } } Weapon sickle = _context.Weapons.Where(w => w.ItemID == weapon.ItemID).FirstOrDefault(); // For now, just using static numbers to get combat to display properly int userDamage = sickle.WeaponModifier; for (int r = 0; r < sickle.WeaponMultipler; r++) { userDamage += rand.Next(1, sickle.WeaponDie + 1); } fight += $"You attack a {enemy.EnemyName} with your {weapon.ItemName} for {userDamage} HP damage.<br />"; _context.FightLogs.Add(new FightLog { UserID = user.UserID, Entry = fight, EntryType = "combat" }); enemy.EnemyHealth -= userDamage; if (enemy.EnemyHealth <= 0) { string exp = $"You killed a {enemy.EnemyName}! You gained {enemy.EnemyExperience} experience points."; user.Experience += enemy.EnemyExperience; _context.ScreenEnemy.Remove(screenEnemy); _context.FightLogs.Add(new FightLog { UserID = user.UserID, Entry = exp, EntryType = "experience" }); } _context.User.Update(user); SaveUser(user); _context.SaveChanges(); UpdateScreen(user); return(View("Console", BuildModel())); }
public async Task <IActionResult> Create([Bind("ScreenEnemyID,ScreenID,EnemyID,ScreenEnemyAction")] ScreenEnemy screenEnemy) { if (ModelState.IsValid) { _context.Add(screenEnemy); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } return(View(screenEnemy)); }