Skip to content

Year and Numeric Hints #10

Description

@loljoho

When answers have three or fewer digits (e.g. years)...

  1. First Hint: First character
  2. Second Hint: The second character; or no additional hints
  3. Third Hint: No additional hints

Instead of:

****
1***
19**
1956

Reveal hints like:

****
*9**
*95*
1956
  • First Hint: should provide a one character hint at random
  • Second Hint: should provide a one character hint at random
RELEVANT CODE

    def getHintString(self, hintNum=None):
        if hintNum == None:
            hintNum = self.hintsCounter
        hintRatio = self.registryValue('hints.hintRatio') # % to show each hint
        hint = ''
        ratio = float(hintRatio * .01)
        charMask = self.registryValue('hints.charMask', self.channel)

        # create a string with hints for all of the answers
        if self.questionType == 'kaos':
            for ans in self.answers:
                if ircutils.toLower(ans) not in self.guessedAnswers:
                    ans = str(ans)
                    hintStr = ''
                    if hintNum == 0:
                        for char in ans:
                            if char in self.unmaskedChars:
                                hintStr += char
                            else:
                                hintStr += charMask
                    elif hintNum == 1:
                        divider = int(len(ans) * ratio)
                        divider = min(divider, 3)
                        divider = min(divider, len(ans)-1)
                        hintStr += ans[:divider]
                        masked = ans[divider:]
                        for char in masked:
                            if char in self.unmaskedChars:
                                hintStr += char
                            else:
                                hintStr += charMask
                    elif hintNum == 2:
                        divider = int(len(ans) * ratio)
                        divider = min(divider, 3)
                        divider = min(divider, len(ans)-1)
                        lettersInARow = divider-1
                        maskedInARow = 0
                        hintStr += ans[:divider]
                        ansend = ans[divider:]
                        hintsend = ''
                        unmasked = 0
                        if self.registryValue('hints.vowelsHint', self.channel):
                            hintStr += self.getMaskedVowels(ansend, divider-1)
                        else:
                            hintStr += self.getMaskedRandom(ansend, divider-1)
                    hint += ' [{0}]'.format(hintStr)
        else:
            ans = str(self.answers[0])
            if hintNum == 0:
                for char in ans:
                    if char in self.unmaskedChars:
                        hint += char
                    else:
                        hint += charMask
            elif hintNum == 1:
                divider = int(len(ans) * ratio)
                divider = min(divider, 3)
                divider = min(divider, len(ans)-1)
                hint += ans[:divider]
                masked = ans[divider:]
                for char in masked:
                    if char in self.unmaskedChars:
                        hint += char
                    else:
                        hint += charMask
            elif hintNum == 2:
                divider = int(len(ans) * ratio)
                divider = min(divider, 3)
                divider = min(divider, len(ans)-1)
                lettersInARow = divider-1
                maskedInARow = 0
                hint += ans[:divider]
                ansend = ans[divider:]
                hintsend = ''
                unmasked = 0
                if self.registryValue('hints.vowelsHint', self.channel):
                    hint += self.getMaskedVowels(ansend, divider-1)
                else:
                    hint += self.getMaskedRandom(ansend, divider-1)
        
        return hint.strip()

Blarg

  • Relevant code at line 302
  • getHintString at line 256

Metadata

Metadata

Assignees

No one assigned

    Labels

    1.1 - botRelated to the bot plugin

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions