]> jfr.im git - erebus.git/blobdiff - modules/trivia.py
trivia - show streak breaker, fix streak calc
[erebus.git] / modules / trivia.py
index 7c409e9c6acf7156e0b17687e19645446b4f92ed..76eb28cd297662a2d7d56c22e1996e20c0039e51 100644 (file)
@@ -77,6 +77,8 @@ class MyTimer(timerbase):
 
 class TriviaState(object):
        def __init__(self, parent=None, pointvote=False):
+               self.streak = 0
+               self.streak_holder = None
                if parent is not None:
                        self.gotParent(parent, pointvote)
 
@@ -193,12 +195,12 @@ class TriviaState(object):
                except Exception as e:
                        msg("DERP! %r" % (e))
 
-               self.db['lastwinner'] = winner
-               self.db['lastwon'] = time.time()
-
                if self.db['hofpath'] is not None and self.db['hofpath'] != '':
                        self.writeHof()
 
+               self.db['lastwinner'] = winner
+               self.db['lastwon'] = time.time()
+
                self.db['users'] = {}
                self.db['ranks'] = []
                self.savedb()
@@ -272,6 +274,8 @@ class TriviaState(object):
                if self.gameover == True:
                        return self.doGameOver()
                if qskipped:
+                       self.streak = 0
+                       self.streak_holder = None
                        self.getchan().fastmsg("\00304Fail! The correct answer was: %s" % (self.hintanswer))
                        self.missedquestions += 1
                else:
@@ -429,12 +433,27 @@ def trivia_checkanswer(bot, user, chan, *args):
        line = ' '.join([str(arg) for arg in args])
        if state.checkanswer(line):
                state.curq = None
-               if state.hintanswer.lower() == line.lower():
-                       bot.fastmsg(chan, "\00312%s\003 has it! The answer was \00312%s\003. New score: %d. Rank: %d. Target: %s %s" % (user, line, state.addpoint(user), state.rank(user), state.targetuser(user), state.targetpoints(user)))
+
+               if state.streak_holder == user:
+                       state.streak += 1
                else:
-                       bot.fastmsg(chan, "\00312%s\003 has it! The answer was \00312%s\003 (hinted answer: %s). New score: %d. Rank: %d. Target: %s%s" % (user, line, state.hintanswer, state.addpoint(user), state.rank(user), state.targetuser(user), state.targetpoints(user)))
+                       if state.streak >= 3:
+                               bot.fastmsg(chan, "\00312%s\003 broke \00304%s\003's streak of \00307%d\003!" % (user, state.streak_holder, state.streak))
+                       state.streak_holder = user
+                       state.streak = 1
+
+               response = "\00312%s\003 has it! The answer was \00312%s\003" % (user, line)
+               if state.hintanswer.lower() != line.lower():
+                       response += " (hinted answer: %s)" % (state.hintanswer)
+               response += ". New score: %d. Rank: %d. Target: %s %s" % (state.addpoint(user), state.rank(user), state.targetuser(user), state.targetpoints(user))
+               bot.fastmsg(chan, response)
+
+               if state.streak >= 3:
+                       bot.msg(chan, "\00312%s\003 is on a streak! \00307%d\003 answers correct in a row!" % (user, state.streak))
+
                if state.hintsgiven == 0:
                        bot.msg(chan, "\00312%s\003 got an extra point for getting it before the hints! New score: %d." % (user, state.addpoint(user)))
+
                state.nextquestion()
 
 @lib.hook(glevel=1, needchan=False, wantchan=True)
@@ -765,8 +784,8 @@ def delq(bot, user, chan, realtarget, *args):
        try:
                backup = questions[int(args[0])]
                del questions[int(args[0])]
-               bot.msg(user, "Deleted %s*%s" % (backup[0], backup[1]))
-       except:
+               bot.msg(user, "Deleted %s*%s" % (backup[0], backup[1]), True)
+       except Exception as e:
                bot.msg(user, "Couldn't delete that question. %r" % (e))
 
 @lib.hook(glevel=lib.STAFF, needchan=False)