diff --git a/putsch.py b/putsch.py
index c6bfe090c29594179d95813254fd2eb3891dc5af..50e2e145695ded0c06dcffabe7208218481a64fa 100644
--- a/putsch.py
+++ b/putsch.py
@@ -35,7 +35,7 @@ def Paquet(nbrJoueurs) :
 
 class Boooob(ircbot.SingleServerIRCBot):
         def __init__(self):
-                ircbot.SingleServerIRCBot.__init__(self, [("irc.iiens.net", 6667)],"putsch", "Je suis un bot")
+                ircbot.SingleServerIRCBot.__init__(self, [("irc.iiens.net", 6667)],"putsch", "Je suis un bot",5)
 		self.joueurs = []
 		self.ingame = 0
 		self.phase = 0
@@ -44,6 +44,10 @@ class Boooob(ircbot.SingleServerIRCBot):
 		self.phase2trig = 1
 		self.phase2 = 0
 
+		self.phase4trig = 1
+		self.phase4 = 0
+		self.egalite = 1
+
 		self.voyanteok = 0
 		self.loupsok = 0
 		self.sorciereok = 0
@@ -59,12 +63,14 @@ class Boooob(ircbot.SingleServerIRCBot):
 		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 = ""
@@ -104,6 +110,14 @@ class Boooob(ircbot.SingleServerIRCBot):
 		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 :
@@ -141,37 +155,55 @@ 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" :
+							if f in str(getattr(self, g)) and g != "joueurs" and g != "lovers" and g != "avote" and g != "votes" :
 								serv.privmsg(personne, "La classe de "+f+" est :"+g)
+								self.voyanteok = 1
 								break
 						self.cansee = 0
 			#sorciere
-			if self.sorciere == personne and (self.cankill == 1 or self.cansave == 1) and self.sorciereok != 1 :
+			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.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.joueurs.remove(message.split(" ")[1])
+								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 :
+					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
 
@@ -180,6 +212,9 @@ class Boooob(ircbot.SingleServerIRCBot):
 
 
 
+
+
+
                                               
                                                 
                                 
@@ -197,7 +232,7 @@ class Boooob(ircbot.SingleServerIRCBot):
                 personne = ev.source()
                 personne = couper(personne)
                 message = ev.arguments()[0]
-		if "!debug" in message :
+		if "!debug" in message and "Titch" in personne :
 			if len(message.split(" ")) == 1 :
 
 				for f in dir(self): 
@@ -210,18 +245,114 @@ class Boooob(ircbot.SingleServerIRCBot):
 			if self.topic == 0 :
 				#serv.topic(canal,"Tapez !newgame pour demarrer une partie ! ")
 				self.topic = 1
+			if "!thanks" in message :
+				serv.privmsg(canal, "Mon createur tient particulierement à remercier : Boobiies, Jara, Nami, Twibby, koohbra, Groot, Jeanne, Senseo, Ampleur, Inco, Missan et Sisi pour leur assiduité pendant les tests, et pour pas avoir ralé à cause des hl gratuits")
 			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)
+				if len(self.joueurs) < 7 :
+
+					self.joueurs.append(personne)
+				else :
+					serv.privmsg(canal, "Desolé "+personne+", c'est complet pour l'instant...")
 				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.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 :
-						serv.privmsg(canal, personne+" a rejoint la partie !")
-						self.joueurs.append(personne)
+						if len(self.joueurs) < 7 :
+							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 ! ")
 						self.joueurs.remove(personne)
@@ -238,9 +369,9 @@ class Boooob(ircbot.SingleServerIRCBot):
 					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.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))
 										
@@ -284,9 +415,7 @@ class Boooob(ircbot.SingleServerIRCBot):
 						self.phase2 = self.phase2 + 1
 				if self.phase2 == 2 :
 					self.phase = 3
-					serv.privmsg("#lg_putsch", "La partie commence dans 20s...")
-					time.sleep(20)
-					serv.privmsg("#lg_putsch", "Debut de la partie")
+					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 :
@@ -309,7 +438,7 @@ 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)")
+						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 = []
 
 
@@ -319,12 +448,13 @@ class Boooob(ircbot.SingleServerIRCBot):
 					serv.privmsg("#lg_putsch", "Il fait nuit noire...")
 					self.repet = 1
 
