/// <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); }
public FightsController(AbstractMobsOnMap hero, AbstractMobsOnMap enemy) { mobs.hero = hero; mobs.enemy = enemy; }