- Correctly logic out bite interacting with harlot, immunized, and lycan:
- A harlot that isn't home does not get bit and refunds the bite unless
they visit a wolfteam member or visit the unprotected wolves' victim
(in either of those cases, they get bit instead of dying)
- A lycan or someone with a lycanthropy totem that gets bitten
immediately turns to wolf and refunds the bite. The regular wolf kill
still happens too, so this is essentially a freebie for alpha wolf.
- An immunized target dies per normal, but the death from the bite does
not stack with the death from a normal wolf kill for the purposes of
protection (meaning a single protection will guard against both).
- Fix nightdone check so that night doesn't end prematurely if alpha
would be eligible to bite but has already done so previously in the
game.
- Always apply host-based allows/denies even in var.ACCOUNTS_ONLY is set
- Fix display of mixed-mode allows/denies for a particular user
- Make -acc and -host switches operate more intelligently on both the
bare command as well as when given an argument
I cannot reproduce the bug locally, but this will force the socket to
close if it didn't for whatever reason, which is what seems like could
have caused the issue.
Didn't remove players from var.DISCONNECTED, leading to idling out every 10 seconds and getting lots of stasis while still being in the game
Didn't actually check whether the player was in channel or not
- Make bite able to end night
- Bite was always working even if the target was immunized
- Ensure protection applies when killing a target that was
immunized-but-bitten
- 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 :)
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.
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.
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).
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
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`