Villagers win if the wolves die, wolves win if all villagers are dead
(removes the stupid way of wolves winning for cultists to elect
themselves to be voted).
Also swap shaman and hunter so villagers always have a means of getting
a kill no matter the game size.
Lycans and people with lycanthropy totem now properly show up as wolves
if they turned during the game by removing special-case tracking for
them (var.LYCANS) and opting for the generic role-change tracking
(var.FINAL_ROLES) instead. Also, make it so that wolves don't "turn
into" wolves if they are afflicted with lycanthropy and then
subsequently targeted by wolves (which can happen with luck/misdirection
totem).
I'd prefer not using the same hook ID for anything, but it's convenient
to be able to unhook multiple related things at once, so we'll just
change the hook IDs again if it's ever needed. Nothing should be
hardcoding them anyway, so changing them shouldn't cause issues.
- Disable account support if we do not have WHOX so that bot still works
(and have it use regular WHO replies in that case).
- Don't join alt channels if there aren't any (prevents null JOINs being
sent to server).
- Allow configuring how the bot quiets users with QUIET_MODE and
QUIET_PREFIX, the default is "q" and "" so it sets +q n!u@h, but you
could configure it to say "b" and "~q:" where it will set +b ~q:n!u@h.
- Properly error out if we have sasl enabled but the ircd does not.
Known Issues:
- pstats does not work, as it is still tied to nickserv accounts
Specifically, all timers are enabled by default now and there are new
settings to disable regular timers and disable time lord.
There is also a new setting to disable quit/part stasis in debug mode.
When resetting the timer, only reset it if we would be decreasing
the time remaining, never increase it. Also, use > 0 checks instead of
checking for debug mode to be consistent with the rest of the code, and
so that the next commit works properly.
The funky checks are because in debug mode (as of next commit) it will
be possible to enable certain subsets of timers, and these checks are
needed to prevent things from breaking when some subsets are enabled but
others are not.