-
+				if self.voyante == "" :
+					self.voyanteok = 1
 				if self.voyanteok == 0 :
 
 					serv.privmsg("#lg_putsch", "J'appelle la voyante")
 					serv.privmsg(self.voyante, "Tape !who pseudo pour connaitre le role de pseudo. La liste :  "+", ".join(self.joueurs))
-					self.voyanteok = 1
+					self.voyanteok = 2
 
 
 				if self.loupsok == 0 :
@@ -333,7 +463,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)
@@ -341,15 +471,24 @@ class Boooob(ircbot.SingleServerIRCBot):
 
 
 				if self.sorciereok == 1 and self.voyanteok == 1 :
-					if self.ancien in self.victime and self.canlive == 1:
-						self.joueurs.append(self.victime)
+					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(self.ancien, "Ouf, ton pouvoir vient de te sauver !")
+						#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 :	
@@ -358,28 +497,202 @@ class Boooob(ircbot.SingleServerIRCBot):
 					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 != "joueurs" and g != "victime" and g != "avote" :
-									serv.privmsg("#lg_putsch" , f+" est decedé cette nuit.. son role : "+g+".")
-							
+								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 != "sorcierevictime" :
+									if f != self.chasseurvictime :
+										serv.privmsg("#lg_putsch" , f+" est decedé cette nuit.. son role : "+g+".")
+										serv.mode("#lg_putsch", "-v "+f)
+										try :
+											self.joueurs.remove(f)
+										except :
+											print "erreur..."
+										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 self.chasseurvictime != "" :
+							for g in dir(self) :
+								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" :
+									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)
+									self.joueurs.remove(self.chasseurvictime)
+									self.chasseur = ""
+									if g == "loups" or g == "villageois" :
+										if g == "loups" :
+											serv.kick("#lg_putsch_loups", self.chasseurvictime)
+											self.loups.remove(self.chasseurvictime)
+										else :
+											self.villageois.remove(self.chasseurvictime)
+									else :
+										setattr(self,g,"")
+
+						self.chasseurvictime = ""		
 						self.chasseurok = 0
 						self.voyanteok = 0
 						self.loupsok = 0
 						self.sorciereok = 0
-						self.victime = ""
+						if self.victime == [] :
+							serv.privmsg("#lg_putsch", "Personne n'est mort cette nuit...")
+						self.victime = [] 
 						self.avote = []
 						self.votes = []
 						self.cansee= 1
-						serv.privmsg("#lg_putsch", "Regaaaarde, le joour se leeeve")
 						self.phase = 4
+						self.phase4 = 0
+						self.phase4trig = 1
+						self.temps = time.time()
 
 			
 			if self.phase == 4 :
-				serv.privmsg("lg_putsch", "Ce crime ne peut rester impuni !")
-				time.sleep(2)
-				serv.privmsg("lg_putsch", "Le village se reunit et decide de lyncher quelqu'un...")
+				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) :
+						serv.privmsg("#lg_putsch", "fin du vote...")
+						bid = []
+						for f in self.joueurs :
+							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.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" :
+												serv.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!="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)
+									self.joueurs.remove(self.chasseurvictime)
+									self.chasseur = ""
+									if g == "loups" or g == "villageois" :
+										if g == "loups" :
+											serv.kick("#lg_putsch_loups", self.chasseurvictime)
+											self.loups.remove(self.chasseurvictime)
+										else :
+											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 "!list" in message :
+						serv.privmsg("#lg_putsch", "La liste des joueurs est : "+", ".join(self.joueurs))
+
+					if "!recap" in message :
+						for f in self.joueurs :
+							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 message.split(" ")[1] in self.joueurs and personne in self.joueurs :
+						self.votes.append(message.split(" ")[1])
+						self.avote.append(personne)
+						serv.privmsg("#lg_putsch", personne+" a voté pour "+message.split(" ")[1]+" !")
+
+
+