54 Commits

Author SHA1 Message Date
skizzerz
6dd9c199fd Disable stats for noreveal, and make the 'no reveal' message more clear 2015-07-24 12:27:08 -05: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
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
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
9a0c96eab0 Fix comment in mad game mode 2015-07-15 18:18:09 +02: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
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
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
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
Vgr E.Barry
d8161271c7 Tweak template restrictions handling 2015-06-15 10:28:14 -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 77d1eda07478a566a45b022af61d51c84ac68279.

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
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
f3ab9b1512 Simplify some conditionals for valentines role attribution 2015-06-13 17:14:22 -04: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
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
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
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
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
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
Emanuel Barry
24851f3c56 Fix wrong pingif tables 2015-06-01 14:25:50 -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
338f24aa66 fix bug where players in var.DISCONNECTED couldn't use any commands (like !stats) 2015-05-28 21:01:34 -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
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
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
skizzerz
9161541c39 Fix derp in evilvillage win cond checking 2015-05-20 23:07:49 -05: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
skizzerz
c0ea08edfc Remove amnesia, mode is both broken and superseded by random 2015-05-11 21:56:31 -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