diff --git a/putsch.py b/putsch.py index 31859dfa182d469655aa0dea9c65a20af05d846e..5f98e5d1ada64185338b4cf4fe156811c4097e01 100644 --- a/putsch.py +++ b/putsch.py @@ -9,799 +9,780 @@ import time from multiprocessing import Process +def couper(pseudo): + return pseudo.split("!")[0] + + +def list_to_str(li): + return ", ".join(li) + +# renvoie un paquet avec le bon nombre de cartes & les bonnes classes + + +def Paquet(nbrJoueurs): + if nbrJoueurs == 4: + return ["loups", "voyante", "sorciere", "chasseur"] + if nbrJoueurs == 5: + res = Paquet(4) + res.append("loups") + res.append("voleur") + res.append("ancien") + return res + if nbrJoueurs == 6: + res = Paquet(5) + res.append("cupidon") + return res + if nbrJoueurs == 7: + res = Paquet(6) + res.append("idiot") + return res + if nbrJoueurs == 8: + res = Paquet(7) + res.append("loups") + return res + if nbrJoueurs == 9: + res = Paquet(8) + res.append("villageois") + return res + if nbrJoueurs == 10: + res = Paquet(9) + res.append("villageois") + return res + if nbrJoueurs == 11: + res = Paquet(10) + res.append("loups") + return res + if nbrJoueurs == 12: + res = Paquet(11) + res.append("villageois") + return res -def couper(pseudo) : - return pseudo.split("!")[0] - -def list_to_str(li) : - return ", ".join(li) - -#renvoie un paquet avec le bon nombre de cartes & les bonnes classes -def Paquet(nbrJoueurs) : - if nbrJoueurs == 4 : - return ["loups","voyante","sorciere","chasseur"] - if nbrJoueurs == 5 : - res = Paquet(4) - res.append("loups") - res.append("voleur") - res.append("ancien") - return res - if nbrJoueurs == 6 : - res = Paquet(5) - res.append("cupidon") - return res - if nbrJoueurs == 7 : - res = Paquet(6) - res.append("idiot") - return res - if nbrJoueurs == 8 : - res = Paquet(7) - res.append("loups") - return res - if nbrJoueurs == 9 : - res = Paquet(8) - res.append("villageois") - return res - if nbrJoueurs == 10 : - res = Paquet(9) - res.append("villageois") - return res - if nbrJoueurs == 11 : - res = Paquet(10) - res.append("loups") - return res - if nbrJoueurs == 12 : - res = Paquet(11) - res.append("villageois") - return res +class Boooob(ircbot.SingleServerIRCBot): + def __init__(self): + ircbot.SingleServerIRCBot.__init__( + self, [("irc.iiens.net", 6667)], "putsch", "Je suis un bot", 5) + self.joueurs = [] + self.ingame = 0 + self.phase = 0 + self.repet = 0 + self.phase2trig = 1 + self.phase2 = 0 -class Boooob(ircbot.SingleServerIRCBot): - def __init__(self): - ircbot.SingleServerIRCBot.__init__(self, [("irc.iiens.net", 6667)],"putsch", "Je suis un bot",5) - self.joueurs = [] - self.ingame = 0 - self.phase = 0 - self.repet = 0 - - self.phase2trig = 1 - self.phase2 = 0 - - self.phase4trig = 1 - self.phase4 = 0 - self.egalite = 1 - - self.voyanteok = 0 - self.loupsok = 0 - self.sorciereok = 0 - self.votes = [] - self.avote = [] - self.temps = 0 - self.topic = 0 - self.attente = 0 - self.cartes = [] #Les cartes qui seront en jeu -> sert uniquement pour initialiser la partie - self.loups = [] - self.villageois =[] - - self.lovers = [] - - self.sorciere = "" - self.sorcierevictime = "" - self.cankill = 1 #sorciere uniquement - self.cansave = 1 #sorciere uniquement - - self.chasseur = "" - self.chasseurok = 1 - self.chasseurtrig = 1 - self.chasseurvictime = "" - self.pf = "" - - self.voyante = "" - self.cansee = 1 #voyante - - self.cupidon = "" - self.cupidontrig = 1 - - self.maire = "" - - self.voleur = "" - self.voleurtrig = 1 - - self.ancien = "" - self.canlive = 1 - - self.idiot = "" - self.canvote = 1 - - self.victime = [] - - - def on_welcome(self, serv, ev): - serv.join("#lg_putsch") - serv.join("#tputsch") - serv.join("#lg_putsch_loups") - serv.join("#lg_putsch_pf") - serv.join("#lg_putsch_morts") - serv.join("#lg_cheat") - serv.privmsg("NickServ","identify MotDePasse") - def on_join(self, serv, ev):#Quand qq entre dans le chann, le bot inclus - canal = ev.target() - if canal == "#lg_putsch_loups" and self.phase == 3: - serv.privmsg(canal, "Vous pouvez maintenant voter en tapant '!vote pseudo'. Tout vote est definitif, vous avez le choix entre :"+", ".join(self.joueurs)) - - - - - - def on_privmsg(self, serv, ev):#msg privé - personne = ev.source() - personne = couper(personne) - message = ev.arguments()[0] - - if "Titch" in personne and "!owner" in message : - serv.privmsg("chanserv", "set founder #lg_putsch_loups Titch") - - if "Titch" in personne and "!mode" in message : - serv.mode("#lg_putsch_loups", "+i") - - - if self.phase == 2 : - #Voleur - if self.voleur == personne : - for f in self.cartes : - if f in message : - serv.privmsg(personne, "Tu as choisi : "+f) - if f == "loups" : - self.loups.append(personne) - serv.privmsg(personne, "Pense a rejoindre le chann #lg_putsch_loups !") - serv.invite(personne, "#lg_putsch_loups") - else : - setattr(self,f,personne) - self.phase2 = self.phase2 + 1 - break - - - - #cupidon - if self.cupidon == personne : - amants = [] - for f in self.joueurs : - if f in message and f not in amants : - amants.append(f) - if len(amants) == 2 : - serv.privmsg(personne, "Tu as choisi ces deux couillons :"+", ".join(amants)) - self.lovers = amants - serv.privmsg(self.lovers[0], "Felicitations, tu es en couple avec "+self.lovers[1]+".") - serv.privmsg(self.lovers[1], "Felicitations, tu es en couple avec "+self.lovers[0]+".") - self.phase2 = self.phase2 + 1 - - - if self.phase == 3 : - #voyante - if self.voyante == personne and self.cansee == 1 : - for f in self.joueurs : - if f in message and "!who" in message: - for g in dir(self) : - if f in str(getattr(self, g)) and g != "joueurs" and g != "lovers" and g != "avote" and g != "votes" and self.cansee == 1 : - serv.privmsg(personne, "La classe de "+f+" est :"+g) - self.voyanteok = 1 - self.cansee = 0 - break - #sorciere - if self.sorciere == personne and self.sorciereok != 1 : - if "!nope" in message : - self.sorciereok = 1 - serv.privmsg(self.sorciere, "Espece de glandeur !") - serv.privmsg("#lg_putsch", "La sorciere a fait ce qu'elle avait a faire..") - else : - - if "!ress" in message and self.cansave == 1 : - self.cansave = 0 - self.victime = [] - self.sorciereok = 1 - serv.privmsg("#lg_putsch", "La sorciere a fait ce qu'elle avait a faire..") - serv.privmsg(self.sorciere, "Comme c'est gentil ! ") - else : - if "!tuer" in message and self.cankill == 1: - if message.split(" ")[1] in self.joueurs : - self.victime.append(message.split(" ")[1]) - self.cankill = 0 - self.sorcierevictime = message.split(" ")[1] - self.sorciereok = 1 - serv.privmsg(self.sorciere, "ASSASSIN ! ") - serv.privmsg("#lg_putsch", "La sorciere a fait ce qu'elle avait a faire..") - #chasseur - if self.chasseur == personne and self.chasseur in self.victime : - for f in self.joueurs : - if f in message and "!tuer" in message and self.chasseur not in message : - self.victime.append(f) - serv.privmsg(self.chasseur, "Tu as tué "+f+" par vengeance ! HAHA !") - self.chasseurok = 1 - self.chasseurvictime = f - break - - if self.phase == 4 : - - #chasseur - - if self.chasseur == personne and self.chasseur in self.victime : - for f in self.joueurs : - if f in message and "!tuer" in message and self.chasseur not in message : - self.victime.append(f) - serv.privmsg(self.chasseur, "Tu as tué "+f+" par vengeance ! HAHA !") - self.chasseurok = 1 - self.chasseurvictime = f - serv.privmsg("#lg_putsch", "J'en connais un qui va etre deçu...") - break - - - - - - - - - - - - - - - - - def on_invite(self, serv, ev) : - canal = ev.arguments()[0] - serv.join(canal) - - def on_pubmsg(self, serv, ev): #quand qq ecrit dans le chat - canal = ev.target() - canal2 = self.channels[canal] #Sert a recup la liste des users - - personne = ev.source() - personne = couper(personne) - message = ev.arguments()[0] - if "!debug" in message and "Titch" in personne : - if len(message.split(" ")) == 1 : - - for f in dir(self): - print(f+" = "+str(getattr(self, f))) - else : - for f in message.split(" ")[1:] : - print(f+" = "+str(getattr(self, f))) - - if self.ingame == 0 : #Ensemble des commandes avant le debut de la partie - if self.topic == 0 : - #serv.topic(canal,"Tapez !newgame pour demarrer une partie ! ") - self.topic = 1 - if "!gratuit" in message : - serv.privmsg(canal, "Et hop, on hl tout le monde ! ou pas ?") - if "!newgame" in message : - serv.privmsg(canal, "Ok, "+personne+" a lancé une partie, tapez !join pour rejoindre (si vous retapez !join, vous quittez !)") - serv.privmsg(canal, personne+" a rejoint la partie !") - self.joueurs.append(personne) - self.ingame = 1 - self.phase = 1 - if self.ingame == 1 : - - - - - # Condition de victoire - - if ((self.phase == 3 or self.phase == 4) and ( self.loups == [] or sorted(self.joueurs) == sorted(self.loups) or sorted(self.lovers) == sorted(self.joueurs))) or "!reset" in message : - if self.loups == [] : - serv.privmsg("#lg_putsch", "Tous les loups sont morts..... Le village a gagné !") - else : - if sorted(self.joueurs) == sorted(self.loups) : - serv.privmsg("#lg_putsch", "Tous les villageois sont morts... Les loups ont gagné !") - else : - serv.privmsg("#lg_putsch", "Les amants ont gagné....") - for f in self.joueurs : - serv.mode("#lg_putsch", "-v "+f) - for f in self.loups : - serv.kick("#lg_putsch_loups", f) - time.sleep(5) - serv.privmsg("#lg_putsch", "Les survivants sont : "+list_to_str(self.joueurs)) - - time.sleep(10) - serv.topic("#lg_putsch", "Channel de Loup Garou! Tapez !newgame pour commencer une nouvelle partie! Un bug à observer ? Rejoignez #lg_bugs" ) - - serv.mode("#lg_putsch", "-m") - serv.privmsg("#lg_putsch", "On reinitialise TOUT !") - self.joueurs = [] - self.ingame = 0 - self.phase = 0 - self.repet = 0 - - self.phase2trig = 1 - self.phase2 = 0 - - self.phase4trig = 1 - self.phase4 = 0 - self.egalite = 1 - - self.voyanteok = 0 - self.loupsok = 0 - self.sorciereok = 0 - self.votes = [] - self.avote = [] - self.temps = 0 - self.topic = 0 - self.attente = 0 - self.cartes = [] #Les cartes qui seront en jeu -> sert uniquement pour initialiser la partie - self.loups = [] - self.villageois =[] - - self.lovers = [] - - self.sorciere = "" - self.cankill = 1 #sorciere uniquement - self.cansave = 1 #sorciere uniquement - - self.chasseur = "" - self.chasseurok = 1 - self.chasseurtrig = 1 - self.chasseurvictime = "" - self.pf = "" - - self.voyante = "" - self.cansee = 1 #voyante - - self.cupidon = "" - self.cupidontrig = 1 - - self.maire = "" - - self.voleur = "" - self.voleurtrig = 1 - - self.ancien = "" - self.canlive = 1 - - self.idiot = "" - self.canvote = 1 - - self.victime = [] - - serv.privmsg("#lg_putsch", " Ouf, reinitialisation reussie !") - - - - - - - - if self.phase == 1 : #phase où les joueurs rejoignent la partie - if "!join" in message : - if personne not in self.joueurs : - if len(self.joueurs) < 13 : - serv.privmsg(canal, personne+" a rejoint la partie !") - self.joueurs.append(personne) - else : - serv.privmsg(canal, "Desolé "+personne+", c'est complet pour l'instant...") - - else : - serv.privmsg(canal, personne+" a quitté la partie ! BOUH ! ") - if personne in self.joueurs : - - self.joueurs.remove(personne) - - if "!list" in message : - serv.privmsg(canal, "La liste des joueurs est : "+", ".join(self.joueurs)) - if len(self.joueurs) < 4 : - self.attente = 0 - if len(self.joueurs) >= 4 and self.attente == 0: - - serv.privmsg(canal, "vous etes au moins 4, vous pouvez taper !run pour lancer la partie !") - self.attente = 1 - if "!run" in message and self.attente == 1 : - serv.privmsg(canal,"La partie va se lancer.....Regardez vos query et vos invitations ! ") - # Selection des factions pour les joueurs, invitations dans les chann ... - - serv.topic(canal, "Une partie est en cours. Les joueurs sont :"+" ,".join(self.joueurs)) - - serv.mode(canal, "+m") #on mute le chan pour empecher les randoms de parler - serv.privmsg(canal, "Je mute le canal !") - self.cartes = Paquet(len(self.joueurs)) - - #On attribue a chaque joueur un role - for f in self.joueurs : - serv.mode(canal,"+v "+f) #on passe les joueurs en voice - role = self.cartes.pop(rand.randint(0, len(self.cartes)- 1)) - serv.privmsg(f, "Ton role pour la partie sera : "+role) - if role == "loups" or role == "villageois" : - if role == "loups" : - serv.privmsg(f, "Pense a rejoindre le chann #lg_putsch_loups !") - self.loups.append(f) - if role == "villageois" : - self.villageois.append(f) - else : - setattr(self,role,f) - for f in self.loups : - serv.invite(f, "#lg_putsch_loups") - serv.privmsg("#lg_putsch_loups", "coucou les ptits loups !") - serv.privmsg(canal, "Bon, bah c'est parti...") - serv.privmsg(canal, "La partie commence....") - self.phase = 2 - if self.phase == 2 : - if self.phase2trig == 1 : - serv.privmsg("#lg_putsch", "J'appelle le voleur...S'il existe !") - serv.privmsg("#lg_putsch", "J'appelle le cupidon... S'il existe !") - self.phase2trig = 0 - - if self.voleur != "" and self.phase2 == 0 and self.voleurtrig == 1 : - serv.privmsg(self.voleur, "Tu es le voleur, tes choix sont : "+", ".join(self.cartes)) - self.voleurtrig = 0 - else : - if self.phase2 == 0 and self.voleurtrig == 1: - self.phase2 = self.phase2 +1 - - if self.cupidon != "" and self.phase2 == 1 and self.cupidontrig == 1 : - serv.privmsg(self.cupidon, "Tu es le cupidon, designe deux joueurs de cette maniere : 'pseudo1' + 'pseudo2'. La liste: "+", ".join(self.joueurs)) - self.cupidontrig = 0 - else : - if self.phase2 == 1 and self.cupidontrig == 1 : - self.phase2 = self.phase2 + 1 - if self.phase2 == 2 : - self.phase = 3 - serv.privmsg("#lg_putsch", "Debut de la nuit") - serv.mode("#lg_putsch_loups", "-m") - serv.privmsg("#lg_putsch_loups", "Vous pouvez voter avec '!vote pseudo' . la liste des pseudos : "+" ,".join(self.joueurs)) - if self.phase == 3 : - if len(self.votes) == len(self.loups) : - if self.sorciere == "" : - self.sorciereok = 1 - serv.mode("#lg_putsch_loups", "+m") - serv.privmsg("#lg_putsch","la sorciere se leve...") - bid = [] - for f in self.joueurs : - bid.append(str(self.votes.count(f))) - a = max(bid) - c = 0 - for f in bid : - if f == a : - c=c+1 - if c == 1 : - self.victime.append(self.joueurs[bid.index(a)]) - - - - if self.sorciere != "" : - serv.privmsg(self.sorciere, list_to_str(self.victime)+" est mort cette nuit. Tapez : '!tuer pseudo' pour tuer quelqu'un ou '!ress' pour ressusciter la victime. Vous pouvez taper !nope pour ne rien faire. (un seul choix possible) La liste des cibles : "+list_to_str(self.joueurs)) - self.votes = [] - - - - - if self.repet == 0 : - serv.privmsg("#lg_putsch", "Il fait nuit noire...") - self.repet = 1 - if "voyante" in self.cartes : - serv.privmsg("#lg_putsch", "J'appelle la voyante") - - if self.voyante == "" : - self.voyanteok = 1 - - if self.voyanteok == 0 : - serv.privmsg(self.voyante, "Tape !who pseudo pour connaitre le role de pseudo. La liste : "+", ".join(self.joueurs)) - serv.privmsg("#lg_putsch", "J'appelle la voyante") - self.voyanteok = 2 - - - if self.loupsok == 0 : - time.sleep(2) - serv.privmsg("#lg_putsch", "Les loups se reveillent...") - self.loupsok = 1 - if canal == "#lg_putsch_loups" : - if "!vote" in message and personne not in self.avote and personne in self.loups : - #print ("message de vote :"+message) - if message.split(" ")[1] in self.joueurs : - (self.votes).append(message.split(" ")[1]) - (self.avote).append(personne) - serv.privmsg(canal, personne+" a voté pour "+message.split(" ")[1]+"!") - - - if self.sorciereok == 1 and self.voyanteok == 1 : - if self.ancien in self.victime and self.canlive == 1 and self.ancien != self.sorcierevictime and self.ancien != self.chasseurvictime : - self.victime.remove(self.ancien) - self.canlive = 0 - #serv.privmsg("#lg_putsch", "Ouf, le pouvoir de l'ancien a proc !") - if self.lovers != [] : - - if self.lovers[0] in self.victime or self.lovers[1] in self.victime : - for f in self.lovers : - if f not in self.victime : - self.victime.append(f) - - - if self.chasseur in self.victime : - if self.chasseurtrig == 1: - - serv.privmsg(self.chasseur, "Tu as été tué cette nuit ! Tape !tuer pseudo pour te venger ! la liste des cibles est : "+" ,".join(self.joueurs)) - serv.privmsg(self.chasseur, "Les victimes de cette nuit :"+list_to_str(self.victime)) - serv.privmsg("#lg_putsch", "J'en connais un qui va etre deçu...") - self.chasseurok = 0 - self.chasseurtrig = 0 - else : - self.chasseurok = 1 - - if self.chasseur == "" : - self.chasseurok = 1 - if self.chasseurok == 1 : - serv.privmsg("#lg_putsch", "Et soudainement, le jour se leve.....") - time.sleep(5) - - for f in self.victime : - for g in dir(self) : - if f in str(getattr(self,g)) and g == "lovers" : - serv.privmsg("#lg_putsch", "Les amoureux sont morts ! (coucou "+f+" ! )" ) - if f in str(getattr(self, g)) and g != "joueurs" and g != "victime" and g != "votes" and g != "avote" and g != "lovers" and g != "sorcierevictime" and g != "voleur" : - if f != self.chasseurvictime : - serv.privmsg("#lg_putsch" , f+" est decedé cette nuit.. son role : "+g+".") - serv.mode("#lg_putsch", "-v "+f) - if f in self.joueurs : - - self.joueurs.remove(f) - if g == "loups" or g == "villageois" or g == "chasseur": - if g == "loups" : - if f in self.loups : - self.loups.remove(f) - serv.kick("#lg_putsch_loups", f) - if g == "villageois" : - if f in self.villageois : - self.villageois.remove(f) - else : - setattr(self,g, "") - - - if self.chasseurvictime != "" : - if self.lovers != [] : - - if self.lovers[0] in self.victime or self.lovers[1] in self.victime : - for f in self.lovers : - if f not in self.victime : - self.victime.append(f) - for g in dir(self) : - if f in str(getattr(self,g)) and g == "lovers" : - serv.privmsg("#lg_putsch", "Les amoureux sont morts ! (coucou "+f+" ! )" ) - - if self.chasseurvictime in str(getattr(self, g)) and g!="joueurs" and g!="victime" and g != "avote" and g != "lovers" and g != "sorcierevictime" and g != "chasseurvictime" and g != "voleur" and g != "votes" : - serv.privmsg("#lg_putsch", self.chasseur+" Decide donc de se venger sur "+self.chasseurvictime+", dont le role etait : "+g+" ! HEADSHOT !") - serv.mode("#lg_putsch" , "-v "+self.chasseurvictime) - try : - self.joueurs.remove(self.chasseurvictime) - except : - print "erreur" - self.chasseur = "" - if g == "loups" or g == "villageois" : - if g == "loups" : - serv.kick("#lg_putsch_loups", self.chasseurvictime) - if self.chasseurvictime in self.loups : - self.loups.remove(self.chasseurvictime) - else : - if self.chasseurvictime in self.loups : - self.villageois.remove(self.chasseurvictime) - else : - setattr(self,g,"") - - self.chasseurvictime = "" - self.sorcierevictime = "" - self.chasseurok = 0 - self.voyanteok = 0 - self.loupsok = 0 - self.sorciereok = 0 - if self.victime == [] : - serv.privmsg("#lg_putsch", "Personne n'est mort cette nuit...") - self.victime = [] - self.avote = [] - self.votes = [] - self.cansee= 1 - self.phase = 4 - self.phase4 = 0 - self.phase4trig = 1 - self.temps = time.time() - - - if self.phase == 4 : - if "!list" in message : - serv.privmsg("#lg_putsch", "La liste des joueurs est :"+list_to_str(self.joueurs)) - - - if self.phase4trig == 1 : - - serv.privmsg("#lg_putsch", "Ce crime ( ou pas...) ne peut rester impuni !") - time.sleep(2) - serv.privmsg("#lg_putsch", "Le village se reunit et decide de lyncher quelqu'un...") - self.phase4trig = 0 - serv.privmsg("#lg_putsch", "Vous avez 1 minute pour debattre avant le debut du vote") - - if time.time() - self.temps > 60 and self.phase4trig == 0 : - self.phase4 = 1 - self.phase4trig = 2 - serv.privmsg("#lg_putsch", " Le vote est ouvert, utilisez !vote pseudo . La liste des joueurs : "+list_to_str(self.joueurs)) - serv.privmsg("#lg_putsch", "Rien ne vous empeche de continuer a debattre !") - - if self.phase4 == 1 : - if len(self.votes) == len(self.joueurs) or self.canvote == 0 and len(self.votes) == len(self.joueurs) - 1: - serv.privmsg("#lg_putsch", "fin du vote...") - bid = [] - for f in self.joueurs : - if self.votes.count(f) > 0 : - serv.privmsg("#lg_putsch", "Le nombre de voix pour "+f+" est :"+str(self.votes.count(f))) - bid.append(str(self.votes.count(f))) - a = max(bid) - c = 0 - for f in bid : - if f == a : - c=c+1 - if c == 1 : - - self.victime.append(self.joueurs[bid.index(a)]) - - if self.idiot in self.victime : - serv.privmsg("#lg_putsch", "Le village a decidé de lyncher l'idiot : "+self.idiot) - serv.privmsg("#lg_putsch", self.idiot+" n'est donc pas lynché, mais ne peut plus voter desormais...") - self.canvote = 0 - self.victime.remove(self.idiot) - self.chasseurok = 1 - - if self.lovers != [] : - - if self.lovers[0] in self.victime or self.lovers[1] in self.victime : - for f in self.lovers : - if f not in self.victime : - self.victime.append(f) - for f in self.victime : - if f in self.loups : - serv.kick("#lg_putsch_loups", f) - - - for g in dir(self) : - if f in str(getattr(self, g)) and g == "lovers" : - serv.privmsg("#lg_putsch", "Les amoureux sont morts ! (coucou "+f+" ! )" ) - if f in str(getattr(self, g)) and g != "joueurs" and g != "victime" and g != "avote" and g != "lovers" and g != "votes" and g != "voleur" and g != "sorcierevictime": - serv.privmsg("#lg_putsch" , f+" est donc pendu(e) ( ou brulé(e), au choix ) par le village... Son role : "+g+".") - serv.mode("#lg_putsch", "-v "+f) - self.joueurs.remove(f) - - - - - if g == "loups" or g == "villageois" or g == "chasseur" : - if g == "loups" : - self.loups.remove(f) - serv.kick("#lg_putsch_loups", f) - if g == "villageois" : - self.villageois.remove(f) - else : - setattr(self,g, "") - if g == "ancien" : - serv.privmsg("#lg_putsch", "Oh non, le village a decidé de lyncher l'ancien !") - serv.privmsg("#lg_putsch", "Tous les villageois PERDENT leur pouvoir !") - for a in [self.sorciere, self.voyante, self.chasseur] : - if a not in self.villageois and a != "" : - self.villageois.append(a) - self.sorciere = "" - self.voyante = "" - self.chasseur = "" - if g == "chasseur" : - serv.privmsg(self.chasseur, "Tu peux te venger sur quelqu'un : utilise '!tuer pseudo'. La liste des joueurs :"+list_to_str(self.joueurs)) - serv.privmsg("#lg_putsch", "Le chasseur selectionne une cible...") - - else : - self.chasseurok = 1 - - serv.mode("#lg_putsch", "-v "+f) - - - - - else : - if self.egalite == 1 : - serv.privmsg("#lg_putsch", "Ah, egalité... Le village demande un nouveau vote !") - self.egalite = 0 - self.phase4trig = 0 - self.avote = [] - self.votes = [] - else : - serv.privmsg("#lg_putsch", "Egalité encore... Le village va se coucher...") - self.phase4trig = 1 - self.votes = [] - self.avote = [] - self.phase = 2 - self.phase2 = 2 - self.egalite = 1 - self.victime = [] - self.phase4 = 0 - - - if self.chasseurok == 1 : - if self.chasseurvictime != "" : - - for g in dir(self) : - if self.chasseurvictime in str(getattr(self, g)) and g!="joueurs" and g!= "votes" and g!="victime" and g != "avote" and g != "lovers" and g != "sorcierevictime" and g != "chasseurvictime" : - serv.privmsg("#lg_putsch", self.chasseur+" Decide donc de se venger sur "+self.chasseurvictime+", dont le role etait : "+g+" ! HEADSHOT !") - serv.mode("#lg_putsch" , "-v "+self.chasseurvictime) - if self.chasseurvictime in self.joueurs : - self.joueurs.remove(self.chasseurvictime) - - self.chasseur = "" - if g == "loups" or g == "villageois" : - if g == "loups" : - serv.kick("#lg_putsch_loups", self.chasseurvictime) - if self.chasseurvictime in self.loups : - self.loups.remove(self.chasseurvictime) - else : - if self.chasseurvictime in self.villageois : - self.villageois.remove(self.chasseurvictime) - else : - setattr(self,g,"") - serv.privmsg("#lg_putsch", "Le village va donc se coucher...") - self.phase4trig = 1 - self.votes = [] - self.avote = [] - self.victime = [] - self.phase = 2 - self.phase2 = 2 - self.egalite = 1 - self.phase4 = 0 - - - if "!recap" in message : - serv.privmsg("#lg_putsch", "Ont voté : "+list_to_str(self.avote)) - for f in self.joueurs : - if self.votes.count(f) > 0 : - serv.privmsg("#lg_putsch", "Le nombre de voix pour "+f+" est :"+str(self.votes.count(f))) - - if "!vote" in message and personne not in self.avote and len(message.split(" "))> 1 and (message.split(" ")[1] in self.joueurs or message.split(" ")[1] == "random") and personne in self.joueurs : - w = 1 - if self.canvote == 0 : - - if personne == self.idiot : - w = 0 - serv.privmsg("#lg_putsch", "l'idiot essaie de voter... le village l'ignore") - if message.split(" ")[1] == self.idiot : - w = 0 - serv.privmsg("#lg_putsch", personne+" essaie de voter pour l'idiot... le village l'ignore...") - if w == 1 : - if message.split(" ")[1] == "random" : - bi = self.joueurs[rand.randint(0, len(self.joueurs) - 1)] - self.votes.append(bi) - serv.privmsg("#lg_putsch", "LE POUVOIR DU RANDOM ! ") - serv.privmsg("#lg_putsch", personne+" a voté pour "+bi+" !") - else : - self.votes.append(message.split(" ")[1]) - serv.privmsg("#lg_putsch", personne+" a voté pour "+message.split(" ")[1]+" !") - self.avote.append(personne) - - - - - - - - - - -class Bite(ircbot.SingleServerIRCBot) : + self.phase4trig = 1 + self.phase4 = 0 + self.egalite = 1 + + self.voyanteok = 0 + self.loupsok = 0 + self.sorciereok = 0 + self.votes = [] + self.avote = [] + self.temps = 0 + self.topic = 0 + self.attente = 0 + self.cartes = [] # Les cartes qui seront en jeu -> sert uniquement pour initialiser la partie + self.loups = [] + self.villageois = [] + + self.lovers = [] + + self.sorciere = "" + self.sorcierevictime = "" + self.cankill = 1 # sorciere uniquement + self.cansave = 1 # sorciere uniquement + + self.chasseur = "" + self.chasseurok = 1 + self.chasseurtrig = 1 + self.chasseurvictime = "" + self.pf = "" + + self.voyante = "" + self.cansee = 1 # voyante + + self.cupidon = "" + self.cupidontrig = 1 + + self.maire = "" + + self.voleur = "" + self.voleurtrig = 1 + + self.ancien = "" + self.canlive = 1 + + self.idiot = "" + self.canvote = 1 + + self.victime = [] + + def on_welcome(self, serv, ev): + serv.join("#lg_putsch") + serv.join("#tputsch") + serv.join("#lg_putsch_loups") + serv.join("#lg_putsch_pf") + serv.join("#lg_putsch_morts") + serv.join("#lg_cheat") + serv.privmsg("NickServ", "identify MotDePasse") + + def on_join(self, serv, ev): # Quand qq entre dans le chann, le bot inclus + canal = ev.target() + if canal == "#lg_putsch_loups" and self.phase == 3: + serv.privmsg( + canal, "Vous pouvez maintenant voter en tapant '!vote pseudo'. Tout vote est definitif, vous avez le choix entre :"+", ".join(self.joueurs)) + + def on_privmsg(self, serv, ev): # msg privé + personne = ev.source() + personne = couper(personne) + message = ev.arguments()[0] + + if "Titch" in personne and "!owner" in message: + serv.privmsg("chanserv", "set founder #lg_putsch_loups Titch") + + if "Titch" in personne and "!mode" in message: + serv.mode("#lg_putsch_loups", "+i") + + if self.phase == 2: + # Voleur + if self.voleur == personne: + for f in self.cartes: + if f in message: + serv.privmsg(personne, "Tu as choisi : "+f) + if f == "loups": + self.loups.append(personne) + serv.privmsg(personne, "Pense a rejoindre le chann #lg_putsch_loups !") + serv.invite(personne, "#lg_putsch_loups") + else: + setattr(self, f, personne) + self.phase2 = self.phase2 + 1 + break + + # cupidon + if self.cupidon == personne: + amants = [] + for f in self.joueurs: + if f in message and f not in amants: + amants.append(f) + if len(amants) == 2: + serv.privmsg(personne, "Tu as choisi ces deux couillons :"+", ".join(amants)) + self.lovers = amants + serv.privmsg( + self.lovers[0], "Felicitations, tu es en couple avec "+self.lovers[1]+".") + serv.privmsg( + self.lovers[1], "Felicitations, tu es en couple avec "+self.lovers[0]+".") + self.phase2 = self.phase2 + 1 + + if self.phase == 3: + # voyante + if self.voyante == personne and self.cansee == 1: + for f in self.joueurs: + if f in message and "!who" in message: + for g in dir(self): + if f in str(getattr(self, g)) and g != "joueurs" and g != "lovers" and g != "avote" and g != "votes" and self.cansee == 1: + serv.privmsg(personne, "La classe de "+f+" est :"+g) + self.voyanteok = 1 + self.cansee = 0 + break + # sorciere + if self.sorciere == personne and self.sorciereok != 1: + if "!nope" in message: + self.sorciereok = 1 + serv.privmsg(self.sorciere, "Espece de glandeur !") + serv.privmsg("#lg_putsch", "La sorciere a fait ce qu'elle avait a faire..") + else: + + if "!ress" in message and self.cansave == 1: + self.cansave = 0 + self.victime = [] + self.sorciereok = 1 + serv.privmsg("#lg_putsch", "La sorciere a fait ce qu'elle avait a faire..") + serv.privmsg(self.sorciere, "Comme c'est gentil ! ") + else: + if "!tuer" in message and self.cankill == 1: + if message.split(" ")[1] in self.joueurs: + self.victime.append(message.split(" ")[1]) + self.cankill = 0 + self.sorcierevictime = message.split(" ")[1] + self.sorciereok = 1 + serv.privmsg(self.sorciere, "ASSASSIN ! ") + serv.privmsg( + "#lg_putsch", "La sorciere a fait ce qu'elle avait a faire..") + # chasseur + if self.chasseur == personne and self.chasseur in self.victime: + for f in self.joueurs: + if f in message and "!tuer" in message and self.chasseur not in message: + self.victime.append(f) + serv.privmsg(self.chasseur, "Tu as tué "+f+" par vengeance ! HAHA !") + self.chasseurok = 1 + self.chasseurvictime = f + break + + if self.phase == 4: + + # chasseur + + if self.chasseur == personne and self.chasseur in self.victime: + for f in self.joueurs: + if f in message and "!tuer" in message and self.chasseur not in message: + self.victime.append(f) + serv.privmsg(self.chasseur, "Tu as tué "+f+" par vengeance ! HAHA !") + self.chasseurok = 1 + self.chasseurvictime = f + serv.privmsg("#lg_putsch", "J'en connais un qui va etre deçu...") + break + + def on_invite(self, serv, ev): + canal = ev.arguments()[0] + serv.join(canal) + + def on_pubmsg(self, serv, ev): # quand qq ecrit dans le chat + canal = ev.target() + canal2 = self.channels[canal] # Sert a recup la liste des users + + personne = ev.source() + personne = couper(personne) + message = ev.arguments()[0] + if "!debug" in message and "Titch" in personne: + if len(message.split(" ")) == 1: + + for f in dir(self): + print(f+" = "+str(getattr(self, f))) + else: + for f in message.split(" ")[1:]: + print(f+" = "+str(getattr(self, f))) + + if self.ingame == 0: # Ensemble des commandes avant le debut de la partie + if self.topic == 0: + #serv.topic(canal,"Tapez !newgame pour demarrer une partie ! ") + self.topic = 1 + if "!gratuit" in message: + serv.privmsg(canal, "Et hop, on hl tout le monde ! ou pas ?") + if "!newgame" in message: + serv.privmsg( + canal, "Ok, "+personne+" a lancé une partie, tapez !join pour rejoindre (si vous retapez !join, vous quittez !)") + serv.privmsg(canal, personne+" a rejoint la partie !") + self.joueurs.append(personne) + self.ingame = 1 + self.phase = 1 + if self.ingame == 1: + + # Condition de victoire + + if ((self.phase == 3 or self.phase == 4) and (self.loups == [] or sorted(self.joueurs) == sorted(self.loups) or sorted(self.lovers) == sorted(self.joueurs))) or "!reset" in message: + if self.loups == []: + serv.privmsg("#lg_putsch", "Tous les loups sont morts..... Le village a gagné !") + else: + if sorted(self.joueurs) == sorted(self.loups): + serv.privmsg( + "#lg_putsch", "Tous les villageois sont morts... Les loups ont gagné !") + else: + serv.privmsg("#lg_putsch", "Les amants ont gagné....") + for f in self.joueurs: + serv.mode("#lg_putsch", "-v "+f) + for f in self.loups: + serv.kick("#lg_putsch_loups", f) + time.sleep(5) + serv.privmsg("#lg_putsch", "Les survivants sont : "+list_to_str(self.joueurs)) + + time.sleep(10) + serv.topic( + "#lg_putsch", "Channel de Loup Garou! Tapez !newgame pour commencer une nouvelle partie! Un bug à observer ? Rejoignez #lg_bugs") + + serv.mode("#lg_putsch", "-m") + serv.privmsg("#lg_putsch", "On reinitialise TOUT !") + self.joueurs = [] + self.ingame = 0 + self.phase = 0 + self.repet = 0 + + self.phase2trig = 1 + self.phase2 = 0 + + self.phase4trig = 1 + self.phase4 = 0 + self.egalite = 1 + + self.voyanteok = 0 + self.loupsok = 0 + self.sorciereok = 0 + self.votes = [] + self.avote = [] + self.temps = 0 + self.topic = 0 + self.attente = 0 + self.cartes = [] # Les cartes qui seront en jeu -> sert uniquement pour initialiser la partie + self.loups = [] + self.villageois = [] + + self.lovers = [] + + self.sorciere = "" + self.cankill = 1 # sorciere uniquement + self.cansave = 1 # sorciere uniquement + + self.chasseur = "" + self.chasseurok = 1 + self.chasseurtrig = 1 + self.chasseurvictime = "" + self.pf = "" + + self.voyante = "" + self.cansee = 1 # voyante + + self.cupidon = "" + self.cupidontrig = 1 + + self.maire = "" + + self.voleur = "" + self.voleurtrig = 1 + + self.ancien = "" + self.canlive = 1 + + self.idiot = "" + self.canvote = 1 + + self.victime = [] + + serv.privmsg("#lg_putsch", " Ouf, reinitialisation reussie !") + + if self.phase == 1: # phase où les joueurs rejoignent la partie + if "!join" in message: + if personne not in self.joueurs: + if len(self.joueurs) < 13: + serv.privmsg(canal, personne+" a rejoint la partie !") + self.joueurs.append(personne) + else: + serv.privmsg(canal, "Desolé "+personne + + ", c'est complet pour l'instant...") + + else: + serv.privmsg(canal, personne+" a quitté la partie ! BOUH ! ") + if personne in self.joueurs: + + self.joueurs.remove(personne) + + if "!list" in message: + serv.privmsg(canal, "La liste des joueurs est : "+", ".join(self.joueurs)) + if len(self.joueurs) < 4: + self.attente = 0 + if len(self.joueurs) >= 4 and self.attente == 0: + + serv.privmsg( + canal, "vous etes au moins 4, vous pouvez taper !run pour lancer la partie !") + self.attente = 1 + if "!run" in message and self.attente == 1: + serv.privmsg( + canal, "La partie va se lancer.....Regardez vos query et vos invitations ! ") + # Selection des factions pour les joueurs, invitations dans les chann ... + + serv.topic(canal, "Une partie est en cours. Les joueurs sont :" + + " ,".join(self.joueurs)) + + serv.mode(canal, "+m") # on mute le chan pour empecher les randoms de parler + serv.privmsg(canal, "Je mute le canal !") + self.cartes = Paquet(len(self.joueurs)) + + # On attribue a chaque joueur un role + for f in self.joueurs: + serv.mode(canal, "+v "+f) # on passe les joueurs en voice + role = self.cartes.pop(rand.randint(0, len(self.cartes) - 1)) + serv.privmsg(f, "Ton role pour la partie sera : "+role) + if role == "loups" or role == "villageois": + if role == "loups": + serv.privmsg(f, "Pense a rejoindre le chann #lg_putsch_loups !") + self.loups.append(f) + if role == "villageois": + self.villageois.append(f) + else: + setattr(self, role, f) + for f in self.loups: + serv.invite(f, "#lg_putsch_loups") + serv.privmsg("#lg_putsch_loups", "coucou les ptits loups !") + serv.privmsg(canal, "Bon, bah c'est parti...") + serv.privmsg(canal, "La partie commence....") + self.phase = 2 + if self.phase == 2: + if self.phase2trig == 1: + serv.privmsg("#lg_putsch", "J'appelle le voleur...S'il existe !") + serv.privmsg("#lg_putsch", "J'appelle le cupidon... S'il existe !") + self.phase2trig = 0 + + if self.voleur != "" and self.phase2 == 0 and self.voleurtrig == 1: + serv.privmsg(self.voleur, "Tu es le voleur, tes choix sont : " + + ", ".join(self.cartes)) + self.voleurtrig = 0 + else: + if self.phase2 == 0 and self.voleurtrig == 1: + self.phase2 = self.phase2 + 1 + + if self.cupidon != "" and self.phase2 == 1 and self.cupidontrig == 1: + serv.privmsg( + self.cupidon, "Tu es le cupidon, designe deux joueurs de cette maniere : 'pseudo1' + 'pseudo2'. La liste: "+", ".join(self.joueurs)) + self.cupidontrig = 0 + else: + if self.phase2 == 1 and self.cupidontrig == 1: + self.phase2 = self.phase2 + 1 + if self.phase2 == 2: + self.phase = 3 + serv.privmsg("#lg_putsch", "Debut de la nuit") + serv.mode("#lg_putsch_loups", "-m") + serv.privmsg( + "#lg_putsch_loups", "Vous pouvez voter avec '!vote pseudo' . la liste des pseudos : "+" ,".join(self.joueurs)) + if self.phase == 3: + if len(self.votes) == len(self.loups): + if self.sorciere == "": + self.sorciereok = 1 + serv.mode("#lg_putsch_loups", "+m") + serv.privmsg("#lg_putsch", "la sorciere se leve...") + bid = [] + for f in self.joueurs: + bid.append(str(self.votes.count(f))) + a = max(bid) + c = 0 + for f in bid: + if f == a: + c = c+1 + if c == 1: + self.victime.append(self.joueurs[bid.index(a)]) + + if self.sorciere != "": + serv.privmsg(self.sorciere, list_to_str( + self.victime)+" est mort cette nuit. Tapez : '!tuer pseudo' pour tuer quelqu'un ou '!ress' pour ressusciter la victime. Vous pouvez taper !nope pour ne rien faire. (un seul choix possible) La liste des cibles : "+list_to_str(self.joueurs)) + self.votes = [] + + if self.repet == 0: + serv.privmsg("#lg_putsch", "Il fait nuit noire...") + self.repet = 1 + if "voyante" in self.cartes: + serv.privmsg("#lg_putsch", "J'appelle la voyante") + + if self.voyante == "": + self.voyanteok = 1 + + if self.voyanteok == 0: + serv.privmsg( + self.voyante, "Tape !who pseudo pour connaitre le role de pseudo. La liste : "+", ".join(self.joueurs)) + serv.privmsg("#lg_putsch", "J'appelle la voyante") + self.voyanteok = 2 + + if self.loupsok == 0: + time.sleep(2) + serv.privmsg("#lg_putsch", "Les loups se reveillent...") + self.loupsok = 1 + if canal == "#lg_putsch_loups": + if "!vote" in message and personne not in self.avote and personne in self.loups: + #print ("message de vote :"+message) + if message.split(" ")[1] in self.joueurs: + (self.votes).append(message.split(" ")[1]) + (self.avote).append(personne) + serv.privmsg(canal, personne+" a voté pour "+message.split(" ")[1]+"!") + + if self.sorciereok == 1 and self.voyanteok == 1: + if self.ancien in self.victime and self.canlive == 1 and self.ancien != self.sorcierevictime and self.ancien != self.chasseurvictime: + self.victime.remove(self.ancien) + self.canlive = 0 + # serv.privmsg("#lg_putsch", "Ouf, le pouvoir de l'ancien a proc !") + if self.lovers != []: + + if self.lovers[0] in self.victime or self.lovers[1] in self.victime: + for f in self.lovers: + if f not in self.victime: + self.victime.append(f) + + if self.chasseur in self.victime: + if self.chasseurtrig == 1: + + serv.privmsg( + self.chasseur, "Tu as été tué cette nuit ! Tape !tuer pseudo pour te venger ! la liste des cibles est : "+" ,".join(self.joueurs)) + serv.privmsg(self.chasseur, "Les victimes de cette nuit :" + + list_to_str(self.victime)) + serv.privmsg("#lg_putsch", "J'en connais un qui va etre deçu...") + self.chasseurok = 0 + self.chasseurtrig = 0 + else: + self.chasseurok = 1 + + if self.chasseur == "": + self.chasseurok = 1 + if self.chasseurok == 1: + serv.privmsg("#lg_putsch", "Et soudainement, le jour se leve.....") + time.sleep(5) + + for f in self.victime: + for g in dir(self): + if f in str(getattr(self, g)) and g == "lovers": + serv.privmsg( + "#lg_putsch", "Les amoureux sont morts ! (coucou "+f+" ! )") + if f in str(getattr(self, g)) and g != "joueurs" and g != "victime" and g != "votes" and g != "avote" and g != "lovers" and g != "sorcierevictime" and g != "voleur": + if f != self.chasseurvictime: + serv.privmsg("#lg_putsch", f + + " est decedé cette nuit.. son role : "+g+".") + serv.mode("#lg_putsch", "-v "+f) + if f in self.joueurs: + + self.joueurs.remove(f) + if g == "loups" or g == "villageois" or g == "chasseur": + if g == "loups": + if f in self.loups: + self.loups.remove(f) + serv.kick("#lg_putsch_loups", f) + if g == "villageois": + if f in self.villageois: + self.villageois.remove(f) + else: + setattr(self, g, "") + + if self.chasseurvictime != "": + if self.lovers != []: + + if self.lovers[0] in self.victime or self.lovers[1] in self.victime: + for f in self.lovers: + if f not in self.victime: + self.victime.append(f) + for g in dir(self): + if f in str(getattr(self, g)) and g == "lovers": + serv.privmsg( + "#lg_putsch", "Les amoureux sont morts ! (coucou "+f+" ! )") + + if self.chasseurvictime in str(getattr(self, g)) and g != "joueurs" and g != "victime" and g != "avote" and g != "lovers" and g != "sorcierevictime" and g != "chasseurvictime" and g != "voleur" and g != "votes": + serv.privmsg("#lg_putsch", self.chasseur+" Decide donc de se venger sur " + + self.chasseurvictime+", dont le role etait : "+g+" ! HEADSHOT !") + serv.mode("#lg_putsch", "-v "+self.chasseurvictime) + try: + self.joueurs.remove(self.chasseurvictime) + except: + print "erreur" + self.chasseur = "" + if g == "loups" or g == "villageois": + if g == "loups": + serv.kick("#lg_putsch_loups", self.chasseurvictime) + if self.chasseurvictime in self.loups: + self.loups.remove(self.chasseurvictime) + else: + if self.chasseurvictime in self.loups: + self.villageois.remove(self.chasseurvictime) + else: + setattr(self, g, "") + + self.chasseurvictime = "" + self.sorcierevictime = "" + self.chasseurok = 0 + self.voyanteok = 0 + self.loupsok = 0 + self.sorciereok = 0 + if self.victime == []: + serv.privmsg("#lg_putsch", "Personne n'est mort cette nuit...") + self.victime = [] + self.avote = [] + self.votes = [] + self.cansee = 1 + self.phase = 4 + self.phase4 = 0 + self.phase4trig = 1 + self.temps = time.time() + + if self.phase == 4: + if "!list" in message: + serv.privmsg("#lg_putsch", "La liste des joueurs est :" + + list_to_str(self.joueurs)) + + if self.phase4trig == 1: + + serv.privmsg("#lg_putsch", "Ce crime ( ou pas...) ne peut rester impuni !") + time.sleep(2) + serv.privmsg( + "#lg_putsch", "Le village se reunit et decide de lyncher quelqu'un...") + self.phase4trig = 0 + serv.privmsg( + "#lg_putsch", "Vous avez 1 minute pour debattre avant le debut du vote") + + if time.time() - self.temps > 60 and self.phase4trig == 0: + self.phase4 = 1 + self.phase4trig = 2 + serv.privmsg( + "#lg_putsch", " Le vote est ouvert, utilisez !vote pseudo . La liste des joueurs : "+list_to_str(self.joueurs)) + serv.privmsg("#lg_putsch", "Rien ne vous empeche de continuer a debattre !") + + if self.phase4 == 1: + if len(self.votes) == len(self.joueurs) or self.canvote == 0 and len(self.votes) == len(self.joueurs) - 1: + serv.privmsg("#lg_putsch", "fin du vote...") + bid = [] + for f in self.joueurs: + if self.votes.count(f) > 0: + serv.privmsg("#lg_putsch", "Le nombre de voix pour " + + f+" est :"+str(self.votes.count(f))) + bid.append(str(self.votes.count(f))) + a = max(bid) + c = 0 + for f in bid: + if f == a: + c = c+1 + if c == 1: + + self.victime.append(self.joueurs[bid.index(a)]) + + if self.idiot in self.victime: + serv.privmsg( + "#lg_putsch", "Le village a decidé de lyncher l'idiot : "+self.idiot) + serv.privmsg( + "#lg_putsch", self.idiot+" n'est donc pas lynché, mais ne peut plus voter desormais...") + self.canvote = 0 + self.victime.remove(self.idiot) + self.chasseurok = 1 + + if self.lovers != []: + + if self.lovers[0] in self.victime or self.lovers[1] in self.victime: + for f in self.lovers: + if f not in self.victime: + self.victime.append(f) + for f in self.victime: + if f in self.loups: + serv.kick("#lg_putsch_loups", f) + + for g in dir(self): + if f in str(getattr(self, g)) and g == "lovers": + serv.privmsg( + "#lg_putsch", "Les amoureux sont morts ! (coucou "+f+" ! )") + if f in str(getattr(self, g)) and g != "joueurs" and g != "victime" and g != "avote" and g != "lovers" and g != "votes" and g != "voleur" and g != "sorcierevictime": + serv.privmsg( + "#lg_putsch", f+" est donc pendu(e) ( ou brulé(e), au choix ) par le village... Son role : "+g+".") + serv.mode("#lg_putsch", "-v "+f) + self.joueurs.remove(f) + + if g == "loups" or g == "villageois" or g == "chasseur": + if g == "loups": + self.loups.remove(f) + serv.kick("#lg_putsch_loups", f) + if g == "villageois": + self.villageois.remove(f) + else: + setattr(self, g, "") + if g == "ancien": + serv.privmsg( + "#lg_putsch", "Oh non, le village a decidé de lyncher l'ancien !") + serv.privmsg( + "#lg_putsch", "Tous les villageois PERDENT leur pouvoir !") + for a in [self.sorciere, self.voyante, self.chasseur]: + if a not in self.villageois and a != "": + self.villageois.append(a) + self.sorciere = "" + self.voyante = "" + self.chasseur = "" + if g == "chasseur": + serv.privmsg( + self.chasseur, "Tu peux te venger sur quelqu'un : utilise '!tuer pseudo'. La liste des joueurs :"+list_to_str(self.joueurs)) + serv.privmsg( + "#lg_putsch", "Le chasseur selectionne une cible...") + + else: + self.chasseurok = 1 + + serv.mode("#lg_putsch", "-v "+f) + + else: + if self.egalite == 1: + serv.privmsg( + "#lg_putsch", "Ah, egalité... Le village demande un nouveau vote !") + self.egalite = 0 + self.phase4trig = 0 + self.avote = [] + self.votes = [] + else: + serv.privmsg( + "#lg_putsch", "Egalité encore... Le village va se coucher...") + self.phase4trig = 1 + self.votes = [] + self.avote = [] + self.phase = 2 + self.phase2 = 2 + self.egalite = 1 + self.victime = [] + self.phase4 = 0 + + if self.chasseurok == 1: + if self.chasseurvictime != "": + + for g in dir(self): + if self.chasseurvictime in str(getattr(self, g)) and g != "joueurs" and g != "votes" and g != "victime" and g != "avote" and g != "lovers" and g != "sorcierevictime" and g != "chasseurvictime": + serv.privmsg("#lg_putsch", self.chasseur+" Decide donc de se venger sur " + + self.chasseurvictime+", dont le role etait : "+g+" ! HEADSHOT !") + serv.mode("#lg_putsch", "-v "+self.chasseurvictime) + if self.chasseurvictime in self.joueurs: + self.joueurs.remove(self.chasseurvictime) + + self.chasseur = "" + if g == "loups" or g == "villageois": + if g == "loups": + serv.kick("#lg_putsch_loups", self.chasseurvictime) + if self.chasseurvictime in self.loups: + self.loups.remove(self.chasseurvictime) + else: + if self.chasseurvictime in self.villageois: + self.villageois.remove(self.chasseurvictime) + else: + setattr(self, g, "") + serv.privmsg("#lg_putsch", "Le village va donc se coucher...") + self.phase4trig = 1 + self.votes = [] + self.avote = [] + self.victime = [] + self.phase = 2 + self.phase2 = 2 + self.egalite = 1 + self.phase4 = 0 + + if "!recap" in message: + serv.privmsg("#lg_putsch", "Ont voté : "+list_to_str(self.avote)) + for f in self.joueurs: + if self.votes.count(f) > 0: + serv.privmsg("#lg_putsch", "Le nombre de voix pour " + + f+" est :"+str(self.votes.count(f))) + + if "!vote" in message and personne not in self.avote and len(message.split(" ")) > 1 and (message.split(" ")[1] in self.joueurs or message.split(" ")[1] == "random") and personne in self.joueurs: + w = 1 + if self.canvote == 0: + + if personne == self.idiot: + w = 0 + serv.privmsg( + "#lg_putsch", "l'idiot essaie de voter... le village l'ignore") + if message.split(" ")[1] == self.idiot: + w = 0 + serv.privmsg("#lg_putsch", personne + + " essaie de voter pour l'idiot... le village l'ignore...") + if w == 1: + if message.split(" ")[1] == "random": + bi = self.joueurs[rand.randint(0, len(self.joueurs) - 1)] + self.votes.append(bi) + serv.privmsg("#lg_putsch", "LE POUVOIR DU RANDOM ! ") + serv.privmsg("#lg_putsch", personne+" a voté pour "+bi+" !") + else: + self.votes.append(message.split(" ")[1]) + serv.privmsg("#lg_putsch", personne+" a voté pour " + + message.split(" ")[1]+" !") + self.avote.append(personne) + + +class Bite(ircbot.SingleServerIRCBot): def __init__(self): - ircbot.SingleServerIRCBot.__init__(self, [("irc.iiens.net", 6667)], "triggerbot", "ignorez moi :)", 5) + ircbot.SingleServerIRCBot.__init__( + self, [("irc.iiens.net", 6667)], "triggerbot", "ignorez moi :)", 5) self.ctrig = "#tputsch" - def on_welcome(self, serv, ev): serv.join(self.ctrig) - while True : + while True: serv.privmsg(self.ctrig, "bite") time.sleep(1) - if __name__ == '__main__': - p = Process(target= Boooob().start) + p = Process(target=Boooob().start) p.start() - p2 = Process(target= Bite().start) + p2 = Process(target=Bite().start) p2.start() - -