Пример #1
0
        public ActionResult AttackZombie(string zAAID, int invID)
        {
            Character character = db.Characters.Where(y => y.ApplicationUserID == User.Identity.Name).FirstOrDefault();

            List <int> zombik = System.Web.Helpers.Json.Decode <List <int> >(zAAID);

            List <ZombieAttackAdventurer> zombies = new List <ZombieAttackAdventurer>();

            foreach (var z in zombik)
            {
                var zombie = db.ZombieAttackAdventurers.Find(z);
                zombies.Add(zombie);
            }


            Inventory item   = db.Inventories.Find(invID);
            Weapon    weapon = db.Weapons.Find(item.ItemID);


            foreach (var z in zombies)
            {
                ZombieAttackAdventurer model = db.ZombieAttackAdventurers.Find(z.ZombieAttackAdventurerID);
                model.Zombie = db.Zombies.Find(model.ZombieID);

                var inv = db.Inventories.Find(invID);
                if (inv.ItemCurrentDurability > 0 && inv.ItemMaxDurability != 999)
                {
                    inv.ItemCurrentDurability--;
                }
                else if (inv.ItemCurrentDurability > 0 && inv.ItemMaxDurability == 999)
                {
                }
                else
                {
                    if (inv.ItemPieces > 0)
                    {
                        inv.ItemCurrentDurability = inv.ItemMaxDurability;
                        inv.ItemPieces--;
                    }
                }

                if (model.ZombieLife > weapon.WeaponDamage)
                {
                    model.ZombieLife = model.ZombieLife - weapon.WeaponDamage;
                    List <ZombieAttackAdventurer> zAA = db.ZombieAttackAdventurers.Where(x => x.CharacterID == character.CharacterID).Where(x => x.State == character.AdventureState).ToList();
                    zAA.ToArray()[0].isYourTurn = true;
                    db.SaveChanges();
                }
                else
                {
                    var result = new MissionsController().KillingMission(model.Zombie.ZombieID, User.Identity.Name);
                    var addXP  = new CharactersController().ManageXPAndLevelUp(User.Identity.Name, model.Zombie.RewardXP, this.Request.FilePath);
                    character.CharacterMoney += model.Zombie.RewardCoins;
                    db.ZombieAttackAdventurers.Remove(model);
                    db.SaveChanges();
                    List <ZombieAttackAdventurer> zAA = db.ZombieAttackAdventurers.Where(x => x.CharacterID == character.CharacterID).Where(x => x.State == character.AdventureState).ToList();
                    if (zAA.Count() != 0)
                    {
                        zAA.ToArray()[0].isYourTurn = true;
                    }
                    db.SaveChanges();
                }
            }

            character.isYourTurn = false;
            db.SaveChanges();
            return(RedirectToAction("OnAdventure", "Adventures", new { id = User.Identity.Name }));
        }
Пример #2
0
        public ActionResult StartAdventure(int AdId)
        {
            Adventure adventure = db.Adventures.Find(AdId);
            Character character = db.Characters.Where(y => y.ApplicationUserID == User.Identity.Name).FirstOrDefault();


            if (character.IsOnAdventure == false)
            {
                if (character.CurrentEnergy >= adventure.AdventureRequerdEnergy)
                {
                    var result = new CharactersController().ManageEnergy(User.Identity.Name, adventure.AdventureRequerdEnergy, this.Request.FilePath);

                    List <ZombieAttackAdventurer> zombies = new List <ZombieAttackAdventurer>();
                    Random rand = new Random();

                    int maxZombieRank = adventure.AdventureID;

                    List <Zombie> selectableZombies = new List <Zombie>();
                    foreach (var zombie in db.Zombies)
                    {
                        if (zombie.ZombieRank <= maxZombieRank && zombie.ZombieRank >= maxZombieRank - 2 && zombie.ZombiePlaceAppear.ToString() == adventure.AdventureType.ToString())
                        {
                            selectableZombies.Add(zombie);
                        }
                    }

                    for (int stepCounter = 1; stepCounter <= adventure.AdventureSteps; stepCounter++)
                    {
                        int maxZombiesPerRound = rand.Next(1, adventure.AdventureMaxZombiesPerRound);

                        for (int j = 0; j < maxZombiesPerRound; j++)
                        {
                            int    zombieIndex    = rand.Next(0, selectableZombies.Count() - 1);
                            Zombie selectedZombie = selectableZombies.ElementAt <Zombie>(zombieIndex);
                            ZombieAttackAdventurer attackingZombie = new ZombieAttackAdventurer {
                                CharacterID = character.CharacterID, State = stepCounter, ZombieID = selectedZombie.ZombieID, ZombieLife = selectedZombie.ZombieLife, isYourTurn = false
                            };
                            db.ZombieAttackAdventurers.Add(attackingZombie);
                        }
                    }

                    character.FinishAdventure      = DateTime.MaxValue;
                    character.AdventureState       = 1;
                    character.AdventureID          = AdId;
                    character.isYourTurn           = true;
                    character.isWaitingOnAdventure = false;

                    character.IsOnAdventure = true;
                    db.SaveChanges();

                    return(RedirectToAction("OnAdventure", "Adventures", new { id = User.Identity.Name }));
                }
                else
                {
                    return(RedirectToAction("Details", "Characters", new { id = User.Identity.Name }));
                }
            }
            else
            {
                return(RedirectToAction("Details", "Characters", new { id = User.Identity.Name }));
            }
        }