if($player->isSurvival() or $player->isAdventure()) {
if($this->isStarted()) {
foreach($this->getLevel()->getPlayers() as $p) {
$p ->sendMessage(\pocketmine\utils\TextFormat::YELLOW . $player->getName() . " a quitté le loup garou. Il reste {$this->getPlugin()->getInGamePlayers($this->getLevel())} joueurs !", [$this->getLevel()->getPlayers()]);
$p ->sendMessage(\pocketmine\utils\TextFormat::YELLOW . $player->getName() . " a quitté le loup garou. Il reste " . $this->getMinPlayers() - $this->getPlugin()->getInGamePlayers($this->getLevel()) . " joueurs !", [$this->getLevel()->getPlayers()]);
}
$player->sendMessage(\pocketmine\utils\TextFormat::YELLOW . "Vous avez quitté le loup garou. Il reste " . ($this->getMinPlayers() - $this->getPlugin()->getInGamePlayers($this->getLevel())) ." joueurs !");
} else {
foreach($this->getLevel()->getPlayers() as $p) {
$p ->sendMessage(\pocketmine\utils\TextFormat::YELLOW . $player->getName() . " a quitté le loup garou. Il reste {$this->getPlugin()->getInGamePlayers($this->getLevel())} joueurs avant de demarer la partie !", [$this->getLevel()->getPlayers()]);
$p ->sendMessage(\pocketmine\utils\TextFormat::YELLOW . $player->getName() . " a quitté le loup garou. Il reste " . $this->getMinPlayers() - $this->getPlugin()->getInGamePlayers($this->getLevel()) . "joueurs avant de demarer la partie !", [$this->getLevel()->getPlayers()]);
}
$player->sendMessage(\pocketmine\utils\TextFormat::YELLOW . "Vous avez quitté le loup garou. Il reste " . ($this->getMinPlayers() - $this->getPlugin()->getInGamePlayers($this->getLevel())) ." joueurs avant de demarer la partie !");
$player->sendMessage(\pocketmine\utils\TextFormat::YELLOW . "Vous avez quitté le loup garou. Il reste " . ($this->getMinPlayers() - $this->getPlugin()->getInGamePlayers($this->getLevel())) ." joueurs avant de demarer la partie !");
}
}
}
public function onPlayerDeath(\pocketmine\event\player\PlayerDeathEvent $event) {
$event->setDeathMessage("");
$this->broadcastMessage($event->getPlayer()->getName() . " est mort ! C'était un " . $this->getRole($player));
$p->sendTip("§l" . (count($this->LoupGarou) == 0 ? implode(", ", $n) . " et " . $l->getName() : $l->getName()) . " (Loups Garous) ont gagnés la partie car tout les villageois sont mort ! \n\n\n§rRetour au lobby dans 30 secondes...");
$p->sendTip("§l" . (count($v) == 0 ? implode(", ", $n) . " et " . $l->getName() : $l->getName()) . " (Villageois) ont gagnés la partie car tout les loups garous sont mort ! \n\n\n§rRetour au lobby dans 30 secondes...");
if($this->mort !== $event->getDamager() or $this->mort !== $event->getEntity()) {
$event->setCancelled();
}
break;
case "successeur":
if($event->getDamager() == $this->maire) {
$this->maire = $event->getEntity();
$this->broadcastMessage("Le nouveau maire est " . $event->getEntity()->getName() . " !");
$this->eliminate($event->getDamager());
$this->task->turn = 465;
}
break;
default:
$event->setCancelled();
break;
@ -182,6 +267,25 @@ class LoupGarou extends Game {
public function eliminate(Player $player) {
if($this->current == "kill") {
$this->task->turn = 650;
}
if($player == $this->amoureux[0] and !isset($this->killedAm)) {
$this->broadcastMessage("Mais " . $this->amoureux[1]->getName() . " était amoureux de " . $this->amoureux[0]->getName() . " et se suicida par chagrin d'amour...");
$this->killedAm = true;
$this->eliminate($this->amoureux[1]);
}
if($player == $this->amoureux[1] and !isset($this->killedAm)) {
$this->broadcastMessage("Mais " . $this->amoureux[0]->getName() . " était amoureux de " . $this->amoureux[1]->getName() . " et se suicida par chagrin d'amour...");
$this->killedAm = true;
$this->eliminate($this->amoureux[0]);
}
if($this->maire == $player) {
$this->oldMaire = $player;
$this->current = "successeur";
$this-broadcastMessage("Le maire est mort ! Il va désigner son successeur !");
return true;
}
$player->setGamemode(3);
switch($this->getRole($player)) {
case "LoupGarou":
@ -203,6 +307,21 @@ class LoupGarou extends Game {
unset($this->{$this->getRole($player)});
break;
}
$lg = [];
$v = [];
foreach($this->getLevel()->getPlayers() as $p) {
if($this->getRole($player) == "LoupGarou") {
array_push($lg, $player);
} else {
array_push($v, $player);
}
}
if(count($v) == 0) { // Les loups garous ont gagnés
$this->finish(true);
}
if(count($lg) == 0) { // Les villageois ont gagné
$this->finish(false);
}
}
@ -243,11 +362,12 @@ class LoupGarou extends Game {
public function onInteract(\pocketmine\event\player\PlayerInteractEvent $event) {
$this->main->Sorcière->sendMessage($this->killed->getName() . " a été tué cette nuit ! Souaitez vous le resuciter (boire la potion de vie), ou tuer une autre personne (la taper avec la potion de mort). Faites attention, ces potions n'ont qu'un seul usage dans la partie.");
$this->main->Sorcière->sendMessage($this->main->killed->getName() . " a été tué cette nuit ! Souaitez vous le resuciter (boire la potion de vie), ou tuer une autre personne (la taper avec la potion de mort). Faites attention, ces potions n'ont qu'un seul usage dans la partie.");
if($this->potions["life"]) {
$this->main->Sorcière->getInventory()->addItem(Item::get(Item::POTION, 21, 1)->setCompoundTag(\pocketmine\nbt\NBT::parseJSON("{display:{Name:'Potion de vie\\n \\n \\n \\n'},Unbreakable:1}")));
}
@ -446,16 +582,16 @@ class DayTask extends \pocketmine\scheduler\PluginTask {
break;
case 400:
$this->main->getLevel()->setTime(0);
if(isset($this->killed) and isset($this->killed2)) {
$this->main->broadcastMessage("Cette nuit, 2 personnes sont morte. Le " . $this->getRole($this->killed) . " et le " . $this->getRole($this->killed2) . " !");
switch($this->getRole($this->killed)) {
if(isset($this->main->killed) and isset($this->main->killed2)) {
$this->main->broadcastMessage("Cette nuit, 2 personnes sont morte. Le " . $this->getRole($this->main->killed) . " et le " . $this->getRole($this->main->killed2) . " !");
switch($this->getRole($this->main->killed)) {
case "Meutrier":
$this->main->broadcastMessage("Mais le meutrier, dans sa chute, a tué une autre personne.");
$this->main->Meurtier->sendMessage("Choisissez une persone à tuer en la tapant.");
$m = true;
break;
}
switch($this->getRole($this->killed2)) {
switch($this->getRole($this->main->killed2)) {
case "Meutrier":
$this->main->broadcastMessage("Mais le meutrier, dans sa chute, a tué une autre personne.");
$this->main->Meurtier->sendMessage("Choisissez une persone à tuer en la tapant.");
@ -463,9 +599,9 @@ class DayTask extends \pocketmine\scheduler\PluginTask {
$this->main->broadcastMessage("Cette nuit, 1 personne est morte. Le " . $this->getRole($this->killed) . " !");
switch($this->getRole($this->killed)) {
} elseif(isset($this->main->killed)) {
$this->main->broadcastMessage("Cette nuit, 1 personne est morte. Le " . $this->getRole($this->main->killed) . " !");
switch($this->getRole($this->main->killed)) {
case "Meutrier":
$this->main->broadcastMessage("Mais le meutrier, dans sa chute, a tué une autre personne.");
$this->main->Meurtier->sendMessage("Choisissez une persone à tuer en la tapant.");
@ -475,9 +611,9 @@ class DayTask extends \pocketmine\scheduler\PluginTask {
$this->turn = 465;
break;
}
} elseif(isset($this->killed2)) {
$this->main->broadcastMessage("Cette nuit, 1 personne est morte. Le " . $this->getRole($this->killed2) . " !");
switch($this->getRole($this->killed)) {
} elseif(isset($this->main->killed2)) {
$this->main->broadcastMessage("Cette nuit, 1 personne est morte. Le " . $this->getRole($this->main->killed2) . " !");
switch($this->getRole($this->main->killed2)) {
case "Meutrier":
$this->main->broadcastMessage("Mais le meutrier, dans sa chute, a tué une autre personne.");
$this->main->Meurtier->sendMessage("Choisissez une persone à tuer en la tapant.");
@ -492,7 +628,273 @@ class DayTask extends \pocketmine\scheduler\PluginTask {
}
break;
case 465:
$this->main->broadcastMessage("Il va faloir élire un maire !");
$this->main->broadcastMessage("Il va faloir élire un maire ! Votez pour qu'un joueur soit maire en lui tapant dessus. Le maire tranche si il y a un debat au moment de tuer un suspect (chaque jour)");
$this->main->current = "maire";
break;
case 525:
$uppestVote = 0;
foreach($this->main->voted as $running) {
if($running > $uppestVote) {
$uppestVote = $running;
}
}
$runnings = [];
foreach($this->main->voted as $name => $running) {
if($running == $uppestVote) {
$runnings[] = $name;
}
}
if(count($runnings) > 1) {
$last = $runnings[count($runnings) - 1];
unset($runnings[count($runnings) - 1]);
$this->main->broadcastMessage(implode(", " . $runnings . " et $last ont le même resultat ! Le maire sera séléctionné parmis ceux ci aux hasard."));
$this->main->broadcastMessage("Le nouveau maire est : {$this->main->maire->getName()} !");
}
break;
case 530:
$this->main->broadcastMessage("Maintenant, nous devons choisir un personne qui doit mourir. Tapez la personne que vous trouvez la plus suspecte !");
$this->main->current = "vote";
break;
case 590:
$uppestVote = 0;
foreach($this->main->voted as $running) {
if($running > $uppestVote) {
$uppestVote = $running;
}
}
$runnings = [];
foreach($this->main->voted as $name => $running) {
if($running == $uppestVote) {
$runnings[] = $name;
}
}
if(count($runnings) > 1) {
$last = $runnings[count($runnings) - 1];
unset($runnings[count($runnings) - 1]);
$this->main->broadcastMessage(implode(", " . $runnings) . " et $last ont le même resultat ! Vous pourez tuer celui qui sera tiré au hasard sur ceux ci.");
$this->main->Voyante->sendMessage("Touchez le joueur dont vous voulez rendre villageois connaitre l'identité. Vous avez une minute donc decidez vous vite !");
$this->main->Courageuse->sendMessage("Les loups garous vont faire une nouvelle victime ! Soyez discret(e), espionnez les et tapez les pour les ralentir !");
$this->main->Sorcière->sendMessage($this->main->killed->getName() . " a été tué cette nuit ! Souaitez vous le resuciter (boire la potion de vie), ou tuer une autre personne (la taper avec la potion de mort). Faites attention, ces potions n'ont qu'un seul usage dans la partie.");
if($this->potions["life"]) {
$this->main->Sorcière->getInventory()->addItem(Item::get(Item::POTION, 21, 1)->setCompoundTag(\pocketmine\nbt\NBT::parseJSON("{display:{Name:'Potion de vie\\n \\n \\n \\n'},Unbreakable:1}")));
}
if($this->potions["death"]) {
$this->main->Sorcière->getInventory()->addItem(Item::get(Item::POTION, 23, 1)->setCompoundTag(\pocketmine\nbt\NBT::parseJSON("{display:{Name:'Potion de mort\\n \\n \\n \\n'},Unbreakable:1}")));
$this->main->broadcastMessage("La sorcière se rendort...");
break;
case 395:
$this->main->broadcastMessage("Le village se reveille...");
$this->main->getLevel()->setTime(23000);
break;
case 400:
$this->main->getLevel()->setTime(0);
if(isset($this->main->killed) and isset($this->main->killed2)) {
$this->main->broadcastMessage("Cette nuit, 2 personnes sont morte. Le " . $this->getRole($this->main->killed) . " et le " . $this->getRole($this->main->killed2) . " !");
$this->main->broadcastMessage("Le nouveau maire est " . $this->main->maire->getName() . " !");
}
}
$this->turn = 530; // Also to not have to rechoose the mayor one more time.
break;
case 530:
$this->main->broadcastMessage("Maintenant, nous devons choisir un personne qui doit mourir. Tapez la personne que vous trouvez la plus suspecte !");
$this->main->current = "vote";
break;
case 590:
$uppestVote = 0;
foreach($this->main->voted as $running) {
if($running > $uppestVote) {
$uppestVote = $running;
}
}
$runnings = [];
foreach($this->main->voted as $name => $running) {
if($running == $uppestVote) {
$runnings[] = $name;
}
}
if(count($runnings) > 1) {
$last = $runnings[count($runnings) - 1];
unset($runnings[count($runnings) - 1]);
$this->main->broadcastMessage(implode(", " . $runnings) . " et $last ont le même resultat ! Vous pourez tuer celui qui sera tiré au hasard sur ceux ci.");