From 2df32af2669c8051e78b09009eb6f71a21c773c7 Mon Sep 17 00:00:00 2001 From: Steffen Date: Wed, 22 Apr 2020 23:07:25 +0200 Subject: [PATCH] added night order --- src/App.vue | 18 +- src/components/Player.vue | 72 +++ src/components/Token.vue | 5 +- src/components/TownSquare.vue | 8 +- src/main.js | 4 +- src/roles.json | 811 ++++++++++++++++++++++++---------- 6 files changed, 668 insertions(+), 250 deletions(-) diff --git a/src/App.vue b/src/App.vue index 909abbb..9395c83 100644 --- a/src/App.vue +++ b/src/App.vue @@ -52,7 +52,7 @@ @click="takeScreenshot()" v-bind:class="{ success: isScreenshotSuccess }" /> - +
  • Toggle Grimoire
  • @@ -223,6 +223,22 @@ export default { watch: { players: { handler(newPlayers) { + const firstNight = [0]; + const otherNight = [0]; + newPlayers.forEach(({ role }) => { + if (role.firstNight && !firstNight.includes(role.firstNight)) { + firstNight.push(role.firstNight); + } + if (role.otherNight && !otherNight.includes(role.otherNight)) { + otherNight.push(role.otherNight); + } + }); + firstNight.sort(); + otherNight.sort(); + newPlayers.forEach(player => { + player.firstNight = Math.max(firstNight.indexOf(player.role.firstNight), 0); + player.otherNight = Math.max(otherNight.indexOf(player.role.otherNight), 0); + }); localStorage.players = JSON.stringify( newPlayers.map(player => ({ ...player, diff --git a/src/components/Player.vue b/src/components/Player.vue index dc684ff..fb34781 100644 --- a/src/components/Player.vue +++ b/src/components/Player.vue @@ -11,6 +11,16 @@ >
    + +
    + {{ player.firstNight }}. + {{ player.role.firstNightReminder }} +
    +
    + {{ player.otherNight }}. + {{ player.role.otherNightReminder }} +
    +
    @@ -283,6 +293,68 @@ export default { opacity: 1; } +/**** Night reminders ****/ +.player .night { + position: absolute; + top: 40%; + width: 100%; + z-index: 2; + cursor: pointer; + opacity: 1; + transition: opacity 200ms; + + #townsquare.public & { + opacity: 0; + pointer-events: none; + } + + &:hover ~ .token .ability { + opacity: 0; + } + + &.first em { + left: -15px; + background: linear-gradient( + 180deg, + rgba(0, 0, 0, 1) 0%, + rgba(147, 0, 0, 1) 100% + ); + } + + &.other em { + right: -15px; + background: linear-gradient( + 180deg, + rgba(0, 0, 0, 1) 0%, + rgba(7, 0, 147, 1) 100% + ); + } + + em { + font-style: normal; + position: absolute; + width: 40px; + height: 40px; + text-align: center; + line-height: 37px; + top: -20px; + border-radius: 50%; + border: 3px solid black; + filter: drop-shadow(0 0 6px rgba(0, 0, 0, 0.5)); + font-weight: bold; + opacity: 1; + transition: opacity 200ms; + } + + #app.screenshot & { + display: none; + } +} + +.player.dead .night em { + opacity: 0; +} + /***** Reminder token *****/ .circle .reminder { background: url("../assets/reminder.png") center center; diff --git a/src/components/Token.vue b/src/components/Token.vue index 3f3dfd4..654e950 100644 --- a/src/components/Token.vue +++ b/src/components/Token.vue @@ -45,6 +45,8 @@ export default { border: 3px solid black; box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); cursor: pointer; + display: flex; + align-items: center; &:before { content: " "; @@ -102,8 +104,7 @@ export default { display: flex; position: absolute; padding: 5px 10px; - top: 20px; - left: 110%; + left: 120%; width: 250px; z-index: 25; font-size: 80%; diff --git a/src/components/TownSquare.vue b/src/components/TownSquare.vue index 18aed8e..b22208d 100644 --- a/src/components/TownSquare.vue +++ b/src/components/TownSquare.vue @@ -213,8 +213,9 @@ export default { z-index: $item-count - $i + 1; } @else { z-index: $i - 1; - .ability { - right: 110%; + .ability, + .night span { + right: 120%; left: auto; &:before { border-right-color: transparent; @@ -229,7 +230,8 @@ export default { } .life, .token, - .shroud { + .shroud, + .night { transition-delay: ($i - 1) * 50ms; } diff --git a/src/main.js b/src/main.js index 664fece..2dcb722 100644 --- a/src/main.js +++ b/src/main.js @@ -8,7 +8,7 @@ import { faUserFriends, faUser, faTimesCircle, - faCogs, + faCog, faSearchMinus, faSearchPlus, faCamera @@ -22,7 +22,7 @@ library.add( faUserFriends, faUser, faTimesCircle, - faCogs, + faCog, faSearchMinus, faSearchPlus, faCamera diff --git a/src/roles.json b/src/roles.json index 20175bf..18f2c5e 100644 --- a/src/roles.json +++ b/src/roles.json @@ -4,8 +4,10 @@ "name": "Washerwoman", "edition": "tb", "team": "townsfolk", - "firstNight": true, - "otherNight": false, + "firstNight": 15, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [ "Townsfolk", "Decoy" @@ -18,8 +20,10 @@ "name": "Librarian", "edition": "tb", "team": "townsfolk", - "firstNight": true, - "otherNight": false, + "firstNight": 16, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [ "Outsider", "Decoy" @@ -32,8 +36,10 @@ "name": "Investigator", "edition": "tb", "team": "townsfolk", - "firstNight": true, - "otherNight": false, + "firstNight": 17, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [ "Minion", "Decoy" @@ -46,8 +52,10 @@ "name": "Chef", "edition": "tb", "team": "townsfolk", - "firstNight": true, - "otherNight": false, + "firstNight": 18, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [], "setup": false, "ability": "You start knowing how many pairs of evil players there are." @@ -57,8 +65,10 @@ "name": "Empath", "edition": "tb", "team": "townsfolk", - "firstNight": true, - "otherNight": true, + "firstNight": 19, + "firstNightReminder": "", + "otherNight": 37, + "otherNightReminder": "", "reminders": [], "setup": false, "ability": "Each night, you learn how many of your 2 alive neighbours are evil." @@ -68,8 +78,10 @@ "name": "Fortune Teller", "edition": "tb", "team": "townsfolk", - "firstNight": true, - "otherNight": true, + "firstNight": 20, + "firstNightReminder": "", + "otherNight": 38, + "otherNightReminder": "", "reminders": [ "Decoy" ], @@ -81,8 +93,10 @@ "name": "Undertaker", "edition": "tb", "team": "townsfolk", - "firstNight": false, - "otherNight": true, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 40, + "otherNightReminder": "", "reminders": [ "Executed" ], @@ -94,8 +108,10 @@ "name": "Monk", "edition": "tb", "team": "townsfolk", - "firstNight": false, - "otherNight": true, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 8, + "otherNightReminder": "", "reminders": [ "Protected" ], @@ -107,8 +123,10 @@ "name": "Ravenkeeper", "edition": "tb", "team": "townsfolk", - "firstNight": false, - "otherNight": true, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 35, + "otherNightReminder": "", "reminders": [], "setup": false, "ability": "If you die at night, you are woken to choose a player: you learn their character." @@ -118,8 +136,10 @@ "name": "Mayor", "edition": "tb", "team": "townsfolk", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [], "setup": false, "ability": "If only 3 players live & no execution occurs, your team wins. If you die at night, another player might die instead." @@ -129,8 +149,10 @@ "name": "Slayer", "edition": "tb", "team": "townsfolk", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [ "Used" ], @@ -142,8 +164,10 @@ "name": "Soldier", "edition": "tb", "team": "townsfolk", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [], "setup": false, "ability": "You are safe from the Demon." @@ -153,8 +177,10 @@ "name": "Virgin", "edition": "tb", "team": "townsfolk", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [ "Used" ], @@ -166,8 +192,10 @@ "name": "Butler", "edition": "tb", "team": "outsider", - "firstNight": true, - "otherNight": true, + "firstNight": 21, + "firstNightReminder": "", + "otherNight": 39, + "otherNightReminder": "", "reminders": [ "Master" ], @@ -179,8 +207,10 @@ "name": "Drunk", "edition": "tb", "team": "outsider", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [ "Drunk" ], @@ -192,8 +222,10 @@ "name": "Recluse", "edition": "tb", "team": "outsider", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [], "setup": false, "ability": "You might register as evil and as a Minion or Demon, even if dead." @@ -203,8 +235,10 @@ "name": "Saint", "edition": "tb", "team": "outsider", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [], "setup": false, "ability": "If you die by execution, your team loses." @@ -214,8 +248,10 @@ "name": "Baron", "edition": "tb", "team": "minion", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [], "setup": true, "ability": "There are extra Outsiders in play. [+2 Outsiders]" @@ -225,8 +261,10 @@ "name": "Poisoner", "edition": "tb", "team": "minion", - "firstNight": true, - "otherNight": true, + "firstNight": 4, + "firstNightReminder": "", + "otherNight": 3, + "otherNightReminder": "", "reminders": [ "Poisoned" ], @@ -238,8 +276,10 @@ "name": "Spy", "edition": "tb", "team": "minion", - "firstNight": true, - "otherNight": true, + "firstNight": 26, + "firstNightReminder": "", + "otherNight": 47, + "otherNightReminder": "", "reminders": [], "setup": false, "ability": "Each night, you see the Grimoire. You might register as good and as a Townsfolk or Outsider, even if dead." @@ -249,8 +289,10 @@ "name": "Scarlet Woman", "edition": "tb", "team": "minion", - "firstNight": false, - "otherNight": true, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 13, + "otherNightReminder": "", "reminders": [ "Demon" ], @@ -262,8 +304,10 @@ "name": "Imp", "edition": "tb", "team": "demon", - "firstNight": false, - "otherNight": true, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 18, + "otherNightReminder": "", "reminders": [ "Die" ], @@ -273,9 +317,13 @@ { "id": "grandmother", "edition": "bmr", - "firstNight": true, - "otherNight": true, - "reminders": ["Grandchild"], + "firstNight": 22, + "firstNightReminder": "", + "otherNight": 31, + "otherNightReminder": "", + "reminders": [ + "Grandchild" + ], "setup": false, "name": "Grandmother", "team": "townsfolk", @@ -284,9 +332,13 @@ { "id": "sailor", "edition": "bmr", - "firstNight": true, - "otherNight": true, - "reminders": ["Drunk"], + "firstNight": 3, + "firstNightReminder": "", + "otherNight": 2, + "otherNightReminder": "", + "reminders": [ + "Drunk" + ], "setup": false, "name": "Sailor", "team": "townsfolk", @@ -295,8 +347,10 @@ { "id": "chambermaid", "edition": "bmr", - "firstNight": true, - "otherNight": true, + "firstNight": 28, + "firstNightReminder": "", + "otherNight": 49, + "otherNightReminder": "", "reminders": [], "setup": false, "name": "Chambermaid", @@ -306,9 +360,13 @@ { "id": "exorcist", "edition": "bmr", - "firstNight": false, - "otherNight": true, - "reminders": ["Chosen"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 16, + "otherNightReminder": "", + "reminders": [ + "Chosen" + ], "setup": false, "name": "Exorcist", "team": "townsfolk", @@ -317,9 +375,14 @@ { "id": "innkeeper", "edition": "bmr", - "firstNight": false, - "otherNight": true, - "reminders": ["Protected", "Drunk"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 5, + "otherNightReminder": "", + "reminders": [ + "Protected", + "Drunk" + ], "setup": false, "name": "Innkeeper", "team": "townsfolk", @@ -328,9 +391,13 @@ { "id": "gambler", "edition": "bmr", - "firstNight": false, - "otherNight": true, - "reminders": ["Die"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 14, + "otherNightReminder": "", + "reminders": [ + "Die" + ], "setup": false, "name": "Gambler", "team": "townsfolk", @@ -339,9 +406,13 @@ { "id": "gossip", "edition": "bmr", - "firstNight": false, - "otherNight": true, - "reminders": ["Die"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 28, + "otherNightReminder": "", + "reminders": [ + "Die" + ], "setup": false, "name": "Gossip", "team": "townsfolk", @@ -350,9 +421,16 @@ { "id": "courtier", "edition": "bmr", - "firstNight": true, - "otherNight": true, - "reminders": ["Drunk 1", "Drunk 2", "Drunk 3", "Used"], + "firstNight": 7, + "firstNightReminder": "", + "otherNight": 6, + "otherNightReminder": "", + "reminders": [ + "Drunk 1", + "Drunk 2", + "Drunk 3", + "Used" + ], "setup": false, "name": "Courtier", "team": "townsfolk", @@ -361,9 +439,14 @@ { "id": "professor", "edition": "bmr", - "firstNight": false, - "otherNight": true, - "reminders": ["Alive", "Used"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 34, + "otherNightReminder": "", + "reminders": [ + "Alive", + "Used" + ], "setup": false, "name": "Professor", "team": "townsfolk", @@ -372,9 +455,13 @@ { "id": "minstrel", "edition": "bmr", - "firstNight": false, - "otherNight": true, - "reminders": ["Everyone drunk"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 1, + "otherNightReminder": "", + "reminders": [ + "Everyone drunk" + ], "setup": false, "name": "Minstrel", "team": "townsfolk", @@ -383,9 +470,13 @@ { "id": "tealady", "edition": "bmr", - "firstNight": false, - "otherNight": false, - "reminders": ["Protected"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [ + "Protected" + ], "setup": false, "name": "Tea Lady", "team": "townsfolk", @@ -394,8 +485,10 @@ { "id": "pacifist", "edition": "bmr", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [], "setup": false, "name": "Pacifist", @@ -405,9 +498,13 @@ { "id": "fool", "edition": "bmr", - "firstNight": false, - "otherNight": false, - "reminders": ["Used"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [ + "Used" + ], "setup": false, "name": "Fool", "team": "townsfolk", @@ -416,9 +513,13 @@ { "id": "tinker", "edition": "bmr", - "firstNight": false, - "otherNight": true, - "reminders": ["Die"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 29, + "otherNightReminder": "", + "reminders": [ + "Die" + ], "setup": false, "name": "Tinker", "team": "outsider", @@ -427,9 +528,13 @@ { "id": "moonchild", "edition": "bmr", - "firstNight": false, - "otherNight": true, - "reminders": ["Die"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 30, + "otherNightReminder": "", + "reminders": [ + "Die" + ], "setup": false, "name": "Moonchild", "team": "outsider", @@ -438,9 +543,13 @@ { "id": "goon", "edition": "bmr", - "firstNight": true, - "otherNight": true, - "reminders": ["Drunk"], + "firstNight": 29, + "firstNightReminder": "", + "otherNight": 50, + "otherNightReminder": "", + "reminders": [ + "Drunk" + ], "setup": false, "name": "Goon", "team": "outsider", @@ -449,9 +558,16 @@ { "id": "lunatic", "edition": "bmr", - "firstNight": true, - "otherNight": true, - "reminders": ["Attack 1", "Attack 2", "Attack 3", "Decoy"], + "firstNight": 1, + "firstNightReminder": "", + "otherNight": 15, + "otherNightReminder": "", + "reminders": [ + "Attack 1", + "Attack 2", + "Attack 3", + "Decoy" + ], "setup": false, "name": "Lunatic", "team": "outsider", @@ -460,9 +576,14 @@ { "id": "godfather", "edition": "bmr", - "firstNight": true, - "otherNight": true, - "reminders": ["Died today", "Die"], + "firstNight": 9, + "firstNightReminder": "", + "otherNight": 32, + "otherNightReminder": "", + "reminders": [ + "Died today", + "Die" + ], "setup": true, "name": "Godfather", "team": "minion", @@ -471,20 +592,29 @@ { "id": "devilsadvocate", "edition": "bmr", - "firstNight": true, - "otherNight": true, - "reminders": ["Survives execution"], + "firstNight": 10, + "firstNightReminder": "", + "otherNight": 9, + "otherNightReminder": "", + "reminders": [ + "Survives execution" + ], "setup": false, - "name": "Devils Advocate", + "name": "Devil's Advocate", "team": "minion", "ability": "Each night, choose a living player (not the same as last night): if executed tomorrow, they do not die." }, { "id": "assassin", "edition": "bmr", - "firstNight": false, - "otherNight": true, - "reminders": ["Die", "Used"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 26, + "otherNightReminder": "", + "reminders": [ + "Die", + "Used" + ], "setup": false, "name": "Assassin", "team": "minion", @@ -493,8 +623,10 @@ { "id": "mastermind", "edition": "bmr", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [], "setup": false, "name": "Mastermind", @@ -504,9 +636,16 @@ { "id": "po", "edition": "bmr", - "firstNight": false, - "otherNight": true, - "reminders": ["Die 1", "Die 2", "Die 3", "Attack x3"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 21, + "otherNightReminder": "", + "reminders": [ + "Die 1", + "Die 2", + "Die 3", + "Attack x3" + ], "setup": false, "name": "Po", "team": "demon", @@ -515,9 +654,14 @@ { "id": "zombuul", "edition": "bmr", - "firstNight": false, - "otherNight": true, - "reminders": ["No death today", "Die"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 19, + "otherNightReminder": "", + "reminders": [ + "No death today", + "Die" + ], "setup": false, "name": "Zombuul", "team": "demon", @@ -526,9 +670,14 @@ { "id": "pukka", "edition": "bmr", - "firstNight": true, - "otherNight": true, - "reminders": ["Poisoned", "Die"], + "firstNight": 14, + "firstNightReminder": "", + "otherNight": 17, + "otherNightReminder": "", + "reminders": [ + "Poisoned", + "Die" + ], "setup": false, "name": "Pukka", "team": "demon", @@ -537,9 +686,15 @@ { "id": "shabaloth", "edition": "bmr", - "firstNight": false, - "otherNight": true, - "reminders": ["Die 1", "Die 2", "Alive"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 20, + "otherNightReminder": "", + "reminders": [ + "Die 1", + "Die 2", + "Alive" + ], "setup": false, "name": "Shabaloth", "team": "demon", @@ -548,8 +703,10 @@ { "id": "clockmaker", "edition": "snv", - "firstNight": true, - "otherNight": false, + "firstNight": 23, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [], "setup": false, "name": "Clockmaker", @@ -559,8 +716,10 @@ { "id": "dreamer", "edition": "snv", - "firstNight": true, - "otherNight": true, + "firstNight": 24, + "firstNightReminder": "", + "otherNight": 41, + "otherNightReminder": "", "reminders": [], "setup": false, "name": "Dreamer", @@ -570,9 +729,13 @@ { "id": "snakecharmer", "edition": "snv", - "firstNight": true, - "otherNight": true, - "reminders": ["Poisoned"], + "firstNight": 8, + "firstNightReminder": "", + "otherNight": 7, + "otherNightReminder": "", + "reminders": [ + "Poisoned" + ], "setup": false, "name": "Snake Charmer", "team": "townsfolk", @@ -581,9 +744,13 @@ { "id": "mathematician", "edition": "snv", - "firstNight": true, - "otherNight": true, - "reminders": ["Abnormal effect"], + "firstNight": 27, + "firstNightReminder": "", + "otherNight": 48, + "otherNightReminder": "", + "reminders": [ + "Abnormal effect" + ], "setup": false, "name": "Mathematician", "team": "townsfolk", @@ -592,9 +759,14 @@ { "id": "flowergirl", "edition": "snv", - "firstNight": false, - "otherNight": true, - "reminders": ["Demon did vote", "Demon did not vote"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 43, + "otherNightReminder": "", + "reminders": [ + "Demon did vote", + "Demon did not vote" + ], "setup": false, "name": "Flowergirl", "team": "townsfolk", @@ -603,9 +775,14 @@ { "id": "towncrier", "edition": "snv", - "firstNight": false, - "otherNight": true, - "reminders": ["No Minion nominated", "Minion nominated"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 44, + "otherNightReminder": "", + "reminders": [ + "No Minion nominated", + "Minion nominated" + ], "setup": false, "name": "Town Crier", "team": "townsfolk", @@ -614,8 +791,10 @@ { "id": "oracle", "edition": "snv", - "firstNight": false, - "otherNight": true, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 45, + "otherNightReminder": "", "reminders": [], "setup": false, "name": "Oracle", @@ -625,8 +804,10 @@ { "id": "savant", "edition": "snv", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [], "setup": false, "name": "Savant", @@ -636,9 +817,13 @@ { "id": "seamstress", "edition": "snv", - "firstNight": true, - "otherNight": true, - "reminders": ["Used"], + "firstNight": 25, + "firstNightReminder": "", + "otherNight": 42, + "otherNightReminder": "", + "reminders": [ + "Used" + ], "setup": false, "name": "Seamstress", "team": "townsfolk", @@ -647,9 +832,14 @@ { "id": "philosopher", "edition": "snv", - "firstNight": true, - "otherNight": true, - "reminders": ["Used", "Drunk"], + "firstNight": 2, + "firstNightReminder": "", + "otherNight": 1.5, + "otherNightReminder": "", + "reminders": [ + "Used", + "Drunk" + ], "setup": false, "name": "Philosopher", "team": "townsfolk", @@ -658,9 +848,13 @@ { "id": "artist", "edition": "snv", - "firstNight": false, - "otherNight": false, - "reminders": ["Used"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [ + "Used" + ], "setup": false, "name": "Artist", "team": "townsfolk", @@ -669,9 +863,13 @@ { "id": "juggler", "edition": "snv", - "firstNight": false, - "otherNight": true, - "reminders": ["Correct"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 46, + "otherNightReminder": "", + "reminders": [ + "Correct" + ], "setup": false, "name": "Juggler", "team": "townsfolk", @@ -680,8 +878,10 @@ { "id": "sage", "edition": "snv", - "firstNight": false, - "otherNight": true, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 36, + "otherNightReminder": "", "reminders": [], "setup": false, "name": "Sage", @@ -691,8 +891,10 @@ { "id": "mutant", "edition": "snv", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [], "setup": false, "name": "Mutant", @@ -702,9 +904,13 @@ { "id": "sweetheart", "edition": "snv", - "firstNight": false, - "otherNight": true, - "reminders": ["Drunk"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 33, + "otherNightReminder": "", + "reminders": [ + "Drunk" + ], "setup": false, "name": "Sweetheart", "team": "outsider", @@ -713,9 +919,13 @@ { "id": "barber", "edition": "snv", - "firstNight": false, - "otherNight": true, - "reminders": ["Swap"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 27, + "otherNightReminder": "", + "reminders": [ + "Swap" + ], "setup": false, "name": "Barber", "team": "outsider", @@ -724,8 +934,10 @@ { "id": "klutz", "edition": "snv", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [], "setup": false, "name": "Klutz", @@ -735,9 +947,13 @@ { "id": "eviltwin", "edition": "snv", - "firstNight": true, - "otherNight": false, - "reminders": ["Twin"], + "firstNight": 11, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [ + "Twin" + ], "setup": false, "name": "Evil Twin", "team": "minion", @@ -746,9 +962,13 @@ { "id": "witch", "edition": "snv", - "firstNight": true, - "otherNight": true, - "reminders": ["Cursed"], + "firstNight": 12, + "firstNightReminder": "", + "otherNight": 10, + "otherNightReminder": "", + "reminders": [ + "Cursed" + ], "setup": false, "name": "Witch", "team": "minion", @@ -757,9 +977,13 @@ { "id": "cerenovus", "edition": "snv", - "firstNight": true, - "otherNight": true, - "reminders": ["Mad"], + "firstNight": 13, + "firstNightReminder": "", + "otherNight": 11, + "otherNightReminder": "", + "reminders": [ + "Mad" + ], "setup": false, "name": "Cerenovus", "team": "minion", @@ -768,8 +992,10 @@ { "id": "pithag", "edition": "snv", - "firstNight": false, - "otherNight": true, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 12, + "otherNightReminder": "", "reminders": [], "setup": false, "name": "Pit Hag", @@ -779,9 +1005,13 @@ { "id": "fanggu", "edition": "snv", - "firstNight": false, - "otherNight": true, - "reminders": ["Die"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 22, + "otherNightReminder": "", + "reminders": [ + "Die" + ], "setup": true, "name": "Fang Gu", "team": "demon", @@ -790,9 +1020,15 @@ { "id": "vigormortis", "edition": "snv", - "firstNight": false, - "otherNight": true, - "reminders": ["Die", "Poisoned", "Ability active"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 25, + "otherNightReminder": "", + "reminders": [ + "Die", + "Poisoned", + "Ability active" + ], "setup": true, "name": "Vigormortis", "team": "demon", @@ -801,9 +1037,14 @@ { "id": "nodashii", "edition": "snv", - "firstNight": false, - "otherNight": true, - "reminders": ["Die", "Poisoned"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 23, + "otherNightReminder": "", + "reminders": [ + "Die", + "Poisoned" + ], "setup": false, "name": "No Dashii", "team": "demon", @@ -812,9 +1053,13 @@ { "id": "vortox", "edition": "snv", - "firstNight": false, - "otherNight": true, - "reminders": ["Die"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 24, + "otherNightReminder": "", + "reminders": [ + "Die" + ], "setup": false, "name": "Vortox", "team": "demon", @@ -823,8 +1068,10 @@ { "id": "scapegoat", "edition": "tb", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [], "setup": false, "name": "Scapegoat", @@ -834,8 +1081,10 @@ { "id": "gunslinger", "edition": "tb", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [], "setup": false, "name": "Gunslinger", @@ -845,8 +1094,10 @@ { "id": "beggar", "edition": "tb", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [], "setup": false, "name": "Beggar", @@ -856,9 +1107,13 @@ { "id": "bureaucrat", "edition": "tb", - "firstNight": true, - "otherNight": true, - "reminders": ["Vote x3"], + "firstNight": 1, + "firstNightReminder": "", + "otherNight": 1, + "otherNightReminder": "", + "reminders": [ + "Vote x3" + ], "setup": false, "name": "Bureaucrat", "team": "traveler", @@ -867,9 +1122,13 @@ { "id": "thief", "edition": "tb", - "firstNight": true, - "otherNight": true, - "reminders": ["Negative vote"], + "firstNight": 1, + "firstNightReminder": "", + "otherNight": 1, + "otherNightReminder": "", + "reminders": [ + "Negative vote" + ], "setup": false, "name": "Thief", "team": "traveler", @@ -878,9 +1137,13 @@ { "id": "apprentice", "edition": "bmr", - "firstNight": true, - "otherNight": false, - "reminders": ["Apprentice ability"], + "firstNight": 1, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [ + "Apprentice ability" + ], "setup": false, "name": "Apprentice", "team": "traveler", @@ -889,8 +1152,10 @@ { "id": "matron", "edition": "bmr", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [], "setup": false, "name": "Matron", @@ -900,8 +1165,10 @@ { "id": "voudon", "edition": "bmr", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [], "setup": false, "name": "Voudon", @@ -911,9 +1178,13 @@ { "id": "judge", "edition": "bmr", - "firstNight": false, - "otherNight": false, - "reminders": ["Used"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [ + "Used" + ], "setup": false, "name": "Judge", "team": "traveler", @@ -922,9 +1193,14 @@ { "id": "bishop", "edition": "bmr", - "firstNight": false, - "otherNight": false, - "reminders": ["Nominate Good", "Nominate Evil"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [ + "Nominate Good", + "Nominate Evil" + ], "setup": false, "name": "Bishop", "team": "traveler", @@ -933,8 +1209,10 @@ { "id": "butcher", "edition": "snv", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [], "setup": false, "name": "Butcher", @@ -944,9 +1222,14 @@ { "id": "bonecollector", "edition": "snv", - "firstNight": false, - "otherNight": true, - "reminders": ["Used", "Ability active"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 1, + "otherNightReminder": "", + "reminders": [ + "Used", + "Ability active" + ], "setup": false, "name": "Bone Collector", "team": "traveler", @@ -955,9 +1238,13 @@ { "id": "harlot", "edition": "snv", - "firstNight": false, - "otherNight": true, - "reminders": ["Die"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 1, + "otherNightReminder": "", + "reminders": [ + "Die" + ], "setup": false, "name": "Harlot", "team": "traveler", @@ -966,9 +1253,14 @@ { "id": "barista", "edition": "snv", - "firstNight": true, - "otherNight": true, - "reminders": ["Ability x2", "Healthy & Sober"], + "firstNight": 1, + "firstNightReminder": "", + "otherNight": 1, + "otherNightReminder": "", + "reminders": [ + "Ability x2", + "Healthy & Sober" + ], "setup": false, "name": "Barista", "team": "traveler", @@ -977,8 +1269,10 @@ { "id": "deviant", "edition": "snv", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [], "setup": false, "name": "Deviant", @@ -988,9 +1282,13 @@ { "id": "balloonist", "edition": "", - "firstNight": true, - "otherNight": true, - "reminders": ["Seen"], + "firstNight": 24, + "firstNightReminder": "", + "otherNight": 44, + "otherNightReminder": "", + "reminders": [ + "Seen" + ], "setup": true, "name": "Balloonist", "team": "townsfolk", @@ -999,8 +1297,10 @@ { "id": "amnesiac", "edition": "", - "firstNight": false, - "otherNight": false, + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", "reminders": [], "setup": false, "name": "Amnesiac", @@ -1010,9 +1310,14 @@ { "id": "cannibal", "edition": "", - "firstNight": false, - "otherNight": true, - "reminders": ["Ability gained", "Poisoned"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 43, + "otherNightReminder": "", + "reminders": [ + "Ability gained", + "Poisoned" + ], "setup": false, "name": "Cannibal", "team": "townsfolk", @@ -1021,9 +1326,13 @@ { "id": "fisherman", "edition": "", - "firstNight": false, - "otherNight": false, - "reminders": ["Used"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [ + "Used" + ], "setup": false, "name": "Fisherman", "team": "townsfolk", @@ -1032,9 +1341,13 @@ { "id": "goblin", "edition": "", - "firstNight": false, - "otherNight": false, - "reminders": ["Claimed today"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [ + "Claimed today" + ], "setup": false, "name": "Goblin", "team": "minion", @@ -1043,9 +1356,14 @@ { "id": "widow", "edition": "", - "firstNight": true, - "otherNight": false, - "reminders": ["Poisoned", "Knowing"], + "firstNight": 26, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [ + "Poisoned", + "Knowing" + ], "setup": false, "name": "Widow", "team": "minion", @@ -1054,9 +1372,18 @@ { "id": "leviathan", "edition": "", - "firstNight": false, - "otherNight": false, - "reminders": ["Good executed", "Day 1", "Day 2", "Day 3", "Day 4", "Day 5"], + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [ + "Good executed", + "Day 1", + "Day 2", + "Day 3", + "Day 4", + "Day 5" + ], "setup": false, "name": "Leviathan", "team": "demon",