diff --git a/putsch.py b/putsch.py index 5f98e5d1ada64185338b4cf4fe156811c4097e01..3ef0c1ecf3685cec8202eb0a1ebefea29d76b2e6 100644 --- a/putsch.py +++ b/putsch.py @@ -58,6 +58,10 @@ def Paquet(nbrJoueurs): return res +def is_cmd(string): + return string[0] == "!" + + class Boooob(ircbot.SingleServerIRCBot): def __init__(self): ircbot.SingleServerIRCBot.__init__( @@ -180,39 +184,58 @@ class Boooob(ircbot.SingleServerIRCBot): 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: + 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: + 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..") - else: - - if "!ress" in message and self.cansave == 1: + 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("#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..") + 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 "!tuer" in message and self.chasseur not in message: + 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 @@ -225,7 +248,8 @@ class Boooob(ircbot.SingleServerIRCBot): 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: + 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 @@ -255,7 +279,7 @@ class Boooob(ircbot.SingleServerIRCBot): 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 ! ") + # 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 ?") @@ -270,8 +294,14 @@ class Boooob(ircbot.SingleServerIRCBot): # 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 == []: + 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("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): @@ -347,7 +377,7 @@ class Boooob(ircbot.SingleServerIRCBot): self.victime = [] - serv.privmsg("#lg_putsch", " Ouf, reinitialisation reussie !") + serv.privmsg("#lg_putsch", "reinitialisation reussie !") if self.phase == 1: # phase où les joueurs rejoignent la partie if "!join" in message: @@ -360,13 +390,12 @@ class Boooob(ircbot.SingleServerIRCBot): ", c'est complet pour l'instant...") else: - serv.privmsg(canal, personne+" a quitté la partie ! BOUH ! ") + 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 : "+", ".join(self.joueurs)) + 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: @@ -380,7 +409,7 @@ class Boooob(ircbot.SingleServerIRCBot): # Selection des factions pour les joueurs, invitations dans les chann ... serv.topic(canal, "Une partie est en cours. Les joueurs sont :" + - " ,".join(self.joueurs)) + 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 !") @@ -395,12 +424,12 @@ class Boooob(ircbot.SingleServerIRCBot): 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) - 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....") @@ -421,7 +450,8 @@ class Boooob(ircbot.SingleServerIRCBot): 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.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: @@ -431,7 +461,8 @@ class Boooob(ircbot.SingleServerIRCBot): 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)) + "#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 == "": @@ -451,7 +482,14 @@ class Boooob(ircbot.SingleServerIRCBot): 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.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: @@ -462,6 +500,7 @@ class Boooob(ircbot.SingleServerIRCBot): if self.voyante == "": self.voyanteok = 1 + time.sleep(rand.randint(5, 20)) if self.voyanteok == 0: serv.privmsg( @@ -475,7 +514,7 @@ class Boooob(ircbot.SingleServerIRCBot): 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) + # print ("message de vote :"+message) if message.split(" ")[1] in self.joueurs: (self.votes).append(message.split(" ")[1]) (self.avote).append(personne) @@ -497,7 +536,7 @@ class Boooob(ircbot.SingleServerIRCBot): 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)) + 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...") @@ -675,7 +714,7 @@ class Boooob(ircbot.SingleServerIRCBot): 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)) + 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...")