LoupGarou/src/main/java/fr/leomelki/loupgarou/roles/RAnge.java
2020-09-07 23:40:57 +02:00

125 lines
3.6 KiB
Java

package fr.leomelki.loupgarou.roles;
import fr.leomelki.loupgarou.classes.LGGame;
import fr.leomelki.loupgarou.classes.LGPlayer;
import fr.leomelki.loupgarou.classes.LGWinType;
import fr.leomelki.loupgarou.events.*;
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
import org.bukkit.event.EventHandler;
import java.util.ArrayList;
public class RAnge extends Role {
final ArrayList<LGPlayer> winners = new ArrayList<>();
boolean vote;
int night = 1;
public RAnge(LGGame game) {
super(game);
}
@Override
public RoleType getType() {
return RoleType.NEUTRAL;
}
@Override
public RoleWinType getWinType() {
return RoleWinType.VILLAGE;
}
@Override
public String getName() {
return "§d§lAnge";
}
@Override
public String getFriendlyName() {
return "de l'" + getName();
}
@Override
public String getShortDescription() {
return "Tu gagnes si tu remplis ton objectif";
}
@Override
public String getDescription() {
return "Tu es §d§lNeutre§f et tu gagnes si tu remplis ton objectif. Ton objectif est d'être éliminé par le village lors du premier vote de jour. Si tu réussis, tu gagnes la partie. Sinon, tu deviens un §a§lVillageois§f.";
}
@Override
public String getTask() {
return "";
}
@Override
public String getBroadcastedTask() {
return "";
}
@Override
public int getTimeout() {
return -1;
}
@EventHandler
public void onVoteStart(LGVoteEvent e) {
if (e.getGame() == getGame()) {
night = getGame().getNight();
vote = true;
for (LGPlayer lgp : getPlayers())
if (!lgp.isDead() && lgp.isRoleActive())
lgp.sendMessage("§9§oFais en sorte que les autres votent contre toi !");
}
}
@EventHandler
public void onDayEnd(LGDayEndEvent e) {
if (e.getGame() == getGame()) {
if (getPlayers().size() > 0 && getGame().getNight() == night + 1 && vote) {
Role villageois = null;
for (Role role : getGame().getRoles()) {
if (role instanceof RVillageois)
villageois = role;
}
if (villageois == null)
getGame().getRoles().add(villageois = new RVillageois(getGame()));
for (LGPlayer lgp : getPlayers()) {
if (lgp.isRoleActive())
lgp.sendMessage("§4§oTu as échoué, tu deviens §a§l§oVillageois§4§o...");
lgp.setRole(villageois);
villageois.join(lgp);
}
getPlayers().clear();
getGame().updateRoleScoreboard();
}
vote = false;
}
}
@EventHandler
public void onDeath(LGPlayerGotKilledEvent e) {
if (e.getGame() == getGame())
if (e.getReason() == Reason.VOTE && e.getKilled().getRole() == this && getGame().getNight() == night && e.getKilled().isRoleActive())
winners.add(e.getKilled());
}
@EventHandler
public void onWinCheck(LGEndCheckEvent e) {
if (e.getGame() == getGame())
if (winners.size() > 0)
e.setWinType(winners.size() == 1 && winners.get(0).getCache().has("inlove") ? LGWinType.COUPLE : LGWinType.ANGE);
}
@EventHandler
public void onWin(LGGameEndEvent e) {
if (e.getGame() == getGame())
if (e.getWinType() == LGWinType.ANGE)
e.getWinners().addAll(winners);
}
}