loljoho / TriviaTime

A feature-packed limnoria trivia plugin that includes multiple channel support, multiplayer, and robust editing tools
https://joho.pw/trivia
Eclipse Public License 1.0
5 stars 2 forks source link

Year and Numeric Hints #10

Open loljoho opened 5 years ago

loljoho commented 5 years ago

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
RELEVANT CODE

```python 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

loljoho commented 5 years ago

Relevant code at https://github.com/loljoho/TriviaTime/blob/master/plugin.py#L302

loljoho commented 5 years ago

Updated with relevant code