Alpha now can choose to either bite or kill, but not both. If other
wolves are alive, they can still kill as normal allowing both to happen
that night. Additional interactions were added to deal with visiting
harlots and to not accidentally kill bodyguards/GAs in the event that
they are bitten and would die from wolves (if
BODYGUARD/GUARDIAN_ANGEL_DIES_AT_NIGHT_CHANCE is set).
Things to consider for the future but didn't have time to do yet:
- Should we play a message in channel if alpha wolf successfully bites
someone at night?
- Avoid killing a bodyguard/GA if Fallen Angel is in play and said
bodyguard/GA was bitten that night.
- Should wolves avoid automatically killing people bitten on previous
nights (e.g. a bitten harlot wouldn't get nommed visiting wolves or
victims, bitten bodyguards/GAs wouldn't die from fallen angel, etc.)?
This way it's immediately obvious if it was a legit command or not. The
result of werecrow's observation is not announced, because it's possible
for the crow to be killed at night and this would take away that
strategy. For sorcerer, it does not even bother announcing the fact that
they observed, since they can tell the result immediately if they are
alive, so the message is pretty much redundant.
Also, minor fixes:
* Log kill by angry wolves properly, instead of the non-obvious hack
that @Vgr255 used.
* Add missing quotes in angry wolves wolfchat message.
Right now the only thing that still tracks accounts if DISABLE_ACCOUNTS
is True is stats stuff (in sqlite), as I'm unsure of how we want to
handle that for when accounts aren't enabled; likely track by nick but
unsure on that right now.
This further implements issue #112 but doesn't fix it entirely yet.
Decoupled ROLE_REVEAL from impacting !stats, added new STATS_TYPE.
ROLE_REVEAL is now a string:
- on = roles revealed on death
- off = roles not revealed on death
- team = user's team revealed on death but not their role
STATS_TYPE is also a string:
- default = stats are calculated as if a villager or nonplayer was
manually tracking who was what; this leads to !stats not revealing
any information that is not publicly known
- accurate = what it used to be with a couple modifications; all roles
are shown (VG and time lord are no longer lumped with villager),
alpha wolf and lycans turning are hidden, nothing else is hidden
(so you can see what amnesiac turned into or when clone turns)
- team = only shows number of people on each team, calculated the same
way as accurate
- disabled = stats are disabled, doing !stats only serves as a mass-ping
of alive players
Removed random_reveal/random_noreveal hack
- !fgame random=role reveal:on|off does the same thing as the hack used
to do.
Allow all game modes to take arguments (aka the blah in roles=blah).
- Allowed arguments are "role reveal" (on/off/team), "stats type"
(default/accurate/team/disabled), and "abstain"
(enabled/restricted/disabled).
- roles obviously still allows for taking individual roles as arguments
as well as specifying a default role, however this functionality is
not available for any other gamemode.
- if any custom options are set as a result of this or changing them in
game mode constructors, players will be informed of which options are
in play.
Performing !frole will force STATS_TYPE from default to accurate, this
is done because the default logic is based not on what roles are
currently in existence, but rather what roles the game was started with
and what transformations could have applied to them. !frole throws a
complete monkey wrench in that to the point where it is impossible to
nicely recover.
Clone and Traitor are now unconditionally blacklisted for amnesiac, as
the additional logic to support them in default !stats is incredibly
complex and as such was not done for this PR.
Matchmaker is conditionally blacklisted for amnesiac if amnesiacs turn
after the first night. It is an allowed choice (unless it appears on the
config blacklist) if amnesiacs turn night 1.
Turncoats initially start off village-aligned, but can change which team
they're on by using the !side command. Turncoats cannot change sides two
nights in a row, and can use !pass if they don't wish to change sides on
any given night.
Seers and detectives see turncoats as turncoats, augurs see them as
having a grey aura. I was initially toying with det and augur seeing
them as their currently-chosen side and for mystics of the opposite team
to detect them, but since they can flip-flop an unlimited number of
times a night that info would be useless at best and misleading at
worst.