Пример #1
0
 public bool Cast(int spellID, int cellID)
 {
     if (HaveSpell(spellID))
     {
         if (this.Monster.CanCastSpell(spellID))
         {
             var spell = this.Monster.Monster.OwnSpells.FirstOrDefault(x => x.SpellID == spellID);
             if (spell.Template.Engine.GetLevel(spell.Level).MaxPO >= MonsterFight.Map.PathfindingMaker.GetDistanceBetween(Monster.CellID, cellID))
             {
                 if (Monster.CurrentAP >= spell.Template.Engine.GetLevel(spell.Level).CostPA)
                 {
                     MonsterFight.CastSpell(Monster, spell, spell.Level, cellID);
                     System.Threading.Thread.Sleep(1000);
                     return(true);
                 }
                 else
                 {
                     return(false);
                 }
             }
             else
             {
                 return(false);
             }
         }
         else
         {
             return(false);
         }
     }
     else
     {
         return(false);
     }
 }
Пример #2
0
        public int GetNearestCellForGoingToFighter(Fighter target, int baseCell, List <int> closedList)
        {
            int        cell      = -1;
            List <int> adjaCells = Engines.Pathfinding.GetJoinCell(baseCell, MonsterFight.Map.Map);
            int        dist      = 1000;
            int        timeout   = 0;

            foreach (int aCell in adjaCells)
            {
                if (MonsterFight.Map.IsAvailableCell(aCell) && MonsterFight.GetFighterOnCell(aCell) == null && !closedList.Contains(aCell))
                {
                    int fDist = MonsterFight.Map.PathfindingMaker.GetDistanceBetween(aCell, target.CellID);
                    if (fDist < dist)
                    {
                        cell = aCell;
                        dist = fDist;
                    }
                }
                timeout += 1;
                if (timeout > 100)
                {
                    break;
                }
            }
            if (cell == -1)
            {
                return(baseCell);
            }
            return(cell);
        }
Пример #3
0
        public void AttackNeightboor()
        {
            int timeout = 0;

reCast:
            if (timeout > 100)
            {
                return;
            }
            Fighter nearestFighter = GetNearestFighter();

            foreach (Game.Spells.WorldSpell ownSpell in Monster.Monster.OwnSpells.FindAll(x => x.Template.Engine.GetLevel(x.Level).TypeOfSpell == Enums.SpellTypeEnum.ATTACK))
            {
                if (ownSpell.Template.Engine.GetLevel(ownSpell.Level).MaxPO >= MonsterFight.Map.PathfindingMaker.GetDistanceBetween(Monster.CellID, nearestFighter.CellID))
                {
                    if (Monster.CurrentAP >= ownSpell.Template.Engine.GetLevel(ownSpell.Level).CostPA)
                    {
                        if (Monster.CanCastSpell(ownSpell.SpellID))
                        {
                            MonsterFight.CastSpell(Monster, ownSpell, ownSpell.Level, nearestFighter.CellID);
                            System.Threading.Thread.Sleep(1000);
                            timeout++;
                            goto reCast;
                        }
                    }
                }
                timeout++;
                if (timeout > 200)
                {
                    break;
                }
            }
        }
Пример #4
0
        public void Move()
        {
            string path = Engines.Pathfinding.CreateStringPath(Monster.CellID, Monster.Dir, NextMove, MonsterFight.Map);

            MonsterFight.PlayerWantMove(Monster, path);
            System.Threading.Thread.Sleep(500 * NextMove.Count);
            NextMove.Clear();
            MonsterFight.PlayerEndMove(Monster);
        }
Пример #5
0
        public IActionResult PutMonsterFight(int monsterId, int fightId, MonsterFight monsterFight)
        {
            if (monsterId != monsterFight.MonsterId && fightId != monsterFight.FightId)
            {
                return(Content("No Such Monster and Fight Found"));
            }

            DeleteMonsterFight(monsterId, fightId);
            return(PostMonsterFight(monsterFight));
        }
