# -*- coding: utf-8 -*- # import irclib import ircbot import random as rand 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("villageois") res.append("ancien") return res if nbrJoueurs == 6: res = paquet(5) res.append("villageois") res.append("cupidon") return res if nbrJoueurs == 7: res = paquet(6) res.append("villageois") res.append("idiot") return res if nbrJoueurs == 8: res = paquet(7) res.append("villageois") 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("villageois") res.append("loups") return res if nbrJoueurs == 12: res = paquet(11) res.append("villageois") return res def is_cmd(string): return string[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.admin = ["Titch","Cloud"] 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.choix = [] 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: #TODO doit n'avoir que deux choix parmis toutes les cartes restantes for f in self.choix: 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: if f == "villageois": self.villageois.append(f) 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 g != "victime" 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: splt = message.split(' ') if len(splt) > 0 and splt[0] == "!nope": self.sorciereok = 1 serv.privmsg(self.sorciere, "Espece de glandeur !") serv.privmsg("#lg_putsch", "La sorciere a fait ce qu'elle avait a faire..") elif (len(splt) > 2 and splt[0] == "!ress" and self.cansave == 1 and splt[1] == "!kill" and self.cankill == 1): if splt[2] in self.joueurs: self.cansave = 0 self.victime = [] self.victime.append(splt[2]) self.cankill = 0 self.sorcierevictime = splt[2] self.sorciereok = 1 serv.privmsg( self.sorciere, "ASSASSIN ! Quoique... :thinking: ") serv.privmsg( "#lg_putsch", "La sorciere a fait ce qu'elle avait a faire..") elif len(splt) > 0 and "!ress" == splt[0] 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 ! ") elif len(splt) > 1 and "!kill" == splt[0] and self.cankill == 1: if splt[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 "!kill" 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 "!kill" 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 '!reset' in message: serv.privmsg("#lg_putsch", "on reset ..") elif 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", "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. ") if personne in self.joueurs: self.joueurs.remove(personne) if "!list" in message: serv.privmsg(canal, "La liste des joueurs est : "+list_to_str(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 :" + list_to_str(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 #TODO changer pour s'assurer qu'une personne au hasard soit loup avant de tirer le reste des roles loup = rand.randint(0, len(self.joueurs) -1) #tire le numéro du loup player = self.joueurs.pop(loup) # on récup son nom pour la boucle self.joueurs.append(player) # on laisse le joueur dans la liste self.cartes.pop(0) # on retire le premier loup rand.shuffle(self.joueurs) for f in self.joueurs: #serv.mode(canal, "+v "+f) # on passe les joueurs en voice # on test si ne pas donner le voice casse tout ou pas if f == player: #attribution du loup n°1 à 100% serv.privmsg(f, "Ton role pour la partie sera : loup") serv.privmsg(f, "Pense a rejoindre le chann #lg_putsch_loups !") self.loups.append(f) serv.invite(f, "#lg_putsch_loups") else: role = self.cartes.pop(rand.randint(0, len(self.cartes) - 1)) #l'élément 0 étant le loup tiré au dessus 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) serv.invite(f, "#lg_putsch_loups") if role == "villageois": self.villageois.append(f) else: setattr(self, role, f) 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 print("phase 2") print(self.choix) if self.voleur != "" and self.phase2 == 0 and self.voleurtrig == 1: self.choix = [] # on s'assure que la liste est vide self.choix.append(self.cartes.pop(rand.randint(0, len(self.cartes) -1))) self.choix.append(self.cartes.pop(rand.randint(0, len(self.cartes) - 1))) # on crée une liste de deux choix print("état final") print(self.choix) serv.privmsg(self.voleur, "Tu es le voleur, tes choix sont : " + ", ".join(self.choix)) 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: " + list_to_str(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") for f in self.joueurs: #on retire le voice parce que de toute façon tout le monde fait dodo là serv.mode("#lg_putsch", "-v "+f) serv.mode("#lg_putsch_loups", "-m") serv.privmsg( "#lg_putsch_loups", "Vous pouvez voter avec '!vote pseudo' . la liste des pseudos : " + list_to_str(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 :" + " '!kill pseudo' pour tuer quelqu'un ou" + " '!ress' pour ressusciter la victime" + "Vous pouvez taper !nope pour ne rien" + "faire. Vous pouvez egalement utiliser les" + " deux potions en tapant !ress !kill" + " <pseudo>. 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 == "" and self.voyanteok != 1: self.voyanteok = 1 sl = rand.randint(5,10) time.sleep(sl) 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 !kill 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.....") 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, "") for f in self.joueurs: #on redonne le voice au gens ! serv.mode("#lg_putsch", "+v "+f) time.sleep(5) 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 '!kill 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...") serv.mode("#lg_putsch","+m") 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...") serv.mode("#lg_putsch","+m") 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) self.ctrig = "#tputsch" def on_welcome(self, serv, ev): serv.join(self.ctrig) while True: serv.privmsg(self.ctrig, "bite") time.sleep(1) if __name__ == '__main__': p = Process(target=Boooob().start) p.start() p2 = Process(target=Bite().start) p2.start()