Пример #1
0
 /**
  * @return MatchResult
  */
 public function simulate()
 {
     $homePoints = $this->homeTeam->getAvgSkill();
     $awayPoints = $this->awayTeam->getAvgSkill();
     $homePoints += $this->malusModule($this->homeTeam->coach->favouriteModule, $this->homeTeam->playersPerRoleArray());
     $awayPoints += $this->malusModule($this->awayTeam->coach->favouriteModule, $this->awayTeam->playersPerRoleArray());
     $goalHome = 0;
     $goalAway = 0;
     if (Randomizer::boolOnPercentage(80)) {
         if ($homePoints - $awayPoints < 0) {
             $goalAway = ($awayPoints - $homePoints) % 6;
             $goalHome += $this->chance();
             $goalAway += $this->chance();
             $goalHome += $this->bonusHome();
         } else {
             $goalHome = ($homePoints - $awayPoints) % 6;
             $goalAway += $this->chance();
             $goalHome += $this->bonusHome();
         }
     } else {
         $goalHome += $this->chance();
         $goalAway += $this->chance();
         $goalHome += $this->bonusHome();
     }
     $goalHome += $this->bonusAge($this->homeTeam);
     $goalAway += $this->bonusAge($this->awayTeam);
     //Bonus on Good GoalKeeper
     $goalies = $this->homeTeam->getBestPlayerForRole("GK");
     $goalAway -= $this->bonusGoalKeeper($goalies);
     $goalies = $this->awayTeam->getBestPlayerForRole("GK");
     $goalHome -= $this->bonusGoalKeeper($goalies);
     //
     $homeModule = new Module($this->homeTeam->coach->favouriteModule);
     $awayModule = new Module($this->awayTeam->coach->favouriteModule);
     if ($homeModule->isOffensive()) {
         $goalHome += Randomizer::boolOnPercentage(50) ? rand(1, 2) : 0;
         $goalAway += Randomizer::boolOnPercentage(20) ? 1 : 0;
     }
     if ($awayModule->isOffensive()) {
         $goalAway += Randomizer::boolOnPercentage(50) ? rand(1, 2) : 0;
         $goalHome += Randomizer::boolOnPercentage(20) ? 1 : 0;
     }
     if ($awayModule->isDefensive()) {
         $goalHome -= Randomizer::boolOnPercentage(50) ? 1 : 0;
     }
     if ($homeModule->isDefensive()) {
         $goalAway -= Randomizer::boolOnPercentage(50) ? 1 : 0;
     }
     $goalHome = $goalHome < 0 ? 0 : $goalHome;
     $goalAway = $goalAway < 0 ? 0 : $goalAway;
     return new MatchResult($goalHome, $goalAway, $this->homeTeam, $this->awayTeam);
 }
Пример #2
0
 /**
  * @param Team $team
  * @return Player
  */
 private function pickAScorer(Team $team)
 {
     $player = null;
     if (Randomizer::boolOnPercentage(70)) {
         $roles = Config::get('modules.roles');
         $forwards = array_splice($roles, count($roles) / 2);
         $pos = array_rand($forwards);
         unset($forwards[$pos]);
         $player = $team->getBestPlayerForRole($pos);
         while (empty($player)) {
             if (!empty($forwards)) {
                 $pos = array_rand($forwards);
                 unset($forwards[$pos]);
                 $player = $team->getBestPlayerForRole($pos);
             } else {
                 $player = $team->roster[array_rand($team->roster)];
             }
         }
     } else {
         $player = $team->roster[array_rand($team->roster)];
     }
     return $player;
 }