Commit Graph

1032 Commits

Author SHA1 Message Date
Emanuel Barry
112ffdf80b Fix indent (blame woffle)
You can't `.update()` a dict you're currently iterating over.
2015-09-13 10:17:03 -04:00
skizzerz
d9812e552d Lots of shaman fixes (blame jacob1)
- var.SHAMANS now properly stores who is actually receiving totem, as it
  should. It now holds a tuple so it can still track the original target
  for purposes of letting shaman know if target changed.
- properly reset all totem vars before handing them out so totems don't
  last for multiple days.
- luck/misdirection now applies before exchange totem is checked, making
  it consistent with every other role ever.

completely untested, but should be fine :)
2015-09-13 00:04:24 -05:00
nyuszika7h
aaddfb5a93 Fix never reached condition 2015-09-09 18:07:34 +02:00
Vgr E. Barry
0219941d08 Get rid of conceal_roles in the game_mode decorator
A game mode is considered "hidden" if it doesn't have a `ROLE_GUIDE`
attribute. The `default` game mode was modified to have those
attributes, and is not hidden.
2015-09-09 10:37:45 -04:00
Vgr E. Barry
4810bb408f chr(32) 2015-09-09 10:05:03 -04:00
Vgr E. Barry
d427bd8ca4 Move the try-except block in evilvillage's chk_win 2015-09-09 10:04:41 -04:00
nyuszika7h
384ee8495c Merge pull request #165 from lykoss/better_gamemodes
Update handling of game modes
2015-09-09 16:01:39 +02:00
Vgr E. Barry
c37631e90c Update handling of game modes
This change moves the game modes into their own `src/gamemodes.py`, and
also allows setting game modes via `gamemodes.py`.
2015-09-09 09:57:41 -04:00
jacob1
9467a21279 fix some comments in transition_day to be on their own line 2015-09-09 01:36:10 -04:00
jacob1
50dc87938a allow hunter to pick a new target if their old one idles/quits
It also sends hunters/ghosts a message informing them of this
2015-09-09 01:18:39 -04:00
jacob1
4257de5f76 fix hunter being able to use 'pass' after killing on a previous night (ending night early) 2015-09-08 23:24:38 -04:00
jacob1
0246698b87 fix !roles # to work as intended 2015-09-08 23:03:24 -04:00
jacob1
5b62c5c3f6 minor fix, sometimes used 'seems' when it should have used 'seemed' 2015-09-08 22:56:33 -04:00
nyuszika7h
adec2362e4 Fix bot breaking with fake nicks
(blame @skizzerz)
2015-09-07 20:19:20 +02:00
skizzerz
6a0a0bdbd0 Fix fjoining people stasised by hostmask 2015-09-06 15:16:06 -05:00
nyuszika7h
8a90145474 Case-insensitively compare the bot's nick when checking for PMs
Closes #161.
2015-09-06 11:46:49 +02:00
skizzerz
2bd5acab53 fix fallow/fdeny redux 2015-09-05 22:09:22 -05:00
skizzerz
5e1fb7dbcf fix fallow/fdeny 2015-09-05 22:01:25 -05:00
Ryan Schmidt
458d678009 Merge pull request #159 from lykoss/ident-support
Expand host-based variables to take full-on hostmasks
2015-09-05 19:59:01 -07:00
skizzerz
07fdf64aae Fix fool winning
If a fool is also a lover and they are lynched, they don't win (but
their lover might depending on bot settings).

Fixes #162
2015-09-05 18:19:24 -05:00
skizzerz
2cf278f9b1 Fix turncoat not being seen as vil
(it may have possibly never worked ever but just noticed now because
this was the first game with seer+turncoat)
2015-09-04 20:00:58 -05:00
skizzerz
88180a1ec2 Revert "Make fallen angel become assassin in all cases"
This change negatively impacts balance, assassin should in general never
be applied to any role the other team is required to kill in order to
win. Alpha wolf is the exception here, not the rule, since there is
counterplay involved with alpha biting GA (GA is likely immunized, can
guard self, game might end before turning, etc.) that simply does not
exist in other instances.

