public function fire() { $client = $this->client; if ($this->game->getState() != GameState::NIGHT) { $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send(":warning: You can only guard at night.", $channel); }); throw new Exception("Guarding occurs only during the night."); } // Voter should be alive if (!$this->game->hasPlayer($this->userId)) { $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send(":warning: You aren't alive in the specified channel.", $channel); }); throw new Exception("Can't guard if dead."); } // Person player is voting for should also be alive if (!$this->game->hasPlayer($this->args[1])) { $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send(":warning: Could not find that player.", $channel); }); throw new Exception("Voted player not found in game."); } // Person should be werewolf $player = $this->game->getPlayerById($this->userId); if ($player->role != Role::BODYGUARD) { $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send(":warning: You have to be a bodyguard to guard.", $channel); }); throw new Exception("Only bodyguard can guard."); } if ($this->game->getGuardedUserId() !== null) { $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send(":warning: You have already guarded.", $channel); }); throw new Exception("You have already guarded."); } if ($this->game->getLastGuardedUserId() == $this->args[1]) { $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send(":warning: You cant guard the same player as last night.", $channel); }); throw new Exception("You cant guard the same player as last night"); } $this->game->setGuardedUserId($this->args[1]); $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send("Guarding successful.", $channel); }); $this->gameManager->changeGameState($this->game->getId(), GameState::DAY); }
public function fire() { $client = $this->client; if ($this->game->getState() != GameState::NIGHT) { $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send(":warning: Vous pouvez uniquement protéger la nuit", $channel); }); throw new Exception("Impossible de protéger en dehors de la nuit"); } // Voter should be alive if (!$this->game->isPlayerAlive($this->userId)) { $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send(":warning: Vous n'êtes pas vivant dans la partie spécifiée.", $channel); }); throw new Exception("Impossible de protéger en étant mort."); } // Person player is voting for should also be alive if (!$this->game->isPlayerAlive($this->args[1])) { $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send(":warning: Ce joueur n'a pas pu être trouvé", $channel); }); throw new Exception("Le joueur demandé n'a pas été trouvé dans la partie."); } // Person should be werewolf $player = $this->game->getPlayerById($this->userId); if ($player->role != Role::BODYGUARD) { $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send(":warning: Vous devez être Salvateur pour pouvoir protéger", $channel); }); throw new Exception("Uniquement le Salvateur peut protéger."); } if ($this->game->getGuardedUserId() !== null) { $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send(":warning: Vous avez déjà protégé.", $channel); }); throw new Exception("Vous avez déjà protégé."); } if ($this->game->getLastGuardedUserId() == $this->args[1]) { $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send(":warning: Vous ne pouvez pas protéger le même joueur que la nuit dernière.", $channel); }); throw new Exception(":warning: Vous ne pouvez pas protéger le même joueur que la nuit dernière."); } $this->game->setGuardedUserId($this->args[1]); $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send("Joueur protégé avec succès", $channel); }); $this->gameManager->changeGameState($this->game->getId(), GameState::DAY); }
public function fire() { $client = $this->client; if ($this->game->getState() != GameState::NIGHT) { $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send(":warning: Ночь утра мудренее. Дождись заката.", $channel); }); throw new Exception("Ночь утра мудренее. Дождись заката."); } // Voter should be alive if (!$this->game->isPlayerAlive($this->userId)) { $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send(":warning: Кажется тебя уже выпилили, наберись терпения и жди следующей игры.", $channel); }); throw new Exception("Кажется тебя уже выпилили, наберись терпения и жди следующей игры."); } // Person player is voting for should also be alive if (!$this->game->isPlayerAlive($this->args[1])) { $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send(":warning: Не вижу такого чела, а он с какого района?", $channel); }); throw new Exception("Не вижу такого чела, а он с какого района?"); } // Person should be werewolf $player = $this->game->getPlayerById($this->userId); if ($player->role != Role::BODYGUARD) { $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send(":warning: А справка, что ты телохранитель у тебя есть?", $channel); }); throw new Exception("А справка, что ты телохранитель у тебя есть?"); } if ($this->game->getGuardedUserId() !== null) { $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send(":warning: Палехче, не больше одного за раз, громила.", $channel); }); throw new Exception("Палехче, не больше одного за раз, громила."); } if ($this->game->getLastGuardedUserId() == $this->args[1]) { $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send(":warning: Я понимаю, что он твой любимчик, но два раза подряд не прокатит.", $channel); }); throw new Exception("Я понимаю, что он твой любимчик, но два раза подряд не прокатит."); } $this->game->setGuardedUserId($this->args[1]); $client->getChannelGroupOrDMByID($this->channel)->then(function (ChannelInterface $channel) use($client) { $client->send("Все путем.", $channel); }); $this->gameManager->changeGameState($this->game->getId(), GameState::DAY); }
private function onNightEnd(Game $game) { $client = $this->client; $votes = $game->getVotes(); foreach ($votes as $lynch_id => $voters) { $player = $game->getPlayerById($lynch_id); if ($lynch_id == $game->getGuardedUserId()) { $killMsg = ":muscle: @{$player->getUsername()} was protected from being killed during the night."; $game->setLastGuardedUserId($game->getGuardedUserId()); $game->setGuardedUserId(null); } else { $killMsg = ":skull_and_crossbones: @{$player->getUsername()} was killed during the night."; $game->removePlayer($lynch_id); } $client->getChannelGroupOrDMByID($game->getId())->then(function (Channel $channel) use($client, $killMsg) { $client->send($killMsg, $channel); }); } }
private function onNightEnd(Game $game) { $votes = $game->getVotes(); foreach ($votes as $lynch_id => $voters) { $player = $game->getPlayerById($lynch_id); if ($lynch_id == $game->getGuardedUserId()) { $killMsg = ":muscle: @{$player->getUsername()} was protected from being killed during the night."; } else { $killMsg = ":skull_and_crossbones: @{$player->getUsername()} ({$player->role}) was killed during the night."; $game->killPlayer($lynch_id); } $game->setLastGuardedUserId($game->getGuardedUserId()); $game->setGuardedUserId(null); $this->sendMessageToChannel($game, $killMsg); } }
private function onNightEnd(Game $game) { $votes = $game->getVotes(); foreach ($votes as $lynch_id => $voters) { $player = $game->getPlayerById($lynch_id); if ($lynch_id == $game->getGuardedUserId()) { $killMsg = ":muscle: @{$player->getUsername()} a été protégé par le Salvateur de l'attaque des Loups-Garous."; } else { $killMsg = ":skull_and_crossbones: @{$player->getUsername()} ({$player->role}) a été tué pendant la nuit."; $game->killPlayer($lynch_id); } $game->setLastGuardedUserId($game->getGuardedUserId()); $game->setGuardedUserId(null); $this->sendMessageToChannel($game, $killMsg); } }
/** * @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); }
private function onNightEnd(Game $game) { $votes = $game->getVotes(); foreach ($votes as $lynch_id => $voters) { $player = $game->getPlayerById($lynch_id); if ($lynch_id == $game->getGuardedUserId()) { $killMsg = ":muscle: @{$player->getUsername()} спасен благодаря тебе, мужик."; } else { $killMsg = ":skull_and_crossbones: @{$player->getUsername()} ({$player->role}) был беспощадно убит."; $game->killPlayer($lynch_id); } $game->setLastGuardedUserId($game->getGuardedUserId()); $game->setGuardedUserId(null); $this->sendMessageToChannel($game, $killMsg); } }