public void LvlUp() { if (hero.Level < hero.MaxLevel) { BaseHero oldHero = (BaseHero)hero.Clone(); hero.Level += 1; hero.NeededExperience = (hero.NeededExperience * 3) / 2 + 1; LvlUpView lvlUpView = new LvlUpView(); if (hero is Warrior) { hero.Damage += 8; hero.Health += 90; hero.Armour += 10; } else if (hero is Archer) { hero.Damage += 10; hero.Health += 50; hero.Armour += 7; } else if (hero is Wizard) { hero.Damage += 12; hero.Health += 35; hero.Armour += 5; } lvlUpView.ShowNewStats(oldHero, hero); } }
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); }