Tags for totems and actions, solely used for succubus to force retracting negative actions on a succubus when they become entranced, as well as to prevent such actions after. This is an artefact of when people would stop being entranced if all succubi died, and as we don't have this mechanic anymore, we don't need all of this complication. We currently use beneficial for this purpose, although we do store actions with tags such as detrimental and info.
Succubus cannot exchange, for two reasons:
It was impossible to balance (due to the aforementioned former behaviour);
It was extremely hard/tricky to implement, due to all the code being scattered all around the place in src/wolfgame.py. Code has now been properly split into src/roles/succubus.py and is much easier to work with.
Players who don't vote alongside succubus die if the succubus's target doesn't die;
Entranced players die when succubus dies as well.
Succubus was added (alongside many other roles) in October of 2015 for the "sleepy" gamemode, and some bug and balance fixes were applied as time went on. However, with the codebase in a much better state than it was back then, I think it's time to standardize how the role works.
Suggestions (open to constructive criticism and feedback):
Make the succubus_visit listeners unconditionally retract any command done on the succubus, asking the user to re-target.
Remove the targeted_command listener in src/roles/succubus.py, allowing players to target succubi even with detrimental commands. We don't need to protect players against their own failures (but we do need to force-retract them, in case they are targeting a succubus with a command like kill, preventing night to end and having them basically locking themselves out of a win possibility; see also above point).
Get rid of tags altogether. The only purpose of them right now is to prevent players from targeting any succubi and locking themselves out of a win, which we shouldn't prevent.
Instantly inform entranced players of who all the succubi are, as they're all part of the same team.
Remove the can_exchange event, implement exchange_roles for succubus, and allow succubi to exchange like any other role. Entranced players should remain as they were.
Add a succubi-chat, similar to wolfchat but for all succubi and entranced players. This gets rid of some of the communication issues mentioned above, and allows better collaboration between those win stealers.
Don't kill players who didn't vote for the same target than the succubus.
Open questions:
- When exchagning, do we force the former succubus into an entranced player? Do we only force them into an entranced player if they exchange with an entranced player (which would be rare, seeing as the other player would need to target succubus with e.g. a totem to exchange).
Exchanging with succubus should always remove the new succubus from entranced players, but otherwise do nothing.
Feel free to chip in with changes to the suggestions or new ones, as well as what your thoughts are.
Current situation:
beneficial
for this purpose, although we do store actions with tags such asdetrimental
andinfo
.src/wolfgame.py
. Code has now been properly split intosrc/roles/succubus.py
and is much easier to work with.Succubus was added (alongside many other roles) in October of 2015 for the "sleepy" gamemode, and some bug and balance fixes were applied as time went on. However, with the codebase in a much better state than it was back then, I think it's time to standardize how the role works.
Suggestions (open to constructive criticism and feedback):
succubus_visit
listeners unconditionally retract any command done on the succubus, asking the user to re-target.targeted_command
listener insrc/roles/succubus.py
, allowing players to target succubi even with detrimental commands. We don't need to protect players against their own failures (but we do need to force-retract them, in case they are targeting a succubus with a command likekill
, preventing night to end and having them basically locking themselves out of a win possibility; see also above point).can_exchange
event, implementexchange_roles
for succubus, and allow succubi to exchange like any other role. Entranced players should remain as they were.Open questions:
- When exchagning, do we force the former succubus into an entranced player? Do we only force them into an entranced player if they exchange with an entranced player (which would be rare, seeing as the other player would need to target succubus with e.g. a totem to exchange).Exchanging with succubus should always remove the new succubus from entranced players, but otherwise do nothing.Feel free to chip in with changes to the suggestions or new ones, as well as what your thoughts are.