Umlaut wrote:I don't much like the analogy to thinking of it as a programming language since that IMO is exactly what could lead to the kind of conceptual error that makes something like 2-Shot Townie sound plausible: how exactly would you program a machine to reject that while accepting Bulletproof Townie?
If you know about parsers (and if you do forgive me bc i'm going to sound rusty here), you could imagine a parser having types of words like "actionmodifier" and "genericmodifier" for 2-shot and bulletproof respectively, and a genericmodifier is a modifier that doesn't have to modify anything. Really bulletproof and ascetic act more like roles than modifiers. It's almost entirely arbitrary that they're classified as modifiers right now and honestly they should probably be reclassified as roles.
I do agree with this, though:
we don't actually have, nor do we need, a perfectly precise definition of 'normal' that decides all cases unambiguously.
I think *in theory* one could write a normal role parser; i think it'd be a bad idea, though, for various reasons. And you'd also run into a lot of cases where you have to make pretty arbitrary decisions.
The main case where this kind of thing actually matters is that it needs to be clear to a person who gets a role what it does, and in particular it should be clear whether that person is a veteran normal player (who might have strong notions of how the roles all work) or someone who's never played mafia before. It also needs to be clear from a role's name what it does, obviously so that if a role dies other people know what it does. This is why reviewer discretion is a useful catch-all.