public ActionResult LevelUpFence(int id, string returnUrl)
        {
            Inventory item      = db.Inventories.Find(id);
            Character character = db.Characters.Where(x => x.ApplicationUserID == User.Identity.Name).FirstOrDefault();
            Building  fence     = db.Buildings.Find(item.ItemID);

            ICollection <Inventory> characterInventory = db.Inventories.Where(x => x.CharacterID == character.CharacterID).ToList();

            int buildingLevel    = fence.BuildingLevel;
            int newBuildingLevel = buildingLevel;

            newBuildingLevel++;
            string buildingName = fence.ItemName;

            Building newBuilding = db.Buildings.Where(x => x.ItemName == buildingName).Where(x => x.BuildingLevel == newBuildingLevel).FirstOrDefault();
            BuildingBuildingMaterial newBuildingBuildingMaterial = db.BuildingBuildingMaterials.Where(x => x.ItemID == newBuilding.ItemID).FirstOrDefault();


            foreach (var invMat in characterInventory)
            {
                if (invMat.ItemID == newBuildingBuildingMaterial.BuildingMaterialID)
                {
                    if (invMat.ItemPieces >= newBuildingBuildingMaterial.MaterialPieces)
                    {
                        var newitem = db.Buildings.Where(p => p.ItemID == newBuilding.ItemID).FirstOrDefault();
                        item.Item                  = db.Items.Find(newitem.ItemID);
                        item.ItemID                = newitem.ItemID;
                        item.ItemMaxDurability     = newitem.ItemMaxDurability;
                        item.ItemCurrentDurability = newitem.ItemMaxDurability;

                        invMat.ItemPieces -= newBuildingBuildingMaterial.MaterialPieces;

                        character.CharacterMoney -= fence.BuildingMoneyCost;

                        var result = new CharactersController().ManageEnergy(User.Identity.Name, fence.BuildingEnergyCost, this.Request.FilePath);
                    }
                }
            }

            db.SaveChanges();

            return(Redirect(returnUrl));
        }
示例#2
0
        public ActionResult CollectReward(int zABID, int rewardXP, int rewardCoin)
        {
            AttackingZombieReward model = new AttackingZombieReward();

            model.RexardXP   = rewardXP;
            model.RewardCoin = rewardCoin;

            Character character = db.Characters.Where(y => y.ApplicationUserID == User.Identity.Name).FirstOrDefault();

            ZombieAttackBase zAB = db.ZombieAttackBases.Find(zABID);

            var addXP = new CharactersController().ManageXPAndLevelUp(User.Identity.Name, rewardXP, this.Request.FilePath);

            character.CharacterMoney += rewardCoin;
            db.ZombieAttackBases.Remove(zAB);


            db.SaveChanges();
            base.SetModelProperties(model);

            return(View(model));
        }
        public ActionResult RepairBuilding(int id, string returnUrl)
        {
            Character character = db.Characters.Where(y => y.ApplicationUserID == User.Identity.Name).FirstOrDefault();
            Inventory item      = character.Inventory.Where(x => x.ItemID == 55).FirstOrDefault(); //board
            Inventory building  = character.Inventory.Where(x => x.Item.ItemID == id).FirstOrDefault();
            List <CharacterMissionTask> characterMissionTasks = db.CharacterMissionTasks.Where(x => x.CharacterID == character.CharacterID).ToList();


            if (item == null)
            {
                return(RedirectToAction("Details", "Characters", new { id = User.Identity.Name }));
            }

            if (character.IsOnAdventure == false)
            {
                if (character.CurrentEnergy > 0)
                {
                    if (item.ItemPieces > 0)
                    {
                        var result = new CharactersController().ManageEnergy(User.Identity.Name, 1, this.Request.Path);
                        item.ItemPieces--;
                        building.ItemCurrentDurability++;
                        db.SaveChanges();
                    }

                    return(Redirect(returnUrl));
                }
                else
                {
                    return(Redirect(returnUrl));
                }
            }
            else
            {
                return(Redirect(returnUrl));
            }
        }
示例#4
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 }));
        }
示例#5
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 }));
            }
        }
