Exemplo n.º 1
0
        /// <summary>
        /// Применяем аттаку, учитывая все свойства аттакующего и защищающегося
        /// </summary>
        /// <param name="mobsAttacks">моб который аттакует</param>
        /// <param name="mobsDefens">моб который защищается</param>
        /// <param name="action">какая атака будет применяться</param>
        /// <returns></returns>
        private CubeEnemy FightsDo(AbstractMobsOnMap mobsAttacks, AbstractMobsOnMap mobsDefens, IAttack action)
        {
            int random = Random.Next(1, 100);

            //Рассчитываем выпал смог ли моб уклониться
            if (mobsDefens.ChangeDodge <= random)
            {
                random = Random.Next(1, 100);

                //Рассчитываем выпал ли нам крит, если да, то получем 2 и умножаем её на общий дамаг
                int   isCriticalDamage = (mobsAttacks.ChangeCriticalDamage + (((float)(100 - mobsAttacks.ChangeCriticalDamage) / 100) * action.ChangeCritical)) >= random ? 2 : 1;
                float factorArmor      = ((float)(100 - mobsDefens.Armor) / 100);
                float commonDamage     = (float)((action.Damage + mobsAttacks.Damage) * isCriticalDamage) * factorArmor;
                //Округляем в меньшую сторону
                mobsDefens.HealthPoint -= (int)commonDamage;
            }
            return(mobs);
        }
Exemplo n.º 2
0
 public FightsController(AbstractMobsOnMap hero, AbstractMobsOnMap enemy)
 {
     mobs.hero  = hero;
     mobs.enemy = enemy;
 }