pokemon-showdown/chat-plugins/mafia-data.js
2018-09-12 13:38:14 -04:00

2108 lines
70 KiB
JavaScript

'use strict';
/** @typedef {{name: string, plural: string, id: string, color?: string, buttonColor?: string, memo: string[], image?: string}} MafiaAlignment */
/** @typedef {{[k: string]: MafiaAlignment | string}} MafiaAlignments */
/** @typedef {{name: string, id: string, memo: string[], alignment?: string, image?: string}} MafiaRole */
/** @typedef {{[k: string]: MafiaRole | string}} MafiaRoles */
/** @typedef {{name: string, id: string, memo: string[]}} MafiaModifier */
/** @typedef {{[k: string]: MafiaModifier | string}} MafiaModifiers */
/** @typedef {{name: string, desc: string, [k: number]: string}} MafiaTheme */
/** @typedef {{[k: string]: MafiaTheme | string}} MafiaThemes */
/** @typedef {{name: string, roles: string[], picks: string[], choices: number}} MafiaIDEA */
/** @typedef {{[k: string]: MafiaIDEA | string}} MafiaIDEAs */
/** @type {MafiaAlignments} */
const alignments = {
// Do not add Mafia variants, unless they are supported in a major theme (Werewolves, Replicants).
// Do not add Solo alignments.
town: {
name: `Town`,
plural: `Town`,
id: `town`,
color: `#060`,
buttonColor: `#0A0`,
memo: [`You are aligned with the <span style="color:#060;font-weight:bold">Town</span>. You win when all threats to the Town are eliminated and at least one Town-aligned player is still alive, or nothing can prevent the same.`],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-villager.png"/>`,
},
mafia: {
name: `Mafia`,
plural: `Mafia`,
id: `mafia`,
color: `#F00`,
memo: [
`Factional Communication: If there are other Mafia-aligned players, you may PM them during the game.`,
`Factional Kill: The Mafia may kill one player per night.`,
`You are aligned with the <span style="color:#F00;font-weight:bold">Mafia</span>. You win when all players without a Mafia wincon are eliminated and at least one Mafia-aligned player is still alive (or nothing can prevent the same).`,
],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-mafia.png"/>`,
},
werewolf: {
name: `Werewolf`,
plural: `Werewolves`,
id: `werewolf`,
color: `#FFA500`,
memo: [
`Factional Communication: If there are other Werewolf-aligned players, you may PM them during the game.`,
`Factional Kill: The Werewolves may kill one player per Night.`,
`You are aligned with the <span style="color:#FFA500;font-weight:bold">Werewolves</span>. You win when all players without a Werewolf wincon are eliminated and at least one Werewolf-aligned player is still alive (or nothing can prevent the same).`,
],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-werewolf.png"/>`,
},
alien: {
name: `Alien`,
plural: `Aliens`,
id: `alien`,
color: `#F0F`,
memo: [
`Factional Communication: If there are other Alien-aligned players, you may PM them during the game.`,
`Factional Kill: The Aliens may kill one player <span style="text-decoration:underline">once during the game</span>.`,
`You are aligned with the <span style="color:#F0F;font-weight:bold">Aliens</span>. You win when all players without a Alien wincon are eliminated and at least one Alien-aligned player is still alive (or nothing can prevent the same).`,
],
// TODO image for alien faction
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-villager.png"/>`,
},
cult: {
name: `Cult`,
plural: `Cultists`,
id: `cult`,
color: `#000`,
memo: [
`Factional Communication: If there are other Cult-aligned players, you may PM them during the game.`,
`Factional Concept: The Cult can recruit other players into the Cult more often than not. Ask the Host for more information about how this works exactly.`,
`You are aligned with the <span style="color:#000;font-weight:bold">Cult</span>. You win when all players without a Cult wincon are eliminated and at least one Cult-aligned player is still alive (or nothing can prevent the same).`,
],
// TODO image for cult faction
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-villager.png"/>`,
},
cultafia: {
name: `Cultafia`,
plural: `Cultafia`,
id: `cultafia`,
color: `#600`,
memo: [
`Factional Communication: If there are other Cultafia-aligned players, you may PM them during the game.`,
`Factional Concept: The Cultafia can recruit and kill players. Ask the Host for more information about how this works exactly.`,
`You are aligned with the <span style="color:#600;font-weight:bold">Cultafia</span>. You win when all players without a Cultafia wincon are eliminated and at least one Cultafia-aligned player is still alive (or nothing can prevent the same).`,
],
// TODO image for cult faction
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-villager.png"/>`,
},
goo: {
name: `Goo`,
plural: `Goos`,
id: `goo`,
color: `#2FF`,
memo: [
`Factional Communication: If there are other Goo-aligned players, you may PM them during the game.`,
`Factional Concept: Goos have interesting Reflexive abilities to aid them more often than not.`,
`You are aligned with the <span style="color:#2FF;font-weight:bold">Goos</span>. You win when all players without a Goo wincon are eliminated and at least one Goo-aligned player is still alive (or nothing can prevent the same).`,
],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-villager.png"/>`,
},
replicant: {
name: `Replicant`,
plural: `Replicants`,
id: `replicant`,
color: `#DDD`,
memo: [
`Factional Communication: If there are other Replicant-aligned players, you may PM them during the game.`,
`Factional Kill: The Replicants may kill one player per night.`,
`You are aligned with the <span style="color:#DDD;font-weight:bold">Replicants</span>. You win when all players without a Replicant wincon are eliminated and at least one Replicant-aligned player is still alive (or nothing can prevent the same).`,
],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-villager.png"/>`,
},
mime: {
name: `Mime`,
plural: `Mimes`,
id: `mime`,
color: `#A6B`,
memo: [
`Factional Communication: If there are other Mime-aligned players, you may PM them during the game.`,
`Factional Roleblock: The Mimes may roleblock one player per night.`,
`You are aligned with the <span style="color:#A6B;font-weight:bold">Mimes</span>. You win when all players with a Mime wincon have been lynched.`,
],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-villager.png"/>`,
},
arsonist: {
name: `Arsonist`,
plural: `Arsonists`,
id: `arsonist`,
color: `#E82`,
memo: [
`Factional Communication: If there are other Arsonist-aligned players, you may PM them during the game.`,
`Factional Actions: The Arsonists may together use one factional action a night.`,
`Factional Prime: The Arsonists prime someone by dousing them with gasoline.`,
`Factional Ignite: The Arsonists light all previously primed players on fire, killing them.`,
`You are aligned with the <span style="color:#E82;font-weight:bold">Arsonists</span>. You win when all players without an Arsonist wincon are eliminated and at least one Arsonist-aligned player is still alive (or nothing can prevent the same).`,
],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-villager.png"/>`,
},
pygmee: {
name: `Pygmee`,
plural: `Pygmees`,
id: `pygmee`,
color: `#640`,
memo: [
`Factional Knowledge: If there are other Pygmee-aligned players, you know who they are.`,
`Factional Kill: The Pygmees may attempt to kill someone at any moment.`,
`You are aligned with the <span style="color:#640;font-weight:bold">Pygmees</span>. You win when all players without a Pygmee wincon are eliminated and at least one Pygmee-aligned player is still alive (or nothing can prevent the same).`,
],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-villager.png"/>`,
},
// Will be added in SI soon.
hypnotist: {
name: `Hypnotist`,
plural: `Hypnotists`,
id: `hypnotist`,
color: `#A26`,
memo: [
`Factional Communication: If there are other Hypnotist-aligned players, you may PM them during the game.`,
`Factional Hypnotise: The Hypnotists can hypnotise another player every night. For the next day only, this player gains an additional win-condition of lynching another player specified by the Hypnotists.`,
`You are aligned with the <span style="color:#A26;font-weight:bold">Hypnotists</span>. You win when all players without a Hypnotist wincon are eliminated and at least one Hypnotist-aligned player is still alive (or nothing can prevent the same).`,
],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-villager.png"/>`,
},
solo: {
// Special alignment for all roles that are on their own.
name: `Solo`,
plural: `Solos`,
id: `solo`,
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-goon.png"/>`,
memo: [],
},
};
/** @type {MafiaRoles} */
const roles = {
// active abilities and alignment indicating abilities
vt: `villager`,
vanilla_townie: `villager`,
vanillager: `villager`,
villy: `villager`,
townie: `villager`,
villager: {
name: `Villager`,
id: `villager`,
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-villager.png"/>`,
memo: [`Vanilla Townie: Town player without any additional abilities.`],
},
goon: {
name: `Goon`,
id: `goon`,
memo: [`Goon: Mafia player without any additional abilities.`],
},
assassin: {
name: `Assassin`,
id: `assassin`,
memo: [`Assassin (Assassin in the Court): Wins when the King dies. Can shoot another player publicly once a game, but loses if this wasn't the King.`],
},
baby_monarch: {
name: `Baby Monarch`,
id: `babymonarch`,
memo: [`Baby Monarch: Turns into a Monarch at the start of Day 4. It is announced that someone has turned into a Monarch.`],
},
babysitter: {
name: `Babysitter`,
id: `babysitter`,
memo: [`Babysitter: During the Night, you may PM the host the name of another player. This player will be protected from all nightkills for that Night, but if the Babysitter dies, its target will die too.`],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-doctor.png"/>`,
},
black_goo: {
name: `Black Goo`,
id: `blackgoo`,
alignment: `town`,
memo: [`Black Goo: Anyone who targets you will join the Cult.`],
},
blacksmith: {
name: `Blacksmith`,
id: `blacksmith`,
memo: [`Blacksmith: During the Day, you may PM the host the name of another player. This player will be protected from one kill that day.`],
},
bh: `bloodhound`,
bloodhound: {
name: `Bloodhound`,
id: `bloodhound`,
memo: [`Bloodhound: Each night you can PM the host the name of another player. You will be told if they are TOWN or NOT TOWN, or receive NO RESULT if your investigation failed.`],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-cop.png"/>`,
},
bloodsucker: {
name: `Bloodsucker`,
id: `bloodsucker`,
memo: [`Bloodsucker: Each night you can PM the host the name of another player. This player will die and become a Treestump.`],
},
bg: `bodyguard`,
bodyguard: {
name: `Bodyguard`,
id: `bodyguard`,
memo: [`Bodyguard: During the Night, you may PM the host the name of another player. This player will be protected from all nightkills for that Night, but the Bodyguard will be killed instead.`],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-doctor.png"/>`,
},
busdriver: {
name: `Bus Driver`,
id: `busdriver`,
memo: [`Bus Driver: During the Night, you may PM the host the names of the two players. People who targeted either of these players will instead target the other one.`],
},
chameleon_goo: {
name: `Chameleon Goo`,
id: `chameleongoo`,
alignment: `goo`,
memo: [`Chameleon Goo: Anyone who targets you will join the Cult. You are a Mason, and will die after Night 2. There is no way to stop this death.`],
},
commuter: {
name: `Commuter`,
id: `commuter`,
memo: [`Commuter: During the Night, you may PM the host that you want to commute. No other player will be able to target you this night.`],
},
conspiracy_theorist: {
name: `Conspiracy Theorist`,
id: `conspiracytheorist`,
memo: [`Conspiracy Theorist: Each night you can PM the host the name of another player. You will be told if they are ALIEN or NOT ALIEN, or receive NO RESULT if your investigation failed. Additionally, you will always be inspected as an ALIEN when possible.`],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-cop.png"/>`,
},
// Above cop so it gets checked first
role_cop: {
name: `Role Cop`,
id: `rolecop`,
memo: [`Role Cop: Each night you can PM the host the name of another player. You will be told their exact role, or NO RESULT if your investigation failed.`],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-cop.png"/>`,
},
cop: {
name: `Cop`,
id: `cop`,
memo: [`Cop: Each night you can PM the host the name of another player. You will be told if they are MAFIA or NOT MAFIA, or receive NO RESULT if your investigation failed.`],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-cop.png"/>`,
},
coat: `cop-of-all-trades`,
cop_of_all_trades: `cop-of-all-trades`,
'cop-of-all-trades': {
name: `Cop-of-all-Trades`,
id: `copofalltrades`,
memo: [`Cop-of-all-Trades: You may use the actions of a Cop, a Seer, an FBI Agent, a Conspiracy Theorist, and a Private Investigator once a game each.`],
},
coroner: `coronereternalsun`,
coroneresun: `coronereternalsun`,
coroner_esun: `coronereternalsun`,
coroner_eternal_sun: `coronereternalsun`,
coronereternalsun: {
name: `Coroner (Eternal Sun)`,
id: `coronereternalsun`,
memo: [`Coroner: When any player dies, you will be PMd which role they were. Note: Check 'Coroner CI' for information about Coroners in Cracking Idea.`],
},
coroner_ci: `coronercrackingidea`,
coronerci: `coronercrackingidea`,
coroner_cracking_idea: `coronercrackingidea`,
coronercrackingidea: {
name: `Coroner (Cracking Idea)`,
id: `coronercrackingidea`,
memo: [`Coroner: Each night you can PM the host the name of another (dead) player. You learn the role(s) of the player who killed them, but not who this role belongs to. This also works when your target dies the night you used it.`],
},
cupid: {
name: `Cupid`,
id: `cupid`,
memo: [`Cupid: At Night One you can PM the host the name of another player. Every other player who targeted the target becomes Lovers with the target.`],
},
desperado: {
name: `Desperado`,
id: `desperado`,
memo: [`Desperado: At Night, you can PM the host the name of another player. You will kill this player if they're not aligned with the TOWN, but you will die if they are.`],
},
doc: `doctor`,
doctor: {
name: `Doctor`,
id: `doctor`,
memo: [`Doctor: During the Night, you may PM the host the name of another player. This player will be protected from all nightkills for that Night.`],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-doctor.png"/>`,
},
drookez: {
name: `Drookez`,
id: `drookez`,
memo: [`Drookez: You are a Deathproof Mafia's Child Lover. This means that your role is revealed at the start of the game and that you can't die unless your Lover dies.`],
},
fbi_agent: {
name: `FBI Agent`,
id: `fbiagent`,
memo: [`FBI Agent: Each night you can PM the host the name of another player. You will be told if they are SERIAL KILLER or NOT SERIAL KILLER, or receive NO RESULT if your investigation failed.`],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-cop.png"/>`,
},
firefighter: {
name: `Firefighter`,
id: `firefighter`,
memo: [`Firefighter: During the Night, you may PM the host the name of another player. This player can't be primed by an Arsonist that night.`],
},
fruit_vendor: {
name: `Fruit Vendor`,
id: `fruitvendor`,
memo: [`Fruit Vendor: During the Night, you may PM the host the name of another player. This player will receive fruit.`],
},
gladiator: {
name: `Gladiator`,
id: `gladiator`,
memo: [`Gladiator: During the Night, you may PM the host the names of two players. These two players will be the only two who can be lynched the next day, assuming both of them are alive at the end of the night.`],
},
goomaker: {
name: `Goomaker`,
id: `goomaker`,
memo: [`Goomaker: During the Night, you may PM the host the name of another player. This player will take on the Black Goo ability.`],
},
governor: {
name: `Governor`,
id: `governor`,
memo: [`Governor: At the end of each day, the Governor can decide whether the person who would be lynched will die or not.`],
},
gray_goo: {
name: `Gray Goo`,
id: `graygoo`,
alignment: `goo`,
memo: [`Gray Goo: Anyone who targets you will join the Cult. You will die after Night 2. There is no way to stop this death.`],
},
guard: {
name: `Guard`,
id: `guard`,
memo: [`Guard (Assassin in the Court): You get to know the identity of the King at the start of the game.`],
},
gunsmith: {
name: `Gunsmith`,
id: `gunsmith`,
memo: [`Gunsmith: Once per day or night, you can PM the name of a player to the host. This player will receive a gun, which they can kill someone with that day (if given at day) or the next day (if given at night).`],
},
hider: {
name: `Hider`,
id: `hider`,
memo: [`Hider: During the Night, you may PM the host the name of another player. You will not be able to be targeted that night, but if the person you targeted died or is not aligned with the TOWN, you die.`],
},
innocent_child: {
name: `Innocent Child`,
id: `innocentchild`,
memo: [`Innocent Child: At any point during the game, you may PM the host to reveal you as TOWN publicly.`],
},
joat: `jack-of-all-trades`,
jack_of_all_trades: `jack-of-all-trades`,
'jack-of-all-trades': {
name: `Jack-of-all-Trades`,
id: `jackofalltrades`,
memo: [`Jack-of-all-Trades: You may use the actions of a Cop, a Roleblocker, and a Doctor once a game each.`],
},
jk: `jailkeeper`,
jailkeeper: {
name: `Jailkeeper`,
id: `jailkeeper`,
memo: [`Jailkeeper: During the Night, you may PM the host the name of another player. This player will be protected from all nightkills for that Night and won't be able to use an action that Night.`],
},
janitor: {
name: `Janitor`,
id: `janitor`,
memo: [`Janitor: Whenever a player dies, the Janitor can decide whether or not their role gets revealed.`],
},
jester: {
name: `Jester`,
id: `jester`,
memo: [`Jester: You are aligned with yourself. You win if you get lynched at any point during the game.`],
},
journalist: {
name: `Journalist`,
id: `journalist`,
memo: [`Journalist: Each night, you can PM the host the name of a player. When you die, all players you inspected will be publicly revealed as TOWN or NOT TOWN.`],
},
judas: {
name: `Judas`,
id: `judas`,
memo: [`Judas: You start off aligned with the TOWN, but when you get lynched for the first time you don't die. Instead, you become aligned with the MAFIA.`],
},
king: {
name: `King`,
id: `king`,
memo: [`King (Assassin in the Court): The Assassin wins if you die. The Guards know your identity.`],
},
kingmaker: {
name: `Kingmaker`,
id: `kingmaker`,
memo: [`Kingmaker: Each night, you can PM the host the name of a player. The next day this person, if alive, will decide the lynch for that day.`],
},
lyncher: {
name: `Lyncher`,
id: `lyncher`,
memo: [`Lyncher: You win when you get a specific player lynched.`],
},
millermaker: {
name: `Millermaker`,
id: `millermaker`,
memo: [`Millermaker: Each night, you can PM the host the name of a player. This player will permanently show up as guilty to investigative role.`],
},
monarch: {
name: `Monarch`,
id: `monarch`,
memo: [`Monarch: You are Bulletproof, Unlynchable and a Day Vigilante. However, all these abilities go away when any one of them has been activated.`],
},
vanilla_cop: `neapolitan`,
neapolitan: {
name: `Neapolitan`,
id: `neapolitan`,
memo: [`Neapolitan: Each night, you can PM the host the name of a player. You will be told if they are VANILLA or NOT VANILLA, or receive NO RESULT if your investigation failed.`],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-cop.png"/>`,
},
backup_doctor: `nurse`,
nurse: {
name: `Nurse`,
id: `nurse`,
memo: [`Nurse: When a Doctor dies, you will become a Doctor instead.`],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-doctor.png"/>`,
},
nymphomaniac: {
name: `Nymphomaniac`,
id: `nymphomaniac`,
memo: [`Nymphomaniac: Has to PM the host the name of a player Night 1. You will become Lovers with this player.`],
},
one_shot_townie: {
name: `One Shot Townie`,
id: `oneshottownie`,
memo: [`One Shot Townie: Starts out as a Town player. Turns into a Survivor at the start of Day 2.`],
},
oracle: {
name: `Oracle`,
id: `oracle`,
memo: [`Oracle: Each night, you can PM the host the name of a player. When you die, you'll publicly reveal this player's role, until you've chosen a different player.`],
},
parrot: `parrot_role`,
wereparrot: `parrot_role`,
parrot_role: {
name: `Parrot Role`,
id: `parrotrole`,
memo: [`Parrot Role: Each night, you can PM the host the name of a player. If they have an active ability, you use this ability on them.`],
},
politician: {
name: `Politician`,
id: `politician`,
memo: [`Politician: Each night, you can PM the host the name of two players. You give the vote of the former player to the latter player for the next day.`],
},
hooker: `pretty_lady`,
pl: `pretty_lady`,
pretty_lady: {
name: `Pretty Lady`,
id: `prettylady`,
memo: [`Pretty Lady: During the Night, you may PM the host the name of another player. This player won't be able to use an action this Night. If you target a Werewolf performing a kill, you redirect its kill onto you.`],
},
pi: `private_investigator`,
private_investigator: {
name: `Private Investigator`,
id: `privateinvestigator`,
memo: [`Private Investigator: Each night you can PM the host the name of another player. You will be told if they are CULT or NOT CULT, or receive NO RESULT if your investigation failed.`],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-cop.png"/>`,
},
prober: {
name: `Prober`,
id: `prober`,
memo: [`Prober: Each night you can PM the host the name of another player. You will be told if they are WEREWOLF or NOT WEREWOLF, or receive NO RESULT if your investigation failed. Additionally, this player can't perform a night action that night.`],
},
pseudojester: {
name: `Pseudojester`,
id: `pseudojester`,
memo: [`Pseudojester: You are only able to win if you get lynched. You will be aligned with the player who placed the last lynch.`],
},
pseudolyncher: {
name: `Pseudolyncher`,
id: `pseudolyncher`,
memo: [`Pseudolyncher: You are only able to win if you get your target lynched. You will be aligned with the alignment of this player.`],
},
psychiatrist: {
name: `Psychiatrist`,
id: `psychiatrist`,
memo: [`Psychiatrist: During the Night, you may PM the host the name of another player. If this player is a Serial Killer, they will be converted to a Vanilla Townie.`],
},
mass_redirector: `psychomagnet`,
psychomagnet: {
name: `Psychomagnet`,
id: `psychomagnet`,
memo: [`Psychomagnet: During the Night, you may PM the host the name of another player. All other actions used that Night will target this player instead.`],
},
reloader: {
name: `Reloader`,
id: `reloader`,
memo: [`Reloader: During the Night, you may PM the host the name of another player. If this player has used an X-Shot action, they regain their shot, allowing them to use the action again.`],
},
recruiter: {
name: `Recruiter`,
id: `recruiter`,
memo: [`Recruiter: During the Night, you may PM the host the name of another player. This player will be recruited to your own alignment.`],
},
red_goo: {
name: `Red Goo`,
id: `redgoo`,
alignment: `goo`,
memo: [`Red Goo: Once a game, you may PM the host the name of another player at night. This player will unstoppably die. It is announced that a Red Goo performed this kill.`],
},
redirector: {
name: `Redirector`,
id: `redirector`,
memo: [`Redirector: During the Night, you may PM the host the names of two other players. The former player will target the latter player instead.`],
},
roleblocker: {
name: `Roleblocker`,
id: `roleblocker`,
memo: [`Roleblocker: During the Night, you may PM the host the name of another player. This player won't be able to use an action this Night.`],
},
suppressor: `rolestopper`,
rolestopper: {
name: `Rolestopper`,
id: `rolestopper`,
memo: [`Rolestopper: Each night you can PM the host the name of another player. All other actions on this player will fail, excluding kills.`],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-doctor.png"/>`,
},
saulus: {
name: `Saulus`,
id: `saulus`,
memo: [`Saulus: You start off aligned with the MAFIA, but when you get lynched for the first time you don't die. Instead, you become aligned with the TOWN.`],
},
seer: {
name: `Seer`,
id: `seer`,
memo: [`Seer: During the Night, you may PM the host the name of another player. You will be told if they are WEREWOLF or NOT WEREWOLF, or receive NO RESULT if your investigation failed.`],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-cop.png"/>`,
},
seraph_knight: {
name: `Seraph Knight`,
id: `seraphknight`,
memo: [`Seraph Knight: Once a game, you may PM the host the name of another player at night. This player will not be able to be killed at night until you die.`],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-doctor.png"/>`,
},
sk: `serial_killer`,
serial_killer: {
name: `Serial Killer`,
id: `serialkiller`,
memo: [`Serial Killer: You are aligned with yourself and win when you are the last player standing. During the Night, you may PM the host the name of another player. This player will die.`],
},
silencer: {
name: `Silencer`,
id: `silencer`,
memo: [`Silencer: During the Night, you may PM the host the name of another player. This player will not be able to talk during the next day. Ask the host whether this player will be able to lynch or not.`],
},
kamikaze_pilot: `suicide_bomber`,
suicide_bomber: {
name: `Suicide Bomber`,
id: `suicidebomber`,
memo: [`Suicide Bomber: During the Night, you may PM the host the name of another player. This player will be killed, but you will die as well.`],
},
survivor: {
name: `Survivor`,
id: `survivor`,
memo: [`Survivor: You are aligned with yourself. You win when you are alive when the game ends.`],
},
sympathiser: {
name: `Sympathiser`,
id: `sympathiser`,
memo: [`Sympathiser: You are aligned with a specified alignment when there are other players of this alignment in the game. Otherwise, you are TOWN.`],
},
tourist: {
name: `Tourist`,
id: `tourist`,
memo: [`Tourist: During the Night, you have to PM the host the name of another player. You'll target this player, without any additional affect.`],
},
tracker: {
name: `Tracker`,
id: `tracker`,
memo: [`Tracker: During the Night, you may PM the host the name of another player. You will be told who, if anyone, this player targeted.`],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-cop.png"/>`,
},
traitor: {
name: `Traitor`,
id: `traitor`,
memo: [`Traitor: You are aligned with the MAFIA, but are not able to perform the factional kill, and do not know the other members of the Mafia.`],
},
unblocker: {
name: `Unblocker`,
id: `unblocker`,
memo: [`Unblocker: During the Night, you may PM the host the name of another player. Their action will not fail.`],
},
underdog: {
name: `Underdog`,
id: `underdog`,
memo: [`Underdog: You are aligned with yourself. You start out as a Survivor, but turn into the alignment of the first player to die during a day when they die.`],
},
unjester: {
name: `Unjester`,
id: `unjester`,
memo: [`Unjester: You are aligned with yourself. You win when you are killed.`],
},
unlyncher: {
name: `Unlyncher`,
id: `unlyncher`,
memo: [`Unlyncher: You are aligned with yourself. To win, you must make sure a specific player is never lynched during the game.`],
},
vanillaiser: {
name: `Vanillaiser`,
id: `vanillaiser`,
memo: [`Vanillaiser: During the Night, you may PM the host the name of another player. Starting the next day, this player will lose any role they have, turning into a Vanilla role.`],
},
vig: `vigilante`,
vigilante: {
name: `Vigilante`,
id: `vigilante`,
memo: [`Vigilante: During the Night, you may PM the host the name of another player. This player will be killed.`],
},
watcher: {
name: `Watcher`,
id: `watcher`,
memo: [`Watcher: During the Night, you may PM the host the name of another player. You will be told who, if anyone, targeted this player.`],
image: `<img width="75" height="75" src="//play.pokemonshowdown.com/fx/mafia-cop.png"/>`,
},
};
/** @type {MafiaModifiers} */
const modifiers = {
// passive abilities
active: {
name: `Active`,
id: `active`,
memo: [`Active: You can choose when to activate your role.`],
},
alpha: {
name: `Alpha`,
id: `alpha`,
memo: [`Alpha: You will be inspected as NOT WEREWOLF.`],
},
ascetic: {
name: `Ascetic`,
id: `ascetic`,
memo: [`Ascetic: Actions on you will fail, excluding kills.`],
},
bp: `bulletproof`,
bulletproof: {
name: `Bulletproof`,
id: `bulletproof`,
memo: [`Bulletproof: You cannot be nightkilled.`],
},
clairvoyant: {
name: `Clairvoyant`,
id: `clairvoyant`,
memo: [`Clairvoyant: You get to know how many different alignments are in the game.`],
},
compulsive: {
name: `Compulsive`,
id: `compulsive`,
memo: [`Compulsive: You must your use action each night.`],
},
cck: `compulsive_child_killer`,
compulsive_child_killer: {
name: `Compulsive Child Killer`,
id: `compulsivechildkiller`,
memo: [`Compulsive Child Killer: Whenever an Innocent Child (or a variation of one) reveals itself, you will immediately kill them.`],
},
contrary: {
name: `Contrary`,
id: `contrary`,
memo: [`Contrary: Your action only succeeds when it'd fail without this modifier.`],
},
day: {
name: `Day`,
id: `day`,
memo: [`Day: You have to use your action during the Day.`],
},
death: {
name: `Death`,
id: `death`,
memo: [`Death: You can use your action upon dying.`],
},
deathproof: {
name: `Deathproof`,
id: `deathproof`,
memo: [`Deathproof: You can't die.`],
},
doppelganger: {
name: `Doppelganger`,
id: `doppelganger`,
memo: [`Doppelganger: All investigative actions on you return results for the target on the left of you on the userlist.`],
},
enabler: {
name: `Enabler`,
id: `enabler`,
memo: [`Enabler: When you die, a certain role can't be used anymore.`],
},
evangelistic: {
name: `Evangelistic`,
id: `evangelistic`,
memo: [`Evangelistic: You will be inspected as CULT.`],
},
friend: {
name: `Friend`,
id: `friend`,
memo: [`Friend: Besides your normal win-condition, you can win when only Friends are left alive. You can talk to other Friends.`],
},
godfather: {
name: `Godfather`,
id: `godfather`,
memo: [`Godfather: You will be inspected as NOT MAFIA.`],
},
gravedigger: {
name: `Gravedigger`,
id: `gravedigger`,
memo: [`Gravedigger: You will return as if you targeted the player who died to Watchers and Trackers.`],
},
haunting: {
name: `Haunting`,
id: `haunting`,
memo: [`Haunting: You can only use your actions after you've died.`],
},
hero: {
name: `Hero`,
id: `hero`,
memo: [`Hero: When a King (from Kingmaker) tries to execute you, they die instead.`],
},
hirsute: {
name: `Hirsute`,
id: `hirsute`,
memo: [`Hirsute: You will be inspected as WEREWOLF.`],
},
lightning_rod: {
name: `Lightning Rod`,
id: `lightningrod`,
memo: [`Lightning Rod: All actions target you.`],
},
lover: {
name: `Lover`,
id: `lover`,
memo: [`Lover: You get a Lover partner, who you can talk with. If either of you dies, the other dies as well.`],
},
lynchbait: {
name: `Lynchbait`,
id: `lynchbait`,
memo: [`Lynchbait: All Lynchers win when you get lynched.`],
},
macho: {
name: `Macho`,
id: `macho`,
memo: [`Macho: You cannot be protected from being killed.`],
},
mason: {
name: `Mason`,
id: `mason`,
memo: [`Mason: You can speak to other Masons, who are confirmed to not be members of the MAFIA.`],
},
doublevoter: `mayor`,
mayor: {
name: `Mayor`,
id: `mayor`,
memo: [`Mayor: Your lynch counts as two.`],
},
miller: {
name: `Miller`,
id: `miller`,
memo: [`Miller: You will always be inspected as MAFIA.`],
},
monk: {
name: `Monk`,
id: `monk`,
memo: [`Monk: You can speak to other Monks, who are confirmed to not be WEREWOLVES.`],
},
named: {
name: `Named`,
id: `named`,
memo: [`Named: You got a different role name than usual.`],
},
neighbor: {
name: `Neighbor`,
id: `neighbor`,
memo: [`Neighbor: You can talk to other Neighbors.`],
},
midnight: `night`,
night: {
name: `Night`,
id: `night`,
memo: [`Night: You have to use your action during the Night.`],
},
ninja: {
name: `Ninja`,
id: `ninja`,
memo: [`Ninja: Trackers, Watchers and similar roles will always get it as if you targeted nobody, or nobody targeted you.`],
},
omniscient: {
name: `Omniscient`,
id: `omniscient`,
memo: [`Omniscient: You know all roles that are present in the setup.`],
},
pacifist: {
name: `Pacifist`,
id: `pacifist`,
memo: [`Pacifist: You are unable to kill.`],
},
pgo: `paranoid_gun_owner`,
paranoid_gun_owner: {
name: `Paranoid Gun Owner`,
id: `paranoidgunowner`,
memo: [`Paranoid Gun Owner: You kill anyone who targets you.`],
},
passive: {
name: `Passive`,
id: `passive`,
memo: [`Passive: You cannot choose when to activate your role.`],
},
psychotrooper: {
name: `Psychotrooper`,
id: `psychotrooper`,
memo: [`Psychotrooper: All investigative results are reversed while you are alive.`],
},
random: {
name: `Random`,
id: `random`,
memo: [`Random: Your role is used randomly.`],
},
reflexive: {
name: `Reflexive`,
id: `reflexive`,
memo: [`Reflexive: You use your action on people who target you.`],
},
restless_spirit: {
name: `Restless Spirit`,
id: `restlessspirit`,
memo: [`Restless Spirit: You can lynch after your death.`],
},
retired_marine: {
name: `Retired Marine`,
id: `retiredmarine`,
memo: [`Retired Marine: You cannot be killed by Serial Killers.`],
},
retired_werewolf_hunter: {
name: `Retired Werewolf Hunter`,
id: `retiredwerewolfhunter`,
memo: [`Retired Werewolf Hunter: You cannot be killed by Werewolves.`],
},
sacrifice: {
name: `Sacrifice`,
id: `sacrifice`,
memo: [`Sacrifice: No one else can die, besides other Sacrifices, until you die.`],
},
self: {
name: `Self`,
id: `self`,
memo: [`Self: You must target yourself.`],
},
senpai: {
name: `Senpai`,
id: `senpai`,
memo: [`Senpai: When you get lynched, everyone who lynched you dies as well.`],
},
strongman: {
name: `Strongman`,
id: `strongman`,
memo: [`Strongman: Your kill can not fail.`],
},
strong_willed: `strong-willed`,
strongwilled: `strong-willed`,
'strong-willed': {
name: `Strong-Willed`,
id: `strongwilled`,
memo: [`Strong-Willed: Your actions can not fail, excluding kills.`],
},
suicidal: {
name: `Suicidal`,
id: `suicidal`,
memo: [`Suicidal: You will passively die.`],
},
avenger: `supersaint`,
ss: `supersaint`,
supersaint: {
name: `Supersaint`,
id: `supersaint`,
memo: [`Supersaint: When this player is lynched, the player who placed the hammering vote dies as well..`],
},
temporary: {
name: `Temporary`,
id: `temporary`,
memo: [`Temporary: Only affects the target for one night.`],
},
tentacled: {
name: `Tentacled`,
id: `tentacled`,
memo: [`Tentacled: You will always be inspected as ALIEN.`],
},
tree: {
name: `Tree`,
id: `tree`,
memo: [`Tree: You can talk after your death, provided you died due to a lynch. You can still be primed and ignited by Arsonists afterwards.`],
},
treestump: {
name: `Treestump`,
id: `treestump`,
memo: [`Treestump: You can talk after your death.`],
},
lynchproof: `unlynchable`,
unlynchable: {
name: `Unlynchable`,
id: `unlynchable`,
memo: [`Unlynchable: You cannot be lynched. If you're lynched, you will survive and the game will turn to Night.`],
},
vengeful: {
name: `Vengeful`,
id: `vengeful`,
memo: [`Vengeful: When this player is lynched, they can kill another player.`],
},
watchlisted: {
name: `Watchlisted`,
id: `watchlisted`,
memo: [`Watchlisted: You will always be inspected as SERIAL KILLER.`],
},
weak: {
name: `Weak`,
id: `weak`,
memo: [`Weak: You will die if you target a player who is not aligned with the TOWN.`],
},
wrong_place_at_the_wrong_time: {
name: `Wrong Place at the Wrong Time`,
id: `wrongplaceatthewrongtime`,
memo: [`Wrong Place at the Wrong Time: You will always be inspected as the result that implies NOT TOWN.`],
},
xshot: {
// Role generator will change X to the number of shots the player gets
name: `X-Shot`,
id: `xshot`,
memo: [`X-Shot: You may only use this ability X times during the game.`],
},
};
/** @type {MafiaThemes} */
const themes = {
aitc: `assassin_in_the_court`,
aitp: `assassin_in_the_court`,
assassin_in_the_castle: `assassin_in_the_court`,
assassin_in_the_palace: `assassin_in_the_court`,
assassin_in_the_court: {
name: `Assassin in the Court`,
desc: `The Assassin tries to shoot the King to win! The Guards try to protect the King.`,
4: `Solo Assassin, Guard, Guard, King`,
5: `Solo Assassin, Guard, Guard, Guard, King`,
6: `Solo Assassin, Guard, Guard, Guard, Guard, King`,
7: `Solo Assassin, Guard, Guard, Guard, Guard, Guard, King`,
},
classic: {
name: `Classic`,
desc: `Classic: A PS! Mafia Classic. It's common, strategic, and fun!`,
6: `Mafia Goon, Mafia Goon, Role Cop, Jailkeeper, Vanilla Townie, Vanilla Townie`,
7: `Mafia Goon, Mafia Goon, Macho Role Cop, Doctor, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
8: `Mafia Pretty Lady, Mafia Goon, Role Cop, Doctor, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
9: `Mafia Goon, Mafia Pretty Lady, Role Cop, Doctor, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
10: `Mafia Goon, Mafia Pretty Lady, Bulletproof Werewolf, Role Cop, Doctor, Pretty Lady, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
11: `Mafia Goon, Mafia Pretty Lady, Bulletproof Werewolf, Role Cop, Doctor, Pretty Lady, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
12: `Mafia Goon, Mafia Pretty Lady, Bulletproof Werewolf, Role Cop, Doctor, Pretty Lady, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
13: `Mafia Goon, Mafia Pretty Lady, Bulletproof Werewolf, Role Cop, Doctor, Pretty Lady, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
14: `Mafia Goon, Mafia Goon, Mafia Pretty Lady, Bulletproof Werewolf, Role Cop, Doctor, Pretty Lady, Jailkeeper, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
15: `Mafia Goon, Mafia Role Cop, Mafia Pretty Lady, Bulletproof Werewolf One-Shot Strongman, Role Cop, Doctor, Doctor, Pretty Lady, Jailkeeper, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
16: `Mafia Goon, Mafia Role Cop, Mafia Pretty Lady, Bulletproof Werewolf One-Shot Strongman, Role Cop, Doctor, Doctor, Pretty Lady, Jailkeeper, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
17: `Mafia Goon, Mafia Role Cop, Mafia Pretty Lady, Bulletproof Werewolf One-Shot Strongman, Role Cop, Doctor, Doctor, Pretty Lady, Jailkeeper, One-Shot Vigilante, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
18: `Mafia Goon, Mafia Role Cop, Mafia Pretty Lady, Bulletproof Werewolf One-Shot Strongman, Role Cop, Doctor, Doctor, Pretty Lady, Jailkeeper, One-Shot Vigilante, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
19: `Mafia Goon, Mafia Goon, Mafia Role Cop, Mafia Pretty Lady, Bulletproof Werewolf One-Shot Strongman, Role Cop, Doctor, Doctor, Pretty Lady, Jailkeeper, One-Shot Vigilante, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
20: `Mafia Goon, Mafia Goon, Mafia Role Cop, Mafia Pretty Lady, Bulletproof Werewolf One-Shot Strongman, Role Cop, Doctor, Doctor, Pretty Lady, Jailkeeper, One-Shot Vigilante, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
},
dethy: {
name: `Dethy`,
desc: `Dethy: Four Cops against one Mafia Goon. They just won't always get the correct results...`,
5: `Mafia Goon, Cop, Cop, Cop, Cop`,
},
esun: 'eternal_sun',
eternal_sun: {
name: `Eternal Sun`,
desc: `Eternal Sun: A theme without nights! Everyone can use their action once a day.`,
7: `Mafia Compulsive Janitor, Mafia Coroner, Coroner, Gunsmith, Blacksmith, Vanilla Townie, Vanilla Townie`,
8: `Mafia Compulsive Janitor, Mafia Coroner, Coroner, Gunsmith, Blacksmith, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
9: `Mafia Compulsive Janitor, Mafia Coroner, Mafia Goon, Coroner, Gunsmith, Blacksmith, Innocent Child, Vanilla Townie, Vanilla Townie`,
10: `Mafia Compulsive Janitor, Mafia Coroner, Mafia Goon, Coroner, Coroner, Gunsmith, Blacksmith, Innocent Child, Vanilla Townie, Vanilla Townie`,
11: `Mafia Compulsive Janitor, Mafia Coroner, Mafia Goon, Coroner, Coroner, Gunsmith, Blacksmith, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
12: `Mafia Compulsive Janitor, Mafia Coroner, Mafia Suicide Bomber, Coroner, Coroner, Gunsmith, Blacksmith, Organ Donor, Innocent Child, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
13: `Mafia Compulsive Janitor, Mafia Coroner, Mafia Suicide Bomber, Coroner, Coroner, Gunsmith, Blacksmith, Organ Donor, Innocent Child, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
14: `Mafia Compulsive Janitor, Mafia Coroner, Mafia Suicide Bomber, Coroner, Coroner, Gunsmith, Blacksmith, Organ Donor, Innocent Child, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
15: `Mafia Compulsive Janitor, Mafia Coroner, Mafia Suicide Bomber, Mafia Goon, Coroner, Coroner, Gunsmith, Blacksmith, Organ Donor, Innocent Child, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
16: `Mafia Compulsive Janitor, Mafia Coroner, Mafia Suicide Bomber, Mafia Goon, Coroner, Coroner, Gunsmith, Blacksmith, Organ Donor, Innocent Child, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
17: `Mafia Compulsive Janitor, Mafia Coroner, Mafia Suicide Bomber, Mafia Goon, Coroner, Coroner, Gunsmith, Blacksmith, Organ Donor, Innocent Child, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
18: `Mafia Compulsive Janitor, Mafia Coroner, Mafia Coroner, Mafia Suicide Bomber, Coroner, Coroner, Coroner, Gunsmith, Blacksmith, Organ Donor, Innocent Child, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
19: `Mafia Compulsive Janitor, Mafia Coroner, Mafia Coroner, Mafia Suicide Bomber, Coroner, Coroner, Coroner, Gunsmith, Blacksmith, Organ Donor, Innocent Child, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
20: `Mafia Compulsive Janitor, Mafia Coroner, Mafia Coroner, Mafia Suicide Bomber, Mafia Goon, Coroner, Coroner, Coroner, Gunsmith, Blacksmith, Organ Donor, Innocent Child, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
},
ff: `forest_fire`,
forest_fire: {
name: `Forest Fire`,
desc: `Forest Fire: The forest risks being burned down! Stop the Arsonists before it's too late.`,
9: `Arsonist, Arsonist, Tree, Tree, Tree, Tree, Tree, Tree, Firefighter`,
},
job: `jungle_of_bullshit`,
jungle_of_bullshit: {
name: `Jungle of Bullshit`,
desc: `Jungle of Bullshit: When a Vanilla Townie is lynched Day 1, they shoot two players instead. When a Mafia Goon is lynched, they kill one of their partners and clear a Vanilla Townie.`,
5: `Mafia Goon, Mafia Goon, Mafia Goon, Vanilla Townie, Vanilla Townie`,
},
kwg: `kids_with_guns`,
kids_with_guns: {
name: `Kids With Guns`,
desc: `Kids With Guns: A theme based around roles that can kill people!`,
8: `Mafia Suicide Bomber, Mafia Goon, One-Shot Vigilante, Innocent Child, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
},
lh: `lighthouse`,
lighthouse: {
name: `Lighthouse`,
desc: `Lighthouse: A theme where the town has a Lightkeeper. When this role dies, the next day is anonymous!`,
5: `Mafia Goon, Lightkeeper, Oracle, Oracle, Oracle`,
6: `Mafia Goon, Mafia Goon, Lightkeeper, Gunsmith, Oracle, Oracle`,
7: `Mafia Goon, Mafia Goon, Lightkeeper, Gunsmith, Oracle, Oracle, Oracle`,
8: `Mafia Goon, Mafia Goon, Lightkeeper, Gunsmith, Gunsmith, Oracle, Oracle, Oracle`,
9: `Mafia Goon, Mafia Gunsmith, Lightkeeper, Gunsmith, Gunsmith, Oracle, Oracle, Oracle, Oracle`,
10: `Mafia Goon, Mafia Gunsmith, Lightkeeper, Gunsmith, Gunsmith, Oracle, Oracle, Oracle, Oracle, Oracle`,
11: `Mafia Goon, Mafia Goon, Mafia Goon, Lightkeeper, Gunsmith, Gunsmith, Oracle, Oracle, Oracle, Oracle, Oracle`,
12: `Mafia Goon, Mafia Goon, Mafia Goon, Lightkeeper, Gunsmith, Gunsmith, Oracle, Oracle, Oracle, Oracle, Oracle, Oracle`,
13: `Mafia Goon, Mafia Goon, Mafia Gunsmith, Lightkeeper, Gunsmith, Gunsmith, Gunsmith, Oracle, Oracle, Oracle, Oracle, Oracle, Oracle`,
},
medmaf: `medical_mafia`,
medical_mafia: {
name: `Medical Mafia`,
desc: `Medical Mafia: A theme where the Mafia invade a hospital. The Mafia has to beat a group of Doctors... who may not all heal their patients.`,
9: `Mafia Goon, Mafia Goon, Doctor, Doctor, Doctor, Doctor, Doctor, Doctor, Nurse`,
},
nd: `neighbors_dilemma`,
neighbors_dilemma: {
name: `Neighbors Dilemma`,
desc: `Neighbors Dilemma: A theme where you get a Neighbor, who you can privately talk to. However, they may be scum...`,
6: `Solo Odd-Night Serial Killer Neighbor, Solo Even-Night Serial Killer Neighbor, Town Neighbor, Town Neighbor, Town Neighbor, Town Neighbor`,
},
sacrifice: {
name: `Sacrifice`,
desc: `Sacrifice: The Vanilla Townies can't die until a Mafia Sacrifice has died. Use this to clear them!`,
4: `Mafia Sacrifice, Mafia Sacrifice, Vanilla Townie, Vanilla Townie`,
},
senpai: {
name: `Senpai`,
desc: `Senpai: When a Senpai dies, everyone who lynched them dies as well!`,
7: `Mafia Goon, Mafia Goon, Senpai, Senpai, Senpai, Senpai, Senpai`,
},
ss3: `supersaint3`,
supersaint3: {
name: `SS3`,
desc: `SS3: A three-player theme where even the Mafia has to be careful of whom they hammer!`,
3: `Mafia Goon, Supersaint, Vanilla Townie`,
},
nilla: `vanilla`,
vanilla: {
name: `Vanilla`,
desc: `A simple theme with only Mafia Goons and Vanilla Townies.`,
4: `Mafia Goon, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
5: `Mafia Goon, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
6: `Mafia Goon, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
7: `Mafia Goon, Mafia Goon, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
8: `Mafia Goon, Mafia Goon, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
9: `Mafia Goon, Mafia Goon, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
10: `Mafia Goon, Mafia Goon, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
11: `Mafia Goon, Mafia Goon, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
12: `Mafia Goon, Mafia Goon, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
13: `Mafia Goon, Mafia Goon, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
14: `Mafia Goon, Mafia Goon, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
15: `Mafia Goon, Mafia Goon, Mafia Goon, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
16: `Mafia Goon, Mafia Goon, Mafia Goon, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
17: `Mafia Goon, Mafia Goon, Mafia Goon, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
18: `Mafia Goon, Mafia Goon, Mafia Goon, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
19: `Mafia Goon, Mafia Goon, Mafia Goon, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
20: `Mafia Goon, Mafia Goon, Mafia Goon, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
},
wnac: `we_need_a_clear`,
we_need_a_clear: {
name: `We Need a Clear`,
desc: `We Need a Clear: When a Vanilla Townie is lynched Day 1, they get cleared instead.`,
5: `Mafia Goon, Mafia Goon, Vanilla Townie, Vanilla Townie, Vanilla Townie`,
},
wnaf: `we_need_a_fifth`,
we_need_a_fifth: {
name: `We Need a Fifth`,
desc: `We Need a Fifth: When a Vanilla Townie is lynched Day 1, they shoot another player instead. When a Mafia Goon is lynched, they have to clear a Vanilla Townie.`,
4: `Mafia Goon, Mafia Goon, Vanilla Townie, Vanilla Townie`,
},
};
/** @type {MafiaIDEAs} */
const IDEAs = {
gi: `greater_idea`,
greater_idea: {
name: `Greater Idea`,
roles: [
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Watcher`,
`Tracker`,
`Tracker`,
`Cop`,
`Cop`,
`Cop Lover`,
`Seer`,
`Seer`,
`FBI Agent`,
`Doctor`,
`Doctor`,
`Roleblocker`,
`Jailkeeper`,
`Bodyguard`,
`Vigilante`,
`One-Shot Vigilante`,
`One-Shot Day Vigilante`,
`One-Shot Day Vigilante`,
`Compulsive Childkiller`,
`Bulletproof Townie`,
`Supersaint`,
`One-Shot Paranoid Gun Owner`,
`Mason`,
`Mason`,
`Mason`,
`Mason`,
`Mason Doctor`,
`Mason Lover`,
`Lover`,
`Lover`,
`Lover`,
`Jack-of-all-Trades`,
`Vengeful Townie`,
`Retired Werewolf Hunter`,
`Retired Marine`,
`Miller`,
`Hirsute Townie`,
`Evangelistic Townie`,
`Tentacled Townie`,
`Watchlisted Townie`,
`Wrong Place at the Wrong Time Townie`,
`Town Black Goo`,
`Ascetic Townie`,
`Private Investigator`,
`Gravedigger`,
`Nymphomaniac`,
`One-Shot Governor`,
`One-Shot Unlynchable Townie`,
`Town Godfather`,
`Innocent Child`,
`Hider`,
`Enabler`,
`Treestump`,
`Conspiracy Theorist`,
`Conspiracy Theorist`,
`Conspiracy Theorist`,
`One-Shot Kingmaker`,
`Weak Jailkeeper`,
`Bloodhound`,
`Vanilla Cop`,
`Hero`,
`Tourist`,
`Nurse`,
`One-Shot Commuter`,
`Cop-of-all-Trades`,
`One-Shot Gladiator`,
`Lynchbait`,
`Psychiatrist`,
`Reloader`,
`Fruit Vendor`,
`Parrot Role`,
`Solo Judas`,
`Solo Saulus`,
`Solo One-Shot Townie`,
`Solo Underdog`,
`Mafia Goon`,
`Mafia Goon`,
`Mafia Goon`,
`Mafia Goon`,
`Mafia Goon`,
`Mafia Godfather`,
`Mafia Tracker`,
`Mafia Doctor`,
`Mafia Roleblocker`,
`Mafia Lover`,
`Mafia Seer`,
`Mafia One-Shot Day Vigilante`,
`Mafia One-Shot Governor`,
`Mafia Reflexive Doctor`,
`Hirsute Mafia Goon`,
`Mafia Cupid`,
`Alpha Goon`,
`Mafia Compulsive Hider`,
`Mafia Fruit Vendor`,
`Werewolf`,
`Werewolf`,
`Werewolf`,
`Werewolf`,
`Alpha Werewolf`,
`Werewolf Roleblocker`,
`One-Shot Bulletproof Werewolf`,
`Werewolf Cop`,
`Werewolf Mason`,
`Werewolf Watcher`,
`Werewolf FBI Agent`,
`Ninja Werewolf`,
`Werewolf One-Shot Paranoid Gun Owner`,
`Werewolf Miller`,
`Werewolf Supersaint`,
`Werewolf Godfather`,
`Werewolf Gravedigger`,
`Werewolf Wereparrot`,
`One-Shot Unlynchable Alien`,
`Alien Prober`,
`Alien Vanillaiser`,
`Alien Silencer`,
`Bulletproof Alien Lover`,
`Alien Psychotrooper`,
`Alien One-Shot Mass Redirector`,
`Alien Bloodsucker`,
`Alien Sympathiser`,
`Solo Survivor`,
`Solo Compulsive Bodyguard Survivor`,
`Solo Survivor Mason`,
`Solo Lyncher`,
`Solo Lyncher`,
`Solo Two-Shot Bulletproof Serial Killer`,
`Solo Serial Killer (Immune to Mafia Kills)`,
`Solo Serial Killer (Immune to Werewolf Kills)`,
`Solo Serial Killer (Immune to Alien Kills)`,
`One-Shot Cult Recruiter`,
`One-Shot Cult Goomaker`,
`Solo Wild Card`,
],
picks: [`role`],
choices: 2,
},
gesti: `greatest_idea`,
greatest_idea: {
name: `Greatest Idea`,
roles: [
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Watcher`,
`Tracker`,
`Tracker`,
`Cop`,
`Cop`,
`Cop Lover`,
`Seer`,
`Seer`,
`FBI Agent`,
`Doctor`,
`Doctor`,
`Roleblocker`,
`Jailkeeper`,
`Bodyguard`,
`Vigilante`,
`One-Shot Vigilante`,
`One-Shot Day Vigilante`,
`One-Shot Day Vigilante`,
`Compulsive Childkiller`,
`Bulletproof Townie`,
`Supersaint`,
`One-Shot Paranoid Gun Owner`,
`Mason`,
`Mason`,
`Mason`,
`Mason`,
`Mason Doctor`,
`Mason Lover`,
`Lover`,
`Lover`,
`Lover`,
`Jack-of-all-Trades`,
`Vengeful Townie`,
`Retired Werewolf Hunter`,
`Retired Marine`,
`Miller`,
`Hirsute Townie`,
`Evangelistic Townie`,
`Tentacled Townie`,
`Watchlisted Townie`,
`Wrong Place at the Wrong Time Townie`,
`Town Black Goo`,
`Ascetic Townie`,
`Private Investigator`,
`Gravedigger`,
`Nymphomaniac`,
`One-Shot Governor`,
`One-Shot Unlynchable Townie`,
`Town Godfather`,
`Innocent Child`,
`Hider`,
`Enabler`,
`Treestump`,
`Conspiracy Theorist`,
`Conspiracy Theorist`,
`Conspiracy Theorist`,
`One-Shot Kingmaker`,
`Weak Jailkeeper`,
`Bloodhound`,
`Vanilla Cop`,
`Hero`,
`Tourist`,
`Nurse`,
`One-Shot Commuter`,
`Cop-of-all-Trades`,
`One-Shot Gladiator`,
`Lynchbait`,
`Psychiatrist`,
`Reloader`,
`Fruit Vendor`,
`Parrot Role`,
`Solo Judas`,
`Solo Saulus`,
`Solo One-Shot Townie`,
`Solo Underdog`,
`Mafia Goon`,
`Mafia Goon`,
`Mafia Goon`,
`Mafia Goon`,
`Mafia Goon`,
`Mafia Godfather`,
`Mafia Tracker`,
`Mafia Doctor`,
`Mafia Roleblocker`,
`Mafia Lover`,
`Mafia Seer`,
`Mafia One-Shot Day Vigilante`,
`Mafia One-Shot Governor`,
`Mafia Reflexive Doctor`,
`Hirsute Mafia Goon`,
`Mafia Cupid`,
`Alpha Goon`,
`Mafia Compulsive Hider`,
`Mafia Fruit Vendor`,
`Werewolf`,
`Werewolf`,
`Werewolf`,
`Werewolf`,
`Alpha Werewolf`,
`Werewolf Roleblocker`,
`One-Shot Bulletproof Werewolf`,
`Werewolf Cop`,
`Werewolf Mason`,
`Werewolf Watcher`,
`Werewolf FBI Agent`,
`Ninja Werewolf`,
`Werewolf One-Shot Paranoid Gun Owner`,
`Werewolf Miller`,
`Werewolf Supersaint`,
`Werewolf Godfather`,
`Werewolf Gravedigger`,
`Werewolf Wereparrot`,
`One-Shot Unlynchable Alien`,
`Alien Prober`,
`Alien Vanillaiser`,
`Alien Silencer`,
`Bulletproof Alien Lover`,
`Alien Psychotrooper`,
`Alien One-Shot Mass Redirector`,
`Alien Bloodsucker`,
`Alien Sympathiser`,
`Solo Survivor`,
`Solo Compulsive Bodyguard Survivor`,
`Solo Survivor Mason`,
`Solo Lyncher`,
`Solo Lyncher`,
`Solo Two-Shot Bulletproof Serial Killer`,
`Solo Serial Killer (Immune to Mafia Kills)`,
`Solo Serial Killer (Immune to Werewolf Kills)`,
`Solo Serial Killer (Immune to Alien Kills)`,
`One-Shot Cult Recruiter`,
`One-Shot Cult Goomaker`,
`Solo Wild Card`,
],
picks: [`role`, `alignment`],
choices: 3,
},
rgi: `replicant_greater_idea`,
replicant_greater_idea: {
name: `Replicant Greater Idea`,
roles: [
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Watcher`,
`Tracker`,
`Tracker`,
`Cop`,
`Cop`,
`Cop Lover`,
`Seer`,
`Seer`,
`FBI Agent`,
`Doctor`,
`Doctor`,
`Roleblocker`,
`Jailkeeper`,
`Bodyguard`,
`Vigilante`,
`One-Shot Vigilante`,
`One-Shot Day Vigilante`,
`One-Shot Day Vigilante`,
`Compulsive Childkiller`,
`Bulletproof Townie`,
`Supersaint`,
`One-Shot Paranoid Gun Owner`,
`Mason`,
`Mason`,
`Mason`,
`Mason`,
`Mason Doctor`,
`Mason Lover`,
`Lover`,
`Lover`,
`Lover`,
`Jack-of-all-Trades`,
`Vengeful Townie`,
`Retired Werewolf Hunter`,
`Retired Marine`,
`Miller`,
`Hirsute Townie`,
`Evangelistic Townie`,
`Tentacled Townie`,
`Watchlisted Townie`,
`Wrong Place at the Wrong Time Townie`,
`Town Black Goo`,
`Ascetic Townie`,
`Private Investigator`,
`Gravedigger`,
`Nymphomaniac`,
`One-Shot Governor`,
`One-Shot Unlynchable Townie`,
`Town Godfather`,
`Innocent Child`,
`Hider`,
`Enabler`,
`Treestump`,
`Conspiracy Theorist`,
`Conspiracy Theorist`,
`Conspiracy Theorist`,
`One-Shot Kingmaker`,
`Weak Jailkeeper`,
`Bloodhound`,
`Vanilla Cop`,
`Hero`,
`Tourist`,
`Nurse`,
`One-Shot Commuter`,
`Cop-of-all-Trades`,
`One-Shot Gladiator`,
`Lynchbait`,
`Psychiatrist`,
`Reloader`,
`Fruit Vendor`,
`Parrot Role`,
`Solo Judas`,
`Solo Saulus`,
`Solo One-Shot Townie`,
`Solo Underdog`,
`Mafia Goon`,
`Mafia Goon`,
`Mafia Goon`,
`Mafia Goon`,
`Mafia Goon`,
`Mafia Godfather`,
`Mafia Tracker`,
`Mafia Doctor`,
`Mafia Roleblocker`,
`Mafia Lover`,
`Mafia Seer`,
`Mafia One-Shot Day Vigilante`,
`Mafia One-Shot Governor`,
`Mafia Reflexive Doctor`,
`Hirsute Mafia Goon`,
`Mafia Cupid`,
`Alpha Goon`,
`Mafia Compulsive Hider`,
`Mafia Fruit Vendor`,
`Werewolf`,
`Werewolf`,
`Werewolf`,
`Werewolf`,
`Alpha Werewolf`,
`Werewolf Roleblocker`,
`One-Shot Bulletproof Werewolf`,
`Werewolf Cop`,
`Werewolf Mason`,
`Werewolf Watcher`,
`Werewolf FBI Agent`,
`Ninja Werewolf`,
`Werewolf One-Shot Paranoid Gun Owner`,
`Werewolf Miller`,
`Werewolf Supersaint`,
`Werewolf Godfather`,
`Werewolf Gravedigger`,
`Werewolf Wereparrot`,
`Replicant One-Shot Lightning Rod`,
`Replicant Odd-Night Cop Even-Night Seer`,
`Replicant Doppelganger`,
`Replicant Suppressor`,
`Replicant Millermaker`,
`Replicant One-Shot Politician`,
`Replicant Day Suicide Bomber`,
`Bulletproof Replicant`,
`Replicant Sympathiser`,
`Solo Survivor`,
`Solo Compulsive Bodyguard Survivor`,
`Solo Survivor Mason`,
`Solo Lyncher`,
`Solo Lyncher`,
`Solo Two-Shot Bulletproof Serial Killer`,
`Solo Serial Killer (Immune to Mafia Kills)`,
`Solo Serial Killer (Immune to Werewolf Kills)`,
`Solo Serial Killer (Immune to Alien Kills)`,
`One-Shot Cult Recruiter`,
`One-Shot Cult Goomaker`,
`Solo Wild Card`,
],
picks: [`role`],
choices: 2,
},
vi: `vanilla_idea`,
vanilla_idea: {
name: `Vanilla Idea`,
roles: [
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Town`,
`Mafia`,
`Mafia`,
`Mafia`,
`Mafia`,
`Mafia`,
`Mafia`,
`Mafia`,
`Mafia`,
`Mafia`,
`Mafia`,
`Mafia`,
`Traitor`,
`Traitor`,
`Traitor`,
`Traitor`,
`Werewolf`,
`Werewolf`,
`Werewolf`,
`Werewolf`,
`Werewolf`,
`Werewolf`,
`Werewolf`,
`Werewolf`,
`Werewolf`,
`Werewolf`,
`Werewolf`,
`Werewolf`,
`Werewolf`,
`Cult`,
`Cult`,
`Cult`,
`Cult`,
`Cult`,
`Solo Serial Killer`,
`Solo Serial Killer`,
`Solo Serial Killer`,
`Solo Serial Killer`,
`Solo Serial Killer`,
`Solo Survivor`,
`Solo Survivor`,
`Solo Jester`,
`Solo Unjester`,
`Solo Lyncher`,
`Solo Unlyncher`,
`Solo Underdog`,
`Solo Aligner`,
`Solo Universal Usurper`,
`Solo Universal Sympathiser`,
`Solo Wild Card`,
],
picks: [`role`],
choices: 2,
},
ci: `cracking_idea`,
cracking_idea: {
name: `Cracking Idea`,
roles: [
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Vanilla Townie`,
`Doctor`,
`Doctor`,
`Coroner Cracking Idea`,
`Coroner Cracking Idea`,
`Coroner Cracking Idea`,
`Coroner Cracking Idea`,
`Bodyguard`,
`Bodyguard`,
`One-Shot Commuter`,
`Cop`,
`Cop`,
`Ascetic Cop`,
`Backup Cop `,
`Watcher`,
`Tracker`,
`Hider`,
`Ascetic Hider`,
`Area 51 Detective`,
`Area 51 Immunologist`,
`Conspiracy Theorist`,
`Conspiracy Theorist`,
`Conspiracy Theorist`,
`Conspiracy Theorist`,
`Conspiracy Theorist`,
`Conspiracy Theorist`,
`Conspiracy Theorist`,
`Compulsive Roleblocker`,
`Jailkeeper`,
`Jailkeeper`,
`Jack Of All Trades `,
`Mason`,
`Mason`,
`Mason`,
`Ascetic Mason`,
`Mason Compulsive Bodyguard`,
`Mason Reflexive Doctor`,
`One-Shot Vigilante`,
`Miller Vigilante`,
`One-Shot Day Vigilante`,
`Nymphomaniac `,
`Excellent Sense of Smell Townie`,
`Excellent Sense of Smell Townie`,
`Ugly Townie`,
`Ugly Townie`,
`Clairvoyant`,
`Clairvoyant`,
`Clairvoyant`,
`Clairvoyant`,
`Treestump`,
`Lynchbait`,
`Macho One-Shot Kingmaker`,
`Macho Death Kingmaker`,
`Supersaint`,
`Vengeful Townie`,
`One-Shot Unlynchable Townie`,
`Universal Backup`,
`Universal Backup`,
`Mafia Goon`,
`Mafia Goon`,
`Mafia Goon`,
`Mafia Goon`,
`Ascetic Mafia Goon`,
`Ascetic Mafia Goon`,
`Bulletproof Mafia Goon`,
`Bulletproof Mafia Goon`,
`Mafia Tracker`,
`Mafia One-Shot Role Cop`,
`Mafia One-Shot Role Cop`,
`Mafia Traitor Cop`,
`Mafia Conspiracy Theorist`,
`Mafia Conspiracy Theorist`,
`Mafia Clairvoyant`,
`Mafia Clairvoyant`,
`Mafia One-Shot Day Vigilante`,
`Mafia Godfather`,
`Alien Avenger`,
`Alien Avenger`,
`Alien Vanillerizer`,
`Alien Vanillerizer`,
`Alien Psychotrooper`,
`Alien One-Shot Psychomagnet`,
`Alien Monarch`,
`Baby Alien Monarch`,
`Baby Alien Monarch`,
`Solo Lyncher`,
`Solo Pseudojester`,
`Red Goo `,
`Red Goo`,
`Grey Goo`,
`Chameleon Goo`,
],
picks: [`role`],
choices: 2,
},
si: `snaqs_idea`,
snaqs_idea: {
name: `Snaq's Idea`,
roles: [
`Vanilla Townie`,
`Discard`,
`Hater`,
`Hater`,
`Praiser`,
`Praiser`,
`Hasty Lover`,
`Hasty Lover`,
`Loverboy`,
`Compulsive Screamer`,
`Secret Agent`,
`Secret Agent`,
`Oracle`,
`Oracle`,
`Oracle`,
`Deactivator`,
`Deactivator`,
`Mayor`,
`Mayor`,
`Enabler`,
`Enabler`,
`Pariah`,
`Pariah`,
`Missionary`,
`Missionary`,
`Missionary`,
`OS Curfew Agent`,
`OS Curfew Agent`,
`Homekeeper`,
`Homekeeper`,
`Homekeeper`,
`Vanguard`,
`Vanguard`,
`Vanguard`,
`Cowardly Hero`,
`Cowardly Hero`,
`Cop-Of-All-Trades`,
`Cop-Of-All-Trades`,
`Cop-Of-All-Trades`,
`Journalist`,
`Journalist`,
`Journalist`,
`Compatibility Checker`,
`Compatibility Checker`,
`Compatibility Checker`,
`Teacher`,
`Teacher`,
`Teacher`,
`Power Cop`,
`Power Cop`,
`Tallier`,
`Yogi Bear`,
`Innocent Child`,
`Innocent Child`,
`Innocent Child`,
`Day 4 Suicidal Deathproof Townie`,
`Treestump`,
`Treestump`,
`Illusionist`,
`Illusionist`,
`OS Subway Recruiter`,
`OS Subway Recruiter`,
`Detector`,
`Detector`,
`Detector`,
`Blockade`,
`Blockade`,
`Blockade`,
`Stalker`,
`Stalker`,
`Bailiff`,
`Bailiff`,
`Bailiff`,
`Confidant`,
`Confidant`,
`Avoider`,
`Avoider`,
`Avoider`,
`Celebrity`,
`Celebrity`,
`Gossiper`,
`Gossiper`,
`Gossiper`,
`Unblocker`,
`Unblocker`,
`Unblocker`,
`Bus Driver`,
`Bus Driver`,
`Chauffeur`,
`Chauffeur`,
`One-Shot Mass Redirector`,
`One-Shot Mass Redirector`,
`Bulletproof Lure`,
`Bulletproof Lure`,
`Mirror`,
`Mirror`,
`2S Multiplier`,
`Wild Card`,
`Wild Card`,
`Wild Card`,
`Broken Vanillaiser`,
`Immobile OS Parrot`,
`Role Vanillaizer`,
`Role Vanillaizer`,
`Schemer`,
`One-Shot Day-Vigilante`,
`One-Shot Day-Vigilante`,
`Midnight Desperado`,
`Midnight Desperado`,
`Murderous Vigilante`,
`Murderous Vigilante`,
`Judge`,
`Haunting Vigilante`,
`Haunting Vigilante`,
`Haunting Doctor`,
`Haunting Doctor`,
`Haunting Doctor`,
`Gambit Vigilante`,
`Gambit Vigilante`,
`Gambit Vigilante`,
`Gambit Public Cop`,
`Gambit Public Cop`,
`Trypophobic Townie`,
`Trypophobic Townie`,
`Trypophobic Townie`,
`One-Shot Reviver`,
`One-Shot Reviver`,
`Substitute`,
`Substitute`,
`Compulsive Janitor Coroner`,
`Compulsive Janitor Coroner`,
`Compulsive Janitor Coroner`,
`Grim Reaper`,
`Grim Reaper`,
`Hallucinator`,
`Necromancer`,
`Insomniac`,
`Insomniac`,
`Friend`,
`Friend`,
`Friend`,
`Friend`,
`Friend`,
`Friend OS Friend Recruiter`,
`Talkative Townie`,
`Talkative Townie`,
`Whisperer`,
`Whisperer`,
`Reserved Townie`,
`Reserved Townie`,
`Discard Vendor`,
`Do-It-Yourselfer`,
`Inheritor`,
`Inheritor`,
`OS Prism`,
`Randomizer`,
`Randomizer`,
`Card Dealer`,
`Pseudocider`,
`Pseudocider`,
`Sacrifice`,
`Sacrifice`,
`Magician`,
`Solo Flip Flop`,
`Mafia Hater`,
`Mafia Praiser`,
`Mafia One-Shot Day-Vigilante`,
`Mafia Schemer`,
`Mafia Bus Driver`,
`Mafia Chauffeur`,
`Mafia Confidant`,
`Mafia Blockade`,
`Mafia Unblocker`,
`Mafia Insomniac`,
`Mafia Compulsive Janitor`,
`Mafia Compulsive Janitor Coroner`,
`Mafia Haunting Compulsive Janitor`,
`Mafia Secret Agent`,
`Mafia Oracle`,
`Mafia Compatibility Checker`,
`Mafia Teacher`,
`Mafia Wild Card`,
`Mafia Detector`,
`Mafia Mirror`,
`Mafia OS Modposter`,
`Mafia Whisperer`,
`Reserved Mafia`,
`Mafia Little Liar`,
`Mafia Magician`,
`Mafia Magician`,
`Mafia Bulletproof Lure`,
`Mafia Grim Reaper`,
`Mafia Screamer`,
`Mafia Psychotrooper Button`,
`Mafia Houdini`,
`Mafia Inheritor`,
`Mafia Role Vanillaizer`,
`Mafia Friend`,
`Mafia Friend`,
`Mafia Friend`,
`Solo Traitor Discard Vendor`,
`Solo Traitor Pseudocider`,
`Solo Traitor Celebrity`,
`Solo Traitor Gossiper`,
`Solo Traitor Broken Vanillaiser`,
`Solo Traitor OS Subway Recruiter`,
`Solo Traitor Hasty Lover`,
`Solo Talkative Traitor`,
`Alien Contrary`,
`Alien Contrary`,
`Alien Friend`,
`Alien Friend`,
`Alien Unblocker`,
`Alien One-Shot Reviver`,
`Alien One-Shot Mass Redirector`,
`Alien Bouncer`,
`Alien Blackmailer`,
`Alien Do-It-Yourselfer`,
`Alien Loverboy`,
`Alien Nightmare`,
`Alien Card Dealer`,
`Alien Judge`,
`Alien OS Trainwreck`,
`Alien OS Solar God`,
`Alien Alien-of-all-Trades`,
`Alien Omniscient`,
`Solo E.T`,
`Cultafia Leader`,
`Gambit Cult Recruiter`,
`Solo Inquisitor`,
`Solo Bulletproof Duskiller`,
`Solo Bulletproof Corrupt Queen`,
`Solo Substitute Loner`,
`Solo Substitute Loner`,
`Solo Bulletproof Shadow`,
`Solo Panther`,
`Solo Survivor Hallucinator`,
`Solo Survivor Pseudocider`,
`Solo Aligner`,
`Solo Aligner`,
`Solo Loyal Lover`,
`Solo Survivor Friend`,
`Solo Pseudojester`,
`Solo Pseudolyncher`,
`Solo Birthday Boy`,
`Solo Universal Usurper`,
`Solo Universal Sympathiser`,
`Solo Anti-Survivor`,
`Solo Wild disCard`,
],
picks: [`role`],
choices: 2,
},
};
module.exports = {
alignments: Object.assign(Object.create(null), alignments),
roles: Object.assign(Object.create(null), roles),
modifiers: Object.assign(Object.create(null), modifiers),
themes: Object.assign(Object.create(null), themes),
IDEAs: Object.assign(Object.create(null), IDEAs),
};