Open Call for Wiki Contributions

I think the category "Result" could instead be named "Players" and used to describe both the people who learn the results and those who are being targeted ("Targeting"). This category would contain various "selectors" that specify a person or a group of people, like:

  • Self() -- the player who performs the action
  • Role(?) -- pointer to a specific role in the game
  • Alignment(Alignment a) -- all players of a certain alignment
  • Everyone() -- all players in the game
  • Living() -- all living players, note that all previous selectors also include dead people
  • Dead() -- all dead players
  • Random(int n, Players p) -- n random players from the set returned by a selector
  • GroupInclusive(Players p1, Players p2, ...) -- groups a set of selectors together
  • GroupExclusive(Players p1, Players p2, ...) -- same as above, but only returns players selected by all given selectors

There are different ways in which the results can be revealed so I would make a separate category "Disclosure" for that. Each component would be able to single-handedly block the revelation.

  • Private() -- private messages, never blocks
  • Public() -- post in a thread, never blocks
  • Delayed(int n, bool cycles) -- delays revelation for n phases (if cycles is false) or day/night cycles (if cycles is true)
  • Conditional(Condition c) -- blocks revelation if the given condition is false

The basic component "Result" would then contain one component of type "Players" and an array of "Disclosure" components. A role could have multiple instances of a "Result" component, since different players may be getting results at different times and depending on different conditions.

A few examples:

  • Reveal a result to a random living townie: Result(Random(1, GroupExclusive(Living(), Alignment(Town))), [Private()])
  • --- to all players in a mafia sub: Result(Alignment(Mafia), [Public()])
  • --- to self, two cycles after the action: Result(Self, [Private(), Delayed(2, true)])

It's a bit mouthful, but I think it covers most possibilities.

Also, it'd be nice to have some logical operators implemented as "Conditional" components so that there is a way to combine conditions: And(x, y), Or(x, y), Xor(x, y), Not(x), etc.

/r/PloungeMafia Thread Parent