if auteur in self.ops:
if len(message)>1:
if message[1] in self.play_channels:
- serv.privmsg(auteur,"Je play déjà sur %s."%(message[1]))
- log(self.serveur,"priv",auteur," ".join(message)+"[failed]")
+ if len(message) > 2:
+ self.start_partie(serv, message[1], " ".join(message[2:]))
+ else:
+ serv.privmsg(auteur,"Je play déjà sur %s."%(message[1]))
+ log(self.serveur,"priv",auteur," ".join(message)+"[failed]")
else:
self.play_channels.append(message[1])
self.play_status[message[1]]=[None,None,None]
obfuskated=" ".join([lettre[0] if lettre[1] else "_" for lettre in mot])
serv.privmsg(canal,"%s : %s"%(begin,obfuskated))
- def start_partie(self, serv, canal):
- mots=[mot.strip() for mot in open(config.dico_mots).readlines()]
- defs=[defi.strip() for defi in open(config.dico_defs).readlines()]
- indice = random.randrange(0,len(mots))
- mot,definition=mots[indice],defs[indice]
+ def start_partie(self, serv, canal, mot=None):
+ if mot is None:
+ mots=[mot.strip() for mot in open(config.dico_mots).readlines()]
+ defs=[defi.strip() for defi in open(config.dico_defs).readlines()]
+ indice = random.randrange(0,len(mots))
+ mot,definition=mots[indice],defs[indice]
+ else:
+ definition = "(custom word)"
# ' et - sont considérés comme déjà devinés
- mot = [(lettre,lettre in "'-()") for lettre in list(mot)]
+ mot = mot.upper()
+ mot = [(lettre,lettre in config.non_guess_chars) for lettre in list(mot)]
self.play_status[canal]=[mot,definition,{}]
self.tried_letters[canal] = set ()
self.lives[canal] = config.lives
self.start_partie(serv, canal)
elif not canal in self.play_channels:
serv.privmsg(canal,"%s: pas ici…"%(auteur))
+ elif cmd in ["score","scores","!score","!scores"]:
+ self.send_scores(serv,auteur)
+ if cmd in ["meur", "meurt","meurre","meurres"] and not canal in self.quiet_channels:
+ serv.privmsg(canal,'%s: Mourir, impératif, 2ème personne du singulier : "meurs" (de rien)'%(auteur))
+ if is_tag(message) and not canal in self.quiet_channels:
+ if auteur in self.ops:
+ action=random.choice(config.tag_actions)
+ serv.action(canal,action.encode("utf8"))
+ self.quiet_channels.append(canal)
+ else:
+ answer=random.choice(config.tag_answers)
+ for ligne in answer.split("\n"):
+ serv.privmsg(canal,"%s: %s"%(auteur,ligne.encode("utf8")))
+ # on essaye de voir si le mot fourni matche la partie en cours
+ mot = message
+ if canal in self.play_channels and self.play_status[canal][0]!=None and is_mot(mot, self.play_status[canal][0]):
+ # on a trouvé le mot
+ # on regarde combien de lettre il manquait
+ manquait = sum([not lettre[1] for lettre in self.play_status[canal][0]])
+ self.add_score({auteur: manquait})
+ if self.play_status[canal][2].has_key(auteur):
+ self.play_status[canal][2][auteur]+=manquait
+ else:
+ self.play_status[canal][2][auteur]=manquait
+ self.gagne(serv, canal, bonus=auteur, bonusvalue=manquait)
+ return
elif (cmd in list("azertyuiopqsdfghjklmwxcvbn") and canal in self.play_channels
and self.play_status.has_key(canal) and self.play_status[canal]!=[None,None,None]):
giv_let=cmd.upper()
if all([lettre[1] for lettre in listeapres]):
self.gagne(serv, canal)
- elif cmd in ["score","scores","!score","!scores"]:
- self.send_scores(serv,auteur)
- if cmd in ["meur", "meurt","meurre","meurres"] and not canal in self.quiet_channels:
- serv.privmsg(canal,'%s: Mourir, impératif, 2ème personne du singulier : "meurs" (de rien)'%(auteur))
- if is_tag(message) and not canal in self.quiet_channels:
- if auteur in self.ops:
- action=random.choice(config.tag_actions)
- serv.action(canal,action.encode("utf8"))
- self.quiet_channels.append(canal)
- else:
- answer=random.choice(config.tag_answers)
- for ligne in answer.split("\n"):
- serv.privmsg(canal,"%s: %s"%(auteur,ligne.encode("utf8")))
- # on essaye de voir si le mot fourni matche la partie en cours
- mot = cmd
- if self.play_status[canal][0]!=None and is_mot(mot, self.play_status[canal][0]):
- # on a trouvé le mot
- # on regarde combien de lettre il manquait
- manquait = sum([not lettre[1] for lettre in self.play_status[canal][0]])
- self.add_score({auteur: manquait})
- if self.play_status[canal][2].has_key(auteur):
- self.play_status[canal][2][auteur]+=manquait
- else:
- self.play_status[canal][2][auteur]=manquait
- self.gagne(serv, canal, bonus=auteur, bonusvalue=manquait)
else:
pass
def gagne(self, serv, canal, bonus=None, bonusvalue=2):
serv.privmsg(canal,"Bravo !")
realword = self.reveal_word(serv, canal)
- nlettre=float(len(realword.replace("'","").replace("-","")))
+ nlettre=float(len([l for l in realword if not l in config.non_guess_chars]))
contribs=["%s:%s%%%s"%(pseudo,str(int(100*contrib/nlettre)),("+bonus(%s)"%(bonusvalue))*(bonus==pseudo)) for pseudo,contrib in self.play_status[canal][2].items()]
contribs_score={pseudo:int(10*contrib/nlettre) for pseudo,contrib in self.play_status[canal][2].items()}
self.add_score(contribs_score)