示例#1
0
        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()));
        }
示例#3
0
        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));
        }