This reverts commit 3eb437fad6.
2015-09-04 19:33:58 -05:00
jacob1
028c5c9ae2 fix crash in games with traitor / wolf cub 2015-09-04 18:39:41 -04:00
Vgr E. Barry
3eb437fad6 Make fallen angel become assassin in all cases
Not just from getting bitten by alpha wolf, but also from turning from
amnesiac, and also if in the default role rotation (this one currently
doesn't affect any game modes, but in the future it might).
2015-09-04 11:49:30 -04:00
Vgr E. Barry
279328296d Fix 'devoice' parameter not working in some cases in del_player 2015-09-04 08:25:50 -04:00
skizzerz
f5ec9c9627 Expand host-based variabls to take full-on hostmasks
This allows for things like making ADMINS/OWNERS take a full hostmask,
or fallowing/fdenying a full hostmask with wildcards. It also allows for
a distinction between two people that share a hostmask but have a
different ident.

stasis now checks all matching stasis and returns the highest amount

fallow/fdeny have two new options -acc and -host to explicitly specify
what type the argument is

-cmds in fallow/fdeny show commands from all matching masks, to bring it
in line with how actual allow/deny parsing works, before it would only
show the first match
2015-09-03 19:38:59 -05:00
Vgr E. Barry
0d316d1ec6 Fix bot not devoicing player during day/join phases 2015-09-03 17:05:00 -04:00
Vgr E. Barry
5294f92c6c Add !games to show the available game modes 2015-09-03 12:00:40 -04:00
Vgr E. Barry
609f3282b8 Fix missing name error
The worst part is that I tested that change quite a lot
2015-09-02 22:31:16 -04:00
Vgr E. Barry
bd93e96445 Improve !fgame to allow an arbitrary number of spaces
This also allows to be a bit more liberal with the punctuation
2015-09-02 18:37:49 -04:00
Vgr E. Barry
d827eae2d8 Add option to devoice players during night 2015-09-02 17:48:58 -04:00
Vgr E. Barry
78465c9769 Perform game-ending checks for random earlier on 2015-09-01 23:14:44 -04:00
Vgr E. Barry
245bc57b66 Separate chk_win in two functions 2015-09-01 23:13:10 -04:00
Vgr E. Barry
7702509f90 Fix changing nicks in join phase not working 2015-08-31 19:20:54 -04:00
jacob1
e4c53906fb fix !swap when the player you are replacing already disconnected 2015-08-31 11:57:19 -04:00
Vgr E. Barry
2a35212ca4 Fix fallen angel's kill playing the wrong message 2015-08-29 20:56:26 -04:00
Vgr E. Barry
1fe1a7bfb3 Fix leftovers from the data types refactor 2015-08-29 20:56:15 -04:00
Vgr E.Barry
aca7ea418f Mass refactor of the data types 2015-08-29 23:45:44 +02:00
nyuszika7h
fa7cec485b frole: Add new players to default role and voice them 2015-08-28 16:13:15 +02:00
jacob1
5bc3a96203 fix duplication and possible empty player list in the message previously charmed players get 2015-08-28 01:35:30 -04:00
jacob1
36c56f8f5f fix error every time you PM the bot in debug mode 2015-08-28 01:18:42 -04:00
Emanuel Barry
f55492e6c8 Unconditionally print traceback
In debug mode traceback could go unprinted.
2015-08-27 18:17:45 -04:00
nyuszika7h
403e491c60 Fix bot sending idle warning in PM when messaging it after you're dead
Also changed it to use var.IDLE_WARNED_PM, as @skizzerz suggested a wolf
may want to intentionally idle sometimes.
2015-08-27 23:47:08 +02:00
nyuszika7h
a5a5c1c022 Mention oracle & augur in traitor message; fix cursed traitor message
Closes #150.
2015-08-27 23:12:02 +02:00
nyuszika7h
8be512c216 Repeat idle warning in PM if the player is PMing the bot 2015-08-27 21:08:04 +02:00
Emanuel Barry
77619306ec Fix bodyguard message 2015-08-27 14:51:21 -04:00
Emanuel Barry
b3f30bbd91 Improve error handler
Now it will only pastebin the error when it has finished gathering it
all.
2015-08-27 10:02:56 -04:00
skizzerz
3dc3e4d172 Fix race condition for day timing out immediately when a vote succeeds 2015-08-26 20:09:57 -05:00
skizzerz
bb5cb78c68 Fix fgame bug, str.split has idiotic semantics in python 2015-08-25 22:46:45 -05:00
skizzerz
75c407c403 Track player stats by nick if accounts are disabled 2015-08-25 15:52:27 -05:00
nyuszika7h
886434272f Remove !me alias for !mystats
It conflicts with normal messages like "me too" in wolfchat, and I think
it's rarely (if ever) used.
2015-08-24 19:54:13 +02:00
nyuszika7h
82ef99b837 Fix !join telling you to !swap if you're already joined 2015-08-18 12:43:01 +02:00
jacob1
3ce856818a fix the bot pinging everyone instead of just people using !pingif if DISABLE_ACCOUNTS is on 2015-08-17 18:17:45 -04:00
nyuszika7h
5a2a098db6 !wiki: Catch socket.timeout 2015-08-17 22:53:12 +02:00
nyuszika7h
79066e5ec6 Fix error in on_invite (blame @Vgr255) 2015-08-16 12:06:15 +02:00
jacob1
835441caea fix bug where you could fdeny the same command multiple times if done by host 2015-08-14 01:31:48 -04:00
billion57
b936a4d3c5 More lynch/quit/no victims messages
yayy
2015-08-14 00:20:50 +02:00
Vgr E.Barry
3534cc7d78 Better handle non-built-in exceptions 2015-08-10 09:49:52 -04:00
Vgr E.Barry
d58a9249ab Update error handler to ignore non-errors 2015-08-10 09:09:33 -04:00
nyuszika7h
0dd3c08862 Exit immediately if Ctrl-C is pressed twice 2015-08-08 22:46:32 +02:00
nyuszika7h
e8fc9f01bb Ping players when ending game due to error in join phase 2015-08-08 22:16:06 +02:00
nyuszika7h
58286e7596 !swap: Don't error if user is not playing
I blame @Vgr255.
2015-08-08 22:07:02 +02:00
skizzerz
7e1c656185 Fix harlot dying visiting protected victim 2015-08-06 22:30:32 -05:00
skizzerz
1b50a37b69 Fix break_long_message, broken in 5793097626 2015-08-06 22:06:04 -05:00
Vgr E.Barry
38b7ef81e2 Add proper error handling. Closes #151
All exceptions, if not caught, are unconditionally sent to `sys.stderr`.
We only need to use our own custom class with some modifications and we
can intercept all errors, even those in threads (which #151 was about).
The only real downside from this practice is that `cli` is not
accessible to us when the errors happen, so I used a hack to set it on
an instance variable. If anyone can find a better solution, please step
forward. For the time being, this will have to do.

If for some obscure reason this class breaks, `sys.__stderr__` holds the
original `sys.stderr`
2015-08-06 12:29:47 -04:00
nyuszika7h
74555f013a Fix Windows error messages in !ping 2015-08-06 12:37:37 +02:00
nyuszika7h
74d4f9c95e Actually add that ping message 2015-08-06 12:27:39 +02:00
nyuszika7h
e27cb0c1e0 Add another ping message 2015-08-06 12:27:10 +02:00
Vgr E.Barry
b3c8fd562a Fix some errors and style in !swap 2015-08-05 21:55:09 -04:00
Vgr E.Barry
a6a128586d Add a !swap command. Closes #129
This allows people to swap out an existing player from the game, and
join instead. Useful if, say, your home connection dropped, but your ZNC
is still online and you want to keep playing through your phone for
example. The player swapping and the one being swapped must be
identified to the same account for this to work. After the command has
been used, an implicit !myrole is performed, informing the player of
their role and templates. The on_nick handler has been decoupled into
two functions, where most of the logic is now in rename_player (which
swap uses).

Known issues: Hard drive space is left untouched.
2015-08-05 21:28:04 -04:00
Vgr E.Barry
188ede0b2e Change is_user_altpinged to return only an integer 2015-08-05 21:22:42 -04:00
Vgr E.Barry
397d7362db Update !roles
Now `!roles` while in a game will have the same effect as `!roles n`
where n is the number of players that joined. Also got rid of string
concatenation.
2015-08-01 09:54:08 -04:00
Vgr E.Barry
eef01df1f7 Nitpick by ChrisE 2015-08-01 09:35:27 -04:00
Vgr E.Barry
ff53ad4bcf Modify is_user_stasised to return only an integer, not a tuple 2015-08-01 09:22:42 -04:00
Vgr E.Barry
0eee4b1c88 Fix random randomly failing to start
Pun unintended
2015-08-01 09:18:19 -04:00
Vgr E.Barry
29cf18f7be Update revealroles
Now shows which side turncoat is on, and what role someone was if they
changed during game. Also removed string concanetation so save on
memory/time.
2015-07-31 13:30:40 -04:00
Vgr E.Barry
7c9b5ce51b Fix decorators 2015-07-31 13:29:26 -04:00
Vgr E.Barry
e259502ad4 Change a few hasattr/getattr calls for something more intuitive 2015-07-31 13:29:05 -04:00
Vgr E.Barry
f40e749c07 Allow !fjoin to join ranges of fake nicks 2015-07-31 13:28:34 -04:00
Vgr E.Barry
5793097626 Improve var.break_long_message
Concatenating strings repeatedly slows down the program and eats up
memory. It's not too bad for the number of players we have, but if you
get 10k players that makes a significant difference
2015-07-31 13:28:08 -04:00
Vgr E.Barry
dc54fdc883 Add random !ping replies 2015-07-31 13:26:50 -04:00
skizzerz
6fecec6df3 Re-add limit for fwait
Now restricted to adding/removing 900 seconds (15 minutes). There are no
valid reasons I can think of or that were given in -dev that would
require more time than this. 15 minutes is still likely too much and
from previous experience such long forced waits generally trigger a mass
exodus of players who would rather play a game than doing absolutely
nothing.
2015-07-30 13:06:48 -05:00
skizzerz
e27fd8c1fa Fix connect hooks
Apparently having multiple hooks on the same thing is just horribly
broken, even though we do it in other places. This only fixes the issue
on connecting as that one is the most severe, but the other cases will
need to be fixed as well (or the underlying issue preventing it from
working needs to be fixed).
2015-07-29 03:14:10 -05:00
skizzerz
dbb80a940e Fix issues related to undernet (and in general)
- Now possible to use the bot without it having a registered account by
  blanking NICKSERV_IDENTIFY_COMMAND
- Now possible to configure who ChanServ is as well as the command it
  uses to op up in channel (blank to prevent it from auto-opping).
  Example configuration provided for undernet
- Properly autojoin channels even if there isn't an MOTD
2015-07-28 22:35:47 -05:00
Vgr E.Barry
9d10a1a342 Display what amnesiac would have turned into at end of night 2015-07-27 10:24:55 -04:00
nyuszika7h
32ab792e2f Use the specified username for NickServ identify 2015-07-27 14:19:46 +02:00
nyuszika7h
21060b2bfb Add an option to change NickServ's name and the identify command 2015-07-27 13:08:52 +02:00
skizzerz
80f5f7d4e8 Separate bite from kill for alpha wolf.
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.)?
2015-07-26 23:29:40 -05:00
Vgr E.Barry
017811b7db Fix game mode docstring parsing 2015-07-26 13:34:04 -04:00
skizzerz
4eaedea442 Fix fgame autocompletion 2015-07-26 12:32:07 -05:00
nyuszika7h
0e704e5533 Fix missing period in !hex message 2015-07-25 22:27:10 +02:00
skizzerz
6dd9c199fd Disable stats for noreveal, and make the 'no reveal' message more clear 2015-07-24 12:27:08 -05:00
nyuszika7h
2f5712cb3b Prefix "/me"s in wolfchat with an asterisk
This is needed to disambiguate them from the bot announcing wolfteam
actions in wolfchat, which was recently added.
2015-07-24 13:50:42 +02:00
jacob1
c39298cd43 remove det from lycan (a bit too OP), replaced with 2nd seer at 19p (fakeclaiming opportunity) 2015-07-22 20:27:41 -04:00
nyuszika7h
bf18c5fbb2 Fix previous commit 2015-07-22 21:10:15 +02:00
nyuszika7h
c3fa5d4907 Change all "to not" -> "not to" 2015-07-22 21:01:09 +02:00
nyuszika7h
0d0bda349d Announce wolf/alpha retracting in wolfchat too & remove redunant check 2015-07-22 20:56:55 +02:00
nyuszika7h
e1271290aa Add note about random picking to shaman and matchmaker role message 2015-07-22 19:03:16 +02:00
nyuszika7h
a41d302607 Fix "already charmed" message for piper
"For tonight" implies that charmed players are only charmed until the
night ends, which is certainly not true.
2015-07-22 18:32:20 +02:00
nyuszika7h
164785d589 Announce wolf actions in wolfchat
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.
2015-07-22 17:59:53 +02:00
nyuszika7h
22faf0b961 Skip leading symbols in complete_match
This allows you to vote |evil| with "!v evil", for example, provided
that no other nick matches that.
2015-07-22 16:11:38 +02:00
skizzerz
d26c621b55 Fix win sequencing bug
If all wolves are dead and there are the same number of wolfteam as
vills (due to sorcerers, hags, etc.), then village should be credited
with win.
2015-07-20 23:06:22 -05:00
nyuszika7h
f65f48c70d Add missing bolding + period & fix format string 2015-07-20 17:52:40 +02:00
nyuszika7h
66fe0ec167 Fix typo that broke everything 2015-07-20 15:58:34 +02:00
skizzerz
93345c990d Make DISABLE_ACCOUNTS actually disable account-related stuff.
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.
2015-07-19 14:37:17 -05:00
nyuszika7h
40a7337ee8 Remove redundant calls to set() in previous commit 2015-07-19 21:24:55 +02:00
nyuszika7h
66a8826eb1 Reuse same code for is_admin/is_owner 2015-07-19 21:22:38 +02:00
skizzerz
99e4a49fe6 Also deduct min lycans if it is possible alpha turn with GAs around 2015-07-19 04:02:57 -05:00
skizzerz
7ad4098aed Fix idlers breaking stats 2015-07-17 13:15:52 -05:00
nyuszika7h
efcb60e4f5 Merge pull request #152 from lykoss/stats_overhaul
!stats Overhaul
2015-07-17 18:42:57 +02:00
skizzerz
116653432b !stats Overhaul
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.
2015-07-17 18:42:07 +02:00
nyuszika7h
ccc1bb68ec Fix "currently not" -> "not currently"
Both are correct; this is just for consistency.
2015-07-17 09:47:14 +02:00
jacob1
90a02de767 remove 'curse <self>' pass alias for warlock 2015-07-16 22:31:45 -04:00
jacob1
680e24dd8b allow warlock and piper to use !pass (they can later decide to use their powers) 2015-07-16 22:26:12 -04:00
jacob1
e9fa4a0293 fix var.LASTGIVEN with silenced shamans 2015-07-16 20:32:30 -04:00
jacob1
b08849b14f if there are multiple pipers ('random' games), tell the other pipers who is being charmed 2015-07-16 19:46:30 -04:00
jacob1
bbfa5331e4 silenced shamans no longer randomly give out totem at end of night 2015-07-16 19:25:38 -04:00
jacob1
bd4b89ef01 delay PMing charmed players until daytime 2015-07-16 19:07:58 -04:00
skizzerz
75d55ab461 Make non-simple message to turncoats more clear if they don't have a side 2015-07-15 21:00:15 -05:00
nyuszika7h
2f3f4b17ea Add support for stasising wildcard hostmasks 2015-07-15 20:15:39 +02:00
skizzerz
3b5a72f3d8 Add missing space 2015-07-15 12:32:26 -05:00
nyuszika7h
9a0c96eab0 Fix comment in mad game mode 2015-07-15 18:18:09 +02:00
skizzerz
d4f786200b Fix turncoat handling for amnesiacs and clones 2015-07-14 22:45:53 -05:00
skizzerz
c0575bd460 Add turncoat role
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.
2015-07-14 22:20:53 -05:00
skizzerz
0286a55e6b Add 'r' as an alias for 'retract' 2015-07-13 21:10:48 -05:00
jacob1
37c52337e6 fix !revealroles error 2015-07-13 12:08:13 -04:00
jacob1
4a1c10b697 allow shaman to change targets during the night
totem vars get set in transition_day
2015-07-12 19:42:53 -04:00
skizzerz
adddbe70ff Properly fix error when shaman idles (obsolotes f72a9c3) 2015-07-12 11:46:46 -05:00
nyuszika7h
21d3a8aa68 Fix !frestart on InspIRCd 2015-07-12 16:21:52 +02:00
nyuszika7h
f72a9c37d9 Fix error when shaman idles 2015-07-12 12:57:00 +02:00
nyuszika7h
c30faf8831 Re-add "Nobody wins." when there are no players remaining
I have no idea why I removed it in the first place.
2015-07-12 10:54:07 +02:00
jacob1
e9874441fa !pstats without arguments sends a /notice instead of spamming the channel 2015-07-12 01:42:02 -04:00
jacob1
8e78068a6c small keyword argument change please ignore 2015-07-12 01:42:01 -04:00
skizzerz
25f1bd0ee0 Allow hunters, bodyguards, and GAs to use pass. Guarding self is no longer an alias for passing as bodyguard. 2015-07-12 00:39:45 -05:00
skizzerz
3c8979295b Force matchmaker selection if they didn't pick. matchmaker is not told who is matched in this instance 2015-07-12 00:39:45 -05:00
jacob1
e1832def6e remove some code duplication: call chk_win when fool is lynched 2015-07-12 01:26:36 -04:00
jacob1
cca871262a fix for broken nick tracking in join phase if you get removed due to a Guest/away nick 2015-07-12 00:57:27 -04:00
jacob1
1af572f12a shuffle villager list before pming them the roles
prevents you from knowing if you are a hidden role based on the timing of the message
2015-07-12 00:02:25 -04:00
jacob1
e6ed567364 call the chk_win event when fool is lynched
useful for some 'creative' game modes and should be called anyway
2015-07-11 22:34:40 -04:00
nyuszika7h
051aff9476 fgame: Don't restrict what the default role can be
If it breaks, you get to keep the pieces. ;)
2015-07-11 23:51:38 +02:00
skizzerz
50752ccb5c Remove unused variable 2015-07-11 13:49:56 -05:00
skizzerz
8299a2ee91 Force shaman to act at night 2015-07-11 13:43:50 -05:00
skizzerz
ee2a4ef2cf Fix protection not working against assassin sometimes 2015-07-11 12:16:50 -05:00
nyuszika7h
130a859458 Actually fix restarting on excess flood 2015-07-10 00:07:10 +02:00
nyuszika7h
3649c82174 Fix auto-restart on excess flood 2015-07-09 23:55:04 +02:00
skizzerz
4e6b7ad372 Make !time report remaining wait time during join phase 2015-07-07 13:04:25 -05:00
skizzerz
627da811f8 Make fallen angel kill ALL of the protectors, not just the one that would have taken effect 2015-07-06 13:38:59 -05:00
skizzerz
51d747e7d1 Instantly end night if nobody can act during it 2015-07-06 13:38:59 -05:00
nyuszika7h
8d528bf047 Remove !fghost and !funghost
These commands are completely useless, they just confuse people. I just
had someone ask me whether it would bring them back to the game, with
their role and everything. If an op wants to talk in the middle of the
game, there are other ways to do that. This isn't even being used
anymore.
2015-07-06 20:12:01 +02:00
nyuszika7h
751a284f6d Properly remove stasis on !fjoin
Previously, stasis would be removed locally but not from the database.
2015-07-05 00:23:35 +02:00
nyuszika7h
7f0623b4b0 Add partial role reveal
Roles are revealed upon death, but not shown in !stats.

