/** * @param Game $game */ private function onNightEnd(Game $game) { $votes = $game->getVotes(); $numKilled = 0; $hasGuarded = false; $hasHealed = false; $hasKilled = false; $hunterKilled = false; $hunterName = ""; $killMsg = ":skull_and_crossbones: "; foreach ($votes as $lynch_id => $voters) { $player = $game->getPlayerById($lynch_id); if ($lynch_id == $game->getGuardedUserId()) { $hasGuarded = true; } elseif ($lynch_id == $game->getWitchHealedUserId()) { $hasHealed = true; } else { $killMsg .= " @{$player->getUsername()} ({$player->role->getName()})"; if ($player->role->isRole(Role::HUNTER)) { $hunterKilled = true; $hunterName = $player->getUsername(); } $game->killPlayer($lynch_id); $hasKilled = true; $numKilled++; } } // see if witch poisoned someone if ($game->getWitchPoisonedUserId()) { $poisoned_player_id = $game->getWitchPoisonedUserId(); $poisoned_player = $game->getPlayerById($poisoned_player_id); $poisoned_player_name = $poisoned_player->getUsername(); $poisoned_player_role = (string) $poisoned_player->role->getName(); if ($numKilled > 0) { $killMsg .= " and"; } $killMsg .= " @{$poisoned_player->getUsername()} ({$poisoned_player_role})"; $game->killPlayer($poisoned_player_id); $hasKilled = true; $numKilled++; $game->setWitchPoisonedUserId(null); // if killed player was hunter if ($poisoned_player->role->isRole(Role::HUNTER)) { $hunterKilled = true; $hunterName = $poisoned_player_name; } } $wasOrWere = "was"; if ($numKilled > 1) { $wasOrWere = "were"; } $killMsg .= " {$wasOrWere} killed during the night."; $game->setLastGuardedUserId($game->getGuardedUserId()); $game->setGuardedUserId(null); if ($hasKilled) { $this->sendMessageToChannel($game, $killMsg); // send shoot command to hunter if in game if ($hunterKilled) { $game->setHunterNeedsToShoot(true); $hunterMsg = ":bow_and_arrow: " . $hunterName . " you were killed. The night isn't over, though, because as a hunter you can take one other player with you to your grave. Type !shoot @playername, or !shoot noone."; $this->sendMessageToChannel($game, $hunterMsg); } } if ($numKilled == 0) { $this->sendMessageToChannel($game, "There was no deaths in the night!"); } $game->setNightEnded(true); }