mirror of https://github.com/bra1n/townsquare.git
parent
df07af4824
commit
5a995c589e
94
src/App.vue
94
src/App.vue
|
@ -6,6 +6,20 @@
|
||||||
:players="players"
|
:players="players"
|
||||||
:roles="roles"
|
:roles="roles"
|
||||||
></TownSquare>
|
></TownSquare>
|
||||||
|
<Modal v-show="showEditionModal" @close="showEditionModal = false">
|
||||||
|
<h2>Select an edition:</h2>
|
||||||
|
<ul class="editions">
|
||||||
|
<li
|
||||||
|
v-for="edition in editions"
|
||||||
|
class="edition"
|
||||||
|
v-bind:class="['edition-' + edition.id]"
|
||||||
|
v-bind:key="edition.id"
|
||||||
|
@click="setEdition(edition.id)"
|
||||||
|
>
|
||||||
|
{{ edition.name }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</Modal>
|
||||||
<div class="controls">
|
<div class="controls">
|
||||||
<font-awesome-icon icon="cogs" @click="isControlOpen = !isControlOpen" />
|
<font-awesome-icon icon="cogs" @click="isControlOpen = !isControlOpen" />
|
||||||
<ul v-if="isControlOpen">
|
<ul v-if="isControlOpen">
|
||||||
|
@ -13,15 +27,15 @@
|
||||||
<li @click="addPlayer" v-if="players.length < 20">
|
<li @click="addPlayer" v-if="players.length < 20">
|
||||||
<em>A</em>dd Player
|
<em>A</em>dd Player
|
||||||
</li>
|
</li>
|
||||||
<li @click="togglePublic" v-if="players.length > 4">
|
|
||||||
Select Roles
|
|
||||||
</li>
|
|
||||||
<li @click="randomizeSeatings" v-if="players.length > 2">
|
<li @click="randomizeSeatings" v-if="players.length > 2">
|
||||||
<em>R</em>andomize Seatings
|
<em>R</em>andomize Seatings
|
||||||
</li>
|
</li>
|
||||||
<li @click="clearPlayers" v-if="players.length">
|
<li @click="clearPlayers" v-if="players.length">
|
||||||
Clear Players
|
Clear Players
|
||||||
</li>
|
</li>
|
||||||
|
<li @click="showEditionModal = true" v-if="players.length > 4">
|
||||||
|
Select Edition
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -30,30 +44,27 @@
|
||||||
<script>
|
<script>
|
||||||
import TownSquare from "./components/TownSquare";
|
import TownSquare from "./components/TownSquare";
|
||||||
import TownInfo from "./components/TownInfo";
|
import TownInfo from "./components/TownInfo";
|
||||||
|
import Modal from "./components/Modal";
|
||||||
import rolesJSON from "./roles";
|
import rolesJSON from "./roles";
|
||||||
|
import editions from "./editions";
|
||||||
const getRolesByEdition = (edition = "TB") =>
|
|
||||||
new Map(
|
|
||||||
rolesJSON
|
|
||||||
.filter(r => r.edition === edition)
|
|
||||||
.sort((a, b) => b.team.localeCompare(a.team))
|
|
||||||
.map(role => [role.id, role])
|
|
||||||
);
|
|
||||||
|
|
||||||
console.log(getRolesByEdition());
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
TownSquare,
|
TownSquare,
|
||||||
TownInfo
|
TownInfo,
|
||||||
|
Modal
|
||||||
},
|
},
|
||||||
data: () => ({
|
data: function() {
|
||||||
|
return {
|
||||||
|
editions,
|
||||||
isPublic: true,
|
isPublic: true,
|
||||||
isControlOpen: false,
|
isControlOpen: false,
|
||||||
players: [],
|
players: [],
|
||||||
roles: getRolesByEdition(),
|
roles: this.getRolesByEdition(),
|
||||||
edition: "TB"
|
edition: "tb",
|
||||||
}),
|
showEditionModal: false
|
||||||
|
};
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
togglePublic() {
|
togglePublic() {
|
||||||
this.isPublic = !this.isPublic;
|
this.isPublic = !this.isPublic;
|
||||||
|
@ -92,12 +103,30 @@ export default {
|
||||||
this.randomizeSeatings();
|
this.randomizeSeatings();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
getRolesByEdition(edition = "tb") {
|
||||||
|
const selectedEdition = editions.find(({ id }) => id === edition);
|
||||||
|
return new Map(
|
||||||
|
rolesJSON
|
||||||
|
.filter(
|
||||||
|
r => r.edition === edition || selectedEdition.roles.includes(r.id)
|
||||||
|
)
|
||||||
|
.sort((a, b) => b.team.localeCompare(a.team))
|
||||||
|
.map(role => [role.id, role])
|
||||||
|
);
|
||||||
|
},
|
||||||
|
setEdition(edition) {
|
||||||
|
this.edition = edition;
|
||||||
|
this.showEditionModal = false;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
if (localStorage.isPublic !== undefined) {
|
||||||
|
this.isPublic = JSON.parse(localStorage.isPublic);
|
||||||
|
}
|
||||||
if (localStorage.edition) {
|
if (localStorage.edition) {
|
||||||
this.edition = localStorage.edition;
|
this.edition = localStorage.edition;
|
||||||
this.roles = getRolesByEdition(this.edition);
|
this.roles = this.getRolesByEdition(this.edition);
|
||||||
}
|
}
|
||||||
if (localStorage.players) {
|
if (localStorage.players) {
|
||||||
this.players = JSON.parse(localStorage.players).map(player => ({
|
this.players = JSON.parse(localStorage.players).map(player => ({
|
||||||
|
@ -120,12 +149,18 @@ export default {
|
||||||
},
|
},
|
||||||
edition(newEdition) {
|
edition(newEdition) {
|
||||||
localStorage.edition = newEdition;
|
localStorage.edition = newEdition;
|
||||||
|
this.roles = this.getRolesByEdition(newEdition);
|
||||||
|
},
|
||||||
|
isPublic(newIsPublic) {
|
||||||
|
localStorage.isPublic = JSON.stringify(newIsPublic);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
|
@import "vars";
|
||||||
|
|
||||||
@font-face {
|
@font-face {
|
||||||
font-family: "Papyrus";
|
font-family: "Papyrus";
|
||||||
src: url("assets/fonts/papyrus.eot"); /* IE9*/
|
src: url("assets/fonts/papyrus.eot"); /* IE9*/
|
||||||
|
@ -199,4 +234,25 @@ body {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Editions
|
||||||
|
@each $img in $editions {
|
||||||
|
.edition-#{$img} {
|
||||||
|
background-image: url("./assets/edition-#{$img}.png");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ul.editions .edition {
|
||||||
|
text-align: center;
|
||||||
|
padding-top: 100px;
|
||||||
|
background-position: center center;
|
||||||
|
background-size: cover;
|
||||||
|
width: 200px;
|
||||||
|
margin: 5px;
|
||||||
|
font-size: 120%;
|
||||||
|
font-weight: bold;
|
||||||
|
text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000,
|
||||||
|
1px 1px 0 #000, 0 0 5px rgba(0, 0, 0, 0.75);
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -50,6 +50,20 @@ export default {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ul {
|
||||||
|
list-style-type: none;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
align-content: center;
|
||||||
|
align-items: center;
|
||||||
|
overflow: hidden;
|
||||||
|
justify-content: center;
|
||||||
|
font-size: 75%;
|
||||||
|
line-height: 100%;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.modal-fade-enter,
|
.modal-fade-enter,
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
:class="{
|
:class="{
|
||||||
dead: player.hasDied,
|
dead: player.hasDied,
|
||||||
'no-vote': player.hasVoted,
|
'no-vote': player.hasVoted,
|
||||||
traveller: player.role && player.role.team === 'traveller'
|
traveler: player.role && player.role.team === 'traveler'
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<div class="shroud" @click="toggleStatus()"></div>
|
<div class="shroud" @click="toggleStatus()"></div>
|
||||||
|
@ -168,7 +168,7 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
&.dead {
|
&.dead {
|
||||||
&.traveller {
|
&.traveler {
|
||||||
filter: grayscale(100%);
|
filter: grayscale(100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,11 +25,11 @@
|
||||||
class="demon"
|
class="demon"
|
||||||
v-bind:icon="teams.demons > 1 ? 'user-friends' : 'user'"
|
v-bind:icon="teams.demons > 1 ? 'user-friends' : 'user'"
|
||||||
/>
|
/>
|
||||||
<template v-if="teams.travellers">
|
<template v-if="teams.travelers">
|
||||||
{{ teams.travellers }}
|
{{ teams.travelers }}
|
||||||
<font-awesome-icon
|
<font-awesome-icon
|
||||||
class="traveller"
|
class="traveler"
|
||||||
v-bind:icon="teams.travellers > 1 ? 'user-friends' : 'user'"
|
v-bind:icon="teams.travelers > 1 ? 'user-friends' : 'user'"
|
||||||
/>
|
/>
|
||||||
</template>
|
</template>
|
||||||
</li>
|
</li>
|
||||||
|
@ -52,14 +52,14 @@ export default {
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
teams: function() {
|
teams: function() {
|
||||||
const nontravellers = this.players.filter(
|
const nontravelers = this.players.filter(
|
||||||
player => player.role.team !== "traveller"
|
player => player.role.team !== "traveler"
|
||||||
).length;
|
).length;
|
||||||
const alive = this.players.filter(player => player.hasDied !== true)
|
const alive = this.players.filter(player => player.hasDied !== true)
|
||||||
.length;
|
.length;
|
||||||
return {
|
return {
|
||||||
...gameJSON[nontravellers - 5],
|
...gameJSON[nontravelers - 5],
|
||||||
travellers: this.players.length - nontravellers,
|
travelers: this.players.length - nontravelers,
|
||||||
alive,
|
alive,
|
||||||
votes:
|
votes:
|
||||||
alive +
|
alive +
|
||||||
|
@ -126,28 +126,19 @@ export default {
|
||||||
.demon {
|
.demon {
|
||||||
color: $demon;
|
color: $demon;
|
||||||
}
|
}
|
||||||
.traveller {
|
.traveler {
|
||||||
color: $traveller;
|
color: $traveler;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
li.edition {
|
li.edition {
|
||||||
width: 220px;
|
width: 220px;
|
||||||
height: 200px;
|
height: 200px;
|
||||||
background: 0 center no-repeat;
|
background-position: 0 center;
|
||||||
|
background-repeat: no-repeat;
|
||||||
background-size: 100% auto;
|
background-size: 100% auto;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: -50px;
|
top: -50px;
|
||||||
|
|
||||||
&.edition-TB {
|
|
||||||
background-image: url("../assets/edition-tb.png");
|
|
||||||
}
|
|
||||||
&.edition-BMR {
|
|
||||||
background-image: url("../assets/edition-bmr.png");
|
|
||||||
}
|
|
||||||
&.edition-SNV {
|
|
||||||
background-image: url("../assets/edition-snv.png");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -211,20 +211,7 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Role token modal ******/
|
/***** Role token modal ******/
|
||||||
ul.tokens {
|
ul.tokens .token {
|
||||||
list-style-type: none;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
align-content: center;
|
|
||||||
align-items: center;
|
|
||||||
overflow: hidden;
|
|
||||||
justify-content: center;
|
|
||||||
font-size: 75%;
|
|
||||||
line-height: 100%;
|
|
||||||
|
|
||||||
.token {
|
|
||||||
border-radius: 50%;
|
border-radius: 50%;
|
||||||
height: 120px;
|
height: 120px;
|
||||||
width: 120px;
|
width: 120px;
|
||||||
|
@ -255,8 +242,8 @@ ul.tokens {
|
||||||
&.demon {
|
&.demon {
|
||||||
box-shadow: 0 0 10px $demon, 0 0 10px $demon;
|
box-shadow: 0 0 10px $demon, 0 0 10px $demon;
|
||||||
}
|
}
|
||||||
&.traveller {
|
&.traveler {
|
||||||
box-shadow: 0 0 10px $traveller, 0 0 10px $traveller;
|
box-shadow: 0 0 10px $traveler, 0 0 10px $traveler;
|
||||||
}
|
}
|
||||||
|
|
||||||
&:before {
|
&:before {
|
||||||
|
@ -272,14 +259,10 @@ ul.tokens {
|
||||||
&:hover {
|
&:hover {
|
||||||
transform: scale(1.2);
|
transform: scale(1.2);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/***** Reminder token modal ******/
|
/***** Reminder token modal ******/
|
||||||
ul.reminders {
|
ul.reminders .reminder {
|
||||||
@extend .tokens;
|
|
||||||
|
|
||||||
.reminder {
|
|
||||||
background: url("../assets/reminder.png") center center;
|
background: url("../assets/reminder.png") center center;
|
||||||
background-size: 100%;
|
background-size: 100%;
|
||||||
width: 100px;
|
width: 100px;
|
||||||
|
@ -312,6 +295,5 @@ ul.reminders {
|
||||||
&:hover {
|
&:hover {
|
||||||
transform: scale(1.2);
|
transform: scale(1.2);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -0,0 +1,34 @@
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "tb",
|
||||||
|
"name": "Trouble Brewing",
|
||||||
|
"hasTravelers": true,
|
||||||
|
"description": "Clouds roll in over Ravenswood Bluff, engulfing this sleepy town and its superstitious inhabitants in foreboding shadow. Freshly-washed clothes dance eerily on lines strung between cottages. Chimneys cough plumes of smoke into the air. Exotic scents waft through cracks in windows and under doors, as hidden cauldrons lay bubbling. An unusually warm Autumn breeze wraps around vine-covered walls and whispers ominously to those brave enough to walk the cobbled streets.\n\nAnxious mothers call their children home from play, as thunder begins to clap on the horizon. If you listen more closely, however, noises stranger still can be heard echoing from the neighbouring forest. Under the watchful eye of a looming monastery, silhouetted figures skip from doorway to doorway. Those who can read the signs know there is... Trouble Brewing.",
|
||||||
|
"level": "Beginner",
|
||||||
|
"roles": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bmr",
|
||||||
|
"name": "Bad Moon Rising",
|
||||||
|
"hasTravelers": true,
|
||||||
|
"description": "The sun is swallowed by a jagged horizon as another winter's day surrenders to the night. Flecks of orange and red decay into deeper browns, the forest transforming in silent anticipation of the coming snow.\n\nRavenous wolves howl from the bowels of a rocky crevasse beyond the town borders, sending birds scattering from their cozy rooks. Travelers hurry into the inn, seeking shelter from the gathering chill. They warm themselves with hot tea, sweet strains of music and hearty ale, unaware that strange and nefarious eyes stalk them from the ruins of this once great city.\n\nTonight, even the livestock know there is a... Bad Moon Rising.",
|
||||||
|
"level": "Intermediate",
|
||||||
|
"roles": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "snv",
|
||||||
|
"name": "Sects & Violets",
|
||||||
|
"hasTravelers": true,
|
||||||
|
"description": "Vibrant spring gives way to a warm and inviting summer. Flowers of every description blossom as far as the eye can see, tenderly nurtured in public gardens and window boxes overlooking the lavish promenade. Birds sing, artists paint and philosophers ponder life's greatest mysteries inside a bustling tavern as a circus pitches its endearingly ragged tent on the edge of town.\n\nAs the townsfolk bask in frivolity and mischief, indulging themselves in fine entertainment and even finer wine, dark and clandestine forces are assembling. Witches and cults lurk in majestic ruins on the fringes of the community, hosting secret meetings in underground caves and malevolently plotting the downfall of Ravenswood Bluff and its revelers.\n\nThe time is ripe for... Sects & Violets.",
|
||||||
|
"level": "Intermediate",
|
||||||
|
"roles": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "luf",
|
||||||
|
"name": "Laissez un Faire",
|
||||||
|
"hasTravelers": false,
|
||||||
|
"description": "",
|
||||||
|
"level": "Veteran",
|
||||||
|
"roles": ["balloonist", "savant", "amnesiac", "fisherman", "artist", "cannibal", "mutant", "lunatic", "widow", "goblin", "leviathan"]
|
||||||
|
}
|
||||||
|
]
|
253
src/roles.json
253
src/roles.json
|
@ -2,7 +2,7 @@
|
||||||
{
|
{
|
||||||
"id": "washerwoman",
|
"id": "washerwoman",
|
||||||
"name": "Washerwoman",
|
"name": "Washerwoman",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "townsfolk",
|
"team": "townsfolk",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
{
|
{
|
||||||
"id": "librarian",
|
"id": "librarian",
|
||||||
"name": "Librarian",
|
"name": "Librarian",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "townsfolk",
|
"team": "townsfolk",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
{
|
{
|
||||||
"id": "investigator",
|
"id": "investigator",
|
||||||
"name": "Investigator",
|
"name": "Investigator",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "townsfolk",
|
"team": "townsfolk",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
|
@ -44,7 +44,7 @@
|
||||||
{
|
{
|
||||||
"id": "chef",
|
"id": "chef",
|
||||||
"name": "Chef",
|
"name": "Chef",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "townsfolk",
|
"team": "townsfolk",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
|
@ -55,7 +55,7 @@
|
||||||
{
|
{
|
||||||
"id": "empath",
|
"id": "empath",
|
||||||
"name": "Empath",
|
"name": "Empath",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "townsfolk",
|
"team": "townsfolk",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
|
@ -66,7 +66,7 @@
|
||||||
{
|
{
|
||||||
"id": "fortuneteller",
|
"id": "fortuneteller",
|
||||||
"name": "Fortune Teller",
|
"name": "Fortune Teller",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "townsfolk",
|
"team": "townsfolk",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
|
@ -79,7 +79,7 @@
|
||||||
{
|
{
|
||||||
"id": "undertaker",
|
"id": "undertaker",
|
||||||
"name": "Undertaker",
|
"name": "Undertaker",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "townsfolk",
|
"team": "townsfolk",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
|
@ -92,7 +92,7 @@
|
||||||
{
|
{
|
||||||
"id": "monk",
|
"id": "monk",
|
||||||
"name": "Monk",
|
"name": "Monk",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "townsfolk",
|
"team": "townsfolk",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
|
@ -105,7 +105,7 @@
|
||||||
{
|
{
|
||||||
"id": "ravenkeeper",
|
"id": "ravenkeeper",
|
||||||
"name": "Ravenkeeper",
|
"name": "Ravenkeeper",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "townsfolk",
|
"team": "townsfolk",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
|
@ -116,7 +116,7 @@
|
||||||
{
|
{
|
||||||
"id": "mayor",
|
"id": "mayor",
|
||||||
"name": "Mayor",
|
"name": "Mayor",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "townsfolk",
|
"team": "townsfolk",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
|
@ -127,7 +127,7 @@
|
||||||
{
|
{
|
||||||
"id": "slayer",
|
"id": "slayer",
|
||||||
"name": "Slayer",
|
"name": "Slayer",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "townsfolk",
|
"team": "townsfolk",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
|
@ -140,7 +140,7 @@
|
||||||
{
|
{
|
||||||
"id": "soldier",
|
"id": "soldier",
|
||||||
"name": "Soldier",
|
"name": "Soldier",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "townsfolk",
|
"team": "townsfolk",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
|
@ -151,7 +151,7 @@
|
||||||
{
|
{
|
||||||
"id": "virgin",
|
"id": "virgin",
|
||||||
"name": "Virgin",
|
"name": "Virgin",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "townsfolk",
|
"team": "townsfolk",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
|
@ -164,7 +164,7 @@
|
||||||
{
|
{
|
||||||
"id": "butler",
|
"id": "butler",
|
||||||
"name": "Butler",
|
"name": "Butler",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "outsider",
|
"team": "outsider",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
|
@ -177,7 +177,7 @@
|
||||||
{
|
{
|
||||||
"id": "drunk",
|
"id": "drunk",
|
||||||
"name": "Drunk",
|
"name": "Drunk",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "outsider",
|
"team": "outsider",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
|
@ -190,7 +190,7 @@
|
||||||
{
|
{
|
||||||
"id": "recluse",
|
"id": "recluse",
|
||||||
"name": "Recluse",
|
"name": "Recluse",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "outsider",
|
"team": "outsider",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
|
@ -201,7 +201,7 @@
|
||||||
{
|
{
|
||||||
"id": "saint",
|
"id": "saint",
|
||||||
"name": "Saint",
|
"name": "Saint",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "outsider",
|
"team": "outsider",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
|
@ -212,7 +212,7 @@
|
||||||
{
|
{
|
||||||
"id": "baron",
|
"id": "baron",
|
||||||
"name": "Baron",
|
"name": "Baron",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "minion",
|
"team": "minion",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
|
@ -223,7 +223,7 @@
|
||||||
{
|
{
|
||||||
"id": "poisoner",
|
"id": "poisoner",
|
||||||
"name": "Poisoner",
|
"name": "Poisoner",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "minion",
|
"team": "minion",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
|
@ -236,7 +236,7 @@
|
||||||
{
|
{
|
||||||
"id": "spy",
|
"id": "spy",
|
||||||
"name": "Spy",
|
"name": "Spy",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "minion",
|
"team": "minion",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
|
@ -247,7 +247,7 @@
|
||||||
{
|
{
|
||||||
"id": "scarletwoman",
|
"id": "scarletwoman",
|
||||||
"name": "Scarlet Woman",
|
"name": "Scarlet Woman",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "minion",
|
"team": "minion",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
|
@ -255,12 +255,12 @@
|
||||||
"Demon"
|
"Demon"
|
||||||
],
|
],
|
||||||
"setup": false,
|
"setup": false,
|
||||||
"ability": "If there are 5 or more players alive (Travellers don't count) and the Demon dies, you become the Demon."
|
"ability": "If there are 5 or more players alive (Travelers don't count) and the Demon dies, you become the Demon."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "imp",
|
"id": "imp",
|
||||||
"name": "Imp",
|
"name": "Imp",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"team": "demon",
|
"team": "demon",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
|
@ -272,7 +272,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "grandmother",
|
"id": "grandmother",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Grandchild"],
|
"reminders": ["Grandchild"],
|
||||||
|
@ -283,7 +283,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "sailor",
|
"id": "sailor",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Drunk"],
|
"reminders": ["Drunk"],
|
||||||
|
@ -294,7 +294,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "chambermaid",
|
"id": "chambermaid",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": [],
|
"reminders": [],
|
||||||
|
@ -305,7 +305,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "exorcist",
|
"id": "exorcist",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Chosen"],
|
"reminders": ["Chosen"],
|
||||||
|
@ -316,7 +316,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "innkeeper",
|
"id": "innkeeper",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Protected", "Drunk"],
|
"reminders": ["Protected", "Drunk"],
|
||||||
|
@ -327,7 +327,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "gambler",
|
"id": "gambler",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Die"],
|
"reminders": ["Die"],
|
||||||
|
@ -338,7 +338,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "gossip",
|
"id": "gossip",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Die"],
|
"reminders": ["Die"],
|
||||||
|
@ -349,7 +349,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "courtier",
|
"id": "courtier",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Drunk 1", "Drunk 2", "Drunk 3", "Used"],
|
"reminders": ["Drunk 1", "Drunk 2", "Drunk 3", "Used"],
|
||||||
|
@ -360,7 +360,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "professor",
|
"id": "professor",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Alive", "Used"],
|
"reminders": ["Alive", "Used"],
|
||||||
|
@ -371,7 +371,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "minstrel",
|
"id": "minstrel",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Everyone drunk"],
|
"reminders": ["Everyone drunk"],
|
||||||
|
@ -382,7 +382,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "tealady",
|
"id": "tealady",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
"reminders": ["Protected"],
|
"reminders": ["Protected"],
|
||||||
|
@ -393,7 +393,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "pacifist",
|
"id": "pacifist",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
"reminders": [],
|
"reminders": [],
|
||||||
|
@ -404,7 +404,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "fool",
|
"id": "fool",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
"reminders": ["Used"],
|
"reminders": ["Used"],
|
||||||
|
@ -415,7 +415,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "tinker",
|
"id": "tinker",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Die"],
|
"reminders": ["Die"],
|
||||||
|
@ -426,7 +426,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "moonchild",
|
"id": "moonchild",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Die"],
|
"reminders": ["Die"],
|
||||||
|
@ -437,7 +437,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "goon",
|
"id": "goon",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Drunk"],
|
"reminders": ["Drunk"],
|
||||||
|
@ -448,7 +448,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "lunatic",
|
"id": "lunatic",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Attack 1", "Attack 2", "Attack 3", "Decoy"],
|
"reminders": ["Attack 1", "Attack 2", "Attack 3", "Decoy"],
|
||||||
|
@ -459,7 +459,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "godfather",
|
"id": "godfather",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Died today", "Die"],
|
"reminders": ["Died today", "Die"],
|
||||||
|
@ -470,7 +470,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "devilsadvocate",
|
"id": "devilsadvocate",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Survives execution"],
|
"reminders": ["Survives execution"],
|
||||||
|
@ -481,7 +481,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "assassin",
|
"id": "assassin",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Die", "Used"],
|
"reminders": ["Die", "Used"],
|
||||||
|
@ -492,7 +492,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "mastermind",
|
"id": "mastermind",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
"reminders": [],
|
"reminders": [],
|
||||||
|
@ -503,7 +503,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "po",
|
"id": "po",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Die 1", "Die 2", "Die 3", "Attack x3"],
|
"reminders": ["Die 1", "Die 2", "Die 3", "Attack x3"],
|
||||||
|
@ -514,7 +514,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "zombuul",
|
"id": "zombuul",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["No death today", "Die"],
|
"reminders": ["No death today", "Die"],
|
||||||
|
@ -525,7 +525,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "pukka",
|
"id": "pukka",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Poisoned", "Die"],
|
"reminders": ["Poisoned", "Die"],
|
||||||
|
@ -536,7 +536,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "shabaloth",
|
"id": "shabaloth",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Die 1", "Die 2", "Alive"],
|
"reminders": ["Die 1", "Die 2", "Alive"],
|
||||||
|
@ -547,7 +547,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "clockmaker",
|
"id": "clockmaker",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
"reminders": [],
|
"reminders": [],
|
||||||
|
@ -558,7 +558,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "dreamer",
|
"id": "dreamer",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": [],
|
"reminders": [],
|
||||||
|
@ -569,7 +569,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "snakecharmer",
|
"id": "snakecharmer",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Poisoned"],
|
"reminders": ["Poisoned"],
|
||||||
|
@ -580,7 +580,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "mathematician",
|
"id": "mathematician",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Abnormal effect"],
|
"reminders": ["Abnormal effect"],
|
||||||
|
@ -591,7 +591,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "flowergirl",
|
"id": "flowergirl",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Demon did vote", "Demon did not vote"],
|
"reminders": ["Demon did vote", "Demon did not vote"],
|
||||||
|
@ -602,7 +602,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "towncrier",
|
"id": "towncrier",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["No Minion nominated", "Minion nominated"],
|
"reminders": ["No Minion nominated", "Minion nominated"],
|
||||||
|
@ -613,7 +613,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "oracle",
|
"id": "oracle",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": [],
|
"reminders": [],
|
||||||
|
@ -624,7 +624,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "savant",
|
"id": "savant",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
"reminders": [],
|
"reminders": [],
|
||||||
|
@ -635,7 +635,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "seamstress",
|
"id": "seamstress",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Used"],
|
"reminders": ["Used"],
|
||||||
|
@ -646,7 +646,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "philosopher",
|
"id": "philosopher",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Used", "Drunk"],
|
"reminders": ["Used", "Drunk"],
|
||||||
|
@ -657,7 +657,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "artist",
|
"id": "artist",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
"reminders": ["Used"],
|
"reminders": ["Used"],
|
||||||
|
@ -668,7 +668,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "juggler",
|
"id": "juggler",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Correct"],
|
"reminders": ["Correct"],
|
||||||
|
@ -679,7 +679,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "sage",
|
"id": "sage",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": [],
|
"reminders": [],
|
||||||
|
@ -690,7 +690,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "mutant",
|
"id": "mutant",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
"reminders": [],
|
"reminders": [],
|
||||||
|
@ -701,7 +701,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "sweetheart",
|
"id": "sweetheart",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Drunk"],
|
"reminders": ["Drunk"],
|
||||||
|
@ -712,7 +712,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "barber",
|
"id": "barber",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Swap"],
|
"reminders": ["Swap"],
|
||||||
|
@ -723,7 +723,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "klutz",
|
"id": "klutz",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
"reminders": [],
|
"reminders": [],
|
||||||
|
@ -734,7 +734,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "eviltwin",
|
"id": "eviltwin",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
"reminders": ["Twin"],
|
"reminders": ["Twin"],
|
||||||
|
@ -745,7 +745,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "witch",
|
"id": "witch",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Cursed"],
|
"reminders": ["Cursed"],
|
||||||
|
@ -756,7 +756,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "cerenovus",
|
"id": "cerenovus",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Mad"],
|
"reminders": ["Mad"],
|
||||||
|
@ -767,7 +767,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "pithag",
|
"id": "pithag",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": [],
|
"reminders": [],
|
||||||
|
@ -778,7 +778,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "fanggu",
|
"id": "fanggu",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Die"],
|
"reminders": ["Die"],
|
||||||
|
@ -789,7 +789,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "vigormortis",
|
"id": "vigormortis",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Die", "Poisoned", "Ability active"],
|
"reminders": ["Die", "Poisoned", "Ability active"],
|
||||||
|
@ -800,7 +800,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "nodashii",
|
"id": "nodashii",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Die", "Poisoned"],
|
"reminders": ["Die", "Poisoned"],
|
||||||
|
@ -811,7 +811,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "vortox",
|
"id": "vortox",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Die"],
|
"reminders": ["Die"],
|
||||||
|
@ -822,7 +822,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "scapegoat",
|
"id": "scapegoat",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
"reminders": [],
|
"reminders": [],
|
||||||
|
@ -833,7 +833,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "gunslinger",
|
"id": "gunslinger",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
"reminders": [],
|
"reminders": [],
|
||||||
|
@ -844,7 +844,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "beggar",
|
"id": "beggar",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
"reminders": [],
|
"reminders": [],
|
||||||
|
@ -855,7 +855,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "bureaucrat",
|
"id": "bureaucrat",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Vote x3"],
|
"reminders": ["Vote x3"],
|
||||||
|
@ -866,7 +866,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "thief",
|
"id": "thief",
|
||||||
"edition": "TB",
|
"edition": "tb",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Negative vote"],
|
"reminders": ["Negative vote"],
|
||||||
|
@ -877,7 +877,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "apprentice",
|
"id": "apprentice",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
"reminders": ["Apprentice ability"],
|
"reminders": ["Apprentice ability"],
|
||||||
|
@ -888,7 +888,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "matron",
|
"id": "matron",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
"reminders": [],
|
"reminders": [],
|
||||||
|
@ -899,7 +899,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "voudon",
|
"id": "voudon",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
"reminders": [],
|
"reminders": [],
|
||||||
|
@ -910,7 +910,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "judge",
|
"id": "judge",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
"reminders": ["Used"],
|
"reminders": ["Used"],
|
||||||
|
@ -921,7 +921,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "bishop",
|
"id": "bishop",
|
||||||
"edition": "BMR",
|
"edition": "bmr",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
"reminders": ["Nominate Good", "Nominate Evil"],
|
"reminders": ["Nominate Good", "Nominate Evil"],
|
||||||
|
@ -932,7 +932,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "butcher",
|
"id": "butcher",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
"reminders": [],
|
"reminders": [],
|
||||||
|
@ -943,7 +943,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "bonecollector",
|
"id": "bonecollector",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Used", "Ability active"],
|
"reminders": ["Used", "Ability active"],
|
||||||
|
@ -954,7 +954,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "harlot",
|
"id": "harlot",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Die"],
|
"reminders": ["Die"],
|
||||||
|
@ -965,7 +965,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "barista",
|
"id": "barista",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": true,
|
"firstNight": true,
|
||||||
"otherNight": true,
|
"otherNight": true,
|
||||||
"reminders": ["Ability x2", "Healthy & Sober"],
|
"reminders": ["Ability x2", "Healthy & Sober"],
|
||||||
|
@ -976,7 +976,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "deviant",
|
"id": "deviant",
|
||||||
"edition": "SNV",
|
"edition": "snv",
|
||||||
"firstNight": false,
|
"firstNight": false,
|
||||||
"otherNight": false,
|
"otherNight": false,
|
||||||
"reminders": [],
|
"reminders": [],
|
||||||
|
@ -984,5 +984,82 @@
|
||||||
"name": "Deviant",
|
"name": "Deviant",
|
||||||
"team": "traveler",
|
"team": "traveler",
|
||||||
"ability": "If you were funny today, you can not be exiled."
|
"ability": "If you were funny today, you can not be exiled."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "balloonist",
|
||||||
|
"edition": "",
|
||||||
|
"firstNight": true,
|
||||||
|
"otherNight": true,
|
||||||
|
"reminders": ["Seen"],
|
||||||
|
"setup": true,
|
||||||
|
"name": "Balloonist",
|
||||||
|
"team": "townsfolk",
|
||||||
|
"ability": "Each night, you learn 1 player of each character type, until there are no more types to learn. [+1 Outsider]"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "amnesiac",
|
||||||
|
"edition": "",
|
||||||
|
"firstNight": false,
|
||||||
|
"otherNight": false,
|
||||||
|
"reminders": [],
|
||||||
|
"setup": false,
|
||||||
|
"name": "Amnesiac",
|
||||||
|
"team": "townsfolk",
|
||||||
|
"ability": "You do not know what your ability is. Each day, privately guess what it is: you learn how accurate you are."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "cannibal",
|
||||||
|
"edition": "",
|
||||||
|
"firstNight": false,
|
||||||
|
"otherNight": true,
|
||||||
|
"reminders": ["Ability gained", "Poisoned"],
|
||||||
|
"setup": false,
|
||||||
|
"name": "Cannibal",
|
||||||
|
"team": "townsfolk",
|
||||||
|
"ability": "You have the ability of the recently killed executee. If they are evil, you are poisoned until a good player dies this way."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "fisherman",
|
||||||
|
"edition": "",
|
||||||
|
"firstNight": false,
|
||||||
|
"otherNight": false,
|
||||||
|
"reminders": ["Used"],
|
||||||
|
"setup": false,
|
||||||
|
"name": "Fisherman",
|
||||||
|
"team": "townsfolk",
|
||||||
|
"ability": "Once per game, during the day, visit the Storyteller for some advice to help you win."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "goblin",
|
||||||
|
"edition": "",
|
||||||
|
"firstNight": false,
|
||||||
|
"otherNight": false,
|
||||||
|
"reminders": ["Claimed today"],
|
||||||
|
"setup": false,
|
||||||
|
"name": "Goblin",
|
||||||
|
"team": "minion",
|
||||||
|
"ability": "When nominated, you may publicly claim to be the Goblin: if you are executed that day, your team wins."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "widow",
|
||||||
|
"edition": "",
|
||||||
|
"firstNight": true,
|
||||||
|
"otherNight": false,
|
||||||
|
"reminders": ["Poisoned", "Knowing"],
|
||||||
|
"setup": false,
|
||||||
|
"name": "Widow",
|
||||||
|
"team": "minion",
|
||||||
|
"ability": "On your 1st night, look at the Grimoire & choose a player: they are poisoned. 1 good player knows a Widow is in play."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "leviathan",
|
||||||
|
"edition": "",
|
||||||
|
"firstNight": false,
|
||||||
|
"otherNight": false,
|
||||||
|
"reminders": ["Good executed", "Day 1", "Day 2", "Day 3", "Day 4", "Day 5"],
|
||||||
|
"setup": false,
|
||||||
|
"name": "Leviathan",
|
||||||
|
"team": "demon",
|
||||||
|
"ability": "All players know you are in play. After 5 days, evil wins. If more than 1 good player is executed, evil wins."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -3,7 +3,13 @@ $townsfolk: #1f65ff;
|
||||||
$outsider: #46d5ff;
|
$outsider: #46d5ff;
|
||||||
$minion: #ff6900;
|
$minion: #ff6900;
|
||||||
$demon: #ce0100;
|
$demon: #ce0100;
|
||||||
$traveller: #cc04ff;
|
$traveler: #cc04ff;
|
||||||
|
|
||||||
|
$editions:
|
||||||
|
'tb',
|
||||||
|
'bmr',
|
||||||
|
'snv'
|
||||||
|
;
|
||||||
|
|
||||||
$roles:
|
$roles:
|
||||||
'apprentice',
|
'apprentice',
|
||||||
|
|
Loading…
Reference in New Issue