示例#6
0
        public ActionResult GetReward(int id)
        {
            Character character = db.Characters.Where(y => y.ApplicationUserID == User.Identity.Name).FirstOrDefault();

            character.Inventory = db.Inventories.Where(x => x.CharacterID == character.CharacterID).ToList();

            List <Item> items = db.Items.ToList();

            CharacterMission            characterMission      = db.CharacterMissions.Find(id);
            List <CharacterMissionTask> characterMissionTasks = db.CharacterMissionTasks.Where(x => x.CharacterMissionID == characterMission.CharacterMissionID).ToList();

            Mission            mission      = db.Missions.Find(characterMission.MissionID);
            List <MissionTask> missionTasks = db.MissionTasks.Where(x => x.MissionID == mission.MissionID).ToList();

            foreach (var cmt in characterMissionTasks)
            {
                foreach (var mt in missionTasks)
                {
                    if (mt.MissionTaskID == cmt.MissionTaskID)
                    {
                        foreach (var inv in character.Inventory)
                        {
                            if (mt.ItemID == inv.ItemID)
                            {
                                if (cmt.TaskProgress >= mt.ItemPieces)
                                {
                                    inv.ItemPieces -= mt.ItemPieces;
                                    db.CharacterMissionTasks.Remove(cmt);
                                    character.CharacterMoney += mission.RewardICoins;
                                    var resultXP = new CharactersController().ManageXPAndLevelUp(User.Identity.Name, mission.RewardXP, this.Request.FilePath);
                                }
                            }
                        }
                        if (mt.ItemID == 0)
                        {
                            if (cmt.TaskProgress >= mt.ItemPieces)
                            {
                                db.CharacterMissionTasks.Remove(cmt);
                                character.CharacterMoney += mission.RewardICoins;
                                var resultXP = new CharactersController().ManageXPAndLevelUp(User.Identity.Name, mission.RewardXP, this.Request.FilePath);
                            }
                        }
                    }
                }
            }
            db.SaveChanges();


            characterMissionTasks = db.CharacterMissionTasks.Where(x => x.CharacterMissionID == characterMission.CharacterMissionID).ToList();


            if (characterMissionTasks.Count() == 0)
            {
                db.CharacterMissions.Remove(characterMission);
            }

            db.SaveChanges();

            if (mission.IsNextMission)
            {
                var result = new MissionsController().StartMission(mission.MissionID + 1, User.Identity.Name);
            }


            return(RedirectToAction("Index", "Missions", new { id = User.Identity.Name }));
        }
示例#7
0
        public ActionResult BaseDefenseFromZombie(int ZabID, int AttackPower, int invID)
        {
            BaseDefenseFromZombiesVM model = new BaseDefenseFromZombiesVM();

            model.ZombieAttackBase = db.ZombieAttackBases.Find(ZabID);
            model.Zombie           = db.Zombies.Find(model.ZombieAttackBase.ZombieID);
            model.Character        = db.Characters.Find(model.ZombieAttackBase.CharacterID);

            ICollection <Inventory> inventory = model.Character.Inventory;

            model.Weapon = db.Weapons.Find(59);


            if (invID != 0)
            {
                var inv = db.Inventories.Find(invID);
                if (inv.ItemCurrentDurability > 1 && inv.ItemMaxDurability != 999)
                {
                    inv.ItemCurrentDurability--;
                }
                else if (inv.ItemCurrentDurability > 1 && inv.ItemMaxDurability == 999)
                {
                }
                else
                {
                    if (inv.ItemPieces > 0)
                    {
                        inv.ItemCurrentDurability = inv.ItemMaxDurability;
                        inv.ItemPieces--;
                    }
                }
            }
            if (AttackPower > 0)
            {
                model.ZombieAttackBase.ZombieLife -= AttackPower;
                var result = new CharactersController().ManageEnergy(User.Identity.Name, 1, this.Request.Path);
            }


            model.BuyableWeapons   = new List <BuyableWeapon>();
            model.CraftableWeapons = new List <CraftableWeapon>();

            foreach (var item in model.Character.Inventory)
            {
                foreach (var weap in db.BuyableWeapons)
                {
                    if (item.ItemID == weap.ItemID)
                    {
                        model.BuyableWeapons.Add(weap);
                    }
                }
            }

            foreach (var item in model.Character.Inventory)
            {
                foreach (var weap in db.CraftableWeapons)
                {
                    if (item.ItemID == weap.ItemID)
                    {
                        model.CraftableWeapons.Add(weap);
                    }
                }
            }

            if (model.ZombieAttackBase.ZombieLife <= 0)
            {
                var result = new MissionsController().KillingMission(model.Zombie.ZombieID, User.Identity.Name);

                db.SaveChanges();

                base.SetModelProperties(model);
                return(RedirectToAction("CollectReward", "Zombies", new { zABID = model.ZombieAttackBase.ZombieAttackBaseID, rewardXP = model.Zombie.RewardXP, rewardCoin = model.Zombie.RewardCoins }));
            }

            db.SaveChanges();

            base.SetModelProperties(model);
            return(View(model));
        }