- Account for revealing totem + amnesiac in experimental !stats properly
- Fix amnesiac blacklist checks to be consistent with each other
- Remove non-events from villager.py -- these always ran before or after
all other events, so there was no point in them being events in the
first place
- stop_game now follows the mainroles/allroles pattern instead of
roles/templates pattern. This also modifies the data stored in db
stats, and fixes readouts for cases where we do goofy stuff with
secondary roles
Convert chk_decision, chk_nightdone, transition_day, transition_night, doomsayer, mayor, and convert+split shamans in three files with a shared helper. Fixes and updates for the User containers, and some other tweaks and fixes.
- Add the new User containers for easier handling of users throughout the codebase
- Remove the swap_player event (replaced by User.swap, made possible thanks to the containers)
- Remove the cli argument from several events
- Remove !frole (a replacement will follow)
- Remove the ALLOWED_NORMAL_MODE_COMMANDS config option
Plus a couple of small fixes here and there.
Fix balance in mudkip, it was skewed too much towards village winning.
Also, if day ended in mudkip and nobody was being voted, it would error.
Let's make that not error.
- Remove short-circuit in chk_decision event on day timeout. No idea why
I put that there to begin with...
- Don't make succubus remove voters from the list, rather just set their
weight to 0. This causes their vote to not count while still letting
stuff interact with the fact they voted succ (such as desperation totem)
- Ensure that mudkip's vote change works on day timeout as well
It's not needed since we can import at function scope. Also make
chk_nightdone implicit for role commands executed during night, so we
can remove tons of redundant calls.
- Expand skel.py to be more useful
- Remove circular dependency from utilities.py. It *CANNOT* globally
import users.
- Remove unused functions from utilities.py and make some others proxy
through to user-aware functions to ensure functionality stays the
same.
- Remove duplicate event listener.
- Clarify some comments about stats.
This gets rid of the (dced) hack, with var.DCED_LOSERS taking its place.
Succubus was not touched, as there is already a PR which converts it,
although the succubus events in other files were touched.
Some sites were updated to be (more) Users-aware, while others replaced
it with an old deprecated get_roles() API. As more things get converted,
these will hopefully get eliminated as well. A FIXME comment was added
to all such occurrences.
This was put in to allow for custom messages if one couldn't target
themselves. As such, an extra kwarg was added to pass in a custom
message in such an event. It now returns None if they targeted
themselves so the caller can fail gracefully.
Still some unsplit things that are pending other roles being split.
Other gameplay changes regarding piper:
- Ensure that pipers can never be charmed, even in the case of
misdirection, luck, and exchange totems.
- Allow pipers to change who they are charming during the night.
- Do not share who pipers picked with other pipers (or in revealroles),
as these are now changeable and pipers are not made aware of each
other anyway in the role list at night.