//Замена игрока private void PlayerSubstitution(PlayerController playerController) { if (Team.SubstitutionsCount == 0) { return; } --Team.SubstitutionsCount; playerController.Create(new PlayerControllerData(playerController.Player.PlayerNumber, Team.Trainer.Competency)); TeamNotify?.Invoke(this, new TeamEventArgs($"player <{playerController.Player.PlayerNumber}> has been replaced")); }
//Фанатская поддержка private void FanSupport() { PlayerController playerToSupport = PlayerControllers.ElementAt(random.Next(0, PlayerControllers.Length)); if (!playerToSupport.CanPlay()) { return; } int support = random.Next(1, 10); playerToSupport.IncreasSkill(support); TeamNotify?.Invoke(this, new TeamEventArgs($"player <{playerToSupport.Player.PlayerNumber}> had fan support")); }
//Попытка забить гол private void TryScoreGoal() { PlayerController playerController = PlayerControllers.ElementAt(random.Next(0, PlayerControllers.Length)); if (!playerController.CanPlay()) { return; } int chance = random.Next(1, 200); if (chance <= playerController.PlayerPower) { Team.TeamScore++; TeamNotify?.Invoke(this, new TeamEventArgs($"player <{playerController.Player.PlayerNumber}> scored goal | Team score:{Team.TeamScore}")); } else { TeamNotify?.Invoke(this, new TeamEventArgs($"player <{playerController.Player.PlayerNumber}> missed")); } }
//Травма игрока private void PlayerInjure() { PlayerController playerToInjure = PlayerControllers.ElementAt(random.Next(0, PlayerControllers.Length)); if (!playerToInjure.CanPlay()) { return; } int injure = random.Next(1, 15); playerToInjure.ReduceSkill(injure); if (!playerToInjure.CanPlay()) { TeamNotify?.Invoke(this, new TeamEventArgs($"player <{playerToInjure.Player.PlayerNumber}> injured and cannot continue")); PlayerSubstitution(playerToInjure); } else { TeamNotify?.Invoke(this, new TeamEventArgs($"player <{playerToInjure.Player.PlayerNumber}> injured ")); } }