Commit Graph

532 Commits

Author SHA1 Message Date
skizzerz
3cab412a9b Fix silenced VG causing day transition to error out 2015-06-15 16:44:45 -05: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
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
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
1d711b9cee s/!roles was disabled/!roles is disabled/ 2015-06-14 16:12:50 -04:00
Vgr E.Barry
28dc0a8e14 Fix corner case with multiple pipers 2015-06-14 12:06:52 -04: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
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
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
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
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
9dc52441e8 Fix some commands not working in alt channels 2015-06-04 19:37:12 -04: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
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
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
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
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
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
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
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
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
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
9ef00a9ae3 Make revealroles split output intelligently 2015-05-10 22:17:21 -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
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
Janik Kleinhoff
2aa9df07b9 !wiki: escape the query before building regex 2015-05-07 15:59:48 +00: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
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
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
378334478c Move files around and update references 2015-04-04 07:39:54 -04:00