mirror of
https://github.com/oddluck/limnoria-plugins.git
synced 2025-04-26 13:01:09 -05:00
167 lines
8.1 KiB
Python
167 lines
8.1 KiB
Python
###
|
|
# Copyright (c) 2010, quantumlemur
|
|
# Copyright (c) 2011, Valentin Lorentz
|
|
# Copyright (c) 2020, oddluck <oddluck@riseup.net>
|
|
# All rights reserved.
|
|
#
|
|
# Redistribution and use in source and binary forms, with or without
|
|
# modification, are permitted provided that the following conditions are met:
|
|
#
|
|
# * Redistributions of source code must retain the above copyright notice,
|
|
# this list of conditions, and the following disclaimer.
|
|
# * Redistributions in binary form must reproduce the above copyright notice,
|
|
# this list of conditions, and the following disclaimer in the
|
|
# documentation and/or other materials provided with the distribution.
|
|
# * Neither the name of the author of this software nor the name of
|
|
# contributors to this software may be used to endorse or promote products
|
|
# derived from this software without specific prior written consent.
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
# POSSIBILITY OF SUCH DAMAGE.
|
|
###
|
|
|
|
import supybot.conf as conf
|
|
import supybot.registry as registry
|
|
from supybot.i18n import PluginInternationalization, internationalizeDocstring
|
|
_ = PluginInternationalization('Jeopardy')
|
|
def configure(advanced):
|
|
# This will be called by supybot to configure this module. advanced is
|
|
# a bool that specifies whether the user identified himself as an advanced
|
|
# user or not. You should effect your configuration by manipulating the
|
|
# registry as appropriate.
|
|
from supybot.questions import expect, anything, something, yn
|
|
conf.registerPlugin('Jeopardy', True)
|
|
|
|
|
|
Jeopardy = conf.registerPlugin('Jeopardy')
|
|
# This is where your configuration variables (if any) should go. For example:
|
|
# conf.registerGlobalValue(Jeopardy, 'someConfigVariableName',
|
|
# registry.Boolean(False, """Help for someConfigVariableName."""))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'blankChar',
|
|
registry.String('*', _("""The character used for a blank when
|
|
displaying hints""")))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'numHints',
|
|
registry.PositiveInteger(3, _("""The number of hints to be given for
|
|
each question""")))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'timeReplies',
|
|
registry.PositiveInteger(1, _("""The number of time remaining replies
|
|
if showHints False and showTime True""")))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'delay',
|
|
registry.Integer(4, _("""The number of seconds to increase the delay
|
|
between questions""")))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'timeout',
|
|
registry.Integer(90, _("""The number of seconds to allow for
|
|
each question""")))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'hintPercentage',
|
|
registry.Probability(0.25, _("""The fraction of the answer that
|
|
should be revealed with each hint""")))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'hintReduction',
|
|
registry.Probability(0.5, _("""The percentage by which to reduce points
|
|
with each hint reveal""")))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'flexibility',
|
|
registry.Float(0.94, _("""The minimum similarity score of the answer checker.
|
|
Uses jaro-winkler distance, 1.0 is identical/disabled. (Sane values > 0.90)""")))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'inactiveShutoff',
|
|
registry.Integer(5, _("""The number of questions that can go
|
|
unanswered before the game stops automatically.""")))
|
|
|
|
conf.registerGlobalValue(Jeopardy, 'jserviceUrl',
|
|
registry.String('http://jservice.io', _("""Set an alternate URL where
|
|
jservice can be accessed at, for example a locally run jservice instance.""")))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'defaultRoundLength',
|
|
registry.PositiveInteger(10, _("""The default number of questions to
|
|
be asked in a round.""")))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'randomize',
|
|
registry.Boolean(True, _("""This will determine whether or not the
|
|
bot will randomize the questions.""")))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'requireOps',
|
|
registry.Boolean(False, _("""This will determine whether or not the
|
|
user must be a channel operator to start/stop the game.""")))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'enabled',
|
|
registry.Boolean(True, _("""This will determine whether or not the
|
|
game is enabled for a given channel""")))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'defaultPointValue',
|
|
registry.PositiveInteger(500, _("""The default point value for questions if
|
|
no point value is given""")))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'autoRestart',
|
|
registry.Boolean(False, _("""Start a new round of random questions after
|
|
the current round has ended.""")))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'keepHistory',
|
|
registry.Boolean(True, _("""Keep a history of previously asked questions per
|
|
channel and don't repeat them.""")))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'useBold',
|
|
registry.Boolean(True, _("""Use bold in replies.""")))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'showScores',
|
|
registry.Boolean(True, _("""Show scores at the end of the round.""")))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'showBlank',
|
|
registry.Boolean(True, _("""Show first (blank) hint with the question. Overrides showHints only for this reply.""")))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'showTime',
|
|
registry.Boolean(True, _("""Show time remaining messages when not showing hints.""")))
|
|
|
|
conf.registerChannelValue(Jeopardy, 'showHints',
|
|
registry.Boolean(True, _("""Show hint messages automatically. Overrides showTime.""")))
|
|
|
|
conf.registerGroup(Jeopardy, 'template')
|
|
|
|
conf.registerChannelValue(Jeopardy.template, 'question',
|
|
registry.String("#{{number}} of {{total}}: \x0313({{airdate}}) \x0309[${{points}}] \x0310\x1f{{category}}\x1f: {{clue}}",
|
|
_("""The template used to render questions.""")))
|
|
|
|
conf.registerGroup(Jeopardy.template, 'restart')
|
|
|
|
conf.registerChannelValue(Jeopardy.template.restart, 'question',
|
|
registry.String("\x0313({{airdate}}) \x0309[${{points}}] \x0310\x1f{{category}}\x1f: {{clue}}",
|
|
_("""The template used to render questions when autoRestart is True.""")))
|
|
|
|
conf.registerChannelValue(Jeopardy.template.restart, 'correct',
|
|
registry.String("\x0313{{nick}}\x03 got it! The full answer was: {{answer}}. Points: \x0309{{points}}\x03 | Total: \x0309{{total}}",
|
|
_("""The template used to render correct answer replies when autoRestart is True.""")))
|
|
|
|
conf.registerChannelValue(Jeopardy.template, 'hint',
|
|
registry.String("HINT: {{hint}}{% if time %} | ({{time}} seconds remaining){% endif %}{% if points %} | \x0309[${{points}}]{% endif %}", _("""The template used to render hints.""")))
|
|
|
|
conf.registerChannelValue(Jeopardy.template, 'correct',
|
|
registry.String("\x0313{{nick}}\x03 got it! The full answer was: {{answer}}. Points: \x0309{{points}}\x03 | Round Score: \x0309{{round}}\x03 | Total: \x0309{{total}}",
|
|
_("""The template used to render correct answer replies.""")))
|
|
|
|
conf.registerChannelValue(Jeopardy.template, 'skip',
|
|
registry.String("No one got the answer! It was: {{answer}}",
|
|
_("""The template used to render unanswered question and skip replies.""")))
|
|
|
|
conf.registerChannelValue(Jeopardy.template, 'stop',
|
|
registry.String("Jeopardy! stopped.{% if answer %} (Answer: {{answer}}){% endif %}",
|
|
_("""The template used to render stop replies.""")))
|
|
|
|
conf.registerChannelValue(Jeopardy.template, 'time',
|
|
registry.String("{{time}} seconds remaining. [.hint] [.question] [.skip]",
|
|
_("""The template used to render time remaining replies.""")))
|