Пример #6
0
 public void BoostMe()
 {
     foreach (Game.Spells.WorldSpell ownSpell in Monster.Monster.OwnSpells.FindAll(x => x.Template.Engine.GetLevel(x.Level).TypeOfSpell == Enums.SpellTypeEnum.BOOST))
     {
         if (Monster.CanCastSpell(ownSpell.SpellID) && Monster.CurrentAP >= ownSpell.Template.Engine.GetLevel(ownSpell.Level).CostPA)
         {
             MonsterFight.CastSpell(Monster, ownSpell, ownSpell.Level, Monster.CellID);
             System.Threading.Thread.Sleep(1000);
         }
     }
 }
Пример #7
0
 public IActionResult PostMonsterFight(MonsterFight monsterFight)
 {
     if (monsterFightService.Create(monsterFight))
     {
         return(Content("Monster Successfully Sent to Battle"));
     }
     else
     {
         return(BadRequest());
     }
 }
Пример #8
0
        private void DeleteMonsterBtn_Click(object sender, EventArgs e)
        {
            MonsterFight mf = GetMonsterFightFromSpecs();

            if (mf != null)
            {
                MainForm.client.DeleteAsync("https://localhost:5001/api/monsterfight/" + mf.MonsterId + "/" + mf.FightId);
            }
            Thread.Sleep(80);
            PopulateTable();
        }
Пример #9
0
        public MonsterFight GetMonsterFightFromSpecs()
        {
            MonsterFight mf = null;

            var response = MainForm.client.GetStringAsync("monsters?name=" + MonsterCBox.Text).Result;
            var monster  = JsonConvert.DeserializeObject <List <Monster> >(response).FirstOrDefault();

            mf = new MonsterFight()
            {
                FightId   = int.Parse(FightCBox.Text),
                MonsterId = monster.MonsterId
            };
            return(mf);
        }
Пример #10
0
        public bool Create(MonsterFight MonsterFight)
        {
            using (UnitOfWork unitOfWork = new UnitOfWork(context))
            {
                var monsterFight = new MonsterFight()
                {
                    MonsterId = MonsterFight.MonsterId,
                    FightId   = MonsterFight.FightId
                };

                unitOfWork.MonsterFightRepo.Create(monsterFight);
                return(unitOfWork.Save());
            }
        }
Пример #11
0
        public bool Delete(int MonsterId, int FightId)
        {
            using (UnitOfWork unitOfWork = new UnitOfWork(context))
            {
                MonsterFight result = unitOfWork.MonsterFightRepo.GetMFById(MonsterId, FightId);

                if (result == null)
                {
                    return(false);
                }

                unitOfWork.MonsterFightRepo.Delete(result);
                return(unitOfWork.Save());
            }
        }
Пример #12
0
        public bool Update(MonsterFight monsterFight)
        {
            using (UnitOfWork unitOfWork = new UnitOfWork(context))
            {
                var result = unitOfWork.MonsterFightRepo.GetAll().Where(x => x.MonsterId == monsterFight.MonsterId &&
                                                                        x.FightId == monsterFight.FightId).FirstOrDefault();

                if (result == null)
                {
                    return(false);
                }

                result.MonsterId = monsterFight.MonsterId;
                result.FightId   = monsterFight.FightId;

                unitOfWork.MonsterFightRepo.Update(result);
                return(unitOfWork.Save());
            }
        }
Пример #13
0
        private void AddMonsterBtn_Click(object sender, EventArgs e)
        {
            var response = MainForm.client.GetStringAsync("monsters?name=" + MonsterCBox.Text).Result;
            var monster  = JsonConvert.DeserializeObject <List <Monster> >(response).FirstOrDefault();

            int test = int.Parse(FightCBox.Text);

            var response1 = MainForm.client.GetStringAsync("fights/" + test).Result;
            var fight     = JsonConvert.DeserializeObject <Fight>(response1);

            MonsterFight m = new MonsterFight
            {
                MonsterId = monster.MonsterId,
                FightId   = fight.FightId,
                Monster   = monster,
                Fight     = fight
            };

            MainForm.client.PostAsJsonAsync("https://localhost:5001/api/monsterfight", m);
            Thread.Sleep(80);
            PopulateTable();
        }