Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

!myrole: Reveal cursed status to wolfchat players #461

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions messages/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -1250,6 +1250,7 @@
"cat_land": "The cat lands on its [b]feet[/b].",
"vengeful_role": "You are {=vengeful ghost!role:article} {=vengeful ghost!role:bold} who is against the {0!role:bold:plural}.",
"show_role": "You are {0!role:article} {0!role:bold}.",
"show_role_cursed": "You are {=cursed villager!role:article} {=cursed villager!role:bold} {0!role:bold}.",
"original_wolves": "Original wolves: {0:join}",
"assassin_targeting": "You are {=assassin!role:article} {=assassin!role:bold} and targeting {0}.",
"assassin_no_target": "You are {=assassin!role:article} {=assassin!role:bold} and do not currently have a target.",
Expand Down
8 changes: 7 additions & 1 deletion src/wolfgame.py
Original file line number Diff line number Diff line change
Expand Up @@ -3046,7 +3046,13 @@ def myrole(var, wrapper, message):
return
role = evt.data["role"]

wrapper.pm(messages["show_role"].format(role))
badguys = get_all_players(Wolfchat)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not accurate if var.RESTRICT_WOLFCHAT is configured, see src/roles/helper/wolves.py lines 354-359. Note also that warlock always sees cursed even if they aren't in wolfchat, so should be explicitly listed as well.

If you're sticking with getting all players with those roles instead of just keeping it as a set of roles, add appropriate checks to ensure the role exists (see below comment). get_all_players with a role that doesn't exist in the bot will error. It is always safe to call it with role categories; the issues only occur if you try to hardcode certain roles in there (such as warlock).

cursed = get_all_players(("cursed villager",))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
cursed = get_all_players(("cursed villager",))
cursed = get_all_players(("cursed villager",)) if "cursed villager" in All else set()

It is possible for the cursed villager role to not exist if the bot admin is using custom roles without importing the built-in ones. src/roles/helper/wolves.py has a similar check (line 367-370) so we should check that here too.


if wrapper.source in badguys and wrapper.source in cursed:
wrapper.pm(messages["show_role_cursed"].format(role))
else:
wrapper.pm(messages["show_role"].format(role))

for msg in evt.data["messages"]:
wrapper.pm(msg)
Expand Down