Previously, !time could be used in the join phase to see how much time
was left before the game started. With my decorators overhaul I broke
this feature. Adding this back in.
- Fix bug when using bite and not specifying a victim where victim was
None and thus trying to get their role resulted in a KeyError
- Forward params from bite onwards to kill so you no longer need to do
both (although you can still bite one person and kill someone else if
you REALLY wanted to for some reason... it still won't work though)
- If the bite failed for any reason (including if they targeted lycan
who just instantly turns), refund the bite so the alpha wolf can try
again after a wolf dies again during the day.
This merges !pingpref into !pingif, and allows for more user options, as
to how to get pinged. Default behaviour pings people once when their
desired player count is reached, and can be changed with !pingif as
well.
This adds sort of a rate-limiting and pinging method preferences. If the
amount of players the person wants is reached or exceeded, they will be
automatically added to the !ping list; this is the default behaviour.
Doing !pingpref will make the bot automatically ping them shortly after
- this is done by a separate thread which is started on the first join
and exits when game starts or last player quits. Doing so will not
remove them from the ping list.
Whenever a single target has multiple triggers (e.g. mad scientist +
assassin or assassin + lover), and the kills would overlap, errors would
happen. A previous attempt to fix this for the single case of scientist
+ lover/assassin was ill conceived and did not take deadlist into
account. Fix this properly now.
- A ghost driven away by retribution totem can now get team wins if
their team wins, but will not get individual wins. They used to
unconditionally lose.
- Make it so ghosts driven away by retribution totem are no longer
messaged and are no longer able to kill.
Prevents "Unhandled command <stuff>" from writing to file, add back
weird piece of code to prevent too many templates and "would send
message to fake nick" message and creates file on startup if it doesn't
exist.
In some places, the bot says "not logged in to NickServ", while in other
places, it saays "not identified with NickServ". This changes all such
notices to use the first form.
The only roles that should NOT be assassin are roles that the other team
MUST kill in order to have a good shot at winning. Therefore, we don't
need to have so many saferoles unable to be assassin, as well as certain
neutral roles. The current list is as follows:
- wolves + traitor, since these all need to die for village to win
- lycan, because if turned they need to die for village to win
- seer/oracle/harlot/augur/detective, capable of making safes so wolves
need to focus on killing them in order to have a shot at winning
- bodyguard/GA, capable of preventing other safes from dying, again need
to die for wolves to have a shot at winning
Everyone else is fair game, including shaman, drunk, hunter, doctor,
crazed shaman, and fool (who were all previously restricted).
If drunk is assassin, they don't get to choose their target, rather they
get one randomly assigned to them automatically.
Uses variables instead of hardcoded roles for kill. Doesn't warn about
incorrect use of away and back if var.OPT_IN_PING is on, and about
incorrect use of in/out if it's off. References #76.
- Merge channel and PM commands in a single decorator.
- Add many parameters for the decorators, reducing commands cluster.
- Added back the admin_only check for some commands; special-cased
'<console>'.
- Moved the checking for which roles are seen wolf in the settings; same
for seen as default.
- Added a variable to pick if one is seen as the default role or as a
villager where applicable (default: True).
- Fixed seer/oracle seeing through amnesiac.
- Some fixes to the totem chances that I forgot to add in the previous
commit.
- Removed some useless module imports.
- Moved some functions to settings.
- Changed all single-quotes to double-quotes in commands for
consistency.
- Renamed 'cmd' variable in both force and rforce commands to avoid
confusion.
- Probably a bunch of other things. Don't consider this commit
description to be 100% complete.
This fixes the totem chances needing to add up to 1, and now can add up
to any arbitrary number or fraction. This also adds a TOTEM_ORDER
variable for shamans, as an attempt to allow more shamans in the future.