It's useful for things like "!m wolf", and it's easier to do this than
hacking !pstats to support "!p wolf", which could be ambiguous if
there's a player with an account name of "wolf".
This allows us to postpone init_db(). One advantage of this is that
specifying AWAY in botconfig.py won't overwrite the away list from the
DB anymore, but properly get added to (as would be expected).
This is just a basic logging function designed for logging (admin)
command calls. We'll have a better logging system eventually (ref:
lykoss/lykos#72).
- A message is now displayed whenever a pacifism or impatience totem is
triggered, e.g. "X impatiently votes for Y." or "X meekly votes to not
lynch anyone today." These are played immediately before the vote
passes, so there is no opportunity for people to abandon course.
- Reinstate people with impatience totems being the ones that die to
desperation totems. Due to the above message playing, it is now more
obvious why they died, and I believe that doing it this way adds to
gameplay ("I have a random totem and so does the person being voted. I
should try to jump in early just in case I have impatience so I don't
die."). If someone with impatience votes normally, their actual vote
counts for determing vote order (so they aren't last unless they voted
last). If there are multiple people with impatience that didn't vote,
then the order in which they vote is random.
- Moving code to chk_decision means that doing an actual !abstain
will still make you show up in !votes (unlike now where it does not)
- impatience and pacifism should balance each other out if they
are present in equal numbers, preventing an !abstain from working
if you have impatience does not yield that behavior
This fixes the error with wolf cub that has been appearing for a while
now, and also prevents similar errors from happening with monster and
traitor in the same function.
<+jacob1> !moo , is someone going to press the Merge pull request button on https://github.com/lykoss/lykos/pull/80 eventually or do I have to :P
Rolesets are picked randomly + 4 new rolesets
- Hag can no longer hex the same target two nights in a row
- Hag target is un-hexed if hag gets exchanged with someone
- GA now properly guards people whose names contain uppercase letters
- Make var.START_WITH_DAY mostly work, doesn't crash the bot anymore
but still needs improvements, namely messaging everyone what role
they are.
if > 2/5 of the players vote for a roleset it's automatically picked
picked roleset is printed out on the welcome message
!help game prints possible rolesets, also more bold
We indeed don't have all day, but people with access to fwait should
know as much already anyway. Additionally, this interfered with undoing
a long fwait; !fwait 9999 was possible, !fwait -9999 was not.
The syntax to give 'foo' the additional 'bar' template is now
!frole foo +bar
or, in the case of templates like gunner that can take an argument,
!frole foo +gunner = 9001
Removing a template uses - instead:
!frole foo -bar
The new "role = arg" syntax also applies for shamans and crazed shamans:
!frole foo shaman = impatience
A random totem is selected as usual, rather than the bot crashing, if no
argument is given.
This reverts commit 5e4bb1ed5d and puts
the relevant quiet-related code in a conditional instead, depending on a
newly-added var.QUIET_DEAD_PLAYERS setting.
Per discussion in ##werewolf-ops, nick changes are easier to notice than
PM logs which could be faked, and we can ban repeat offenders if needed
anyway.
Allow admins to fjoin people who are currently stasised without removing
their stasis entirely. Stasis is unaffected by this on its own, although
note that a game being played will still normally reduce the stasis
penalty for now, even if the stasised player actually played in the game
due to being fjoined.
The reasoning behind this is that retracting your vote not to lynch does
not necessarily mean that you will indeed lynch someone.
Also, retracting a vote not to lynch will now reset the !votes rate
limit, just like retracting a normal vote.
!simple used to determine whether you were given simple instructions
*and* whether the bot NOTICEs you; now, it only controls the former and
!notice controls the latter.
Features:
- Added var.NO_LYNCH
- Tweaked hurry_up to count not-lynching players
- Makes day end without a lynch if enough players abstain
- Consider pacifists and not-lynching as equal for lynching calculation
(in chk_decision and hurry_up)
- Add "x players have refrained from voting" in !votes
- Added actual nolynch/abstain command, which is a toggle to no_lynch or
not
- Make !voting automatically remove the player from the no-lynchers
- Make !retract remove the player from no-lynchers
- Make rapidfire more rapid by reducing timers and adding in time lord
- Correctly credit someone for a win if they die and THEN /part or /quit
(someone that dies and is /kicked will not get a win, as that usually
means they cheated or something.)
- Break up long messages (roles, player totals) at intelligent points.
- Updated behaviour for listroles(), show_votes(), timeleft()
- Uses !simple settings when those commands are given in PM
- Uses notice if channel is +z and a game is in progress
1. Rewrite amnesiac: Instead of removing an existing role from the game for the first 2 days,
they now become a brand new random role. Seers, oracles, sorcerers, detectives, and revealing
totems will see through their amnesia so they can learn their actual role. Amnesiacs are neutral
until they clear up, and thus if the game ends while they are still amnesiac, they will win
alongside the default role (e.g. village if default is villagers, or wolves if default is cultists).
2. Make vengeful ghost take vengeance based on the role that killed them instead of making it based
on time of day. If they suicide due to being someone's lover, they will take vengeance on the team
that killed their lover. If they are gunner and their gun explodes, they take vengeance on the
village due to their shoddy gun construction processes.
3. Make clone always trigger even if their target idles out or !quits.
4. Make a harlot visiting victim, harlot visiting wolf, and bodyguard guarding victim able to
shoot wolves if they are also gunner, and for wolves to pick up their gun. In the event of a wolf
kill plus another non-wolf kill, the wolf kill takes precedence in the event of harlot visiting
victim and bodyguard guarding victim, and the non-wolf kill takes precedence in the event of
harlot visiting wolf (the non-wolf kill happens en-route to the wolves, and the gun disappears or
something, idk). Additionally, if the harlot visits victim or the bodyguard guards victim and the
harlot/bodyguard are also targeted by wolves, their special "died visiting/guarding victim" event
plays instead of the normal death message.
5. Change alive vengeful ghost win conditions to work like amnesiac: they win with the default
role if alive at the end of the game.
6. Minor wording fixes, such as the gunner shot wolf message with more commas than words.
Remember, every time you abuse a comma, God kills a kitten.
Similar to fool, the jester wins if they are lynched. Unlike fool,
the game continues if jester is lynched and they win alongside the
normal winners.
Also change it so that a fool's lover does NOT win with fool, so
that fool/jester win mechanics are similar (since jester's lover
would die with jester). It doesn't pay to fall in love with fools!