diff --git a/putsch.py b/putsch.py index 07ad0444ccf29c222d9aa9f6a3b0fa7287018f7d..ffb817605002d4261f33ab49c71ad8f74ad87d35 100644 --- a/putsch.py +++ b/putsch.py @@ -36,13 +36,31 @@ class Boooob(ircbot.SingleServerIRCBot): self.joueurs = [] self.ingame = 0 self.phase = 0 + self.repet = 0 + + self.phase2 = 0 + 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.pf = "" self.voyante = "" + self.cansee = 1 #voyante + self.cupidon = "" self.maire = "" self.voleur = "" @@ -55,23 +73,85 @@ class Boooob(ircbot.SingleServerIRCBot): 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 - pass + canal = ev.target() + if canal == "#lg_putsch_loups" : + 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() + message = ev.arguments()[0] + 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) + 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) + 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 joueurs : + if f in message : + for g in dir(self) : + if f == getattr(self, g) : + serv.privmsg(personne, "La classe de "+f+" est :"+g) + break + self.cansee = 0 + #sorciere + if self.sorciere == personne and (self.cankill == 1 or self.cansave == 1) : + if "ress" in message and self.cansave == 1 : + self.cansave = 0 + self.victime = "" + self.sorciereok = 1 + else : + if "tuer" in message and self.cankill == 1: + if message.split(" ")[1] in self.joueurs : + self.victime = self.victime +" et "+ message.split(" ")[1] + self.joueurs.remove(message.split(" ")[1]) + self.cankill = 0 + self.sorciereok = 1 + + + + + + + + + + def on_invite(self, serv, ev) : canal = ev.arguments()[0] - serv.join(canal) - - - - + serv.join(canal) + def on_pubmsg(self, serv, ev): #quand qq ecrit dans le chat canal = ev.target() @@ -79,10 +159,16 @@ class Boooob(ircbot.SingleServerIRCBot): personne = couper(personne) message = ev.arguments()[0] message = message.lower() #Passe le message en minuscule - print self.topic + if "!debug" in message : + serv.privmsg("#lg_cheat", "etat des differentes variables :") + vars = ["avote","vote","phase","ingame","joueurs","topic","attente","cartes","loups","villageois","phase2","lovers","sorciere","pf","voyante","cupidon","maire","voleur","ancien","victime"] + for f in vars: + serv.privmsg("#lg_cheat", f+" = "+str(getattr(self, f))) + time.sleep(1) + 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 "!newgame" in message : serv.privmsg(canal, "Ok, "+personne+" a lancé une partie, tapez !join pour rejoindre (si vous retapez !join, vous quittez !)") @@ -101,7 +187,7 @@ class Boooob(ircbot.SingleServerIRCBot): 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 : "+" ,".join(self.joueurs)) if len(self.joueurs) < 4 : self.attente = 0 if len(self.joueurs) >= 4 and self.attente == 0: @@ -111,29 +197,104 @@ class Boooob(ircbot.SingleServerIRCBot): 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.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 !") - cartes = Paquet(len(self.joueurs)) + 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 = cartes.pop(rand.randint(0, len(cartes)- 1)) + 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.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 : + self.phase = 2 + if self.phase == 2 : + serv.privmsg("#lg_putsch", "J'appelle le voleur...S'il existe !") + if self.voleur != "" : + serv.privmsg(self.voleur, "Tu es le voleur, tes choix sont : "+", ".join(self.cartes)) + else : + self.phase2 = self.phase2 +1 + time.sleep(1) + serv.privmsg("#lg_putsch", "J'appelle le cupidon... S'il existe !") + if self.cupidon != "" : + serv.privmsg(self.cupidon, "Tu es le cupidon, designe deux joueurs parmi ceux là : "+", ".join(self.joueurs)) + else : + self.phase2 = self.phase2 + 1 + if self.phase2 == 2 : + self.phase = 3 + serv.mode("#lg_putsch_loups","-m") + serv.privmsg("#lg_putsch", "Okay, la partie commence vraiment cette fois") + time.sleep(10) + self.temps = time.time() + if self.phase == 3 : + if time.time() - self.temps > 40 : + serv.privmsg("#lg_putsch","la sorciere se leve...") + a = 0 + for f in self.joueurs : + if self.votes.count(f) > a : + a = self.vote.count(f) + self.victime = f + serv.privmsg(self.sorciere, self.victime+" est mort cette nuit. Souhaitez vous 1 : ressusciter "+self.victime+" ou 2 : tuer quelqu'un d'autre (un seul choix). Tapez : 'tuer groot' pour tuer groot, ou juste 'ress' pour ressusciter la victime") + + + + + if self.repet == 0 : + serv.privmsg("#lg_putsch", "Il fait nuit noire...") + self.repet = 1 + + + if self.voyanteok == 0 : + + serv.privmsg("#lg_putsch", "J'appelle la voyante") + serv.privmsg(self.voyante, "De quel joueur souhaites tu voir la carte ? Tu as le choix entre : "+", ".join(self.joueurs)) + self.voyanteok = 1 + + + 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 : + 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 : + self.voyanteok = 0 + self.loupsok = 0 + self.sorciereok = 0 + self.phase = 4 + serv.privmsg("#lg_putsch", "La ou les victimes de cette nuit : "+self.victime) + self.victime = "" + self.avote = [] + self.votes = [] + self.cansee= 1 + serv.privmsg("#lg_putsch", "Regaaaarde, le joour se leeeve") + + + + + + @@ -147,7 +308,7 @@ class Boooob(ircbot.SingleServerIRCBot): - + @@ -160,8 +321,8 @@ class Boooob(ircbot.SingleServerIRCBot): - def on_kick(self, serv, ev) : - serv.join("#nardco") + + # if __name__ == "__main__" : Boooob().start()