125 lines
3.6 KiB
Java
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);
|
|
}
|
|
}
|