This will be used for the random game mode with a 50% chance.
The variant used is displayed when the game is started, and
admins can force a specific variant with !fgame.

Also, ignore conceal_roles in !stats, because partial role reveal
handles that now.
2015-07-04 23:57:07 +02:00
skizzerz
649649a355 Fix hunter turning into some other nightrole prematurely ending night on occasion 2015-07-02 17:00:31 -05:00
nyuszika7h
b968f83e8b Optimize var.get_role
It will now return as soon as it finds the role for the player,
instead of calling var.list_players_and_roles every single time.
I haven't tested in a real-world scenario, but in a test game
with 10000 players (don't ask), the speed improvement is very clear
(~1-2s per player when sending out nighttime PMs instead of ~10s).
2015-06-30 20:39:55 +02:00
nyuszika7h
ad26f0b693 Remove surrounding whitespace in fortunes 2015-06-30 12:59:14 +02:00
nyuszika7h
ca9b6a2009 Allow using !coin and !pony in PM 2015-06-28 11:11:08 +02:00
Vgr E.Barry
91e122f86d Fix del_player to pass in an argument instead of using a list 2015-06-26 08:51:03 -04:00
skizzerz
2274e945a0 Disallow fallowing fsend
!fsend is a very dangerous command if abused (up there with exec), and
should be properly admin-only instead of allowed to be given out to
non-admins. Unlike fsay/fact, there is no easy way to restrict fsend
when a non-admin uses it.
2015-06-25 13:02:51 -05:00
nyuszika7h
4e53a3556b Fix compatibility with Python 3.2 (no list.clear()) 2015-06-25 17:53:06 +02:00
nyuszika7h
f849eb35c2 Remove debug print 2015-06-21 00:19:56 +02:00
Vgr E.Barry
a009eb4819 Fix issue where !roles would output the wrong number of players 2015-06-19 11:54:09 -04:00
Vgr E.Barry
5c6a14154e Change !help to not display aliases
Also improve message splitting and remove string concatenation to use
faster and more memory-efficient methods
2015-06-18 23:20:56 -04:00
Vgr E.Barry
260918555d Change del_player to devoice all at once in multiple-deaths scenarios 2015-06-18 22:48:48 -04:00
skizzerz
3cab412a9b Fix silenced VG causing day transition to error out 2015-06-15 16:44:45 -05:00
nyuszika7h
7887b6b2d8 Looks like that op request wasn't so redundant.
I misread the code.
2015-06-15 20:36:43 +02:00
nyuszika7h
6f62831b8a Join all channels at once and remove redundant op request 2015-06-15 20:21:55 +02:00
nyuszika7h
452c1b1ede Fix capability negotiation to be more sane (and IRCv3.2-compliant) 2015-06-15 20:20:28 +02:00
skizzerz
1a506907c9 Wording fix 2015-06-15 11:04:50 -05:00
Vgr E.Barry
106b1d61f3 Allow events to only partially determine roles to attribute 2015-06-15 10:30:44 -04:00
Vgr E.Barry
7f875d3b33 Remove the roles_check event 2015-06-15 10:29:04 -04:00
Vgr E.Barry
d8161271c7 Tweak template restrictions handling 2015-06-15 10:28:14 -04:00
Vgr E.Barry
95967b8633 Make events.remove_listener remove empty lists as well 2015-06-15 10:26:58 -04:00
nyuszika7h
dd2d82392d Reorganize imports 2015-06-15 15:20:27 +02:00
Vgr E.Barry
4d8576481b Change event dispatchers to not pass in mutable arguments 2015-06-14 23:24:48 -04:00
skizzerz
4d15ee0421 Revert "Speed up startup time a bit"
This reverts commit 77d1eda074.

Let's not use "private" modules for nonexistent performance boosts.
2015-06-14 22:25:58 -05:00
Vgr E.Barry
77d1eda074 Speed up startup time a bit
_collections is the C implementation (and where defaultdict lies), and
is as such already loaded when the interpreter is launched. collections
imports a bunch of other useless stuff we're not interested in.
2015-06-14 23:13:49 -04:00
Vgr E.Barry
d069345c2c Refactor of the random game mode to use the role_attribution event 2015-06-14 22:57:23 -04:00
Vgr E.Barry
a7a3b4a045 Add a role_attribution event dispatcher 2015-06-14 22:56:57 -04:00
Vgr E.Barry
3888c51da5 s/!roles was disabled/!roles is disabled/ again
Forgot one
2015-06-14 22:54:51 -04:00
Vgr E.Barry
5d8cd14db8 Add chk_traitor event (for the random game mode) 2015-06-14 16:35:14 -04:00
Vgr E.Barry
aaaf3df0f5 Add a roles check event for when game starts
Also remove `var.IGNORE_NO_WOLF` hack
2015-06-14 16:34:42 -04:00
Vgr E.Barry
a8984b6a56 Add event for amnesiac turning (for the random game mode) 2015-06-14 16:32:39 -04:00
Vgr E.Barry
5c4dcec8e6 Remove \x02 from console and file output 2015-06-14 16:31:29 -04:00
Vgr E.Barry
1d711b9cee s/!roles was disabled/!roles is disabled/ 2015-06-14 16:12:50 -04:00
Vgr E.Barry
81e3e688ab Fix Event.dispatch to return True if execution is to proceed 2015-06-14 16:06:36 -04:00
Vgr E.Barry
28dc0a8e14 Fix corner case with multiple pipers 2015-06-14 12:06:52 -04:00
nyuszika7h
1591655c68 Log admin commands to audit.log as well 2015-06-14 17:45:46 +02:00
nyuszika7h
f8cc2aef1d fallow/fdeny: Add -cmd to complement -cmds
You can use this to see which people are allowed or denied to use a
particular command, rather than listing all commands.
2015-06-14 16:14:39 +02:00
nyuszika7h
36d2e6b83e Tweaks to !fallow/!fdeny
- You can now use "-cmds" to group by command rather than user. This is
  useful to, say, check who is allowed to use !revealroles.

- The output is now sorted alphabetically, which should make visual
  navigation much easier.

- The command character is no longer prefixed to the commands, as I feel
  like it's just a waste of space.

- Long messages are now broken properly, using var.break_long_message().
2015-06-14 14:48:58 +02:00
Vgr E.Barry
f3ab9b1512 Simplify some conditionals for valentines role attribution 2015-06-13 17:14:22 -04:00
nyuszika7h
fb964e370a Remove DISABLED_GAMEMODES
After a discussion in ##werewolf-dev, we've decided that if a majority
of the players wants a game mode, there's no reason not to allow it.
If a game mode is broken, it can be commented out in the code.
2015-06-13 17:25:23 +02:00
skizzerz
93e842f9aa Rage rage grumble grumble
Fix breakage in ORIGINAL_ROLES on nickchange if the person has more than
one role (e.g. templates)
2015-06-12 23:53:09 -05:00
skizzerz
7b9b79a0d1 Make code a tiny bit more readable 2015-06-12 12:29:45 -05:00
nyuszika7h
5ad726601e Fix previous commit
ntotems wasn't being reset in the loop, as pointed out by @skizzerz.
2015-06-12 19:11:30 +02:00
nyuszika7h
ff4f186498 If a player got multiple totems, send only one message 2015-06-12 19:08:06 +02:00
skizzerz
fde409aea2 Don't show (Account) in fallow/fdeny list if ACCOUNTS_ONLY is set 2015-06-12 11:21:54 -05:00
skizzerz
d87db24f51 noreveal balance tweaks
It's been found that larger game sizes heavily favors the village, this
reduces the village power significantly by removing obvious "claim"
roles and shifting more powerful roles later into the rotation where
they are less effective. This may be too much of a shift but that is
currently unknown.

- Shaman removed entirely
- Hunter now at 10p (from 15)
- GA now at 12p (from 10)
- Detective now at 15p (from 12)
2015-06-09 18:22:59 -05:00
jacob1
b374bd42a2 don't show disabled game modes in !help game 2015-06-09 12:19:14 -04:00
jacob1
22bc669650 fix is/are grammar in [wolf] mystic messages 2015-06-09 12:08:57 -04:00
nyuszika7h
c5fa4445b2 Reset some rate limits when game is started 2015-06-09 17:01:02 +02:00
jacob1
47b18d3655 remove village elder role 2015-06-09 01:39:16 -04:00
jacob1
255a3562c8 Add village elder to amnesiac blacklist in 'random' games
We really should remove the role altogether but woffle wants to keep it for some reason ...
2015-06-08 22:07:49 -04:00
Emanuel Barry
fdd1fc5c12 Merge pull request #146 from lykoss/fallen
New roles, protection semantics, and alpha fixes
2015-06-08 20:26:16 -04:00
skizzerz
02a35b8d20 Fix TypeError from list+tuple and s/sum/count/ where able 2015-06-08 19:22:09 -05:00
Vgr E.Barry
5383ea75f8 Fix error if bot uses temporary nickname 2015-06-08 19:04:22 -04:00
Vgr E.Barry
6a7f9fe906 Fix denied commands still triggering
...
2015-06-05 22:58:38 -04:00
skizzerz
6604de63e3 Also hide villager-like roles from wolf mystic 2015-06-05 19:34:47 -05:00
Vgr E.Barry
6fa4910430 Further improve flastgame
derp
2015-06-04 21:07:49 -04:00
Vgr E.Barry
ca8719fc7d Fix flastgame 2015-06-04 20:53:37 -04:00
Vgr E.Barry
910fd0a8cb Fix decorators erroring with every message 2015-06-04 19:51:21 -04:00
Vgr E.Barry
9dc52441e8 Fix some commands not working in alt channels 2015-06-04 19:37:12 -04:00
skizzerz
c47fa284d2 noreveal tweaks
- Add in new mystic roles, replacing minion and village elder.
- Also add elder to amnesiac blacklist.
2015-06-04 17:53:22 -05:00
Ryan Schmidt
562fba2029 Merge pull request #145 from lykoss/new-decorators
Change decorators
2015-06-04 15:43:12 -07:00
skizzerz
70bced24a6 New roles, protection semantics, and alpha fixes
This commit adds 3 new roles and changes the semantics of
kills/protections to work more like the impatience and pacifism totems.

- Add mystic and wolf mystic roles which can divine the number of
  players still alive on the opposing team each night. These roles are
  meant for games where role reveal is off as !stats gives the same info
  otherwise.
- Add fallen angel which is a corrupted version of the guardian angel,
  created when a guardian angel is bitten by alpha wolf. This role is
  incredibly potent as they bypass all forms of protection on their
  target. GAs corrupted this way also automatically gain the assassin
  template.
- Protections/kills now stack and cancel each other out. As such, 2
  kills but only 1 protection will result in the kill still happening.
- Fix help text for active alpha wolf to show the reworked bite command.
- If alpha bites someone who is going to die via other means that night,
  refund the bite.
- If the bite was unsuccessful due to whatever reason and was refunded,
  give a different message to alpha wolf to let them know that.
- Make adding more wolf roles in the future easier to do by replacing
  some hardcoded lists with var.WOLF_ROLES.
2015-06-04 17:37:32 -05:00
Vgr E.Barry
8b1315eef6 Fix error on exchange totem if harlot who visits oneself is targetted 2015-06-04 12:45:09 -04:00
Vgr E.Barry
4382d91008 Modify hook handling 2015-06-04 10:55:53 -04:00
Vgr E.Barry
ee97d6f45e Fix duplicate function name 2015-06-04 10:55:06 -04:00
Vgr E.Barry
49f0ba220b Modify all commands call to properly call the commands 2015-06-04 10:50:10 -04:00
Vgr E.Barry
dcc23ce554 Modify how permissions are checked 2015-06-04 09:45:31 -04:00
Vgr E.Barry
b6211748a1 Add the 'phases' and 'silenced' arguments to the cmd decorator 2015-06-04 09:44:34 -04:00
skizzerz
581cda4ac3 Fix revealroles/myrole bitten messages 2015-06-03 12:12:38 -05:00
skizzerz
dadff67f74 Guardian modifications
Modify game over messages to read better
Modify win conds to remove unneeded ones and to also add in some "nobody
wins" conds that happen due to MAD or stalemates.
2015-06-03 10:56:29 -05:00
Vgr E.Barry
f1285d2237 Tweak the decorators to no longer have mangled __call__ 2015-06-03 11:09:26 -04:00
jacob1
d8bc216df4 fix !frestart not actually restarting the bot 2015-06-03 01:31:46 -04:00
skizzerz
040be2ff31 Piper/charming fixes
- Piper can now only win during daytime (this includes transition_day as
  well as chk_decision)
- There is now at most 1 piper in charming regardless of player count,
  more than 1 is simply overpowered and impossible to balance
2015-06-02 23:57:36 -05:00
Janik Kleinhoff
3f0bce320e Fix typo, blame Vgr 2015-06-03 03:28:19 +00:00
Vgr E.Barry
ca2e901d58 Mass overhaul to the decorators 2015-06-01 16:37:22 -04:00
Vgr E.Barry
416ded936d Fix another faulty len() call 2015-06-01 14:39:48 -04:00
Vgr E.Barry
f75592d571 Fix error in !stats if alpha wolf is in play 2015-06-01 14:36:13 -04:00
nyuszika7h
1ac59cea78 fpull: Support git versions older than 1.9
Those versions don't support the --rebase=preserve option of git pull.
2015-06-01 20:39:06 +02:00
Emanuel Barry
24851f3c56 Fix wrong pingif tables 2015-06-01 14:25:50 -04:00
nyuszika7h
ce880950cd frestart: Look for ERROR instead of QUIT
The IRCd sends ERROR when we get disconnected, so this is more reliable.
2015-05-31 18:32:38 +02:00
Vgr E.Barry
6278f3fe29 src/wolfgame.py: Consistency fixes
- Replaced all \XX, \XXX and \xXX syntax by \uXXXX syntax
- Replaced all single-quotes messages by double-quotes ones where it
makes sense
- Replace all {} in string literals by {0} syntax (explicit over
implicit)
- Use x.startswith(("a", "e", "i", "o", "u")) instead of x[0] in ("a",
"e", "i", "o", "u")
- Remove list comprehensions where a simple generator would work
(reduces memory consumption where we can)
2015-05-30 10:29:13 -04:00
Vgr E.Barry
ced87d21ea Remove backslash in line 2015-05-30 09:28:14 -04:00
Vgr E.Barry
06a5764a42 Fix bot crashing in !frestart
This fixes the bug where bot would crash on endgame through faftergame
without sending all messages, but introduces a new bug where someone can
quit between endgame and the bot's own quit, crashing it. This is an
extremely tight race condition, and shouldn't matter most of the time.
Further explanation in the big wall of text.
2015-05-30 00:11:23 -04:00
jacob1
10a3b5b01b new game mode: charming
has piper, werekitten at 10p, and warlock at 12p
2015-05-29 21:10:41 -04:00
jacob1
403dbb2fd5 use botconfig.CMD_CHAR in !ping removal notice 2015-05-29 19:05:41 -04:00
jacob1
da63bf21f7 !wiki: give link to main page if no arguments are provided, catch timeout errors 2015-05-29 19:03:32 -04:00
jacob1
c62ab1795c remove piper simple_message, fix player list grammar with the longer one 2015-05-29 18:03:10 -04:00
nyuszika7h
e66c69cb29 Use re.search() and raw strings for all regexes
re.fullmatch() would be the best, but it's only available since Python
3.4, and re.match(r"...$") looks weird.
2015-05-29 14:27:15 +02:00
jacob1
80a366e6b9 fix is_fake_nick returning True on UIDs
there is nothing else of interest in this commit
2015-05-28 23:29:35 -04:00
jacob1
29429cad66 fix bug where people who did /nick to a bad nickname couldn't ever rejoin
probably only happened with ACCOUNTS_ONLY enabled
2015-05-28 23:07:42 -04:00
jacob1
21391f9261 don't ping alt connections of players who have joined, set() changes 2015-05-28 22:31:19 -04:00
jacob1
338f24aa66 fix bug where players in var.DISCONNECTED couldn't use any commands (like !stats) 2015-05-28 21:01:34 -04:00
Vgr E.Barry
d15fd90b1e Fix win checking to account for piper win 2015-05-28 16:09:54 -04:00
Vgr E.Barry
7d652b457d Use defaultdict in transition_day and stats 2015-05-28 15:42:57 -04:00
jacob1
590406d00a use only a single table for pingif preferences 2015-05-28 15:21:59 -04:00
jacob1
379737d4fc Log piperwins in stats
commands to convert old tables: http://pastebin.com/jheALFsE
2015-05-28 10:49:56 -04:00
Vgr E.Barry
aab1f0aaf5 Prevent pipers from winning if someone is wounded 2015-05-27 20:45:52 -04:00
nyuszika7h
00b28eba2c Properly initialize var.CHARMED 2015-05-27 21:50:23 +02:00
nyuszika7h
f054b967d9 Remove leftover reference to !ping-related commands 2015-05-27 21:45:26 +02:00
Emanuel Barry
edbe6535ad Fix !fjoin to be case-insensitive 2015-05-27 14:35:59 -04:00
Emanuel Barry
4393f3413a Allow piper to select a single target at all times
Per request from @jacob1 and some evidence from a game. It makes it easier for piper to win.
2015-05-27 14:30:40 -04:00
nyuszika7h
019a9c3b34 Suggest "!help pingif" in the !ping removal notice
It's faster to use !help, and if someone wants more information, the
help for !pingif links to the wiki page anyway.
2015-05-27 15:16:16 +02:00
nyuszika7h
c3290b2d11 s/was/has been/ in !ping removal notice
Present perfect makes more sense here.
2015-05-27 15:09:29 +02:00
nyuszika7h
8c9561bbc3 Simplify notice about removal of !ping
I originally intended to amend @Vgr255's commit to include this, but I
screwed up, so here it is now. >_>
2015-05-27 15:06:39 +02:00
nyuszika7h
f97ca2cd8b Merge branch 'ping-removal' 2015-05-27 15:05:17 +02:00
Vgr E.Barry
fe1527eb3c Remove !ping and related commands
This replaces !ping, !away and !back with a dummy command that tells
people about !pingif.
2015-05-27 15:03:00 +02:00
Vgr E.Barry
9ecb95674b Allow lover to win with piper 2015-05-27 00:18:40 -04:00
Vgr E.Barry
d8ee335d58 Add missing individual win for pipers 2015-05-27 00:13:35 -04:00
Vgr E.Barry
ca5d77fa62 Fix inconsistent bold in revealroles 2015-05-27 00:06:53 -04:00
Vgr E.Barry
04c814ea16 ♪ come, children, come out to the forest ♫
This adds the new piper role, whose goal is to charm all the other
players to win. The charmed players are told who else is charmed, every
night, and must find out the piper and lynch him to win. The piper is a
win stealer, and takes precedence over monster. They can select either
one or two targets, but unless there is exactly one person left to be
charmed, they must pick two targets.
2015-05-27 00:06:40 -04:00
Vgr E.Barry
c49c2647d8 Small tweaks to the guardian game mode 2015-05-26 14:19:19 -04:00
Vgr E.Barry
d3134643c8 Add the "guardian" game mode 2015-05-25 19:57:31 -04:00
skizzerz
dddf32134e curses!
Adds "warlock" role, which is wolf-aligned and in wolfchat. They cannot
kill, but they get to turn someone into a cursed villager each night
(the curse remains in place for the rest of the game). If they act
quickly enough, they can even impact the seer or oracle for the current
night!
2015-05-25 14:01:41 -05:00
skizzerz
d00c15e19d meow
Added werekitten role, which is seen villager by seer and is always
missed when shot (even by sharpshooter!). They can still nom tasty
villagers at night, including pesky visiting harlots.

Also fix minor bug with alpha wolf being roleswapped where night may end
prematurely due to not removing their kill selection.
2015-05-25 14:01:41 -05:00
nyuszika7h
b90a3c74ed Add wiki link to !pingif help 2015-05-25 21:01:09 +02:00
nyuszika7h
e046358a62 Check if var.AFTER_FLASTGAME is not None instead of truthy or callable
If someone sets it to something other than a function (well, callable
object) or None, it's a programming mistake and we want that to raise an
exception rather than be silently ignored.
2015-05-24 23:14:43 +02:00
nyuszika7h
0c7d5a8a53 Fix previous commit 2015-05-24 23:09:08 +02:00
nyuszika7h
8d9729cc15 Trigger !faftergame if the game was canceled because of timeout 2015-05-24 23:07:23 +02:00
Vgr E.Barry
90321582de Change function name (prevent clash with built-in) 2015-05-24 12:20:51 -04:00
Vgr E.Barry
1af340a3cb Fix wrong revealroles message for driven away ghosts (fixes #141) 2015-05-24 12:18:15 -04:00
Vgr E.Barry
7cc9045181 Add missing docstrings to all commands 2015-05-24 12:17:58 -04:00
nyuszika7h
e714e4216c Send !revealroles output to channel if called in-channel in debug mode
This was broken by the previous commit.
2015-05-24 17:55:59 +02:00
nyuszika7h
6f64be45ed Notify users when they are not allowed to use !revealroles
Also, allow using it in-channel, but send the result to a private notice
if not using debug mode.
2015-05-24 17:22:52 +02:00
nyuszika7h
774aa50851 Fix dead vengeful ghost being able to !revealroles from alt connection 2015-05-24 17:12:03 +02:00
nyuszika7h
38aeba7029 Link to the wiki in the !ping deprecation notice 2015-05-23 19:17:23 +02:00
skizzerz
d22eb7ea0f Let reaper work in debug mode, and disable unused reaper features 2015-05-23 11:28:03 -05:00
skizzerz
70b0c33896 Fix up lovers winning 2015-05-23 11:11:39 -05:00
skizzerz
9161541c39 Fix derp in evilvillage win cond checking 2015-05-20 23:07:49 -05:00
nyuszika7h
729343bd0c Fix post-restart ping messed up by previous commit 2015-05-20 20:55:53 +02:00
nyuszika7h
b7ca9450fc Break long messages where players are pinged 2015-05-20 20:52:01 +02:00
nyuszika7h
8fb103fbf6 Clarify !ping/!away/!back deprecation message 2015-05-20 19:44:00 +02:00
jacob1
b698f2495a fix DISABLED_GAMEMODES still allowing !join votes 2015-05-20 11:29:02 -04:00
nyuszika7h
deb1e5ae40 away/back: Send pingif advertisement in notice if called in channel 2015-05-20 16:19:15 +02:00
nyuszika7h
fd0e6ed6d4 Merge pull request #136 from lykoss/pingif-advertisement
!pingif advertisement
2015-05-20 16:14:55 +02:00
nyuszika7h
24d7c1ed5a Add the ability to "disable" certain game modes
Players can't vote for disabled game modes, but they can still be forced
with !fgame.
2015-05-19 12:27:57 +02:00
Janik Kleinhoff
dfd9405fe6 !wait: use a token bucket
This makes up for removing the wait effect of !ping.
Default settings are one !wait every 240 seconds, initially two !wait
tokens, maximum (burst) of three tokens.
2015-05-17 22:39:59 +00:00
Janik Kleinhoff
f893d12cc6 !ping: advertise pingif 2015-05-17 20:38:05 +00:00
Janik Kleinhoff
6b99dafd1e !away, !back: advertise pingif 2015-05-17 20:38:05 +00:00
jacob1
01a49b9aeb more things in !myrole: assassin/clone target and whether you were bitten 2015-05-13 01:11:41 -04:00
jacob1
69b05f4a52 fix error when dead vengeful ghost uses !myrole 2015-05-13 00:39:33 -04:00
skizzerz
c0ea08edfc Remove amnesia, mode is both broken and superseded by random 2015-05-11 21:56:31 -05:00
skizzerz
9ef00a9ae3 Make revealroles split output intelligently 2015-05-10 22:17:21 -05:00
skizzerz
7fd98331f4 Make nobody win if all the safes and all the wolves die off at once in evilvillage 2015-05-10 17:52:54 -05:00
skizzerz
56f61c18eb Also make village win in evilvillage if there are no more cultists 2015-05-09 22:10:30 -05:00
skizzerz
9745e18d66 Evilvillage balance changes:
Make villagers win if they equal or outnumber wolfteam
Replace oracle with seer
Add a 12p tier
2015-05-09 21:24:58 -05:00
skizzerz
d6f89adbd0 Fix error with roles by doing default game mode properly, also make game modes inherit GameMode 2015-05-09 21:05:36 -05:00
skizzerz
ee9716feeb Evilvillage balance tweaks 2015-05-09 19:13:35 -05:00
skizzerz
abf1e1ddd6 Fix up evilvillage
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.
2015-05-09 12:19:31 -05:00
skizzerz
28f2dcebf8 Add event system with one sample event in chk_win
Further information on how this system works may be found on the wiki.
If there is no information on the wiki, poke woffle incessently until
there is.
2015-05-09 12:19:31 -05:00
skizzerz
b8fa7c3373 Set aleatoire minimum to 8p 2015-05-07 22:27:20 -05:00
Janik Kleinhoff
2aa9df07b9 !wiki: escape the query before building regex 2015-05-07 15:59:48 +00:00
skizzerz
a18cfca087 Let augur be cursed, since it doesn't make sense otherwise (they see through it, and det can also be cursed) 2015-04-29 21:56:04 -05:00
skizzerz
59a2247a12 Fix silenced ghost still killing (at random) 2015-04-28 20:47:53 -05:00
skizzerz
dc9196237c Fix end-of-game message for lycan
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).
2015-04-27 23:13:37 -05:00
nyuszika7h
f7af95405a fjoin: Remove stasis if it's 1 game, error otherwise 2015-04-20 20:46:18 +02:00
nyuszika7h
a6c4303e3e Don't ignore host stasis if user is identified 2015-04-20 20:46:18 +02:00
jacob1
c55b6703c5 don't allow fjoining users that aren't in the channel 2015-04-18 21:27:16 -04:00
jacob1
abbca6d167 fix bug where inchan is set to false when it shouldn't be (breaks nick tracking) 2015-04-18 18:58:24 -04:00
jacob1
2f0a827fe8 nyuszika7h fell into a river and was swept away. 2015-04-18 17:54:31 -04:00
jacob1
f3fd5b970c remove LEAVE_ON_LOGOUT setting, now enabled automatically when ACCOUNTS_ONLY is on
note: this setting seems to trigger when switching accounts also
2015-04-18 17:45:40 -04:00
jacob1
b35287f0a1 stasis is only added to accounts, not cloaks, when var.ACCOUNTS_ONLY is on
can still manually specify a host with !fstasis. Also when an account is stasised, it no longer hides the fact that the host might be stasised also
2015-04-16 13:12:50 -04:00
jacob1
f68ad397a8 don't ping a playing using an account of someone else with that account is already joined
I mostly made this to have it stop pinging my alt, mooo
2015-04-16 12:56:47 -04:00
jacob1
2b4895f34c don't allow fjoining unidentified players when var.ACCOUNTS_ONLY is on 2015-04-16 12:55:21 -04:00
nyuszika7h
1d77fc4a29 Revert "Ping joined players even if the bot was quit and restarted manually"
This reverts commit 1db767cafa.

This is actually rarely useful, and more often annoying, especially when
debugging.
2015-04-16 18:53:58 +02:00
nyuszika7h
4b01eb2990 notify_error: Don't send a duplicate message if DEV_CHANNEL is the current channel 2015-04-16 18:52:57 +02:00
nyuszika7h
cc3805f064 Don't ping unidentified users if ACCOUNTS_ONLY is enabled 2015-04-16 16:19:35 +02:00
nyuszika7h
c93ead1642 Remove rarely used constant 2015-04-16 16:17:42 +02:00
nyuszika7h
a03b585bde Fix minor oversight in commit baa3831 2015-04-16 16:17:42 +02:00
nyuszika7h
1db767cafa Ping joined players even if the bot was quit and restarted manually 2015-04-16 16:17:42 +02:00
nyuszika7h
4ab966fc06 Handle errors gracefully when pinging previously joined players 2015-04-16 16:17:42 +02:00
nyuszika7h
1de23dafb8 Unhook the initial WHO hooks after processing them
This fixes an issue where calling !ping or !admins would disable
accounts, because they unconditionally send a normal WHO request.
2015-04-16 16:17:42 +02:00
nyuszika7h
9479807852 Use separate hook IDs where using the same one doesn't make sense
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.
2015-04-16 16:16:07 +02:00
jacob1
cf096c20d0 fix !roles <gamemode> <playercount> not working, fix !roles random <playercount> working
Also add a message if there are no roles defined for a acertain player count instead of saying nothing
2015-04-07 21:33:47 -04:00
nyuszika7h
599ad45544 Reorganize imports 2015-04-07 12:01:59 +02:00
nyuszika7h
528e484937 Tweak "no players remaining" message
"Nobody wins." sounds awkward IMO, and it's quite obvious anyway.
2015-04-06 14:48:36 +02:00
nyuszika7h
f56e9344cf !time: Clarify game cancellation message 2015-04-06 13:39:01 +02:00
Ryan Schmidt
6bae3b9a3a Fix mad scientist message sometimes showing incorrect targets
Closes #124
2015-04-05 23:47:05 -05:00
jacob1
6097a58820 fix error when alpha wolf is only wolf and gunner tries shooting at night 2015-04-05 00:51:22 -04:00
Vgr E.Barry
3c5f742f74 Add loading print 2015-04-04 07:39:58 -04:00
Vgr E.Barry
0727fb317c Fix faulty import 2015-04-04 07:39:56 -04:00
Vgr E.Barry
378334478c Move files around and update references 2015-04-04 07:39:54 -04:00