diff --git a/.eslintrc.js b/.eslintrc.js index c844657..9f000da 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -8,9 +8,9 @@ module.exports = { ecmaVersion: 2020, }, rules: { - "no-console": process.env.NODE_ENV === "production" ? "warn" : "off", - "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off", - "vue/multi-word-component-names": "off", - "vue/no-reserved-component-names": "off", + "no-console": process.env.NODE_ENV === "production" ? 1 : 0, + "no-debugger": process.env.NODE_ENV === "production" ? 1 : 0, + "vue/multi-word-component-names": 0, + "vue/no-reserved-component-names": 0, }, }; diff --git a/CHANGELOG.md b/CHANGELOG.md index 6245b0a..1886b12 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Release Notes ## Upcomming Version +- Adding a missing jinx +- Updating night order (and its print) +- Correcting automatic adding/deletion of Fabled +- Adding all missing roles (up to Summoner) +- Correcting Dawn night order ### Version 3.17.0 diff --git a/package-lock.json b/package-lock.json index d53a30c..b5d05fd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,7 @@ "prettier": "^3.0.3" }, "engines": { - "node": "^16" + "node": "^18" } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -57,11 +57,11 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", + "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", "dependencies": { - "@babel/highlight": "^7.22.13", + "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" }, "engines": { @@ -172,9 +172,9 @@ } }, "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -249,9 +249,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.3.tgz", - "integrity": "sha512-uVsWNvlVsIninV2prNz/3lHCb+5CJ+e+IUBfbjToAHODtfGYLfCFuY4AU7TskI+dAKk+njsPiBjq1gKTvZOBaw==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", + "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", "bin": { "parser": "bin/babel-parser.js" }, @@ -315,9 +315,9 @@ } }, "node_modules/@eslint/js": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz", - "integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", + "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -739,9 +739,9 @@ "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==" }, "node_modules/@types/node": { - "version": "20.9.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz", - "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==", + "version": "20.9.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.2.tgz", + "integrity": "sha512-WHZXKFCEyIUJzAwh3NyyTHYSR35SevJ6mZ1nWwJafKtiQbqRTIKSRcw3Ma3acqgsent3RRDqeVwpHntMk+9irg==", "dependencies": { "undici-types": "~5.26.4" } @@ -1860,9 +1860,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001561", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001561.tgz", - "integrity": "sha512-NTt0DNoKe958Q0BE0j0c1V9jbUzhBxHIEJy7asmGrpE0yG63KTV7PLHPnK2E1O9RsQrQ081I3NLuXGS6zht3cw==", + "version": "1.0.30001563", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001563.tgz", + "integrity": "sha512-na2WUmOxnwIZtwnFI2CZ/3er0wdNzU7hN+cPYz/z2ajHThnkWjNBOpEPP4n+4r2WPM847JaMotaJE3bnfzjyKw==", "funding": [ { "type": "opencollective", @@ -2549,6 +2549,11 @@ "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==" }, + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==" + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -2989,9 +2994,9 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.581", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.581.tgz", - "integrity": "sha512-6uhqWBIapTJUxgPTCHH9sqdbxIMPt7oXl0VcAL1kOtlU6aECdcMncCrX5Z7sHQ/invtrC9jUQUef7+HhO8vVFw==" + "version": "1.4.589", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.589.tgz", + "integrity": "sha512-zF6y5v/YfoFIgwf2dDfAqVlPPsyQeWNpEWXbAlDUS8Ax4Z2VoiiZpAPC0Jm9hXEkJm2vIZpwB6rc4KnLTQffbQ==" }, "node_modules/emoji-regex": { "version": "8.0.0", @@ -3059,9 +3064,9 @@ } }, "node_modules/es-module-lexer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.0.tgz", - "integrity": "sha512-lcCr3v3OLezdfFyx9r5NRYHOUTQNnFEQ9E87Mx8Kc+iqyJNkO7MJoB4GQRTlIMw9kLLTwGw0OAkm4BQQud/d9g==" + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==" }, "node_modules/escalade": { "version": "3.1.1", @@ -3088,15 +3093,15 @@ } }, "node_modules/eslint": { - "version": "8.53.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz", - "integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==", + "version": "8.54.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", + "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.53.0", + "@eslint/js": "8.54.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -3774,9 +3779,9 @@ } }, "node_modules/flat-cache": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.1.tgz", - "integrity": "sha512-/qM2b3LUIaIgviBQovTLvijfyOQXPtSRnRK26ksj2J7rzPIecePUIpJsZ4T02Qg+xiAEKIs5K8dsHEd+VaKa/Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { "flatted": "^3.2.9", @@ -3784,7 +3789,7 @@ "rimraf": "^3.0.2" }, "engines": { - "node": ">=12.0.0" + "node": "^10.12.0 || >=12.0.0" } }, "node_modules/flatted": { @@ -4159,6 +4164,11 @@ } ] }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + }, "node_modules/html-minifier-terser": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", @@ -4331,9 +4341,9 @@ ] }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "engines": { "node": ">= 4" } @@ -4832,31 +4842,11 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" - }, "node_modules/lodash.defaultsdeep": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/lodash.defaultsdeep/-/lodash.defaultsdeep-4.6.1.tgz", "integrity": "sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==" }, - "node_modules/lodash.escape": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.escape/-/lodash.escape-4.0.1.tgz", - "integrity": "sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==" - }, - "node_modules/lodash.flatten": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", - "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==" - }, - "node_modules/lodash.invokemap": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.invokemap/-/lodash.invokemap-4.6.0.tgz", - "integrity": "sha512-CfkycNtMqgUlfjfdh2BhKO/ZXrP8ePOX5lEU/g0R3ItJcnuxWDwokMGKx1hWcfOikmyOVx6X9IwWnDGlgKl61w==" - }, "node_modules/lodash.mapvalues": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", @@ -4873,21 +4863,11 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, - "node_modules/lodash.pullall": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/lodash.pullall/-/lodash.pullall-4.2.0.tgz", - "integrity": "sha512-VhqxBKH0ZxPpLhiu68YD1KnHmbhQJQctcipvmFnqIBDYzcIHzf3Zpu0tpeOKtR4x76p9yohc506eGdOjTmyIBg==" - }, "node_modules/lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" }, - "node_modules/lodash.uniqby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", - "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==" - }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -6351,9 +6331,9 @@ } }, "node_modules/prettier": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.0.3.tgz", - "integrity": "sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", + "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -8139,23 +8119,19 @@ } }, "node_modules/webpack-bundle-analyzer": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.9.1.tgz", - "integrity": "sha512-jnd6EoYrf9yMxCyYDPj8eutJvtjQNp8PHmni/e/ulydHBWhT5J3menXt3HEkScsu9YqMAcG4CfFjs3rj5pVU1w==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-4.10.1.tgz", + "integrity": "sha512-s3P7pgexgT/HTUSYgxJyn28A+99mmLq4HsJepMPzu0R8ImJc52QNqaFYW1Z2z2uIb1/J3eYgaAWVpaC+v/1aAQ==", "dependencies": { "@discoveryjs/json-ext": "0.5.7", "acorn": "^8.0.4", "acorn-walk": "^8.0.0", "commander": "^7.2.0", + "debounce": "^1.2.1", "escape-string-regexp": "^4.0.0", "gzip-size": "^6.0.0", + "html-escaper": "^2.0.2", "is-plain-object": "^5.0.0", - "lodash.debounce": "^4.0.8", - "lodash.escape": "^4.0.1", - "lodash.flatten": "^4.4.0", - "lodash.invokemap": "^4.6.0", - "lodash.pullall": "^4.2.0", - "lodash.uniqby": "^4.7.0", "opener": "^1.5.2", "picocolors": "^1.0.0", "sirv": "^2.0.3", diff --git a/package.json b/package.json index c35ce8b..243f2f6 100644 --- a/package.json +++ b/package.json @@ -44,6 +44,6 @@ "url": "https://github.com//bra1n/townsquare.git" }, "engines": { - "node": "^16" + "node": "^18" } } diff --git a/src/assets/icons/bootlegger.png b/src/assets/icons/bootlegger.png new file mode 100644 index 0000000..e7672c6 Binary files /dev/null and b/src/assets/icons/bootlegger.png differ diff --git a/src/assets/icons/dawn.png b/src/assets/icons/dawn.png new file mode 100644 index 0000000..4913f33 Binary files /dev/null and b/src/assets/icons/dawn.png differ diff --git a/src/assets/icons/deusexfiasco.png b/src/assets/icons/deusexfiasco.png deleted file mode 100644 index 37bbcd0..0000000 Binary files a/src/assets/icons/deusexfiasco.png and /dev/null differ diff --git a/src/assets/icons/dusk.png b/src/assets/icons/dusk.png new file mode 100644 index 0000000..c70ac4f Binary files /dev/null and b/src/assets/icons/dusk.png differ diff --git a/src/assets/icons/ferryman.png b/src/assets/icons/ferryman.png new file mode 100644 index 0000000..7b25b1d Binary files /dev/null and b/src/assets/icons/ferryman.png differ diff --git a/src/assets/icons/gardener.png b/src/assets/icons/gardener.png new file mode 100644 index 0000000..4a5481c Binary files /dev/null and b/src/assets/icons/gardener.png differ diff --git a/src/assets/icons/harpy.png b/src/assets/icons/harpy.png new file mode 100644 index 0000000..eee90c4 Binary files /dev/null and b/src/assets/icons/harpy.png differ diff --git a/src/assets/icons/hatter.png b/src/assets/icons/hatter.png new file mode 100644 index 0000000..9ec1a11 Binary files /dev/null and b/src/assets/icons/hatter.png differ diff --git a/src/assets/icons/highpriestess.png b/src/assets/icons/highpriestess.png new file mode 100644 index 0000000..41845cb Binary files /dev/null and b/src/assets/icons/highpriestess.png differ diff --git a/src/assets/icons/kazali.png b/src/assets/icons/kazali.png new file mode 100644 index 0000000..0f22384 Binary files /dev/null and b/src/assets/icons/kazali.png differ diff --git a/src/assets/icons/knight.png b/src/assets/icons/knight.png new file mode 100644 index 0000000..15c84a2 Binary files /dev/null and b/src/assets/icons/knight.png differ diff --git a/src/assets/icons/ojo.png b/src/assets/icons/ojo.png new file mode 100644 index 0000000..67174d5 Binary files /dev/null and b/src/assets/icons/ojo.png differ diff --git a/src/assets/icons/plaguedoctor.png b/src/assets/icons/plaguedoctor.png new file mode 100644 index 0000000..b1f56c0 Binary files /dev/null and b/src/assets/icons/plaguedoctor.png differ diff --git a/src/assets/icons/shugenja.png b/src/assets/icons/shugenja.png new file mode 100644 index 0000000..199a200 Binary files /dev/null and b/src/assets/icons/shugenja.png differ diff --git a/src/assets/icons/steward.png b/src/assets/icons/steward.png new file mode 100644 index 0000000..824f3ff Binary files /dev/null and b/src/assets/icons/steward.png differ diff --git a/src/assets/icons/summoner.png b/src/assets/icons/summoner.png new file mode 100644 index 0000000..6ea2071 Binary files /dev/null and b/src/assets/icons/summoner.png differ diff --git a/src/assets/icons/villageidiot.png b/src/assets/icons/villageidiot.png new file mode 100644 index 0000000..67b024f Binary files /dev/null and b/src/assets/icons/villageidiot.png differ diff --git a/src/assets/icons/vizier.png b/src/assets/icons/vizier.png new file mode 100644 index 0000000..b760e25 Binary files /dev/null and b/src/assets/icons/vizier.png differ diff --git a/src/assets/icons/yaggababble.png b/src/assets/icons/yaggababble.png new file mode 100644 index 0000000..dcc0280 Binary files /dev/null and b/src/assets/icons/yaggababble.png differ diff --git a/src/components/modals/EditionModal.vue b/src/components/modals/EditionModal.vue index ecfdbb8..14fe6a3 100644 --- a/src/components/modals/EditionModal.vue +++ b/src/components/modals/EditionModal.vue @@ -44,7 +44,7 @@ )})`, }" :key="edition.id" - @click="setEdition(edition)" + @click="runEdition(edition)" > {{ edition.name }} @@ -191,16 +191,19 @@ export default { "setEdition", Object.assign({}, meta, { id: "custom" }), ); - // check for fabled and set those too, if present - if (roles.some((role) => this.$store.state.fabled.has(role.id || role))) { - const fabled = []; - roles.forEach((role) => { - if (this.$store.state.fabled.has(role.id || role)) { - fabled.push(this.$store.state.fabled.get(role.id || role)); - } - }); - this.$store.commit("players/setFabled", { fabled }); - } + // set fabled + const fabled = []; + roles.forEach((role) => { + if (this.$store.state.fabled.has(role.id || role)) { + fabled.push(this.$store.state.fabled.get(role.id || role)); + } + }); + this.$store.commit("players/setFabled", { fabled }); + }, + runEdition(edition) { + this.$store.commit("setEdition", edition); + // The editions contain no Fabled + this.$store.commit("players/setFabled", { fabled: [] }); }, ...mapMutations(["toggleModal", "setEdition"]), }, diff --git a/src/components/modals/NightOrderModal.vue b/src/components/modals/NightOrderModal.vue index dd80a98..92458e8 100644 --- a/src/components/modals/NightOrderModal.vue +++ b/src/components/modals/NightOrderModal.vue @@ -36,6 +36,18 @@ }} + +
+ +
+ +
+ +
{{ role.otherNightReminder }} @@ -113,13 +139,54 @@ export default { computed: { rolesFirstNight: function () { const rolesFirstNight = []; + // Ajouter le matin à l'ordre nocturne + rolesFirstNight.push({ + id: "dawn", + name: this.locale.modal.nightOrder.dawn, + firstNight: 1000, + team: "default", + players: [], + firstNightReminder: this.locale.modal.nightOrder.dawnDescription1, + }); + var toymaker = false; + // Ajout des fabuleux + this.fabled.forEach((fabled) => { + if (fabled.firstNight) { + rolesFirstNight.push(Object.assign({ players: [] }, fabled)); + } else if (fabled.id == "toymaker") { + toymaker = true; + } + }); + this.roles.forEach((role) => { + const players = this.players.filter((p) => p.role.id === role.id); + if (role.firstNight && role.team !== "traveler") { + rolesFirstNight.push(Object.assign({ players }, role)); + } + }); + // Ajout des Voyageurs, en n'ajoutant qu'une fois ceux en double + const seenTravelers = []; + var nbTravelers = 0; + this.players.forEach((player) => { + if (player.role.team == "traveler") { + nbTravelers++; + if (!seenTravelers.includes(player.role.id)) { + seenTravelers.push(player.role.id); + if (player.role.firstNight) { + const players = this.players.filter( + (p) => p.role.id === player.role.id, + ); + rolesFirstNight.push(Object.assign({ players }, player.role)); + } + } + } + }); // Ajouter minion / demon infos à l'ordre nocturne - if (this.players.length > 6) { + if (this.players.length - nbTravelers > 6 || toymaker) { rolesFirstNight.push( { - id: "evil", + id: "minion", name: this.locale.modal.nightOrder.minionInfo, - firstNight: 5, + firstNight: 7, team: "minion", players: this.players.filter((p) => p.role.team === "minion"), firstNightReminder: @@ -128,7 +195,7 @@ export default { { id: "evil", name: this.locale.modal.nightOrder.demonInfo, - firstNight: 8, + firstNight: 10, team: "demon", players: this.players.filter((p) => p.role.team === "demon"), firstNightReminder: @@ -136,37 +203,66 @@ export default { }, ); } - this.roles.forEach((role) => { - const players = this.players.filter((p) => p.role.id === role.id); - if (role.firstNight && (role.team !== "traveler" || players.length)) { - rolesFirstNight.push(Object.assign({ players }, role)); - } - }); - this.fabled - .filter(({ firstNight }) => firstNight) - .forEach((fabled) => { - rolesFirstNight.push(Object.assign({ players: [] }, fabled)); - }); rolesFirstNight.sort((a, b) => a.firstNight - b.firstNight); return rolesFirstNight; }, rolesOtherNight: function () { const rolesOtherNight = []; - this.roles.forEach((role) => { - const players = this.players.filter((p) => p.role.id === role.id); - if (role.otherNight && (role.team !== "traveler" || players.length)) { - rolesOtherNight.push(Object.assign({ players }, role)); - } - }); + rolesOtherNight.push( + { + id: "dusk", + name: this.locale.modal.nightOrder.dusk, + team: "default", + otherNight: 1, + players: [], + otherNightReminder: this.locale.modal.nightOrder.duskDescription, + }, + { + id: "dawn", + name: this.locale.modal.nightOrder.dawn, + team: "default", + otherNight: 1000, + players: [], + otherNightReminder: this.locale.modal.nightOrder.dawnDescription2, + }, + ); this.fabled .filter(({ otherNight }) => otherNight) .forEach((fabled) => { rolesOtherNight.push(Object.assign({ players: [] }, fabled)); }); + this.roles.forEach((role) => { + const players = this.players.filter((p) => p.role.id === role.id); + if (role.otherNight && role.team !== "traveler") { + rolesOtherNight.push(Object.assign({ players }, role)); + } + }); + // Ajout des Voyageurs, en n'ajoutant qu'une fois ceux en double + const seenTravelers = []; + this.players.forEach((player) => { + if ( + player.role.otherNight && + player.role.team == "traveler" && + !seenTravelers.includes(player.role.id) + ) { + const players = this.players.filter( + (p) => p.role.id === player.role.id, + ); + seenTravelers.push(player.role.id); + rolesOtherNight.push(Object.assign({ players }, player.role)); + } + }); rolesOtherNight.sort((a, b) => a.otherNight - b.otherNight); return rolesOtherNight; }, - ...mapState(["roles", "modals", "edition", "grimoire", "locale"]), + ...mapState([ + "roles", + "modals", + "edition", + "grimoire", + "locale", + "session", + ]), ...mapState("players", ["players", "fabled"]), }, methods: { @@ -255,15 +351,32 @@ h4 { } } } +.traveler { + .name { + background: linear-gradient(90deg, $traveler, transparent 35%); + .night .other & { + background: linear-gradient(-90deg, $traveler, transparent 35%); + } + } +} +.default { + .name { + background: linear-gradient(90deg, $default, transparent 35%); + .night .other & { + background: linear-gradient(-90deg, $default, transparent 35%); + } + } +} ul { li { display: flex; width: 100%; margin-bottom: 3px; .icon { - width: 6vh; - background-size: cover; - background-position: 0 0; + width: 5vh; + background-size: 100% auto; + background-position: center center; + background-repeat: no-repeat; flex-grow: 0; flex-shrink: 0; text-align: center; @@ -277,7 +390,7 @@ ul { .name { flex-grow: 0; flex-shrink: 0; - width: 15%; + width: 5%; text-align: right; font-size: 110%; padding: 5px; diff --git a/src/components/modals/VoteHistoryModal.vue b/src/components/modals/VoteHistoryModal.vue index 0e4e0f6..45f1256 100644 --- a/src/components/modals/VoteHistoryModal.vue +++ b/src/components/modals/VoteHistoryModal.vue @@ -68,8 +68,8 @@ vote.votes == null ? 'minus-square' : vote.votes.length >= vote.majority - ? 'check-square' - : 'square', + ? 'check-square' + : 'square', ]" /> diff --git a/src/store/locale/en/fabled.json b/src/store/locale/en/fabled.json index 911e6b2..c74f427 100644 --- a/src/store/locale/en/fabled.json +++ b/src/store/locale/en/fabled.json @@ -3,7 +3,9 @@ "id": "doomsayer", "firstNightReminder": "", "otherNightReminder": "", - "reminders": ["Used"], + "reminders": [ + "Used" + ], "setup": false, "name": "Doomsayer", "team": "fabled", @@ -13,7 +15,10 @@ "id": "angel", "firstNightReminder": "", "otherNightReminder": "", - "reminders": ["Protect", "Something Bad"], + "reminders": [ + "Protect", + "Something Bad" + ], "setup": false, "name": "Angel", "team": "fabled", @@ -23,7 +28,9 @@ "id": "buddhist", "firstNightReminder": "", "otherNightReminder": "", - "reminders": ["Veteran"], + "reminders": [ + "Veteran" + ], "setup": false, "name": "Buddhist", "team": "fabled", @@ -33,7 +40,9 @@ "id": "hellslibrarian", "firstNightReminder": "", "otherNightReminder": "", - "reminders": ["Something Bad"], + "reminders": [ + "Something Bad" + ], "setup": false, "name": "Hell's Librarian", "team": "fabled", @@ -43,7 +52,10 @@ "id": "revolutionary", "firstNightReminder": "", "otherNightReminder": "", - "reminders": ["Same alignment", "Used"], + "reminders": [ + "Same alignment", + "Used" + ], "setup": false, "name": "Revolutionary", "team": "fabled", @@ -62,9 +74,11 @@ { "id": "toymaker", "firstNightReminder": "", - "otherNight": 1, + "otherNight": 2, "otherNightReminder": "If it is a night when a Demon attack could end the game, and the Demon is marked “Final night: No Attack,” then the Demon does not act tonight. (Do not wake them.)", - "reminders": ["Final Night: No Attack"], + "reminders": [ + "Final Night: No Attack" + ], "setup": false, "name": "Toymaker", "team": "fabled", @@ -74,7 +88,9 @@ "id": "fibbin", "firstNightReminder": "", "otherNightReminder": "", - "reminders": ["Used"], + "reminders": [ + "Used" + ], "setup": false, "name": "Fibbin", "team": "fabled", @@ -83,9 +99,12 @@ { "id": "duchess", "firstNightReminder": "", - "otherNight": 1, + "otherNight": 2, "otherNightReminder": "Wake each player marked “Visitor” or “False Info” one at a time. Show them the Duchess token, then fingers (1, 2, 3) equaling the number of evil players marked “Visitor” or, if you are waking the player marked “False Info,” show them any number of fingers except the number of evil players marked “Visitor.”", - "reminders": ["Visitor", "False Info"], + "reminders": [ + "Visitor", + "False Info" + ], "setup": false, "name": "Duchess", "team": "fabled", @@ -105,7 +124,9 @@ "id": "spiritofivory", "firstNightReminder": "", "otherNightReminder": "", - "reminders": ["No extra evil"], + "reminders": [ + "No extra evil" + ], "setup": false, "name": "Spirit of Ivory", "team": "fabled", @@ -127,10 +148,46 @@ "firstNight": 1, "firstNightReminder": "Mark a good player as \"Safe\". Wake each evil player and show them the marked player.", "otherNightReminder": "", - "reminders": ["Safe"], + "reminders": [ + "Safe" + ], "setup": false, "name": "Storm Catcher", "team": "fabled", "ability": "Name a good character. If in play, they can only die by execution, but evil players learn which player it is." + }, + { + "id": "ferryman", + "firstNightReminder": "", + "otherNightReminder": "", + "reminders": [], + "setup": false, + "name": "Ferryman", + "team": "fabled", + "ability": "On the final day, all dead players regain their vote token." + }, + { + "id": "gardener", + "firstNightReminder": "", + "otherNightReminder": "", + "reminders": [ + "Assigned" + ], + "setup": false, + "name": "Gardener", + "team": "fabled", + "ability": "The Storyteller assigns 1 or more players' characters." + }, + { + "id": "bootlegger", + "firstNight": 1, + "firstNightReminder": "If applicable, use homebrew rule(s).", + "otherNight": 2, + "otherNightReminder": "If applicable, use homebrew rule(s).", + "reminders": [], + "setup": false, + "name": "Bootlegger", + "team": "fabled", + "ability": "This script has homebrew characters or rules." } ] diff --git a/src/store/locale/en/hatred.json b/src/store/locale/en/hatred.json index 2db96a5..04ec9a8 100644 --- a/src/store/locale/en/hatred.json +++ b/src/store/locale/en/hatred.json @@ -40,6 +40,10 @@ { "id": "Politician", "reason": "A Pit-hag cannot create an evil Politician." + }, + { + "id": "Village Idiot", + "reason": "If there is a spare token, the Pit-Hag can create an extra Village Idiot. If so, the drunk Village Idiot might change." } ] }, @@ -82,6 +86,10 @@ { "id": "Mayor", "reason": "If Leviathan is in play and no execution occurs on day 5, good wins." + }, + { + "id": "Pit-Hag", + "reason": "After day 5, the Pit-Hag cannot choose Leviathan." } ] }, @@ -382,7 +390,7 @@ }, { "id": "Flowergirl", - "reason": "If players' eyes were closed during the nominations, the Flowergirl learns how many times the Demon voted." + "reason": "If players' eyes were closed during the nominations, the Flowergirl learns how many times the Demon voted." }, { "id": "Lil' Monsta", @@ -397,5 +405,163 @@ "reason": "Only 1 jinxed character can be in play. Evil players start knowing which player and character it is." } ] + }, + { + "id": "Yaggababble", + "hatred": [ + { + "id": "Exorcist", + "reason": "If the Exorcist chooses the Yaggababble, the Yaggababble ability does not kill tonight." + } + ] + }, + { + "id": "Plague Doctor", + "hatred": [ + { + "id": "Baron", + "reason": "If the Storyteller gains the Baron ability, up to two players become out-of-play Outsiders." + }, + { + "id": "Boomdandy", + "reason": "If the Plague Doctor is executed and the Storyteller would gain the Boomdandy ability, the Boomdandy ability triggers immediately." + }, + { + "id": "Evil Twin", + "reason": "The Storyteller cannot gain the Evil Twin ability if the Plague Doctor dies." + }, + { + "id": "Fearmonger", + "reason": "If the Plague Doctor dies, a living Minion gains the Fearmonger ability in addition to their own ability, and learns this." + }, + { + "id": "Goblin", + "reason": "If the Plague Doctor dies, a living Minion gains the Goblin ability in addition to their own ability, and learns this." + }, + { + "id": "Scarlet Woman", + "reason": "If the Plague Doctor dies, a living Minion gains the Scarlet Woman ability in addition to their own ability, and learns this." + }, + { + "id": "Spy", + "reason": "If the Plague Doctor dies, a living Minion gains the Spy ability in addition to their own ability, and learns this." + }, + { + "id": "Marionette", + "reason": "If the Demon has a neighbor who is alive and a Townsfolk or Outsider when the Plague Doctor dies, that player becomes an evil Marionette. If there is already an extra evil player, this does not happen." + } + ] + }, + { + "id": "Summoner", + "hatred": [ + { + "id": "Alchemist", + "reason": "If there is an Alchemist-Summoner in play, the game starts with a Demon in play, as normal. If the Alchemist-Summoner chooses a player, they make that player a Demon but do not change their alignment." + }, + { + "id": "Clockmaker", + "reason": "If the Summoner is in play, the Clockmaker does not receive their information until a Demon is created." + }, + { + "id": "Poppy Grower", + "reason": "If the Poppy Grower is alive when the Summoner acts, the Summoner chooses which Demon, but the Storyteller chooses which player." + }, + { + "id": "Marionette", + "reason": "The Marionette neighbours the Summoner. The Summoner knows who the Marionette is." + }, + { + "id": "Kazali", + "reason": "The Kazali can not choose to create a Summoner." + }, + { + "id": "Legion", + "reason": "If the Summoner creates Legion, most players (including all evil players) become evil Legion." + }, + { + "id": "Riot", + "reason": "If the Summoner creates Riot, the chosen player and all evil players become Riot. The chosen player must be one of the Summoner's good living neighbours." + } + ] + }, + { + "id": "Vizier", + "hatred": [ + { + "id": "Magician", + "reason": "Only 1 jinxed character can be in play. Evil players start knowing which player and character it is." + }, + { + "id": "Alchemist", + "reason": "If the Alchemist has the Vizier ability, they may only choose to execute immediately if three or more players voted, regardless of those players' alignment." + }, + { + "id": "Courtier", + "reason": "If the Vizier loses their ability, they learn this and if the Vizier is executed while they have their ability, their team wins." + }, + { + "id": "Preacher", + "reason": "If the Vizier loses their ability, they learn this and if the Vizier is executed while they have their ability, their team wins." + }, + { + "id": "Investigator", + "reason": "If the Investigator learns that the Vizier is in play, the existence of the Vizier is not announced by the Storyteller." + }, + { + "id": "Fearmonger", + "reason": "The Vizier wakes with the Fearmonger, learns who they choose and cannot choose to execute that player." + }, + { + "id": "Lil' Monsta", + "reason": "The Vizier can die by execution if they are babysitting Lil' Monsta." + } + ] + }, + { + "id": "Hatter", + "hatred": [ + { + "id": "Legion", + "reason": "If the Hatter dies and Legion is in play, nothing happens. If the Hatter dies and an evil player chooses Legion, all current evil players become Legion." + }, + { + "id": "Leviathan", + "reason": "If the Hatter dies on or after day 5, the Demon cannot choose Leviathan." + }, + { + "id": "Lil' Monsta", + "reason": "If a Demon chooses Lil' Monsta, they also choose a Minion to become and babysit Lil' Monsta tonight." + }, + { + "id": "Riot", + "reason": "If the Hatter dies, Riot is in play and a Riot chooses a different Demon, a normal evil team is created from the Riot players. If the Hatter dies and the Demon chooses Riot, Minions become Riot too." + } + ] + }, + { + "id": "Kazali", + "hatred": [ + { + "id": "Bounty Hunter", + "reason": "An evil Townsfolk is only created if the Bounty Hunter is still in play after the Kazali acts." + }, + { + "id": "Choirboy", + "reason": "The Kazali can not choose the King to become a Minion if a Choirboy is in play." + }, + { + "id": "Goon", + "reason": "If the Kazali chooses the Goon to become a Minion, remaining Minions choices are decided by the Storyteller." + }, + { + "id": "Huntsman", + "reason": "If the Kazali chooses the Damsel to become a Minion, and a Huntsman is in play, a good player becomes the Damsel." + }, + { + "id": "Marionette", + "reason": "If the Kazali chooses to create a Marionette, they must choose one of their neighbors." + } + ] } ] diff --git a/src/store/locale/en/roles.json b/src/store/locale/en/roles.json index 8b02638..3811bba 100644 --- a/src/store/locale/en/roles.json +++ b/src/store/locale/en/roles.json @@ -4,12 +4,14 @@ "name": "Washerwoman", "edition": "tb", "team": "townsfolk", - "firstNight": 33, + "firstNight": 35, "firstNightReminder": "Show the character token of a Townsfolk in play. Point to two players, one of which is that character.", "otherNight": 0, "otherNightReminder": "", - "reminders": ["Townsfolk", - "Wrong"], + "reminders": [ + "Townsfolk", + "Wrong" + ], "setup": false, "ability": "You start knowing that 1 of 2 players is a particular Townsfolk." }, @@ -18,12 +20,14 @@ "name": "Librarian", "edition": "tb", "team": "townsfolk", - "firstNight": 34, + "firstNight": 36, "firstNightReminder": "Show the character token of an Outsider in play. Point to two players, one of which is that character.", "otherNight": 0, "otherNightReminder": "", - "reminders": ["Outsider", - "Wrong"], + "reminders": [ + "Outsider", + "Wrong" + ], "setup": false, "ability": "You start knowing that 1 of 2 players is a particular Outsider. (Or that zero are in play.)" }, @@ -32,12 +36,14 @@ "name": "Investigator", "edition": "tb", "team": "townsfolk", - "firstNight": 35, + "firstNight": 37, "firstNightReminder": "Show the character token of a Minion in play. Point to two players, one of which is that character.", "otherNight": 0, "otherNightReminder": "", - "reminders": ["Minion", - "Wrong"], + "reminders": [ + "Minion", + "Wrong" + ], "setup": false, "ability": "You start knowing that 1 of 2 players is a particular Minion." }, @@ -46,7 +52,7 @@ "name": "Chef", "edition": "tb", "team": "townsfolk", - "firstNight": 36, + "firstNight": 38, "firstNightReminder": "Show the finger signal (0, 1, 2, \u2026) for the number of pairs of neighbouring evil players.", "otherNight": 0, "otherNightReminder": "", @@ -59,9 +65,9 @@ "name": "Empath", "edition": "tb", "team": "townsfolk", - "firstNight": 37, + "firstNight": 39, "firstNightReminder": "Show the finger signal (0, 1, 2) for the number of evil alive neighbours of the Empath.", - "otherNight": 53, + "otherNight": 58, "otherNightReminder": "Show the finger signal (0, 1, 2) for the number of evil neighbours.", "reminders": [], "setup": false, @@ -72,11 +78,13 @@ "name": "Fortune Teller", "edition": "tb", "team": "townsfolk", - "firstNight": 38, + "firstNight": 40, "firstNightReminder": "The Fortune Teller points to two players. Give the head signal (nod yes, shake no) for whether one of those players is the Demon. ", - "otherNight": 54, + "otherNight": 59, "otherNightReminder": "The Fortune Teller points to two players. Show the head signal (nod 'yes', shake 'no') for whether one of those players is the Demon.", - "reminders": ["Red herring"], + "reminders": [ + "Red herring" + ], "setup": false, "ability": "Each night, choose 2 players: you learn if either is a Demon. There is a good player that registers as a Demon to you." }, @@ -87,9 +95,11 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 55, + "otherNight": 60, "otherNightReminder": "If a player was executed today: Show that player\u2019s character token.", - "reminders": ["Executed"], + "reminders": [ + "Executed" + ], "setup": false, "ability": "Each night*, you learn which character died by execution today." }, @@ -100,9 +110,11 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 12, + "otherNight": 13, "otherNightReminder": "The previously protected player is no longer protected. The Monk points to a player not themself. Mark that player 'Protected'.", - "reminders": ["Protected"], + "reminders": [ + "Protected" + ], "setup": false, "ability": "Each night*, choose a player (not yourself): they are safe from the Demon tonight." }, @@ -113,7 +125,7 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 52, + "otherNight": 57, "otherNightReminder": "If the Ravenkeeper died tonight: The Ravenkeeper points to a player. Show that player\u2019s character token.", "reminders": [], "setup": false, @@ -128,7 +140,9 @@ "firstNightReminder": "", "otherNight": 0, "otherNightReminder": "", - "reminders": ["No ability"], + "reminders": [ + "No ability" + ], "setup": false, "ability": "The 1st time you are nominated, if the nominator is a Townsfolk, they are executed immediately." }, @@ -141,7 +155,9 @@ "firstNightReminder": "", "otherNight": 0, "otherNightReminder": "", - "reminders": ["No ability"], + "reminders": [ + "No ability" + ], "setup": false, "ability": "Once per game, during the day, publicly choose a player: if they are the Demon, they die." }, @@ -176,11 +192,13 @@ "name": "Butler", "edition": "tb", "team": "outsider", - "firstNight": 39, + "firstNight": 41, "firstNightReminder": "The Butler points to a player. Mark that player as 'Master'.", - "otherNight": 67, + "otherNight": 73, "otherNightReminder": "The Butler points to a player. Mark that player as 'Master'.", - "reminders": ["Master"], + "reminders": [ + "Master" + ], "setup": false, "ability": "Each night, choose a player (not yourself): tomorrow, you may only vote if they are voting too." }, @@ -194,7 +212,9 @@ "otherNight": 0, "otherNightReminder": "", "reminders": [], - "remindersGlobal": ["Drunk"], + "remindersGlobal": [ + "Drunk" + ], "setup": true, "ability": "You do not know you are the Drunk. You think you are a Townsfolk character, but you are not." }, @@ -229,11 +249,13 @@ "name": "Poisoner", "edition": "tb", "team": "minion", - "firstNight": 17, + "firstNight": 18, "firstNightReminder": "The Poisoner points to a player. That player is poisoned.", - "otherNight": 7, + "otherNight": 8, "otherNightReminder": "The previously poisoned player is no longer poisoned. The Poisoner points to a player. That player is poisoned.", - "reminders": ["Poisoned"], + "reminders": [ + "Poisoned" + ], "setup": false, "ability": "Each night, choose a player: they are poisoned tonight and tomorrow day." }, @@ -242,9 +264,9 @@ "name": "Spy", "edition": "tb", "team": "minion", - "firstNight": 49, + "firstNight": 55, "firstNightReminder": "Show the Grimoire to the Spy for as long as they need.", - "otherNight": 68, + "otherNight": 74, "otherNightReminder": "Show the Grimoire to the Spy for as long as they need.", "reminders": [], "setup": false, @@ -257,9 +279,11 @@ "team": "minion", "firstNight": 0, "firstNightReminder": "", - "otherNight": 19, + "otherNight": 21, "otherNightReminder": "If the Scarlet Woman became the Demon today: Show the 'You are' card, then the demon token.", - "reminders": ["Demon"], + "reminders": [ + "Demon" + ], "setup": false, "ability": "If there are 5 or more players alive & the Demon dies, you become the Demon. (Travellers don\u2019t count)" }, @@ -283,9 +307,11 @@ "team": "demon", "firstNight": 0, "firstNightReminder": "", - "otherNight": 24, + "otherNight": 26, "otherNightReminder": "The Imp points to a player. That player dies. If the Imp chose themselves: Replace the character of 1 alive minion with a spare Imp token. Show the 'You are' card, then the Imp token.", - "reminders": ["Dead"], + "reminders": [ + "Dead" + ], "setup": false, "ability": "Each night*, choose a player: they die. If you kill yourself this way, a Minion becomes the Imp." }, @@ -296,9 +322,11 @@ "team": "traveler", "firstNight": 1, "firstNightReminder": "The Bureaucrat points to a player. Put the Bureaucrat's '3 votes' reminder by the chosen player's character token.", - "otherNight": 1, + "otherNight": 2, "otherNightReminder": "The Bureaucrat points to a player. Put the Bureaucrat's '3 votes' reminder by the chosen player's character token.", - "reminders": ["3 votes"], + "reminders": [ + "3 votes" + ], "setup": false, "ability": "Each night, choose a player (not yourself): their vote counts as 3 votes tomorrow." }, @@ -309,9 +337,11 @@ "team": "traveler", "firstNight": 1, "firstNightReminder": "The Thief points to a player. Put the Thief's 'Negative vote' reminder by the chosen player's character token.", - "otherNight": 1, + "otherNight": 2, "otherNightReminder": "The Thief points to a player. Put the Thief's 'Negative vote' reminder by the chosen player's character token.", - "reminders": ["Negative vote"], + "reminders": [ + "Negative vote" + ], "setup": false, "ability": "Each night, choose a player (not yourself): their vote counts negatively tomorrow." }, @@ -359,11 +389,13 @@ "name": "Grandmother", "edition": "bmr", "team": "townsfolk", - "firstNight": 40, + "firstNight": 42, "firstNightReminder": "Show the marked character token. Point to the marked player.", - "otherNight": 51, + "otherNight": 56, "otherNightReminder": "If the Grandmother\u2019s grandchild was killed by the Demon tonight: The Grandmother dies.", - "reminders": ["Grandchild"], + "reminders": [ + "Grandchild" + ], "setup": false, "ability": "You start knowing a good player & their character. If the Demon kills them, you die too." }, @@ -372,11 +404,13 @@ "name": "Sailor", "edition": "bmr", "team": "townsfolk", - "firstNight": 11, + "firstNight": 12, "firstNightReminder": "The Sailor points to a living player. Either the Sailor, or the chosen player, is drunk.", - "otherNight": 4, + "otherNight": 5, "otherNightReminder": "The previously drunk player is no longer drunk. The Sailor points to a living player. Either the Sailor, or the chosen player, is drunk.", - "reminders": ["Drunk"], + "reminders": [ + "Drunk" + ], "setup": false, "ability": "Each night, choose an alive player: either you or they are drunk until dusk. You can't die." }, @@ -385,9 +419,9 @@ "name": "Chambermaid", "edition": "bmr", "team": "townsfolk", - "firstNight": 51, + "firstNight": 58, "firstNightReminder": "The Chambermaid points to two players. Show the number signal (0, 1, 2, \u2026) for how many of those players wake tonight for their ability.", - "otherNight": 70, + "otherNight": 77, "otherNightReminder": "The Chambermaid points to two players. Show the number signal (0, 1, 2, \u2026) for how many of those players wake tonight for their ability.", "reminders": [], "setup": false, @@ -400,9 +434,11 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 21, + "otherNight": 23, "otherNightReminder": "The Exorcist points to a player, different from the previous night. If that player is the Demon: Wake the Demon. Show the Exorcist token. Point to the Exorcist. The Demon does not act tonight.", - "reminders": ["Chosen"], + "reminders": [ + "Chosen" + ], "setup": false, "ability": "Each night*, choose a player (different to last night): the Demon, if chosen, learns who you are then doesn't wake tonight." }, @@ -413,10 +449,12 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 9, + "otherNight": 10, "otherNightReminder": "The previously protected and drunk players lose those markers. The Innkeeper points to two players. Those players are protected. One is drunk.", - "reminders": ["Protected", - "Drunk"], + "reminders": [ + "Protected", + "Drunk" + ], "setup": false, "ability": "Each night*, choose 2 players: they can't die tonight, but 1 is drunk until dusk." }, @@ -427,9 +465,11 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 10, + "otherNight": 11, "otherNightReminder": "The Gambler points to a player, and a character on their sheet. If incorrect, the Gambler dies.", - "reminders": ["Dead"], + "reminders": [ + "Dead" + ], "setup": false, "ability": "Each night*, choose a player & guess their character: if you guess wrong, you die." }, @@ -440,9 +480,11 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 38, + "otherNight": 42, "otherNightReminder": "If the Gossip\u2019s public statement was true: Choose a player not protected from dying tonight. That player dies.", - "reminders": ["Dead"], + "reminders": [ + "Dead" + ], "setup": false, "ability": "Each day, you may make a public statement. Tonight, if it was true, a player dies." }, @@ -451,14 +493,16 @@ "name": "Courtier", "edition": "bmr", "team": "townsfolk", - "firstNight": 19, + "firstNight": 20, "firstNightReminder": "The Courtier either shows a 'no' head signal, or points to a character on the sheet. If the Courtier used their ability: If that character is in play, that player is drunk.", - "otherNight": 8, + "otherNight": 9, "otherNightReminder": "Reduce the remaining number of days the marked player is poisoned. If the Courtier has not yet used their ability: The Courtier either shows a 'no' head signal, or points to a character on the sheet. If the Courtier used their ability: If that character is in play, that player is drunk.", - "reminders": ["Drunk 3", - "Drunk 2", - "Drunk 1", - "No ability"], + "reminders": [ + "Drunk 3", + "Drunk 2", + "Drunk 1", + "No ability" + ], "setup": false, "ability": "Once per game, at night, choose a character: they are drunk for 3 nights & 3 days." }, @@ -469,10 +513,12 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 43, + "otherNight": 48, "otherNightReminder": "If the Professor has not used their ability: The Professor either shakes their head no, or points to a player. If that player is a Townsfolk, they are now alive.", - "reminders": ["Alive", - "No ability"], + "reminders": [ + "Alive", + "No ability" + ], "setup": false, "ability": "Once per game, at night*, choose a dead player: if they are a Townsfolk, they are resurrected." }, @@ -485,7 +531,9 @@ "firstNightReminder": "", "otherNight": 0, "otherNightReminder": "", - "reminders": ["Everyone drunk"], + "reminders": [ + "Everyone drunk" + ], "setup": false, "ability": "When a Minion dies by execution, all other players (except Travellers) are drunk until dusk tomorrow." }, @@ -498,7 +546,9 @@ "firstNightReminder": "", "otherNight": 0, "otherNightReminder": "", - "reminders": ["Can not die"], + "reminders": [ + "Can not die" + ], "setup": false, "ability": "If both your alive neighbours are good, they can't die." }, @@ -524,7 +574,9 @@ "firstNightReminder": "", "otherNight": 0, "otherNightReminder": "", - "reminders": ["No ability"], + "reminders": [ + "No ability" + ], "setup": false, "ability": "The first time you die, you don't." }, @@ -535,9 +587,11 @@ "team": "outsider", "firstNight": 0, "firstNightReminder": "", - "otherNight": 49, + "otherNight": 54, "otherNightReminder": "The Tinker might die.", - "reminders": ["Dead"], + "reminders": [ + "Dead" + ], "setup": false, "ability": "You might die at any time." }, @@ -548,9 +602,11 @@ "team": "outsider", "firstNight": 0, "firstNightReminder": "", - "otherNight": 50, + "otherNight": 55, "otherNightReminder": "If the Moonchild used their ability to target a player today: If that player is good, they die.", - "reminders": ["Dead"], + "reminders": [ + "Dead" + ], "setup": false, "ability": "When you learn that you died, publicly choose 1 alive player. Tonight, if it was a good player, they die." }, @@ -563,7 +619,9 @@ "firstNightReminder": "", "otherNight": 0, "otherNightReminder": "", - "reminders": ["Drunk"], + "reminders": [ + "Drunk" + ], "setup": false, "ability": "Each night, the 1st player to choose you with their ability is drunk until dusk. You become their alignment." }, @@ -572,12 +630,14 @@ "name": "Lunatic", "edition": "bmr", "team": "outsider", - "firstNight": 8, + "firstNight": 9, "firstNightReminder": "If 7 or more players: Show the Lunatic a number of arbitrary 'Minions', players equal to the number of Minions in play. Show 3 character tokens of arbitrary good characters. If the token received by the Lunatic is a Demon that would wake tonight: Allow the Lunatic to do the Demon actions. Place their 'attack' markers. Wake the Demon. Show the Demon\u2019s real character token. Show them the Lunatic player. If the Lunatic attacked players: Show the real demon each marked player. Remove any Lunatic 'attack' markers.", - "otherNight": 20, + "otherNight": 22, "otherNightReminder": "Allow the Lunatic to do the actions of the Demon. Place their 'attack' markers. If the Lunatic selected players: Wake the Demon. Show the 'attack' marker, then point to each marked player. Remove any Lunatic 'attack' markers.", "reminders": [], - "remindersGlobal": ["Lunatic"], + "remindersGlobal": [ + "Lunatic" + ], "setup": false, "ability": "You think you are a Demon, but you are not. The Demon knows who you are & who you choose at night." }, @@ -586,12 +646,14 @@ "name": "Godfather", "edition": "bmr", "team": "minion", - "firstNight": 21, + "firstNight": 22, "firstNightReminder": "Show each of the Outsider tokens in play.", - "otherNight": 37, + "otherNight": 41, "otherNightReminder": "If an Outsider died today: The Godfather points to a player. That player dies.", - "reminders": ["Died today", - "Dead"], + "reminders": [ + "Died today", + "Dead" + ], "setup": true, "ability": "You start knowing which Outsiders are in play. If 1 died today, choose a player tonight: they die. [\u22121 or +1 Outsider]" }, @@ -600,11 +662,13 @@ "name": "Devil's Advocate", "edition": "bmr", "team": "minion", - "firstNight": 22, + "firstNight": 23, "firstNightReminder": "The Devil\u2019s Advocate points to a living player. That player survives execution tomorrow.", - "otherNight": 13, + "otherNight": 14, "otherNightReminder": "The Devil\u2019s Advocate points to a living player, different from the previous night. That player survives execution tomorrow.", - "reminders": ["Survives execution"], + "reminders": [ + "Survives execution" + ], "setup": false, "ability": "Each night, choose a living player (different to last night): if executed tomorrow, they don't die." }, @@ -615,10 +679,12 @@ "team": "minion", "firstNight": 0, "firstNightReminder": "", - "otherNight": 36, + "otherNight": 40, "otherNightReminder": "If the Assassin has not yet used their ability: The Assassin either shows the 'no' head signal, or points to a player. That player dies.", - "reminders": ["Dead", - "No ability"], + "reminders": [ + "Dead", + "No ability" + ], "setup": false, "ability": "Once per game, at night*, choose a player: they die, even if for some reason they could not." }, @@ -642,10 +708,12 @@ "team": "demon", "firstNight": 0, "firstNightReminder": "", - "otherNight": 25, + "otherNight": 27, "otherNightReminder": "If no-one died during the day: The Zombuul points to a player. That player dies.", - "reminders": ["Died today", - "Dead"], + "reminders": [ + "Died today", + "Dead" + ], "setup": false, "ability": "Each night*, if no-one died today, choose a player: they die. The 1st time you die, you live but register as dead." }, @@ -654,12 +722,14 @@ "name": "Pukka", "edition": "bmr", "team": "demon", - "firstNight": 28, + "firstNight": 30, "firstNightReminder": "The Pukka points to a player. That player is poisoned.", - "otherNight": 26, + "otherNight": 28, "otherNightReminder": "The Pukka points to a player. That player is poisoned. The previously poisoned player dies. ", - "reminders": ["Poisoned", - "Dead"], + "reminders": [ + "Poisoned", + "Dead" + ], "setup": false, "ability": "Each night, choose a player: they are poisoned. The previously poisoned player dies then becomes healthy." }, @@ -670,10 +740,12 @@ "team": "demon", "firstNight": 0, "firstNightReminder": "", - "otherNight": 27, + "otherNight": 29, "otherNightReminder": "One player that the Shabaloth chose the previous night might be resurrected. The Shabaloth points to two players. Those players die.", - "reminders": ["Dead", - "Alive"], + "reminders": [ + "Dead", + "Alive" + ], "setup": false, "ability": "Each night*, choose 2 players: they die. A dead player you chose last night might be regurgitated." }, @@ -684,10 +756,12 @@ "team": "demon", "firstNight": 0, "firstNightReminder": "", - "otherNight": 28, + "otherNight": 30, "otherNightReminder": "If the Po chose no-one the previous night: The Po points to three players. Otherwise: The Po either shows the 'no' head signal , or points to a player. Chosen players die", - "reminders": ["Dead", - "3 attacks"], + "reminders": [ + "Dead", + "3 attacks" + ], "setup": false, "ability": "Each night*, you may choose a player: they die. If your last choice was no-one, choose 3 players tonight." }, @@ -698,9 +772,11 @@ "team": "traveler", "firstNight": 1, "firstNightReminder": "Show the Apprentice the 'You are' card, then a Townsfolk or Minion token. In the Grimoire, replace the Apprentice token with that character token, and put the Apprentice's 'Is the Apprentice' reminder by that character token.", - "otherNight": 0, - "otherNightReminder": "", - "reminders": ["Is the Apprentice"], + "otherNight": 2, + "otherNightReminder": "If the Apprentice has just arrived, show them the 'You are' card, then a Townsfolk or Minion token. In the Grimoire, replace the Apprentice token with that character token, and put the Apprentice's 'Is the Apprentice' reminder by that character token.", + "reminders": [ + "Is the Apprentice" + ], "setup": false, "ability": "On your 1st night, you gain a Townsfolk ability (if good), or a Minion ability (if evil)." }, @@ -726,7 +802,9 @@ "firstNightReminder": "", "otherNight": 0, "otherNightReminder": "", - "reminders": ["No ability"], + "reminders": [ + "No ability" + ], "setup": false, "ability": "Once per game, if another player nominated, you may choose to force the current execution to pass or fail." }, @@ -739,8 +817,10 @@ "firstNightReminder": "", "otherNight": 0, "otherNightReminder": "", - "reminders": ["Nominate good", - "Nominate evil"], + "reminders": [ + "Nominate good", + "Nominate evil" + ], "setup": false, "ability": "Only the Storyteller can nominate. At least 1 opposite player must be nominated each day." }, @@ -762,7 +842,7 @@ "name": "Clockmaker", "edition": "snv", "team": "townsfolk", - "firstNight": 41, + "firstNight": 43, "firstNightReminder": "Show the hand signal for the number (1, 2, 3, etc.) of places from Demon to closest Minion.", "otherNight": 0, "otherNightReminder": "", @@ -775,9 +855,9 @@ "name": "Dreamer", "edition": "snv", "team": "townsfolk", - "firstNight": 42, + "firstNight": 44, "firstNightReminder": "The Dreamer points to a player. Show 1 good and 1 evil character token; one of these is correct.", - "otherNight": 56, + "otherNight": 61, "otherNightReminder": "The Dreamer points to a player. Show 1 good and 1 evil character token; one of these is correct.", "reminders": [], "setup": false, @@ -788,11 +868,13 @@ "name": "Snake Charmer", "edition": "snv", "team": "townsfolk", - "firstNight": 20, + "firstNight": 21, "firstNightReminder": "The Snake Charmer points to a player. If that player is the Demon: swap the Demon and Snake Charmer character and alignments. Wake each player to inform them of their new role and alignment. The new Snake Charmer is poisoned.", - "otherNight": 11, + "otherNight": 12, "otherNightReminder": "The Snake Charmer points to a player. If that player is the Demon: swap the Demon and Snake Charmer character and alignments. Wake each player to inform them of their new role and alignment. The new Snake Charmer is poisoned.", - "reminders": ["Poisoned"], + "reminders": [ + "Poisoned" + ], "setup": false, "ability": "Each night, choose an alive player: a chosen Demon swaps characters & alignments with you & is then poisoned." }, @@ -801,11 +883,13 @@ "name": "Mathematician", "edition": "snv", "team": "townsfolk", - "firstNight": 52, + "firstNight": 59, "firstNightReminder": "Show the hand signal for the number (0, 1, 2, etc.) of players whose ability malfunctioned due to other abilities.", - "otherNight": 71, + "otherNight": 78, "otherNightReminder": "Show the hand signal for the number (0, 1, 2, etc.) of players whose ability malfunctioned due to other abilities.", - "reminders": ["Abnormal"], + "reminders": [ + "Abnormal" + ], "setup": false, "ability": "Each night, you learn how many players\u2019 abilities worked abnormally (since dawn) due to another character's ability." }, @@ -816,10 +900,12 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 57, + "otherNight": 62, "otherNightReminder": "Nod 'yes' or shake head 'no' for whether the Demon voted today. Place the 'Demon not voted' marker (remove 'Demon voted', if any).", - "reminders": ["Demon voted", - "Demon not voted"], + "reminders": [ + "Demon voted", + "Demon not voted" + ], "setup": false, "ability": "Each night*, you learn if a Demon voted today." }, @@ -830,10 +916,12 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 58, + "otherNight": 63, "otherNightReminder": "Nod 'yes' or shake head 'no' for whether a Minion nominated today. Place the 'Minion not nominated' marker (remove 'Minion nominated', if any).", - "reminders": ["Minions not nominated", - "Minion nominated"], + "reminders": [ + "Minions not nominated", + "Minion nominated" + ], "setup": false, "ability": "Each night*, you learn if a Minion nominated today." }, @@ -844,7 +932,7 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 59, + "otherNight": 64, "otherNightReminder": "Show the hand signal for the number (0, 1, 2, etc.) of dead evil players.", "reminders": [], "setup": false, @@ -868,11 +956,13 @@ "name": "Seamstress", "edition": "snv", "team": "townsfolk", - "firstNight": 43, + "firstNight": 45, "firstNightReminder": "The Seamstress either shows a 'no' head signal, or points to two other players. If the Seamstress chose players , nod 'yes' or shake 'no' for whether they are of same alignment.", - "otherNight": 60, + "otherNight": 65, "otherNightReminder": "If the Seamstress has not yet used their ability: the Seamstress either shows a 'no' head signal, or points to two other players. If the Seamstress chose players , nod 'yes' or shake 'no' for whether they are of same alignment.", - "reminders": ["No ability"], + "reminders": [ + "No ability" + ], "setup": false, "ability": "Once per game, at night, choose 2 players (not yourself): you learn if they are the same alignment." }, @@ -883,11 +973,13 @@ "team": "townsfolk", "firstNight": 2, "firstNightReminder": "The Philosopher either shows a 'no' head signal, or points to a good character on their sheet. If they chose a character: Swap the out-of-play character token with the Philosopher token and add the 'Is the Philosopher' reminder. If the character is in play, place the drunk marker by that player.", - "otherNight": 2, + "otherNight": 3, "otherNightReminder": "If the Philosopher has not used their ability: the Philosopher either shows a 'no' head signal, or points to a good character on their sheet. If they chose a character: Swap the out-of-play character token with the Philosopher token and add the 'Is the Philosopher' reminder. If the character is in play, place the drunk marker by that player.", - "reminders": ["Drunk", - "Philosopher", - "No ability"], + "reminders": [ + "Drunk", + "Philosopher", + "No ability" + ], "setup": false, "ability": "Once per game, at night, choose a good character: gain that ability. If this character is in play, they are drunk." }, @@ -900,7 +992,9 @@ "firstNightReminder": "", "otherNight": 0, "otherNightReminder": "", - "reminders": ["No ability"], + "reminders": [ + "No ability" + ], "setup": false, "ability": "Once per game, during the day, privately ask the Storyteller any yes/no question." }, @@ -911,9 +1005,11 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 61, + "otherNight": 66, "otherNightReminder": "If today was the Juggler\u2019s first day: Show the hand signal for the number (0, 1, 2, etc.) of 'Correct' markers. Remove markers.", - "reminders": ["Correct"], + "reminders": [ + "Correct" + ], "setup": false, "ability": "On your 1st day, publicly guess up to 5 players' characters. That night, you learn how many you got correct." }, @@ -924,7 +1020,7 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 42, + "otherNight": 47, "otherNightReminder": "If the Sage was killed by a Demon: Point to two players, one of which is that Demon.", "reminders": [], "setup": false, @@ -950,9 +1046,11 @@ "team": "outsider", "firstNight": 0, "firstNightReminder": "", - "otherNight": 41, + "otherNight": 46, "otherNightReminder": "Choose a player that is drunk.", - "reminders": ["Drunk"], + "reminders": [ + "Drunk" + ], "setup": false, "ability": "When you die, 1 player is drunk from now on." }, @@ -963,9 +1061,11 @@ "team": "outsider", "firstNight": 0, "firstNightReminder": "", - "otherNight": 40, + "otherNight": 45, "otherNightReminder": "If the Barber died today: Wake the Demon. Show the 'This character selected you' card, then Barber token. The Demon either shows a 'no' head signal, or points to 2 players. If they chose players: Swap the character tokens. Wake each player. Show 'You are', then their new character token.", - "reminders": ["Haircuts tonight"], + "reminders": [ + "Haircuts tonight" + ], "setup": false, "ability": "If you died today or tonight, the Demon may choose 2 players (not another Demon) to swap characters." }, @@ -987,12 +1087,14 @@ "name": "Evil Twin", "edition": "snv", "team": "minion", - "firstNight": 23, + "firstNight": 24, "firstNightReminder": "Wake the Evil Twin and their twin. Confirm that they have acknowledged each other. Point to the Evil Twin. Show their Evil Twin token to the twin player. Point to the twin. Show their character token to the Evil Twin player.", "otherNight": 0, "otherNightReminder": "", "reminders": [], - "remindersGlobal": ["Twin"], + "remindersGlobal": [ + "Twin" + ], "setup": false, "ability": "You & an opposing player know each other. If the good player is executed, evil wins. Good can't win if you both live." }, @@ -1001,11 +1103,13 @@ "name": "Witch", "edition": "snv", "team": "minion", - "firstNight": 24, + "firstNight": 25, "firstNightReminder": "The Witch points to a player. If that player nominates tomorrow they die immediately.", - "otherNight": 14, + "otherNight": 15, "otherNightReminder": "If there are 4 or more players alive: The Witch points to a player. If that player nominates tomorrow they die immediately.", - "reminders": ["Cursed"], + "reminders": [ + "Cursed" + ], "setup": false, "ability": "Each night, choose a player: if they nominate tomorrow, they die. If just 3 players live, you lose this ability." }, @@ -1014,11 +1118,13 @@ "name": "Cerenovus", "edition": "snv", "team": "minion", - "firstNight": 25, + "firstNight": 26, "firstNightReminder": "The Cerenovus points to a player, then to a character on their sheet. Wake that player. Show the 'This character selected you' card, then the Cerenovus token. Show the selected character token. If the player is not mad about being that character tomorrow, they can be executed.", - "otherNight": 15, + "otherNight": 16, "otherNightReminder": "The Cerenovus points to a player, then to a character on their sheet. Wake that player. Show the 'This character selected you' card, then the Cerenovus token. Show the selected character token. If the player is not mad about being that character tomorrow, they can be executed.", - "reminders": ["Mad"], + "reminders": [ + "Mad" + ], "setup": false, "ability": "Each night, choose a player & a good character: they are \u201Cmad\u201D they are this character tomorrow, or might be executed." }, @@ -1029,7 +1135,7 @@ "team": "minion", "firstNight": 0, "firstNightReminder": "", - "otherNight": 16, + "otherNight": 17, "otherNightReminder": "The Pit-Hag points to a player and a character on the sheet. If this character is not in play, wake that player and show them the 'You are' card and the relevant character token. If the character is in play, nothing happens.", "reminders": [], "setup": false, @@ -1042,10 +1148,12 @@ "team": "demon", "firstNight": 0, "firstNightReminder": "", - "otherNight": 29, + "otherNight": 31, "otherNightReminder": "The Fang Gu points to a player. That player dies. Or, if that player was an Outsider and there are no other Fang Gu in play: The Fang Gu dies instead of the chosen player. The chosen player is now an evil Fang Gu. Wake the new Fang Gu. Show the 'You are' card, then the Fang Gu token. Show the 'You are' card, then the thumb-down 'evil' hand sign.", - "reminders": ["Dead", - "Once"], + "reminders": [ + "Dead", + "Once" + ], "setup": true, "ability": "Each night*, choose a player: they die. The 1st Outsider this kills becomes an evil Fang Gu & you die instead. [+1 Outsider]" }, @@ -1056,11 +1164,13 @@ "team": "demon", "firstNight": 0, "firstNightReminder": "", - "otherNight": 32, + "otherNight": 34, "otherNightReminder": "The Vigormortis points to a player. That player dies. If a Minion, they keep their ability and one of their Townsfolk neighbours is poisoned.", - "reminders": ["Dead", - "Has ability", - "Poisoned"], + "reminders": [ + "Dead", + "Has ability", + "Poisoned" + ], "setup": true, "ability": "Each night*, choose a player: they die. Minions you kill keep their ability & poison 1 Townsfolk neighbour. [\u22121 Outsider]" }, @@ -1071,10 +1181,12 @@ "team": "demon", "firstNight": 0, "firstNightReminder": "", - "otherNight": 30, + "otherNight": 32, "otherNightReminder": "The No Dashii points to a player. That player dies.", - "reminders": ["Dead", - "Poisoned"], + "reminders": [ + "Dead", + "Poisoned" + ], "setup": false, "ability": "Each night*, choose a player: they die. Your 2 Townsfolk neighbours are poisoned." }, @@ -1085,9 +1197,11 @@ "team": "demon", "firstNight": 0, "firstNightReminder": "", - "otherNight": 31, + "otherNight": 33, "otherNightReminder": "The Vortox points to a player. That player dies.", - "reminders": ["Dead"], + "reminders": [ + "Dead" + ], "setup": false, "ability": "Each night*, choose a player: they die. Townsfolk abilities yield false info. Each day, if no-one is executed, evil wins." }, @@ -1098,10 +1212,12 @@ "team": "traveler", "firstNight": 1, "firstNightReminder": "Choose a player, wake them and tell them which Barista power is affecting them. Treat them accordingly (sober/healthy/true info or activate their ability twice).", - "otherNight": 1, + "otherNight": 2, "otherNightReminder": "Choose a player, wake them and tell them which Barista power is affecting them. Treat them accordingly (sober/healthy/true info or activate their ability twice).", - "reminders": ["Sober & Healthy", - "Ability twice"], + "reminders": [ + "Sober & Healthy", + "Ability twice" + ], "setup": false, "ability": "Each night, until dusk, 1) a player becomes sober, healthy and gets true info, or 2) their ability works twice. They learn which." }, @@ -1112,9 +1228,11 @@ "team": "traveler", "firstNight": 0, "firstNightReminder": "", - "otherNight": 1, + "otherNight": 2, "otherNightReminder": "The Harlot points at any player. Then, put the Harlot to sleep. Wake the chosen player, show them the 'This character selected you' token, then the Harlot token. That player either nods their head yes or shakes their head no. If they nodded their head yes, wake the Harlot and show them the chosen player's character token. Then, you may decide that both players die.", - "reminders": ["Dead"], + "reminders": [ + "Dead" + ], "setup": false, "ability": "Each night*, choose a living player: if they agree, you learn their character, but you both might die." }, @@ -1138,10 +1256,12 @@ "team": "traveler", "firstNight": 0, "firstNightReminder": "", - "otherNight": 1, + "otherNight": 2, "otherNightReminder": "The Bone Collector either shakes their head no or points at any dead player. If they pointed at any dead player, put the Bone Collector's 'Has Ability' reminder by the chosen player's character token. (They may need to be woken tonight to use it.)", - "reminders": ["No ability", - "Has ability"], + "reminders": [ + "No ability", + "Has ability" + ], "setup": false, "ability": "Once per game, at night, choose a dead player: they regain their ability until dusk." }, @@ -1154,7 +1274,9 @@ "firstNightReminder": "", "otherNight": 0, "otherNightReminder": "", - "reminders": ["Funny"], + "reminders": [ + "Funny" + ], "setup": false, "ability": "If you were funny today, you cannot die by exile." }, @@ -1163,11 +1285,13 @@ "name": "Noble", "edition": "", "team": "townsfolk", - "firstNight": 44, + "firstNight": 48, "firstNightReminder": "Point to 3 players including one evil player, in no particular order.", "otherNight": 0, "otherNightReminder": "", - "reminders": ["Seen"], + "reminders": [ + "Seen" + ], "setup": false, "ability": "You start knowing 3 players, 1 and only 1 of which is evil." }, @@ -1176,11 +1300,13 @@ "name": "Bounty Hunter", "edition": "", "team": "townsfolk", - "firstNight": 46, + "firstNight": 52, "firstNightReminder": "Point to 1 evil player. Wake the townsfolk who is evil and show them the 'You are' card and the thumbs down evil sign.", - "otherNight": 64, + "otherNight": 70, "otherNightReminder": "If the known evil player has died, point to another evil player. ", - "reminders": ["Known"], + "reminders": [ + "Known" + ], "setup": true, "ability": "You start knowing 1 evil player. If the player you know dies, you learn another evil player tonight. [1 Townsfolk is evil]" }, @@ -1189,12 +1315,14 @@ "name": "Pixie", "edition": "", "team": "townsfolk", - "firstNight": 29, + "firstNight": 31, "firstNightReminder": "Show the Pixie 1 in-play Townsfolk character token.", "otherNight": 0, "otherNightReminder": "", - "reminders": ["Mad", - "Has ability"], + "reminders": [ + "Mad", + "Has ability" + ], "setup": false, "ability": "You start knowing 1 in-play Townsfolk. If you were mad that you were this character, you gain their ability when they die." }, @@ -1203,9 +1331,9 @@ "name": "General", "edition": "", "team": "townsfolk", - "firstNight": 50, + "firstNight": 57, "firstNightReminder": "Show the General thumbs up for good winning, thumbs down for evil winning or thumb to the side for neither.", - "otherNight": 69, + "otherNight": 76, "otherNightReminder": "Show the General thumbs up for good winning, thumbs down for evil winning or thumb to the side for neither.", "reminders": [], "setup": false, @@ -1216,11 +1344,13 @@ "name": "Preacher", "edition": "", "team": "townsfolk", - "firstNight": 14, + "firstNight": 15, "firstNightReminder": "The Preacher chooses a player. If a Minion is chosen, wake the Minion and show the 'This character selected you' card and then the Preacher token.", - "otherNight": 6, + "otherNight": 7, "otherNightReminder": "The Preacher chooses a player. If a Minion is chosen, wake the Minion and show the 'This character selected you' card and then the Preacher token.", - "reminders": ["At a sermon"], + "reminders": [ + "At a sermon" + ], "setup": false, "ability": "Each night, choose a player: a Minion, if chosen, learns this. All chosen Minions have no ability." }, @@ -1229,9 +1359,9 @@ "name": "King", "edition": "", "team": "townsfolk", - "firstNight": 10, + "firstNight": 11, "firstNightReminder": "Wake the Demon, show them the 'This character selected you' card, show the King token and point to the King player.", - "otherNight": 63, + "otherNight": 69, "otherNightReminder": "If there are more dead than living, show the King a character token of a living player.", "reminders": [], "setup": false, @@ -1242,14 +1372,16 @@ "name": "Balloonist", "edition": "", "team": "townsfolk", - "firstNight": 45, + "firstNight": 49, "firstNightReminder": "Choose a character type. Point to a player whose character is of that type. Place the Balloonist's Seen reminder next to that character.", - "otherNight": 62, + "otherNight": 67, "otherNightReminder": "Choose a character type that does not yet have a Seen reminder next to a character of that type. Point to a player whose character is of that type, if there are any. Place the Balloonist's Seen reminder next to that character.", - "reminders": ["Seen Townsfolk", - "Seen Outsider", - "Seen Minion", - "Seen Demon"], + "reminders": [ + "Seen Townsfolk", + "Seen Outsider", + "Seen Minion", + "Seen Demon" + ], "setup": true, "ability": "Each night, you learn 1 player of each character type, until there are no more types to learn. [+1 Outsider]" }, @@ -1258,9 +1390,9 @@ "name": "Cult Leader", "edition": "", "team": "townsfolk", - "firstNight": 48, + "firstNight": 54, "firstNightReminder": "If the cult leader changed alignment, show them the thumbs up good signal of the thumbs down evil signal accordingly.", - "otherNight": 66, + "otherNight": 72, "otherNightReminder": "If the cult leader changed alignment, show them the thumbs up good signal of the thumbs down evil signal accordingly.", "reminders": [], "setup": false, @@ -1273,9 +1405,11 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 22, + "otherNight": 24, "otherNightReminder": "The Lycanthrope points to a living player: if good, they die and no one else can die tonight.", - "reminders": ["Dead"], + "reminders": [ + "Dead" + ], "setup": false, "ability": "Each night*, choose a living player: if good, they die, but they are the only player that can die tonight." }, @@ -1284,11 +1418,13 @@ "name": "Amnesiac", "edition": "", "team": "townsfolk", - "firstNight": 32, + "firstNight": 34, "firstNightReminder": "Decide the Amnesiac's entire ability. If the Amnesiac's ability causes them to wake tonight: Wake the Amnesiac and run their ability.", - "otherNight": 47, + "otherNight": 52, "otherNightReminder": "If the Amnesiac's ability causes them to wake tonight: Wake the Amnesiac and run their ability.", - "reminders": ["?"], + "reminders": [ + "?" + ], "setup": false, "ability": "You do not know what your ability is. Each day, privately guess what it is: you learn how accurate you are." }, @@ -1297,11 +1433,13 @@ "name": "Nightwatchman", "edition": "", "team": "townsfolk", - "firstNight": 47, + "firstNight": 53, "firstNightReminder": "The Nightwatchman may point to a player. Wake that player, show the 'This character selected you' card and the Nightwatchman token, then point to the Nightwatchman player.", - "otherNight": 65, + "otherNight": 71, "otherNightReminder": "The Nightwatchman may point to a player. Wake that player, show the 'This character selected you' card and the Nightwatchman token, then point to the Nightwatchman player.", - "reminders": ["No ability"], + "reminders": [ + "No ability" + ], "setup": false, "ability": "Once per game, at night, choose a player: they learn who you are." }, @@ -1310,11 +1448,13 @@ "name": "Engineer", "edition": "", "team": "townsfolk", - "firstNight": 13, + "firstNight": 14, "firstNightReminder": "The Engineer shows a 'no' head signal, or points to a Demon or points to the relevant number of Minions. If the Engineer chose characters, replace the Demon or Minions with the choices, then wake the relevant players and show them the You are card and the relevant character tokens.", - "otherNight": 5, + "otherNight": 6, "otherNightReminder": "The Engineer shows a 'no' head signal, or points to a Demon or points to the relevant number of Minions. If the Engineer chose characters, replace the Demon or Minions with the choices, then wake the relevant players and show them the 'You are' card and the relevant character tokens.", - "reminders": ["No ability"], + "reminders": [ + "No ability" + ], "setup": false, "ability": "Once per game, at night, choose which Minions or which Demon is in play." }, @@ -1327,7 +1467,9 @@ "firstNightReminder": "", "otherNight": 0, "otherNightReminder": "", - "reminders": ["No ability"], + "reminders": [ + "No ability" + ], "setup": false, "ability": "Once per game, during the day, visit the Storyteller for some advice to help you win." }, @@ -1336,11 +1478,13 @@ "name": "Huntsman", "edition": "", "team": "townsfolk", - "firstNight": 30, + "firstNight": 32, "firstNightReminder": "The Huntsman shakes their head 'no' or points to a player. If they point to the Damsel, wake that player, show the 'You are' card and a not-in-play character token.", - "otherNight": 45, + "otherNight": 50, "otherNightReminder": "The Huntsman shakes their head 'no' or points to a player. If they point to the Damsel, wake that player, show the 'You are' card and a not-in-play character token.", - "reminders": ["No ability"], + "reminders": [ + "No ability" + ], "setup": true, "ability": "Once per game, at night, choose a living player: the Damsel, if chosen, becomes a not-in-play Townsfolk. [+the Damsel]" }, @@ -1349,12 +1493,14 @@ "name": "Alchemist", "edition": "", "team": "townsfolk", - "firstNight": 3, + "firstNight": 4, "firstNightReminder": "Show the Alchemist a not-in-play Minion token", "otherNight": 0, "otherNightReminder": "", "reminders": [], - "remindersGlobal": ["Alchemist"], + "remindersGlobal": [ + "Alchemist" + ], "setup": false, "ability": "You have a not-in-play Minion ability." }, @@ -1365,7 +1511,7 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 48, + "otherNight": 53, "otherNightReminder": "If a Farmer died tonight, choose another good player and make them the Farmer. Wake this player, show them the 'You are' card and the Farmer character token.", "reminders": [], "setup": false, @@ -1376,8 +1522,8 @@ "name": "Magician", "edition": "", "team": "townsfolk", - "firstNight": 5, - "firstNightReminder": "", + "firstNight": 6, + "firstNightReminder": "To the Minions, show the Magician as another Demon. To the Demon, show the Magician as another Minion.", "otherNight": 0, "otherNightReminder": "", "reminders": [], @@ -1391,7 +1537,7 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 44, + "otherNight": 49, "otherNightReminder": "If the King was killed by the Demon, wake the Choirboy and point to the Demon player.", "reminders": [], "setup": true, @@ -1402,11 +1548,13 @@ "name": "Poppy Grower", "edition": "", "team": "townsfolk", - "firstNight": 4, + "firstNight": 5, "firstNightReminder": "Do not inform the Demon/Minions who each other are", - "otherNight": 3, + "otherNight": 4, "otherNightReminder": "If the Poppy Grower has died, show the Minions/Demon who each other are.", - "reminders": ["Evil wakes"], + "reminders": [ + "Evil wakes" + ], "setup": false, "ability": "Minions & Demons do not know each other. If you die, they learn who each other are that night." }, @@ -1432,17 +1580,90 @@ "firstNightReminder": "", "otherNight": 0, "otherNightReminder": "", - "reminders": ["Poisoned", - "Died today"], + "reminders": [ + "Poisoned", + "Died today" + ], "setup": false, "ability": "You have the ability of the recently killed executee. If they are evil, you are poisoned until a good player dies by execution." }, + { + "id": "steward", + "name": "Steward", + "edition": "", + "team": "townsfolk", + "firstNight": 46, + "firstNightReminder": "Point to a good player.", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [ + "Knows" + ], + "setup": false, + "ability": "You start knowing 1 good player." + }, + { + "id": "shugenja", + "name": "Shugenja", + "edition": "", + "team": "townsfolk", + "firstNight": 50, + "firstNightReminder": "Wake the Shugenja; point horizontally in the direction of the closest evil player. If the two closest evil players are equidistant, point your finger horizontally in either direction.", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [], + "setup": false, + "ability": "You start knowing if your closest evil player is clockwise or anti-clockwise. If equidistant, this info is arbitrary." + }, + { + "id": "highpriestess", + "name": "High Priestess", + "edition": "", + "team": "townsfolk", + "firstNight": 56, + "firstNightReminder": "Point to a player.", + "otherNight": 75, + "otherNightReminder": "Point to a player.", + "reminders": [], + "setup": false, + "ability": "Each night, learn which player the Storyteller believes you should talk to most." + }, + { + "id": "villageidiot", + "name": "Village Idiot", + "edition": "", + "team": "townsfolk", + "firstNight": 51, + "firstNightReminder": "The Village Idiot points to a player; give a thumbs up if that player is good or a thumbs down if that player is evil.", + "otherNight": 68, + "otherNightReminder": "The Village Idiot points to a player; give a thumbs up if that player is good or a thumbs down if that player is evil.", + "reminders": [ + "Drunk" + ], + "setup": true, + "ability": "Each night, choose a player: you learn their alignment. [+0 to +2 Village Idiots. 1 of the extras is drunk]" + }, + { + "id": "knight", + "name": "Knight", + "edition": "", + "team": "townsfolk", + "firstNight": 47, + "firstNightReminder": "Point to two players who are not the Demon.", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [ + "Knows" + ], + "setup": false, + "ability": "You start knowing 2 players that are not the Demon." + }, { "id": "snitch", "name": "Snitch", "edition": "", "team": "outsider", - "firstNight": 7, + "firstNight": 8, "firstNightReminder": "After Minion info wake each Minion and show them three not-in-play character tokens. These may be the same or different to each other and the ones shown to the Demon.", "otherNight": 0, "otherNightReminder": "", @@ -1457,9 +1678,11 @@ "team": "outsider", "firstNight": 0, "firstNightReminder": "", - "otherNight": 39, + "otherNight": 43, "otherNightReminder": "If a good living neighbour is drunk or poisoned, the Acrobat player dies.", - "reminders": ["Dead"], + "reminders": [ + "Dead" + ], "setup": false, "ability": "Each night*, if either good living neighbour is drunk or poisoned, you die." }, @@ -1472,8 +1695,10 @@ "firstNightReminder": "", "otherNight": 0, "otherNightReminder": "", - "reminders": ["Drunk", - "Guess used"], + "reminders": [ + "Drunk", + "Guess used" + ], "setup": false, "ability": "1 player is drunk, even if you die. If you guess (once) who it is, learn the Demon player, but guess wrong & get false info." }, @@ -1495,11 +1720,13 @@ "name": "Damsel", "edition": "", "team": "outsider", - "firstNight": 31, - "firstNightReminder": "Wake all the Minions, show them the 'This character selected you' card and the Damsel token.", - "otherNight": 46, + "firstNight": 33, + "firstNightReminder": "If selected by the Huntsman, wake the Damsel, show 'You are' card and a not-in-play Townsfolk token.", + "otherNight": 51, "otherNightReminder": "If selected by the Huntsman, wake the Damsel, show 'You are' card and a not-in-play Townsfolk token.", - "reminders": ["Guess used"], + "reminders": [ + "Guess used" + ], "setup": false, "ability": "All Minions know you are in play. If a Minion publicly guesses you (once), your team loses." }, @@ -1512,7 +1739,9 @@ "firstNightReminder": "", "otherNight": 0, "otherNightReminder": "", - "reminders": ["Can not nominate"], + "reminders": [ + "Can not nominate" + ], "setup": false, "ability": "You may only nominate once per game. When you do, if the nominee is not the Demon, they die." }, @@ -1529,17 +1758,51 @@ "setup": false, "ability": "If you were the player most responsible for your team losing, you change alignment & win, even if dead." }, + { + "id": "plaguedoctor", + "name": "Plague Doctor", + "edition": "", + "team": "outsider", + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [ + "Storyteller Ability" + ], + "setup": false, + "ability": "If you die, the Storyteller gains a not-in-play Minion ability." + }, + { + "id": "hatter", + "name": "Hatter", + "edition": "", + "team": "outsider", + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 44, + "otherNightReminder": "If the Hatter died today: Wake the Minions and Demon. Show them the 'This Character Selected You' info token, then the Hatter token. Each player either shakes their head no or points to another character of the same type as their current character. If a second player would end up with the same character as another player, shake your head no and gesture for them to choose again. Put them to sleep. Change each player to the character they chose.", + "reminders": [ + "Tea Party Tonight" + ], + "setup": false, + "ability": "If you died today or tonight, the Minion & Demon players may choose new Minion & Demon characters to be." + }, { "id": "widow", "name": "Widow", "edition": "", "team": "minion", - "firstNight": 18, + "firstNight": 19, "firstNightReminder": "Show the Grimoire to the Widow for as long as they need. The Widow points to a player. That player is poisoned. Wake a good player. Show the 'These characters are in play' card, then the Widow character token.", "otherNight": 0, "otherNightReminder": "", - "reminders": ["Poisoned"], - "remindersGlobal": ["Knows"], + "reminders": [ + "Poisoned" + ], + "remindersGlobal": [ + "Knows" + ], "setup": false, "ability": "On your 1st night, look at the Grimoire and choose a player: they are poisoned. 1 good player knows a Widow is in play." }, @@ -1548,11 +1811,13 @@ "name": "Fearmonger", "edition": "", "team": "minion", - "firstNight": 26, + "firstNight": 27, "firstNightReminder": "The Fearmonger points to a player. Place the Fear token next to that player and announce that a new player has been selected with the Fearmonger ability.", - "otherNight": 17, + "otherNight": 18, "otherNightReminder": "The Fearmonger points to a player. If different from the previous night, place the Fear token next to that player and announce that a new player has been selected with the Fearmonger ability.", - "reminders": ["Fear"], + "reminders": [ + "Fear" + ], "setup": false, "ability": "Each night, choose a player. If you nominate & execute them, their team loses. All players know if you choose a new player." }, @@ -1578,7 +1843,9 @@ "firstNightReminder": "", "otherNight": 0, "otherNightReminder": "", - "reminders": ["Claimed"], + "reminders": [ + "Claimed" + ], "setup": false, "ability": "If you publicly claim to be the Goblin when nominated & are executed that day, your team wins." }, @@ -1587,12 +1854,14 @@ "name": "Mephit", "edition": "", "team": "minion", - "firstNight": 27, + "firstNight": 29, "firstNightReminder": "Show the Mephit their secret word.", - "otherNight": 18, + "otherNight": 20, "otherNightReminder": "Wake the 1st good player that said the Mephit's secret word and show them the 'You are' card and the thumbs down evil signal.", - "reminders": ["Turns evil", - "No ability"], + "reminders": [ + "Turns evil", + "No ability" + ], "setup": false, "ability": "You start knowing a secret word. The 1st good player to say this word becomes evil that night." }, @@ -1601,12 +1870,14 @@ "name": "Mezepheles", "edition": "", "team": "minion", - "firstNight": 27, + "firstNight": 29, "firstNightReminder": "Show the Mezepheles their secret word.", - "otherNight": 18, + "otherNight": 20, "otherNightReminder": "Wake the 1st good player that said the Mezepheles' secret word and show them the 'You are' card and the thumbs down evil signal.", - "reminders": ["Turns evil", - "No ability"], + "reminders": [ + "Turns evil", + "No ability" + ], "setup": false, "ability": "You start knowing a secret word. The 1st good player to say this word becomes evil that night." }, @@ -1615,12 +1886,14 @@ "name": "Marionette", "edition": "", "team": "minion", - "firstNight": 12, + "firstNight": 13, "firstNightReminder": "Select one of the good players next to the Demon and place the Is the Marionette reminder token. Wake the Demon and show them the Marionette.", "otherNight": 0, "otherNightReminder": "", "reminders": [], - "remindersGlobal": ["Is the Marionette"], + "remindersGlobal": [ + "Is the Marionette" + ], "setup": true, "ability": "You think you are a good character but you are not. The Demon knows who you are. [You neighbour the Demon]" }, @@ -1646,23 +1919,73 @@ "firstNightReminder": "", "otherNight": 0, "otherNightReminder": "", - "reminders": ["About to die", - "Used vote"], + "reminders": [ + "About to die", + "Used vote" + ], "setup": false, "ability": "All players keep their eyes closed when voting & the vote tally is secret. Votes for you only count if you vote." }, + { + "id": "summoner", + "name": "Summoner", + "edition": "", + "team": "minion", + "firstNight": 9.5, + "firstNightReminder": "Show the \"These characters are not in play\" card. Show 3 character tokens of good characters not in play.", + "otherNight": 21.5, + "otherNightReminder": "If it is the 3rd night, wake the Summoner. They point to a player and a Demon on the character sheet - that player becomes that Demon.", + "reminders": [ + "Night 1", + "Night 2", + "Night 3" + ], + "setup": true, + "ability": "You get 3 bluffs. On the 3rd night, choose a player: they become an evil Demon of your choice. [No Demon]" + }, + { + "id": "vizier", + "name": "Vizier", + "edition": "", + "team": "minion", + "firstNight": 1002, + "firstNightReminder": "Announce \"The Vizier is in play\" and state which player they are.", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [], + "setup": false, + "ability": "All players know who you are. You can not die during the day. If good voted, you may choose to execute immediately." + }, + { + "id": "harpy", + "name": "Harpy", + "edition": "", + "team": "minion", + "firstNight": 28, + "firstNightReminder": "Wake the Harpy; they point at one player, then another. Wake the 1st player the Harpy pointed to, show them the 'This character has selected you' card, show them the Harpy token, then point at the 2nd player the Harpy pointed to.", + "otherNight": 19, + "otherNightReminder": "Wake the Harpy; they point at one player, then another. Wake the 1st player the Harpy pointed to, show them the 'This character has selected you' card, show them the Harpy token, then point at the 2nd player the Harpy pointed to.", + "reminders": [ + "Mad", + "2nd" + ], + "setup": false, + "ability": "Each night, choose 2 players: tomorrow, the 1st player is mad that the 2nd is evil, or both might die." + }, { "id": "lilmonsta", "name": "Lil' Monsta", "edition": "", "team": "demon", - "firstNight": 15, + "firstNight": 16, "firstNightReminder": "Wake all Minions together, allow them to vote by pointing at who they want to babysit Lil' Monsta.", - "otherNight": 35, + "otherNight": 38, "otherNightReminder": "Wake all Minions together, allow them to vote by pointing at who they want to babysit Lil' Monsta. Choose a player, that player dies.", "reminders": [], - "remindersGlobal": ["Is the Demon", - "Dead"], + "remindersGlobal": [ + "Is the Demon", + "Dead" + ], "setup": true, "ability": "Each night, Minions choose who babysits Lil' Monsta's token & \"is the Demon\". A player dies each night*. [+1 Minion]" }, @@ -1671,12 +1994,14 @@ "name": "Lleech", "edition": "", "team": "demon", - "firstNight": 16, + "firstNight": 17, "firstNightReminder": "The Lleech points to a player. Place the Poisoned reminder token.", - "otherNight": 34, + "otherNight": 37, "otherNightReminder": "The Lleech points to a player. That player dies.", - "reminders": ["Dead", - "Poisoned"], + "reminders": [ + "Dead", + "Poisoned" + ], "setup": false, "ability": "Each night*, choose a player: they die. You start by choosing an alive player: they are poisoned - you die if & only if they die." }, @@ -1687,11 +2012,15 @@ "team": "demon", "firstNight": 0, "firstNightReminder": "", - "otherNight": 33, + "otherNight": 36, "otherNightReminder": "The Al-Hadikhia chooses 3 players. Announce the first player, wake them to nod yes to live or shake head no to die, kill or resurrect accordingly, then put to sleep and announce the next player. If all 3 are alive after this, all 3 die.", - "reminders": ["1", "2", "3", - "Chose death", - "Chose life"], + "reminders": [ + "1", + "2", + "3", + "Chose death", + "Chose life" + ], "setup": false, "ability": "Each night*, choose 3 players (all players learn who): each silently chooses to live or die, but if all live, all die." }, @@ -1702,10 +2031,12 @@ "team": "demon", "firstNight": 0, "firstNightReminder": "", - "otherNight": 23, + "otherNight": 25, "otherNightReminder": "Choose a player, that player dies.", - "reminders": ["Dead", - "About to die"], + "reminders": [ + "Dead", + "About to die" + ], "setup": true, "ability": "Each night*, a player might die. Executions fail if only evil voted. You register as a Minion too. [Most players are Legion]" }, @@ -1714,16 +2045,20 @@ "name": "Leviathan", "edition": "", "team": "demon", - "firstNight": 54, + "firstNight": 1001, "firstNightReminder": "Place the Leviathan 'Day 1' marker. Announce 'The Leviathan is in play; this is Day 1.'", - "otherNight": 73, + "otherNight": 1001, "otherNightReminder": "Change the Leviathan Day reminder for the next day.", - "reminders": ["Good player executed"], - "remindersGlobal": ["Day 1", - "Day 2", - "Day 3", - "Day 4", - "Day 5"], + "reminders": [ + "Good player executed" + ], + "remindersGlobal": [ + "Day 1", + "Day 2", + "Day 3", + "Day 4", + "Day 5" + ], "setup": false, "ability": "If more than 1 good player is executed, evil wins. All players know you are in play. After day 5, evil wins." }, @@ -1740,6 +2075,51 @@ "setup": true, "ability": "Nominees die, but may nominate again immediately (on day 3, they must). After day 3, evil wins. [All Minions are Riot]" }, + { + "id": "yaggababble", + "name": "Yaggababble", + "edition": "", + "team": "demon", + "firstNight": 5.5, + "firstNightReminder": "Show the Yaggababble their secret phrase.", + "otherNight": 38.5, + "otherNightReminder": "Choose a number of players up to the total number of times the Yaggababble said their secret phrase publicly, those players die.", + "reminders": [ + "Dead" + ], + "setup": false, + "ability": "You start knowing a secret phrase. For each time you said it publicly today, a player might die." + }, + { + "id": "kazali", + "name": "Kazali", + "edition": "", + "team": "demon", + "firstNight": 3, + "firstNightReminder": "The Kazali points to a player and a Minion on the character sheet. They do this for as many Minions as should be in play. Change those players' tokens to the chosen Minion tokens in the Grim. Wake those players, show them the 'You Are' card, the Minions they have become, and a thumbs down.", + "otherNight": 39, + "otherNightReminder": "The Kazali points to a player. That player dies", + "reminders": [ + "Dead" + ], + "setup": true, + "ability": "Each night*, choose a player: they die. [You choose which players are Minions. -? to +? Outsiders]" + }, + { + "id": "ojo", + "name": "Ojo", + "edition": "", + "team": "demon", + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 35, + "otherNightReminder": "The Ojo points to a character on the sheet; if in play, that player dies. If it is not in play, the Storyteller chooses who dies instead.", + "reminders": [ + "Dead" + ], + "setup": false, + "ability": "Each night*, choose a character: they die. If they are not in play, the Storyteller chooses who dies." + }, { "id": "gangster", "name": "Gangster", @@ -1754,4 +2134,3 @@ "ability": "Once per day, you may choose to kill an alive neighbour, if your other alive neighbour agrees." } ] - diff --git a/src/store/locale/en/ui.json b/src/store/locale/en/ui.json index 8dad857..3888c2c 100644 --- a/src/store/locale/en/ui.json +++ b/src/store/locale/en/ui.json @@ -1,6 +1,6 @@ { - "menu":{ - "grimoire":{ + "menu": { + "grimoire": { "title": "Grimoire", "hide": "Hide", "show": "Show", @@ -16,8 +16,8 @@ "ringBell": "Ring Bell", "organGrinder ": "Organ Grinder Vote" }, - "session":{ - "title":{ + "session": { + "title": { "player": "Playing", "host": "Hosting", "create": "Live Session" @@ -32,20 +32,20 @@ "voteHistory": "Vote history", "leave": "Leave Session" }, - "players":{ + "players": { "title": "Players", "add": "Add", "randomize": "Randomize", "removeAll": "Remove all" }, - "characters":{ + "characters": { "title": "Characters", "selectEdition": "Select Edition", "assign": "Choose & Assign", "addFabled": "Add Fabled", "removeAll": "Remove all" }, - "help":{ + "help": { "title": "Help", "reference": "Reference Sheet", "nightOrder": "Night Order Sheet", @@ -54,7 +54,7 @@ "source": "Source code" } }, - "prompt":{ + "prompt": { "background": "Enter custom background URL", "createSession": "Enter a channel number / name for your session", "sendRoles": "Do you want to distribute assigned characters to all SEATED players?", @@ -69,7 +69,7 @@ "customError": "Error loading custom script", "customNote": "Add a custom reminder node" }, - "vote":{ + "vote": { "nominates": "nominates", "callexile": "calls for the exile of", "exclam": "!", @@ -92,7 +92,7 @@ "seatToVote": "Pleas claim a seat to vote", "doVote": "Go" }, - "townsquare":{ + "townsquare": { "others": "Other characters", "bluffs": "Demon bluffs", "fabled": "Fabled", @@ -132,11 +132,11 @@ } } }, - "towninfo":{ - "addPlayers":"Please add more players!", - "nightPhase":"Night Phase" + "towninfo": { + "addPlayers": "Please add more players!", + "nightPhase": "Night Phase" }, - "player":{ + "player": { "handUp": "Hand UP", "handDown": "Hand DOWN", "cancel": "Cancel", @@ -155,15 +155,15 @@ "vacateSeat": "Vacate seat", "occupiedSeat": "Seat occupied" }, - "intro":{ + "intro": { "header": "Welcome to the (unofficial) Virtual Town Square and Grimoire for Blood on the Clocktower! Please add more players through the", "menu": "Menu", "body": "on the top right or by pressing [A]. You can also join a game session by pressing [J].", "footerStart": "This project is free and open source and can be found on", "footerEnd": ". It is not affiliated with The Pandemonium Institute. \"Blood on the Clocktower\" is a trademark of Steven Medway and The Pandemonium Institute." }, - "modal":{ - "edition":{ + "modal": { + "edition": { "title": "Select an edition:", "tab": { "official": "Official scripts", @@ -200,20 +200,25 @@ "firstNight": "First Night", "otherNights": "Other Nights", "minionInfo": "Minion info", - "minionInfoDescription": "• If more than one Minion, they all make eye contact with each other. • Show the “This is the Demon” card. Point to the Demon.", + "minionInfoDescription": "If more than one Minion, they all make eye contact with each other. Show the “This is the Demon” card. Point to the Demon.", "demonInfo": "Demon info & bluffs", - "demonInfoDescription": "• Show the “These are your minions” card. Point to each Minion. • Show the “These characters are not in play” card. Show 3 character tokens of good characters not in play." + "demonInfoDescription": "Show the “These are your minions” card. Point to each Minion. Show the “These characters are not in play” card. Show 3 character tokens of good characters not in play.", + "dawn": "Dawn", + "dawnDescription1": "Wake all players.", + "dawnDescription2": "Wake all players, then announce who died this night.", + "dusk": "Dusk", + "duskDescription": "End the day, and put all players to sleep." }, "reference": { - "title": "Character Reference", - "jinxed": "Jinxed", - "notfirstnight": "*Not the first night", - "teamNames": { - "townsfolk": "townfolk", - "outsider": "outsider", - "minion": "minion", - "demon": "demon" - } + "title": "Character Reference", + "jinxed": "Jinxed", + "notfirstnight": "*Not the first night", + "teamNames": { + "townsfolk": "townfolk", + "outsider": "outsider", + "minion": "minion", + "demon": "demon" + } }, "reminder": { "title": "Choose a reminder token:", @@ -230,13 +235,13 @@ "roles": { "titleStart": "Select the characters for ", "titleEnd": " players:", - "warning":"Warning: there are characters selected that modify the game setup! The randomizer does not account for these characters.", + "warning": "Warning: there are characters selected that modify the game setup! The randomizer does not account for these characters.", "allowMultiple": "Allow duplicate characters", "assignStart": "Assign ", "assignEnd": " characters randomly", "shuffle": "Shuffle characters" }, - "voteHistory":{ + "voteHistory": { "title": "Vote history", "accessibility": "Accessible to players", "clear": "Clear for everyone", diff --git a/src/store/locale/fr/fabled.json b/src/store/locale/fr/fabled.json index 1a8dac1..40c1cc9 100644 --- a/src/store/locale/fr/fabled.json +++ b/src/store/locale/fr/fabled.json @@ -1,19 +1,24 @@ [ { "id": "doomsayer", - "name": "Prédicateur", - "team": "fabled", - "firstNightReminder": "", - "otherNightReminder": "", - "reminders": ["Utilisé"], - "setup": false, - "ability": "Si 4 joueurs ou plus sont en vie, chaque joueur vivant peut, une fois par partie, décider qu'un joueur de son propre alignement meure." + "name": "Prédicateur", + "team": "fabled", + "firstNightReminder": "", + "otherNightReminder": "", + "reminders": [ + "Utilisé" + ], + "setup": false, + "ability": "Si 4 joueurs ou plus sont en vie, chaque joueur vivant peut, une fois par partie, décider qu'un joueur de son propre alignement meure." }, { "id": "angel", "firstNightReminder": "", "otherNightReminder": "", - "reminders": ["Protégé", "Catastrophe"], + "reminders": [ + "Protégé", + "Catastrophe" + ], "setup": false, "name": "Ange", "team": "fabled", @@ -23,7 +28,9 @@ "id": "buddhist", "firstNightReminder": "", "otherNightReminder": "", - "reminders": ["Vétéran"], + "reminders": [ + "Vétéran" + ], "setup": false, "name": "Bouddhiste", "team": "fabled", @@ -33,7 +40,9 @@ "id": "hellslibrarian", "firstNightReminder": "", "otherNightReminder": "", - "reminders": ["Catastrophe"], + "reminders": [ + "Catastrophe" + ], "setup": false, "name": "Libraire infernal", "team": "fabled", @@ -43,7 +52,10 @@ "id": "revolutionary", "firstNightReminder": "", "otherNightReminder": "", - "reminders": ["Même camp", "Utilisé"], + "reminders": [ + "Même camp", + "Utilisé" + ], "setup": false, "name": "Révolutionnaire", "team": "fabled", @@ -62,9 +74,11 @@ { "id": "toymaker", "firstNightReminder": "", - "otherNight": 1, + "otherNight": 2, "otherNightReminder": "Si le Démon pourrait terminer la partie cette nuit, mais qu'il a toujours son marqueur 'nuit sans attaque', il n'agit pas cette nuit (ne le réveillez pas)", - "reminders": ["Nuit sans attaque"], + "reminders": [ + "Nuit sans attaque" + ], "setup": false, "name": "Fabricant de Jouet", "team": "fabled", @@ -74,7 +88,9 @@ "id": "fibbin", "firstNightReminder": "", "otherNightReminder": "", - "reminders": ["Utilisé"], + "reminders": [ + "Utilisé" + ], "setup": false, "name": "Mensonge", "team": "fabled", @@ -83,9 +99,14 @@ { "id": "duchess", "firstNightReminder": "", - "otherNight": 1, + "otherNight": 2, "otherNightReminder": "Reveillez chaque visiteur dans l'ordre un par un. Indiquez à chacun d'entre eux combien de Visiteurs sont mauvais. Excepté celui qui reçoit les fausses informations qui recevra à la place n'importe quel autre nombre.", - "reminders": ["Visiteur 1", "Visiteur 2", "Visiteur 3", "Fausse Info"], + "reminders": [ + "Visiteur 1", + "Visiteur 2", + "Visiteur 3", + "Fausse Info" + ], "setup": false, "name": "Duchesse", "team": "fabled", @@ -105,7 +126,9 @@ "id": "spiritofivory", "firstNightReminder": "", "otherNightReminder": "", - "reminders": ["Pas de méchant suplémentaire"], + "reminders": [ + "Pas de méchant suplémentaire" + ], "setup": false, "name": "Esprit d'Ivoire", "team": "fabled", @@ -127,20 +150,46 @@ "firstNight": 1, "firstNightReminder": "Marquez un joueur comme \"Sûr\". Réveillez chaque joueur Mauvais et indiquez lui qui est ce joueur.", "otherNightReminder": "", - "reminders": ["Sûr"], + "reminders": [ + "Sûr" + ], "setup": false, "name": "Chasseur d’orages", "team": "fabled", "ability": "Désignez un rôle de gentil. S'il est en jeu, il ne peut mourrir que par exécution, mais les joueurs mauvais savent qui a ce rôle." }, { - "id": "deusexfiasco", + "id": "ferryman", "firstNightReminder": "", "otherNightReminder": "", - "reminders": ["Whoops"], + "reminders": [], "setup": false, - "name": "Deus ex Fiasco", + "name": "Passeur", "team": "fabled", - "ability": "Une fois par partie, le Narrateur fera une \"Erreur\", la corrigera et l'admettra publiquement." + "ability": "Le dernier jour, tous les morts regagnent leur jeton de vote." + }, + { + "id": "gardener", + "firstNightReminder": "", + "otherNightReminder": "", + "reminders": [ + "Rôle choisi" + ], + "setup": false, + "name": "Jardinier", + "team": "fabled", + "ability": "Le Narrateur choisit le rôle d’un ou de plusieurs joueurs." + }, + { + "id": "bootlegger", + "firstNight": 1, + "firstNightReminder": "Si applicables, utilisez la (les) règle(s) faite(s)-maison.", + "otherNight": 2, + "otherNightReminder": "Si applicables, utilisez la (les) règle(s) faite(s)-maison.", + "reminders": [], + "setup": false, + "name": "Contrebandier", + "team": "fabled", + "ability": "Ce script possède des rôles ou des règles faits-maison." } ] diff --git a/src/store/locale/fr/hatred.json b/src/store/locale/fr/hatred.json index b508b44..a58143e 100644 --- a/src/store/locale/fr/hatred.json +++ b/src/store/locale/fr/hatred.json @@ -40,6 +40,10 @@ { "id": "Politician", "reason": "Un Chaudronnier ne peut pas créer un Politicien mauvais. " + }, + { + "id": "Village Idiot", + "reason": "S'il y a moins de trois Idiots du Village, le Chaudronnier a le droit d'en créer un nouveau. L'Idiot du Village ivre peut alors changer." } ] }, @@ -82,6 +86,10 @@ { "id": "Mayor", "reason": "Si le Léviathan est en jeu et qu'il n'y a pas d'exécution le cinquième jour, les bons gagnent. " + }, + { + "id": "Pit-Hag", + "reason": "Après le jour 5, le Chaudronnier ne peut pas créer de Léviathan." } ] }, @@ -397,5 +405,163 @@ "reason": "Un seul personnage maudit peut être en jeu à la fois. Les joueurs mauvais commencent la partie en sachant de quel joueur et quel rôle il s'agit." } ] + }, + { + "id": "Yaggababble", + "hatred": [ + { + "id": "Exorcist", + "reason": "Si l'Exorciste désigne le Yaggablabla, la capacité du Yaggablabla ne tue personne cette nuit." + } + ] + }, + { + "id": "Summoner", + "hatred": [ + { + "id": "Alchemist", + "reason": "Si un Alchimiste-Invocateur est en jeu, la partie commence avec un Démon, comme d'habitude. Si l'Alchimiste-Invocateur désigne un joueur, il le transforme en Démon mais ne change pas son alignement." + }, + { + "id": "Clockmaker", + "reason": "Si l'Invocateur est en jeu, l'Horloger ne reçoit aucune info jusqu'à ce qu'un Démon soit créé." + }, + { + "id": "Poppy Grower", + "reason": "Si le Planteur de pavot est en vie lorsque l'Invocateur agit, l'Invocateur choisit un rôle de Démon, mais c'est le Narrateur qui choisit un joueur." + }, + { + "id": "Marionette", + "reason": "La Marionnette est voisine de l'Invocateur. L'Invocateur sait qui est la Marionnette." + }, + { + "id": "Kazali", + "reason": "Le Kazali ne peut pas créer un Invocateur." + }, + { + "id": "Legion", + "reason": "Si l'Invocateur crée une Légion, la majorité des joueurs (y compris les joueurs mauvais) deviennent des Légions mauvaises." + }, + { + "id": "Riot", + "reason": "Si l'Invocateur crée une Émeute, le joueur choisi et tous les mauvais deviennent des Émeutes. Le joueur choisi doit être un des bons voisins vivants de l'Invocateur." + } + ] + }, + { + "id": "Vizier", + "hatred": [ + { + "id": "Magician", + "reason": "Un seul personnage maudit peut être en jeu à la fois. Les joueurs mauvais commencent la partie en sachant de quel joueur et quel rôle il s'agit." + }, + { + "id": "Alchemist", + "reason": "Si l'Alchimiste a la capacité du Vizir, il peut exécuter si et seulement si au moins 3 joueurs votent, peu importe leur alignement." + }, + { + "id": "Courtier", + "reason": "Si le Vizir perd sa capacité, il l'apprend. Si le Vizir est exécuté alors qu'il a sa capacité, son équipe gagne." + }, + { + "id": "Preacher", + "reason": "Si le Vizir perd sa capacité, il l'apprend. Si le Vizir est exécuté alors qu'il a sa capacité, son équipe gagne." + }, + { + "id": "Investigator", + "reason": "Si l'Enquêteur apprend qu'un Vizir est en jeu, la présence du Vizir n'est pas annoncée publiquement." + }, + { + "id": "Fearmonger", + "reason": "Le Vizir apprend quel joueur a été désigné par le Semeur de peur, et ne peut pas forcer l'exécution de ce joueur." + }, + { + "id": "Lil' Monsta", + "reason": "Le Vizir peut mourir par exécution s'il a la garde du Bébé Monstre." + } + ] + }, + { + "id": "Hatter", + "hatred": [ + { + "id": "Legion", + "reason": "Si le Chapelier meurt alors qu'une Légion est en jeu, rien ne se passe. Si le Chapelier meurt et qu'un mauvais choisit de devenir Légion, tous les joueurs mauvais deviennent une Légion." + }, + { + "id": "Leviathan", + "reason": "Si le Chapelier est mort durant ou après le cinquième jour, le Démon ne peut pas choisir de devenir Léviathan." + }, + { + "id": "Lil' Monsta", + "reason": "Si un Démon choisit de devenir Bébé monstre, il choisit aussi un rôle de Serviteur et devient baby-sitter pour cette nuit." + }, + { + "id": "Riot", + "reason": "Si à la mort du Chapelier, une Émeute choisit de devenir un autre Démon, les autres Émeutes doivent devenir des Serviteurs. Si à la mort du Chapelier, le Démon choisit de devenir Émeute, les Serviteurs deviennent des Émeutes aussi." + } + ] + }, + { + "id": "Kazali", + "hatred": [ + { + "id": "Bounty Hunter", + "reason": "Un Villageois ne devient mauvais que si le Mercenaire est toujours en jeu après l'action du Kazali." + }, + { + "id": "Choirboy", + "reason": "Le Kazali ne peut pas choisir de changer le Roi en Serviteur si l'Enfant de choeur est en jeu." + }, + { + "id": "Goon", + "reason": "Si le Kazali choisit de transformer l'Homme de main en Serviteur, il devient ivre, et les Serviteurs restants sont choisis par le Narrateur sans prendre en compte les décisions du Kazali." + }, + { + "id": "Huntsman", + "reason": "Si le Kazali transforme la Demoiselle en Serviteur, et si le Chasseur est en jeu, un joueur bon devient Demoiselle." + }, + { + "id": "Marionette", + "reason": "Si le Kazali veut créer une Marionnette, il doit choisir l'un de ses voisins." + } + ] + }, + { + "id": "Plague Doctor", + "hatred": [ + { + "id": "Baron", + "reason": "Si le Narrateur gagne la capacité du Baron, jusqu'à deux joueurs deviennent des Étrangers qui ne sont pas en jeu." + }, + { + "id": "Boomdandy", + "reason": "Si le Médecin de Peste est exécuté et que le Narrateur aurait du gagner une capacité d'Homme-bombe, la capacité d'Homme-bombe s'active immédiatement." + }, + { + "id": "Evil Twin", + "reason": "Le Narrateur ne peut pas gagner une capacité de Jumeau maléfique si le Médecin de Peste meurt." + }, + { + "id": "Fearmonger", + "reason": "Si le Médecin de Peste aurait du donner la capacité de Semeur de peur au Narrateur, un Serviteur en vie gagne la capacité de Semeur de peur en plus de sa propre capacité, et l'apprend." + }, + { + "id": "Goblin", + "reason": "Si le Médecin de Peste aurait du donner la capacité de Gobelin au Narrateur, un Serviteur en vie gagne la capacité de Gobelin en plus de sa propre capacité, et l'apprend." + }, + { + "id": "Scarlet Woman", + "reason": "Si le Médecin de Peste aurait du donner la capacité de Gourgandine au Narrateur, un Serviteur en vie gagne la capacité de Gourgandine en plus de sa propre capacité, et l'apprend." + }, + { + "id": "Spy", + "reason": "Si le Médecin de Peste aurait du donner la capacité d'Espion au Narrateur, un Serviteur en vie gagne la capacité d'Espion en plus de sa propre capacité, et l'apprend." + }, + { + "id": "Marionette", + "reason": "Si l'un des voisins du Démon est un Villageois ou Étranger et est vivant quand le Médecin de Peste meurt, ce joueur devient une mauvaise Marionnette. S'il y a déjà un joueur mauvais de plus, cela n'arrive pas." + } + ] } ] diff --git a/src/store/locale/fr/roles.json b/src/store/locale/fr/roles.json index 22cb40e..3c0991f 100644 --- a/src/store/locale/fr/roles.json +++ b/src/store/locale/fr/roles.json @@ -4,7 +4,7 @@ "name": "Lavandière", "edition": "tb", "team": "townsfolk", - "firstNight": 32, + "firstNight": 35, "firstNightReminder": "Indiquez un rôle de villageois en jeu et deux joueurs. L'un de ces joueurs est ce personnage.", "otherNight": 0, "otherNightReminder": "", @@ -20,7 +20,7 @@ "name": "Bibliothécaire", "edition": "tb", "team": "townsfolk", - "firstNight": 33, + "firstNight": 36, "firstNightReminder": "Indiquez un rôle d'Étranger en jeu et deux joueurs. L'un de ces joueurs est ce personnage. (S'il n'y a pas d'Étranger, indiquez le).", "otherNight": 0, "otherNightReminder": "", @@ -36,7 +36,7 @@ "name": "Enquêteur", "edition": "tb", "team": "townsfolk", - "firstNight": 34, + "firstNight": 37, "firstNightReminder": "Indiquez un rôle de Serviteur en jeu et deux joueurs. L'un de ces joueurs est ce personnage.", "otherNight": 0, "otherNightReminder": "", @@ -52,7 +52,7 @@ "name": "Chef", "edition": "tb", "team": "townsfolk", - "firstNight": 35, + "firstNight": 38, "firstNightReminder": "Indiquez combien de paires de Mauvais voisins sont dans la partie.", "otherNight": 0, "otherNightReminder": "", @@ -65,9 +65,9 @@ "name": "Empathe", "edition": "tb", "team": "townsfolk", - "firstNight": 36, + "firstNight": 39, "firstNightReminder": "Indiquez combien de joueurs sont Mauvais parmi les voisins de l'Empathe.", - "otherNight": 53, + "otherNight": 58, "otherNightReminder": "Indiquez combien de joueurs sont Mauvais parmi les voisins vivants de l'Empathe.", "reminders": [], "setup": false, @@ -78,9 +78,9 @@ "name": "Voyant", "edition": "tb", "team": "townsfolk", - "firstNight": 37, + "firstNight": 40, "firstNightReminder": "Le Voyant désigne 2 joueurs. Indiquez si, oui ou non, l'un d'eux est le Démon (ou la fausse piste).", - "otherNight": 54, + "otherNight": 59, "otherNightReminder": "Le Voyant désigne 2 joueurs. Indiquez si, oui ou non, l'un d'eux est le Démon (ou la fausse piste).", "reminders": [ "Fausse piste" @@ -95,7 +95,7 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 56, + "otherNight": 60, "otherNightReminder": "Si un joueur est mort par execution aujourd'hui, indiquez le personnage du joueur exécuté.", "reminders": [ "Executé" @@ -125,7 +125,7 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 42, + "otherNight": 57, "otherNightReminder": "Si le Corbeau est mort cette nuit, il désigne un joueur. Indiquez le rôle de ce joueur.", "reminders": [], "setup": false, @@ -192,9 +192,9 @@ "name": "Majordome", "edition": "tb", "team": "outsider", - "firstNight": 38, + "firstNight": 41, "firstNightReminder": "Le Majordome désigne un joueur. Marquez ce joueur comme 'Maître'.", - "otherNight": 55, + "otherNight": 73, "otherNightReminder": "Le Majordome désigne un joueur. Marquez ce joueur comme 'Maître'.", "reminders": [ "Maître" @@ -249,7 +249,7 @@ "name": "Empoisonneur", "edition": "tb", "team": "minion", - "firstNight": 17, + "firstNight": 18, "firstNightReminder": "L'empoisonneur désigne un joueur, marquez-le comme empoisonné.", "otherNight": 8, "otherNightReminder": "Le joueur précédement empoisonné ne l'est plus. L'empoisonneur désigne un joueur. Ce joueur est empoisonné.", @@ -264,9 +264,9 @@ "name": "Espion", "edition": "tb", "team": "minion", - "firstNight": 48, + "firstNight": 55, "firstNightReminder": "Montrez votre grimoire à l'Espion aussi longtemps qu'il en a besoin.", - "otherNight": 68, + "otherNight": 74, "otherNightReminder": "Montrez votre grimoire à l'Espion aussi longtemps qu'il en a besoin.", "reminders": [], "setup": false, @@ -279,7 +279,7 @@ "team": "minion", "firstNight": 0, "firstNightReminder": "", - "otherNight": 20, + "otherNight": 21, "otherNightReminder": "Si le Démon est mort (et que la partie n'a pas pris fin), informez le Gourgandin qu'il devient le Démon.", "reminders": [ "Démon" @@ -307,7 +307,7 @@ "team": "demon", "firstNight": 0, "firstNightReminder": "", - "otherNight": 24, + "otherNight": 26, "otherNightReminder": "Le Diablotin désigne un joueur, ce joueur meurt. Si le Diablotin se choisit lui-même, l'un de ses Serviteurs encore en vie devient le Diablotin.", "reminders": [ "Mort", @@ -323,7 +323,7 @@ "team": "traveler", "firstNight": 1, "firstNightReminder": "Le Bureaucrate indique un joueur. Placez le marqueur 'triple vote' sur ce joueur.", - "otherNight": 1, + "otherNight": 2, "otherNightReminder": "Le Bureaucrate indique un joueur. Placez le marqueur 'triple vote' sur ce joueur.", "reminders": [ "Triple vote" @@ -338,7 +338,7 @@ "team": "traveler", "firstNight": 1, "firstNightReminder": "Le Voleur désigne un joueur. Placez le marqueur 'Vote négatif' sur ce joueur.", - "otherNight": 1, + "otherNight": 2, "otherNightReminder": "Le Voleur désigne un joueur. Placez le marqueur 'Vote négatif' sur ce joueur.", "reminders": [ "Vote négatif" @@ -390,9 +390,9 @@ "name": "Grand-mère", "edition": "bmr", "team": "townsfolk", - "firstNight": 39, + "firstNight": 42, "firstNightReminder": "Indiquez à la Grand-mère qui est son Petit-fils.", - "otherNight": 50, + "otherNight": 56, "otherNightReminder": "Si le Petit-Fils a été tué par le Démon cette nuit: la Grand-mère meurt.", "reminders": [ "Petit-fils" @@ -405,9 +405,9 @@ "name": "Marin", "edition": "bmr", "team": "townsfolk", - "firstNight": 10, + "firstNight": 12, "firstNightReminder": "Le Marin désigne un autre joueur. Le marin ou le joueur qu'il a désigné est Ivre jusqu'à la tombée de la nuit.", - "otherNight": 4, + "otherNight": 5, "otherNightReminder": "Le joueur précédement Ivre ne l'est plus. Le Marin désigne un autre joueur. Le marin ou le joueur qu'il a désigné est Ivre jusqu'à la tombée de la nuit.", "reminders": [ "Ivre" @@ -420,9 +420,9 @@ "name": "Femme de chambre", "edition": "bmr", "team": "townsfolk", - "firstNight": 50, + "firstNight": 58, "firstNightReminder": "La Femme de chambre désigne deux autres joueurs vivants. Indiquez combien parmi eux ont été reveillés pour leur pouvoir cette nuit.", - "otherNight": 70, + "otherNight": 77, "otherNightReminder": "La Femme de chambre désigne deux autres joueurs vivants. Indiquez combien parmi eux ont été reveillés pour leur pouvoir cette nuit.", "reminders": [], "setup": false, @@ -435,7 +435,7 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 22, + "otherNight": 23, "otherNightReminder": "L'Exorciste désigne un joueur, différent de la nuit précédente. Si ce joueur est le Démon, informez celui-ci qu'il a été identifié par l'Exorciste et dévoilez-lui qui est l'Exorciste. Ne réveillez pas le Démon pour utiliser son pouvoir cette nuit.", "reminders": [ "Exorcisé" @@ -450,7 +450,7 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 9, + "otherNight": 10, "otherNightReminder": "Les joueurs Ivres et protégés désignés précédement ne le sont plus. L'Aubergiste désigne 2 joueurs. Ils sont protégés. L'un des 2 est Ivre.", "reminders": [ "Protégé", @@ -481,7 +481,7 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 47, + "otherNight": 42, "otherNightReminder": "Si les annonces publiques de la Commère étaient vraie aujourd'hui, choisisser un joueur non protégé. Ce joueur meurt.", "reminders": [ "Mort" @@ -494,9 +494,9 @@ "name": "Courtisan", "edition": "bmr", "team": "townsfolk", - "firstNight": 19, + "firstNight": 20, "firstNightReminder": "Le Courtisan décide d'utiliser ou non son pouvoir. S'il le fait, il désigne un rôle : si ce rôle est en jeu, il devient Ivre.", - "otherNight": 10, + "otherNight": 9, "otherNightReminder": "S'il ne l'a pas déjà fait, Le Courtisan décide d'utiliser ou non son pouvoir. S'il le fait, il désigne un rôle : si ce rôle est en jeu, il devient Ivre pour 3 jours et 3 nuits.", "reminders": [ "Ivre 3", @@ -514,7 +514,7 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 45, + "otherNight": 48, "otherNightReminder": "S'il ne l'a pas déjà fait, Le Professeur décide d'utiliser ou non sa capacité. S'il le fait, il désigne un joueur mort. Si c'est un Villageois, il est ressuscité.", "reminders": [ "Vivant", @@ -588,7 +588,7 @@ "team": "outsider", "firstNight": 0, "firstNightReminder": "", - "otherNight": 48, + "otherNight": 54, "otherNightReminder": "Le bricoleur peut mourir à tout moment.", "reminders": [ "Mort" @@ -603,7 +603,7 @@ "team": "outsider", "firstNight": 0, "firstNightReminder": "", - "otherNight": 49, + "otherNight": 55, "otherNightReminder": "Si l'Enfant de la lune a désigné un joueur et que ce joueur est bon, le joueur désigné meurt.", "reminders": [ "Mort" @@ -631,9 +631,9 @@ "name": "Aliéné", "edition": "bmr", "team": "outsider", - "firstNight": 7, + "firstNight": 9, "firstNightReminder": "S'il y a 7 joueurs ou plus, indiquez à l'Aliéné un nombre de rôles de Serviteurs correspondant au nombre de Serviteurs en jeu et des joueurs pour chacuns de ces personnages. Montrez 3 jetons de personnages bons de votre choix. Si le faux personnage de Démon assigné à l'Aliéné a des actions de nuit, prétendez que vous lui faites réaliser ces actions. Placez le(s) marqueur(s) d'attaque de l'Aliéné. Réveillez le vrai Démon. Dévoilez au Démon les véritables Serviteurs et 3 bons personnages qui ne sont pas en jeu. Dévoilez au Démon qui est l'Aliéné. Si l'Aliéné a attaqué des joueurs, dévoilez au véritable Démon les joueurs marqués puis retirez les marqueurs de l'Aliéné.", - "otherNight": 21, + "otherNight": 22, "otherNightReminder": "Permettez à l'Aliéné de réaliser les actions du Démon qu'il croit être. Placez le(s) marqueur(s) d'attaque. Si l'Aliéné a indiqué des joueurs, réveillez le Démon. Dévoilez au Démon les marqueurs de l'Aliéné puis retirez-les.", "reminders": [], "remindersGlobal": [ @@ -647,9 +647,9 @@ "name": "Parrain", "edition": "bmr", "team": "minion", - "firstNight": 21, + "firstNight": 22, "firstNightReminder": "Dévoilez les rôles d'Étrangers en jeu.", - "otherNight": 38, + "otherNight": 41, "otherNightReminder": "Si un Étranger est mort aujourd'hui, le Parrain désigne un joueur. Ce joueur meurt.", "reminders": [ "Mort" @@ -662,7 +662,7 @@ "name": "Avocat du diable", "edition": "bmr", "team": "minion", - "firstNight": 22, + "firstNight": 23, "firstNightReminder": "L'avocat du Diable désigne un joueur vivant. Si ce joueur est executé demain, il ne meurt pas.", "otherNight": 14, "otherNightReminder": "L'avocat du Diable désigne un joueur vivant différent de la nuit précédente. Si ce joueur est executé demain, il ne meurt pas.", @@ -679,7 +679,7 @@ "team": "minion", "firstNight": 0, "firstNightReminder": "", - "otherNight": 37, + "otherNight": 40, "otherNightReminder": "S'il ne l'a pas déjà fait, L'Assassin décide d'utiliser ou non son pouvoir. S'il le fait, il désigne un joueur. Ce joueur meurt même s'il ne devrait pas pouvoir mourrir pour une raison quelconque.", "reminders": [ "Mort", @@ -708,7 +708,7 @@ "team": "demon", "firstNight": 0, "firstNightReminder": "", - "otherNight": 25, + "otherNight": 27, "otherNightReminder": "Si personne n'est mort aujourd'hui, Le Zombuul désigne un joueur. Ce joueur meurt.", "reminders": [ "Mort" @@ -721,9 +721,9 @@ "name": "Pukka", "edition": "bmr", "team": "demon", - "firstNight": 28, + "firstNight": 30, "firstNightReminder": "Le Pukka désigne un joueur. Ce joueur est empoisonné.", - "otherNight": 26, + "otherNight": 28, "otherNightReminder": "Le Pukka désigne un joueur. Ce joueur est empoisonné. Le joueur précédement empoisonné meurt et devient sain.", "reminders": [ "Empoisonné", @@ -739,7 +739,7 @@ "team": "demon", "firstNight": 0, "firstNightReminder": "", - "otherNight": 27, + "otherNight": 29, "otherNightReminder": "L'un des joueurs désignés par le Shabaloth la nuit précédente peut être régurgité. Le Shabaloth désigne deux joueurs. Ces joueurs meurent.", "reminders": [ "Mort", @@ -755,7 +755,7 @@ "team": "demon", "firstNight": 0, "firstNightReminder": "", - "otherNight": 28, + "otherNight": 30, "otherNightReminder": "Si le Po n'a désigné personne la nuit précédente, Le Po choisit 3 joueurs. Sinon, il n'en choisit qu'un. Les joueurs désignés meurent", "reminders": [ "Mort", @@ -770,9 +770,9 @@ "edition": "bmr", "team": "traveler", "firstNight": 1, - "firstNightReminder": "Indiquez à l'Apprenti à quelle équipe il appartient et de rôle il acquiert la capacité. Dans le grimmoire, remplacez l'Apprenti par le personnage dont il copie le pouvoir et marquez-le comme apprenti.", - "otherNight": 0, - "otherNightReminder": "", + "firstNightReminder": "Indiquez à l'Apprenti à quelle équipe il appartient et de quel rôle il acquiert la capacité. Dans le grimmoire, remplacez l'Apprenti par le personnage dont il copie le pouvoir et marquez-le comme apprenti.", + "otherNight": 2, + "otherNightReminder": "Si l'Apprenti vient d'emménager, indiquez-lui à quelle équipe il appartient et de quel rôle il acquiert la capacité. Dans le grimmoire, remplacez l'Apprenti par le personnage dont il copie le pouvoir et marquez-le comme apprenti.", "reminders": [ "Apprenti" ], @@ -841,7 +841,7 @@ "name": "Horloger", "edition": "snv", "team": "townsfolk", - "firstNight": 40, + "firstNight": 43, "firstNightReminder": "Indiquez à quelle distance le Démon se trouve de son Serviteur le plus proche (en nombre de maisons).", "otherNight": 0, "otherNightReminder": "", @@ -854,9 +854,9 @@ "name": "Rêveur", "edition": "snv", "team": "townsfolk", - "firstNight": 41, + "firstNight": 44, "firstNightReminder": "Le Rêveur désigne un joueur. Indiquez lui un rôle Bon et un rôle Mauvais. L'un de ces deux personnages est ce joueur.", - "otherNight": 57, + "otherNight": 61, "otherNightReminder": "Le Rêveur désigne un joueur. Indiquez lui un rôle Bon et un rôle Mauvais. L'un de ces deux personnages est ce joueur.", "reminders": [], "setup": false, @@ -867,7 +867,7 @@ "name": "Charmeur", "edition": "snv", "team": "townsfolk", - "firstNight": 20, + "firstNight": 21, "firstNightReminder": "Le Charmeur de Serpents désigne un joueur. Si ce joueur est le Démon: inversez les personnages et les équipes du Charmeur de Serpents et du Démon. Reveillez-les pour les en informer. Le nouveau Charmeur de Serpents est empoisonné.", "otherNight": 12, "otherNightReminder": "Le Charmeur de Serpents désigne un joueur. Si ce joueur est le Démon: inversez les personnages et les équipes du Charmeur de Serpents et du Démon. Reveillez-les pour les en informer. Le nouveau Charmeur de Serpents est empoisonné.", @@ -882,9 +882,9 @@ "name": "Mathématicien", "edition": "snv", "team": "townsfolk", - "firstNight": 51, + "firstNight": 59, "firstNightReminder": "Indiquez combien de pouvoirs ont dysfonctionné à cause du pouvoir d'un autre joueur depuis la fin de la nuit précédente.", - "otherNight": 71, + "otherNight": 78, "otherNightReminder": "Indiquez combien de pouvoirs ont dysfonctionné à cause du pouvoir d'un autre joueur depuis la fin de la nuit précédente.", "reminders": [ "Anormal" @@ -899,7 +899,7 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 58, + "otherNight": 62, "otherNightReminder": "Indiquez si le Démon a voté ou non aujourd'hui.", "reminders": [ "Démon Votant", @@ -915,7 +915,7 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 59, + "otherNight": 63, "otherNightReminder": "Indiquez si un Serviteur a lancé une accusation aujourd'hui", "reminders": [ "A Accusé", @@ -931,7 +931,7 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 60, + "otherNight": 64, "otherNightReminder": "Indiquez combien de joueurs morts sont Mauvais.", "reminders": [], "setup": false, @@ -955,9 +955,9 @@ "name": "Couturier", "edition": "snv", "team": "townsfolk", - "firstNight": 42, + "firstNight": 45, "firstNightReminder": "Si le Couturier désigne 2 joueurs, indiquez si ces joueurs sont dans la même équipe.", - "otherNight": 61, + "otherNight": 65, "otherNightReminder": "Si le Couturier n'a pas encore utilisé son pouvoir et qu'il désigne 2 joueurs, indiquez si ces joueurs sont du même alignement.", "reminders": [ "Épuisé" @@ -972,7 +972,7 @@ "team": "townsfolk", "firstNight": 2, "firstNightReminder": "Le Philosophe choisit s'il souhaite utiliser son pouvoir. S'il le fait, il choisir un personnage Bon. Si ce personnage n'est pas en jeu, le philosophe gagne son pouvoir. Sinon, ce personnage devient Ivre.", - "otherNight": 2, + "otherNight": 3, "otherNightReminder": "S'il ne l'a pas encore fait, le Philosophe choisit s'il souhaite utiliser son pouvoir. S'il le fait, il choisit un personnage Bon. Si ce personnage n'est pas en jeu, le philosophe gagne son pouvoir. Sinon, ce personnage devient Ivre.", "reminders": [ "Ivre", @@ -1004,7 +1004,7 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 62, + "otherNight": 66, "otherNightReminder": "Si aujourd'hui était la première journée du jongleur, indiquez-lui combien de ses prédictions étaient juste.", "reminders": [ "Correct", @@ -1020,7 +1020,7 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 43, + "otherNight": 47, "otherNightReminder": "Si le sage a été tué par le Démon, indiquez-lui deux joueur dont l'un est le Démon.", "reminders": [], "setup": false, @@ -1046,7 +1046,7 @@ "team": "outsider", "firstNight": 0, "firstNightReminder": "", - "otherNight": 41, + "otherNight": 46, "otherNightReminder": "Si le Bien-aimé est mort aujourd'hui, choisissez un joueur qui sera définitivement Ivre.", "reminders": [ "Ivre définitif" @@ -1061,7 +1061,7 @@ "team": "outsider", "firstNight": 0, "firstNightReminder": "", - "otherNight": 40, + "otherNight": 45, "otherNightReminder": "Si le Barbier est mort aujourd'hui, réveillez le Démon. Le Démon désigne 2 joueurs : reveillez ces joueurs et informez-les de leur nouveau personnage.", "reminders": [ "Échanges" @@ -1087,7 +1087,7 @@ "name": "Jumeau maléfique", "edition": "snv", "team": "minion", - "firstNight": 23, + "firstNight": 24, "firstNightReminder": "Réveillez le Jumeau Maléfique et son Jumeau. Informez-les tous deux du rôle de l'autre.", "otherNight": 0, "otherNightReminder": "", @@ -1103,7 +1103,7 @@ "name": "Sorcière", "edition": "snv", "team": "minion", - "firstNight": 24, + "firstNight": 25, "firstNightReminder": "S'il reste 4 joueurs ou plus en vie, la sorcière désigne un joueur. Si ce joueur accuse demain, il est exécuté.", "otherNight": 15, "otherNightReminder": "S'il reste 4 joueurs ou plus en vie, la sorcière désigne un joueur. Si ce joueur accuse demain, il est exécuté.", @@ -1118,7 +1118,7 @@ "name": "Cerenovus", "edition": "snv", "team": "minion", - "firstNight": 25, + "firstNight": 26, "firstNightReminder": "Le Cerenovus désigne un joueur et un personnage. Reveillez ce joueur. Informez-le qu'il est persuadé d'être ce personnage. S'il n'est pas convaincant, il peut être exécuté.", "otherNight": 16, "otherNightReminder": "Le Cerenovus désigne un joueur et un personnage. Reveillez ce joueur. Informez-le qu'il est persuadé d'être ce personnage. S'il n'est pas convaincant, il peut être exécuté.", @@ -1148,7 +1148,7 @@ "team": "demon", "firstNight": 0, "firstNightReminder": "", - "otherNight": 29, + "otherNight": 31, "otherNightReminder": "Le Fang Gu désigne un joueur. Si ce joueur n'est pas un Étranger, il meurt. Si ce personnage est un Étranger et qu'il n'y a qu'un seul Fang gu en jeu, le Fang Gu meurt à la place du joueur désigné. Le joueur désigné devient un Fang Gu et rejoint l'équipe des Mauvais. Réveillez le nouveau Fang Gu. Indiquez-lui son nouveau rôle.", "reminders": [ "Mort", @@ -1166,7 +1166,7 @@ "team": "demon", "firstNight": 0, "firstNightReminder": "", - "otherNight": 32, + "otherNight": 34, "otherNightReminder": "Le Vigormortis désigne un joueur. Ce joueur meurt. Si c'est un Serviteur, l'un de ses voisins Villageois est empoisonné.", "reminders": [ "Mort", @@ -1183,7 +1183,7 @@ "team": "demon", "firstNight": 0, "firstNightReminder": "", - "otherNight": 30, + "otherNight": 32, "otherNightReminder": "Le No Dashii désigne un joueur. Ce joueur meurt. Les voisins villageois du No Dashii sont empoisonnés.", "reminders": [ "Mort", @@ -1199,7 +1199,7 @@ "team": "demon", "firstNight": 0, "firstNightReminder": "", - "otherNight": 31, + "otherNight": 33, "otherNightReminder": "Le Vortox désigne un joueur. Ce joueur meurt.", "reminders": [ "Mort" @@ -1214,7 +1214,7 @@ "team": "traveler", "firstNight": 1, "firstNightReminder": "Choisissez un joueur, reveillez-le et indiquez-lui s'il est soigné et l'esprit clair ou s'il bénéficie de double capacité. Traitez-le en conséquences.", - "otherNight": 1, + "otherNight": 2, "otherNightReminder": "Choisissez un joueur, reveillez-le et indiquez-lui s'il est soigné et l'esprit clair ou s'il bénéficie de double capacité. Traitez-le en conséquences.", "reminders": [ "Sobriété & Santé", @@ -1230,7 +1230,7 @@ "team": "traveler", "firstNight": 0, "firstNightReminder": "", - "otherNight": 1, + "otherNight": 2, "otherNightReminder": "La prosituée désigne un joueur puis s'endort. Reveillez le joueur désigné, informez-le qu'il a été désigné par la prostituée. Le joueur décide s'il accepte ou non de dévoiler son rôle au rique de mourrir. Vous décidez s'ils meurent tous les deux.", "reminders": [ "Mort" @@ -1258,7 +1258,7 @@ "team": "traveler", "firstNight": 0, "firstNightReminder": "", - "otherNight": 1, + "otherNight": 2, "otherNightReminder": "Le Collecteur d'os peut, s'il n'a pas encore utilisé sa capacité, désigner un joueur mort. S'il le fait, le joueur désigné peut utiliser sa capacité jusqu'à la nuit prochaine. (Pensez à le reveiller si son pouvoir s'active la nuit).", "reminders": [ "Épuisé", @@ -1276,7 +1276,9 @@ "firstNightReminder": "", "otherNight": 0, "otherNightReminder": "", - "reminders": ["Drôle"], + "reminders": [ + "Drôle" + ], "setup": false, "ability": "Si vous avez été drôle aujourd'hui, vous ne pouvez pas mourir par exil." }, @@ -1285,7 +1287,7 @@ "name": "Noble", "edition": "", "team": "townsfolk", - "firstNight": 43, + "firstNight": 48, "firstNightReminder": "Indiquez 3 joueurs dont un seul est Mauvais, sans ordre particulier.", "otherNight": 0, "otherNightReminder": "", @@ -1300,9 +1302,9 @@ "name": "Mercenaire", "edition": "", "team": "townsfolk", - "firstNight": 45, + "firstNight": 52, "firstNightReminder": "Indiquer au Mercenaire un joueur de l'équipe des Mauvais. Réveillez le Villageois qui fait partie des Mauvais pour l'informer qu'il est Mauvais.", - "otherNight": 65, + "otherNight": 70, "otherNightReminder": "Si le Mauvais connu par le Mercenaire est mort, informez-le d'un autre Mauvais.", "reminders": [ "Connu" @@ -1315,7 +1317,7 @@ "name": "Pixie", "edition": "", "team": "townsfolk", - "firstNight": 29, + "firstNight": 31, "firstNightReminder": "Indiquez à la Pixie le rôle d'un villageois déjà en jeu.", "otherNight": 0, "otherNightReminder": "", @@ -1331,9 +1333,9 @@ "name": "Général", "edition": "", "team": "townsfolk", - "firstNight": 49, + "firstNight": 57, "firstNightReminder": "Indiquez quelle équipe est selon vous en train de mener la partie : les Bons, les Mauvais ou personne.", - "otherNight": 69, + "otherNight": 76, "otherNightReminder": "Indiquez quelle équipe est selon vous en train de mener la partie : les Bons, les Mauvais ou personne.", "reminders": [], "setup": false, @@ -1344,7 +1346,7 @@ "name": "Prêcheur", "edition": "", "team": "townsfolk", - "firstNight": 14, + "firstNight": 15, "firstNightReminder": "Le Prêcheur désigne un joueur. Si c'est un Serviteur, réveillez-le et indiquez lui qu'il a été démasqué par le Prêcheur. Le Serviteur perd ses capacités.", "otherNight": 7, "otherNightReminder": "Le Prêcheur désigne un joueur. Si c'est un Serviteur, réveillez-le et indiquez lui qu'il a été démasqué par le Prêcheur. Le Serviteur perd ses capacités.", @@ -1359,9 +1361,9 @@ "name": "Roi", "edition": "", "team": "townsfolk", - "firstNight": 9, + "firstNight": 11, "firstNightReminder": "Informez le Démon de qui est le Roi.", - "otherNight": 64, + "otherNight": 69, "otherNightReminder": "S'il y a plus de joueurs morts que vivants, révélez au roi le personnage d'un joueur encore en vie.", "reminders": [], "setup": false, @@ -1372,9 +1374,9 @@ "name": "Montgolfier", "edition": "", "team": "townsfolk", - "firstNight": 44, + "firstNight": 49, "firstNightReminder": "Choisissez un type de personnage. Indiquez au Montgolfier le personnage d'un joueur qui est de ce type. Marquez ce personnage comme vu par le Montgolfier.", - "otherNight": 63, + "otherNight": 67, "otherNightReminder": "Choisissez un type de personnage qui n'a pas encore été vu par le Montgolfier. Indiquez au Montgolfier un joueur dont le personnage est de ce type. Marquez ce type de personnage comme vu par le Montgolfier.", "reminders": [ "Villageois vu", @@ -1390,9 +1392,9 @@ "name": "Gourou", "edition": "", "team": "townsfolk", - "firstNight": 47, + "firstNight": 54, "firstNightReminder": "Si le Gourou change d'équipe, réveillez-le pour l'en informer.", - "otherNight": 67, + "otherNight": 72, "otherNightReminder": "Si le Gourou change d'équipe, réveillez-le pour l'en informer.", "reminders": [], "setup": false, @@ -1405,7 +1407,7 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 23, + "otherNight": 24, "otherNightReminder": "Le Lycanthrope désigne un joueur vivant : s'il est gentil, il meurt, et personne d'autre ne pourra mourir cette nuit.", "reminders": [ "Mort" @@ -1418,9 +1420,9 @@ "name": "Amnésique", "edition": "", "team": "townsfolk", - "firstNight": 12, + "firstNight": 34, "firstNightReminder": "Décidez du pouvoir de l'Amnésique. Si sa capacité nécessite de le réveiller la nuit, réveillez l'Amnésique et faites-lui utiliser son pouvoir.", - "otherNight": 5, + "otherNight": 52, "otherNightReminder": "Si son pouvoir nécessite de le réveiller la nuit, réveillez l'Amnésique et faites-lui utiliser son pouvoir.", "reminders": [ "?" @@ -1433,9 +1435,9 @@ "name": "Gardien de nuit", "edition": "", "team": "townsfolk", - "firstNight": 46, + "firstNight": 53, "firstNightReminder": "Le Garde de nuit peut désigner un joueur. Reveillez ce joueur, indiquez lui que le garde de nuit se dévoile à lui.", - "otherNight": 66, + "otherNight": 71, "otherNightReminder": "Le Garde de nuit peut désigner un joueur. Reveillez ce joueur, indiquez lui que le garde de nuit se dévoile à lui.", "reminders": [ "Épuisé" @@ -1448,7 +1450,7 @@ "name": "Ingénieur", "edition": "", "team": "townsfolk", - "firstNight": 13, + "firstNight": 14, "firstNightReminder": "L'ingénieur décide s'il veut utiliser son pouvoir. S'il le fait, il désigne un personnage de Démon et autant de personnages de Serviteurs qu'il y en a en jeu. Remplacez les rôles des joueurs correspondants par les rôles désignés, puis réveillez-les un à un pour leur indiquer leurs nouveaux rôles.", "otherNight": 6, "otherNightReminder": "S'il ne l'a pas encore fait, l'Ingénieur décide s'il veut utiliser son pouvoir. S'il le fait, il désigne un personnage de Démon et autant de personnages de Serviteurs qu'il y en a en jeu. Remplacez les rôles des joueurs correspondants par les rôles désignés, puis réveillez-les un à un pour leur indiquer leurs nouveaux rôles.", @@ -1479,9 +1481,9 @@ "name": "Chasseur", "edition": "", "team": "townsfolk", - "firstNight": 30, + "firstNight": 32, "firstNightReminder": "Le chasseur décide s'il souhaite utiliser sa compétence. S'il le fait : il désigne un joueur qu'il suppose être la demoiselle, s'il a raison, la demoiselle devient un villageois qui n'est pas encore en jeu.", - "otherNight": 51, + "otherNight": 50, "otherNightReminder": "S'il ne l'a pas encore fait, le chasseur décide s'il souhaite utiliser sa compétence. S'il le fait : il désigne un joueur qu'il suppose être la demoiselle, s'il a raison, la demoiselle devient un villageois qui n'est pas encore en jeu.", "reminders": [ "Épuisé" @@ -1494,12 +1496,14 @@ "name": "Alchimiste", "edition": "", "team": "townsfolk", - "firstNight": 3, + "firstNight": 4, "firstNightReminder": "Indiquez à l'alchimiste de quelle capacité il dispose.", "otherNight": 0, "otherNightReminder": "Si la capacité de l'alchimiste s'utilise la nuit, réveillez le.", "reminders": [], - "remindersGlobal": ["Alchimiste"], + "remindersGlobal": [ + "Alchimiste" + ], "setup": false, "ability": "Vous avez la capacité d'un Serviteur qui n'est pas en jeu." }, @@ -1510,7 +1514,7 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 46, + "otherNight": 53, "otherNightReminder": "Si le Fermier est mort aujourd'hui, réveillez un villageois et indiquez-lui qu'il est devenu le Fermier.", "reminders": [], "setup": false, @@ -1521,8 +1525,8 @@ "name": "Magicien", "edition": "", "team": "townsfolk", - "firstNight": 0, - "firstNightReminder": "", + "firstNight": 6, + "firstNightReminder": "Aux Serviteurs, montrez le Magicien comme un autre Démon. Au Démon, montrez le Magicien comme un autre Serviteur.", "otherNight": 0, "otherNightReminder": "", "reminders": [], @@ -1536,7 +1540,7 @@ "team": "townsfolk", "firstNight": 0, "firstNightReminder": "", - "otherNight": 44, + "otherNight": 49, "otherNightReminder": "Si le Roi a été tué par le Démon, réveillez l'Enfant de chœur et dévoilez-lui quel joueur est le Démon.", "reminders": [], "setup": true, @@ -1547,9 +1551,9 @@ "name": "Planteur de pavot", "edition": "", "team": "townsfolk", - "firstNight": 4, + "firstNight": 5, "firstNightReminder": "Ne donnez pas les informations sur leurs alliés au Démon et aux Serviteurs.", - "otherNight": 3, + "otherNight": 4, "otherNightReminder": "Si le Cultivateur de Pavot est mort, indiquez au Démon et à ses Serviteurs qui sont leurs alliés.", "reminders": [ "Revélations", @@ -1587,12 +1591,83 @@ "setup": false, "ability": "Vous avez la capacité du dernier joueur mort par exécution. S'il était Mauvais, vous êtes empoisonné jusqu'à ce qu'un joueur Bon meure par exécution." }, + { + "id": "steward", + "name": "Intendant", + "edition": "", + "team": "townsfolk", + "firstNight": 46, + "firstNightReminder": "Désignez un joueur bon à l'Intendant.", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [ + "Connu" + ], + "setup": false, + "ability": "Vous commencez la partie en connaissant un joueur bon." + }, + { + "id": "shugenja", + "name": "Shugenja", + "edition": "", + "team": "townsfolk", + "firstNight": 50, + "firstNightReminder": "Réveillez le Shugenja. Indiquez-lui dans quelle direction se trouve le mauvais le plus proche. En cas d'égalité, lui indiquer n'importe laquelle des deux directions.", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [], + "setup": false, + "ability": "Vous commencez la partie en sachant si le mauvais le plus proche est dans le sens horaire ou anti-horaire. Si équidistants, l'info est arbitraire." + }, + { + "id": "highpriestess", + "name": "Grande Prêtresse", + "edition": "", + "team": "townsfolk", + "firstNight": 56, + "firstNightReminder": "Désignez un joueur à la Grande Prêtresse.", + "otherNight": 75, + "otherNightReminder": "Désignez un joueur à la Grande Prêtresse.", + "reminders": [], + "setup": false, + "ability": "Chaque nuit, vous apprenez à quel joueur vous devez le plus parler, selon le Narrateur." + }, + { + "id": "villageidiot", + "name": "Idiot du Village", + "edition": "", + "team": "townsfolk", + "firstNight": 51, + "firstNightReminder": "Réveillez l'Idiot du Village. Celui-ci désigne un joueur : indiquez-lui l'alignement de ce joueur.", + "otherNight": 68, + "otherNightReminder": "Réveillez l'Idiot du Village. Celui-ci désigne un joueur : indiquez-lui l'alignement de ce joueur.", + "reminders": [ + "Ivre" + ], + "setup": true, + "ability": "Chaque nuit, désignez un joueur : vous apprenez son alignement. [+0 à +2 Idiots du village, l’un d’eux étant ivre]" + }, + { + "id": "knight", + "name": "Chevalier", + "edition": "", + "team": "townsfolk", + "firstNight": 47, + "firstNightReminder": "Désignez au Chevalier deux joueurs qui ne sont pas Démon", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [ + "Connu" + ], + "setup": false, + "ability": "Vous commencez la partie en connaissant deux joueurs qui ne sont pas Démon." + }, { "id": "snitch", "name": "Cafteur", "edition": "", "team": "outsider", - "firstNight": 6, + "firstNight": 8, "firstNightReminder": "Reveillez les Serviteurs séparement et indiquez leur 3 personnages qui ne sont pas en jeu. Ces personnages peuvent différer ou être les mêmes que ceux montrés à d'autres Serviteurs et/ou au Démon.", "otherNight": 0, "otherNightReminder": "", @@ -1607,7 +1682,7 @@ "team": "outsider", "firstNight": 0, "firstNightReminder": "", - "otherNight": 39, + "otherNight": 43, "otherNightReminder": "Si l'un de ses bons voisins vivants est Ivre ou Empoisonné, l'Accrobate meurt.", "reminders": [ "Mort" @@ -1649,10 +1724,10 @@ "name": "Demoiselle", "edition": "", "team": "outsider", - "firstNight": 31, - "firstNightReminder": "Réveillez tous les Serviteurs, informez les que la demoiselle est en jeu.", - "otherNight": 52, - "otherNightReminder": "Si sélectionnée par le chasseur, la demoiselle devient un villageois qui n'était pas en jeu.", + "firstNight": 33, + "firstNightReminder": "Si sélectionnée par le Chasseur, la demoiselle devient un Villageois qui n'était pas en jeu.", + "otherNight": 51, + "otherNightReminder": "Si sélectionnée par le Chasseur, la demoiselle devient un Villageois qui n'était pas en jeu.", "reminders": [ "Épuisé" ], @@ -1687,12 +1762,42 @@ "setup": false, "ability": "Si vous étiez le principal responsable de la défaite de votre équipe, vous changez d'équipe et gagnez, même si vous êtes mort." }, + { + "id": "plaguedoctor", + "name": "Médecin de Peste", + "edition": "", + "team": "outsider", + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [ + "Capacité du Narrateur" + ], + "setup": false, + "ability": "Si vous mourez, le Narrateur gagne la capacité d’un Serviteur qui n’est pas en jeu." + }, + { + "id": "hatter", + "name": "Chapelier", + "edition": "", + "team": "outsider", + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 44, + "otherNightReminder": "À la mort du Chapelier, effacez les rôles des Serviteurs et des Démons. Réveillez-les l'un après l'autre, en leur demandant à chacun le rôle qu'il souhaite devenir. Si l'un d'eux demande le même rôle qu'un joueur qui a déjà choisi, demandez-lui de choisir un autre rôle. Modifier les rôles de ces joueurs en conséquence.", + "reminders": [ + "Heure du Thé" + ], + "setup": false, + "ability": "Si vous êtes mort aujourd'hui (de jour comme de nuit), les Serviteurs et Démons peuvent choisir de devenir d'autres Serviteurs et Démons." + }, { "id": "widow", "name": "Veuve", "edition": "", "team": "minion", - "firstNight": 18, + "firstNight": 19, "firstNightReminder": "Montrez le grimmoire à la Veuve aussi longtemps qu'elle le souhaite. La Veuve désigne un joueur. Ce joueur est empoisonné. Reveillez un joueur Bon. Indiquez-lui qu'il y a une Veuve dans la partie.", "otherNight": 0, "otherNightReminder": "", @@ -1710,9 +1815,9 @@ "name": "Semeur de peur", "edition": "", "team": "minion", - "firstNight": 26, + "firstNight": 27, "firstNightReminder": "Le Semeur de peur désigne un joueur. Placez le marqueur 'Peur' sur le joueur désigné.", - "otherNight": 17, + "otherNight": 18, "otherNightReminder": "Le Semeur de peur désigne un joueur. Si le joueur désigné n'est plus le même que la nuit précédente, déplacez le marqueur 'Peur'.", "reminders": [ "Peur" @@ -1753,9 +1858,9 @@ "name": "Méphite", "edition": "", "team": "minion", - "firstNight": 27, + "firstNight": 29, "firstNightReminder": "Indiquez au Mephit son mot secret.", - "otherNight": 18, + "otherNight": 20, "otherNightReminder": "Si un joueur Bon a pronnoncé le mot secret aujourd'hui, réveillez-le et informez-le qu'il fait maintenant partie de l'équipe des Mauvais.", "reminders": [ "Mauvais", @@ -1769,9 +1874,9 @@ "name": "Mezepheles", "edition": "", "team": "minion", - "firstNight": 27, + "firstNight": 29, "firstNightReminder": "Indiquez au Mezepheles son mot secret.", - "otherNight": 18, + "otherNight": 20, "otherNightReminder": "Si un joueur Bon a pronnoncé le mot secret aujourd'hui, réveillez-le et informez-le qu'il fait maintenant partie de l'équipe des Mauvais.", "reminders": [ "Mauvais", @@ -1785,7 +1890,7 @@ "name": "Marionnette", "edition": "", "team": "minion", - "firstNight": 11, + "firstNight": 13, "firstNightReminder": "Selectionnez un Bon joueur, voisin du Démon et marquez le comme Marionnette. Reveillez le Démon et indiquez lui qui est la Marionette.", "otherNight": 0, "otherNightReminder": "", @@ -1825,6 +1930,52 @@ "setup": false, "ability": "Les votes ont lieu à bulletin secret. Vous ne pouvez être exécuté que si vous levez la main." }, + { + "id": "harpy", + "name": "Harpie", + "edition": "", + "team": "minion", + "firstNight": 28, + "firstNightReminder": "Réveillez la Harpie. Elle désigne deux joueurs, l'un après l'autre. Réveillez le premier joueur, et lui révéler qu'il est persuadé par la Harpie que le deuxième est mauvais.", + "otherNight": 19, + "otherNightReminder": "Réveillez la Harpie. Elle désigne deux joueurs, l'un après l'autre. Réveillez le premier joueur, et lui révéler qu'il est persuadé par la Harpie que le deuxième est mauvais.", + "reminders": [ + "Persuadé", + "2e" + ], + "setup": false, + "ability": "Chaque nuit, désignez deux joueurs : demain, le premier sera persuadé que le deuxième est mauvais, ou ils pourront tous les deux mourir." + }, + { + "id": "summoner", + "name": "Invocateur", + "edition": "", + "team": "minion", + "firstNight": 9.5, + "firstNightReminder": "Réveillez l'Invocateur, et indiquez-lui trois rôles bons qui ne sont pas en jeu.", + "otherNight": 21.5, + "otherNightReminder": "S'il s'agit de la 3e nuit, réveillez l'Invocateur. Il chosit un joueur et un Démon : ce joueur devient ce Démon.", + "reminders": [ + "Nuit 1", + "Nuit 2", + "Nuit 3" + ], + "setup": true, + "ability": "Vous avez trois bluffs. Durant la troisième nuit, désignez un joueur : il devient le mauvais Démon de votre choix. [Aucun Démon]" + }, + { + "id": "vizier", + "name": "Vizir", + "edition": "", + "team": "minion", + "firstNight": 1002, + "firstNightReminder": "Annoncez \"Le Vizir est en jeu\" et précisez de quel joueur il s'agit.", + "otherNight": 0, + "otherNightReminder": "", + "reminders": [], + "setup": false, + "ability": "Tous les joueurs savent qui vous êtes. Vous ne pouvez pas mourir de jour. Si un bon a voté, vous pouvez choisir d'exécuter immédiatement." + }, { "id": "lilmonsta", "name": "Bébé monstre", @@ -1832,7 +1983,7 @@ "team": "demon", "firstNight": 16, "firstNightReminder": "Réveillez tous les Serviteurs ensemble, faites-les voter pour désigner quel joueur baby-sitte le Bébé Monstre.", - "otherNight": 36, + "otherNight": 38, "otherNightReminder": "Réveillez tous les Serviteurs ensemble, faites-les voter pour désigner quel joueur baby-sitte le Bébé Monstre. Choisissez un joueur, il meurt.", "reminders": [], "remindersGlobal": [ @@ -1847,9 +1998,9 @@ "name": "Sangsue", "edition": "", "team": "demon", - "firstNight": 15, + "firstNight": 17, "firstNightReminder": "La Sangue désigne un joueur. Ce joueur est empoisonné.", - "otherNight": 35, + "otherNight": 37, "otherNightReminder": "La Sangsue désigne un joueur. Ce joueur meurt.", "reminders": [ "Mort", @@ -1865,7 +2016,7 @@ "team": "demon", "firstNight": 0, "firstNightReminder": "", - "otherNight": 33, + "otherNight": 36, "otherNightReminder": "Le Al-Hadikhia désigne 3 joueurs. Annoncez à chacun des joueurs désignés, dans l'ordre et individuellement la liste des désignés, et demandez leur s'ils veulent vivre ou mourir. A la fin des décisions, chaque joueur devient vivant ou mort conformément à son choix. Si les joueurs ont tous les 3 choisi de vivre, ils meurent tous les 3.", "reminders": [ "1", @@ -1884,7 +2035,7 @@ "team": "demon", "firstNight": 0, "firstNightReminder": "", - "otherNight": 34, + "otherNight": 25, "otherNightReminder": "Vous pouvez choisir un joueur, Ce joueur meurt.", "reminders": [ "Mort", @@ -1898,9 +2049,9 @@ "name": "Léviathan", "edition": "", "team": "demon", - "firstNight": 53, + "firstNight": 1001, "firstNightReminder": "Placez le marqueur 'Jour 1'. Annoncez 'Il y a un Léviathan en jeu; Ceci est votre premier jour.'", - "otherNight": 73, + "otherNight": 1001, "otherNightReminder": "Changez le marqueur de jour du Léviathan.", "reminders": [ "Joueur Bon Exécuté" @@ -1933,6 +2084,51 @@ "setup": true, "ability": "Les joueurs accusés meurent immédiatement sans vote mais peuvent accuser à leur tour. Le troisième jour, les joueurs accusés doivent accuser. À la fin du troisième jour, les mauvais gagnent. [Tous les Serviteurs sont des Émeutes]" }, + { + "id": "yaggababble", + "name": "Yaggablabla", + "edition": "", + "team": "demon", + "firstNight": 5.5, + "firstNightReminder": "Révélez sa phrase au Yaggablabla.", + "otherNight": 38.5, + "otherNightReminder": "Choisissez un nombre de joueurs inférieur ou égal au nombre de fois que le Yaggablabla a dit sa phrase publiquement : ces joueurs meurent.", + "reminders": [ + "Mort" + ], + "setup": false, + "ability": "Vous commencez en connaissant une phrase secrète. Pour chaque fois que vous l'avez dite publiquement aujourd'hui, un joueur peut mourir." + }, + { + "id": "kazali", + "name": "Kazali", + "edition": "", + "team": "demon", + "firstNight": 3, + "firstNightReminder": "Réveillez le Kazali. Celui-ci choisit un joueur et un rôle de Serviteur : changez le rôle de ce joueur. Répétez autant de fois qu'il faut de Serviteurs. Réveillez les joueurs désignés pour les informer de leurs nouveaux rôles.", + "otherNight": 39, + "otherNightReminder": "Le Kazali désigne un joueur : ce joueur meurt.", + "reminders": [ + "Mort" + ], + "setup": true, + "ability": "Chaque nuit*, désignez un joueur : il meurt. [Vous choisissez quels joueurs sont quels Serviteurs. -? à +? Étrangers]" + }, + { + "id": "ojo", + "name": "Ojo", + "edition": "", + "team": "demon", + "firstNight": 0, + "firstNightReminder": "", + "otherNight": 35, + "otherNightReminder": "L'Ojo désigne un rôle. S'il est en jeu, un joueur avec ce rôle meurt. Si le rôle choisi n'est pas en jeu, tuez le(s) joueur(s) que vous voulez.", + "reminders": [ + "Mort" + ], + "setup": false, + "ability": "Chaque nuit*, désignez un rôle : il meurt. Si ce rôle n'est pas en jeu, le Narrateur choisit qui meurt." + }, { "id": "gangster", "name": "Gangster", diff --git a/src/store/locale/fr/ui.json b/src/store/locale/fr/ui.json index 8f72eb5..c205ada 100644 --- a/src/store/locale/fr/ui.json +++ b/src/store/locale/fr/ui.json @@ -1,6 +1,6 @@ { - "menu":{ - "grimoire":{ + "menu": { + "grimoire": { "title": "Grimoire", "hide": "Cacher", "show": "Montrer", @@ -16,8 +16,8 @@ "ringBell": "Sonner Clocher", "organGrinder": "Vote d'Organiste" }, - "session":{ - "title":{ + "session": { + "title": { "player": "Joueur", "host": "Hôte", "create": "Session Live" @@ -32,20 +32,20 @@ "voteHistory": "Historique Votes", "leave": "Quitter Session" }, - "players":{ + "players": { "title": "Joueurs", "add": "Ajouter", "randomize": "Mélanger Sièges", "removeAll": "Retirer Joueurs" }, - "characters":{ + "characters": { "title": "Personnages", "selectEdition": "Choisir Scénario", "assign": "Attribuer Rôles", "addFabled": "Ajouter Fabuleux", "removeAll": "Effacer Rôles" }, - "help":{ + "help": { "title": "Aide", "reference": "Référence rôles", "nightOrder": "Ordre Nocturne", @@ -54,7 +54,7 @@ "source": "Code Source" } }, - "prompt":{ + "prompt": { "background": "Entrez l'URL de l'image de fond", "createSession": "Entrez un nom ou numéro de session", "sendRoles": "Voulez-vous envoyer les rôles à tous les joueurs ASSIS ?", @@ -69,7 +69,7 @@ "customError": "Erreur lors du chargement du script", "customNote": "Ajouter une note personnalisée" }, - "vote":{ + "vote": { "nominates": "accuse", "callexile": "veut exiler", "exclam": " !", @@ -92,7 +92,7 @@ "seatToVote": "Asseyez-vous pour pouvoir voter", "doVote": "Votez" }, - "townsquare":{ + "townsquare": { "others": "Autres Rôles", "bluffs": "Bluffs de Démon", "fabled": "Fabuleux", @@ -132,11 +132,11 @@ } } }, - "towninfo":{ + "towninfo": { "addPlayers": "Appuyez sur [A] pour ajouter plus de joueurs !", "nightPhase": "C'est la nuit" }, - "player":{ + "player": { "handUp": "Main levée", "handDown": "Main baissée", "cancel": "Annuler", @@ -155,15 +155,15 @@ "vacateSeat": "Libérer le Siège", "occupiedSeat": "Siège Occupé" }, - "intro":{ + "intro": { "header": "Bienvenue sur le Centre-ville Virtuel (non-officiel) pour Blood on the Clocktower! Veuillez ajouter des Joueurs via le", "menu": "Menu", "body": "en haut à droite ou en appuyant sur [A] pour commencer. Vous pouvez aussi rejoindre une session en appuyant sur [J].", "footerStart": "Ce programme est libre et ses sources peuvent être trouvées sur", "footerEnd": ". Ce site n'est pas affilié à The Pandemonium Institute. \"Blood on the Clocktower\" est une marque déposée de Steven Medway & The Pandemonium Institute." }, - "modal":{ - "edition":{ + "modal": { + "edition": { "title": "Choisir un Scénario :", "tab": { "official": "Scénarios officiels", @@ -200,20 +200,25 @@ "firstNight": "Première Nuit", "otherNights": "Autres Nuits", "minionInfo": "Informations Serviteurs", - "minionInfoDescription": "• S'il y a plusieurs Serviteurs, ils apprennent qui sont les autres Serviteurs. • Indiquez aux Serviteurs qui est le Démon.", + "minionInfoDescription": "S'il y a plusieurs Serviteurs, ils apprennent qui sont les autres Serviteurs. Indiquez aux Serviteurs qui est le Démon.", "demonInfo": "Info & Bluffs Démon", - "demonInfoDescription": "• Indiquez au Démon qui sont ses serviteurs.• Indiquez les rôles de 3 personnages Bons qui ne sont pas en jeu." + "demonInfoDescription": "Indiquez au Démon qui sont ses serviteurs. Indiquez les rôles de 3 personnages bons qui ne sont pas en jeu.", + "dawn": "Matin", + "dawnDescription1": "Réveillez les joueurs.", + "dawnDescription2": "Réveillez les joueurs, puis annoncez qui est mort cette nuit", + "dusk": "Tombée de la nuit", + "duskDescription": "Terminez la journée, et endormez les joueurs." }, "reference": { - "title": "Réference de rôles", - "jinxed": "Jinx", - "notfirstnight": "* Pas la première nuit", - "teamNames": { - "townsfolk": "villageois", - "outsider": "étranger", - "minion": "serviteur", - "demon": "démon" - } + "title": "Réference de rôles", + "jinxed": "Jinx", + "notfirstnight": "* Pas la première nuit", + "teamNames": { + "townsfolk": "villageois", + "outsider": "étranger", + "minion": "serviteur", + "demon": "démon" + } }, "reminder": { "title": "Apposer une note:", @@ -230,13 +235,13 @@ "roles": { "titleStart": "Selectionner les personnages pour ", "titleEnd": " joueurs:", - "warning":"Attention: certains des personnages sélectionnés changent la distribution de début de partie ! La distribution aléatoire n'effectue pas elle-même ces changements, pensez à modifier les attributions en conséquence avant d'envoyer les rôles aux joueurs.", + "warning": "Attention: certains des personnages sélectionnés changent la distribution de début de partie ! La distribution aléatoire n'effectue pas elle-même ces changements, pensez à modifier les attributions en conséquence avant d'envoyer les rôles aux joueurs.", "allowMultiple": "Permettre les doublons de personnages", "assignStart": "Attribuer aléatoirement ces ", "assignEnd": " rôles", "shuffle": "Tirer les personnages au sort" }, - "voteHistory":{ + "voteHistory": { "title": "Historique de votes", "accessibility": "Accessible aux Joueurs", "clear": "Effacer pour tous", diff --git a/src/store/modules/players.js b/src/store/modules/players.js index 40010b8..1d84613 100644 --- a/src/store/modules/players.js +++ b/src/store/modules/players.js @@ -28,33 +28,33 @@ const getters = { nightOrder({ players, fabled }) { const firstNight = [0]; const otherNight = [0]; - players.forEach(({ role }) => { - if (role.firstNight && !firstNight.includes(role.firstNight)) { - firstNight.push(role.firstNight); - } - if (role.otherNight && !otherNight.includes(role.otherNight)) { - otherNight.push(role.otherNight); - } - }); fabled.forEach((role) => { - if (role.firstNight && !firstNight.includes(role.firstNight)) { - firstNight.push(role.firstNight); + if (role.firstNight && !firstNight.includes(role)) { + firstNight.push(role); } - if (role.otherNight && !otherNight.includes(role.otherNight)) { - otherNight.push(role.otherNight); + if (role.otherNight && !otherNight.includes(role)) { + otherNight.push(role); } }); - firstNight.sort((a, b) => a - b); - otherNight.sort((a, b) => a - b); + players.forEach(({ role }) => { + if (role.firstNight && !firstNight.includes(role)) { + firstNight.push(role); + } + if (role.otherNight && !otherNight.includes(role)) { + otherNight.push(role); + } + }); + firstNight.sort((a, b) => a.firstNight - b.firstNight); + otherNight.sort((a, b) => a.otherNight - b.otherNight); const nightOrder = new Map(); players.forEach((player) => { - const first = Math.max(firstNight.indexOf(player.role.firstNight), 0); - const other = Math.max(otherNight.indexOf(player.role.otherNight), 0); + const first = Math.max(firstNight.indexOf(player.role), 0); + const other = Math.max(otherNight.indexOf(player.role), 0); nightOrder.set(player, { first, other }); }); fabled.forEach((role) => { - const first = Math.max(firstNight.indexOf(role.firstNight), 0); - const other = Math.max(otherNight.indexOf(role.otherNight), 0); + const first = Math.max(firstNight.indexOf(role), 0); + const other = Math.max(otherNight.indexOf(role), 0); nightOrder.set(role, { first, other }); }); return nightOrder; @@ -86,7 +86,6 @@ const actions = { id, pronouns, })); - commit("setFabled", { fabled: [] }); } commit("set", players); commit("setBluff"); diff --git a/src/vars.scss b/src/vars.scss index 79161d5..123438e 100644 --- a/src/vars.scss +++ b/src/vars.scss @@ -4,3 +4,4 @@ $outsider: #46d5ff; $minion: #ff6900; $demon: #ce0100; $traveler: #cc04ff; +$default: #4E4E4E;