LoupGarou/src/main/java/fr/leomelki/loupgarou/roles/RFaucheur.java
leomelki f79609c0a6 Upload to github
Envoi du projet sur GitHub (non privé)
2020-03-17 18:46:26 +01:00

137 lines
4.1 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package fr.leomelki.loupgarou.roles;
import java.util.List;
import java.util.Random;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import fr.leomelki.loupgarou.MainLg;
import fr.leomelki.loupgarou.classes.LGGame;
import fr.leomelki.loupgarou.classes.LGPlayer;
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent;
import fr.leomelki.loupgarou.events.LGPlayerKilledEvent.Reason;
public class RFaucheur extends Role{
public RFaucheur(LGGame game) {
super(game);
}
@Override
public RoleType getType() {
return RoleType.VILLAGER;
}
@Override
public RoleWinType getWinType() {
return RoleWinType.VILLAGE;
}
@Override
public String getName() {
return "§a§lFaucheur";
}
@Override
public String getFriendlyName() {
return "du "+getName();
}
@Override
public String getShortDescription() {
return "Tu gagnes avec le §a§lVillage";
}
@Override
public String getDescription() {
return "Tu gagnes avec le §a§lVillage§f. Si les §c§lLoups-Garous§f te tuent pendant la nuit, tu emporteras lun dentre eux dans ta mort, mais si tu meurs lors du vote du §a§lvillage§f, ce sont tes deux voisins qui en paieront le prix.";
}
@Override
public String getTask() {
return "";
}
@Override
public String getBroadcastedTask() {
return "";
}
@Override
public int getTimeout() {
return -1;
}
private static Random random = new Random();
@EventHandler(priority = EventPriority.LOWEST)
public void onKill(LGPlayerKilledEvent e) {
if (e.getKilled().getRole() == this) {
LGPlayer killed = e.getKilled();
if(killed.getCache().getBoolean("faucheur_did"))//A déjà fait son coup de faucheur !
return;
killed.getCache().set("faucheur_did", true);
if (e.getReason() == Reason.LOUP_GAROU || e.getReason() == Reason.GM_LOUP_GAROU) {//car le switch buggait (wtf)
// Mort par les LG
// Tue un lg au hasard
LGPlayer selected = null;
for (Role role : getGame().getRoles())
if (role instanceof RLoupGarou)
selected = role.getPlayers().get(random.nextInt(role.getPlayers().size()));
if (selected != null) {
LGPlayerKilledEvent killEvent = new LGPlayerKilledEvent(getGame(), e.getKilled(), e.getReason());
Bukkit.getPluginManager().callEvent(killEvent);
e.setKilled(selected);
e.setReason(Reason.FAUCHEUR);
if (killEvent.isCancelled())
return;
getGame().kill(killEvent.getKilled(), killEvent.getReason(), false);
}
} else if (e.getReason() == Reason.VOTE) {
List<?> original = MainLg.getInstance().getConfig().getList("spawns");
int size = original.size();
// double middle = ((double)size)/2D;
int killedPlace = killed.getPlace();
LGPlayer droite = null, gauche = null;
for (int i = killedPlace + 1;; i++) {
if (i == size)
i = 0;
LGPlayer lgp = getGame().getPlacements().get(i);
if (lgp != null && !lgp.isDead()) {
droite = lgp;
break;
}
if (lgp == killed)// Fait un tour complet
break;
}
for (int i = killedPlace - 1;; i--) {
if (i == -1)
i = size - 1;
LGPlayer lgp = getGame().getPlacements().get(i);
if (lgp != null && !lgp.isDead()) {
gauche = lgp;
break;
}
if (lgp == killed)// Fait un tour complet
break;
}
if (droite != null) {
LGPlayerKilledEvent killEvent = new LGPlayerKilledEvent(getGame(), e.getKilled(), e.getReason());
Bukkit.getPluginManager().callEvent(killEvent);
e.setKilled(droite);
e.setReason(Reason.FAUCHEUR);
if (!killEvent.isCancelled())
getGame().kill(killEvent.getKilled(), killEvent.getReason(), false);
}
if (gauche != null) {
LGPlayerKilledEvent killEvent;
if (droite == null) {
killEvent = new LGPlayerKilledEvent(getGame(), e.getKilled(), e.getReason());
e.setKilled(gauche);
e.setReason(Reason.FAUCHEUR);
} else
killEvent = new LGPlayerKilledEvent(getGame(), gauche, Reason.FAUCHEUR);
Bukkit.getPluginManager().callEvent(killEvent);
if (!killEvent.isCancelled())
getGame().kill(killEvent.getKilled(), killEvent.getReason(), false);
}
}
}
}
}