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 })); }
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 })); } }