public bool FightEnemy(BaseEnemy enemy) { var fightHero = _hero.Clone(); BaseEnemy baseEnemy = (BaseEnemy)enemy.Clone(); double heroDamage; double enemyDamage; Random rnd = new Random(); bool heroWin = false; for (; ;) { int whoHit = rnd.Next(0, 100); if (whoHit < 50) { heroDamage = CalculationClearDamage((BaseCharacter)fightHero, baseEnemy); baseEnemy.Health -= (int)heroDamage; if (baseEnemy.Health <= 0) { heroWin = true; break; } } else { enemyDamage = CalculationClearDamage(baseEnemy, (BaseCharacter)fightHero); ((BaseCharacter)fightHero).Health -= (int)enemyDamage; if (((BaseCharacter)fightHero).Health <= 0) { break; } } } if (heroWin) { enemiesView.ShowWin(baseEnemy); _hero.OwnExperience += baseEnemy.OwnExperience; if (_hero.OwnExperience >= _hero.NeededExperience) { MyEvent myEvent = new MyEvent(); myEvent.UserEvent += _heroService.LvlUp; myEvent.OnUserEvent(); } } else { enemiesView.ShowLose(baseEnemy); } return(heroWin); }