Blood on the Clocktower Town Square
\ No newline at end of file
+Blood on the Clocktower Town Square
\ No newline at end of file
diff --git a/js/app.72921353.js b/js/app.72921353.js
deleted file mode 100644
index cd28745..0000000
--- a/js/app.72921353.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(function(e){function t(t){for(var o,n,r=t[0],l=t[1],h=t[2],d=0,m=[];d-1,move:e.move>-1,nominate:e.nominate>-1},attrs:{player:t},on:{trigger:function(t){return e.handleTrigger(o,t)}}})})),1),e.players.length?i("div",{ref:"bluffs",staticClass:"bluffs",class:{closed:!e.isBluffsOpen}},[i("h3",[e.session.isSpectator?i("span",[e._v("Other characters")]):i("span",[e._v("Demon bluffs")]),i("font-awesome-icon",{attrs:{icon:"times-circle"},on:{click:function(t){return t.stopPropagation(),e.toggleBluffs(t)}}}),i("font-awesome-icon",{attrs:{icon:"plus-circle"},on:{click:function(t){return t.stopPropagation(),e.toggleBluffs(t)}}})],1),i("ul",e._l(e.bluffSize,(function(t){return i("li",{key:t,on:{click:function(i){return e.openRoleModal(-1*t)}}},[i("Token",{attrs:{role:e.bluffs[t-1]}})],1)})),0)]):e._e(),e.fabled.length?i("div",{staticClass:"fabled",class:{closed:!e.isFabledOpen}},[i("h3",[i("span",[e._v("Fabled")]),i("font-awesome-icon",{attrs:{icon:"times-circle"},on:{click:function(t){return t.stopPropagation(),e.toggleFabled(t)}}}),i("font-awesome-icon",{attrs:{icon:"plus-circle"},on:{click:function(t){return t.stopPropagation(),e.toggleFabled(t)}}})],1),i("ul",e._l(e.fabled,(function(t,o){return i("li",{key:o,on:{click:function(t){return e.removeFabled(o)}}},[e.nightOrder.get(t).first&&e.grimoire.isNightOrder?i("div",{staticClass:"night-order first"},[i("em",[e._v(e._s(e.nightOrder.get(t).first)+".")]),t.firstNightReminder?i("span",[e._v(e._s(t.firstNightReminder))]):e._e()]):e._e(),e.nightOrder.get(t).other&&e.grimoire.isNightOrder?i("div",{staticClass:"night-order other"},[i("em",[e._v(e._s(e.nightOrder.get(t).other)+".")]),t.otherNightReminder?i("span",[e._v(e._s(t.otherNightReminder))]):e._e()]):e._e(),i("Token",{attrs:{role:t}})],1)})),0)]):e._e(),i("ReminderModal",{attrs:{"player-index":e.selectedPlayer}}),i("RoleModal",{attrs:{"player-index":e.selectedPlayer}})],1)},h=[],c=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("li",{style:e.zoom},[o("div",{ref:"player",staticClass:"player",class:[{dead:e.player.isDead,marked:e.session.markedPlayer===e.index,"no-vote":e.player.isVoteless,you:e.session.sessionId&&e.player.id&&e.player.id===e.session.playerId,"vote-yes":e.session.votes[e.index],"vote-lock":e.voteLocked},e.player.role.team]},[o("div",{staticClass:"shroud",on:{click:function(t){return e.toggleStatus()}}}),o("div",{staticClass:"life",on:{click:function(t){return e.toggleStatus()}}}),e.nightOrder.get(e.player).first&&e.grimoire.isNightOrder?o("div",{staticClass:"night-order first"},[o("em",[e._v(e._s(e.nightOrder.get(e.player).first)+".")]),e.player.role.firstNightReminder?o("span",[e._v(e._s(e.player.role.firstNightReminder))]):e._e()]):e._e(),e.nightOrder.get(e.player).other&&e.grimoire.isNightOrder?o("div",{staticClass:"night-order other"},[o("em",[e._v(e._s(e.nightOrder.get(e.player).other)+".")]),e.player.role.otherNightReminder?o("span",[e._v(e._s(e.player.role.otherNightReminder))]):e._e()]):e._e(),o("Token",{attrs:{role:e.player.role},on:{"set-role":function(t){return e.$emit("trigger",["openRoleModal"])}}}),o("div",{staticClass:"overlay"},[o("font-awesome-icon",{staticClass:"vote",attrs:{icon:"hand-paper",title:"Hand UP"},on:{click:function(t){return e.vote()}}}),o("font-awesome-icon",{staticClass:"vote",attrs:{icon:"times",title:"Hand DOWN"},on:{click:function(t){return e.vote()}}}),o("font-awesome-icon",{staticClass:"cancel",attrs:{icon:"times-circle",title:"Cancel"},on:{click:function(t){return e.cancel()}}}),o("font-awesome-icon",{staticClass:"swap",attrs:{icon:"exchange-alt",title:"Swap seats with this player"},on:{click:function(t){return e.swapPlayer(e.player)}}}),o("font-awesome-icon",{staticClass:"move",attrs:{icon:"redo-alt",title:"Move player to this seat"},on:{click:function(t){return e.movePlayer(e.player)}}}),o("font-awesome-icon",{staticClass:"nominate",attrs:{icon:"hand-point-right",title:"Nominate this player"},on:{click:function(t){return e.nominatePlayer(e.player)}}})],1),e.player.id&&e.session.sessionId?o("font-awesome-icon",{staticClass:"seat",class:{highlight:e.session.isRolesDistributed},attrs:{icon:"chair"}}):e._e(),e.player.isDead&&!e.player.isVoteless?o("font-awesome-icon",{staticClass:"has-vote",attrs:{icon:"vote-yea",title:"Ghost vote"},on:{click:function(t){return e.updatePlayer("isVoteless",!0)}}}):e._e(),o("div",{staticClass:"marked"},[o("font-awesome-icon",{attrs:{icon:"skull"}})],1),o("div",{staticClass:"name",class:{active:e.isMenuOpen},on:{click:function(t){e.isMenuOpen=!e.isMenuOpen}}},[o("span",[e._v(e._s(e.player.name))]),e.player.pronouns?o("font-awesome-icon",{attrs:{icon:"venus-mars"}}):e._e(),e.player.pronouns?o("div",{staticClass:"pronouns"},[o("span",[e._v(e._s(e.player.pronouns))])]):e._e()],1),o("transition",{attrs:{name:"fold"}},[e.isMenuOpen?o("ul",{staticClass:"menu"},[!e.session.isSpectator||e.session.isSpectator&&e.player.id===e.session.playerId?o("li",{on:{click:e.changePronouns}},[o("font-awesome-icon",{attrs:{icon:"venus-mars"}}),e._v("Change Pronouns ")],1):e._e(),e.session.isSpectator?e._e():[o("li",{on:{click:e.changeName}},[o("font-awesome-icon",{attrs:{icon:"user-edit"}}),e._v("Rename ")],1),o("li",{class:{disabled:e.session.lockedVote},on:{click:function(t){return e.movePlayer()}}},[o("font-awesome-icon",{attrs:{icon:"redo-alt"}}),e._v(" Move player ")],1),o("li",{class:{disabled:e.session.lockedVote},on:{click:function(t){return e.swapPlayer()}}},[o("font-awesome-icon",{attrs:{icon:"exchange-alt"}}),e._v(" Swap seats ")],1),o("li",{class:{disabled:e.session.lockedVote},on:{click:e.removePlayer}},[o("font-awesome-icon",{attrs:{icon:"times-circle"}}),e._v(" Remove ")],1),e.player.id&&e.session.sessionId?o("li",{on:{click:function(t){return e.updatePlayer("id","",!0)}}},[o("font-awesome-icon",{attrs:{icon:"chair"}}),e._v(" Empty seat ")],1):e._e(),e.session.nomination?e._e():[o("li",{on:{click:function(t){return e.nominatePlayer()}}},[o("font-awesome-icon",{attrs:{icon:"hand-point-right"}}),e._v(" Nomination ")],1)]],e.session.isSpectator?o("li",{class:{disabled:e.player.id&&e.player.id!==e.session.playerId},on:{click:e.claimSeat}},[o("font-awesome-icon",{attrs:{icon:"chair"}}),e.player.id?e.player.id===e.session.playerId?[e._v(" Vacate seat ")]:[e._v(" Seat occupied")]:[e._v(" Claim seat ")]],2):e._e()],2):e._e()])],1),e.player.reminders?e._l(e.player.reminders,(function(t){return o("div",{key:t.role+" "+t.name,staticClass:"reminder",class:[t.role],on:{click:function(i){return e.removeReminder(t)}}},[o("span",{staticClass:"icon",style:{backgroundImage:"url("+(t.image&&e.grimoire.isImageOptIn?t.image:i("61b0")("./"+(t.imageAlt||t.role)+".png"))+")"}}),o("span",{staticClass:"text"},[e._v(e._s(t.name))])])})):e._e(),o("div",{staticClass:"reminder add",on:{click:function(t){return e.$emit("trigger",["openReminderModal"])}}},[o("span",{staticClass:"icon"})])],2)},d=[],m=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{staticClass:"token",class:[e.role.id],on:{click:e.setRole}},[e.role.id?o("span",{staticClass:"icon",style:{backgroundImage:"url("+(e.role.image&&e.grimoire.isImageOptIn?e.role.image:i("61b0")("./"+(e.role.imageAlt||e.role.id)+".png"))+")"}}):e._e(),e.role.firstNight||e.role.firstNightReminder?o("span",{staticClass:"leaf-left"}):e._e(),e.role.otherNight||e.role.otherNightReminder?o("span",{staticClass:"leaf-right"}):e._e(),e.reminderLeaves?o("span",{class:["leaf-top"+e.reminderLeaves]}):e._e(),e.role.setup?o("span",{staticClass:"leaf-orange"}):e._e(),o("svg",{staticClass:"name",attrs:{viewBox:"0 0 150 150"}},[o("path",{attrs:{d:"M 13 75 C 13 160, 138 160, 138 75",id:"curve",fill:"transparent"}}),o("text",{staticClass:"label mozilla",attrs:{width:"150",x:"66.6%","text-anchor":"middle","font-size":e._f("nameToFontSize")(e.role.name)}},[o("textPath",{attrs:{"xlink:href":"#curve"}},[e._v(" "+e._s(e.role.name)+" ")])])]),o("div",{staticClass:"edition",class:["edition-"+e.role.edition,e.role.team]}),e.role.ability?o("div",{staticClass:"ability"},[e._v(" "+e._s(e.role.ability)+" ")]):e._e()])},p=[],g={name:"Token",props:{role:{type:Object,default:()=>({})}},computed:{reminderLeaves:function(){return(this.role.reminders||[]).length+(this.role.remindersGlobal||[]).length},...Object(n["d"])(["grimoire"])},data(){return{}},filters:{nameToFontSize:e=>e&&e.length>10?"90%":"110%"},methods:{setRole(){this.$emit("set-role")}}},u=g,f=(i("5720"),i("2877")),y=Object(f["a"])(u,m,p,!1,null,"deec739a",null),b=y.exports,v={components:{Token:b},props:{player:{type:Object,required:!0}},computed:{...Object(n["d"])("players",["players"]),...Object(n["d"])(["grimoire","session"]),...Object(n["b"])({nightOrder:"players/nightOrder"}),index:function(){return this.players.indexOf(this.player)},voteLocked:function(){const e=this.session,t=this.players.length;if(!e.nomination)return!1;const i=(this.index-1+t-e.nomination[1])%t;return iwindow.innerHeight?"vh":"vw";return this.players.length<7?{width:18+this.grimoire.zoom+e}:this.players.length<=10?{width:16+this.grimoire.zoom+e}:this.players.length<=15?{width:14+this.grimoire.zoom+e}:{width:12+this.grimoire.zoom+e}}},data(){return{isMenuOpen:!1,isSwap:!1}},methods:{changePronouns(){if(this.session.isSpectator&&this.player.id!==this.session.playerId)return;const e=prompt("Player pronouns",this.player.pronouns);null!==e&&this.updatePlayer("pronouns",e,!0)},toggleStatus(){this.grimoire.isPublic?this.player.isDead?this.player.isVoteless?(this.updatePlayer("isVoteless",!1),this.updatePlayer("isDead",!1)):this.updatePlayer("isVoteless",!0):(this.updatePlayer("isDead",!0),this.player.isMarked&&this.updatePlayer("isMarked",!1)):(this.updatePlayer("isDead",!this.player.isDead),this.player.isMarked&&this.updatePlayer("isMarked",!1),this.player.isVoteless&&this.updatePlayer("isVoteless",!1))},changeName(){if(this.session.isSpectator)return;const e=prompt("Player name",this.player.name)||this.player.name;this.updatePlayer("name",e,!0)},removeReminder(e){const t=[...this.player.reminders];t.splice(this.player.reminders.indexOf(e),1),this.updatePlayer("reminders",t,!0)},updatePlayer(e,t,i=!1){this.session.isSpectator&&"reminders"!==e&&"pronouns"!==e||(this.$store.commit("players/update",{player:this.player,property:e,value:t}),i&&(this.isMenuOpen=!1))},removePlayer(){this.isMenuOpen=!1,this.$emit("trigger",["removePlayer"])},swapPlayer(e){this.isMenuOpen=!1,this.$emit("trigger",["swapPlayer",e])},movePlayer(e){this.isMenuOpen=!1,this.$emit("trigger",["movePlayer",e])},nominatePlayer(e){this.isMenuOpen=!1,this.$emit("trigger",["nominatePlayer",e])},cancel(){this.$emit("trigger",["cancel"])},claimSeat(){this.isMenuOpen=!1,this.$emit("trigger",["claimSeat"])},vote(){this.session.isSpectator||this.voteLocked&&this.$store.commit("session/voteSync",[this.index,!this.session.votes[this.index]])}}},k=v,w=(i("74c9"),Object(f["a"])(k,c,d,!1,null,null,null)),N=w.exports,_=function(){var e=this,t=e.$createElement,o=e._self._c||t;return e.modals.reminder&&e.availableReminders.length&&e.players[e.playerIndex]?o("Modal",{on:{close:function(t){return e.toggleModal("reminder")}}},[o("h3",[e._v("Choose a reminder token:")]),o("ul",{staticClass:"reminders"},e._l(e.availableReminders,(function(t){return o("li",{key:t.role+" "+t.name,staticClass:"reminder",class:[t.role],on:{click:function(i){return e.addReminder(t)}}},[o("span",{staticClass:"icon",style:{backgroundImage:"url("+(t.image&&e.grimoire.isImageOptIn?t.image:i("61b0")("./"+(t.imageAlt||t.role)+".png"))+")"}}),o("span",{staticClass:"text"},[e._v(e._s(t.name))])])})),0)]):e._e()},S=[],R=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"modal-fade"}},[i("div",{staticClass:"modal-backdrop",on:{click:e.close}},[i("div",{staticClass:"modal",class:{maximized:e.isMaximized},attrs:{role:"dialog","aria-labelledby":"modalTitle","aria-describedby":"modalDescription"},on:{click:function(e){e.stopPropagation()}}},[i("div",{staticClass:"top-right-buttons"},[i("font-awesome-icon",{staticClass:"top-right-button",attrs:{icon:["fas",e.isMaximized?"window-minimize":"window-maximize"]},on:{click:function(t){e.isMaximized=!e.isMaximized}}}),i("font-awesome-icon",{staticClass:"top-right-button",attrs:{icon:"times-circle"},on:{click:e.close}})],1),i("div",{staticClass:"slot"},[e._t("default")],2)])])])},x=[],I={data:function(){return{isMaximized:!1}},methods:{close(){this.$emit("close")}}},M=I,T=(i("8781"),Object(f["a"])(M,R,x,!1,null,null,null)),O=T.exports;const C=({id:e,image:t,imageAlt:i})=>o=>({role:e,image:t,imageAlt:i,name:o});var P={components:{Modal:O},props:["playerIndex"],computed:{availableReminders(){let e=[];const{players:t,bluffs:i}=this.$store.state.players;return this.$store.state.roles.forEach(o=>{(t.some(e=>e.role.id===o.id)||i.some(e=>e.id===o.id))&&(e=[...e,...o.reminders.map(C(o))]),o.remindersGlobal&&o.remindersGlobal.length&&(e=[...e,...o.remindersGlobal.map(C(o))])}),this.$store.state.players.fabled.forEach(t=>{e=[...e,...t.reminders.map(C(t))]}),this.$store.state.otherTravelers.forEach(i=>{t.some(e=>e.role.id===i.id)&&(e=[...e,...i.reminders.map(C(i))])}),e.push({role:"good",name:"Good"}),e.push({role:"evil",name:"Evil"}),e.push({role:"custom",name:"Custom note"}),e},...Object(n["d"])(["modals","grimoire"]),...Object(n["d"])("players",["players"])},methods:{addReminder(e){const t=this.$store.state.players.players[this.playerIndex];let i;if("custom"===e.role){const e=prompt("Add a custom reminder note");if(!e)return;i=[...t.reminders,{role:"custom",name:e}]}else i=[...t.reminders,e];this.$store.commit("players/update",{player:t,property:"reminders",value:i}),this.$store.commit("toggleModal","reminder")},...Object(n["c"])(["toggleModal"])}},D=P,E=(i("740e"),Object(f["a"])(D,_,S,!1,null,"334686bc",null)),V=E.exports,j=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.modals.role&&e.availableRoles.length?i("Modal",{on:{close:e.close}},[i("h3",[e._v(" Choose a new character for "+e._s(e.playerIndex>=0&&e.players.length?e.players[e.playerIndex].name:"bluffing")+" ")]),"editionRoles"!==e.tab&&e.otherTravelers.size?e._e():i("ul",{staticClass:"tokens"},e._l(e.availableRoles,(function(t){return i("li",{key:t.id,class:[t.team],on:{click:function(i){return e.setRole(t)}}},[i("Token",{attrs:{role:t}})],1)})),0),"otherTravelers"===e.tab&&e.otherTravelers.size?i("ul",{staticClass:"tokens"},e._l(e.otherTravelers.values(),(function(t){return i("li",{key:t.id,class:[t.team],on:{click:function(i){return e.setRole(t)}}},[i("Token",{attrs:{role:t}})],1)})),0):e._e(),e.playerIndex>=0&&e.otherTravelers.size&&!e.session.isSpectator?i("div",{staticClass:"button-group"},[i("span",{staticClass:"button",class:{townsfolk:"editionRoles"===e.tab},on:{click:function(t){e.tab="editionRoles"}}},[e._v("Edition Roles")]),i("span",{staticClass:"button",class:{townsfolk:"otherTravelers"===e.tab},on:{click:function(t){e.tab="otherTravelers"}}},[e._v("Other Travelers")])]):e._e()]):e._e()},$=[],A={components:{Token:b,Modal:O},props:["playerIndex"],computed:{availableRoles(){const e=[],t=this.$store.state.players.players;return this.$store.state.roles.forEach(i=>{(this.playerIndex>=0||this.playerIndex<0&&!t.some(e=>e.role.id===i.id))&&e.push(i)}),e.push({}),e},...Object(n["d"])(["modals","roles","session"]),...Object(n["d"])("players",["players"]),...Object(n["d"])(["otherTravelers"])},data(){return{tab:"editionRoles"}},methods:{setRole(e){if(this.playerIndex<0)this.$store.commit("players/setBluff",{index:-1*this.playerIndex-1,role:e});else{if(this.session.isSpectator&&"traveler"===e.team)return;const t=this.$store.state.players.players[this.playerIndex];this.$store.commit("players/update",{player:t,property:"role",value:e})}this.tab="editionRoles",this.$store.commit("toggleModal","role")},close(){this.tab="editionRoles",this.toggleModal("role")},...Object(n["c"])(["toggleModal"])}},G=A,H=(i("23ca"),Object(f["a"])(G,j,$,!1,null,"2e3008b9",null)),F=H.exports,L={components:{Player:N,Token:b,RoleModal:F,ReminderModal:V},computed:{...Object(n["b"])({nightOrder:"players/nightOrder"}),...Object(n["d"])(["grimoire","roles","session"]),...Object(n["d"])("players",["players","bluffs","fabled"])},data(){return{selectedPlayer:0,bluffSize:3,swap:-1,move:-1,nominate:-1,isBluffsOpen:!0,isFabledOpen:!0}},methods:{toggleBluffs(){this.isBluffsOpen=!this.isBluffsOpen},toggleFabled(){this.isFabledOpen=!this.isFabledOpen},removeFabled(e){this.session.isSpectator||this.$store.commit("players/setFabled",{index:e})},handleTrigger(e,[t,i]){"function"===typeof this[t]&&this[t](e,i)},claimSeat(e){this.session.isSpectator&&(this.session.playerId===this.players[e].id?this.$store.commit("session/claimSeat",-1):this.$store.commit("session/claimSeat",e))},openReminderModal(e){this.selectedPlayer=e,this.$store.commit("toggleModal","reminder")},openRoleModal(e){const t=this.players[e];this.session.isSpectator&&t&&"traveler"===t.role.team||(this.selectedPlayer=e,this.$store.commit("toggleModal","role"))},removePlayer(e){if(!this.session.isSpectator&&!this.session.lockedVote&&confirm(`Do you really want to remove ${this.players[e].name}?`)){const{nomination:t}=this.session;t&&(t.includes(e)?this.$store.commit("session/nomination"):(t[0]>e||t[1]>e)&&this.$store.commit("session/setNomination",[t[0]>e?t[0]-1:t[0],t[1]>e?t[1]-1:t[1]])),this.$store.commit("players/remove",e)}},swapPlayer(e,t){if(!this.session.isSpectator&&!this.session.lockedVote)if(void 0===t)this.cancel(),this.swap=e;else{if(this.session.nomination){const e=this.players.indexOf(t),i=this.session.nomination.map(t=>t===this.swap?e:t===e?this.swap:t);this.session.nomination[0]===i[0]&&this.session.nomination[1]===i[1]||this.$store.commit("session/setNomination",i)}this.$store.commit("players/swap",[this.swap,this.players.indexOf(t)]),this.cancel()}},movePlayer(e,t){if(!this.session.isSpectator&&!this.session.lockedVote)if(void 0===t)this.cancel(),this.move=e;else{if(this.session.nomination){const e=this.players.indexOf(t),i=this.session.nomination.map(t=>t===this.move?e:t>this.move&&t<=e?t-1:t=e?t+1:t);this.session.nomination[0]===i[0]&&this.session.nomination[1]===i[1]||this.$store.commit("session/setNomination",i)}this.$store.commit("players/move",[this.move,this.players.indexOf(t)]),this.cancel()}},nominatePlayer(e,t){if(!this.session.isSpectator&&!this.session.lockedVote)if(void 0===t)this.cancel(),e!==this.nominate&&(this.nominate=e);else{const e=[this.nominate,this.players.indexOf(t)];this.$store.commit("session/nomination",{nomination:e}),this.cancel()}},cancel(){this.move=-1,this.swap=-1,this.nominate=-1}}},B=L,z=(i("3636"),Object(f["a"])(B,l,h,!1,null,null,null)),W=z.exports,Y=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ul",{staticClass:"info"},[o("li",{staticClass:"edition",class:["edition-"+e.edition.id],style:{backgroundImage:"url("+(e.edition.logo&&e.grimoire.isImageOptIn?e.edition.logo:i("ce23")("./"+e.edition.id+".png"))+")"}}),e.players.length-e.teams.traveler<5?o("li",[e._v(" Please add more players! ")]):e._e(),o("li",[e.edition.isOfficial?e._e():o("span",{staticClass:"meta"},[e._v(" "+e._s(e.edition.name)+" "+e._s(e.edition.author?"by "+e.edition.author:"")+" ")]),o("span",[e._v(" "+e._s(e.players.length)+" "),o("font-awesome-icon",{staticClass:"players",attrs:{icon:"users"}})],1),o("span",[e._v(" "+e._s(e.teams.alive)+" "),o("font-awesome-icon",{staticClass:"alive",attrs:{icon:"heartbeat"}})],1),o("span",[e._v(" "+e._s(e.teams.votes)+" "),o("font-awesome-icon",{staticClass:"votes",attrs:{icon:"vote-yea"}})],1)]),e.players.length-e.teams.traveler>=5?o("li",[o("span",[e._v(" "+e._s(e.teams.townsfolk)+" "),o("font-awesome-icon",{staticClass:"townsfolk",attrs:{icon:"user-friends"}})],1),o("span",[e._v(" "+e._s(e.teams.outsider)+" "),o("font-awesome-icon",{staticClass:"outsider",attrs:{icon:e.teams.outsider>1?"user-friends":"user"}})],1),o("span",[e._v(" "+e._s(e.teams.minion)+" "),o("font-awesome-icon",{staticClass:"minion",attrs:{icon:e.teams.minion>1?"user-friends":"user"}})],1),o("span",[e._v(" "+e._s(e.teams.demon)+" "),o("font-awesome-icon",{staticClass:"demon",attrs:{icon:e.teams.demon>1?"user-friends":"user"}})],1),e.teams.traveler?o("span",[e._v(" "+e._s(e.teams.traveler)+" "),o("font-awesome-icon",{staticClass:"traveler",attrs:{icon:e.teams.traveler>1?"user-friends":"user"}})],1):e._e(),e.grimoire.isNight?o("span",[e._v(" Night phase "),o("font-awesome-icon",{attrs:{icon:["fas","cloud-moon"]}})],1):e._e()]):e._e()])},J=[],U=i("634a"),q={computed:{teams:function(){const{players:e}=this.$store.state.players,t=this.$store.getters["players/nonTravelers"],i=e.filter(e=>!0!==e.isDead).length;return{...U[t-5],traveler:e.length-t,alive:i,votes:i+e.filter(e=>!0===e.isDead&&!0!==e.isVoteless).length}},...Object(n["d"])(["edition","grimoire"]),...Object(n["d"])("players",["players"])}},K=q,Z=(i("c5bf"),Object(f["a"])(K,Y,J,!1,null,"e858a1da",null)),Q=Z.exports,X=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"controls"}},[i("span",{directives:[{name:"show",rawName:"v-show",value:e.session.voteHistory.length&&e.session.sessionId,expression:"session.voteHistory.length && session.sessionId"}],staticClass:"nomlog-summary",attrs:{title:e.session.voteHistory.length+" recent "+(1==e.session.voteHistory.length?"nomination":"nominations")},on:{click:function(t){return e.toggleModal("voteHistory")}}},[i("font-awesome-icon",{attrs:{icon:"book-dead"}}),e._v(" "+e._s(e.session.voteHistory.length)+" ")],1),e.session.sessionId?i("span",{staticClass:"session",class:{spectator:e.session.isSpectator,reconnecting:e.session.isReconnecting},attrs:{title:e.session.playerCount+" other players in this session"+(e.session.ping?" ("+e.session.ping+"ms latency)":"")},on:{click:e.leaveSession}},[i("font-awesome-icon",{attrs:{icon:"broadcast-tower"}}),e._v(" "+e._s(e.session.playerCount)+" ")],1):e._e(),i("div",{staticClass:"menu",class:{open:e.grimoire.isMenuOpen}},[i("font-awesome-icon",{attrs:{icon:"cog"},on:{click:e.toggleMenu}}),i("ul",[i("li",{staticClass:"tabs",class:e.tab},[i("font-awesome-icon",{attrs:{icon:"book-open"},on:{click:function(t){e.tab="grimoire"}}}),i("font-awesome-icon",{attrs:{icon:"broadcast-tower"},on:{click:function(t){e.tab="session"}}}),e.session.isSpectator?e._e():i("font-awesome-icon",{attrs:{icon:"users"},on:{click:function(t){e.tab="players"}}}),i("font-awesome-icon",{attrs:{icon:"theater-masks"},on:{click:function(t){e.tab="characters"}}}),i("font-awesome-icon",{attrs:{icon:"question"},on:{click:function(t){e.tab="help"}}})],1),"grimoire"===e.tab?[i("li",{staticClass:"headline"},[e._v("Grimoire")]),e.players.length?i("li",{on:{click:e.toggleGrimoire}},[e.grimoire.isPublic?e._e():[e._v("Hide")],e.grimoire.isPublic?[e._v("Show")]:e._e(),i("em",[e._v("[G]")])],2):e._e(),e.session.isSpectator?e._e():i("li",{on:{click:e.toggleNight}},[e.grimoire.isNight?e._e():[e._v("Switch to Night")],e.grimoire.isNight?[e._v("Switch to Day")]:e._e(),i("em",[e._v("[S]")])],2),e.players.length?i("li",{on:{click:e.toggleNightOrder}},[e._v(" Night order "),i("em",[i("font-awesome-icon",{attrs:{icon:["fas",e.grimoire.isNightOrder?"check-square":"square"]}})],1)]):e._e(),e.players.length?i("li",[e._v(" Zoom "),i("em",[i("font-awesome-icon",{attrs:{icon:"search-minus"},on:{click:function(t){return e.setZoom(e.grimoire.zoom-1)}}}),e._v(" "+e._s(Math.round(100+10*e.grimoire.zoom))+"% "),i("font-awesome-icon",{attrs:{icon:"search-plus"},on:{click:function(t){return e.setZoom(e.grimoire.zoom+1)}}})],1)]):e._e(),i("li",{on:{click:e.setBackground}},[e._v(" Background image "),i("em",[i("font-awesome-icon",{attrs:{icon:"image"}})],1)]),e.edition.isOfficial?e._e():i("li",{on:{click:e.imageOptIn}},[i("small",[e._v("Show Custom Images")]),i("em",[i("font-awesome-icon",{attrs:{icon:["fas",e.grimoire.isImageOptIn?"check-square":"square"]}})],1)]),i("li",{on:{click:e.toggleStatic}},[e._v(" Disable Animations "),i("em",[i("font-awesome-icon",{attrs:{icon:["fas",e.grimoire.isStatic?"check-square":"square"]}})],1)]),i("li",{on:{click:e.toggleMuted}},[e._v(" Mute Sounds "),i("em",[i("font-awesome-icon",{attrs:{icon:["fas",e.grimoire.isMuted?"volume-mute":"volume-up"]}})],1)])]:e._e(),"session"===e.tab?[e.session.sessionId?i("li",{staticClass:"headline"},[e._v(" "+e._s(e.session.isSpectator?"Playing":"Hosting")+" ")]):i("li",{staticClass:"headline"},[e._v(" Live Session ")]),e.session.sessionId?[e.session.ping?i("li",[e._v(" Delay to "+e._s(e.session.isSpectator?"host":"players")+" "),i("em",[e._v(e._s(e.session.ping)+"ms")])]):e._e(),i("li",{on:{click:e.copySessionUrl}},[e._v(" Copy player link "),i("em",[i("font-awesome-icon",{attrs:{icon:"copy"}})],1)]),e.session.isSpectator?e._e():i("li",{on:{click:e.distributeRoles}},[e._v(" Send Characters "),i("em",[i("font-awesome-icon",{attrs:{icon:"theater-masks"}})],1)]),e.session.voteHistory.length||!e.session.isSpectator?i("li",{on:{click:function(t){return e.toggleModal("voteHistory")}}},[e._v(" Vote history"),i("em",[e._v("[V]")])]):e._e(),i("li",{on:{click:e.leaveSession}},[e._v(" Leave Session "),i("em",[e._v(e._s(e.session.sessionId))])])]:[i("li",{on:{click:e.hostSession}},[e._v("Host (Storyteller)"),i("em",[e._v("[H]")])]),i("li",{on:{click:e.joinSession}},[e._v("Join (Player)"),i("em",[e._v("[J]")])])]]:e._e(),"players"!==e.tab||e.session.isSpectator?e._e():[i("li",{staticClass:"headline"},[e._v("Players")]),e.players.length<20?i("li",{on:{click:e.addPlayer}},[e._v("Add"),i("em",[e._v("[A]")])]):e._e(),e.players.length>2?i("li",{on:{click:e.randomizeSeatings}},[e._v(" Randomize "),i("em",[i("font-awesome-icon",{attrs:{icon:"dice"}})],1)]):e._e(),e.players.length?i("li",{on:{click:e.clearPlayers}},[e._v(" Remove all "),i("em",[i("font-awesome-icon",{attrs:{icon:"trash-alt"}})],1)]):e._e()],"characters"===e.tab?[i("li",{staticClass:"headline"},[e._v("Characters")]),e.session.isSpectator?e._e():i("li",{on:{click:function(t){return e.toggleModal("edition")}}},[e._v(" Select Edition "),i("em",[e._v("[E]")])]),!e.session.isSpectator&&e.players.length>4?i("li",{on:{click:function(t){return e.toggleModal("roles")}}},[e._v(" Choose & Assign "),i("em",[e._v("[C]")])]):e._e(),e.session.isSpectator?e._e():i("li",{on:{click:function(t){return e.toggleModal("fabled")}}},[e._v(" Add Fabled "),i("em",[i("font-awesome-icon",{attrs:{icon:"dragon"}})],1)]),e.players.length?i("li",{on:{click:e.clearRoles}},[e._v(" Remove all "),i("em",[i("font-awesome-icon",{attrs:{icon:"trash-alt"}})],1)]):e._e()]:e._e(),"help"===e.tab?[i("li",{staticClass:"headline"},[e._v("Help")]),i("li",{on:{click:function(t){return e.toggleModal("reference")}}},[e._v(" Reference Sheet "),i("em",[e._v("[R]")])]),i("li",{on:{click:function(t){return e.toggleModal("nightOrder")}}},[e._v(" Night Order Sheet "),i("em",[e._v("[N]")])]),i("li",{on:{click:function(t){return e.toggleModal("gameState")}}},[e._v(" Game State JSON "),i("em",[i("font-awesome-icon",{attrs:{icon:"file-code"}})],1)]),i("li",[i("a",{attrs:{href:"https://discord.gg/Gd7ybwWbFk",target:"_blank"}},[e._v(" Join Discord ")]),i("em",[i("a",{attrs:{href:"https://discord.gg/Gd7ybwWbFk",target:"_blank"}},[i("font-awesome-icon",{attrs:{icon:["fab","discord"]}})],1)])]),i("li",[i("a",{attrs:{href:"https://github.com/bra1n/townsquare",target:"_blank"}},[e._v(" Source code ")]),i("em",[i("a",{attrs:{href:"https://github.com/bra1n/townsquare",target:"_blank"}},[i("font-awesome-icon",{attrs:{icon:["fab","github"]}})],1)])])]:e._e()],2)],1)])},ee=[],te={computed:{...Object(n["d"])(["grimoire","session","edition"]),...Object(n["d"])("players",["players"])},data(){return{tab:"grimoire"}},methods:{setBackground(){const e=prompt("Enter custom background URL");(e||""===e)&&this.$store.commit("setBackground",e)},hostSession(){if(this.session.sessionId)return;const e=prompt("Enter a channel number / name for your session",Math.round(1e4*Math.random()));e&&(this.$store.commit("session/clearVoteHistory"),this.$store.commit("session/setSpectator",!1),this.$store.commit("session/setSessionId",e),this.copySessionUrl())},copySessionUrl(){const e=window.location.href.split("#")[0],t=e+"#"+this.session.sessionId;navigator.clipboard.writeText(t)},distributeRoles(){if(this.session.isSpectator)return;const e="Do you want to distribute assigned characters to all SEATED players?";confirm(e)&&(this.$store.commit("session/distributeRoles",!0),setTimeout((()=>{this.$store.commit("session/distributeRoles",!1)}).bind(this),2e3))},imageOptIn(){const e="Are you sure you want to allow custom images? A malicious script file author might track your IP address this way.";(this.grimoire.isImageOptIn||confirm(e))&&this.toggleImageOptIn()},joinSession(){if(this.session.sessionId)return this.leaveSession();let e=prompt("Enter the channel number / name of the session you want to join");e.match(/^https?:\/\//i)&&(e=e.split("#").pop()),e&&(this.$store.commit("session/clearVoteHistory"),this.$store.commit("session/setSpectator",!0),this.$store.commit("toggleGrimoire",!1),this.$store.commit("session/setSessionId",e))},leaveSession(){confirm("Are you sure you want to leave the active live game?")&&(this.$store.commit("session/setSpectator",!1),this.$store.commit("session/setSessionId",""))},addPlayer(){if(this.session.isSpectator)return;if(this.players.length>=20)return;const e=prompt("Player name");e&&this.$store.commit("players/add",e)},randomizeSeatings(){this.session.isSpectator||confirm("Are you sure you want to randomize seatings?")&&this.$store.dispatch("players/randomize")},clearPlayers(){this.session.isSpectator||confirm("Are you sure you want to remove all players?")&&(this.session.nomination&&this.$store.commit("session/nomination"),this.$store.commit("players/clear"))},clearRoles(){confirm("Are you sure you want to remove all player roles?")&&this.$store.dispatch("players/clearRoles")},toggleNight(){this.$store.commit("toggleNight"),this.grimoire.isNight&&this.$store.commit("session/setMarkedPlayer",-1)},...Object(n["c"])(["toggleGrimoire","toggleMenu","toggleImageOptIn","toggleMuted","toggleNightOrder","toggleStatic","setZoom","toggleModal"])}},ie=te,oe=(i("2176"),Object(f["a"])(ie,X,ee,!1,null,"84ed831a",null)),se=oe.exports,ae=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.modals.roles&&e.nonTravelers>=5?i("Modal",{staticClass:"roles",on:{close:function(t){return e.toggleModal("roles")}}},[i("h3",[e._v("Select the characters for "+e._s(e.nonTravelers)+" players:")]),e._l(e.roleSelection,(function(t,o){return i("ul",{key:o,staticClass:"tokens"},[i("li",{staticClass:"count",class:[o]},[e._v(" "+e._s(t.reduce((function(e,t){var i=t.selected;return e+i}),0))+" / "+e._s(e.game[e.nonTravelers-5][o])+" ")]),e._l(t,(function(t){return i("li",{key:t.id,class:[t.team,t.selected?"selected":""],on:{click:function(e){t.selected=t.selected?0:1}}},[i("Token",{attrs:{role:t}}),t.setup?i("font-awesome-icon",{attrs:{icon:"exclamation-triangle"}}):e._e(),e.allowMultiple?i("div",{staticClass:"buttons"},[i("font-awesome-icon",{attrs:{icon:"minus-circle"},on:{click:function(e){e.stopPropagation(),t.selected--}}}),i("span",[e._v(e._s(t.selected>1?"x"+t.selected:""))]),i("font-awesome-icon",{attrs:{icon:"plus-circle"},on:{click:function(e){e.stopPropagation(),t.selected++}}})],1):e._e()],1)}))],2)})),e.hasSelectedSetupRoles?i("div",{staticClass:"warning"},[i("font-awesome-icon",{attrs:{icon:"exclamation-triangle"}}),i("span",[e._v(" Warning: there are characters selected that modify the game setup! The randomizer does not account for these characters. ")])],1):e._e(),i("label",{staticClass:"multiple",class:{checked:e.allowMultiple}},[i("font-awesome-icon",{attrs:{icon:e.allowMultiple?"check-square":"square"}}),i("input",{directives:[{name:"model",rawName:"v-model",value:e.allowMultiple,expression:"allowMultiple"}],attrs:{type:"checkbox",name:"allow-multiple"},domProps:{checked:Array.isArray(e.allowMultiple)?e._i(e.allowMultiple,null)>-1:e.allowMultiple},on:{change:function(t){var i=e.allowMultiple,o=t.target,s=!!o.checked;if(Array.isArray(i)){var a=null,n=e._i(i,a);o.checked?n<0&&(e.allowMultiple=i.concat([a])):n>-1&&(e.allowMultiple=i.slice(0,n).concat(i.slice(n+1)))}else e.allowMultiple=s}}}),e._v(" Allow duplicate characters ")],1),i("div",{staticClass:"button-group"},[i("div",{staticClass:"button",class:{disabled:e.selectedRoles>e.nonTravelers||!e.selectedRoles},on:{click:e.assignRoles}},[i("font-awesome-icon",{attrs:{icon:"people-arrows"}}),e._v(" Assign "+e._s(e.selectedRoles)+" characters randomly ")],1),i("div",{staticClass:"button",on:{click:e.selectRandomRoles}},[i("font-awesome-icon",{attrs:{icon:"random"}}),e._v(" Shuffle characters ")],1)])],2):e._e()},ne=[];const re=e=>e[Math.floor(Math.random()*e.length)];var le={components:{Token:b,Modal:O},data:function(){return{roleSelection:{},game:U,allowMultiple:!1}},computed:{selectedRoles:function(){return Object.values(this.roleSelection).map(e=>e.reduce((e,{selected:t})=>e+t,0)).reduce((e,t)=>e+t,0)},hasSelectedSetupRoles:function(){return Object.values(this.roleSelection).some(e=>e.some(e=>e.selected&&e.setup))},...Object(n["d"])(["roles","modals"]),...Object(n["d"])("players",["players"]),...Object(n["b"])({nonTravelers:"players/nonTravelers"})},methods:{selectRandomRoles(){this.roleSelection={},this.roles.forEach(e=>{this.roleSelection[e.team]||this.$set(this.roleSelection,e.team,[]),this.roleSelection[e.team].push(e),this.$set(e,"selected",0)}),delete this.roleSelection["traveler"];const e=Math.max(5,this.nonTravelers),t=this.game[e-5];Object.keys(t).forEach(e=>{for(let i=0;i!e.selected);t.length&&(re(t).selected=1)}})},assignRoles(){if(this.selectedRoles<=this.nonTravelers&&this.selectedRoles){const e=Object.values(this.roleSelection).map(e=>e.reduce((e,t)=>[...e,...Array(t.selected).fill(t)],[])).reduce((e,t)=>[...e,...t],[]).map(e=>[Math.random(),e]).sort((e,t)=>e[0]-t[0]).map(e=>e[1]);this.players.forEach(t=>{if("traveler"!==t.role.team&&e.length){const i=e.pop();this.$store.commit("players/update",{player:t,property:"role",value:i})}}),this.$store.commit("toggleModal","roles")}},...Object(n["c"])(["toggleModal"])},mounted:function(){Object.keys(this.roleSelection).length||this.selectRandomRoles()},watch:{roles(){this.selectRandomRoles()}}},he=le,ce=(i("8970"),Object(f["a"])(he,ae,ne,!1,null,"365502ca",null)),de=ce.exports,me=function(){var e=this,t=e.$createElement,o=e._self._c||t;return e.modals.edition?o("Modal",{staticClass:"editions",on:{close:function(t){return e.toggleModal("edition")}}},[e.isCustom?o("div",{staticClass:"custom"},[o("h3",[e._v("Load custom script / characters")]),e._v(" To play with a custom script, you need to select the characters you want to play with in the official "),o("a",{attrs:{href:"https://script.bloodontheclocktower.com/",target:"_blank"}},[e._v("Script Tool")]),e._v(' and then upload the generated "custom-list.json" either directly here or provide a URL to such a hosted JSON file.'),o("br"),o("br"),e._v(" To play with custom characters, please read "),o("a",{attrs:{href:"https://github.com/bra1n/townsquare#custom-characters",target:"_blank"}},[e._v("the documentation")]),e._v(" on how to write a custom character definition file. "),o("b",[e._v("Only load custom JSON files from sources that you trust!")]),o("h3",[e._v("Some popular custom scripts:")]),o("ul",{staticClass:"scripts"},e._l(e.scripts,(function(t,i){return o("li",{key:i,on:{click:function(i){return e.handleURL(t[1])}}},[e._v(" "+e._s(t[0])+" ")])})),0),o("input",{ref:"upload",attrs:{type:"file",accept:"application/json"},on:{change:e.handleUpload}}),o("div",{staticClass:"button-group"},[o("div",{staticClass:"button",on:{click:e.openUpload}},[o("font-awesome-icon",{attrs:{icon:"file-upload"}}),e._v(" Upload JSON ")],1),o("div",{staticClass:"button",on:{click:e.promptURL}},[o("font-awesome-icon",{attrs:{icon:"link"}}),e._v(" Enter URL ")],1),o("div",{staticClass:"button",on:{click:function(t){e.isCustom=!1}}},[o("font-awesome-icon",{attrs:{icon:"undo"}}),e._v(" Back ")],1)])]):o("div",[o("h3",[e._v("Select an edition:")]),o("ul",{staticClass:"editions"},[e._l(e.editions,(function(t){return o("li",{key:t.id,staticClass:"edition",class:["edition-"+t.id],style:{backgroundImage:"url("+i("ce23")("./"+t.id+".png")+")"},on:{click:function(i){return e.setEdition(t)}}},[e._v(" "+e._s(t.name)+" ")])})),o("li",{staticClass:"edition edition-custom",style:{backgroundImage:"url("+i("441d")+")"},on:{click:function(t){e.isCustom=!0}}},[e._v(" Custom Script / Characters ")])],2)])]):e._e()},pe=[],ge=i("00c0"),ue={components:{Modal:O},data:function(){return{editions:ge,isCustom:!1,scripts:[["Deadly Penance Day","https://gist.githubusercontent.com/bra1n/0337cc44c6fd2c44f7589256ed5486d2/raw/16be38fa3c01aaf49827303ac80577bdb52c0b25/penanceday.json"],["Catfishing 11.1","https://gist.githubusercontent.com/bra1n/8a5ec41a7bbf945f6b7dfc1cef72b569/raw/a312ab93c2f302e0ef83c8b65a4e8e82760fda3a/catfishing.json"],["On Thin Ice (Teensyville)","https://gist.githubusercontent.com/bra1n/8dacd9f2abc6f428331ea1213ab153f5/raw/0cacbcaf8ed9bddae0cca25a9ada97e9958d868b/on-thin-ice.json"],["Race To The Bottom (Teensyville)","https://gist.githubusercontent.com/bra1n/63e1354cb3dc9d4032bcd0623dc48888/raw/5acb0eedcc0a67a64a99c7e0e6271de0b7b2e1b2/race-to-the-bottom.json"],["Frankenstein's Mayor by Ted (Teensyville)","https://gist.githubusercontent.com/bra1n/32c52b422cc01b934a4291eeb81dbcee/raw/5bf770693bbf7aff5e86601c82ca4af3222f4ba6/Frankensteins_Mayor_by_Ted.json"],["Vigormortis High School (Teensyville)","https://gist.githubusercontent.com/bra1n/1f65bd4a999524719d5dabe98c3c2d27/raw/22bbec6bf56a51a7459e5ae41ed47e41971c5445/VigormortisHighSchool.json"]]}},computed:Object(n["d"])(["modals"]),methods:{openUpload(){this.$refs.upload.click()},handleUpload(){const e=this.$refs.upload.files[0];if(e&&e.size){const t=new FileReader;t.addEventListener("load",()=>{try{const e=JSON.parse(t.result);this.parseRoles(e)}catch(e){alert("Error reading custom script: "+e.message)}this.$refs.upload.value=""}),t.readAsText(e)}},promptURL(){const e=prompt("Enter URL to a custom-script.json file");e&&this.handleURL(e)},async handleURL(e){const t=await fetch(e);if(t&&t.json)try{const e=await t.json();this.parseRoles(e)}catch(i){alert("Error loading custom script: "+i.message)}},parseRoles(e){if(!e||!e.length)return;const t=e.findIndex(({id:e})=>"_meta"===e);let i={};if(t>-1&&(i=e.splice(t,1).pop()),this.$store.commit("setCustomRoles",e),this.$store.commit("setEdition",Object.assign({},i,{id:"custom"})),e.some(({id:e})=>this.$store.state.fabled.has(e))){const t=[];e.forEach(({id:e})=>{this.$store.state.fabled.has(e)&&t.push(this.$store.state.fabled.get(e))}),this.$store.commit("players/setFabled",{fabled:t})}this.isCustom=!1},...Object(n["c"])(["toggleModal","setEdition"])}},fe=ue,ye=(i("b162"),Object(f["a"])(fe,me,pe,!1,null,"7c2292c2",null)),be=ye.exports,ve=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"intro"},[i("img",{attrs:{src:"static/apple-icon.png",alt:""}}),e._v(" Welcome to the (unofficial) "),i("b",[e._v("Virtual Town Square and Grimoire")]),e._v(" for Blood on the Clocktower! Please add more players through the "),i("span",{staticClass:"button",on:{click:e.toggleMenu}},[i("font-awesome-icon",{attrs:{icon:"cog"}}),e._v(" Menu ")],1),e._v(" on the top right or by pressing "),i("b",[e._v("[A]")]),e._v(". You can also join a game session by pressing "),i("b",[e._v("[J]")]),e._v("."),i("br"),e._m(0)])},ke=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"footer"},[e._v(" This project is free and open source and can be found on "),i("a",{attrs:{href:"https://github.com/bra1n/townsquare",target:"_blank"}},[e._v("GitHub")]),e._v('. It is not affiliated with The Pandemonium Institute. "Blood on the Clocktower" is a trademark of Steven Medway and The Pandemonium Institute. ')])}],we={methods:Object(n["c"])(["toggleMenu"])},Ne=we,_e=(i("c198"),Object(f["a"])(Ne,ve,ke,!1,null,"0ae0fea6",null)),Se=_e.exports,Re=function(){var e=this,t=e.$createElement,o=e._self._c||t;return e.modals.reference&&e.roles.size?o("Modal",{staticClass:"characters",on:{close:function(t){return e.toggleModal("reference")}}},[o("font-awesome-icon",{staticClass:"toggle",attrs:{icon:"cloud-moon",title:"Show Night Order"},on:{click:function(t){return e.toggleModal("nightOrder")}}}),o("h3",[e._v(" Character Reference "),o("font-awesome-icon",{attrs:{icon:"address-card"}}),e._v(" "+e._s(e.edition.name||"Custom Script")+" ")],1),e._l(e.rolesGrouped,(function(t,s){return o("div",{key:s,class:["team",s]},[o("aside",[o("h4",[e._v(e._s(s))])]),o("ul",[e._l(t,(function(t){return o("li",{key:t.id,class:[s]},[t.id?o("span",{staticClass:"icon",style:{backgroundImage:"url("+(t.image&&e.grimoire.isImageOptIn?t.image:i("61b0")("./"+(t.imageAlt||t.id)+".png"))+")"}}):e._e(),o("div",{staticClass:"role"},[Object.keys(e.playersByRole).length?o("span",{staticClass:"player"},[e._v(e._s(e.playersByRole[t.id]?e.playersByRole[t.id].join(", "):""))]):e._e(),o("span",{staticClass:"name"},[e._v(e._s(t.name))]),o("span",{staticClass:"ability"},[e._v(e._s(t.ability))])])])})),o("li",{class:[s]}),o("li",{class:[s]})],2)])})),e.jinxed.length?o("div",{staticClass:"team jinxed"},[o("aside",[o("h4",[e._v("Jinxed")])]),o("ul",[e._l(e.jinxed,(function(t,s){return o("li",{key:s},[o("span",{staticClass:"icon",style:{backgroundImage:"url("+i("61b0")("./"+t.first.id+".png")+")"}}),o("span",{staticClass:"icon",style:{backgroundImage:"url("+i("61b0")("./"+t.second.id+".png")+")"}}),o("div",{staticClass:"role"},[o("span",{staticClass:"name"},[e._v(e._s(t.first.name)+" & "+e._s(t.second.name))]),o("span",{staticClass:"ability"},[e._v(e._s(t.reason))])])])})),o("li"),o("li")],2)]):e._e()],2):e._e()},xe=[],Ie={components:{Modal:O},computed:{jinxed:function(){const e=[];return this.roles.forEach(t=>{this.jinxes.get(t.id)&&this.jinxes.get(t.id).forEach((i,o)=>{this.roles.get(o)&&e.push({first:t,second:this.roles.get(o),reason:i})})}),e},rolesGrouped:function(){const e={};return this.roles.forEach(t=>{e[t.team]||(e[t.team]=[]),e[t.team].push(t)}),delete e["traveler"],e},playersByRole:function(){const e={};return this.players.forEach(({name:t,role:i})=>{i&&i.id&&"traveler"!==i.team&&(e[i.id]||(e[i.id]=[]),e[i.id].push(t))}),e},...Object(n["d"])(["roles","modals","edition","grimoire","jinxes"]),...Object(n["d"])("players",["players"])},methods:{...Object(n["c"])(["toggleModal"])}},Me=Ie,Te=(i("4c96"),Object(f["a"])(Me,Re,xe,!1,null,"7d0ee60b",null)),Oe=Te.exports,Ce=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{attrs:{id:"vote"}},[o("div",{staticClass:"arrows"},[o("span",{staticClass:"nominee",style:e.nomineeStyle}),o("span",{staticClass:"nominator",style:e.nominatorStyle})]),o("div",{staticClass:"overlay"},[o("audio",{attrs:{src:i("f6a8"),preload:"auto"}}),o("em",{staticClass:"blue"},[e._v(e._s(e.nominator.name))]),e._v(" nominated "),o("em",[e._v(e._s(e.nominee.name))]),e._v("! "),o("br"),o("em",{staticClass:"blue"},[e._v(" "+e._s(e.voters.length)+" vote"+e._s(1!==e.voters.length?"s":"")+" ")]),e._v(" in favor "),"traveler"!==e.nominee.role.team?o("em",[e._v(" (majority is "+e._s(Math.ceil(e.alive/2))+") ")]):o("em",[e._v("(majority is "+e._s(Math.ceil(e.players.length/2))+")")]),e.session.isSpectator?e.canVote?[e.session.isVoteInProgress?e._e():o("div",[e._v(" "+e._s(e.session.votingSpeed/1e3)+" seconds between votes ")]),o("div",{staticClass:"button-group"},[o("div",{staticClass:"button townsfolk",class:{disabled:!e.currentVote},on:{click:function(t){return e.vote(!1)}}},[e._v(" Hand DOWN ")]),o("div",{staticClass:"button demon",class:{disabled:e.currentVote},on:{click:function(t){return e.vote(!0)}}},[e._v(" Hand UP ")])])]:e.player?e._e():o("div",[e._v(" Please claim a seat to vote. ")]):[!e.session.isVoteInProgress&&e.session.lockedVote<1?o("div",[e._v(" Time per player: "),o("font-awesome-icon",{attrs:{icon:"minus-circle"},on:{mousedown:function(t){return t.preventDefault(),e.setVotingSpeed(-500)}}}),e._v(" "+e._s(e.session.votingSpeed/1e3)+"s "),o("font-awesome-icon",{attrs:{icon:"plus-circle"},on:{mousedown:function(t){return t.preventDefault(),e.setVotingSpeed(500)}}})],1):e._e(),o("div",{staticClass:"button-group"},[e.session.isVoteInProgress?e._e():o("div",{staticClass:"button townsfolk",on:{click:e.countdown}},[e._v(" Countdown ")]),e.session.isVoteInProgress?[o("div",{staticClass:"button townsfolk",class:{disabled:!e.session.lockedVote},on:{click:e.pause}},[e._v(" "+e._s(e.voteTimer?"Pause":"Resume")+" ")]),o("div",{staticClass:"button",on:{click:e.stop}},[e._v("Reset")])]:o("div",{staticClass:"button",on:{click:e.start}},[e._v(" "+e._s(e.session.lockedVote?"Restart":"Start")+" ")]),o("div",{staticClass:"button demon",on:{click:e.finish}},[e._v("Close")])],2),"traveler"!==e.nominee.role.team?o("div",{staticClass:"button-group mark"},[o("div",{staticClass:"button",class:{disabled:e.session.nomination[1]===e.session.markedPlayer},on:{click:e.setMarked}},[e._v(" Mark for execution ")]),o("div",{staticClass:"button",on:{click:e.removeMarked}},[e._v(" Clear mark ")])]):e._e()]],2),o("transition",{attrs:{name:"blur"}},[e.session.isVoteInProgress&&!e.session.lockedVote?o("div",{staticClass:"countdown"},[o("span",[e._v("3")]),o("span",[e._v("2")]),o("span",[e._v("1")]),o("span",[e._v("GO")]),o("audio",{attrs:{autoplay:!e.grimoire.isMuted,src:i("f6a8"),muted:e.grimoire.isMuted}})]):e._e()])],1)},Pe=[],De={computed:{...Object(n["d"])("players",["players"]),...Object(n["d"])(["session","grimoire"]),...Object(n["b"])({alive:"players/alive"}),nominator:function(){return this.players[this.session.nomination[0]]},nominatorStyle:function(){const e=this.players.length,t=this.session.nomination[0];return{transform:`rotate(${Math.round(t/e*360)}deg)`,transitionDuration:this.session.votingSpeed-100+"ms"}},nominee:function(){return this.players[this.session.nomination[1]]},nomineeStyle:function(){const e=this.players.length,t=this.session.nomination[1],i=this.session.lockedVote,o=360*(t+Math.min(i,e))/e;return{transform:`rotate(${Math.round(o)}deg)`,transitionDuration:this.session.votingSpeed-100+"ms"}},player:function(){return this.players.find(e=>e.id===this.session.playerId)},currentVote:function(){const e=this.players.findIndex(e=>e.id===this.session.playerId);return e>=0?!!this.session.votes[e]:void 0},canVote:function(){if(!this.player)return!1;if(this.player.isVoteless&&"traveler"!==this.nominee.role.team)return!1;const e=this.session,t=this.players.length,i=this.players.indexOf(this.player),o=(i-1+t-e.nomination[1])%t;return o>=e.lockedVote-1},voters:function(){const e=this.session.nomination[1],t=Array(this.players.length).fill("").map((e,t)=>this.session.votes[t]?this.players[t].name:""),i=[...t.slice(e+1),...t.slice(0,e+1)];return(this.session.lockedVote?i.slice(0,this.session.lockedVote-1):i).filter(e=>!!e)}},data(){return{voteTimer:null}},methods:{countdown(){this.$store.commit("session/lockVote",0),this.$store.commit("session/setVoteInProgress",!0),this.voteTimer=setInterval(()=>{this.start()},4e3)},start(){this.$store.commit("session/lockVote",1),this.$store.commit("session/setVoteInProgress",!0),clearInterval(this.voteTimer),this.voteTimer=setInterval(()=>{this.$store.commit("session/lockVote"),this.session.lockedVote>this.players.length&&(clearInterval(this.voteTimer),this.$store.commit("session/setVoteInProgress",!1))},this.session.votingSpeed)},pause(){this.voteTimer?(clearInterval(this.voteTimer),this.voteTimer=null):this.voteTimer=setInterval(()=>{this.$store.commit("session/lockVote"),this.session.lockedVote>this.players.length&&(clearInterval(this.voteTimer),this.$store.commit("session/setVoteInProgress",!1))},this.session.votingSpeed)},stop(){clearInterval(this.voteTimer),this.voteTimer=null,this.$store.commit("session/setVoteInProgress",!1),this.$store.commit("session/lockVote",0)},finish(){clearInterval(this.voteTimer),this.$store.commit("session/addHistory",this.players),this.$store.commit("session/nomination")},vote(e){if(!this.canVote)return!1;const t=this.players.findIndex(e=>e.id===this.session.playerId);t>=0&&!!this.session.votes[t]!==e&&this.$store.commit("session/voteSync",[t,e])},setVotingSpeed(e){const t=Math.round(this.session.votingSpeed+e);t>0&&this.$store.commit("session/setVotingSpeed",t)},setMarked(){this.$store.commit("session/setMarkedPlayer",this.session.nomination[1])},removeMarked(){this.$store.commit("session/setMarkedPlayer",-1)}}},Ee=De,Ve=(i("8e72"),Object(f["a"])(Ee,Ce,Pe,!1,null,"56f82741",null)),je=Ve.exports,$e=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"gradients"}},e._l(e.gradients,(function(e,t){return i("svg",{key:t,attrs:{width:"0",height:"0"}},[i("linearGradient",{attrs:{id:e[0],x1:"50%",y1:"100%",x2:"50%",y2:"0%"}},[i("stop",{style:{"stop-color":e[2],"stop-opacity":1},attrs:{offset:"0%"}}),i("stop",{style:{"stop-color":e[1],"stop-opacity":1},attrs:{offset:"100%"}})],1)],1)})),0)},Ae=[],Ge={data(){return{gradients:[["demon","#ce0100","#000"],["townsfolk","#1f65ff","#000"],["default","#4E4E4E","#000"]]}}},He=Ge,Fe=(i("3f8f"),Object(f["a"])(He,$e,Ae,!1,null,"1e202a64",null)),Le=Fe.exports,Be=function(){var e=this,t=e.$createElement,o=e._self._c||t;return e.modals.nightOrder&&e.roles.size?o("Modal",{staticClass:"night-reference",on:{close:function(t){return e.toggleModal("nightOrder")}}},[o("font-awesome-icon",{staticClass:"toggle",attrs:{icon:"address-card",title:"Show Character Reference"},on:{click:function(t){return e.toggleModal("reference")}}}),o("h3",[e._v(" Night Order "),o("font-awesome-icon",{attrs:{icon:"cloud-moon"}}),e._v(" "+e._s(e.edition.name||"Custom Script")+" ")],1),o("div",{staticClass:"night"},[o("ul",{staticClass:"first"},[o("li",{staticClass:"headline"},[e._v("First Night")]),e._l(e.rolesFirstNight,(function(t){return o("li",{key:t.name,class:[t.team]},[o("span",{staticClass:"name"},[e._v(" "+e._s(t.name)+" "),t.players.length?o("span",{staticClass:"player"},[o("br"),e._l(t.players,(function(i,s){return o("small",{key:s,class:{dead:i.isDead}},[e._v(e._s(i.name+(t.players.length>s+1?",":"")))])}))],2):e._e()]),t.id?o("span",{staticClass:"icon",style:{backgroundImage:"url("+(t.image&&e.grimoire.isImageOptIn?t.image:i("61b0")("./"+(t.imageAlt||t.id)+".png"))+")"}}):e._e(),t.firstNightReminder?o("span",{staticClass:"reminder"},[e._v(" "+e._s(t.firstNightReminder)+" ")]):e._e()])}))],2),o("ul",{staticClass:"other"},[o("li",{staticClass:"headline"},[e._v("Other Nights")]),e._l(e.rolesOtherNight,(function(t){return o("li",{key:t.name,class:[t.team]},[t.id?o("span",{staticClass:"icon",style:{backgroundImage:"url("+(t.image&&e.grimoire.isImageOptIn?t.image:i("61b0")("./"+(t.imageAlt||t.id)+".png"))+")"}}):e._e(),o("span",{staticClass:"name"},[e._v(" "+e._s(t.name)+" "),t.players.length?o("span",{staticClass:"player"},[o("br"),e._l(t.players,(function(i,s){return o("small",{key:s,class:{dead:i.isDead}},[e._v(e._s(i.name+(t.players.length>s+1?",":"")))])}))],2):e._e()]),t.otherNightReminder?o("span",{staticClass:"reminder"},[e._v(" "+e._s(t.otherNightReminder)+" ")]):e._e()])}))],2)])],1):e._e()},ze=[],We={components:{Modal:O},computed:{rolesFirstNight:function(){const e=[];return this.players.length>6&&e.push({id:"evil",name:"Minion info",firstNight:5,team:"minion",players:this.players.filter(e=>"minion"===e.role.team),firstNightReminder:"• If more than one Minion, they all make eye contact with each other. • Show the “This is the Demon” card. Point to the Demon."},{id:"evil",name:"Demon info & bluffs",firstNight:8,team:"demon",players:this.players.filter(e=>"demon"===e.role.team),firstNightReminder:"• 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."}),this.roles.forEach(t=>{const i=this.players.filter(e=>e.role.id===t.id);t.firstNight&&("traveler"!==t.team||i.length)&&e.push(Object.assign({players:i},t))}),this.fabled.filter(({firstNight:e})=>e).forEach(t=>{e.push(Object.assign({players:[]},t))}),e.sort((e,t)=>e.firstNight-t.firstNight),e},rolesOtherNight:function(){const e=[];return this.roles.forEach(t=>{const i=this.players.filter(e=>e.role.id===t.id);t.otherNight&&("traveler"!==t.team||i.length)&&e.push(Object.assign({players:i},t))}),this.fabled.filter(({otherNight:e})=>e).forEach(t=>{e.push(Object.assign({players:[]},t))}),e.sort((e,t)=>e.otherNight-t.otherNight),e},...Object(n["d"])(["roles","modals","edition","grimoire"]),...Object(n["d"])("players",["players","fabled"])},methods:{...Object(n["c"])(["toggleModal"])}},Ye=We,Je=(i("b6d8"),Object(f["a"])(Ye,Be,ze,!1,null,"ec47598c",null)),Ue=Je.exports,qe=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.modals.fabled&&e.fabled.length?i("Modal",{on:{close:function(t){return e.toggleModal("fabled")}}},[i("h3",[e._v(" Choose a fabled character to add to the game ")]),i("ul",{staticClass:"tokens"},e._l(e.fabled,(function(t){return i("li",{key:t.id,on:{click:function(i){return e.setFabled(t)}}},[i("Token",{attrs:{role:t}})],1)})),0)]):e._e()},Ke=[],Ze={components:{Token:b,Modal:O},computed:{...Object(n["d"])(["modals","fabled","grimoire"]),fabled(){const e=[];return this.$store.state.fabled.forEach(t=>{this.$store.state.players.fabled.some(e=>e.id===t.id)||e.push(t)}),e}},methods:{setFabled(e){this.$store.commit("players/setFabled",{fabled:e}),this.$store.commit("toggleModal","fabled")},...Object(n["c"])(["toggleModal"])}},Qe=Ze,Xe=(i("ff40"),Object(f["a"])(Qe,qe,Ke,!1,null,"d6b399a0",null)),et=Xe.exports,tt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return!e.modals.voteHistory||!e.session.voteHistory&&e.session.isSpectator?e._e():i("Modal",{staticClass:"vote-history",on:{close:function(t){return e.toggleModal("voteHistory")}}},[e.session.isSpectator?i("font-awesome-icon",{staticClass:"clear",attrs:{icon:"trash-alt",title:"Clear vote history"},on:{click:e.clearVoteHistory}}):e._e(),i("h3",[e._v("Vote history")]),e.session.isSpectator?e._e():[i("div",{staticClass:"options"},[i("div",{staticClass:"option",on:{click:e.setRecordVoteHistory}},[i("font-awesome-icon",{attrs:{icon:["fas",e.session.isVoteHistoryAllowed?"check-square":"square"]}}),e._v(" Accessible to players ")],1),i("div",{staticClass:"option",on:{click:e.clearVoteHistory}},[i("font-awesome-icon",{attrs:{icon:"trash-alt"}}),e._v(" Clear for everyone ")],1)])],i("table",[i("thead",[i("tr",[i("td",[e._v("Time")]),i("td",[e._v("Nominator")]),i("td",[e._v("Nominee")]),i("td",[e._v("Type")]),i("td",[e._v("Votes")]),i("td",[e._v("Majority")]),i("td",[i("font-awesome-icon",{attrs:{icon:"user-friends"}}),e._v(" Voters ")],1)])]),i("tbody",e._l(e.session.voteHistory,(function(t,o){return i("tr",{key:o},[i("td",[e._v(" "+e._s(t.timestamp.getHours().toString().padStart(2,"0"))+":"+e._s(t.timestamp.getMinutes().toString().padStart(2,"0"))+" ")]),i("td",[e._v(e._s(t.nominator))]),i("td",[e._v(e._s(t.nominee))]),i("td",[e._v(e._s(t.type))]),i("td",[e._v(" "+e._s(t.votes.length)+" "),i("font-awesome-icon",{attrs:{icon:"hand-paper"}})],1),i("td",[e._v(" "+e._s(t.majority)+" "),i("font-awesome-icon",{attrs:{icon:["fas",t.votes.length>=t.majority?"check-square":"square"]}})],1),i("td",[e._v(" "+e._s(t.votes.join(", "))+" ")])])})),0)])],2)},it=[],ot={components:{Modal:O},computed:{...Object(n["d"])(["session","modals"])},methods:{clearVoteHistory(){this.$store.commit("session/clearVoteHistory")},setRecordVoteHistory(){this.$store.commit("session/setVoteHistoryAllowed",!this.session.isVoteHistoryAllowed)},...Object(n["c"])(["toggleModal"])}},st=ot,at=(i("8e93"),Object(f["a"])(st,tt,it,!1,null,"482a37a8",null)),nt=at.exports,rt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.modals.gameState?i("Modal",{staticClass:"game-state",on:{close:function(t){return e.toggleModal("gameState")}}},[i("h3",[e._v("Current Game State")]),i("textarea",{domProps:{value:e.gamestate},on:{input:function(t){t.stopPropagation(),e.input=t.target.value},click:function(e){return e.target.select()},keyup:function(e){e.stopPropagation()}}}),i("div",{staticClass:"button-group"},[i("div",{staticClass:"button townsfolk",on:{click:e.copy}},[i("font-awesome-icon",{attrs:{icon:"copy"}}),e._v(" Copy JSON ")],1),e.session.isSpectator?e._e():i("div",{staticClass:"button demon",on:{click:e.load}},[i("font-awesome-icon",{attrs:{icon:"cog"}}),e._v(" Load State ")],1)])]):e._e()},lt=[],ht={components:{Modal:O},computed:{gamestate:function(){return JSON.stringify({bluffs:this.players.bluffs.map(({id:e})=>e),edition:this.edition.isOfficial?{id:this.edition.id}:this.edition,roles:this.edition.isOfficial?"":this.$store.getters.customRolesStripped,fabled:this.players.fabled.map(e=>e.isCustom?e:{id:e.id}),players:this.players.players.map(e=>({...e,role:e.role.id||{}}))})},...Object(n["d"])(["modals","players","edition","roles","session"])},data(){return{input:""}},methods:{copy:function(){navigator.clipboard.writeText(this.input||this.gamestate)},load:function(){if(!this.session.isSpectator)try{const e=JSON.parse(this.input||this.gamestate),{bluffs:t,edition:i,roles:o,fabled:s,players:a}=e;o&&this.$store.commit("setCustomRoles",o),i&&this.$store.commit("setEdition",i),t.length&&t.forEach((e,t)=>{this.$store.commit("players/setBluff",{index:t,role:this.$store.state.roles.get(e)||{}})}),s&&this.$store.commit("players/setFabled",{fabled:s.map(e=>this.$store.state.fabled.get(e)||this.$store.state.fabled.get(e.id)||e)}),a&&this.$store.commit("players/set",a.map(e=>({...e,role:this.$store.state.roles.get(e.role)||this.$store.getters.rolesJSONbyId.get(e.role)||{}}))),this.toggleModal("gameState")}catch(e){alert("Unable to parse JSON: "+e)}},...Object(n["c"])(["toggleModal"])}},ct=ht,dt=(i("eb35"),Object(f["a"])(ct,rt,lt,!1,null,"7971ea6f",null)),mt=dt.exports,pt={components:{GameStateModal:mt,VoteHistoryModal:nt,FabledModal:et,NightOrderModal:Ue,Vote:je,ReferenceModal:Oe,Intro:Se,TownInfo:Q,TownSquare:W,Menu:se,EditionModal:be,RolesModal:de,Gradients:Le},computed:{...Object(n["d"])(["grimoire","session"]),...Object(n["d"])("players",["players"])},data(){return{version:r["a"]}},methods:{keyup({key:e,ctrlKey:t,metaKey:i}){if(!t&&!i)switch(e.toLocaleLowerCase()){case"g":this.$store.commit("toggleGrimoire");break;case"a":this.$refs.menu.addPlayer();break;case"h":this.$refs.menu.hostSession();break;case"j":this.$refs.menu.joinSession();break;case"r":this.$store.commit("toggleModal","reference");break;case"n":this.$store.commit("toggleModal","nightOrder");break;case"e":if(this.session.isSpectator)return;this.$store.commit("toggleModal","edition");break;case"c":if(this.session.isSpectator)return;this.$store.commit("toggleModal","roles");break;case"v":!this.session.voteHistory.length&&this.session.isSpectator||this.$store.commit("toggleModal","voteHistory");break;case"s":if(this.session.isSpectator)return;this.$refs.menu.toggleNight();break;case"escape":this.$store.commit("toggleModal")}}}},gt=pt,ut=(i("5c0b"),Object(f["a"])(gt,s,a,!1,null,null,null)),ft=ut.exports,yt=i("dfb1"),bt=i.n(yt);class vt{constructor(e){this._wss="wss://live.clocktower.online:8080/",this._socket=null,this._isSpectator=!0,this._gamestate=[],this._store=e,this._pingInterval=3e4,this._pingTimer=null,this._reconnectTimer=null,this._players={},this._pings={},this._store.state.session.sessionId&&this.connect(this._store.state.session.sessionId)}_open(e){this.disconnect(),this._socket=new WebSocket(this._wss+e+"/"+(this._isSpectator?this._store.state.session.playerId:"host")),this._socket.addEventListener("message",this._handleMessage.bind(this)),this._socket.onopen=this._onOpen.bind(this),this._socket.onclose=t=>{this._socket=null,clearInterval(this._pingTimer),this._pingTimer=null,1e3!==t.code?(this._store.commit("session/setReconnecting",!0),this._reconnectTimer=setTimeout(()=>this.connect(e),3e3)):(this._store.commit("session/setSessionId",""),t.reason&&alert(t.reason))}}_send(e,t){this._socket&&1===this._socket.readyState&&this._socket.send(JSON.stringify([e,t]))}_sendDirect(e,t,i){e?this._send("direct",{[e]:[t,i]}):this._send(t,i)}_onOpen(){this._isSpectator?this._sendDirect("host","getGamestate",this._store.state.session.playerId):this.sendGamestate(),this._ping()}_ping(){this._handlePing(),this._send("ping",[this._isSpectator?this._store.state.session.playerId:Object.keys(this._players).length,"latency"]),clearTimeout(this._pingTimer),this._pingTimer=setTimeout(this._ping.bind(this),this._pingInterval)}_handleMessage({data:e}){let t,i;try{[t,i]=JSON.parse(e)}catch(o){console.log("unsupported socket message",e)}switch(t){case"getGamestate":this.sendGamestate(i);break;case"edition":this._updateEdition(i);break;case"fabled":this._updateFabled(i);break;case"gs":this._updateGamestate(i);break;case"player":this._updatePlayer(i);break;case"claim":this._updateSeat(i);break;case"ping":this._handlePing(i);break;case"nomination":if(!this._isSpectator)return;i||this._store.commit("session/addHistory",this._store.state.players.players),this._store.commit("session/nomination",{nomination:i});break;case"swap":if(!this._isSpectator)return;this._store.commit("players/swap",i);break;case"move":if(!this._isSpectator)return;this._store.commit("players/move",i);break;case"remove":if(!this._isSpectator)return;this._store.commit("players/remove",i);break;case"marked":if(!this._isSpectator)return;this._store.commit("session/setMarkedPlayer",i);break;case"isNight":if(!this._isSpectator)return;this._store.commit("toggleNight",i);break;case"isVoteHistoryAllowed":if(!this._isSpectator)return;this._store.commit("session/setVoteHistoryAllowed",i),this._store.commit("session/clearVoteHistory");break;case"votingSpeed":if(!this._isSpectator)return;this._store.commit("session/setVotingSpeed",i);break;case"clearVoteHistory":if(!this._isSpectator)return;this._store.commit("session/clearVoteHistory");break;case"isVoteInProgress":if(!this._isSpectator)return;this._store.commit("session/setVoteInProgress",i);break;case"vote":this._handleVote(i);break;case"lock":this._handleLock(i);break;case"bye":this._handleBye(i);break;case"pronouns":this._updatePlayerPronouns(i);break}}connect(e){this._store.state.session.playerId||this._store.commit("session/setPlayerId",Math.random().toString(36).substr(2)),this._pings={},this._store.commit("session/setPlayerCount",0),this._store.commit("session/setPing",0),this._isSpectator=this._store.state.session.isSpectator,this._open(e)}disconnect(){this._pings={},this._store.commit("session/setPlayerCount",0),this._store.commit("session/setPing",0),this._store.commit("session/setReconnecting",!1),clearTimeout(this._reconnectTimer),this._socket&&(this._isSpectator&&this._sendDirect("host","bye",this._store.state.session.playerId),this._socket.close(1e3),this._socket=null)}sendGamestate(e="",t=!1){if(!this._isSpectator)if(this._gamestate=this._store.state.players.players.map(e=>({name:e.name,id:e.id,isDead:e.isDead,isVoteless:e.isVoteless,pronouns:e.pronouns,...e.role&&"traveler"===e.role.team?{roleId:e.role.id}:{}})),t)this._sendDirect(e,"gs",{gamestate:this._gamestate,isLightweight:t});else{const{session:t,grimoire:i}=this._store.state,{fabled:o}=this._store.state.players;this.sendEdition(e),this._sendDirect(e,"gs",{gamestate:this._gamestate,isNight:i.isNight,isVoteHistoryAllowed:t.isVoteHistoryAllowed,nomination:t.nomination,votingSpeed:t.votingSpeed,lockedVote:t.lockedVote,isVoteInProgress:t.isVoteInProgress,markedPlayer:t.markedPlayer,fabled:o.map(e=>e.isCustom?e:{id:e.id}),...t.nomination?{votes:t.votes}:{}})}}_updateGamestate(e){if(!this._isSpectator)return;const{gamestate:t,isLightweight:i,isNight:o,isVoteHistoryAllowed:s,nomination:a,votingSpeed:n,votes:r,lockedVote:l,isVoteInProgress:h,markedPlayer:c,fabled:d}=e,m=this._store.state.players.players;if(m.lengtht.length)for(let p=m.length;p>t.length;p--)this._store.commit("players/remove",p-1);t.forEach((e,t)=>{const i=m[t],{roleId:o}=e;if(["name","id","isDead","isVoteless","pronouns"].forEach(t=>{const o=e[t];i[t]!==o&&this._store.commit("players/update",{player:i,property:t,value:o})}),o&&i.role.id!==o){const e=this._store.state.roles.get(o)||this._store.getters.rolesJSONbyId.get(o);e&&this._store.commit("players/update",{player:i,property:"role",value:e})}else o||"traveler"!==i.role.team||this._store.commit("players/update",{player:i,property:"role",value:{}})}),i||(this._store.commit("toggleNight",!!o),this._store.commit("session/setVoteHistoryAllowed",s),this._store.commit("session/nomination",{nomination:a,votes:r,votingSpeed:n,lockedVote:l,isVoteInProgress:h}),this._store.commit("session/setMarkedPlayer",c),this._store.commit("players/setFabled",{fabled:d.map(e=>this._store.state.fabled.get(e.id)||e)}))}sendEdition(e=""){if(this._isSpectator)return;const{edition:t}=this._store.state;let i;t.isOfficial||(i=this._store.getters.customRolesStripped),this._sendDirect(e,"edition",{edition:t.isOfficial?{id:t.id}:t,...i?{roles:i}:{}})}_updateEdition({edition:e,roles:t}){if(this._isSpectator&&(this._store.commit("setEdition",e),t&&(this._store.commit("setCustomRoles",t),this._store.state.roles.size!==t.length))){const e=[];t.forEach(({id:t})=>{this._store.state.roles.get(t)||e.push(t)}),alert("This session contains custom characters that can't be found. Please load them before joining! Missing roles: "+e.join(", ")),this.disconnect(),this._store.commit("toggleModal","edition")}}sendFabled(){if(this._isSpectator)return;const{fabled:e}=this._store.state.players;this._send("fabled",e.map(e=>e.isCustom?e:{id:e.id}))}_updateFabled(e){this._isSpectator&&this._store.commit("players/setFabled",{fabled:e.map(e=>this._store.state.fabled.get(e.id)||e)})}sendPlayer({player:e,property:t,value:i}){if(this._isSpectator||"reminders"===t)return;const o=this._store.state.players.players.indexOf(e);"role"===t?i.team&&"traveler"===i.team?(this._gamestate[o].roleId=i.id,this._send("player",{index:o,property:t,value:i.id})):this._gamestate[o].roleId&&(delete this._gamestate[o].roleId,this._send("player",{index:o,property:t,value:""})):this._send("player",{index:o,property:t,value:i})}_updatePlayer({index:e,property:t,value:i}){if(!this._isSpectator)return;const o=this._store.state.players.players[e];if(o)if("role"===t)if(i||"traveler"!==o.role.team){const e=this._store.state.roles.get(i)||this._store.getters.rolesJSONbyId.get(i)||{};this._store.commit("players/update",{player:o,property:"role",value:e})}else this._store.commit("players/update",{player:o,property:"role",value:{}});else this._store.commit("players/update",{player:o,property:t,value:i})}sendPlayerPronouns({player:e,value:t,isFromSockets:i}){if(i||this._isSpectator&&this._store.state.session.playerId!==e.id)return;const o=this._store.state.players.players.indexOf(e);this._send("pronouns",[o,t])}_updatePlayerPronouns([e,t]){const i=this._store.state.players.players[e];this._store.commit("players/update",{player:i,property:"pronouns",value:t,isFromSockets:!0})}_handlePing([e=0,t]=[]){const i=(new Date).getTime();if(this._isSpectator)t&&this._store.commit("session/setPing",parseInt(t,10));else{for(let e in this._players)i-this._players[e]>2*this._pingInterval&&(delete this._players[e],delete this._pings[e]);if(this._store.state.players.players.forEach(e=>{e.id&&!this._players[e.id]&&this._store.commit("players/update",{player:e,property:"id",value:""})}),e){this._players[e]=i;const o=parseInt(t,10);if(o&&o>0&&o<3e4){this._pings[e]=o;const t=Object.values(this._pings);this._store.commit("session/setPing",Math.round(t.reduce((e,t)=>e+t,0)/t.length))}}}this._isSpectator&&!e||this._store.commit("session/setPlayerCount",this._isSpectator?e:Object.keys(this._players).length)}_handleBye(e){this._isSpectator||(delete this._players[e],this._store.commit("session/setPlayerCount",Object.keys(this._players).length))}claimSeat(e){if(!this._isSpectator)return;const t=this._store.state.players.players;t.length>e&&(e<0||!t[e].id)&&this._send("claim",[e,this._store.state.session.playerId])}_updateSeat([e,t]){if(this._isSpectator)return;const i="id",o=this._store.state.players.players,s=o.findIndex(({id:e})=>e===t);if(s>=0&&s!==e&&this._store.commit("players/update",{player:o[s],property:i,value:""}),e>=0){const s=o[e];if(!s)return;this._store.commit("players/update",{player:s,property:i,value:t})}this._handlePing([!0,t,0])}distributeRoles(){if(this._isSpectator)return;const e={};this._store.state.players.players.forEach((t,i)=>{t.id&&t.role&&(e[t.id]=["player",{index:i,property:"role",value:t.role.id}])}),Object.keys(e).length&&this._send("direct",e)}nomination(e){if(this._isSpectator)return;const t=e&&e.nomination||e,i=this._store.state.players.players;(!t||i.length>t[0]&&i.length>t[1])&&(this.setVotingSpeed(this._store.state.session.votingSpeed),this._send("nomination",t))}setVoteInProgress(){this._isSpectator||this._send("isVoteInProgress",this._store.state.session.isVoteInProgress)}setIsNight(){this._isSpectator||this._send("isNight",this._store.state.grimoire.isNight)}setVoteHistoryAllowed(){this._isSpectator||this._send("isVoteHistoryAllowed",this._store.state.session.isVoteHistoryAllowed)}setVotingSpeed(e){this._isSpectator||e&&this._send("votingSpeed",e)}setMarked(e){this._isSpectator||this._send("marked",e)}clearVoteHistory(){this._isSpectator||this._send("clearVoteHistory")}vote([e]){const t=this._store.state.players.players[e];this._store.state.session.playerId!==t.id&&this._isSpectator||this._send("vote",[e,this._store.state.session.votes[e],!this._isSpectator])}_handleVote([e,t,i]){const{session:o,players:s}=this._store.state,a=s.players.length,n=(e-1+a-o.nomination[1])%a;(i||n>=o.lockedVote-1)&&this._store.commit("session/vote",[e,t])}lockVote(){if(this._isSpectator)return;const{lockedVote:e,votes:t,nomination:i}=this._store.state.session,{players:o}=this._store.state.players,s=(i[1]+e-1)%o.length;this._send("lock",[this._store.state.session.lockedVote,t[s]])}_handleLock([e,t]){if(this._isSpectator&&(this._store.commit("session/lockVote",e),e>1)){const{lockedVote:e,nomination:i}=this._store.state.session,{players:o}=this._store.state.players,s=(i[1]+e-1)%o.length;this._store.state.session.votes[s]!==t&&this._store.commit("session/vote",[s,t])}}swapPlayer(e){this._isSpectator||this._send("swap",e)}movePlayer(e){this._isSpectator||this._send("move",e)}removePlayer(e){this._isSpectator||this._send("remove",e)}}var kt=e=>{const t=new vt(e);e.subscribe(({type:e,payload:i},o)=>{switch(e){case"session/setSessionId":o.session.sessionId?t.connect(o.session.sessionId):(window.location.hash="",t.disconnect());break;case"session/claimSeat":t.claimSeat(i);break;case"session/distributeRoles":i&&t.distributeRoles();break;case"session/nomination":case"session/setNomination":t.nomination(i);break;case"session/setVoteInProgress":t.setVoteInProgress(i);break;case"session/voteSync":t.vote(i);break;case"session/lockVote":t.lockVote();break;case"session/setVotingSpeed":t.setVotingSpeed(i);break;case"session/clearVoteHistory":t.clearVoteHistory();break;case"session/setVoteHistoryAllowed":t.setVoteHistoryAllowed();break;case"toggleNight":t.setIsNight();break;case"setEdition":t.sendEdition();break;case"players/setFabled":t.sendFabled();break;case"session/setMarkedPlayer":t.setMarked(i);break;case"players/swap":t.swapPlayer(i);break;case"players/move":t.movePlayer(i);break;case"players/remove":t.removePlayer(i);break;case"players/set":case"players/clear":case"players/add":t.sendGamestate("",!0);break;case"players/update":"pronouns"===i.property?t.sendPlayerPronouns(i):t.sendPlayer(i);break}});const i=window.location.hash.substr(1);i&&(e.commit("session/setSpectator",!0),e.commit("session/setSessionId",i),e.commit("toggleGrimoire",!1))};const wt={name:"",id:"",role:{},reminders:[],isVoteless:!1,isDead:!1,pronouns:""},Nt=()=>({players:[],fabled:[],bluffs:[]}),_t={alive({players:e}){return e.filter(e=>!e.isDead).length},nonTravelers({players:e}){const t=e.filter(e=>"traveler"!==e.role.team);return Math.min(t.length,15)},nightOrder({players:e,fabled:t}){const i=[0],o=[0];e.forEach(({role:e})=>{e.firstNight&&!i.includes(e.firstNight)&&i.push(e.firstNight),e.otherNight&&!o.includes(e.otherNight)&&o.push(e.otherNight)}),t.forEach(e=>{e.firstNight&&!i.includes(e.firstNight)&&i.push(e.firstNight),e.otherNight&&!o.includes(e.otherNight)&&o.push(e.otherNight)}),i.sort((e,t)=>e-t),o.sort((e,t)=>e-t);const s=new Map;return e.forEach(e=>{const t=Math.max(i.indexOf(e.role.firstNight),0),a=Math.max(o.indexOf(e.role.otherNight),0);s.set(e,{first:t,other:a})}),t.forEach(e=>{const t=Math.max(i.indexOf(e.firstNight),0),a=Math.max(o.indexOf(e.otherNight),0);s.set(e,{first:t,other:a})}),s}},St={randomize({state:e,commit:t}){const i=e.players.map(e=>[Math.random(),e]).sort((e,t)=>e[0]-t[0]).map(e=>e[1]);t("set",i)},clearRoles({state:e,commit:t,rootState:i}){let o;i.session.isSpectator?o=e.players.map(e=>("traveler"!==e.role.team&&(e.role={}),e.reminders=[],e)):(o=e.players.map(({name:e,id:t,pronouns:i})=>({...wt,name:e,id:t,pronouns:i})),t("setFabled",{fabled:[]})),t("set",o),t("setBluff")}},Rt={clear(e){e.players=[],e.bluffs=[],e.fabled=[]},set(e,t=[]){e.players=t},update(e,{player:t,property:i,value:o}){const s=e.players.indexOf(t);s>=0&&(e.players[s][i]=o)},add(e,t){e.players.push({...wt,name:t})},remove(e,t){e.players.splice(t,1)},swap(e,[t,i]){[e.players[t],e.players[i]]=[e.players[i],e.players[t]],e.players.splice(0,0)},move(e,[t,i]){e.players.splice(i,0,e.players.splice(t,1)[0])},setBluff(e,{index:t,role:i}={}){void 0!==t?e.bluffs.splice(t,1,i):e.bluffs=[]},setFabled(e,{index:t,fabled:i}={}){void 0!==t?e.fabled.splice(t,1):i&&(Array.isArray(i)?e.fabled=i:e.fabled.push(i))}};var xt={namespaced:!0,state:Nt,getters:_t,actions:St,mutations:Rt};const It=(e,[t,i])=>{e.nomination&&(e.votes=[...e.votes],e.votes[t]=void 0===i?!e.votes[t]:i)},Mt=()=>({sessionId:"",isSpectator:!1,isReconnecting:!1,playerCount:0,ping:0,playerId:"",claimedSeat:-1,nomination:!1,votes:[],lockedVote:0,votingSpeed:3e3,isVoteInProgress:!1,voteHistory:[],markedPlayer:-1,isVoteHistoryAllowed:!0,isRolesDistributed:!1}),Tt={},Ot={},Ct=e=>(t,i)=>{t[e]=i},Pt={setPlayerId:Ct("playerId"),setSpectator:Ct("isSpectator"),setReconnecting:Ct("isReconnecting"),setPlayerCount:Ct("playerCount"),setPing:Ct("ping"),setVotingSpeed:Ct("votingSpeed"),setVoteInProgress:Ct("isVoteInProgress"),setMarkedPlayer:Ct("markedPlayer"),setNomination:Ct("nomination"),setVoteHistoryAllowed:Ct("isVoteHistoryAllowed"),claimSeat:Ct("claimedSeat"),distributeRoles:Ct("isRolesDistributed"),setSessionId(e,t){e.sessionId=t.toLocaleLowerCase().replace(/[^0-9a-z]/g,"").substr(0,10)},nomination(e,{nomination:t,votes:i,votingSpeed:o,lockedVote:s,isVoteInProgress:a}={}){e.nomination=t||!1,e.votes=i||[],e.votingSpeed=o||e.votingSpeed,e.lockedVote=s||0,e.isVoteInProgress=a||!1},addHistory(e,t){if(!e.isVoteHistoryAllowed&&e.isSpectator)return;if(!e.nomination||e.lockedVote<=t.length)return;const i="traveler"===t[e.nomination[1]].role.team;e.voteHistory.push({timestamp:new Date,nominator:t[e.nomination[0]].name,nominee:t[e.nomination[1]].name,type:i?"Exile":"Execution",majority:Math.ceil(t.filter(e=>!e.isDead||i).length/2),votes:t.filter((t,i)=>e.votes[i]).map(({name:e})=>e)})},clearVoteHistory(e){e.voteHistory=[]},vote:It,voteSync:It,lockVote(e,t){e.lockedVote=void 0!==t?t:e.lockedVote+1}};var Dt={namespaced:!0,state:Mt,getters:Tt,actions:Ot,mutations:Pt},Et=i("b1d9"),Vt=i("b249"),jt=i("c825");o["a"].use(n["a"]);const $t=(e=ge[0])=>new Map(Et.filter(t=>t.edition===e.id||e.roles.includes(t.id)).sort((e,t)=>t.team.localeCompare(e.team)).map(e=>[e.id,e])),At=(e=ge[0])=>new Map(Et.filter(t=>"traveler"===t.team&&t.edition!==e.id&&!e.roles.includes(t.id)).map(e=>[e.id,e])),Gt=e=>({grimoire:t},i)=>{t[e]=i},Ht=e=>({grimoire:t},i)=>{t[e]=!0===i||!1===i?i:!t[e]},Ft=e=>e.toLocaleLowerCase().replace(/[^a-z0-9]/g,""),Lt=new Map(ge.map(e=>[e.id,e])),Bt=new Map(Et.map(e=>[e.id,e])),zt=new Map(Vt.map(e=>[e.id,e]));let Wt={};try{Wt=new Map(jt.map(({id:e,hatred:t})=>[Ft(e),new Map(t.map(({id:e,reason:t})=>[Ft(e),t]))]))}catch(ei){console.error("couldn't load jinxes",ei)}const Yt={id:"",name:"",image:"",ability:"",edition:"custom",firstNight:0,firstNightReminder:"",otherNight:0,otherNightReminder:"",reminders:[],remindersGlobal:[],setup:!1,team:"townsfolk",isCustom:!0};var Jt=new n["a"].Store({modules:{players:xt,session:Dt},state:{grimoire:{isNight:!1,isNightOrder:!0,isPublic:!0,isMenuOpen:!1,isStatic:!1,isMuted:!1,isImageOptIn:!1,zoom:0,background:""},modals:{edition:!1,fabled:!1,gameState:!1,nightOrder:!1,reference:!1,reminder:!1,role:!1,roles:!1,voteHistory:!1},edition:Lt.get("tb"),roles:$t(),otherTravelers:At(),fabled:zt,jinxes:Wt},getters:{customRolesStripped:({roles:e})=>{const t=[],i=Object.keys(Yt),o=["firstNightReminder","otherNightReminder","isCustom"];return e.forEach(e=>{if(e.isCustom){const s={};for(let t in e){if(o.includes(t))continue;const a=e[t];i.includes(t)&&a!==Yt[t]&&(s[i.indexOf(t)]=a)}t.push(s)}else t.push({id:e.id})}),t},rolesJSONbyId:()=>Bt},mutations:{setZoom:Gt("zoom"),setBackground:Gt("background"),toggleMuted:Ht("isMuted"),toggleMenu:Ht("isMenuOpen"),toggleNightOrder:Ht("isNightOrder"),toggleStatic:Ht("isStatic"),toggleNight:Ht("isNight"),toggleGrimoire:Ht("isPublic"),toggleImageOptIn:Ht("isImageOptIn"),toggleModal({modals:e},t){t&&(e[t]=!e[t]);for(let i in e)i!==t&&(e[i]=!1)},setCustomRoles(e,t){const i=t.map(e=>{if(e[0]){const t=Object.keys(Yt),i={};for(let o in e)t[o]&&(i[t[o]]=e[o]);return i}return e}).map(e=>(e.id=Ft(e.id),e)).map(t=>Bt.get(t.id)||e.roles.get(t.id)||Object.assign({},Yt,t)).map(e=>(Bt.get(e.id)||(e.imageAlt={townsfolk:"good",outsider:"outsider",minion:"minion",demon:"evil",fabled:"fabled"}[e.team]||"custom",e.firstNight=Math.abs(e.firstNight),e.otherNight=Math.abs(e.otherNight)),e)).filter(e=>e.name&&e.ability&&e.team).sort((e,t)=>t.team.localeCompare(e.team));e.roles=new Map(i.filter(e=>"fabled"!==e.team).map(e=>[e.id,e])),e.fabled=new Map([...i.filter(e=>"fabled"===e.team).map(e=>[e.id,e]),...Vt.map(e=>[e.id,e])]),e.otherTravelers=new Map(Et.filter(e=>"traveler"===e.team&&!t.some(t=>t.id===e.id)).map(e=>[e.id,e]))},setEdition(e,t){Lt.has(t.id)?(e.edition=Lt.get(t.id),e.roles=$t(e.edition),e.otherTravelers=At(e.edition)):e.edition=t,e.modals.edition=!1}},plugins:[bt.a,kt]}),Ut=i("ecee"),qt=i("c074"),Kt=i("f2d1"),Zt=i("ad3d");const Qt=["AddressCard","BookOpen","BookDead","BroadcastTower","Chair","CheckSquare","CloudMoon","Cog","Copy","Dice","Dragon","ExchangeAlt","ExclamationTriangle","FileCode","FileUpload","HandPaper","HandPointRight","Heartbeat","Image","Link","MinusCircle","PeopleArrows","PlusCircle","Question","Random","RedoAlt","SearchMinus","SearchPlus","Skull","Square","TheaterMasks","Times","TimesCircle","TrashAlt","Undo","User","UserEdit","UserFriends","Users","VenusMars","VolumeUp","VolumeMute","VoteYea","WindowMaximize","WindowMinimize"],Xt=["Github","Discord"];Ut["c"].add(...Qt.map(e=>qt["a"]["fa"+e]),...Xt.map(e=>Kt["a"]["fa"+e])),o["a"].component("font-awesome-icon",Zt["a"]),o["a"].config.productionTip=!1,new o["a"]({render:e=>e(ft),store:Jt}).$mount("#app")},5720:function(e,t,i){"use strict";i("50d1")},5740:function(e,t,i){e.exports=i.p+"img/riot.a2890eee.png"},"5b44":function(e,t,i){e.exports=i.p+"img/fabled.227b24f9.png"},"5bd9":function(e,t,i){e.exports=i.p+"img/cannibal.54808c1a.png"},"5c0b":function(e,t,i){"use strict";i("9c0c")},"5c56":function(e,t,i){e.exports=i.p+"img/duchess.f8361787.png"},"5c8e":function(e,t,i){e.exports=i.p+"img/goblin.ec4fe0e0.png"},"5cf2":function(e,t,i){e.exports=i.p+"img/x.d2209023.png"},"5f4e":function(e,t,i){e.exports=i.p+"img/tb-minion.b01c557e.png"},"61b0":function(e,t,i){var o={"./acrobat.png":"887b","./alchemist.png":"dbe8","./alhadikhia.png":"9989","./amnesiac.png":"043b","./angel.png":"bfe2","./apprentice.png":"4bea","./artist.png":"2cd0","./assassin.png":"9187","./atheist.png":"ca7a","./balloonist.png":"65db","./barber.png":"fcc6","./barista.png":"027a","./baron.png":"24d3","./beggar.png":"cfcc","./bishop.png":"8030","./bonecollector.png":"23b1","./boomdandy.png":"aae9","./bountyhunter.png":"899d","./buddhist.png":"1d01","./bureaucrat.png":"25f6","./butcher.png":"37dd","./butler.png":"64fe","./cannibal.png":"5bd9","./cerenovus.png":"0436","./chambermaid.png":"125e","./chef.png":"1e83","./choirboy.png":"d6bc","./clockmaker.png":"f93f","./courtier.png":"ee02","./cultleader.png":"398f","./custom.png":"fd83","./damsel.png":"72d7","./deusexfiasco.png":"9002","./deviant.png":"3b65","./devilsadvocate.png":"cd8b","./djinn.png":"e222","./doomsayer.png":"659f","./dreamer.png":"71b8","./drunk.png":"d97d","./duchess.png":"5c56","./empath.png":"bb7a","./engineer.png":"ea17","./evil.png":"c24f","./eviltwin.png":"e014","./exorcist.png":"5072","./fabled.png":"5b44","./fanggu.png":"6ac0","./farmer.png":"7a7f","./fearmonger.png":"d69f","./fibbin.png":"6eb1","./fiddler.png":"64be","./fisherman.png":"c5db","./flowergirl.png":"66ae","./fool.png":"4720","./fortuneteller.png":"43e8","./gambler.png":"dce6","./gangster.png":"97c6","./general.png":"ac9c","./goblin.png":"5c8e","./godfather.png":"99d0","./golem.png":"4eb3","./good.png":"667e","./goon.png":"55aa","./gossip.png":"cadc","./grandmother.png":"c9f5","./gunslinger.png":"ee92","./harlot.png":"559e","./hellslibrarian.png":"a367","./heretic.png":"5626","./huntsman.png":"1923","./imp.png":"3e70","./innkeeper.png":"663c","./investigator.png":"b570","./judge.png":"f09b","./juggler.png":"65ab","./king.png":"9639","./klutz.png":"adfc","./legion.png":"da81","./leviathan.png":"2b04","./librarian.png":"4d73","./lilmonsta.png":"c492","./lleech.png":"9f74","./lunatic.png":"0b61","./lycanthrope.png":"c316","./magician.png":"ab3c","./marionette.png":"e69f","./mastermind.png":"f834","./mathematician.png":"8888","./matron.png":"b1cb","./mayor.png":"b223","./mephit.png":"df5e","./mezepheles.png":"c7b7","./minion.png":"75bc","./minstrel.png":"4efd","./monk.png":"6741","./moonchild.png":"3f65","./mutant.png":"17ad","./nightwatchman.png":"3cd8","./noble.png":"f7d3","./nodashii.png":"68a4","./oracle.png":"0c12","./outsider.png":"2490","./pacifist.png":"fff1","./philosopher.png":"3603","./pithag.png":"7f07","./pixie.png":"a7b6","./plus.png":"160b","./po.png":"c73a","./poisoner.png":"f282","./politician.png":"07ab","./poppygrower.png":"3273","./preacher.png":"2094","./professor.png":"b30c","./psychopath.png":"fcdb","./pukka.png":"a6a2","./puzzlemaster.png":"27a3","./ravenkeeper.png":"0c59","./recluse.png":"177d","./revolutionary.png":"aa2d","./riot.png":"5740","./sage.png":"30b6","./sailor.png":"223c","./saint.png":"6936","./savant.png":"d715","./scapegoat.png":"327a","./scarletwoman.png":"f322","./seamstress.png":"ac7c","./sentinel.png":"af68","./shabaloth.png":"0b29","./slayer.png":"d62b","./snakecharmer.png":"4021","./snitch.png":"b7e8","./soldier.png":"4e76","./spiritofivory.png":"0d06","./spy.png":"ec1e","./stormcatcher.png":"a4c2","./sweetheart.png":"f1e5","./tealady.png":"ba9b","./thief.png":"9ce3","./tinker.png":"9f7e","./towncrier.png":"38a5","./toymaker.png":"39eb","./undertaker.png":"0e20","./vigormortis.png":"f4bd","./virgin.png":"eff4","./vortox.png":"3a43","./voudon.png":"a710","./washerwoman.png":"013f","./widow.png":"22c9","./witch.png":"f558","./x.png":"5cf2","./zombuul.png":"20ca"};function s(e){var t=a(e);return i(t)}function a(e){if(!i.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}s.keys=function(){return Object.keys(o)},s.resolve=a,e.exports=s,s.id="61b0"},"634a":function(e){e.exports=JSON.parse('[{"townsfolk":3,"outsider":0,"minion":1,"demon":1},{"townsfolk":3,"outsider":1,"minion":1,"demon":1},{"townsfolk":5,"outsider":0,"minion":1,"demon":1},{"townsfolk":5,"outsider":1,"minion":1,"demon":1},{"townsfolk":5,"outsider":2,"minion":1,"demon":1},{"townsfolk":7,"outsider":0,"minion":2,"demon":1},{"townsfolk":7,"outsider":1,"minion":2,"demon":1},{"townsfolk":7,"outsider":2,"minion":2,"demon":1},{"townsfolk":9,"outsider":0,"minion":3,"demon":1},{"townsfolk":9,"outsider":1,"minion":3,"demon":1},{"townsfolk":9,"outsider":2,"minion":3,"demon":1}]')},"64be":function(e,t,i){e.exports=i.p+"img/fiddler.d1730aaa.png"},"64fe":function(e,t,i){e.exports=i.p+"img/butler.f4fd1640.png"},"659f":function(e,t,i){e.exports=i.p+"img/doomsayer.7ddbe262.png"},"65ab":function(e,t,i){e.exports=i.p+"img/juggler.819f88b8.png"},"65c0":function(e,t,i){},"65db":function(e,t,i){e.exports=i.p+"img/balloonist.c35c6644.png"},"663c":function(e,t,i){e.exports=i.p+"img/innkeeper.da072f0d.png"},"667e":function(e,t,i){e.exports=i.p+"img/good.daf3b560.png"},"66ae":function(e,t,i){e.exports=i.p+"img/flowergirl.6196eef9.png"},6741:function(e,t,i){e.exports=i.p+"img/monk.ff81aec2.png"},"68a4":function(e,t,i){e.exports=i.p+"img/nodashii.5220cac3.png"},6936:function(e,t,i){e.exports=i.p+"img/saint.b7a15b85.png"},"6ac0":function(e,t,i){e.exports=i.p+"img/fanggu.8fbd2e39.png"},"6b1e":function(e,t,i){},"6eb1":function(e,t,i){e.exports=i.p+"img/fibbin.9f01eb47.png"},"70ae":function(e,t,i){},"71b8":function(e,t,i){e.exports=i.p+"img/dreamer.fe5645e1.png"},"72d7":function(e,t,i){e.exports=i.p+"img/damsel.040c275d.png"},"73a1":function(e,t,i){e.exports=i.p+"img/tb-outsider.9ae6ef1b.png"},"740e":function(e,t,i){"use strict";i("f344")},7496:function(e,t,i){e.exports=i.p+"img/bmr.1d06ca78.png"},"74c9":function(e,t,i){"use strict";i("9fd8")},"75bc":function(e,t,i){e.exports=i.p+"img/minion.e02a5c96.png"},"7a7f":function(e,t,i){e.exports=i.p+"img/farmer.1534709d.png"},"7b43":function(e,t,i){},"7f07":function(e,t,i){e.exports=i.p+"img/pithag.9bdfc5a3.png"},8030:function(e,t,i){e.exports=i.p+"img/bishop.1f25f092.png"},8781:function(e,t,i){"use strict";i("6b1e")},"887b":function(e,t,i){e.exports=i.p+"img/acrobat.be49ceac.png"},8888:function(e,t,i){e.exports=i.p+"img/mathematician.cc67c625.png"},8970:function(e,t,i){"use strict";i("c0b6")},"899d":function(e,t,i){e.exports=i.p+"img/bountyhunter.b208dc71.png"},"8e72":function(e,t,i){"use strict";i("70ae")},"8e93":function(e,t,i){"use strict";i("42ed")},9002:function(e,t,i){e.exports=i.p+"img/deusexfiasco.96e5d2eb.png"},9187:function(e,t,i){e.exports=i.p+"img/assassin.ae0f2fba.png"},9224:function(e){e.exports=JSON.parse('{"a":"2.15.3"}')},"92d8":function(e,t,i){e.exports=i.p+"img/luf.8e16a6e6.png"},9639:function(e,t,i){e.exports=i.p+"img/king.3f722bb8.png"},"97c6":function(e,t,i){e.exports=i.p+"img/gangster.72167674.png"},9989:function(e,t,i){e.exports=i.p+"img/alhadikhia.1d64887e.png"},"99d0":function(e,t,i){e.exports=i.p+"img/godfather.d64b901e.png"},"9c0c":function(e,t,i){},"9ce3":function(e,t,i){e.exports=i.p+"img/thief.04afd5e0.png"},"9f74":function(e,t,i){e.exports=i.p+"img/lleech.da66feee.png"},"9f7e":function(e,t,i){e.exports=i.p+"img/tinker.ce44bde6.png"},"9fd8":function(e,t,i){},a367:function(e,t,i){e.exports=i.p+"img/hellslibrarian.3df1d423.png"},a3b0:function(e,t,i){e.exports=i.p+"img/tb-demon.0ac8cce6.png"},a4c2:function(e,t,i){e.exports=i.p+"img/stormcatcher.3f5110c6.png"},a6a2:function(e,t,i){e.exports=i.p+"img/pukka.1b1700de.png"},a710:function(e,t,i){e.exports=i.p+"img/voudon.4c0eb80c.png"},a7b6:function(e,t,i){e.exports=i.p+"img/pixie.2db5f1a2.png"},aa2d:function(e,t,i){e.exports=i.p+"img/revolutionary.68827d94.png"},aae9:function(e,t,i){e.exports=i.p+"img/boomdandy.009c74b1.png"},ab3c:function(e,t,i){e.exports=i.p+"img/magician.c1bcf13c.png"},ac7c:function(e,t,i){e.exports=i.p+"img/seamstress.209ed80b.png"},ac9c:function(e,t,i){e.exports=i.p+"img/general.2fc65230.png"},adfc:function(e,t,i){e.exports=i.p+"img/klutz.99df79cb.png"},af68:function(e,t,i){e.exports=i.p+"img/sentinel.93d312eb.png"},b162:function(e,t,i){"use strict";i("e761")},b1cb:function(e,t,i){e.exports=i.p+"img/matron.6e1551e5.png"},b1d9:function(e){e.exports=JSON.parse('[{"id":"washerwoman","name":"Washerwoman","edition":"tb","team":"townsfolk","firstNight":32,"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"],"setup":false,"ability":"You start knowing that 1 of 2 players is a particular Townsfolk."},{"id":"librarian","name":"Librarian","edition":"tb","team":"townsfolk","firstNight":33,"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"],"setup":false,"ability":"You start knowing that 1 of 2 players is a particular Outsider. (Or that zero are in play.)"},{"id":"investigator","name":"Investigator","edition":"tb","team":"townsfolk","firstNight":34,"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"],"setup":false,"ability":"You start knowing that 1 of 2 players is a particular Minion."},{"id":"chef","name":"Chef","edition":"tb","team":"townsfolk","firstNight":35,"firstNightReminder":"Show the finger signal (0, 1, 2, …) for the number of pairs of neighbouring evil players.","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"You start knowing how many pairs of evil players there are."},{"id":"empath","name":"Empath","edition":"tb","team":"townsfolk","firstNight":36,"firstNightReminder":"Show the finger signal (0, 1, 2) for the number of evil alive neighbours of the Empath.","otherNight":53,"otherNightReminder":"Show the finger signal (0, 1, 2) for the number of evil neighbours.","reminders":[],"setup":false,"ability":"Each night, you learn how many of your 2 alive neighbours are evil."},{"id":"fortuneteller","name":"Fortune Teller","edition":"tb","team":"townsfolk","firstNight":37,"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,"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"],"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."},{"id":"undertaker","name":"Undertaker","edition":"tb","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":56,"otherNightReminder":"If a player was executed today: Show that player’s character token.","reminders":["Executed"],"setup":false,"ability":"Each night*, you learn which character died by execution today."},{"id":"monk","name":"Monk","edition":"tb","team":"townsfolk","firstNight":0,"firstNightReminder":"","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"],"setup":false,"ability":"Each night*, choose a player (not yourself): they are safe from the Demon tonight."},{"id":"ravenkeeper","name":"Ravenkeeper","edition":"tb","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":42,"otherNightReminder":"If the Ravenkeeper died tonight: The Ravenkeeper points to a player. Show that player’s character token.","reminders":[],"setup":false,"ability":"If you die at night, you are woken to choose a player: you learn their character."},{"id":"virgin","name":"Virgin","edition":"tb","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":["No ability"],"setup":false,"ability":"The 1st time you are nominated, if the nominator is a Townsfolk, they are executed immediately."},{"id":"slayer","name":"Slayer","edition":"tb","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":["No ability"],"setup":false,"ability":"Once per game, during the day, publicly choose a player: if they are the Demon, they die."},{"id":"soldier","name":"Soldier","edition":"tb","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"You are safe from the Demon."},{"id":"mayor","name":"Mayor","edition":"tb","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"If only 3 players live & no execution occurs, your team wins. If you die at night, another player might die instead."},{"id":"butler","name":"Butler","edition":"tb","team":"outsider","firstNight":38,"firstNightReminder":"The Butler points to a player. Mark that player as \'Master\'.","otherNight":55,"otherNightReminder":"The Butler points to a player. Mark that player as \'Master\'.","reminders":["Master"],"setup":false,"ability":"Each night, choose a player (not yourself): tomorrow, you may only vote if they are voting too."},{"id":"drunk","name":"Drunk","edition":"tb","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"remindersGlobal":["Drunk"],"setup":true,"ability":"You do not know you are the Drunk. You think you are a Townsfolk character, but you are not."},{"id":"recluse","name":"Recluse","edition":"tb","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"You might register as evil & as a Minion or Demon, even if dead."},{"id":"saint","name":"Saint","edition":"tb","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"If you die by execution, your team loses."},{"id":"poisoner","name":"Poisoner","edition":"tb","team":"minion","firstNight":17,"firstNightReminder":"The Poisoner points to a player. That player is poisoned.","otherNight":8,"otherNightReminder":"The previously poisoned player is no longer poisoned. The Poisoner points to a player. That player is poisoned.","reminders":["Poisoned"],"setup":false,"ability":"Each night, choose a player: they are poisoned tonight and tomorrow day."},{"id":"spy","name":"Spy","edition":"tb","team":"minion","firstNight":48,"firstNightReminder":"Show the Grimoire to the Spy for as long as they need.","otherNight":68,"otherNightReminder":"Show the Grimoire to the Spy for as long as they need.","reminders":[],"setup":false,"ability":"Each night, you see the Grimoire. You might register as good & as a Townsfolk or Outsider, even if dead."},{"id":"scarletwoman","name":"Scarlet Woman","edition":"tb","team":"minion","firstNight":0,"firstNightReminder":"","otherNight":20,"otherNightReminder":"If the Scarlet Woman became the Demon today: Show the \'You are\' card, then the demon token.","reminders":["Demon"],"setup":false,"ability":"If there are 5 or more players alive & the Demon dies, you become the Demon. (Travellers don’t count)"},{"id":"baron","name":"Baron","edition":"tb","team":"minion","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":true,"ability":"There are extra Outsiders in play. [+2 Outsiders]"},{"id":"imp","name":"Imp","edition":"tb","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":24,"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"],"setup":false,"ability":"Each night*, choose a player: they die. If you kill yourself this way, a Minion becomes the Imp."},{"id":"bureaucrat","name":"Bureaucrat","edition":"tb","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,"otherNightReminder":"The Bureaucrat points to a player. Put the Bureaucrat\'s \'3 votes\' reminder by the chosen player\'s character token.","reminders":["3 votes"],"setup":false,"ability":"Each night, choose a player (not yourself): their vote counts as 3 votes tomorrow."},{"id":"thief","name":"Thief","edition":"tb","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,"otherNightReminder":"The Thief points to a player. Put the Thief\'s \'Negative vote\' reminder by the chosen player\'s character token.","reminders":["Negative vote"],"setup":false,"ability":"Each night, choose a player (not yourself): their vote counts negatively tomorrow."},{"id":"gunslinger","name":"Gunslinger","edition":"tb","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"Each day, after the 1st vote has been tallied, you may choose a player that voted: they die."},{"id":"scapegoat","name":"Scapegoat","edition":"tb","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"If a player of your alignment is executed, you might be executed instead."},{"id":"beggar","name":"Beggar","edition":"tb","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"You must use a vote token to vote. Dead players may choose to give you theirs. If so, you learn their alignment."},{"id":"grandmother","name":"Grandmother","edition":"bmr","team":"townsfolk","firstNight":39,"firstNightReminder":"Show the marked character token. Point to the marked player.","otherNight":50,"otherNightReminder":"If the Grandmother’s grandchild was killed by the Demon tonight: The Grandmother dies.","reminders":["Grandchild"],"setup":false,"ability":"You start knowing a good player & their character. If the Demon kills them, you die too."},{"id":"sailor","name":"Sailor","edition":"bmr","team":"townsfolk","firstNight":10,"firstNightReminder":"The Sailor points to a living player. Either the Sailor, or the chosen player, is drunk.","otherNight":4,"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"],"setup":false,"ability":"Each night, choose an alive player: either you or they are drunk until dusk. You can\'t die."},{"id":"chambermaid","name":"Chambermaid","edition":"bmr","team":"townsfolk","firstNight":50,"firstNightReminder":"The Chambermaid points to two players. Show the number signal (0, 1, 2, …) for how many of those players wake tonight for their ability.","otherNight":70,"otherNightReminder":"The Chambermaid points to two players. Show the number signal (0, 1, 2, …) for how many of those players wake tonight for their ability.","reminders":[],"setup":false,"ability":"Each night, choose 2 alive players (not yourself): you learn how many woke tonight due to their ability."},{"id":"exorcist","name":"Exorcist","edition":"bmr","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":22,"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"],"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."},{"id":"innkeeper","name":"Innkeeper","edition":"bmr","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":9,"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"],"setup":false,"ability":"Each night*, choose 2 players: they can\'t die tonight, but 1 is drunk until dusk."},{"id":"gambler","name":"Gambler","edition":"bmr","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":11,"otherNightReminder":"The Gambler points to a player, and a character on their sheet. If incorrect, the Gambler dies.","reminders":["Dead"],"setup":false,"ability":"Each night*, choose a player & guess their character: if you guess wrong, you die."},{"id":"gossip","name":"Gossip","edition":"bmr","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":47,"otherNightReminder":"If the Gossip’s public statement was true: Choose a player not protected from dying tonight. That player dies.","reminders":["Dead"],"setup":false,"ability":"Each day, you may make a public statement. Tonight, if it was true, a player dies."},{"id":"courtier","name":"Courtier","edition":"bmr","team":"townsfolk","firstNight":19,"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":10,"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"],"setup":false,"ability":"Once per game, at night, choose a character: they are drunk for 3 nights & 3 days."},{"id":"professor","name":"Professor","edition":"bmr","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":45,"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"],"setup":false,"ability":"Once per game, at night*, choose a dead player: if they are a Townsfolk, they are resurrected."},{"id":"minstrel","name":"Minstrel","edition":"bmr","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":["Everyone drunk"],"setup":false,"ability":"When a Minion dies by execution, all other players (except Travellers) are drunk until dusk tomorrow."},{"id":"tealady","name":"Tea Lady","edition":"bmr","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":["Can not die"],"setup":false,"ability":"If both your alive neighbours are good, they can\'t die."},{"id":"pacifist","name":"Pacifist","edition":"bmr","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"Executed good players might not die."},{"id":"fool","name":"Fool","edition":"bmr","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":["No ability"],"setup":false,"ability":"The first time you die, you don\'t."},{"id":"tinker","name":"Tinker","edition":"bmr","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":48,"otherNightReminder":"The Tinker might die.","reminders":["Dead"],"setup":false,"ability":"You might die at any time."},{"id":"moonchild","name":"Moonchild","edition":"bmr","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":49,"otherNightReminder":"If the Moonchild used their ability to target a player today: If that player is good, they die.","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."},{"id":"goon","name":"Goon","edition":"bmr","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":["Drunk"],"setup":false,"ability":"Each night, the 1st player to choose you with their ability is drunk until dusk. You become their alignment."},{"id":"lunatic","name":"Lunatic","edition":"bmr","team":"outsider","firstNight":7,"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’s 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":21,"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":["Attack 1","Attack 2","Attack 3"],"setup":false,"ability":"You think you are a Demon, but you are not. The Demon knows who you are & who you choose at night."},{"id":"godfather","name":"Godfather","edition":"bmr","team":"minion","firstNight":21,"firstNightReminder":"Show each of the Outsider tokens in play.","otherNight":38,"otherNightReminder":"If an Outsider died today: The Godfather points to a player. That player dies.","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. [−1 or +1 Outsider]"},{"id":"devilsadvocate","name":"Devil\'s Advocate","edition":"bmr","team":"minion","firstNight":22,"firstNightReminder":"The Devil’s Advocate points to a living player. That player survives execution tomorrow.","otherNight":14,"otherNightReminder":"The Devil’s Advocate points to a living player, different from the previous night. That player survives execution tomorrow.","reminders":["Survives execution"],"setup":false,"ability":"Each night, choose a living player (different to last night): if executed tomorrow, they don\'t die."},{"id":"assassin","name":"Assassin","edition":"bmr","team":"minion","firstNight":0,"firstNightReminder":"","otherNight":37,"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"],"setup":false,"ability":"Once per game, at night*, choose a player: they die, even if for some reason they could not."},{"id":"mastermind","name":"Mastermind","edition":"bmr","team":"minion","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"If the Demon dies by execution (ending the game), play for 1 more day. If a player is then executed, their team loses."},{"id":"zombuul","name":"Zombuul","edition":"bmr","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":25,"otherNightReminder":"If no-one died during the day: The Zombuul points to a player. That player dies.","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."},{"id":"pukka","name":"Pukka","edition":"bmr","team":"demon","firstNight":28,"firstNightReminder":"The Pukka points to a player. That player is poisoned.","otherNight":26,"otherNightReminder":"The Pukka points to a player. That player is poisoned. The previously poisoned player dies. ","reminders":["Poisoned","Dead"],"setup":false,"ability":"Each night, choose a player: they are poisoned. The previously poisoned player dies then becomes healthy."},{"id":"shabaloth","name":"Shabaloth","edition":"bmr","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":27,"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"],"setup":false,"ability":"Each night*, choose 2 players: they die. A dead player you chose last night might be regurgitated."},{"id":"po","name":"Po","edition":"bmr","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":28,"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"],"setup":false,"ability":"Each night*, you may choose a player: they die. If your last choice was no-one, choose 3 players tonight."},{"id":"apprentice","name":"Apprentice","edition":"bmr","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"],"setup":false,"ability":"On your 1st night, you gain a Townsfolk ability (if good), or a Minion ability (if evil)."},{"id":"matron","name":"Matron","edition":"bmr","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"Each day, you may choose up to 3 sets of 2 players to swap seats. Players may not leave their seats to talk in private."},{"id":"judge","name":"Judge","edition":"bmr","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","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."},{"id":"bishop","name":"Bishop","edition":"bmr","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":["Nominate good","Nominate evil"],"setup":false,"ability":"Only the Storyteller can nominate. At least 1 opposite player must be nominated each day."},{"id":"voudon","name":"Voudon","edition":"bmr","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"Only you and the dead can vote. They don\'t need a vote token to do so. A 50% majority is not required."},{"id":"clockmaker","name":"Clockmaker","edition":"snv","team":"townsfolk","firstNight":40,"firstNightReminder":"Show the hand signal for the number (1, 2, 3, etc.) of places from Demon to closest Minion.","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"You start knowing how many steps from the Demon to its nearest Minion."},{"id":"dreamer","name":"Dreamer","edition":"snv","team":"townsfolk","firstNight":41,"firstNightReminder":"The Dreamer points to a player. Show 1 good and 1 evil character token; one of these is correct.","otherNight":57,"otherNightReminder":"The Dreamer points to a player. Show 1 good and 1 evil character token; one of these is correct.","reminders":[],"setup":false,"ability":"Each night, choose a player (not yourself or Travellers): you learn 1 good and 1 evil character, 1 of which is correct."},{"id":"snakecharmer","name":"Snake Charmer","edition":"snv","team":"townsfolk","firstNight":20,"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":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"],"setup":false,"ability":"Each night, choose an alive player: a chosen Demon swaps characters & alignments with you & is then poisoned."},{"id":"mathematician","name":"Mathematician","edition":"snv","team":"townsfolk","firstNight":51,"firstNightReminder":"Show the hand signal for the number (0, 1, 2, etc.) of players whose ability malfunctioned due to other abilities.","otherNight":71,"otherNightReminder":"Show the hand signal for the number (0, 1, 2, etc.) of players whose ability malfunctioned due to other abilities.","reminders":["Abnormal"],"setup":false,"ability":"Each night, you learn how many players’ abilities worked abnormally (since dawn) due to another character\'s ability."},{"id":"flowergirl","name":"Flowergirl","edition":"snv","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":58,"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"],"setup":false,"ability":"Each night*, you learn if a Demon voted today."},{"id":"towncrier","name":"Town Crier","edition":"snv","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":59,"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"],"setup":false,"ability":"Each night*, you learn if a Minion nominated today."},{"id":"oracle","name":"Oracle","edition":"snv","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":60,"otherNightReminder":"Show the hand signal for the number (0, 1, 2, etc.) of dead evil players.","reminders":[],"setup":false,"ability":"Each night*, you learn how many dead players are evil."},{"id":"savant","name":"Savant","edition":"snv","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"Each day, you may visit the Storyteller to learn 2 things in private: 1 is true & 1 is false."},{"id":"seamstress","name":"Seamstress","edition":"snv","team":"townsfolk","firstNight":42,"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":61,"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"],"setup":false,"ability":"Once per game, at night, choose 2 players (not yourself): you learn if they are the same alignment."},{"id":"philosopher","name":"Philosopher","edition":"snv","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. Or, if the character is in play, place the drunk marker by that player and the Not the Philosopher token by the Philosopher.","otherNight":2,"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. Or, if the character is in play, place the drunk marker by that player and the Not the Philosopher token by the Philosopher.","reminders":["Drunk","Is the Philosopher"],"setup":false,"ability":"Once per game, at night, choose a good character: gain that ability. If this character is in play, they are drunk."},{"id":"artist","name":"Artist","edition":"snv","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":["No ability"],"setup":false,"ability":"Once per game, during the day, privately ask the Storyteller any yes/no question."},{"id":"juggler","name":"Juggler","edition":"snv","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":62,"otherNightReminder":"If today was the Juggler’s first day: Show the hand signal for the number (0, 1, 2, etc.) of \'Correct\' markers. Remove markers.","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."},{"id":"sage","name":"Sage","edition":"snv","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":43,"otherNightReminder":"If the Sage was killed by a Demon: Point to two players, one of which is that Demon.","reminders":[],"setup":false,"ability":"If the Demon kills you, you learn that it is 1 of 2 players."},{"id":"mutant","name":"Mutant","edition":"snv","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"If you are “mad” about being an Outsider, you might be executed."},{"id":"sweetheart","name":"Sweetheart","edition":"snv","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":41,"otherNightReminder":"Choose a player that is drunk.","reminders":["Drunk"],"setup":false,"ability":"When you die, 1 player is drunk from now on."},{"id":"barber","name":"Barber","edition":"snv","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":40,"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"],"setup":false,"ability":"If you died today or tonight, the Demon may choose 2 players (not another Demon) to swap characters."},{"id":"klutz","name":"Klutz","edition":"snv","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"When you learn that you died, publicly choose 1 alive player: if they are evil, your team loses."},{"id":"eviltwin","name":"Evil Twin","edition":"snv","team":"minion","firstNight":23,"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":["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."},{"id":"witch","name":"Witch","edition":"snv","team":"minion","firstNight":24,"firstNightReminder":"The Witch points to a player. If that player nominates tomorrow they die immediately.","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"],"setup":false,"ability":"Each night, choose a player: if they nominate tomorrow, they die. If just 3 players live, you lose this ability."},{"id":"cerenovus","name":"Cerenovus","edition":"snv","team":"minion","firstNight":25,"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":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"],"setup":false,"ability":"Each night, choose a player & a good character: they are “mad” they are this character tomorrow, or might be executed."},{"id":"pithag","name":"Pit-Hag","edition":"snv","team":"minion","firstNight":0,"firstNightReminder":"","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,"ability":"Each night*, choose a player & a character they become (if not-in-play). If a Demon is made, deaths tonight are arbitrary."},{"id":"fanggu","name":"Fang Gu","edition":"snv","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":29,"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"],"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]"},{"id":"vigormortis","name":"Vigormortis","edition":"snv","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":32,"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"],"setup":true,"ability":"Each night*, choose a player: they die. Minions you kill keep their ability & poison 1 Townsfolk neighbour. [−1 Outsider]"},{"id":"nodashii","name":"No Dashii","edition":"snv","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":30,"otherNightReminder":"The No Dashii points to a player. That player dies.","reminders":["Dead","Poisoned"],"setup":false,"ability":"Each night*, choose a player: they die. Your 2 Townsfolk neighbours are poisoned."},{"id":"vortox","name":"Vortox","edition":"snv","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":31,"otherNightReminder":"The Vortox points to a player. That player dies.","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."},{"id":"barista","name":"Barista","edition":"snv","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,"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"],"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."},{"id":"harlot","name":"Harlot","edition":"snv","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":1,"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"],"setup":false,"ability":"Each night*, choose a living player: if they agree, you learn their character, but you both might die."},{"id":"butcher","name":"Butcher","edition":"snv","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"Each day, after the 1st execution, you may nominate again."},{"id":"bonecollector","name":"Bone Collector","edition":"snv","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":1,"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"],"setup":false,"ability":"Once per game, at night, choose a dead player: they regain their ability until dusk."},{"id":"deviant","name":"Deviant","edition":"snv","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"If you were funny today, you cannot die by exile."},{"id":"noble","name":"Noble","edition":"","team":"townsfolk","firstNight":43,"firstNightReminder":"Point to 3 players including one evil player, in no particular order.","otherNight":0,"otherNightReminder":"","reminders":["Seen"],"setup":false,"ability":"You start knowing 3 players, 1 and only 1 of which is evil."},{"id":"bountyhunter","name":"Bounty Hunter","edition":"","team":"townsfolk","firstNight":45,"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":65,"otherNightReminder":"If the known evil player has died, point to another evil player. ","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]"},{"id":"pixie","name":"Pixie","edition":"","team":"townsfolk","firstNight":29,"firstNightReminder":"Show the Pixie 1 in-play Townsfolk character token.","otherNight":0,"otherNightReminder":"","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."},{"id":"general","name":"General","edition":"","team":"townsfolk","firstNight":49,"firstNightReminder":"Show the General thumbs up for good winning, thumbs down for evil winning or thumb to the side for neither.","otherNight":69,"otherNightReminder":"Show the General thumbs up for good winning, thumbs down for evil winning or thumb to the side for neither.","reminders":[],"setup":false,"ability":"Each night, you learn which alignment the Storyteller believes is winning: good, evil, or neither."},{"id":"preacher","name":"Preacher","edition":"","team":"townsfolk","firstNight":14,"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":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"],"setup":false,"ability":"Each night, choose a player: a Minion, if chosen, learns this. All chosen Minions have no ability."},{"id":"king","name":"King","edition":"","team":"townsfolk","firstNight":9,"firstNightReminder":"Wake the Demon, show them the \'This character selected you\' card, show the King token and point to the King player.","otherNight":64,"otherNightReminder":"If there are more dead than living, show the King a character token of a living player.","reminders":[],"setup":false,"ability":"Each night, if the dead outnumber the living, you learn 1 alive character. The Demon knows who you are."},{"id":"balloonist","name":"Balloonist","edition":"","team":"townsfolk","firstNight":44,"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":63,"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","Seen Traveller"],"setup":true,"ability":"Each night, you learn 1 player of each character type, until there are no more types to learn. [+1 Outsider]"},{"id":"cultleader","name":"Cult Leader","edition":"","team":"townsfolk","firstNight":47,"firstNightReminder":"If the cult leader changed alignment, show them the thumbs up good signal of the thumbs down evil signal accordingly.","otherNight":67,"otherNightReminder":"If the cult leader changed alignment, show them the thumbs up good signal of the thumbs down evil signal accordingly.","reminders":[],"setup":false,"ability":"Each night, you become the alignment of an alive neighbour. If all good players choose to join your cult, your team wins."},{"id":"lycanthrope","name":"Lycanthrope","edition":"","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":23,"otherNightReminder":"The Lycanthrope points to a living player: if good, they die and no one else can die tonight.","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."},{"id":"amnesiac","name":"Amnesiac","edition":"","team":"townsfolk","firstNight":12,"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":5,"otherNightReminder":"If the Amnesiac\'s ability causes them to wake tonight: Wake the Amnesiac and run their ability.","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."},{"id":"nightwatchman","name":"Nightwatchman","edition":"","team":"townsfolk","firstNight":46,"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":66,"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"],"setup":false,"ability":"Once per game, at night, choose a player: they learn who you are."},{"id":"engineer","name":"Engineer","edition":"","team":"townsfolk","firstNight":13,"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":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"],"setup":false,"ability":"Once per game, at night, choose which Minions or which Demon is in play."},{"id":"fisherman","name":"Fisherman","edition":"","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":["No ability"],"setup":false,"ability":"Once per game, during the day, visit the Storyteller for some advice to help you win."},{"id":"huntsman","name":"Huntsman","edition":"","team":"townsfolk","firstNight":30,"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":51,"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"],"setup":true,"ability":"Once per game, at night, choose a living player: the Damsel, if chosen, becomes a not-in-play Townsfolk. [+the Damsel]"},{"id":"alchemist","name":"Alchemist","edition":"","team":"townsfolk","firstNight":3,"firstNightReminder":"Show the Alchemist a not-in-play Minion token","otherNight":0,"otherNightReminder":"","reminders":[],"remindersGlobal":["Is the Alchemist"],"setup":false,"ability":"You have a not-in-play Minion ability."},{"id":"farmer","name":"Farmer","edition":"","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":46,"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,"ability":"If you die at night, an alive good player becomes a Farmer."},{"id":"magician","name":"Magician","edition":"","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"The Demon thinks you are a Minion. Minions think you are a Demon."},{"id":"choirboy","name":"Choirboy","edition":"","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":44,"otherNightReminder":"If the King was killed by the Demon, wake the Choirboy and point to the Demon player.","reminders":[],"setup":true,"ability":"If the Demon kills the King, you learn which player is the Demon. [+ the King]"},{"id":"poppygrower","name":"Poppy Grower","edition":"","team":"townsfolk","firstNight":4,"firstNightReminder":"Do not inform the Demon/Minions who each other are","otherNight":3,"otherNightReminder":"If the Poppy Grower has died, show the Minions/Demon who each other are.","reminders":["Evil wakes"],"setup":false,"ability":"Minions & Demons do not know each other. If you die, they learn who each other are that night."},{"id":"atheist","name":"Atheist","edition":"","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":true,"ability":"The Storyteller can break the game rules & if executed, good wins, even if you are dead. [No evil characters]"},{"id":"cannibal","name":"Cannibal","edition":"","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","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":"snitch","name":"Snitch","edition":"","team":"outsider","firstNight":6,"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":"","reminders":[],"setup":false,"ability":"Minions start knowing 3 not-in-play characters."},{"id":"acrobat","name":"Acrobat","edition":"","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":39,"otherNightReminder":"If a good living neighbour is drunk or poisoned, the Acrobat player dies.","reminders":["Dead"],"setup":false,"ability":"Each night*, if either good living neighbour is drunk or poisoned, you die."},{"id":"puzzlemaster","name":"Puzzlemaster","edition":"","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","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."},{"id":"heretic","name":"Heretic","edition":"","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"Whoever wins, loses & whoever loses, wins, even if you are dead."},{"id":"damsel","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":52,"otherNightReminder":"If selected by the Huntsman, wake the Damsel, show \'You are\' card and a not-in-play Townsfolk token.","reminders":["Guess used"],"setup":false,"ability":"All Minions know you are in play. If a Minion publicly guesses you (once), your team loses."},{"id":"golem","name":"Golem","edition":"","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","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."},{"id":"politician","name":"Politician","edition":"","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"If you were the player most responsible for your team losing, you change alignment & win, even if dead."},{"id":"widow","name":"Widow","edition":"","team":"minion","firstNight":18,"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"],"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."},{"id":"fearmonger","name":"Fearmonger","edition":"","team":"minion","firstNight":26,"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":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"],"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."},{"id":"psychopath","name":"Psychopath","edition":"","team":"minion","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"Each day, before nominations, you may publicly choose a player: they die. If executed, you only die if you lose roshambo."},{"id":"goblin","name":"Goblin","edition":"","team":"minion","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":["Claimed"],"setup":false,"ability":"If you publicly claim to be the Goblin when nominated & are executed that day, your team wins."},{"id":"mephit","name":"Mephit","edition":"","team":"minion","firstNight":27,"firstNightReminder":"Show the Mephit their secret word.","otherNight":19,"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"],"setup":false,"ability":"You start knowing a secret word. The 1st good player to say this word becomes evil that night."},{"id":"mezepheles","name":"Mezepheles","edition":"","team":"minion","firstNight":27,"firstNightReminder":"Show the Mezepheles their secret word.","otherNight":19,"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"],"setup":false,"ability":"You start knowing a secret word. The 1st good player to say this word becomes evil that night."},{"id":"marionette","name":"Marionette","edition":"","team":"minion","firstNight":11,"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"],"setup":true,"ability":"You think you are a good character but you are not. The Demon knows who you are. [You neighbour the Demon]"},{"id":"boomdandy","name":"Boomdandy","edition":"","team":"minion","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"If you are executed, all but 3 players die. 1 minute later, the player with the most players pointing at them dies."},{"id":"lilmonsta","name":"Lil\' Monsta","edition":"","team":"demon","firstNight":16,"firstNightReminder":"Wake all Minions together, allow them to vote by pointing at who they want to babysit Lil\' Monsta.","otherNight":36,"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"],"setup":true,"ability":"Each night, Minions choose who babysits Lil\' Monsta\'s token & \\"is the Demon\\". A player dies each night*. [+1 Minion]"},{"id":"lleech","name":"Lleech","edition":"","team":"demon","firstNight":15,"firstNightReminder":"The Lleech points to a player. Place the Poisoned reminder token.","otherNight":35,"otherNightReminder":"The Lleech points to a player. That player dies.","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."},{"id":"alhadikhia","name":"Al-Hadikhia","edition":"","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":33,"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"],"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."},{"id":"legion","name":"Legion","edition":"","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":34,"otherNightReminder":"Choose a player, that player dies.","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]"},{"id":"leviathan","name":"Leviathan","edition":"","team":"demon","firstNight":53,"firstNightReminder":"Place the Leviathan \'Day 1\' marker. Announce \'The Leviathan is in play; this is Day 1.\'","otherNight":73,"otherNightReminder":"Change the Leviathan Day reminder for the next day.","reminders":["Day 1","Day 2","Day 3","Day 4","Day 5","Good player executed"],"setup":false,"ability":"If more than 1 good player is executed, you win. All players know you are in play. After day 5, evil wins."},{"id":"riot","name":"Riot","edition":"","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"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":"gangster","name":"Gangster","edition":"","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"Once per day, you may choose to kill an alive neighbour, if your other alive neighbour agrees."}]')},b223:function(e,t,i){e.exports=i.p+"img/mayor.da8876ae.png"},b249:function(e){e.exports=JSON.parse('[{"id":"doomsayer","firstNightReminder":"","otherNightReminder":"","reminders":[],"setup":false,"name":"Doomsayer","team":"fabled","ability":"If 4 or more players live, each living player may publicly choose (once per game) that a player of their own alignment dies."},{"id":"angel","firstNightReminder":"","otherNightReminder":"","reminders":["Protect","Something Bad"],"setup":false,"name":"Angel","team":"fabled","ability":"Something bad might happen to whoever is most responsible for the death of a new player."},{"id":"buddhist","firstNightReminder":"","otherNightReminder":"","reminders":[],"setup":false,"name":"Buddhist","team":"fabled","ability":"For the first 2 minutes of each day, veteran players may not talk."},{"id":"hellslibrarian","firstNightReminder":"","otherNightReminder":"","reminders":["Something Bad"],"setup":false,"name":"Hell\'s Librarian","team":"fabled","ability":"Something bad might happen to whoever talks when the Storyteller has asked for silence."},{"id":"revolutionary","firstNightReminder":"","otherNightReminder":"","reminders":["Used"],"setup":false,"name":"Revolutionary","team":"fabled","ability":"2 neighboring players are known to be the same alignment. Once per game, one of them registers falsely."},{"id":"fiddler","firstNightReminder":"","otherNightReminder":"","reminders":[],"setup":false,"name":"Fiddler","team":"fabled","ability":"Once per game, the Demon secretly chooses an opposing player: all players choose which of these 2 players win."},{"id":"toymaker","firstNightReminder":"","otherNight":1,"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"],"setup":false,"name":"Toymaker","team":"fabled","ability":"The Demon may choose not to attack & must do this at least once per game. Evil players get normal starting info."},{"id":"fibbin","firstNightReminder":"","otherNightReminder":"","reminders":["Used"],"setup":false,"name":"Fibbin","team":"fabled","ability":"Once per game, 1 good player might get false information."},{"id":"duchess","firstNightReminder":"","otherNight":1,"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"],"setup":false,"name":"Duchess","team":"fabled","ability":"Each day, 3 players may choose to visit you. At night*, each visitor learns how many visitors are evil, but 1 gets false info."},{"id":"sentinel","firstNightReminder":"","otherNightReminder":"","reminders":[],"setup":true,"name":"Sentinel","team":"fabled","ability":"There might be 1 extra or 1 fewer Outsider in play."},{"id":"spiritofivory","firstNightReminder":"","otherNightReminder":"","reminders":["No extra evil"],"setup":false,"name":"Spirit of Ivory","team":"fabled","ability":"There can\'t be more than 1 extra evil player."},{"id":"djinn","firstNight":0,"firstNightReminder":"","otherNightReminder":"","reminders":[],"setup":false,"name":"Djinn","team":"fabled","ability":"Use the Djinn\'s special rule. All players know what it is."},{"id":"stormcatcher","firstNight":1,"firstNightReminder":"Mark a good player as \\"Safe\\". Wake each evil player and show them the marked player.","otherNightReminder":"","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":"deusexfiasco","firstNightReminder":"","otherNightReminder":"","reminders":["Whoops"],"setup":false,"name":"Deus ex Fiasco","team":"fabled","ability":"Once per game, the Storyteller will make a \\"mistake\\", correct it and publicly admit to it."}]')},b30c:function(e,t,i){e.exports=i.p+"img/professor.48f01bcb.png"},b570:function(e,t,i){e.exports=i.p+"img/investigator.a817cc04.png"},b6d8:function(e,t,i){"use strict";i("e455")},b7e8:function(e,t,i){e.exports=i.p+"img/snitch.0f51b730.png"},ba9b:function(e,t,i){e.exports=i.p+"img/tealady.5fc21e59.png"},bb7a:function(e,t,i){e.exports=i.p+"img/empath.b772c7ff.png"},bd73:function(e,t,i){},bfe2:function(e,t,i){e.exports=i.p+"img/angel.cae6c8fc.png"},c0b6:function(e,t,i){},c198:function(e,t,i){"use strict";i("3998")},c24f:function(e,t,i){e.exports=i.p+"img/evil.8723a4ee.png"},c316:function(e,t,i){e.exports=i.p+"img/lycanthrope.48660758.png"},c492:function(e,t,i){e.exports=i.p+"img/lilmonsta.4814ed76.png"},c5bf:function(e,t,i){"use strict";i("bd73")},c5db:function(e,t,i){e.exports=i.p+"img/fisherman.0511031e.png"},c73a:function(e,t,i){e.exports=i.p+"img/po.015a8956.png"},c7b7:function(e,t,i){e.exports=i.p+"img/mezepheles.b1f4ea9e.png"},c825:function(e){e.exports=JSON.parse('[{"id":"Chambermaid","hatred":[{"id":"Mathematician","reason":"The Chambermaid learns if the Mathematician wakes tonight or not, even though the Chambermaid wakes first."}]},{"id":"Butler","hatred":[{"id":"Cannibal","reason":"If the Cannibal gains the Butler ability, the Cannibal learns this."}]},{"id":"Lunatic","hatred":[{"id":"Mathematician","reason":"The Mathematician learns if the Lunatic attacks a different player(s) than the real Demon attacked."}]},{"id":"Pit-Hag","hatred":[{"id":"Heretic","reason":"A Pit-Hag can not create a Heretic. "},{"id":"Damsel","reason":"If a Pit-Hag creates a Damsel, the Storyteller chooses which player it is."},{"id":"Politician","reason":"A Pit-hag can not create an evil Politician."}]},{"id":"Cerenovus","hatred":[{"id":"Goblin","reason":"The Cerenovus may choose to make a player mad that they are the Goblin."}]},{"id":"Leviathan","hatred":[{"id":"Soldier","reason":"If Leviathan nominates and executes the Soldier, the Soldier does not die."},{"id":"Monk","reason":"If Leviathan nominates and executes the player the Monk chose, that player does not die."},{"id":"Innkeeper","reason":"If Leviathan nominates and executes a player the Innkeeper chose, that player does not die."},{"id":"Ravenkeeper","reason":"If Leviathan is in play & the Ravenkeeper dies by execution, they wake that night to use their ability."},{"id":"Sage","reason":"If Leviathan is in play & the Sage dies by execution, they wake that night to use their ability."},{"id":"Farmer","reason":"If Leviathan is in play & a Farmer dies by execution, a good player becomes a Farmer that night."},{"id":"Mayor","reason":"If Leviathan is in play & no execution occurs on day 5, good wins."}]},{"id":"Al-Hadikhia","hatred":[{"id":"Scarlet Woman","reason":"If there are two living Al-Hadikhias, the Scarlet Woman Al-Hadikhia becomes the Scarlet Woman again."},{"id":"Mastermind","reason":"Only 1 jinxed character can be in play. Evil players start knowing which player and character it is."}]},{"id":"Lil\' Monsta","hatred":[{"id":"Poppy Grower","reason":"If the Poppy Grower is in play, Minions don\'t wake together. They are woken one by one, until one of them chooses to take the Lil\' Monsta token."},{"id":"Magician","reason":"Only 1 jinxed character can be in play. "},{"id":"Scarlet Woman","reason":"If there are 5 or more players alive and the player holding the Lil\' Monsta token dies, the Scarlet Woman is given the Lil\' Monsta token tonight."}]},{"id":"Lycanthrope","hatred":[{"id":"Gambler","reason":"If the Lycanthrope is alive and the Gambler kills themself at night, no other players can die tonight."}]},{"id":"Legion","hatred":[{"id":"Engineer","reason":"Legion and the Engineer can not both be in play at the start of the game. If the Engineer creates Legion, most players (including all evil players) become evil Legion."},{"id":"Preacher","reason":"Only 1 jinxed character can be in play."}]},{"id":"Fang Gu","hatred":[{"id":"Scarlet Woman","reason":"If the Fang Gu chooses an Outsider and dies, the Scarlet Woman does not become the Fang Gu."}]},{"id":"Spy","hatred":[{"id":"Magician","reason":"When the Spy sees the Grimoire, the Demon and Magician\'s character tokens are removed."},{"id":"Alchemist","reason":"The Alchemist can not have the Spy ability."},{"id":"Poppy Grower","reason":"If the Poppy Grower is in play, the Spy does not see the Grimoire until the Poppy Grower dies."},{"id":"Damsel","reason":"Only 1 jinxed character can be in play. "},{"id":"Heretic","reason":"Only 1 jinxed character can be in play."}]},{"id":"Widow","hatred":[{"id":"Magician","reason":"When the Widow sees the Grimoire, the Demon and Magician\'s character tokens are removed."},{"id":"Poppy Grower","reason":"If the Poppy Grower is in play, the Widow does not see the Grimoire until the Poppy Grower dies."},{"id":"Alchemist","reason":"The Alchemist can not have the Widow ability."},{"id":"Damsel","reason":"Only 1 jinxed character can be in play."},{"id":"Heretic","reason":"Only 1 jinxed character can be in play."}]},{"id":"Godfather","hatred":[{"id":"Heretic","reason":"Only 1 jinxed character can be in play."}]},{"id":"Marionette","hatred":[{"id":"Lil\' Monsta","reason":"The Marionette neighbors a Minion, not the Demon. The Marionette is not woken to choose who takes the Lil\' Monsta token."},{"id":"Poppy Grower","reason":"When the Poppy Grower dies, the Demon learns the Marionette but the Marionette learns nothing."},{"id":"Snitch","reason":"The Marionette learns 3 not in-play characters when the Snitch dies, instead of at the start of the game."},{"id":"Balloonist","reason":"If the Marionette thinks that they are the Balloonist, +1 Outsider was added."},{"id":"Damsel","reason":"The Marionette does not learn that a Damsel is in play."},{"id":"Huntsman","reason":"If the Marionette thinks that they are the Huntsman, the Damsel was added."}]},{"id":"Riot","hatred":[{"id":"Engineer","reason":"Riot and the Engineer can not both be in play at the start of the game. \\nIf the Engineer creates Riot, the evil players become Riot."},{"id":"Golem","reason":"If The Golem nominates Riot, the Riot player does not die."},{"id":"Snitch","reason":"If the Snitch is in play, each Riot player gets an extra 3 bluffs."},{"id":"Saint","reason":"If a good player nominates and kills the Saint, the Saint\'s team loses."},{"id":"Butler","reason":"The Butler can not nominate their master."},{"id":"Pit-Hag","reason":"If the Pit-Hag creates Riot, all evil players become Riot. \\nIf the Pit-Hag creates Riot after day 3, the game continues for one more day."},{"id":"Mayor","reason":"If the 3rd day begins with just three players alive, the players may choose (as a group) not to nominate at all. If so (and a Mayor is alive) then the Mayor\'s team wins."},{"id":"Monk","reason":"If a Riot player nominates and kills the Monk-protected-player, the Monk-protected-player does not die."},{"id":"Farmer","reason":"If a Riot player nominates and kills a Farmer, the Farmer uses their ability tonight."},{"id":"Innkeeper","reason":"If a Riot player nominates an Innkeeper-protected-player, the Innkeeper-protected-player does not die."},{"id":"Sage","reason":"If a Riot player nominates and kills a Sage, the Sage uses their ability tonight."},{"id":"Ravenkeeper","reason":"If a Riot player nominates and kills the Ravenkeeper, the Ravenkeeper uses their ability tonight."},{"id":"Soldier","reason":"If a Riot player nominates the Soldier, the Soldier does not die."},{"id":"Grandmother","reason":"If a Riot player nominates and kills the Grandchild, the Grandmother dies too."},{"id":"King","reason":"If a Riot player nominates and kills the King and the Choirboy is alive, the Choirboy uses their ability tonight."},{"id":"Exorcist","reason":"Only 1 jinxed character can be in play."},{"id":"Minstrel","reason":"Only 1 jinxed character can be in play."},{"id":"Flowergirl","reason":"Only 1 jinxed character can be in play."},{"id":"Undertaker","reason":"Players that die by nomination register as being executed to the Undertaker."},{"id":"Cannibal","reason":"Players that die by nomination register as being executed to the Cannibal."},{"id":"Pacifist","reason":"Players that die by nomination register as being executed to the Pacifist."},{"id":"Devil\'s Advocate","reason":"Players that die by nomination register as being executed to the Devil\'s Advocate."},{"id":"Investigator","reason":"Riot registers as a Minion to the Investigator."},{"id":"Clockmaker","reason":"Riot registers as a Minion to the Clockmaker."},{"id":"Town Crier","reason":"Riot registers as a Minion to the Town Crier."},{"id":"Damsel","reason":"Riot registers as a Minion to the Damsel."},{"id":"Preacher","reason":"Riot registers as a Minion to the Preacher."}]},{"id":"Lleech","hatred":[{"id":"Mastermind","reason":"If the Mastermind is alive and the Lleech\'s host dies by execution, the Lleech lives but loses their ability. "},{"id":"Slayer","reason":"If the Slayer slays the Lleech\'s host, the host dies. "}]}]')},c9f5:function(e,t,i){e.exports=i.p+"img/grandmother.18ee536e.png"},ca7a:function(e,t,i){e.exports=i.p+"img/atheist.d8060ae8.png"},cadc:function(e,t,i){e.exports=i.p+"img/gossip.5165a7ee.png"},cae1:function(e,t,i){e.exports=i.p+"img/bmr-demon.75dfa056.png"},cd8b:function(e,t,i){e.exports=i.p+"img/devilsadvocate.18bb00ce.png"},ce23:function(e,t,i){var o={"./bmr-demon.png":"cae1","./bmr-minion.png":"28bf","./bmr-outsider.png":"e898","./bmr-townsfolk.png":"e988","./bmr.png":"7496","./custom.png":"441d","./luf.png":"92d8","./snv-demon.png":"f347","./snv-minion.png":"451a","./snv-outsider.png":"4dd9","./snv-townsfolk.png":"ed00","./snv.png":"2fd0","./tb-demon.png":"a3b0","./tb-minion.png":"5f4e","./tb-outsider.png":"73a1","./tb-townsfolk.png":"f7a3","./tb.png":"0aaa"};function s(e){var t=a(e);return i(t)}function a(e){if(!i.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}s.keys=function(){return Object.keys(o)},s.resolve=a,e.exports=s,s.id="ce23"},cfcc:function(e,t,i){e.exports=i.p+"img/beggar.90311684.png"},d4b2:function(e,t,i){},d62b:function(e,t,i){e.exports=i.p+"img/slayer.4cde6d70.png"},d69f:function(e,t,i){e.exports=i.p+"img/fearmonger.4233784c.png"},d6bc:function(e,t,i){e.exports=i.p+"img/choirboy.9d62c6b3.png"},d6ce:function(e,t,i){},d715:function(e,t,i){e.exports=i.p+"img/savant.0fe828cf.png"},d97d:function(e,t,i){e.exports=i.p+"img/drunk.947841e5.png"},da81:function(e,t,i){e.exports=i.p+"img/legion.a5ecb237.png"},dbe8:function(e,t,i){e.exports=i.p+"img/alchemist.c860a284.png"},dce6:function(e,t,i){e.exports=i.p+"img/gambler.7e6e9736.png"},df5e:function(e,t,i){e.exports=i.p+"img/mephit.b1f4ea9e.png"},dfb1:function(e,t){e.exports=e=>{const t=e=>document.title="Blood on the Clocktower "+(e?"Town Square":"Grimoire");if(localStorage.getItem("background")&&e.commit("setBackground",localStorage.background),localStorage.getItem("muted")&&e.commit("toggleMuted",!0),localStorage.getItem("static")&&e.commit("toggleStatic",!0),localStorage.getItem("imageOptIn")&&e.commit("toggleImageOptIn",!0),localStorage.getItem("zoom")&&e.commit("setZoom",parseFloat(localStorage.getItem("zoom"))),localStorage.getItem("isGrimoire")&&(e.commit("toggleGrimoire",!1),t(!1)),void 0!==localStorage.roles&&(e.commit("setCustomRoles",JSON.parse(localStorage.roles)),e.commit("setEdition",{id:"custom"})),void 0!==localStorage.edition&&e.commit("setEdition",JSON.parse(localStorage.edition)),void 0!==localStorage.bluffs&&JSON.parse(localStorage.bluffs).forEach((t,i)=>{e.commit("players/setBluff",{index:i,role:e.state.roles.get(t)||{}})}),void 0!==localStorage.fabled&&e.commit("players/setFabled",{fabled:JSON.parse(localStorage.fabled).map(t=>e.state.fabled.get(t.id)||t)}),localStorage.players&&e.commit("players/set",JSON.parse(localStorage.players).map(t=>({...t,role:e.state.roles.get(t.role)||e.getters.rolesJSONbyId.get(t.role)||{}}))),localStorage.getItem("playerId")&&e.commit("session/setPlayerId",localStorage.getItem("playerId")),localStorage.getItem("session")&&!window.location.hash.substr(1)){const[t,i]=JSON.parse(localStorage.getItem("session"));e.commit("session/setSpectator",t),e.commit("session/setSessionId",i)}e.subscribe(({type:e,payload:i},o)=>{switch(e){case"toggleGrimoire":o.grimoire.isPublic?localStorage.removeItem("isGrimoire"):localStorage.setItem("isGrimoire",1),t(o.grimoire.isPublic);break;case"setBackground":i?localStorage.setItem("background",i):localStorage.removeItem("background");break;case"toggleMuted":o.grimoire.isMuted?localStorage.setItem("muted",1):localStorage.removeItem("muted");break;case"toggleStatic":o.grimoire.isStatic?localStorage.setItem("static",1):localStorage.removeItem("static");break;case"toggleImageOptIn":o.grimoire.isImageOptIn?localStorage.setItem("imageOptIn",1):localStorage.removeItem("imageOptIn");break;case"setZoom":0!==i?localStorage.setItem("zoom",i):localStorage.removeItem("zoom");break;case"setEdition":localStorage.setItem("edition",JSON.stringify(i)),o.edition.isOfficial&&localStorage.removeItem("roles");break;case"setCustomRoles":i.length?localStorage.setItem("roles",JSON.stringify(i)):localStorage.removeItem("roles");break;case"players/setBluff":localStorage.setItem("bluffs",JSON.stringify(o.players.bluffs.map(({id:e})=>e)));break;case"players/setFabled":localStorage.setItem("fabled",JSON.stringify(o.players.fabled.map(e=>e.isCustom?e:{id:e.id})));break;case"players/add":case"players/update":case"players/remove":case"players/clear":case"players/set":case"players/swap":case"players/move":o.players.players.length?localStorage.setItem("players",JSON.stringify(o.players.players.map(e=>({...e,role:e.role.id||{}})))):localStorage.removeItem("players");break;case"session/setSessionId":i?localStorage.setItem("session",JSON.stringify([o.session.isSpectator,i])):localStorage.removeItem("session");break;case"session/setPlayerId":i?localStorage.setItem("playerId",i):localStorage.removeItem("playerId");break}})}},e014:function(e,t,i){e.exports=i.p+"img/eviltwin.10ab31a8.png"},e222:function(e,t,i){e.exports=i.p+"img/djinn.e1c507e5.png"},e455:function(e,t,i){},e69f:function(e,t,i){e.exports=i.p+"img/marionette.8aceb38b.png"},e761:function(e,t,i){},e898:function(e,t,i){e.exports=i.p+"img/bmr-outsider.971a3d5d.png"},e988:function(e,t,i){e.exports=i.p+"img/bmr-townsfolk.9bf859b4.png"},ea17:function(e,t,i){e.exports=i.p+"img/engineer.1e44d3e4.png"},eb35:function(e,t,i){"use strict";i("d6ce")},ec1e:function(e,t,i){e.exports=i.p+"img/spy.d411c998.png"},ed00:function(e,t,i){e.exports=i.p+"img/snv-townsfolk.83cf9a72.png"},ee02:function(e,t,i){e.exports=i.p+"img/courtier.7060de3f.png"},ee92:function(e,t,i){e.exports=i.p+"img/gunslinger.1360a66d.png"},eff4:function(e,t,i){e.exports=i.p+"img/virgin.a4b2d7a4.png"},f09b:function(e,t,i){e.exports=i.p+"img/judge.b1034c71.png"},f1e5:function(e,t,i){e.exports=i.p+"img/sweetheart.29949c36.png"},f282:function(e,t,i){e.exports=i.p+"img/poisoner.61c83e0f.png"},f322:function(e,t,i){e.exports=i.p+"img/scarletwoman.5377675d.png"},f344:function(e,t,i){},f347:function(e,t,i){e.exports=i.p+"img/snv-demon.2fe55248.png"},f4bd:function(e,t,i){e.exports=i.p+"img/vigormortis.981de17e.png"},f558:function(e,t,i){e.exports=i.p+"img/witch.f75f1601.png"},f6a8:function(e,t,i){e.exports=i.p+"media/countdown.1462f20c.mp3"},f7a3:function(e,t,i){e.exports=i.p+"img/tb-townsfolk.550a119b.png"},f7d3:function(e,t,i){e.exports=i.p+"img/noble.3909ea29.png"},f834:function(e,t,i){e.exports=i.p+"img/mastermind.91ffd4fd.png"},f93f:function(e,t,i){e.exports=i.p+"img/clockmaker.5378c03d.png"},fcc6:function(e,t,i){e.exports=i.p+"img/barber.6c91c1f5.png"},fcdb:function(e,t,i){e.exports=i.p+"img/psychopath.cd71a0a2.png"},fd83:function(e,t,i){e.exports=i.p+"img/custom.402e9bc3.png"},ff40:function(e,t,i){"use strict";i("2294")},fff1:function(e,t,i){e.exports=i.p+"img/pacifist.0637fdf0.png"}});
-//# sourceMappingURL=app.72921353.js.map
\ No newline at end of file
diff --git a/js/app.72921353.js.map b/js/app.72921353.js.map
deleted file mode 100644
index fd79fcd..0000000
--- a/js/app.72921353.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/icons/washerwoman.png","webpack:///./src/assets/icons/barista.png","webpack:///./src/assets/icons/cerenovus.png","webpack:///./src/assets/icons/amnesiac.png","webpack:///./src/assets/icons/politician.png","webpack:///./src/assets/editions/tb.png","webpack:///./src/assets/icons/shabaloth.png","webpack:///./src/assets/icons/lunatic.png","webpack:///./src/assets/icons/oracle.png","webpack:///./src/assets/icons/ravenkeeper.png","webpack:///./src/assets/icons/spiritofivory.png","webpack:///./src/assets/icons/undertaker.png","webpack:///./src/assets/icons/chambermaid.png","webpack:///./src/assets/icons/plus.png","webpack:///./src/assets/icons/recluse.png","webpack:///./src/assets/icons/mutant.png","webpack:///./src/assets/icons/huntsman.png","webpack:///./src/assets/icons/buddhist.png","webpack:///./src/assets/icons/chef.png","webpack:///./src/assets/icons/preacher.png","webpack:///./src/assets/icons/zombuul.png","webpack:///./src/components/Menu.vue?ed75","webpack:///./src/assets/icons/sailor.png","webpack:///./src/assets/icons/widow.png","webpack:///./src/assets/icons/bonecollector.png","webpack:///./src/components/modals/RoleModal.vue?2abf","webpack:///./src/assets/icons/outsider.png","webpack:///./src/assets/icons/baron.png","webpack:///./src/assets/icons/bureaucrat.png","webpack:///./src/assets/icons/puzzlemaster.png","webpack:///./src/assets/editions/bmr-minion.png","webpack:///./src/assets/icons/leviathan.png","webpack:///./src/assets/icons/artist.png","webpack:///./src/assets/editions/snv.png","webpack:///./src/assets/icons/sage.png","webpack:///./src/assets/icons/poppygrower.png","webpack:///./src/assets/icons/scapegoat.png","webpack:///./src/assets/icons/philosopher.png","webpack:///./src/components/TownSquare.vue?b88a","webpack:///./src/assets/icons/butcher.png","webpack:///./src/assets/icons/towncrier.png","webpack:///./src/assets/icons/cultleader.png","webpack:///./src/assets/icons/toymaker.png","webpack:///./src/assets/icons/vortox.png","webpack:///./src/assets/icons/deviant.png","webpack:///./src/assets/icons/nightwatchman.png","webpack:///./src/assets/icons/imp.png","webpack:///./src/assets/icons/moonchild.png","webpack:///./src/components/Gradients.vue?8fc3","webpack:///./src/assets/icons/snakecharmer.png","webpack:///./src/assets/icons/fortuneteller.png","webpack:///./src/assets/editions/custom.png","webpack:///./src/assets/editions/snv-minion.png","webpack:///./src/assets/icons/fool.png","webpack:///./src/assets/icons/apprentice.png","webpack:///./src/components/modals/ReferenceModal.vue?3656","webpack:///./src/assets/icons/librarian.png","webpack:///./src/assets/editions/snv-outsider.png","webpack:///./src/assets/icons/soldier.png","webpack:///./src/assets/icons/golem.png","webpack:///./src/assets/icons/minstrel.png","webpack:///./src/assets/icons/exorcist.png","webpack:///./src/assets/icons/harlot.png","webpack:///./src/assets/icons/goon.png","webpack:///./src/assets/icons/heretic.png","webpack:///./src/App.vue?9175","webpack:///./src/components/TownSquare.vue?63f7","webpack:///./src/components/Player.vue?ec02","webpack:///./src/components/Token.vue?304f","webpack:///src/components/Token.vue","webpack:///./src/components/Token.vue?ca97","webpack:///./src/components/Token.vue","webpack:///src/components/Player.vue","webpack:///./src/components/Player.vue?1369","webpack:///./src/components/Player.vue","webpack:///./src/components/modals/ReminderModal.vue?44d3","webpack:///./src/components/modals/Modal.vue?c662","webpack:///src/components/modals/Modal.vue","webpack:///./src/components/modals/Modal.vue?a5e5","webpack:///./src/components/modals/Modal.vue","webpack:///src/components/modals/ReminderModal.vue","webpack:///./src/components/modals/ReminderModal.vue?c533","webpack:///./src/components/modals/ReminderModal.vue","webpack:///./src/components/modals/RoleModal.vue?f594","webpack:///src/components/modals/RoleModal.vue","webpack:///./src/components/modals/RoleModal.vue?15f8","webpack:///./src/components/modals/RoleModal.vue","webpack:///src/components/TownSquare.vue","webpack:///./src/components/TownSquare.vue?335a","webpack:///./src/components/TownSquare.vue","webpack:///./src/components/TownInfo.vue?d5e2","webpack:///src/components/TownInfo.vue","webpack:///./src/components/TownInfo.vue?6260","webpack:///./src/components/TownInfo.vue","webpack:///./src/components/Menu.vue?482c","webpack:///src/components/Menu.vue","webpack:///./src/components/Menu.vue?9842","webpack:///./src/components/Menu.vue","webpack:///./src/components/modals/RolesModal.vue?47d1","webpack:///src/components/modals/RolesModal.vue","webpack:///./src/components/modals/RolesModal.vue?b003","webpack:///./src/components/modals/RolesModal.vue","webpack:///./src/components/modals/EditionModal.vue?9026","webpack:///src/components/modals/EditionModal.vue","webpack:///./src/components/modals/EditionModal.vue?d6f4","webpack:///./src/components/modals/EditionModal.vue","webpack:///./src/components/Intro.vue?0575","webpack:///src/components/Intro.vue","webpack:///./src/components/Intro.vue?a380","webpack:///./src/components/Intro.vue","webpack:///./src/components/modals/ReferenceModal.vue?432d","webpack:///src/components/modals/ReferenceModal.vue","webpack:///./src/components/modals/ReferenceModal.vue?c23b","webpack:///./src/components/modals/ReferenceModal.vue","webpack:///./src/components/Vote.vue?9226","webpack:///src/components/Vote.vue","webpack:///./src/components/Vote.vue?2a1c","webpack:///./src/components/Vote.vue","webpack:///./src/components/Gradients.vue?254c","webpack:///src/components/Gradients.vue","webpack:///./src/components/Gradients.vue?d8ff","webpack:///./src/components/Gradients.vue","webpack:///./src/components/modals/NightOrderModal.vue?7513","webpack:///src/components/modals/NightOrderModal.vue","webpack:///./src/components/modals/NightOrderModal.vue?08ef","webpack:///./src/components/modals/NightOrderModal.vue","webpack:///./src/components/modals/FabledModal.vue?8a93","webpack:///src/components/modals/FabledModal.vue","webpack:///./src/components/modals/FabledModal.vue?aeda","webpack:///./src/components/modals/FabledModal.vue","webpack:///./src/components/modals/VoteHistoryModal.vue?7115","webpack:///src/components/modals/VoteHistoryModal.vue","webpack:///./src/components/modals/VoteHistoryModal.vue?485a","webpack:///./src/components/modals/VoteHistoryModal.vue","webpack:///./src/components/modals/GameStateModal.vue?0388","webpack:///src/components/modals/GameStateModal.vue","webpack:///./src/components/modals/GameStateModal.vue?7f16","webpack:///./src/components/modals/GameStateModal.vue","webpack:///src/App.vue","webpack:///./src/App.vue?b65f","webpack:///./src/App.vue","webpack:///./src/store/socket.js","webpack:///./src/store/modules/players.js","webpack:///./src/store/modules/session.js","webpack:///./src/store/index.js","webpack:///./src/main.js","webpack:///./src/components/Token.vue?181a","webpack:///./src/assets/icons/riot.png","webpack:///./src/assets/icons/fabled.png","webpack:///./src/assets/icons/cannibal.png","webpack:///./src/App.vue?6ee5","webpack:///./src/assets/icons/duchess.png","webpack:///./src/assets/icons/goblin.png","webpack:///./src/assets/icons/x.png","webpack:///./src/assets/editions/tb-minion.png","webpack:///./src/assets/icons sync ^\\.\\/.*\\.png$","webpack:///./src/assets/icons/fiddler.png","webpack:///./src/assets/icons/butler.png","webpack:///./src/assets/icons/doomsayer.png","webpack:///./src/assets/icons/juggler.png","webpack:///./src/assets/icons/balloonist.png","webpack:///./src/assets/icons/innkeeper.png","webpack:///./src/assets/icons/good.png","webpack:///./src/assets/icons/flowergirl.png","webpack:///./src/assets/icons/monk.png","webpack:///./src/assets/icons/nodashii.png","webpack:///./src/assets/icons/saint.png","webpack:///./src/assets/icons/fanggu.png","webpack:///./src/assets/icons/fibbin.png","webpack:///./src/assets/icons/dreamer.png","webpack:///./src/assets/icons/damsel.png","webpack:///./src/assets/editions/tb-outsider.png","webpack:///./src/components/modals/ReminderModal.vue?476f","webpack:///./src/assets/editions/bmr.png","webpack:///./src/components/Player.vue?6d3c","webpack:///./src/assets/icons/minion.png","webpack:///./src/assets/icons/farmer.png","webpack:///./src/assets/icons/pithag.png","webpack:///./src/assets/icons/bishop.png","webpack:///./src/components/modals/Modal.vue?3563","webpack:///./src/assets/icons/acrobat.png","webpack:///./src/assets/icons/mathematician.png","webpack:///./src/components/modals/RolesModal.vue?8383","webpack:///./src/assets/icons/bountyhunter.png","webpack:///./src/components/Vote.vue?e359","webpack:///./src/components/modals/VoteHistoryModal.vue?39ca","webpack:///./src/assets/icons/deusexfiasco.png","webpack:///./src/assets/icons/assassin.png","webpack:///./src/assets/editions/luf.png","webpack:///./src/assets/icons/king.png","webpack:///./src/assets/icons/gangster.png","webpack:///./src/assets/icons/alhadikhia.png","webpack:///./src/assets/icons/godfather.png","webpack:///./src/assets/icons/thief.png","webpack:///./src/assets/icons/lleech.png","webpack:///./src/assets/icons/tinker.png","webpack:///./src/assets/icons/hellslibrarian.png","webpack:///./src/assets/editions/tb-demon.png","webpack:///./src/assets/icons/stormcatcher.png","webpack:///./src/assets/icons/pukka.png","webpack:///./src/assets/icons/voudon.png","webpack:///./src/assets/icons/pixie.png","webpack:///./src/assets/icons/revolutionary.png","webpack:///./src/assets/icons/boomdandy.png","webpack:///./src/assets/icons/magician.png","webpack:///./src/assets/icons/seamstress.png","webpack:///./src/assets/icons/general.png","webpack:///./src/assets/icons/klutz.png","webpack:///./src/assets/icons/sentinel.png","webpack:///./src/components/modals/EditionModal.vue?ee71","webpack:///./src/assets/icons/matron.png","webpack:///./src/assets/icons/mayor.png","webpack:///./src/assets/icons/professor.png","webpack:///./src/assets/icons/investigator.png","webpack:///./src/components/modals/NightOrderModal.vue?2579","webpack:///./src/assets/icons/snitch.png","webpack:///./src/assets/icons/tealady.png","webpack:///./src/assets/icons/empath.png","webpack:///./src/assets/icons/angel.png","webpack:///./src/components/Intro.vue?dc06","webpack:///./src/assets/icons/evil.png","webpack:///./src/assets/icons/lycanthrope.png","webpack:///./src/assets/icons/lilmonsta.png","webpack:///./src/components/TownInfo.vue?113f","webpack:///./src/assets/icons/fisherman.png","webpack:///./src/assets/icons/po.png","webpack:///./src/assets/icons/mezepheles.png","webpack:///./src/assets/icons/grandmother.png","webpack:///./src/assets/icons/atheist.png","webpack:///./src/assets/icons/gossip.png","webpack:///./src/assets/editions/bmr-demon.png","webpack:///./src/assets/icons/devilsadvocate.png","webpack:///./src/assets/editions sync ^\\.\\/.*\\.png$","webpack:///./src/assets/icons/beggar.png","webpack:///./src/assets/icons/slayer.png","webpack:///./src/assets/icons/fearmonger.png","webpack:///./src/assets/icons/choirboy.png","webpack:///./src/assets/icons/savant.png","webpack:///./src/assets/icons/drunk.png","webpack:///./src/assets/icons/legion.png","webpack:///./src/assets/icons/alchemist.png","webpack:///./src/assets/icons/gambler.png","webpack:///./src/assets/icons/mephit.png","webpack:///./src/store/persistence.js","webpack:///./src/assets/icons/eviltwin.png","webpack:///./src/assets/icons/djinn.png","webpack:///./src/assets/icons/marionette.png","webpack:///./src/assets/editions/bmr-outsider.png","webpack:///./src/assets/editions/bmr-townsfolk.png","webpack:///./src/assets/icons/engineer.png","webpack:///./src/components/modals/GameStateModal.vue?d9a4","webpack:///./src/assets/icons/spy.png","webpack:///./src/assets/editions/snv-townsfolk.png","webpack:///./src/assets/icons/courtier.png","webpack:///./src/assets/icons/gunslinger.png","webpack:///./src/assets/icons/virgin.png","webpack:///./src/assets/icons/judge.png","webpack:///./src/assets/icons/sweetheart.png","webpack:///./src/assets/icons/poisoner.png","webpack:///./src/assets/icons/scarletwoman.png","webpack:///./src/assets/editions/snv-demon.png","webpack:///./src/assets/icons/vigormortis.png","webpack:///./src/assets/icons/witch.png","webpack:///./src/assets/sounds/countdown.mp3","webpack:///./src/assets/editions/tb-townsfolk.png","webpack:///./src/assets/icons/noble.png","webpack:///./src/assets/icons/mastermind.png","webpack:///./src/assets/icons/clockmaker.png","webpack:///./src/assets/icons/barber.png","webpack:///./src/assets/icons/psychopath.png","webpack:///./src/assets/icons/custom.png","webpack:///./src/components/modals/FabledModal.vue?31c5","webpack:///./src/assets/icons/pacifist.png"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","render","_vm","this","_h","$createElement","_c","_self","class","night","grimoire","isNight","static","isStatic","style","backgroundImage","background","attrs","on","keyup","match","_e","staticClass","players","session","nomination","ref","_v","_s","version","staticRenderFns","public","isPublic","spectator","isSpectator","vote","_l","player","index","from","Math","max","swap","move","nominate","$event","handleTrigger","closed","isBluffsOpen","stopPropagation","toggleBluffs","openRoleModal","bluffs","fabled","isFabledOpen","toggleFabled","role","removeFabled","nightOrder","first","isNightOrder","firstNightReminder","other","otherNightReminder","selectedPlayer","dead","isDead","marked","markedPlayer","isVoteless","you","sessionId","id","playerId","votes","voteLocked","team","toggleStatus","$emit","cancel","swapPlayer","movePlayer","nominatePlayer","highlight","isRolesDistributed","updatePlayer","active","isMenuOpen","pronouns","changePronouns","changeName","disabled","lockedVote","removePlayer","claimSeat","reminder","removeReminder","image","isImageOptIn","imageAlt","setRole","firstNight","otherNight","reminderLeaves","_f","ability","props","type","default","computed","reminders","remindersGlobal","filters","nameToFontSize","methods","component","components","Token","required","indexOf","indexAdjusted","zoom","unit","innerWidth","innerHeight","width","isSwap","prompt","isMarked","closeMenu","$store","commit","modals","availableReminders","playerIndex","toggleModal","addReminder","close","maximized","isMaximized","_t","mapReminder","Modal","state","roles","forEach","some","bluff","map","otherTravelers","availableRoles","tab","size","values","townsfolk","Player","RoleModal","ReminderModal","bluffSize","method","params","confirm","includes","to","undefined","swapTo","updatedNomination","nom","moveTo","edition","logo","teams","traveler","isOfficial","author","alive","outsider","minion","demon","nonTravelers","getters","filter","game","directives","rawName","voteHistory","expression","reconnecting","isReconnecting","ping","leaveSession","playerCount","open","toggleMenu","toggleGrimoire","toggleNight","toggleNightOrder","setZoom","round","setBackground","imageOptIn","toggleStatic","toggleMuted","isMuted","copySessionUrl","distributeRoles","hostSession","joinSession","addPlayer","randomizeSeatings","clearPlayers","clearRoles","random","url","location","href","split","link","navigator","clipboard","writeText","popup","setTimeout","toggleImageOptIn","pop","dispatch","teamRoles","reduce","a","selected","checked","allowMultiple","domProps","Array","isArray","_i","$$a","$$el","target","$$c","$$v","$$i","concat","selectedRoles","assignRoles","selectRandomRoles","randomElement","arr","floor","roleSelection","b","hasSelectedSetupRoles","setup","$set","composition","keys","x","available","fill","sort","mounted","watch","isCustom","script","handleURL","handleUpload","openUpload","promptURL","setEdition","editions","scripts","$refs","upload","click","file","files","reader","FileReader","addEventListener","JSON","parse","parseRoles","e","alert","message","readAsText","res","fetch","json","metaIndex","findIndex","meta","assign","has","_m","reference","playersByRole","join","jinxed","jinx","second","reason","jinxes","rolesGrouped","nominator","nominee","voters","ceil","isVoteInProgress","votingSpeed","currentVote","preventDefault","setVotingSpeed","countdown","pause","voteTimer","stop","start","finish","setMarked","removeMarked","nominatorStyle","transform","transitionDuration","nomineeStyle","lock","rotation","min","find","canVote","reorder","setInterval","clearInterval","diff","speed","gradient","gradients","rolesFirstNight","rolesOtherNight","setFabled","fable","clearVoteHistory","setRecordVoteHistory","isVoteHistoryAllowed","timestamp","getHours","toString","padStart","getMinutes","majority","gamestate","input","select","copy","load","stringify","customRolesStripped","f","rolesJSONbyId","GameStateModal","VoteHistoryModal","FabledModal","NightOrderModal","Vote","ReferenceModal","Intro","TownInfo","TownSquare","Menu","EditionModal","RolesModal","Gradients","ctrlKey","metaKey","toLocaleLowerCase","menu","LiveSession","store","_wss","_socket","_isSpectator","_gamestate","_store","_pingInterval","_pingTimer","_reconnectTimer","_players","_pings","connect","channel","disconnect","WebSocket","_handleMessage","onopen","_onOpen","onclose","err","code","command","readyState","send","_send","_sendDirect","sendGamestate","_ping","_handlePing","clearTimeout","console","log","_updateEdition","_updateFabled","_updateGamestate","_updatePlayer","_updateSeat","_handleVote","_handleLock","_handleBye","_updatePlayerPronouns","substr","_open","isLightweight","roleId","sendEdition","missing","isFromSockets","playerIdOrCount","latency","now","Date","getTime","parseInt","pings","seat","oldIndex","payload","fromST","subscribe","hash","setVoteInProgress","lockVote","setVoteHistoryAllowed","setIsNight","sendFabled","sendPlayerPronouns","sendPlayer","NEWPLAYER","Map","set","actions","rootState","mutations","namespaced","handleVote","claimedSeat","val","setPlayerId","setSpectator","setReconnecting","setPlayerCount","setPing","setMarkedPlayer","setNomination","replace","isExile","voteSync","use","getRolesByEdition","localeCompare","getTravelersNotInEdition","toggle","clean","editionJSONbyId","hatred","error","customRole","Store","gameState","customRoles","customKeys","strippedProps","strippedRole","prop","modal","processedRoles","mappedRole","abs","plugins","socket","faIcons","fabIcons","add","config","productionTip","h","App","$mount","webpackContext","req","webpackContextResolve","Error","resolve","updatePagetitle","document","title","localStorage","getItem","parseFloat","removeItem","setItem"],"mappings":"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3CC,EAAOD,QAAU,IAA0B,4B,uBCA3CC,EAAOD,QAAU,IAA0B,2B,uBCA3CC,EAAOD,QAAU,IAA0B,gC,uBCA3CC,EAAOD,QAAU,IAA0B,kC,uBCA3CC,EAAOD,QAAU,IAA0B,+B,gDCA3CC,EAAOD,QAAU,IAA0B,gC,uBCA3CC,EAAOD,QAAU,IAA0B,yB,uBCA3CC,EAAOD,QAAU,IAA0B,4B,uBCA3CC,EAAOD,QAAU,IAA0B,2B,qBCA3CC,EAAOD,QAAU,IAA0B,6B,uBCA3CC,EAAOD,QAAU,IAA0B,6B,uBCA3CC,EAAOD,QAAU,IAA0B,yB,qBCA3CC,EAAOD,QAAU,IAA0B,6B,uBCA3CC,EAAOD,QAAU,IAA0B,4B,kCCA3C,W,uBCAAC,EAAOD,QAAU,IAA0B,2B,8CCA3CC,EAAOD,QAAU,IAA0B,0B,uBCA3CC,EAAOD,QAAU,IAA0B,kC,oCCA3C,W,qBCAAC,EAAOD,QAAU,IAA0B,6B,uBCA3CC,EAAOD,QAAU,IAA0B,0B,uBCA3CC,EAAOD,QAAU,IAA0B,+B,uBCA3CC,EAAOD,QAAU,IAA0B,iC,uBCA3CC,EAAOD,QAAU,IAA0B,+B,uBCA3CC,EAAOD,QAAU,IAA0B,8B,uBCA3CC,EAAOD,QAAU,IAA0B,2B,uBCA3CC,EAAOD,QAAU,IAA0B,wB,uBCA3CC,EAAOD,QAAU,IAA0B,yB,qBCA3CC,EAAOD,QAAU,IAA0B,gC,uBCA3CC,EAAOD,QAAU,IAA0B,8B,qBCA3CC,EAAOD,QAAU,IAA0B,gC,kCCA3C,W,uBCAAC,EAAOD,QAAU,IAA0B,4B,uBCA3CC,EAAOD,QAAU,IAA0B,8B,uBCA3CC,EAAOD,QAAU,IAA0B,+B,8CCA3CC,EAAOD,QAAU,IAA0B,6B,uBCA3CC,EAAOD,QAAU,IAA0B,2B,uBCA3CC,EAAOD,QAAU,IAA0B,4B,uBCA3CC,EAAOD,QAAU,IAA0B,kC,uBCA3CC,EAAOD,QAAU,IAA0B,wB,uBCA3CC,EAAOD,QAAU,IAA0B,8B,oCCA3C,W,qBCAAC,EAAOD,QAAU,IAA0B,iC,gDCA3CC,EAAOD,QAAU,IAA0B,kC,uBCA3CC,EAAOD,QAAU,IAA0B,2B,uBCA3CC,EAAOD,QAAU,IAA0B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AA0B,2B,uBCA3CC,EAAOD,QAAU,IAA0B,2B,gDCA3CC,EAAOD,QAAU,IAA0B,2B,qBCA3CC,EAAOD,QAAU,IAA0B,2B,kCCA3C,W,uBCAAC,EAAOD,QAAU,IAA0B,4B,qBCA3CC,EAAOD,QAAU,IAA0B,kC,kCCA3C,W,uBCAAC,EAAOD,QAAU,IAA0B,iC,oCCA3C,W,oCCAA,W,qBCAAC,EAAOD,QAAU,IAA0B,iC,qBCA3CC,EAAOD,QAAU,IAA0B,6B,gFCA3CC,EAAOD,QAAU,IAA0B,wB,qBCA3CC,EAAOD,QAAU,IAA0B,yB,uBCA3CC,EAAOD,QAAU,IAA0B,6B,qBCA3CC,EAAOD,QAAU,IAA0B,+B,uBCA3CC,EAAOD,QAAU,IAA0B,8B,gDCA3CC,EAAOD,QAAU,IAA0B,0B,uBCA3CC,EAAOD,QAAU,IAA0B,2B,uBCA3CC,EAAOD,QAAU,IAA0B,2B,8CCA3CC,EAAOD,QAAU,IAA0B,mC,qBCA3CC,EAAOD,QAAU,IAA0B,6B,qBCA3CC,EAAOD,QAAU,IAA0B,iC,qBCA3CC,EAAOD,QAAU,IAA0B,0B,qBCA3CC,EAAOD,QAAU,IAA0B,2B,qBCA3CC,EAAOD,QAAU,IAA0B,0B,qBCA3CC,EAAOD,QAAU,IAA0B,kC,qBCA3CC,EAAOD,QAAU,IAA0B,8B,qBCA3CC,EAAOD,QAAU,IAA0B,6B,qBCA3CC,EAAOD,QAAU,IAA0B,+B,qBCA3CC,EAAOD,QAAU,IAA0B,4B,qBCA3CC,EAAOD,QAAU,IAA0B,0B,qBCA3CC,EAAOD,QAAU,IAA0B,6B,kCCA3C,W,qBCAAC,EAAOD,QAAU,IAA0B,2B,m+sDCA3CC,EAAOD,QAAU,IAA0B,0B,m+HCA3CC,EAAOD,QAAU,IAA0B,8B,qBCA3CC,EAAOD,QAAU,IAA0B,iC,kCCA3C,W,qBCAAC,EAAOD,QAAU,IAA0B,2B,qBCA3CC,EAAOD,QAAU,IAA0B,4B,qBCA3CC,EAAOD,QAAU,IAA0B,2B,4CCA3CC,EAAOD,QAAU,IAA0B,0B,yDCA3C,W,qBCAAC,EAAOD,QAAU,IAA0B,yB,qBCA3CC,EAAOD,QAAU,IAA0B,gC,qBCA3CC,EAAOD,QAAU,IAA0B,8B,kCCA3C,W,qBCA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","file":"js/app.72921353.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([\"56d7\",\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"img/washerwoman.554de332.png\";","module.exports = __webpack_public_path__ + \"img/barista.6c427e65.png\";","module.exports = __webpack_public_path__ + \"img/cerenovus.cc343942.png\";","module.exports = __webpack_public_path__ + \"img/amnesiac.fbd5ab33.png\";","module.exports = __webpack_public_path__ + \"img/politician.521cc53f.png\";","module.exports = __webpack_public_path__ + \"img/tb.438499cd.png\";","module.exports = __webpack_public_path__ + \"img/shabaloth.589858d2.png\";","module.exports = __webpack_public_path__ + \"img/lunatic.39fb7a2a.png\";","module.exports = __webpack_public_path__ + \"img/oracle.8b13b932.png\";","module.exports = __webpack_public_path__ + \"img/ravenkeeper.a1dfbc31.png\";","module.exports = __webpack_public_path__ + \"img/spiritofivory.ef077db5.png\";","module.exports = __webpack_public_path__ + \"img/undertaker.4f2e9806.png\";","module.exports = __webpack_public_path__ + \"img/chambermaid.5fa8599d.png\";","module.exports = __webpack_public_path__ + \"img/plus.9b84ce65.png\";","module.exports = __webpack_public_path__ + \"img/recluse.81a048d5.png\";","module.exports = __webpack_public_path__ + \"img/mutant.1b9f9dee.png\";","module.exports = __webpack_public_path__ + \"img/huntsman.994fb309.png\";","module.exports = __webpack_public_path__ + \"img/buddhist.2d7c4106.png\";","module.exports = __webpack_public_path__ + \"img/chef.c2256a45.png\";","module.exports = __webpack_public_path__ + \"img/preacher.a86e913b.png\";","module.exports = __webpack_public_path__ + \"img/zombuul.2872fbb3.png\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Menu.vue?vue&type=style&index=0&id=84ed831a&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/sailor.a9d4454a.png\";","module.exports = __webpack_public_path__ + \"img/widow.3ae71cbf.png\";","module.exports = __webpack_public_path__ + \"img/bonecollector.bd2d8b7a.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoleModal.vue?vue&type=style&index=0&id=2e3008b9&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/outsider.2c6bc66e.png\";","module.exports = __webpack_public_path__ + \"img/baron.2628f49e.png\";","module.exports = __webpack_public_path__ + \"img/bureaucrat.6a892d56.png\";","module.exports = __webpack_public_path__ + \"img/puzzlemaster.b4ec360b.png\";","module.exports = __webpack_public_path__ + \"img/bmr-minion.6559191b.png\";","module.exports = __webpack_public_path__ + \"img/leviathan.24f3cd86.png\";","module.exports = __webpack_public_path__ + \"img/artist.e76624f3.png\";","module.exports = __webpack_public_path__ + \"img/snv.288a42ad.png\";","module.exports = __webpack_public_path__ + \"img/sage.8afae02e.png\";","module.exports = __webpack_public_path__ + \"img/poppygrower.c9d4c880.png\";","module.exports = __webpack_public_path__ + \"img/scapegoat.73640c39.png\";","module.exports = __webpack_public_path__ + \"img/philosopher.9a154d6c.png\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TownSquare.vue?vue&type=style&index=0&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/butcher.2efedb75.png\";","module.exports = __webpack_public_path__ + \"img/towncrier.8c7af52c.png\";","module.exports = __webpack_public_path__ + \"img/cultleader.1f9a22f0.png\";","module.exports = __webpack_public_path__ + \"img/toymaker.a96806e5.png\";","module.exports = __webpack_public_path__ + \"img/vortox.f022015e.png\";","module.exports = __webpack_public_path__ + \"img/deviant.9fcfb58a.png\";","module.exports = __webpack_public_path__ + \"img/nightwatchman.a2460a3d.png\";","module.exports = __webpack_public_path__ + \"img/imp.ff808901.png\";","module.exports = __webpack_public_path__ + \"img/moonchild.04fb95f1.png\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gradients.vue?vue&type=style&index=0&id=1e202a64&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/snakecharmer.7769a0cc.png\";","module.exports = __webpack_public_path__ + \"img/fortuneteller.a641461f.png\";","module.exports = __webpack_public_path__ + \"img/custom.5334aaeb.png\";","module.exports = __webpack_public_path__ + \"img/snv-minion.60768802.png\";","module.exports = __webpack_public_path__ + \"img/fool.0d847910.png\";","module.exports = __webpack_public_path__ + \"img/apprentice.ff782fd9.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReferenceModal.vue?vue&type=style&index=0&id=7d0ee60b&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/librarian.c867e6d6.png\";","module.exports = __webpack_public_path__ + \"img/snv-outsider.5b5cae7f.png\";","module.exports = __webpack_public_path__ + \"img/soldier.ebde76f0.png\";","module.exports = __webpack_public_path__ + \"img/golem.4a791883.png\";","module.exports = __webpack_public_path__ + \"img/minstrel.29c42f5b.png\";","module.exports = __webpack_public_path__ + \"img/exorcist.4d617582.png\";","module.exports = __webpack_public_path__ + \"img/harlot.403b3498.png\";","module.exports = __webpack_public_path__ + \"img/goon.eb004322.png\";","module.exports = __webpack_public_path__ + \"img/heretic.0bbeab70.png\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{\n night: _vm.grimoire.isNight,\n static: _vm.grimoire.isStatic\n },style:({\n backgroundImage: _vm.grimoire.background\n ? (\"url('\" + (_vm.grimoire.background) + \"')\")\n : ''\n }),attrs:{\"id\":\"app\",\"tabindex\":\"-1\"},on:{\"keyup\":_vm.keyup}},[(_vm.grimoire.background && _vm.grimoire.background.match(/\\.(mp4|webm)$/i))?_c('video',{attrs:{\"id\":\"background\",\"src\":_vm.grimoire.background,\"autoplay\":\"\",\"loop\":\"\"}}):_vm._e(),_c('div',{staticClass:\"backdrop\"}),_c('transition',{attrs:{\"name\":\"blur\"}},[(!_vm.players.length)?_c('Intro'):_vm._e(),(_vm.players.length && !_vm.session.nomination)?_c('TownInfo'):_vm._e(),(_vm.session.nomination)?_c('Vote'):_vm._e()],1),_c('TownSquare'),_c('Menu',{ref:\"menu\"}),_c('EditionModal'),_c('FabledModal'),_c('RolesModal'),_c('ReferenceModal'),_c('NightOrderModal'),_c('VoteHistoryModal'),_c('GameStateModal'),_c('Gradients'),_c('span',{attrs:{\"id\":\"version\"}},[_vm._v(\"v\"+_vm._s(_vm.version))])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"square\",class:{\n public: _vm.grimoire.isPublic,\n spectator: _vm.session.isSpectator,\n vote: _vm.session.nomination\n },attrs:{\"id\":\"townsquare\"}},[_c('ul',{staticClass:\"circle\",class:['size-' + _vm.players.length]},_vm._l((_vm.players),function(player,index){return _c('Player',{key:index,class:{\n from: Math.max(_vm.swap, _vm.move, _vm.nominate) === index,\n swap: _vm.swap > -1,\n move: _vm.move > -1,\n nominate: _vm.nominate > -1\n },attrs:{\"player\":player},on:{\"trigger\":function($event){return _vm.handleTrigger(index, $event)}}})}),1),(_vm.players.length)?_c('div',{ref:\"bluffs\",staticClass:\"bluffs\",class:{ closed: !_vm.isBluffsOpen }},[_c('h3',[(_vm.session.isSpectator)?_c('span',[_vm._v(\"Other characters\")]):_c('span',[_vm._v(\"Demon bluffs\")]),_c('font-awesome-icon',{attrs:{\"icon\":\"times-circle\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleBluffs($event)}}}),_c('font-awesome-icon',{attrs:{\"icon\":\"plus-circle\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleBluffs($event)}}})],1),_c('ul',_vm._l((_vm.bluffSize),function(index){return _c('li',{key:index,on:{\"click\":function($event){return _vm.openRoleModal(index * -1)}}},[_c('Token',{attrs:{\"role\":_vm.bluffs[index - 1]}})],1)}),0)]):_vm._e(),(_vm.fabled.length)?_c('div',{staticClass:\"fabled\",class:{ closed: !_vm.isFabledOpen }},[_c('h3',[_c('span',[_vm._v(\"Fabled\")]),_c('font-awesome-icon',{attrs:{\"icon\":\"times-circle\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleFabled($event)}}}),_c('font-awesome-icon',{attrs:{\"icon\":\"plus-circle\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleFabled($event)}}})],1),_c('ul',_vm._l((_vm.fabled),function(role,index){return _c('li',{key:index,on:{\"click\":function($event){return _vm.removeFabled(index)}}},[(_vm.nightOrder.get(role).first && _vm.grimoire.isNightOrder)?_c('div',{staticClass:\"night-order first\"},[_c('em',[_vm._v(_vm._s(_vm.nightOrder.get(role).first)+\".\")]),(role.firstNightReminder)?_c('span',[_vm._v(_vm._s(role.firstNightReminder))]):_vm._e()]):_vm._e(),(_vm.nightOrder.get(role).other && _vm.grimoire.isNightOrder)?_c('div',{staticClass:\"night-order other\"},[_c('em',[_vm._v(_vm._s(_vm.nightOrder.get(role).other)+\".\")]),(role.otherNightReminder)?_c('span',[_vm._v(_vm._s(role.otherNightReminder))]):_vm._e()]):_vm._e(),_c('Token',{attrs:{\"role\":role}})],1)}),0)]):_vm._e(),_c('ReminderModal',{attrs:{\"player-index\":_vm.selectedPlayer}}),_c('RoleModal',{attrs:{\"player-index\":_vm.selectedPlayer}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{style:(_vm.zoom)},[_c('div',{ref:\"player\",staticClass:\"player\",class:[\n {\n dead: _vm.player.isDead,\n marked: _vm.session.markedPlayer === _vm.index,\n 'no-vote': _vm.player.isVoteless,\n you: _vm.session.sessionId && _vm.player.id && _vm.player.id === _vm.session.playerId,\n 'vote-yes': _vm.session.votes[_vm.index],\n 'vote-lock': _vm.voteLocked\n },\n _vm.player.role.team\n ]},[_c('div',{staticClass:\"shroud\",on:{\"click\":function($event){return _vm.toggleStatus()}}}),_c('div',{staticClass:\"life\",on:{\"click\":function($event){return _vm.toggleStatus()}}}),(_vm.nightOrder.get(_vm.player).first && _vm.grimoire.isNightOrder)?_c('div',{staticClass:\"night-order first\"},[_c('em',[_vm._v(_vm._s(_vm.nightOrder.get(_vm.player).first)+\".\")]),(_vm.player.role.firstNightReminder)?_c('span',[_vm._v(_vm._s(_vm.player.role.firstNightReminder))]):_vm._e()]):_vm._e(),(_vm.nightOrder.get(_vm.player).other && _vm.grimoire.isNightOrder)?_c('div',{staticClass:\"night-order other\"},[_c('em',[_vm._v(_vm._s(_vm.nightOrder.get(_vm.player).other)+\".\")]),(_vm.player.role.otherNightReminder)?_c('span',[_vm._v(_vm._s(_vm.player.role.otherNightReminder))]):_vm._e()]):_vm._e(),_c('Token',{attrs:{\"role\":_vm.player.role},on:{\"set-role\":function($event){return _vm.$emit('trigger', ['openRoleModal'])}}}),_c('div',{staticClass:\"overlay\"},[_c('font-awesome-icon',{staticClass:\"vote\",attrs:{\"icon\":\"hand-paper\",\"title\":\"Hand UP\"},on:{\"click\":function($event){return _vm.vote()}}}),_c('font-awesome-icon',{staticClass:\"vote\",attrs:{\"icon\":\"times\",\"title\":\"Hand DOWN\"},on:{\"click\":function($event){return _vm.vote()}}}),_c('font-awesome-icon',{staticClass:\"cancel\",attrs:{\"icon\":\"times-circle\",\"title\":\"Cancel\"},on:{\"click\":function($event){return _vm.cancel()}}}),_c('font-awesome-icon',{staticClass:\"swap\",attrs:{\"icon\":\"exchange-alt\",\"title\":\"Swap seats with this player\"},on:{\"click\":function($event){return _vm.swapPlayer(_vm.player)}}}),_c('font-awesome-icon',{staticClass:\"move\",attrs:{\"icon\":\"redo-alt\",\"title\":\"Move player to this seat\"},on:{\"click\":function($event){return _vm.movePlayer(_vm.player)}}}),_c('font-awesome-icon',{staticClass:\"nominate\",attrs:{\"icon\":\"hand-point-right\",\"title\":\"Nominate this player\"},on:{\"click\":function($event){return _vm.nominatePlayer(_vm.player)}}})],1),(_vm.player.id && _vm.session.sessionId)?_c('font-awesome-icon',{staticClass:\"seat\",class:{ highlight: _vm.session.isRolesDistributed },attrs:{\"icon\":\"chair\"}}):_vm._e(),(_vm.player.isDead && !_vm.player.isVoteless)?_c('font-awesome-icon',{staticClass:\"has-vote\",attrs:{\"icon\":\"vote-yea\",\"title\":\"Ghost vote\"},on:{\"click\":function($event){return _vm.updatePlayer('isVoteless', true)}}}):_vm._e(),_c('div',{staticClass:\"marked\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"skull\"}})],1),_c('div',{staticClass:\"name\",class:{ active: _vm.isMenuOpen },on:{\"click\":function($event){_vm.isMenuOpen = !_vm.isMenuOpen}}},[_c('span',[_vm._v(_vm._s(_vm.player.name))]),(_vm.player.pronouns)?_c('font-awesome-icon',{attrs:{\"icon\":\"venus-mars\"}}):_vm._e(),(_vm.player.pronouns)?_c('div',{staticClass:\"pronouns\"},[_c('span',[_vm._v(_vm._s(_vm.player.pronouns))])]):_vm._e()],1),_c('transition',{attrs:{\"name\":\"fold\"}},[(_vm.isMenuOpen)?_c('ul',{staticClass:\"menu\"},[(\n !_vm.session.isSpectator ||\n (_vm.session.isSpectator && _vm.player.id === _vm.session.playerId)\n )?_c('li',{on:{\"click\":_vm.changePronouns}},[_c('font-awesome-icon',{attrs:{\"icon\":\"venus-mars\"}}),_vm._v(\"Change Pronouns \")],1):_vm._e(),(!_vm.session.isSpectator)?[_c('li',{on:{\"click\":_vm.changeName}},[_c('font-awesome-icon',{attrs:{\"icon\":\"user-edit\"}}),_vm._v(\"Rename \")],1),_c('li',{class:{ disabled: _vm.session.lockedVote },on:{\"click\":function($event){return _vm.movePlayer()}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"redo-alt\"}}),_vm._v(\" Move player \")],1),_c('li',{class:{ disabled: _vm.session.lockedVote },on:{\"click\":function($event){return _vm.swapPlayer()}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"exchange-alt\"}}),_vm._v(\" Swap seats \")],1),_c('li',{class:{ disabled: _vm.session.lockedVote },on:{\"click\":_vm.removePlayer}},[_c('font-awesome-icon',{attrs:{\"icon\":\"times-circle\"}}),_vm._v(\" Remove \")],1),(_vm.player.id && _vm.session.sessionId)?_c('li',{on:{\"click\":function($event){return _vm.updatePlayer('id', '', true)}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"chair\"}}),_vm._v(\" Empty seat \")],1):_vm._e(),(!_vm.session.nomination)?[_c('li',{on:{\"click\":function($event){return _vm.nominatePlayer()}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"hand-point-right\"}}),_vm._v(\" Nomination \")],1)]:_vm._e()]:_vm._e(),(_vm.session.isSpectator)?_c('li',{class:{ disabled: _vm.player.id && _vm.player.id !== _vm.session.playerId },on:{\"click\":_vm.claimSeat}},[_c('font-awesome-icon',{attrs:{\"icon\":\"chair\"}}),(!_vm.player.id)?[_vm._v(\" Claim seat \")]:(_vm.player.id === _vm.session.playerId)?[_vm._v(\" Vacate seat \")]:[_vm._v(\" Seat occupied\")]],2):_vm._e()],2):_vm._e()])],1),(_vm.player.reminders)?_vm._l((_vm.player.reminders),function(reminder){return _c('div',{key:reminder.role + ' ' + reminder.name,staticClass:\"reminder\",class:[reminder.role],on:{\"click\":function($event){return _vm.removeReminder(reminder)}}},[_c('span',{staticClass:\"icon\",style:({\n backgroundImage: (\"url(\" + (reminder.image && _vm.grimoire.isImageOptIn\n ? reminder.image\n : require('../assets/icons/' +\n (reminder.imageAlt || reminder.role) +\n '.png')) + \")\")\n })}),_c('span',{staticClass:\"text\"},[_vm._v(_vm._s(reminder.name))])])}):_vm._e(),_c('div',{staticClass:\"reminder add\",on:{\"click\":function($event){return _vm.$emit('trigger', ['openReminderModal'])}}},[_c('span',{staticClass:\"icon\"})])],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"token\",class:[_vm.role.id],on:{\"click\":_vm.setRole}},[(_vm.role.id)?_c('span',{staticClass:\"icon\",style:({\n backgroundImage: (\"url(\" + (_vm.role.image && _vm.grimoire.isImageOptIn\n ? _vm.role.image\n : require('../assets/icons/' + (_vm.role.imageAlt || _vm.role.id) + '.png')) + \")\")\n })}):_vm._e(),(_vm.role.firstNight || _vm.role.firstNightReminder)?_c('span',{staticClass:\"leaf-left\"}):_vm._e(),(_vm.role.otherNight || _vm.role.otherNightReminder)?_c('span',{staticClass:\"leaf-right\"}):_vm._e(),(_vm.reminderLeaves)?_c('span',{class:['leaf-top' + _vm.reminderLeaves]}):_vm._e(),(_vm.role.setup)?_c('span',{staticClass:\"leaf-orange\"}):_vm._e(),_c('svg',{staticClass:\"name\",attrs:{\"viewBox\":\"0 0 150 150\"}},[_c('path',{attrs:{\"d\":\"M 13 75 C 13 160, 138 160, 138 75\",\"id\":\"curve\",\"fill\":\"transparent\"}}),_c('text',{staticClass:\"label mozilla\",attrs:{\"width\":\"150\",\"x\":\"66.6%\",\"text-anchor\":\"middle\",\"font-size\":_vm._f(\"nameToFontSize\")(_vm.role.name)}},[_c('textPath',{attrs:{\"xlink:href\":\"#curve\"}},[_vm._v(\" \"+_vm._s(_vm.role.name)+\" \")])])]),_c('div',{staticClass:\"edition\",class:[(\"edition-\" + (_vm.role.edition)), _vm.role.team]}),(_vm.role.ability)?_c('div',{staticClass:\"ability\"},[_vm._v(\" \"+_vm._s(_vm.role.ability)+\" \")]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n
\n \n \n \n \n \n \n \n
\n {{ role.ability }}\n
\n
\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Token.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Token.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Token.vue?vue&type=template&id=deec739a&scoped=true&\"\nimport script from \"./Token.vue?vue&type=script&lang=js&\"\nexport * from \"./Token.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Token.vue?vue&type=style&index=0&id=deec739a&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"deec739a\",\n null\n \n)\n\nexport default component.exports","\n
\n \n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RolesModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RolesModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RolesModal.vue?vue&type=template&id=365502ca&scoped=true&\"\nimport script from \"./RolesModal.vue?vue&type=script&lang=js&\"\nexport * from \"./RolesModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RolesModal.vue?vue&type=style&index=0&id=365502ca&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"365502ca\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.modals.edition)?_c('Modal',{staticClass:\"editions\",on:{\"close\":function($event){return _vm.toggleModal('edition')}}},[(!_vm.isCustom)?_c('div',[_c('h3',[_vm._v(\"Select an edition:\")]),_c('ul',{staticClass:\"editions\"},[_vm._l((_vm.editions),function(edition){return _c('li',{key:edition.id,staticClass:\"edition\",class:['edition-' + edition.id],style:({\n backgroundImage: (\"url(\" + (require('../../assets/editions/' +\n edition.id +\n '.png')) + \")\")\n }),on:{\"click\":function($event){return _vm.setEdition(edition)}}},[_vm._v(\" \"+_vm._s(edition.name)+\" \")])}),_c('li',{staticClass:\"edition edition-custom\",style:({\n backgroundImage: (\"url(\" + (require('../../assets/editions/custom.png')) + \")\")\n }),on:{\"click\":function($event){_vm.isCustom = true}}},[_vm._v(\" Custom Script / Characters \")])],2)]):_c('div',{staticClass:\"custom\"},[_c('h3',[_vm._v(\"Load custom script / characters\")]),_vm._v(\" To play with a custom script, you need to select the characters you want to play with in the official \"),_c('a',{attrs:{\"href\":\"https://script.bloodontheclocktower.com/\",\"target\":\"_blank\"}},[_vm._v(\"Script Tool\")]),_vm._v(\" and then upload the generated \\\"custom-list.json\\\" either directly here or provide a URL to such a hosted JSON file.\"),_c('br'),_c('br'),_vm._v(\" To play with custom characters, please read \"),_c('a',{attrs:{\"href\":\"https://github.com/bra1n/townsquare#custom-characters\",\"target\":\"_blank\"}},[_vm._v(\"the documentation\")]),_vm._v(\" on how to write a custom character definition file. \"),_c('b',[_vm._v(\"Only load custom JSON files from sources that you trust!\")]),_c('h3',[_vm._v(\"Some popular custom scripts:\")]),_c('ul',{staticClass:\"scripts\"},_vm._l((_vm.scripts),function(script,index){return _c('li',{key:index,on:{\"click\":function($event){return _vm.handleURL(script[1])}}},[_vm._v(\" \"+_vm._s(script[0])+\" \")])}),0),_c('input',{ref:\"upload\",attrs:{\"type\":\"file\",\"accept\":\"application/json\"},on:{\"change\":_vm.handleUpload}}),_c('div',{staticClass:\"button-group\"},[_c('div',{staticClass:\"button\",on:{\"click\":_vm.openUpload}},[_c('font-awesome-icon',{attrs:{\"icon\":\"file-upload\"}}),_vm._v(\" Upload JSON \")],1),_c('div',{staticClass:\"button\",on:{\"click\":_vm.promptURL}},[_c('font-awesome-icon',{attrs:{\"icon\":\"link\"}}),_vm._v(\" Enter URL \")],1),_c('div',{staticClass:\"button\",on:{\"click\":function($event){_vm.isCustom = false}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"undo\"}}),_vm._v(\" Back \")],1)])])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n
\n
Select an edition:
\n
\n
\n {{ edition.name }}\n
\n
\n Custom Script / Characters\n
\n
\n
\n
\n
Load custom script / characters
\n To play with a custom script, you need to select the characters you want\n to play with in the official\n Script Tool\n and then upload the generated \"custom-list.json\" either directly here or\n provide a URL to such a hosted JSON file. \n \n To play with custom characters, please read\n the documentation\n on how to write a custom character definition file.\n Only load custom JSON files from sources that you trust!\n
Some popular custom scripts:
\n
\n
\n {{ script[0] }}\n
\n
\n \n
\n
\n Upload JSON\n
\n
\n Enter URL\n
\n
\n Back\n
\n
\n
\n \n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditionModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditionModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EditionModal.vue?vue&type=template&id=7c2292c2&scoped=true&\"\nimport script from \"./EditionModal.vue?vue&type=script&lang=js&\"\nexport * from \"./EditionModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EditionModal.vue?vue&type=style&index=0&id=7c2292c2&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7c2292c2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"intro\"},[_c('img',{attrs:{\"src\":\"static/apple-icon.png\",\"alt\":\"\"}}),_vm._v(\" Welcome to the (unofficial) \"),_c('b',[_vm._v(\"Virtual Town Square and Grimoire\")]),_vm._v(\" for Blood on the Clocktower! Please add more players through the \"),_c('span',{staticClass:\"button\",on:{\"click\":_vm.toggleMenu}},[_c('font-awesome-icon',{attrs:{\"icon\":\"cog\"}}),_vm._v(\" Menu \")],1),_vm._v(\" on the top right or by pressing \"),_c('b',[_vm._v(\"[A]\")]),_vm._v(\". You can also join a game session by pressing \"),_c('b',[_vm._v(\"[J]\")]),_vm._v(\".\"),_c('br'),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"footer\"},[_vm._v(\" This project is free and open source and can be found on \"),_c('a',{attrs:{\"href\":\"https://github.com/bra1n/townsquare\",\"target\":\"_blank\"}},[_vm._v(\"GitHub\")]),_vm._v(\". It is not affiliated with The Pandemonium Institute. \\\"Blood on the Clocktower\\\" is a trademark of Steven Medway and The Pandemonium Institute. \")])}]\n\nexport { render, staticRenderFns }","\n
\n \n Welcome to the (unofficial)\n Virtual Town Square and Grimoire for Blood on the Clocktower! Please\n add more players through the\n \n Menu\n \n on the top right or by pressing [A]. You can also join a game session\n by pressing [J]. \n \n
\n\n\n\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=90c4b058&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","class LiveSession {\n constructor(store) {\n this._wss = \"wss://live.clocktower.online:8080/\";\n // this._wss = \"ws://localhost:8081/\"; // uncomment if using local server with NODE_ENV=development\n this._socket = null;\n this._isSpectator = true;\n this._gamestate = [];\n this._store = store;\n this._pingInterval = 30 * 1000; // 30 seconds between pings\n this._pingTimer = null;\n this._reconnectTimer = null;\n this._players = {}; // map of players connected to a session\n this._pings = {}; // map of player IDs to ping\n // reconnect to previous session\n if (this._store.state.session.sessionId) {\n this.connect(this._store.state.session.sessionId);\n }\n }\n\n /**\n * Open a new session for the passed channel.\n * @param channel\n * @private\n */\n _open(channel) {\n this.disconnect();\n this._socket = new WebSocket(\n this._wss +\n channel +\n \"/\" +\n (this._isSpectator ? this._store.state.session.playerId : \"host\")\n );\n this._socket.addEventListener(\"message\", this._handleMessage.bind(this));\n this._socket.onopen = this._onOpen.bind(this);\n this._socket.onclose = err => {\n this._socket = null;\n clearInterval(this._pingTimer);\n this._pingTimer = null;\n if (err.code !== 1000) {\n // connection interrupted, reconnect after 3 seconds\n this._store.commit(\"session/setReconnecting\", true);\n this._reconnectTimer = setTimeout(\n () => this.connect(channel),\n 3 * 1000\n );\n } else {\n this._store.commit(\"session/setSessionId\", \"\");\n if (err.reason) alert(err.reason);\n }\n };\n }\n\n /**\n * Send a message through the socket.\n * @param command\n * @param params\n * @private\n */\n _send(command, params) {\n if (this._socket && this._socket.readyState === 1) {\n this._socket.send(JSON.stringify([command, params]));\n }\n }\n\n /**\n * Send a message directly to a single playerId, if provided.\n * Otherwise broadcast it.\n * @param playerId player ID or \"host\", optional\n * @param command\n * @param params\n * @private\n */\n _sendDirect(playerId, command, params) {\n if (playerId) {\n this._send(\"direct\", { [playerId]: [command, params] });\n } else {\n this._send(command, params);\n }\n }\n\n /**\n * Open event handler for socket.\n * @private\n */\n _onOpen() {\n if (this._isSpectator) {\n this._sendDirect(\n \"host\",\n \"getGamestate\",\n this._store.state.session.playerId\n );\n } else {\n this.sendGamestate();\n }\n this._ping();\n }\n\n /**\n * Send a ping message with player ID and ST flag.\n * @private\n */\n _ping() {\n this._handlePing();\n this._send(\"ping\", [\n this._isSpectator\n ? this._store.state.session.playerId\n : Object.keys(this._players).length,\n \"latency\"\n ]);\n clearTimeout(this._pingTimer);\n this._pingTimer = setTimeout(this._ping.bind(this), this._pingInterval);\n }\n\n /**\n * Handle an incoming socket message.\n * @param data\n * @private\n */\n _handleMessage({ data }) {\n let command, params;\n try {\n [command, params] = JSON.parse(data);\n } catch (err) {\n console.log(\"unsupported socket message\", data);\n }\n switch (command) {\n case \"getGamestate\":\n this.sendGamestate(params);\n break;\n case \"edition\":\n this._updateEdition(params);\n break;\n case \"fabled\":\n this._updateFabled(params);\n break;\n case \"gs\":\n this._updateGamestate(params);\n break;\n case \"player\":\n this._updatePlayer(params);\n break;\n case \"claim\":\n this._updateSeat(params);\n break;\n case \"ping\":\n this._handlePing(params);\n break;\n case \"nomination\":\n if (!this._isSpectator) return;\n if (!params) {\n // create vote history record\n this._store.commit(\n \"session/addHistory\",\n this._store.state.players.players\n );\n }\n this._store.commit(\"session/nomination\", { nomination: params });\n break;\n case \"swap\":\n if (!this._isSpectator) return;\n this._store.commit(\"players/swap\", params);\n break;\n case \"move\":\n if (!this._isSpectator) return;\n this._store.commit(\"players/move\", params);\n break;\n case \"remove\":\n if (!this._isSpectator) return;\n this._store.commit(\"players/remove\", params);\n break;\n case \"marked\":\n if (!this._isSpectator) return;\n this._store.commit(\"session/setMarkedPlayer\", params);\n break;\n case \"isNight\":\n if (!this._isSpectator) return;\n this._store.commit(\"toggleNight\", params);\n break;\n case \"isVoteHistoryAllowed\":\n if (!this._isSpectator) return;\n this._store.commit(\"session/setVoteHistoryAllowed\", params);\n this._store.commit(\"session/clearVoteHistory\");\n break;\n case \"votingSpeed\":\n if (!this._isSpectator) return;\n this._store.commit(\"session/setVotingSpeed\", params);\n break;\n case \"clearVoteHistory\":\n if (!this._isSpectator) return;\n this._store.commit(\"session/clearVoteHistory\");\n break;\n case \"isVoteInProgress\":\n if (!this._isSpectator) return;\n this._store.commit(\"session/setVoteInProgress\", params);\n break;\n case \"vote\":\n this._handleVote(params);\n break;\n case \"lock\":\n this._handleLock(params);\n break;\n case \"bye\":\n this._handleBye(params);\n break;\n case \"pronouns\":\n this._updatePlayerPronouns(params);\n break;\n }\n }\n\n /**\n * Connect to a new live session, either as host or spectator.\n * Set a unique playerId if there isn't one yet.\n * @param channel\n */\n connect(channel) {\n if (!this._store.state.session.playerId) {\n this._store.commit(\n \"session/setPlayerId\",\n Math.random()\n .toString(36)\n .substr(2)\n );\n }\n this._pings = {};\n this._store.commit(\"session/setPlayerCount\", 0);\n this._store.commit(\"session/setPing\", 0);\n this._isSpectator = this._store.state.session.isSpectator;\n this._open(channel);\n }\n\n /**\n * Close the current session, if any.\n */\n disconnect() {\n this._pings = {};\n this._store.commit(\"session/setPlayerCount\", 0);\n this._store.commit(\"session/setPing\", 0);\n this._store.commit(\"session/setReconnecting\", false);\n clearTimeout(this._reconnectTimer);\n if (this._socket) {\n if (this._isSpectator) {\n this._sendDirect(\"host\", \"bye\", this._store.state.session.playerId);\n }\n this._socket.close(1000);\n this._socket = null;\n }\n }\n\n /**\n * Publish the current gamestate.\n * Optional param to reduce traffic. (send only player data)\n * @param playerId\n * @param isLightweight\n */\n sendGamestate(playerId = \"\", isLightweight = false) {\n if (this._isSpectator) return;\n this._gamestate = this._store.state.players.players.map(player => ({\n name: player.name,\n id: player.id,\n isDead: player.isDead,\n isVoteless: player.isVoteless,\n pronouns: player.pronouns,\n ...(player.role && player.role.team === \"traveler\"\n ? { roleId: player.role.id }\n : {})\n }));\n if (isLightweight) {\n this._sendDirect(playerId, \"gs\", {\n gamestate: this._gamestate,\n isLightweight\n });\n } else {\n const { session, grimoire } = this._store.state;\n const { fabled } = this._store.state.players;\n this.sendEdition(playerId);\n this._sendDirect(playerId, \"gs\", {\n gamestate: this._gamestate,\n isNight: grimoire.isNight,\n isVoteHistoryAllowed: session.isVoteHistoryAllowed,\n nomination: session.nomination,\n votingSpeed: session.votingSpeed,\n lockedVote: session.lockedVote,\n isVoteInProgress: session.isVoteInProgress,\n markedPlayer: session.markedPlayer,\n fabled: fabled.map(f => (f.isCustom ? f : { id: f.id })),\n ...(session.nomination ? { votes: session.votes } : {})\n });\n }\n }\n\n /**\n * Update the gamestate based on incoming data.\n * @param data\n * @private\n */\n _updateGamestate(data) {\n if (!this._isSpectator) return;\n const {\n gamestate,\n isLightweight,\n isNight,\n isVoteHistoryAllowed,\n nomination,\n votingSpeed,\n votes,\n lockedVote,\n isVoteInProgress,\n markedPlayer,\n fabled\n } = data;\n const players = this._store.state.players.players;\n // adjust number of players\n if (players.length < gamestate.length) {\n for (let x = players.length; x < gamestate.length; x++) {\n this._store.commit(\"players/add\", gamestate[x].name);\n }\n } else if (players.length > gamestate.length) {\n for (let x = players.length; x > gamestate.length; x--) {\n this._store.commit(\"players/remove\", x - 1);\n }\n }\n // update status for each player\n gamestate.forEach((state, x) => {\n const player = players[x];\n const { roleId } = state;\n // update relevant properties\n [\"name\", \"id\", \"isDead\", \"isVoteless\", \"pronouns\"].forEach(property => {\n const value = state[property];\n if (player[property] !== value) {\n this._store.commit(\"players/update\", { player, property, value });\n }\n });\n // roles are special, because of travelers\n if (roleId && player.role.id !== roleId) {\n const role =\n this._store.state.roles.get(roleId) ||\n this._store.getters.rolesJSONbyId.get(roleId);\n if (role) {\n this._store.commit(\"players/update\", {\n player,\n property: \"role\",\n value: role\n });\n }\n } else if (!roleId && player.role.team === \"traveler\") {\n this._store.commit(\"players/update\", {\n player,\n property: \"role\",\n value: {}\n });\n }\n });\n if (!isLightweight) {\n this._store.commit(\"toggleNight\", !!isNight);\n this._store.commit(\"session/setVoteHistoryAllowed\", isVoteHistoryAllowed);\n this._store.commit(\"session/nomination\", {\n nomination,\n votes,\n votingSpeed,\n lockedVote,\n isVoteInProgress\n });\n this._store.commit(\"session/setMarkedPlayer\", markedPlayer);\n this._store.commit(\"players/setFabled\", {\n fabled: fabled.map(f => this._store.state.fabled.get(f.id) || f)\n });\n }\n }\n\n /**\n * Publish an edition update. ST only\n * @param playerId\n */\n sendEdition(playerId = \"\") {\n if (this._isSpectator) return;\n const { edition } = this._store.state;\n let roles;\n if (!edition.isOfficial) {\n roles = this._store.getters.customRolesStripped;\n }\n this._sendDirect(playerId, \"edition\", {\n edition: edition.isOfficial ? { id: edition.id } : edition,\n ...(roles ? { roles } : {})\n });\n }\n\n /**\n * Update edition and roles for custom editions.\n * @param edition\n * @param roles\n * @private\n */\n _updateEdition({ edition, roles }) {\n if (!this._isSpectator) return;\n this._store.commit(\"setEdition\", edition);\n if (roles) {\n this._store.commit(\"setCustomRoles\", roles);\n if (this._store.state.roles.size !== roles.length) {\n const missing = [];\n roles.forEach(({ id }) => {\n if (!this._store.state.roles.get(id)) {\n missing.push(id);\n }\n });\n alert(\n `This session contains custom characters that can't be found. ` +\n `Please load them before joining! ` +\n `Missing roles: ${missing.join(\", \")}`\n );\n this.disconnect();\n this._store.commit(\"toggleModal\", \"edition\");\n }\n }\n }\n\n /**\n * Publish a fabled update. ST only\n */\n sendFabled() {\n if (this._isSpectator) return;\n const { fabled } = this._store.state.players;\n this._send(\n \"fabled\",\n fabled.map(f => (f.isCustom ? f : { id: f.id }))\n );\n }\n\n /**\n * Update fabled roles.\n * @param fabled\n * @private\n */\n _updateFabled(fabled) {\n if (!this._isSpectator) return;\n this._store.commit(\"players/setFabled\", {\n fabled: fabled.map(f => this._store.state.fabled.get(f.id) || f)\n });\n }\n\n /**\n * Publish a player update.\n * @param player\n * @param property\n * @param value\n */\n sendPlayer({ player, property, value }) {\n if (this._isSpectator || property === \"reminders\") return;\n const index = this._store.state.players.players.indexOf(player);\n if (property === \"role\") {\n if (value.team && value.team === \"traveler\") {\n // update local gamestate to remember this player as a traveler\n this._gamestate[index].roleId = value.id;\n this._send(\"player\", {\n index,\n property,\n value: value.id\n });\n } else if (this._gamestate[index].roleId) {\n // player was previously a traveler\n delete this._gamestate[index].roleId;\n this._send(\"player\", { index, property, value: \"\" });\n }\n } else {\n this._send(\"player\", { index, property, value });\n }\n }\n\n /**\n * Update a player based on incoming data. Player only.\n * @param index\n * @param property\n * @param value\n * @private\n */\n _updatePlayer({ index, property, value }) {\n if (!this._isSpectator) return;\n const player = this._store.state.players.players[index];\n if (!player) return;\n // special case where a player stops being a traveler\n if (property === \"role\") {\n if (!value && player.role.team === \"traveler\") {\n // reset to an unknown role\n this._store.commit(\"players/update\", {\n player,\n property: \"role\",\n value: {}\n });\n } else {\n // load role, first from session, the global, then fail gracefully\n const role =\n this._store.state.roles.get(value) ||\n this._store.getters.rolesJSONbyId.get(value) ||\n {};\n this._store.commit(\"players/update\", {\n player,\n property: \"role\",\n value: role\n });\n }\n } else {\n // just update the player otherwise\n this._store.commit(\"players/update\", { player, property, value });\n }\n }\n\n /**\n * Publish a player pronouns update\n * @param player\n * @param value\n * @param isFromSockets\n */\n sendPlayerPronouns({ player, value, isFromSockets }) {\n //send pronoun only for the seated player or storyteller\n //Do not re-send pronoun data for an update that was recieved from the sockets layer\n if (\n isFromSockets ||\n (this._isSpectator && this._store.state.session.playerId !== player.id)\n )\n return;\n const index = this._store.state.players.players.indexOf(player);\n this._send(\"pronouns\", [index, value]);\n }\n\n /**\n * Update a pronouns based on incoming data.\n * @param index\n * @param value\n * @private\n */\n _updatePlayerPronouns([index, value]) {\n const player = this._store.state.players.players[index];\n\n this._store.commit(\"players/update\", {\n player,\n property: \"pronouns\",\n value,\n isFromSockets: true\n });\n }\n\n /**\n * Handle a ping message by another player / storyteller\n * @param playerIdOrCount\n * @param latency\n * @private\n */\n _handlePing([playerIdOrCount = 0, latency] = []) {\n const now = new Date().getTime();\n if (!this._isSpectator) {\n // remove players that haven't sent a ping in twice the timespan\n for (let player in this._players) {\n if (now - this._players[player] > this._pingInterval * 2) {\n delete this._players[player];\n delete this._pings[player];\n }\n }\n // remove claimed seats from players that are no longer connected\n this._store.state.players.players.forEach(player => {\n if (player.id && !this._players[player.id]) {\n this._store.commit(\"players/update\", {\n player,\n property: \"id\",\n value: \"\"\n });\n }\n });\n // store new player data\n if (playerIdOrCount) {\n this._players[playerIdOrCount] = now;\n const ping = parseInt(latency, 10);\n if (ping && ping > 0 && ping < 30 * 1000) {\n // ping to Players\n this._pings[playerIdOrCount] = ping;\n const pings = Object.values(this._pings);\n this._store.commit(\n \"session/setPing\",\n Math.round(pings.reduce((a, b) => a + b, 0) / pings.length)\n );\n }\n }\n } else if (latency) {\n // ping to ST\n this._store.commit(\"session/setPing\", parseInt(latency, 10));\n }\n // update player count\n if (!this._isSpectator || playerIdOrCount) {\n this._store.commit(\n \"session/setPlayerCount\",\n this._isSpectator ? playerIdOrCount : Object.keys(this._players).length\n );\n }\n }\n\n /**\n * Handle a player leaving the sessions. ST only\n * @param playerId\n * @private\n */\n _handleBye(playerId) {\n if (this._isSpectator) return;\n delete this._players[playerId];\n this._store.commit(\n \"session/setPlayerCount\",\n Object.keys(this._players).length\n );\n }\n\n /**\n * Claim a seat, needs to be confirmed by the Storyteller.\n * Seats already occupied can't be claimed.\n * @param seat either -1 to vacate or the index of the seat claimed\n */\n claimSeat(seat) {\n if (!this._isSpectator) return;\n const players = this._store.state.players.players;\n if (players.length > seat && (seat < 0 || !players[seat].id)) {\n this._send(\"claim\", [seat, this._store.state.session.playerId]);\n }\n }\n\n /**\n * Update a player id associated with that seat.\n * @param index seat index or -1\n * @param value playerId to add / remove\n * @private\n */\n _updateSeat([index, value]) {\n if (this._isSpectator) return;\n const property = \"id\";\n const players = this._store.state.players.players;\n // remove previous seat\n const oldIndex = players.findIndex(({ id }) => id === value);\n if (oldIndex >= 0 && oldIndex !== index) {\n this._store.commit(\"players/update\", {\n player: players[oldIndex],\n property,\n value: \"\"\n });\n }\n // add playerId to new seat\n if (index >= 0) {\n const player = players[index];\n if (!player) return;\n this._store.commit(\"players/update\", { player, property, value });\n }\n // update player session list as if this was a ping\n this._handlePing([true, value, 0]);\n }\n\n /**\n * Distribute player roles to all seated players in a direct message.\n * This will be split server side so that each player only receives their own (sub)message.\n */\n distributeRoles() {\n if (this._isSpectator) return;\n const message = {};\n this._store.state.players.players.forEach((player, index) => {\n if (player.id && player.role) {\n message[player.id] = [\n \"player\",\n { index, property: \"role\", value: player.role.id }\n ];\n }\n });\n if (Object.keys(message).length) {\n this._send(\"direct\", message);\n }\n }\n\n /**\n * A player nomination. ST only\n * This also syncs the voting speed to the players.\n * Payload can be an object with {nomination} property or just the nomination itself, or undefined.\n * @param payload [nominator, nominee]|{nomination}\n */\n nomination(payload) {\n if (this._isSpectator) return;\n const nomination = payload ? payload.nomination || payload : payload;\n const players = this._store.state.players.players;\n if (\n !nomination ||\n (players.length > nomination[0] && players.length > nomination[1])\n ) {\n this.setVotingSpeed(this._store.state.session.votingSpeed);\n this._send(\"nomination\", nomination);\n }\n }\n\n /**\n * Set the isVoteInProgress status. ST only\n */\n setVoteInProgress() {\n if (this._isSpectator) return;\n this._send(\"isVoteInProgress\", this._store.state.session.isVoteInProgress);\n }\n\n /**\n * Send the isNight status. ST only\n */\n setIsNight() {\n if (this._isSpectator) return;\n this._send(\"isNight\", this._store.state.grimoire.isNight);\n }\n\n /**\n * Send the isVoteHistoryAllowed state. ST only\n */\n setVoteHistoryAllowed() {\n if (this._isSpectator) return;\n this._send(\n \"isVoteHistoryAllowed\",\n this._store.state.session.isVoteHistoryAllowed\n );\n }\n\n /**\n * Send the voting speed. ST only\n * @param votingSpeed voting speed in seconds, minimum 1\n */\n setVotingSpeed(votingSpeed) {\n if (this._isSpectator) return;\n if (votingSpeed) {\n this._send(\"votingSpeed\", votingSpeed);\n }\n }\n\n /**\n * Set which player is on the block. ST only\n * @param playerIndex, player id or -1 for empty\n */\n setMarked(playerIndex) {\n if (this._isSpectator) return;\n this._send(\"marked\", playerIndex);\n }\n\n /**\n * Clear the vote history for everyone. ST only\n */\n clearVoteHistory() {\n if (this._isSpectator) return;\n this._send(\"clearVoteHistory\");\n }\n\n /**\n * Send a vote. Player or ST\n * @param index Seat of the player\n * @param sync Flag whether to sync this vote with others or not\n */\n vote([index]) {\n const player = this._store.state.players.players[index];\n if (\n this._store.state.session.playerId === player.id ||\n !this._isSpectator\n ) {\n // send vote only if it is your own vote or you are the storyteller\n this._send(\"vote\", [\n index,\n this._store.state.session.votes[index],\n !this._isSpectator\n ]);\n }\n }\n\n /**\n * Handle an incoming vote, but only if it is from ST or unlocked.\n * @param index\n * @param vote\n * @param fromST\n */\n _handleVote([index, vote, fromST]) {\n const { session, players } = this._store.state;\n const playerCount = players.players.length;\n const indexAdjusted =\n (index - 1 + playerCount - session.nomination[1]) % playerCount;\n if (fromST || indexAdjusted >= session.lockedVote - 1) {\n this._store.commit(\"session/vote\", [index, vote]);\n }\n }\n\n /**\n * Lock a vote. ST only\n */\n lockVote() {\n if (this._isSpectator) return;\n const { lockedVote, votes, nomination } = this._store.state.session;\n const { players } = this._store.state.players;\n const index = (nomination[1] + lockedVote - 1) % players.length;\n this._send(\"lock\", [this._store.state.session.lockedVote, votes[index]]);\n }\n\n /**\n * Update vote lock and the locked vote, if it differs. Player only\n * @param lock\n * @param vote\n * @private\n */\n _handleLock([lock, vote]) {\n if (!this._isSpectator) return;\n this._store.commit(\"session/lockVote\", lock);\n if (lock > 1) {\n const { lockedVote, nomination } = this._store.state.session;\n const { players } = this._store.state.players;\n const index = (nomination[1] + lockedVote - 1) % players.length;\n if (this._store.state.session.votes[index] !== vote) {\n this._store.commit(\"session/vote\", [index, vote]);\n }\n }\n }\n\n /**\n * Swap two player seats. ST only\n * @param payload\n */\n swapPlayer(payload) {\n if (this._isSpectator) return;\n this._send(\"swap\", payload);\n }\n\n /**\n * Move a player to another seat. ST only\n * @param payload\n */\n movePlayer(payload) {\n if (this._isSpectator) return;\n this._send(\"move\", payload);\n }\n\n /**\n * Remove a player. ST only\n * @param payload\n */\n removePlayer(payload) {\n if (this._isSpectator) return;\n this._send(\"remove\", payload);\n }\n}\n\nexport default store => {\n // setup\n const session = new LiveSession(store);\n\n // listen to mutations\n store.subscribe(({ type, payload }, state) => {\n switch (type) {\n case \"session/setSessionId\":\n if (state.session.sessionId) {\n session.connect(state.session.sessionId);\n } else {\n window.location.hash = \"\";\n session.disconnect();\n }\n break;\n case \"session/claimSeat\":\n session.claimSeat(payload);\n break;\n case \"session/distributeRoles\":\n if (payload) {\n session.distributeRoles();\n }\n break;\n case \"session/nomination\":\n case \"session/setNomination\":\n session.nomination(payload);\n break;\n case \"session/setVoteInProgress\":\n session.setVoteInProgress(payload);\n break;\n case \"session/voteSync\":\n session.vote(payload);\n break;\n case \"session/lockVote\":\n session.lockVote();\n break;\n case \"session/setVotingSpeed\":\n session.setVotingSpeed(payload);\n break;\n case \"session/clearVoteHistory\":\n session.clearVoteHistory();\n break;\n case \"session/setVoteHistoryAllowed\":\n session.setVoteHistoryAllowed();\n break;\n case \"toggleNight\":\n session.setIsNight();\n break;\n case \"setEdition\":\n session.sendEdition();\n break;\n case \"players/setFabled\":\n session.sendFabled();\n break;\n case \"session/setMarkedPlayer\":\n session.setMarked(payload);\n break;\n case \"players/swap\":\n session.swapPlayer(payload);\n break;\n case \"players/move\":\n session.movePlayer(payload);\n break;\n case \"players/remove\":\n session.removePlayer(payload);\n break;\n case \"players/set\":\n case \"players/clear\":\n case \"players/add\":\n session.sendGamestate(\"\", true);\n break;\n case \"players/update\":\n if (payload.property === \"pronouns\") {\n session.sendPlayerPronouns(payload);\n } else {\n session.sendPlayer(payload);\n }\n break;\n }\n });\n\n // check for session Id in hash\n const sessionId = window.location.hash.substr(1);\n if (sessionId) {\n store.commit(\"session/setSpectator\", true);\n store.commit(\"session/setSessionId\", sessionId);\n store.commit(\"toggleGrimoire\", false);\n }\n};\n","const NEWPLAYER = {\n name: \"\",\n id: \"\",\n role: {},\n reminders: [],\n isVoteless: false,\n isDead: false,\n pronouns: \"\"\n};\n\nconst state = () => ({\n players: [],\n fabled: [],\n bluffs: []\n});\n\nconst getters = {\n alive({ players }) {\n return players.filter(player => !player.isDead).length;\n },\n nonTravelers({ players }) {\n const nonTravelers = players.filter(\n player => player.role.team !== \"traveler\"\n );\n return Math.min(nonTravelers.length, 15);\n },\n // calculate a Map of player => night order\n nightOrder({ players, fabled }) {\n const firstNight = [0];\n const otherNight = [0];\n players.forEach(({ role }) => {\n if (role.firstNight && !firstNight.includes(role.firstNight)) {\n firstNight.push(role.firstNight);\n }\n if (role.otherNight && !otherNight.includes(role.otherNight)) {\n otherNight.push(role.otherNight);\n }\n });\n fabled.forEach(role => {\n if (role.firstNight && !firstNight.includes(role.firstNight)) {\n firstNight.push(role.firstNight);\n }\n if (role.otherNight && !otherNight.includes(role.otherNight)) {\n otherNight.push(role.otherNight);\n }\n });\n firstNight.sort((a, b) => a - b);\n otherNight.sort((a, b) => a - b);\n const nightOrder = new Map();\n players.forEach(player => {\n const first = Math.max(firstNight.indexOf(player.role.firstNight), 0);\n const other = Math.max(otherNight.indexOf(player.role.otherNight), 0);\n nightOrder.set(player, { first, other });\n });\n fabled.forEach(role => {\n const first = Math.max(firstNight.indexOf(role.firstNight), 0);\n const other = Math.max(otherNight.indexOf(role.otherNight), 0);\n nightOrder.set(role, { first, other });\n });\n return nightOrder;\n }\n};\n\nconst actions = {\n randomize({ state, commit }) {\n const players = state.players\n .map(a => [Math.random(), a])\n .sort((a, b) => a[0] - b[0])\n .map(a => a[1]);\n commit(\"set\", players);\n },\n clearRoles({ state, commit, rootState }) {\n let players;\n if (rootState.session.isSpectator) {\n players = state.players.map(player => {\n if (player.role.team !== \"traveler\") {\n player.role = {};\n }\n player.reminders = [];\n return player;\n });\n } else {\n players = state.players.map(({ name, id, pronouns }) => ({\n ...NEWPLAYER,\n name,\n id,\n pronouns\n }));\n commit(\"setFabled\", { fabled: [] });\n }\n commit(\"set\", players);\n commit(\"setBluff\");\n }\n};\n\nconst mutations = {\n clear(state) {\n state.players = [];\n state.bluffs = [];\n state.fabled = [];\n },\n set(state, players = []) {\n state.players = players;\n },\n /**\n The update mutation also has a property for isFromSockets\n this property can be addded to payload object for any mutations\n then can be used to prevent infinite loops when a property is\n able to be set from multiple different session on websockets.\n An example of this is in the sendPlayerPronouns and _updatePlayerPronouns\n in socket.js.\n */\n update(state, { player, property, value }) {\n const index = state.players.indexOf(player);\n if (index >= 0) {\n state.players[index][property] = value;\n }\n },\n add(state, name) {\n state.players.push({\n ...NEWPLAYER,\n name\n });\n },\n remove(state, index) {\n state.players.splice(index, 1);\n },\n swap(state, [from, to]) {\n [state.players[from], state.players[to]] = [\n state.players[to],\n state.players[from]\n ];\n // hack: \"modify\" the array so that Vue notices something changed\n state.players.splice(0, 0);\n },\n move(state, [from, to]) {\n state.players.splice(to, 0, state.players.splice(from, 1)[0]);\n },\n setBluff(state, { index, role } = {}) {\n if (index !== undefined) {\n state.bluffs.splice(index, 1, role);\n } else {\n state.bluffs = [];\n }\n },\n setFabled(state, { index, fabled } = {}) {\n if (index !== undefined) {\n state.fabled.splice(index, 1);\n } else if (fabled) {\n if (!Array.isArray(fabled)) {\n state.fabled.push(fabled);\n } else {\n state.fabled = fabled;\n }\n }\n }\n};\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations\n};\n","/**\n * Handle a vote request.\n * If the vote is from a seat that is already locked, ignore it.\n * @param state session state\n * @param index seat of the player in the circle\n * @param vote true or false\n */\nconst handleVote = (state, [index, vote]) => {\n if (!state.nomination) return;\n state.votes = [...state.votes];\n state.votes[index] = vote === undefined ? !state.votes[index] : vote;\n};\n\nconst state = () => ({\n sessionId: \"\",\n isSpectator: false,\n isReconnecting: false,\n playerCount: 0,\n ping: 0,\n playerId: \"\",\n claimedSeat: -1,\n nomination: false,\n votes: [],\n lockedVote: 0,\n votingSpeed: 3000,\n isVoteInProgress: false,\n voteHistory: [],\n markedPlayer: -1,\n isVoteHistoryAllowed: true,\n isRolesDistributed: false\n});\n\nconst getters = {};\n\nconst actions = {};\n\n// mutations helper functions\nconst set = key => (state, val) => {\n state[key] = val;\n};\n\nconst mutations = {\n setPlayerId: set(\"playerId\"),\n setSpectator: set(\"isSpectator\"),\n setReconnecting: set(\"isReconnecting\"),\n setPlayerCount: set(\"playerCount\"),\n setPing: set(\"ping\"),\n setVotingSpeed: set(\"votingSpeed\"),\n setVoteInProgress: set(\"isVoteInProgress\"),\n setMarkedPlayer: set(\"markedPlayer\"),\n setNomination: set(\"nomination\"),\n setVoteHistoryAllowed: set(\"isVoteHistoryAllowed\"),\n claimSeat: set(\"claimedSeat\"),\n distributeRoles: set(\"isRolesDistributed\"),\n setSessionId(state, sessionId) {\n state.sessionId = sessionId\n .toLocaleLowerCase()\n .replace(/[^0-9a-z]/g, \"\")\n .substr(0, 10);\n },\n nomination(\n state,\n { nomination, votes, votingSpeed, lockedVote, isVoteInProgress } = {}\n ) {\n state.nomination = nomination || false;\n state.votes = votes || [];\n state.votingSpeed = votingSpeed || state.votingSpeed;\n state.lockedVote = lockedVote || 0;\n state.isVoteInProgress = isVoteInProgress || false;\n },\n /**\n * Create an entry in the vote history log. Requires current player array because it might change later in the game.\n * Only stores votes that were completed.\n * @param state\n * @param players\n */\n addHistory(state, players) {\n if (!state.isVoteHistoryAllowed && state.isSpectator) return;\n if (!state.nomination || state.lockedVote <= players.length) return;\n const isExile = players[state.nomination[1]].role.team === \"traveler\";\n state.voteHistory.push({\n timestamp: new Date(),\n nominator: players[state.nomination[0]].name,\n nominee: players[state.nomination[1]].name,\n type: isExile ? \"Exile\" : \"Execution\",\n majority: Math.ceil(\n players.filter(player => !player.isDead || isExile).length / 2\n ),\n votes: players\n .filter((player, index) => state.votes[index])\n .map(({ name }) => name)\n });\n },\n clearVoteHistory(state) {\n state.voteHistory = [];\n },\n /**\n * Store a vote with and without syncing it to the live session.\n * This is necessary in order to prevent infinite voting loops.\n * @param state\n * @param vote\n */\n vote: handleVote,\n voteSync: handleVote,\n lockVote(state, lock) {\n state.lockedVote = lock !== undefined ? lock : state.lockedVote + 1;\n }\n};\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations\n};\n","import Vue from \"vue\";\nimport Vuex from \"vuex\";\nimport persistence from \"./persistence\";\nimport socket from \"./socket\";\nimport players from \"./modules/players\";\nimport session from \"./modules/session\";\nimport editionJSON from \"../editions.json\";\nimport rolesJSON from \"../roles.json\";\nimport fabledJSON from \"../fabled.json\";\nimport jinxesJSON from \"../hatred.json\";\n\nVue.use(Vuex);\n\n// helper functions\nconst getRolesByEdition = (edition = editionJSON[0]) => {\n return new Map(\n rolesJSON\n .filter(r => r.edition === edition.id || edition.roles.includes(r.id))\n .sort((a, b) => b.team.localeCompare(a.team))\n .map(role => [role.id, role])\n );\n};\n\nconst getTravelersNotInEdition = (edition = editionJSON[0]) => {\n return new Map(\n rolesJSON\n .filter(\n r =>\n r.team === \"traveler\" &&\n r.edition !== edition.id &&\n !edition.roles.includes(r.id)\n )\n .map(role => [role.id, role])\n );\n};\n\nconst set = key => ({ grimoire }, val) => {\n grimoire[key] = val;\n};\n\nconst toggle = key => ({ grimoire }, val) => {\n if (val === true || val === false) {\n grimoire[key] = val;\n } else {\n grimoire[key] = !grimoire[key];\n }\n};\n\nconst clean = id => id.toLocaleLowerCase().replace(/[^a-z0-9]/g, \"\");\n\n// global data maps\nconst editionJSONbyId = new Map(\n editionJSON.map(edition => [edition.id, edition])\n);\nconst rolesJSONbyId = new Map(rolesJSON.map(role => [role.id, role]));\nconst fabled = new Map(fabledJSON.map(role => [role.id, role]));\n\n// jinxes\nlet jinxes = {};\ntry {\n // Note: can't fetch live list due to lack of CORS headers\n // fetch(\"https://bloodontheclocktower.com/script/data/hatred.json\")\n // .then(res => res.json())\n // .then(jinxesJSON => {\n jinxes = new Map(\n jinxesJSON.map(({ id, hatred }) => [\n clean(id),\n new Map(hatred.map(({ id, reason }) => [clean(id), reason]))\n ])\n );\n // });\n} catch (e) {\n console.error(\"couldn't load jinxes\", e);\n}\n\n// base definition for custom roles\nconst customRole = {\n id: \"\",\n name: \"\",\n image: \"\",\n ability: \"\",\n edition: \"custom\",\n firstNight: 0,\n firstNightReminder: \"\",\n otherNight: 0,\n otherNightReminder: \"\",\n reminders: [],\n remindersGlobal: [],\n setup: false,\n team: \"townsfolk\",\n isCustom: true\n};\n\nexport default new Vuex.Store({\n modules: {\n players,\n session\n },\n state: {\n grimoire: {\n isNight: false,\n isNightOrder: true,\n isPublic: true,\n isMenuOpen: false,\n isStatic: false,\n isMuted: false,\n isImageOptIn: false,\n zoom: 0,\n background: \"\"\n },\n modals: {\n edition: false,\n fabled: false,\n gameState: false,\n nightOrder: false,\n reference: false,\n reminder: false,\n role: false,\n roles: false,\n voteHistory: false\n },\n edition: editionJSONbyId.get(\"tb\"),\n roles: getRolesByEdition(),\n otherTravelers: getTravelersNotInEdition(),\n fabled,\n jinxes\n },\n getters: {\n /**\n * Return all custom roles, with default values and non-essential data stripped.\n * Role object keys will be replaced with a numerical index to conserve bandwidth.\n * @param roles\n * @returns {[]}\n */\n customRolesStripped: ({ roles }) => {\n const customRoles = [];\n const customKeys = Object.keys(customRole);\n const strippedProps = [\n \"firstNightReminder\",\n \"otherNightReminder\",\n \"isCustom\"\n ];\n roles.forEach(role => {\n if (!role.isCustom) {\n customRoles.push({ id: role.id });\n } else {\n const strippedRole = {};\n for (let prop in role) {\n if (strippedProps.includes(prop)) {\n continue;\n }\n const value = role[prop];\n if (customKeys.includes(prop) && value !== customRole[prop]) {\n strippedRole[customKeys.indexOf(prop)] = value;\n }\n }\n customRoles.push(strippedRole);\n }\n });\n return customRoles;\n },\n rolesJSONbyId: () => rolesJSONbyId\n },\n mutations: {\n setZoom: set(\"zoom\"),\n setBackground: set(\"background\"),\n toggleMuted: toggle(\"isMuted\"),\n toggleMenu: toggle(\"isMenuOpen\"),\n toggleNightOrder: toggle(\"isNightOrder\"),\n toggleStatic: toggle(\"isStatic\"),\n toggleNight: toggle(\"isNight\"),\n toggleGrimoire: toggle(\"isPublic\"),\n toggleImageOptIn: toggle(\"isImageOptIn\"),\n toggleModal({ modals }, name) {\n if (name) {\n modals[name] = !modals[name];\n }\n for (let modal in modals) {\n if (modal === name) continue;\n modals[modal] = false;\n }\n },\n /**\n * Store custom roles\n * @param state\n * @param roles Array of role IDs or full role definitions\n */\n setCustomRoles(state, roles) {\n const processedRoles = roles\n // replace numerical role object keys with matching key names\n .map(role => {\n if (role[0]) {\n const customKeys = Object.keys(customRole);\n const mappedRole = {};\n for (let prop in role) {\n if (customKeys[prop]) {\n mappedRole[customKeys[prop]] = role[prop];\n }\n }\n return mappedRole;\n } else {\n return role;\n }\n })\n // clean up role.id\n .map(role => {\n role.id = clean(role.id);\n return role;\n })\n // map existing roles to base definition or pre-populate custom roles to ensure all properties\n .map(\n role =>\n rolesJSONbyId.get(role.id) ||\n state.roles.get(role.id) ||\n Object.assign({}, customRole, role)\n )\n // default empty icons and placeholders, clean up firstNight / otherNight\n .map(role => {\n if (rolesJSONbyId.get(role.id)) return role;\n role.imageAlt = // map team to generic icon\n {\n townsfolk: \"good\",\n outsider: \"outsider\",\n minion: \"minion\",\n demon: \"evil\",\n fabled: \"fabled\"\n }[role.team] || \"custom\";\n role.firstNight = Math.abs(role.firstNight);\n role.otherNight = Math.abs(role.otherNight);\n return role;\n })\n // filter out roles that don't match an existing role and also don't have name/ability/team\n .filter(role => role.name && role.ability && role.team)\n // sort by team\n .sort((a, b) => b.team.localeCompare(a.team));\n // convert to Map without Fabled\n state.roles = new Map(\n processedRoles\n .filter(role => role.team !== \"fabled\")\n .map(role => [role.id, role])\n );\n // update Fabled to include custom Fabled from this script\n state.fabled = new Map([\n ...processedRoles.filter(r => r.team === \"fabled\").map(r => [r.id, r]),\n ...fabledJSON.map(role => [role.id, role])\n ]);\n // update extraTravelers map to only show travelers not in this script\n state.otherTravelers = new Map(\n rolesJSON\n .filter(r => r.team === \"traveler\" && !roles.some(i => i.id === r.id))\n .map(role => [role.id, role])\n );\n },\n setEdition(state, edition) {\n if (editionJSONbyId.has(edition.id)) {\n state.edition = editionJSONbyId.get(edition.id);\n state.roles = getRolesByEdition(state.edition);\n state.otherTravelers = getTravelersNotInEdition(state.edition);\n } else {\n state.edition = edition;\n }\n state.modals.edition = false;\n }\n },\n plugins: [persistence, socket]\n});\n","import Vue from \"vue\";\nimport App from \"./App\";\nimport store from \"./store\";\nimport { library } from \"@fortawesome/fontawesome-svg-core\";\nimport { fas } from \"@fortawesome/free-solid-svg-icons\";\nimport { fab } from \"@fortawesome/free-brands-svg-icons\";\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\n\nconst faIcons = [\n \"AddressCard\",\n \"BookOpen\",\n \"BookDead\",\n \"BroadcastTower\",\n \"Chair\",\n \"CheckSquare\",\n \"CloudMoon\",\n \"Cog\",\n \"Copy\",\n \"Dice\",\n \"Dragon\",\n \"ExchangeAlt\",\n \"ExclamationTriangle\",\n \"FileCode\",\n \"FileUpload\",\n \"HandPaper\",\n \"HandPointRight\",\n \"Heartbeat\",\n \"Image\",\n \"Link\",\n \"MinusCircle\",\n \"PeopleArrows\",\n \"PlusCircle\",\n \"Question\",\n \"Random\",\n \"RedoAlt\",\n \"SearchMinus\",\n \"SearchPlus\",\n \"Skull\",\n \"Square\",\n \"TheaterMasks\",\n \"Times\",\n \"TimesCircle\",\n \"TrashAlt\",\n \"Undo\",\n \"User\",\n \"UserEdit\",\n \"UserFriends\",\n \"Users\",\n \"VenusMars\",\n \"VolumeUp\",\n \"VolumeMute\",\n \"VoteYea\",\n \"WindowMaximize\",\n \"WindowMinimize\"\n];\nconst fabIcons = [\"Github\", \"Discord\"];\nlibrary.add(\n ...faIcons.map(i => fas[\"fa\" + i]),\n ...fabIcons.map(i => fab[\"fa\" + i])\n);\nVue.component(\"font-awesome-icon\", FontAwesomeIcon);\nVue.config.productionTip = false;\n\nnew Vue({\n render: h => h(App),\n store\n}).$mount(\"#app\");\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Token.vue?vue&type=style&index=0&id=deec739a&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/riot.a2890eee.png\";","module.exports = __webpack_public_path__ + \"img/fabled.227b24f9.png\";","module.exports = __webpack_public_path__ + \"img/cannibal.54808c1a.png\";","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/duchess.f8361787.png\";","module.exports = __webpack_public_path__ + \"img/goblin.ec4fe0e0.png\";","module.exports = __webpack_public_path__ + \"img/x.d2209023.png\";","module.exports = __webpack_public_path__ + \"img/tb-minion.b01c557e.png\";","var map = {\n\t\"./acrobat.png\": \"887b\",\n\t\"./alchemist.png\": \"dbe8\",\n\t\"./alhadikhia.png\": \"9989\",\n\t\"./amnesiac.png\": \"043b\",\n\t\"./angel.png\": \"bfe2\",\n\t\"./apprentice.png\": \"4bea\",\n\t\"./artist.png\": \"2cd0\",\n\t\"./assassin.png\": \"9187\",\n\t\"./atheist.png\": \"ca7a\",\n\t\"./balloonist.png\": \"65db\",\n\t\"./barber.png\": \"fcc6\",\n\t\"./barista.png\": \"027a\",\n\t\"./baron.png\": \"24d3\",\n\t\"./beggar.png\": \"cfcc\",\n\t\"./bishop.png\": \"8030\",\n\t\"./bonecollector.png\": \"23b1\",\n\t\"./boomdandy.png\": \"aae9\",\n\t\"./bountyhunter.png\": \"899d\",\n\t\"./buddhist.png\": \"1d01\",\n\t\"./bureaucrat.png\": \"25f6\",\n\t\"./butcher.png\": \"37dd\",\n\t\"./butler.png\": \"64fe\",\n\t\"./cannibal.png\": \"5bd9\",\n\t\"./cerenovus.png\": \"0436\",\n\t\"./chambermaid.png\": \"125e\",\n\t\"./chef.png\": \"1e83\",\n\t\"./choirboy.png\": \"d6bc\",\n\t\"./clockmaker.png\": \"f93f\",\n\t\"./courtier.png\": \"ee02\",\n\t\"./cultleader.png\": \"398f\",\n\t\"./custom.png\": \"fd83\",\n\t\"./damsel.png\": \"72d7\",\n\t\"./deusexfiasco.png\": \"9002\",\n\t\"./deviant.png\": \"3b65\",\n\t\"./devilsadvocate.png\": \"cd8b\",\n\t\"./djinn.png\": \"e222\",\n\t\"./doomsayer.png\": \"659f\",\n\t\"./dreamer.png\": \"71b8\",\n\t\"./drunk.png\": \"d97d\",\n\t\"./duchess.png\": \"5c56\",\n\t\"./empath.png\": \"bb7a\",\n\t\"./engineer.png\": \"ea17\",\n\t\"./evil.png\": \"c24f\",\n\t\"./eviltwin.png\": \"e014\",\n\t\"./exorcist.png\": \"5072\",\n\t\"./fabled.png\": \"5b44\",\n\t\"./fanggu.png\": \"6ac0\",\n\t\"./farmer.png\": \"7a7f\",\n\t\"./fearmonger.png\": \"d69f\",\n\t\"./fibbin.png\": \"6eb1\",\n\t\"./fiddler.png\": \"64be\",\n\t\"./fisherman.png\": \"c5db\",\n\t\"./flowergirl.png\": \"66ae\",\n\t\"./fool.png\": \"4720\",\n\t\"./fortuneteller.png\": \"43e8\",\n\t\"./gambler.png\": \"dce6\",\n\t\"./gangster.png\": \"97c6\",\n\t\"./general.png\": \"ac9c\",\n\t\"./goblin.png\": \"5c8e\",\n\t\"./godfather.png\": \"99d0\",\n\t\"./golem.png\": \"4eb3\",\n\t\"./good.png\": \"667e\",\n\t\"./goon.png\": \"55aa\",\n\t\"./gossip.png\": \"cadc\",\n\t\"./grandmother.png\": \"c9f5\",\n\t\"./gunslinger.png\": \"ee92\",\n\t\"./harlot.png\": \"559e\",\n\t\"./hellslibrarian.png\": \"a367\",\n\t\"./heretic.png\": \"5626\",\n\t\"./huntsman.png\": \"1923\",\n\t\"./imp.png\": \"3e70\",\n\t\"./innkeeper.png\": \"663c\",\n\t\"./investigator.png\": \"b570\",\n\t\"./judge.png\": \"f09b\",\n\t\"./juggler.png\": \"65ab\",\n\t\"./king.png\": \"9639\",\n\t\"./klutz.png\": \"adfc\",\n\t\"./legion.png\": \"da81\",\n\t\"./leviathan.png\": \"2b04\",\n\t\"./librarian.png\": \"4d73\",\n\t\"./lilmonsta.png\": \"c492\",\n\t\"./lleech.png\": \"9f74\",\n\t\"./lunatic.png\": \"0b61\",\n\t\"./lycanthrope.png\": \"c316\",\n\t\"./magician.png\": \"ab3c\",\n\t\"./marionette.png\": \"e69f\",\n\t\"./mastermind.png\": \"f834\",\n\t\"./mathematician.png\": \"8888\",\n\t\"./matron.png\": \"b1cb\",\n\t\"./mayor.png\": \"b223\",\n\t\"./mephit.png\": \"df5e\",\n\t\"./mezepheles.png\": \"c7b7\",\n\t\"./minion.png\": \"75bc\",\n\t\"./minstrel.png\": \"4efd\",\n\t\"./monk.png\": \"6741\",\n\t\"./moonchild.png\": \"3f65\",\n\t\"./mutant.png\": \"17ad\",\n\t\"./nightwatchman.png\": \"3cd8\",\n\t\"./noble.png\": \"f7d3\",\n\t\"./nodashii.png\": \"68a4\",\n\t\"./oracle.png\": \"0c12\",\n\t\"./outsider.png\": \"2490\",\n\t\"./pacifist.png\": \"fff1\",\n\t\"./philosopher.png\": \"3603\",\n\t\"./pithag.png\": \"7f07\",\n\t\"./pixie.png\": \"a7b6\",\n\t\"./plus.png\": \"160b\",\n\t\"./po.png\": \"c73a\",\n\t\"./poisoner.png\": \"f282\",\n\t\"./politician.png\": \"07ab\",\n\t\"./poppygrower.png\": \"3273\",\n\t\"./preacher.png\": \"2094\",\n\t\"./professor.png\": \"b30c\",\n\t\"./psychopath.png\": \"fcdb\",\n\t\"./pukka.png\": \"a6a2\",\n\t\"./puzzlemaster.png\": \"27a3\",\n\t\"./ravenkeeper.png\": \"0c59\",\n\t\"./recluse.png\": \"177d\",\n\t\"./revolutionary.png\": \"aa2d\",\n\t\"./riot.png\": \"5740\",\n\t\"./sage.png\": \"30b6\",\n\t\"./sailor.png\": \"223c\",\n\t\"./saint.png\": \"6936\",\n\t\"./savant.png\": \"d715\",\n\t\"./scapegoat.png\": \"327a\",\n\t\"./scarletwoman.png\": \"f322\",\n\t\"./seamstress.png\": \"ac7c\",\n\t\"./sentinel.png\": \"af68\",\n\t\"./shabaloth.png\": \"0b29\",\n\t\"./slayer.png\": \"d62b\",\n\t\"./snakecharmer.png\": \"4021\",\n\t\"./snitch.png\": \"b7e8\",\n\t\"./soldier.png\": \"4e76\",\n\t\"./spiritofivory.png\": \"0d06\",\n\t\"./spy.png\": \"ec1e\",\n\t\"./stormcatcher.png\": \"a4c2\",\n\t\"./sweetheart.png\": \"f1e5\",\n\t\"./tealady.png\": \"ba9b\",\n\t\"./thief.png\": \"9ce3\",\n\t\"./tinker.png\": \"9f7e\",\n\t\"./towncrier.png\": \"38a5\",\n\t\"./toymaker.png\": \"39eb\",\n\t\"./undertaker.png\": \"0e20\",\n\t\"./vigormortis.png\": \"f4bd\",\n\t\"./virgin.png\": \"eff4\",\n\t\"./vortox.png\": \"3a43\",\n\t\"./voudon.png\": \"a710\",\n\t\"./washerwoman.png\": \"013f\",\n\t\"./widow.png\": \"22c9\",\n\t\"./witch.png\": \"f558\",\n\t\"./x.png\": \"5cf2\",\n\t\"./zombuul.png\": \"20ca\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"61b0\";","module.exports = __webpack_public_path__ + \"img/fiddler.d1730aaa.png\";","module.exports = __webpack_public_path__ + \"img/butler.f4fd1640.png\";","module.exports = __webpack_public_path__ + \"img/doomsayer.7ddbe262.png\";","module.exports = __webpack_public_path__ + \"img/juggler.819f88b8.png\";","module.exports = __webpack_public_path__ + \"img/balloonist.c35c6644.png\";","module.exports = __webpack_public_path__ + \"img/innkeeper.da072f0d.png\";","module.exports = __webpack_public_path__ + \"img/good.daf3b560.png\";","module.exports = __webpack_public_path__ + \"img/flowergirl.6196eef9.png\";","module.exports = __webpack_public_path__ + \"img/monk.ff81aec2.png\";","module.exports = __webpack_public_path__ + \"img/nodashii.5220cac3.png\";","module.exports = __webpack_public_path__ + \"img/saint.b7a15b85.png\";","module.exports = __webpack_public_path__ + \"img/fanggu.8fbd2e39.png\";","module.exports = __webpack_public_path__ + \"img/fibbin.9f01eb47.png\";","module.exports = __webpack_public_path__ + \"img/dreamer.fe5645e1.png\";","module.exports = __webpack_public_path__ + \"img/damsel.040c275d.png\";","module.exports = __webpack_public_path__ + \"img/tb-outsider.9ae6ef1b.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReminderModal.vue?vue&type=style&index=0&id=334686bc&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/bmr.1d06ca78.png\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Player.vue?vue&type=style&index=0&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/minion.e02a5c96.png\";","module.exports = __webpack_public_path__ + \"img/farmer.1534709d.png\";","module.exports = __webpack_public_path__ + \"img/pithag.9bdfc5a3.png\";","module.exports = __webpack_public_path__ + \"img/bishop.1f25f092.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Modal.vue?vue&type=style&index=0&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/acrobat.be49ceac.png\";","module.exports = __webpack_public_path__ + \"img/mathematician.cc67c625.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RolesModal.vue?vue&type=style&index=0&id=365502ca&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/bountyhunter.b208dc71.png\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Vote.vue?vue&type=style&index=0&id=56f82741&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VoteHistoryModal.vue?vue&type=style&index=0&id=482a37a8&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/deusexfiasco.96e5d2eb.png\";","module.exports = __webpack_public_path__ + \"img/assassin.ae0f2fba.png\";","module.exports = __webpack_public_path__ + \"img/luf.8e16a6e6.png\";","module.exports = __webpack_public_path__ + \"img/king.3f722bb8.png\";","module.exports = __webpack_public_path__ + \"img/gangster.72167674.png\";","module.exports = __webpack_public_path__ + \"img/alhadikhia.1d64887e.png\";","module.exports = __webpack_public_path__ + \"img/godfather.d64b901e.png\";","module.exports = __webpack_public_path__ + \"img/thief.04afd5e0.png\";","module.exports = __webpack_public_path__ + \"img/lleech.da66feee.png\";","module.exports = __webpack_public_path__ + \"img/tinker.ce44bde6.png\";","module.exports = __webpack_public_path__ + \"img/hellslibrarian.3df1d423.png\";","module.exports = __webpack_public_path__ + \"img/tb-demon.0ac8cce6.png\";","module.exports = __webpack_public_path__ + \"img/stormcatcher.3f5110c6.png\";","module.exports = __webpack_public_path__ + \"img/pukka.1b1700de.png\";","module.exports = __webpack_public_path__ + \"img/voudon.4c0eb80c.png\";","module.exports = __webpack_public_path__ + \"img/pixie.2db5f1a2.png\";","module.exports = __webpack_public_path__ + \"img/revolutionary.68827d94.png\";","module.exports = __webpack_public_path__ + \"img/boomdandy.009c74b1.png\";","module.exports = __webpack_public_path__ + \"img/magician.c1bcf13c.png\";","module.exports = __webpack_public_path__ + \"img/seamstress.209ed80b.png\";","module.exports = __webpack_public_path__ + \"img/general.2fc65230.png\";","module.exports = __webpack_public_path__ + \"img/klutz.99df79cb.png\";","module.exports = __webpack_public_path__ + \"img/sentinel.93d312eb.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditionModal.vue?vue&type=style&index=0&id=7c2292c2&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/matron.6e1551e5.png\";","module.exports = __webpack_public_path__ + \"img/mayor.da8876ae.png\";","module.exports = __webpack_public_path__ + \"img/professor.48f01bcb.png\";","module.exports = __webpack_public_path__ + \"img/investigator.a817cc04.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NightOrderModal.vue?vue&type=style&index=0&id=ec47598c&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/snitch.0f51b730.png\";","module.exports = __webpack_public_path__ + \"img/tealady.5fc21e59.png\";","module.exports = __webpack_public_path__ + \"img/empath.b772c7ff.png\";","module.exports = __webpack_public_path__ + \"img/angel.cae6c8fc.png\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Intro.vue?vue&type=style&index=0&id=0ae0fea6&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/evil.8723a4ee.png\";","module.exports = __webpack_public_path__ + \"img/lycanthrope.48660758.png\";","module.exports = __webpack_public_path__ + \"img/lilmonsta.4814ed76.png\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TownInfo.vue?vue&type=style&index=0&id=e858a1da&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/fisherman.0511031e.png\";","module.exports = __webpack_public_path__ + \"img/po.015a8956.png\";","module.exports = __webpack_public_path__ + \"img/mezepheles.b1f4ea9e.png\";","module.exports = __webpack_public_path__ + \"img/grandmother.18ee536e.png\";","module.exports = __webpack_public_path__ + \"img/atheist.d8060ae8.png\";","module.exports = __webpack_public_path__ + \"img/gossip.5165a7ee.png\";","module.exports = __webpack_public_path__ + \"img/bmr-demon.75dfa056.png\";","module.exports = __webpack_public_path__ + \"img/devilsadvocate.18bb00ce.png\";","var map = {\n\t\"./bmr-demon.png\": \"cae1\",\n\t\"./bmr-minion.png\": \"28bf\",\n\t\"./bmr-outsider.png\": \"e898\",\n\t\"./bmr-townsfolk.png\": \"e988\",\n\t\"./bmr.png\": \"7496\",\n\t\"./custom.png\": \"441d\",\n\t\"./luf.png\": \"92d8\",\n\t\"./snv-demon.png\": \"f347\",\n\t\"./snv-minion.png\": \"451a\",\n\t\"./snv-outsider.png\": \"4dd9\",\n\t\"./snv-townsfolk.png\": \"ed00\",\n\t\"./snv.png\": \"2fd0\",\n\t\"./tb-demon.png\": \"a3b0\",\n\t\"./tb-minion.png\": \"5f4e\",\n\t\"./tb-outsider.png\": \"73a1\",\n\t\"./tb-townsfolk.png\": \"f7a3\",\n\t\"./tb.png\": \"0aaa\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"ce23\";","module.exports = __webpack_public_path__ + \"img/beggar.90311684.png\";","module.exports = __webpack_public_path__ + \"img/slayer.4cde6d70.png\";","module.exports = __webpack_public_path__ + \"img/fearmonger.4233784c.png\";","module.exports = __webpack_public_path__ + \"img/choirboy.9d62c6b3.png\";","module.exports = __webpack_public_path__ + \"img/savant.0fe828cf.png\";","module.exports = __webpack_public_path__ + \"img/drunk.947841e5.png\";","module.exports = __webpack_public_path__ + \"img/legion.a5ecb237.png\";","module.exports = __webpack_public_path__ + \"img/alchemist.c860a284.png\";","module.exports = __webpack_public_path__ + \"img/gambler.7e6e9736.png\";","module.exports = __webpack_public_path__ + \"img/mephit.b1f4ea9e.png\";","module.exports = store => {\n const updatePagetitle = isPublic =>\n (document.title = `Blood on the Clocktower ${\n isPublic ? \"Town Square\" : \"Grimoire\"\n }`);\n\n // initialize data\n if (localStorage.getItem(\"background\")) {\n store.commit(\"setBackground\", localStorage.background);\n }\n if (localStorage.getItem(\"muted\")) {\n store.commit(\"toggleMuted\", true);\n }\n if (localStorage.getItem(\"static\")) {\n store.commit(\"toggleStatic\", true);\n }\n if (localStorage.getItem(\"imageOptIn\")) {\n store.commit(\"toggleImageOptIn\", true);\n }\n if (localStorage.getItem(\"zoom\")) {\n store.commit(\"setZoom\", parseFloat(localStorage.getItem(\"zoom\")));\n }\n if (localStorage.getItem(\"isGrimoire\")) {\n store.commit(\"toggleGrimoire\", false);\n updatePagetitle(false);\n }\n if (localStorage.roles !== undefined) {\n store.commit(\"setCustomRoles\", JSON.parse(localStorage.roles));\n store.commit(\"setEdition\", { id: \"custom\" });\n }\n if (localStorage.edition !== undefined) {\n // this will initialize state.roles for official editions\n store.commit(\"setEdition\", JSON.parse(localStorage.edition));\n }\n if (localStorage.bluffs !== undefined) {\n JSON.parse(localStorage.bluffs).forEach((role, index) => {\n store.commit(\"players/setBluff\", {\n index,\n role: store.state.roles.get(role) || {}\n });\n });\n }\n if (localStorage.fabled !== undefined) {\n store.commit(\"players/setFabled\", {\n fabled: JSON.parse(localStorage.fabled).map(\n fabled => store.state.fabled.get(fabled.id) || fabled\n )\n });\n }\n if (localStorage.players) {\n store.commit(\n \"players/set\",\n JSON.parse(localStorage.players).map(player => ({\n ...player,\n role:\n store.state.roles.get(player.role) ||\n store.getters.rolesJSONbyId.get(player.role) ||\n {}\n }))\n );\n }\n /**** Session related data *****/\n if (localStorage.getItem(\"playerId\")) {\n store.commit(\"session/setPlayerId\", localStorage.getItem(\"playerId\"));\n }\n if (localStorage.getItem(\"session\") && !window.location.hash.substr(1)) {\n const [spectator, sessionId] = JSON.parse(localStorage.getItem(\"session\"));\n store.commit(\"session/setSpectator\", spectator);\n store.commit(\"session/setSessionId\", sessionId);\n }\n\n // listen to mutations\n store.subscribe(({ type, payload }, state) => {\n switch (type) {\n case \"toggleGrimoire\":\n if (!state.grimoire.isPublic) {\n localStorage.setItem(\"isGrimoire\", 1);\n } else {\n localStorage.removeItem(\"isGrimoire\");\n }\n updatePagetitle(state.grimoire.isPublic);\n break;\n case \"setBackground\":\n if (payload) {\n localStorage.setItem(\"background\", payload);\n } else {\n localStorage.removeItem(\"background\");\n }\n break;\n case \"toggleMuted\":\n if (state.grimoire.isMuted) {\n localStorage.setItem(\"muted\", 1);\n } else {\n localStorage.removeItem(\"muted\");\n }\n break;\n case \"toggleStatic\":\n if (state.grimoire.isStatic) {\n localStorage.setItem(\"static\", 1);\n } else {\n localStorage.removeItem(\"static\");\n }\n break;\n case \"toggleImageOptIn\":\n if (state.grimoire.isImageOptIn) {\n localStorage.setItem(\"imageOptIn\", 1);\n } else {\n localStorage.removeItem(\"imageOptIn\");\n }\n break;\n case \"setZoom\":\n if (payload !== 0) {\n localStorage.setItem(\"zoom\", payload);\n } else {\n localStorage.removeItem(\"zoom\");\n }\n break;\n case \"setEdition\":\n localStorage.setItem(\"edition\", JSON.stringify(payload));\n if (state.edition.isOfficial) {\n localStorage.removeItem(\"roles\");\n }\n break;\n case \"setCustomRoles\":\n if (!payload.length) {\n localStorage.removeItem(\"roles\");\n } else {\n localStorage.setItem(\"roles\", JSON.stringify(payload));\n }\n break;\n case \"players/setBluff\":\n localStorage.setItem(\n \"bluffs\",\n JSON.stringify(state.players.bluffs.map(({ id }) => id))\n );\n break;\n case \"players/setFabled\":\n localStorage.setItem(\n \"fabled\",\n JSON.stringify(\n state.players.fabled.map(fabled =>\n fabled.isCustom ? fabled : { id: fabled.id }\n )\n )\n );\n break;\n case \"players/add\":\n case \"players/update\":\n case \"players/remove\":\n case \"players/clear\":\n case \"players/set\":\n case \"players/swap\":\n case \"players/move\":\n if (state.players.players.length) {\n localStorage.setItem(\n \"players\",\n JSON.stringify(\n state.players.players.map(player => ({\n ...player,\n // simplify the stored data\n role: player.role.id || {}\n }))\n )\n );\n } else {\n localStorage.removeItem(\"players\");\n }\n break;\n case \"session/setSessionId\":\n if (payload) {\n localStorage.setItem(\n \"session\",\n JSON.stringify([state.session.isSpectator, payload])\n );\n } else {\n localStorage.removeItem(\"session\");\n }\n break;\n case \"session/setPlayerId\":\n if (payload) {\n localStorage.setItem(\"playerId\", payload);\n } else {\n localStorage.removeItem(\"playerId\");\n }\n break;\n }\n });\n};\n","module.exports = __webpack_public_path__ + \"img/eviltwin.10ab31a8.png\";","module.exports = __webpack_public_path__ + \"img/djinn.e1c507e5.png\";","module.exports = __webpack_public_path__ + \"img/marionette.8aceb38b.png\";","module.exports = __webpack_public_path__ + \"img/bmr-outsider.971a3d5d.png\";","module.exports = __webpack_public_path__ + \"img/bmr-townsfolk.9bf859b4.png\";","module.exports = __webpack_public_path__ + \"img/engineer.1e44d3e4.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GameStateModal.vue?vue&type=style&index=0&id=7971ea6f&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/spy.d411c998.png\";","module.exports = __webpack_public_path__ + \"img/snv-townsfolk.83cf9a72.png\";","module.exports = __webpack_public_path__ + \"img/courtier.7060de3f.png\";","module.exports = __webpack_public_path__ + \"img/gunslinger.1360a66d.png\";","module.exports = __webpack_public_path__ + \"img/virgin.a4b2d7a4.png\";","module.exports = __webpack_public_path__ + \"img/judge.b1034c71.png\";","module.exports = __webpack_public_path__ + \"img/sweetheart.29949c36.png\";","module.exports = __webpack_public_path__ + \"img/poisoner.61c83e0f.png\";","module.exports = __webpack_public_path__ + \"img/scarletwoman.5377675d.png\";","module.exports = __webpack_public_path__ + \"img/snv-demon.2fe55248.png\";","module.exports = __webpack_public_path__ + \"img/vigormortis.981de17e.png\";","module.exports = __webpack_public_path__ + \"img/witch.f75f1601.png\";","module.exports = __webpack_public_path__ + \"media/countdown.1462f20c.mp3\";","module.exports = __webpack_public_path__ + \"img/tb-townsfolk.550a119b.png\";","module.exports = __webpack_public_path__ + \"img/noble.3909ea29.png\";","module.exports = __webpack_public_path__ + \"img/mastermind.91ffd4fd.png\";","module.exports = __webpack_public_path__ + \"img/clockmaker.5378c03d.png\";","module.exports = __webpack_public_path__ + \"img/barber.6c91c1f5.png\";","module.exports = __webpack_public_path__ + \"img/psychopath.cd71a0a2.png\";","module.exports = __webpack_public_path__ + \"img/custom.402e9bc3.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FabledModal.vue?vue&type=style&index=0&id=d6b399a0&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/pacifist.0637fdf0.png\";"],"sourceRoot":""}
\ No newline at end of file
diff --git a/js/app.9584e860.js b/js/app.9584e860.js
new file mode 100644
index 0000000..d4be005
--- /dev/null
+++ b/js/app.9584e860.js
@@ -0,0 +1,2 @@
+(function(e){function t(t){for(var o,n,r=t[0],l=t[1],h=t[2],d=0,m=[];d-1,move:e.move>-1,nominate:e.nominate>-1},attrs:{player:t},on:{trigger:function(t){return e.handleTrigger(o,t)}}})})),1),e.players.length?i("div",{ref:"bluffs",staticClass:"bluffs",class:{closed:!e.isBluffsOpen}},[i("h3",[e.session.isSpectator?i("span",[e._v("Other characters")]):i("span",[e._v("Demon bluffs")]),i("font-awesome-icon",{attrs:{icon:"times-circle"},on:{click:function(t){return t.stopPropagation(),e.toggleBluffs(t)}}}),i("font-awesome-icon",{attrs:{icon:"plus-circle"},on:{click:function(t){return t.stopPropagation(),e.toggleBluffs(t)}}})],1),i("ul",e._l(e.bluffSize,(function(t){return i("li",{key:t,on:{click:function(i){return e.openRoleModal(-1*t)}}},[i("Token",{attrs:{role:e.bluffs[t-1]}})],1)})),0)]):e._e(),e.fabled.length?i("div",{staticClass:"fabled",class:{closed:!e.isFabledOpen}},[i("h3",[i("span",[e._v("Fabled")]),i("font-awesome-icon",{attrs:{icon:"times-circle"},on:{click:function(t){return t.stopPropagation(),e.toggleFabled(t)}}}),i("font-awesome-icon",{attrs:{icon:"plus-circle"},on:{click:function(t){return t.stopPropagation(),e.toggleFabled(t)}}})],1),i("ul",e._l(e.fabled,(function(t,o){return i("li",{key:o,on:{click:function(t){return e.removeFabled(o)}}},[e.nightOrder.get(t).first&&e.grimoire.isNightOrder?i("div",{staticClass:"night-order first"},[i("em",[e._v(e._s(e.nightOrder.get(t).first)+".")]),t.firstNightReminder?i("span",[e._v(e._s(t.firstNightReminder))]):e._e()]):e._e(),e.nightOrder.get(t).other&&e.grimoire.isNightOrder?i("div",{staticClass:"night-order other"},[i("em",[e._v(e._s(e.nightOrder.get(t).other)+".")]),t.otherNightReminder?i("span",[e._v(e._s(t.otherNightReminder))]):e._e()]):e._e(),i("Token",{attrs:{role:t}})],1)})),0)]):e._e(),i("ReminderModal",{attrs:{"player-index":e.selectedPlayer}}),i("RoleModal",{attrs:{"player-index":e.selectedPlayer}})],1)},h=[],c=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("li",{style:e.zoom},[o("div",{ref:"player",staticClass:"player",class:[{dead:e.player.isDead,marked:e.session.markedPlayer===e.index,"no-vote":e.player.isVoteless,you:e.session.sessionId&&e.player.id&&e.player.id===e.session.playerId,"vote-yes":e.session.votes[e.index],"vote-lock":e.voteLocked},e.player.role.team]},[o("div",{staticClass:"shroud",on:{click:function(t){return e.toggleStatus()}}}),o("div",{staticClass:"life",on:{click:function(t){return e.toggleStatus()}}}),e.nightOrder.get(e.player).first&&e.grimoire.isNightOrder?o("div",{staticClass:"night-order first"},[o("em",[e._v(e._s(e.nightOrder.get(e.player).first)+".")]),e.player.role.firstNightReminder?o("span",[e._v(e._s(e.player.role.firstNightReminder))]):e._e()]):e._e(),e.nightOrder.get(e.player).other&&e.grimoire.isNightOrder?o("div",{staticClass:"night-order other"},[o("em",[e._v(e._s(e.nightOrder.get(e.player).other)+".")]),e.player.role.otherNightReminder?o("span",[e._v(e._s(e.player.role.otherNightReminder))]):e._e()]):e._e(),o("Token",{attrs:{role:e.player.role},on:{"set-role":function(t){return e.$emit("trigger",["openRoleModal"])}}}),o("div",{staticClass:"overlay"},[o("font-awesome-icon",{staticClass:"vote",attrs:{icon:"hand-paper",title:"Hand UP"},on:{click:function(t){return e.vote()}}}),o("font-awesome-icon",{staticClass:"vote",attrs:{icon:"times",title:"Hand DOWN"},on:{click:function(t){return e.vote()}}}),o("font-awesome-icon",{staticClass:"cancel",attrs:{icon:"times-circle",title:"Cancel"},on:{click:function(t){return e.cancel()}}}),o("font-awesome-icon",{staticClass:"swap",attrs:{icon:"exchange-alt",title:"Swap seats with this player"},on:{click:function(t){return e.swapPlayer(e.player)}}}),o("font-awesome-icon",{staticClass:"move",attrs:{icon:"redo-alt",title:"Move player to this seat"},on:{click:function(t){return e.movePlayer(e.player)}}}),o("font-awesome-icon",{staticClass:"nominate",attrs:{icon:"hand-point-right",title:"Nominate this player"},on:{click:function(t){return e.nominatePlayer(e.player)}}})],1),e.player.id&&e.session.sessionId?o("font-awesome-icon",{staticClass:"seat",class:{highlight:e.session.isRolesDistributed},attrs:{icon:"chair"}}):e._e(),e.player.isDead&&!e.player.isVoteless?o("font-awesome-icon",{staticClass:"has-vote",attrs:{icon:"vote-yea",title:"Ghost vote"},on:{click:function(t){return e.updatePlayer("isVoteless",!0)}}}):e._e(),o("div",{staticClass:"marked"},[o("font-awesome-icon",{attrs:{icon:"skull"}})],1),o("div",{staticClass:"name",class:{active:e.isMenuOpen},on:{click:function(t){e.isMenuOpen=!e.isMenuOpen}}},[o("span",[e._v(e._s(e.player.name))]),e.player.pronouns?o("font-awesome-icon",{attrs:{icon:"venus-mars"}}):e._e(),e.player.pronouns?o("div",{staticClass:"pronouns"},[o("span",[e._v(e._s(e.player.pronouns))])]):e._e()],1),o("transition",{attrs:{name:"fold"}},[e.isMenuOpen?o("ul",{staticClass:"menu"},[!e.session.isSpectator||e.session.isSpectator&&e.player.id===e.session.playerId?o("li",{on:{click:e.changePronouns}},[o("font-awesome-icon",{attrs:{icon:"venus-mars"}}),e._v("Change Pronouns ")],1):e._e(),e.session.isSpectator?e._e():[o("li",{on:{click:e.changeName}},[o("font-awesome-icon",{attrs:{icon:"user-edit"}}),e._v("Rename ")],1),o("li",{class:{disabled:e.session.lockedVote},on:{click:function(t){return e.movePlayer()}}},[o("font-awesome-icon",{attrs:{icon:"redo-alt"}}),e._v(" Move player ")],1),o("li",{class:{disabled:e.session.lockedVote},on:{click:function(t){return e.swapPlayer()}}},[o("font-awesome-icon",{attrs:{icon:"exchange-alt"}}),e._v(" Swap seats ")],1),o("li",{class:{disabled:e.session.lockedVote},on:{click:e.removePlayer}},[o("font-awesome-icon",{attrs:{icon:"times-circle"}}),e._v(" Remove ")],1),e.player.id&&e.session.sessionId?o("li",{on:{click:function(t){return e.updatePlayer("id","",!0)}}},[o("font-awesome-icon",{attrs:{icon:"chair"}}),e._v(" Empty seat ")],1):e._e(),e.session.nomination?e._e():[o("li",{on:{click:function(t){return e.nominatePlayer()}}},[o("font-awesome-icon",{attrs:{icon:"hand-point-right"}}),e._v(" Nomination ")],1)]],e.session.isSpectator?o("li",{class:{disabled:e.player.id&&e.player.id!==e.session.playerId},on:{click:e.claimSeat}},[o("font-awesome-icon",{attrs:{icon:"chair"}}),e.player.id?e.player.id===e.session.playerId?[e._v(" Vacate seat ")]:[e._v(" Seat occupied")]:[e._v(" Claim seat ")]],2):e._e()],2):e._e()])],1),e.player.reminders?e._l(e.player.reminders,(function(t){return o("div",{key:t.role+" "+t.name,staticClass:"reminder",class:[t.role],on:{click:function(i){return e.removeReminder(t)}}},[o("span",{staticClass:"icon",style:{backgroundImage:"url("+(t.image&&e.grimoire.isImageOptIn?t.image:i("61b0")("./"+(t.imageAlt||t.role)+".png"))+")"}}),o("span",{staticClass:"text"},[e._v(e._s(t.name))])])})):e._e(),o("div",{staticClass:"reminder add",on:{click:function(t){return e.$emit("trigger",["openReminderModal"])}}},[o("span",{staticClass:"icon"})]),o("div",{staticClass:"reminderHoverTarget"})],2)},d=[],m=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{staticClass:"token",class:[e.role.id],on:{click:e.setRole}},[e.role.id?o("span",{staticClass:"icon",style:{backgroundImage:"url("+(e.role.image&&e.grimoire.isImageOptIn?e.role.image:i("61b0")("./"+(e.role.imageAlt||e.role.id)+".png"))+")"}}):e._e(),e.role.firstNight||e.role.firstNightReminder?o("span",{staticClass:"leaf-left"}):e._e(),e.role.otherNight||e.role.otherNightReminder?o("span",{staticClass:"leaf-right"}):e._e(),e.reminderLeaves?o("span",{class:["leaf-top"+e.reminderLeaves]}):e._e(),e.role.setup?o("span",{staticClass:"leaf-orange"}):e._e(),o("svg",{staticClass:"name",attrs:{viewBox:"0 0 150 150"}},[o("path",{attrs:{d:"M 13 75 C 13 160, 138 160, 138 75",id:"curve",fill:"transparent"}}),o("text",{staticClass:"label mozilla",attrs:{width:"150",x:"66.6%","text-anchor":"middle","font-size":e._f("nameToFontSize")(e.role.name)}},[o("textPath",{attrs:{"xlink:href":"#curve"}},[e._v(" "+e._s(e.role.name)+" ")])])]),o("div",{staticClass:"edition",class:["edition-"+e.role.edition,e.role.team]}),e.role.ability?o("div",{staticClass:"ability"},[e._v(" "+e._s(e.role.ability)+" ")]):e._e()])},p=[],g={name:"Token",props:{role:{type:Object,default:()=>({})}},computed:{reminderLeaves:function(){return(this.role.reminders||[]).length+(this.role.remindersGlobal||[]).length},...Object(n["d"])(["grimoire"])},data(){return{}},filters:{nameToFontSize:e=>e&&e.length>10?"90%":"110%"},methods:{setRole(){this.$emit("set-role")}}},u=g,f=(i("5720"),i("2877")),y=Object(f["a"])(u,m,p,!1,null,"deec739a",null),b=y.exports,v={components:{Token:b},props:{player:{type:Object,required:!0}},computed:{...Object(n["d"])("players",["players"]),...Object(n["d"])(["grimoire","session"]),...Object(n["b"])({nightOrder:"players/nightOrder"}),index:function(){return this.players.indexOf(this.player)},voteLocked:function(){const e=this.session,t=this.players.length;if(!e.nomination)return!1;const i=(this.index-1+t-e.nomination[1])%t;return iwindow.innerHeight?"vh":"vw";return this.players.length<7?{width:18+this.grimoire.zoom+e}:this.players.length<=10?{width:16+this.grimoire.zoom+e}:this.players.length<=15?{width:14+this.grimoire.zoom+e}:{width:12+this.grimoire.zoom+e}}},data(){return{isMenuOpen:!1,isSwap:!1}},methods:{changePronouns(){if(this.session.isSpectator&&this.player.id!==this.session.playerId)return;const e=prompt("Player pronouns",this.player.pronouns);null!==e&&this.updatePlayer("pronouns",e,!0)},toggleStatus(){this.grimoire.isPublic?this.player.isDead?this.player.isVoteless?(this.updatePlayer("isVoteless",!1),this.updatePlayer("isDead",!1)):this.updatePlayer("isVoteless",!0):(this.updatePlayer("isDead",!0),this.player.isMarked&&this.updatePlayer("isMarked",!1)):(this.updatePlayer("isDead",!this.player.isDead),this.player.isMarked&&this.updatePlayer("isMarked",!1),this.player.isVoteless&&this.updatePlayer("isVoteless",!1))},changeName(){if(this.session.isSpectator)return;const e=prompt("Player name",this.player.name)||this.player.name;this.updatePlayer("name",e,!0)},removeReminder(e){const t=[...this.player.reminders];t.splice(this.player.reminders.indexOf(e),1),this.updatePlayer("reminders",t,!0)},updatePlayer(e,t,i=!1){this.session.isSpectator&&"reminders"!==e&&"pronouns"!==e||(this.$store.commit("players/update",{player:this.player,property:e,value:t}),i&&(this.isMenuOpen=!1))},removePlayer(){this.isMenuOpen=!1,this.$emit("trigger",["removePlayer"])},swapPlayer(e){this.isMenuOpen=!1,this.$emit("trigger",["swapPlayer",e])},movePlayer(e){this.isMenuOpen=!1,this.$emit("trigger",["movePlayer",e])},nominatePlayer(e){this.isMenuOpen=!1,this.$emit("trigger",["nominatePlayer",e])},cancel(){this.$emit("trigger",["cancel"])},claimSeat(){this.isMenuOpen=!1,this.$emit("trigger",["claimSeat"])},vote(){this.session.isSpectator||this.voteLocked&&this.$store.commit("session/voteSync",[this.index,!this.session.votes[this.index]])}}},k=v,w=(i("74c9"),Object(f["a"])(k,c,d,!1,null,null,null)),N=w.exports,_=function(){var e=this,t=e.$createElement,o=e._self._c||t;return e.modals.reminder&&e.availableReminders.length&&e.players[e.playerIndex]?o("Modal",{on:{close:function(t){return e.toggleModal("reminder")}}},[o("h3",[e._v("Choose a reminder token:")]),o("ul",{staticClass:"reminders"},e._l(e.availableReminders,(function(t){return o("li",{key:t.role+" "+t.name,staticClass:"reminder",class:[t.role],on:{click:function(i){return e.addReminder(t)}}},[o("span",{staticClass:"icon",style:{backgroundImage:"url("+(t.image&&e.grimoire.isImageOptIn?t.image:i("61b0")("./"+(t.imageAlt||t.role)+".png"))+")"}}),o("span",{staticClass:"text"},[e._v(e._s(t.name))])])})),0)]):e._e()},S=[],R=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("transition",{attrs:{name:"modal-fade"}},[i("div",{staticClass:"modal-backdrop",on:{click:e.close}},[i("div",{staticClass:"modal",class:{maximized:e.isMaximized},attrs:{role:"dialog","aria-labelledby":"modalTitle","aria-describedby":"modalDescription"},on:{click:function(e){e.stopPropagation()}}},[i("div",{staticClass:"top-right-buttons"},[i("font-awesome-icon",{staticClass:"top-right-button",attrs:{icon:["fas",e.isMaximized?"window-minimize":"window-maximize"]},on:{click:function(t){e.isMaximized=!e.isMaximized}}}),i("font-awesome-icon",{staticClass:"top-right-button",attrs:{icon:"times-circle"},on:{click:e.close}})],1),i("div",{staticClass:"slot"},[e._t("default")],2)])])])},x=[],I={data:function(){return{isMaximized:!1}},methods:{close(){this.$emit("close")}}},M=I,T=(i("8781"),Object(f["a"])(M,R,x,!1,null,null,null)),O=T.exports;const C=({id:e,image:t,imageAlt:i})=>o=>({role:e,image:t,imageAlt:i,name:o});var P={components:{Modal:O},props:["playerIndex"],computed:{availableReminders(){let e=[];const{players:t,bluffs:i}=this.$store.state.players;return this.$store.state.roles.forEach(o=>{(t.some(e=>e.role.id===o.id)||i.some(e=>e.id===o.id))&&(e=[...e,...o.reminders.map(C(o))]),o.remindersGlobal&&o.remindersGlobal.length&&(e=[...e,...o.remindersGlobal.map(C(o))])}),this.$store.state.players.fabled.forEach(t=>{e=[...e,...t.reminders.map(C(t))]}),this.$store.state.otherTravelers.forEach(i=>{t.some(e=>e.role.id===i.id)&&(e=[...e,...i.reminders.map(C(i))])}),e.push({role:"good",name:"Good"}),e.push({role:"evil",name:"Evil"}),e.push({role:"custom",name:"Custom note"}),e},...Object(n["d"])(["modals","grimoire"]),...Object(n["d"])("players",["players"])},methods:{addReminder(e){const t=this.$store.state.players.players[this.playerIndex];let i;if("custom"===e.role){const e=prompt("Add a custom reminder note");if(!e)return;i=[...t.reminders,{role:"custom",name:e}]}else i=[...t.reminders,e];this.$store.commit("players/update",{player:t,property:"reminders",value:i}),this.$store.commit("toggleModal","reminder")},...Object(n["c"])(["toggleModal"])}},D=P,E=(i("740e"),Object(f["a"])(D,_,S,!1,null,"334686bc",null)),V=E.exports,j=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.modals.role&&e.availableRoles.length?i("Modal",{on:{close:e.close}},[i("h3",[e._v(" Choose a new character for "+e._s(e.playerIndex>=0&&e.players.length?e.players[e.playerIndex].name:"bluffing")+" ")]),"editionRoles"!==e.tab&&e.otherTravelers.size?e._e():i("ul",{staticClass:"tokens"},e._l(e.availableRoles,(function(t){return i("li",{key:t.id,class:[t.team],on:{click:function(i){return e.setRole(t)}}},[i("Token",{attrs:{role:t}})],1)})),0),"otherTravelers"===e.tab&&e.otherTravelers.size?i("ul",{staticClass:"tokens"},e._l(e.otherTravelers.values(),(function(t){return i("li",{key:t.id,class:[t.team],on:{click:function(i){return e.setRole(t)}}},[i("Token",{attrs:{role:t}})],1)})),0):e._e(),e.playerIndex>=0&&e.otherTravelers.size&&!e.session.isSpectator?i("div",{staticClass:"button-group"},[i("span",{staticClass:"button",class:{townsfolk:"editionRoles"===e.tab},on:{click:function(t){e.tab="editionRoles"}}},[e._v("Edition Roles")]),i("span",{staticClass:"button",class:{townsfolk:"otherTravelers"===e.tab},on:{click:function(t){e.tab="otherTravelers"}}},[e._v("Other Travelers")])]):e._e()]):e._e()},$=[],A={components:{Token:b,Modal:O},props:["playerIndex"],computed:{availableRoles(){const e=[],t=this.$store.state.players.players;return this.$store.state.roles.forEach(i=>{(this.playerIndex>=0||this.playerIndex<0&&!t.some(e=>e.role.id===i.id))&&e.push(i)}),e.push({}),e},...Object(n["d"])(["modals","roles","session"]),...Object(n["d"])("players",["players"]),...Object(n["d"])(["otherTravelers"])},data(){return{tab:"editionRoles"}},methods:{setRole(e){if(this.playerIndex<0)this.$store.commit("players/setBluff",{index:-1*this.playerIndex-1,role:e});else{if(this.session.isSpectator&&"traveler"===e.team)return;const t=this.$store.state.players.players[this.playerIndex];this.$store.commit("players/update",{player:t,property:"role",value:e})}this.tab="editionRoles",this.$store.commit("toggleModal","role")},close(){this.tab="editionRoles",this.toggleModal("role")},...Object(n["c"])(["toggleModal"])}},G=A,H=(i("23ca"),Object(f["a"])(G,j,$,!1,null,"2e3008b9",null)),F=H.exports,L={components:{Player:N,Token:b,RoleModal:F,ReminderModal:V},computed:{...Object(n["b"])({nightOrder:"players/nightOrder"}),...Object(n["d"])(["grimoire","roles","session"]),...Object(n["d"])("players",["players","bluffs","fabled"])},data(){return{selectedPlayer:0,bluffSize:3,swap:-1,move:-1,nominate:-1,isBluffsOpen:!0,isFabledOpen:!0}},methods:{toggleBluffs(){this.isBluffsOpen=!this.isBluffsOpen},toggleFabled(){this.isFabledOpen=!this.isFabledOpen},removeFabled(e){this.session.isSpectator||this.$store.commit("players/setFabled",{index:e})},handleTrigger(e,[t,i]){"function"===typeof this[t]&&this[t](e,i)},claimSeat(e){this.session.isSpectator&&(this.session.playerId===this.players[e].id?this.$store.commit("session/claimSeat",-1):this.$store.commit("session/claimSeat",e))},openReminderModal(e){this.selectedPlayer=e,this.$store.commit("toggleModal","reminder")},openRoleModal(e){const t=this.players[e];this.session.isSpectator&&t&&"traveler"===t.role.team||(this.selectedPlayer=e,this.$store.commit("toggleModal","role"))},removePlayer(e){if(!this.session.isSpectator&&!this.session.lockedVote&&confirm(`Do you really want to remove ${this.players[e].name}?`)){const{nomination:t}=this.session;t&&(t.includes(e)?this.$store.commit("session/nomination"):(t[0]>e||t[1]>e)&&this.$store.commit("session/setNomination",[t[0]>e?t[0]-1:t[0],t[1]>e?t[1]-1:t[1]])),this.$store.commit("players/remove",e)}},swapPlayer(e,t){if(!this.session.isSpectator&&!this.session.lockedVote)if(void 0===t)this.cancel(),this.swap=e;else{if(this.session.nomination){const e=this.players.indexOf(t),i=this.session.nomination.map(t=>t===this.swap?e:t===e?this.swap:t);this.session.nomination[0]===i[0]&&this.session.nomination[1]===i[1]||this.$store.commit("session/setNomination",i)}this.$store.commit("players/swap",[this.swap,this.players.indexOf(t)]),this.cancel()}},movePlayer(e,t){if(!this.session.isSpectator&&!this.session.lockedVote)if(void 0===t)this.cancel(),this.move=e;else{if(this.session.nomination){const e=this.players.indexOf(t),i=this.session.nomination.map(t=>t===this.move?e:t>this.move&&t<=e?t-1:t=e?t+1:t);this.session.nomination[0]===i[0]&&this.session.nomination[1]===i[1]||this.$store.commit("session/setNomination",i)}this.$store.commit("players/move",[this.move,this.players.indexOf(t)]),this.cancel()}},nominatePlayer(e,t){if(!this.session.isSpectator&&!this.session.lockedVote)if(void 0===t)this.cancel(),e!==this.nominate&&(this.nominate=e);else{const e=[this.nominate,this.players.indexOf(t)];this.$store.commit("session/nomination",{nomination:e}),this.cancel()}},cancel(){this.move=-1,this.swap=-1,this.nominate=-1}}},B=L,z=(i("3636"),Object(f["a"])(B,l,h,!1,null,null,null)),W=z.exports,Y=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("ul",{staticClass:"info"},[o("li",{staticClass:"edition",class:["edition-"+e.edition.id],style:{backgroundImage:"url("+(e.edition.logo&&e.grimoire.isImageOptIn?e.edition.logo:i("ce23")("./"+e.edition.id+".png"))+")"}}),e.players.length-e.teams.traveler<5?o("li",[e._v(" Please add more players! ")]):e._e(),o("li",[e.edition.isOfficial?e._e():o("span",{staticClass:"meta"},[e._v(" "+e._s(e.edition.name)+" "+e._s(e.edition.author?"by "+e.edition.author:"")+" ")]),o("span",[e._v(" "+e._s(e.players.length)+" "),o("font-awesome-icon",{staticClass:"players",attrs:{icon:"users"}})],1),o("span",[e._v(" "+e._s(e.teams.alive)+" "),o("font-awesome-icon",{staticClass:"alive",attrs:{icon:"heartbeat"}})],1),o("span",[e._v(" "+e._s(e.teams.votes)+" "),o("font-awesome-icon",{staticClass:"votes",attrs:{icon:"vote-yea"}})],1)]),e.players.length-e.teams.traveler>=5?o("li",[o("span",[e._v(" "+e._s(e.teams.townsfolk)+" "),o("font-awesome-icon",{staticClass:"townsfolk",attrs:{icon:"user-friends"}})],1),o("span",[e._v(" "+e._s(e.teams.outsider)+" "),o("font-awesome-icon",{staticClass:"outsider",attrs:{icon:e.teams.outsider>1?"user-friends":"user"}})],1),o("span",[e._v(" "+e._s(e.teams.minion)+" "),o("font-awesome-icon",{staticClass:"minion",attrs:{icon:e.teams.minion>1?"user-friends":"user"}})],1),o("span",[e._v(" "+e._s(e.teams.demon)+" "),o("font-awesome-icon",{staticClass:"demon",attrs:{icon:e.teams.demon>1?"user-friends":"user"}})],1),e.teams.traveler?o("span",[e._v(" "+e._s(e.teams.traveler)+" "),o("font-awesome-icon",{staticClass:"traveler",attrs:{icon:e.teams.traveler>1?"user-friends":"user"}})],1):e._e(),e.grimoire.isNight?o("span",[e._v(" Night phase "),o("font-awesome-icon",{attrs:{icon:["fas","cloud-moon"]}})],1):e._e()]):e._e()])},J=[],U=i("634a"),q={computed:{teams:function(){const{players:e}=this.$store.state.players,t=this.$store.getters["players/nonTravelers"],i=e.filter(e=>!0!==e.isDead).length;return{...U[t-5],traveler:e.length-t,alive:i,votes:i+e.filter(e=>!0===e.isDead&&!0!==e.isVoteless).length}},...Object(n["d"])(["edition","grimoire"]),...Object(n["d"])("players",["players"])}},K=q,Z=(i("c5bf"),Object(f["a"])(K,Y,J,!1,null,"e858a1da",null)),Q=Z.exports,X=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"controls"}},[i("span",{directives:[{name:"show",rawName:"v-show",value:e.session.voteHistory.length&&e.session.sessionId,expression:"session.voteHistory.length && session.sessionId"}],staticClass:"nomlog-summary",attrs:{title:e.session.voteHistory.length+" recent "+(1==e.session.voteHistory.length?"nomination":"nominations")},on:{click:function(t){return e.toggleModal("voteHistory")}}},[i("font-awesome-icon",{attrs:{icon:"book-dead"}}),e._v(" "+e._s(e.session.voteHistory.length)+" ")],1),e.session.sessionId?i("span",{staticClass:"session",class:{spectator:e.session.isSpectator,reconnecting:e.session.isReconnecting},attrs:{title:e.session.playerCount+" other players in this session"+(e.session.ping?" ("+e.session.ping+"ms latency)":"")},on:{click:e.leaveSession}},[i("font-awesome-icon",{attrs:{icon:"broadcast-tower"}}),e._v(" "+e._s(e.session.playerCount)+" ")],1):e._e(),i("div",{staticClass:"menu",class:{open:e.grimoire.isMenuOpen}},[i("font-awesome-icon",{attrs:{icon:"cog"},on:{click:e.toggleMenu}}),i("ul",[i("li",{staticClass:"tabs",class:e.tab},[i("font-awesome-icon",{attrs:{icon:"book-open"},on:{click:function(t){e.tab="grimoire"}}}),i("font-awesome-icon",{attrs:{icon:"broadcast-tower"},on:{click:function(t){e.tab="session"}}}),e.session.isSpectator?e._e():i("font-awesome-icon",{attrs:{icon:"users"},on:{click:function(t){e.tab="players"}}}),i("font-awesome-icon",{attrs:{icon:"theater-masks"},on:{click:function(t){e.tab="characters"}}}),i("font-awesome-icon",{attrs:{icon:"question"},on:{click:function(t){e.tab="help"}}})],1),"grimoire"===e.tab?[i("li",{staticClass:"headline"},[e._v("Grimoire")]),e.players.length?i("li",{on:{click:e.toggleGrimoire}},[e.grimoire.isPublic?e._e():[e._v("Hide")],e.grimoire.isPublic?[e._v("Show")]:e._e(),i("em",[e._v("[G]")])],2):e._e(),e.session.isSpectator?e._e():i("li",{on:{click:e.toggleNight}},[e.grimoire.isNight?e._e():[e._v("Switch to Night")],e.grimoire.isNight?[e._v("Switch to Day")]:e._e(),i("em",[e._v("[S]")])],2),e.players.length?i("li",{on:{click:e.toggleNightOrder}},[e._v(" Night order "),i("em",[i("font-awesome-icon",{attrs:{icon:["fas",e.grimoire.isNightOrder?"check-square":"square"]}})],1)]):e._e(),e.players.length?i("li",[e._v(" Zoom "),i("em",[i("font-awesome-icon",{attrs:{icon:"search-minus"},on:{click:function(t){return e.setZoom(e.grimoire.zoom-1)}}}),e._v(" "+e._s(Math.round(100+10*e.grimoire.zoom))+"% "),i("font-awesome-icon",{attrs:{icon:"search-plus"},on:{click:function(t){return e.setZoom(e.grimoire.zoom+1)}}})],1)]):e._e(),i("li",{on:{click:e.setBackground}},[e._v(" Background image "),i("em",[i("font-awesome-icon",{attrs:{icon:"image"}})],1)]),e.edition.isOfficial?e._e():i("li",{on:{click:e.imageOptIn}},[i("small",[e._v("Show Custom Images")]),i("em",[i("font-awesome-icon",{attrs:{icon:["fas",e.grimoire.isImageOptIn?"check-square":"square"]}})],1)]),i("li",{on:{click:e.toggleStatic}},[e._v(" Disable Animations "),i("em",[i("font-awesome-icon",{attrs:{icon:["fas",e.grimoire.isStatic?"check-square":"square"]}})],1)]),i("li",{on:{click:e.toggleMuted}},[e._v(" Mute Sounds "),i("em",[i("font-awesome-icon",{attrs:{icon:["fas",e.grimoire.isMuted?"volume-mute":"volume-up"]}})],1)])]:e._e(),"session"===e.tab?[e.session.sessionId?i("li",{staticClass:"headline"},[e._v(" "+e._s(e.session.isSpectator?"Playing":"Hosting")+" ")]):i("li",{staticClass:"headline"},[e._v(" Live Session ")]),e.session.sessionId?[e.session.ping?i("li",[e._v(" Delay to "+e._s(e.session.isSpectator?"host":"players")+" "),i("em",[e._v(e._s(e.session.ping)+"ms")])]):e._e(),i("li",{on:{click:e.copySessionUrl}},[e._v(" Copy player link "),i("em",[i("font-awesome-icon",{attrs:{icon:"copy"}})],1)]),e.session.isSpectator?e._e():i("li",{on:{click:e.distributeRoles}},[e._v(" Send Characters "),i("em",[i("font-awesome-icon",{attrs:{icon:"theater-masks"}})],1)]),e.session.voteHistory.length||!e.session.isSpectator?i("li",{on:{click:function(t){return e.toggleModal("voteHistory")}}},[e._v(" Vote history"),i("em",[e._v("[V]")])]):e._e(),i("li",{on:{click:e.leaveSession}},[e._v(" Leave Session "),i("em",[e._v(e._s(e.session.sessionId))])])]:[i("li",{on:{click:e.hostSession}},[e._v("Host (Storyteller)"),i("em",[e._v("[H]")])]),i("li",{on:{click:e.joinSession}},[e._v("Join (Player)"),i("em",[e._v("[J]")])])]]:e._e(),"players"!==e.tab||e.session.isSpectator?e._e():[i("li",{staticClass:"headline"},[e._v("Players")]),e.players.length<20?i("li",{on:{click:e.addPlayer}},[e._v("Add"),i("em",[e._v("[A]")])]):e._e(),e.players.length>2?i("li",{on:{click:e.randomizeSeatings}},[e._v(" Randomize "),i("em",[i("font-awesome-icon",{attrs:{icon:"dice"}})],1)]):e._e(),e.players.length?i("li",{on:{click:e.clearPlayers}},[e._v(" Remove all "),i("em",[i("font-awesome-icon",{attrs:{icon:"trash-alt"}})],1)]):e._e()],"characters"===e.tab?[i("li",{staticClass:"headline"},[e._v("Characters")]),e.session.isSpectator?e._e():i("li",{on:{click:function(t){return e.toggleModal("edition")}}},[e._v(" Select Edition "),i("em",[e._v("[E]")])]),!e.session.isSpectator&&e.players.length>4?i("li",{on:{click:function(t){return e.toggleModal("roles")}}},[e._v(" Choose & Assign "),i("em",[e._v("[C]")])]):e._e(),e.session.isSpectator?e._e():i("li",{on:{click:function(t){return e.toggleModal("fabled")}}},[e._v(" Add Fabled "),i("em",[i("font-awesome-icon",{attrs:{icon:"dragon"}})],1)]),e.players.length?i("li",{on:{click:e.clearRoles}},[e._v(" Remove all "),i("em",[i("font-awesome-icon",{attrs:{icon:"trash-alt"}})],1)]):e._e()]:e._e(),"help"===e.tab?[i("li",{staticClass:"headline"},[e._v("Help")]),i("li",{on:{click:function(t){return e.toggleModal("reference")}}},[e._v(" Reference Sheet "),i("em",[e._v("[R]")])]),i("li",{on:{click:function(t){return e.toggleModal("nightOrder")}}},[e._v(" Night Order Sheet "),i("em",[e._v("[N]")])]),i("li",{on:{click:function(t){return e.toggleModal("gameState")}}},[e._v(" Game State JSON "),i("em",[i("font-awesome-icon",{attrs:{icon:"file-code"}})],1)]),i("li",[i("a",{attrs:{href:"https://discord.gg/Gd7ybwWbFk",target:"_blank"}},[e._v(" Join Discord ")]),i("em",[i("a",{attrs:{href:"https://discord.gg/Gd7ybwWbFk",target:"_blank"}},[i("font-awesome-icon",{attrs:{icon:["fab","discord"]}})],1)])]),i("li",[i("a",{attrs:{href:"https://github.com/bra1n/townsquare",target:"_blank"}},[e._v(" Source code ")]),i("em",[i("a",{attrs:{href:"https://github.com/bra1n/townsquare",target:"_blank"}},[i("font-awesome-icon",{attrs:{icon:["fab","github"]}})],1)])])]:e._e()],2)],1)])},ee=[],te={computed:{...Object(n["d"])(["grimoire","session","edition"]),...Object(n["d"])("players",["players"])},data(){return{tab:"grimoire"}},methods:{setBackground(){const e=prompt("Enter custom background URL");(e||""===e)&&this.$store.commit("setBackground",e)},hostSession(){if(this.session.sessionId)return;const e=prompt("Enter a channel number / name for your session",Math.round(1e4*Math.random()));e&&(this.$store.commit("session/clearVoteHistory"),this.$store.commit("session/setSpectator",!1),this.$store.commit("session/setSessionId",e),this.copySessionUrl())},copySessionUrl(){const e=window.location.href.split("#")[0],t=e+"#"+this.session.sessionId;navigator.clipboard.writeText(t)},distributeRoles(){if(this.session.isSpectator)return;const e="Do you want to distribute assigned characters to all SEATED players?";confirm(e)&&(this.$store.commit("session/distributeRoles",!0),setTimeout((()=>{this.$store.commit("session/distributeRoles",!1)}).bind(this),2e3))},imageOptIn(){const e="Are you sure you want to allow custom images? A malicious script file author might track your IP address this way.";(this.grimoire.isImageOptIn||confirm(e))&&this.toggleImageOptIn()},joinSession(){if(this.session.sessionId)return this.leaveSession();let e=prompt("Enter the channel number / name of the session you want to join");e.match(/^https?:\/\//i)&&(e=e.split("#").pop()),e&&(this.$store.commit("session/clearVoteHistory"),this.$store.commit("session/setSpectator",!0),this.$store.commit("toggleGrimoire",!1),this.$store.commit("session/setSessionId",e))},leaveSession(){confirm("Are you sure you want to leave the active live game?")&&(this.$store.commit("session/setSpectator",!1),this.$store.commit("session/setSessionId",""))},addPlayer(){if(this.session.isSpectator)return;if(this.players.length>=20)return;const e=prompt("Player name");e&&this.$store.commit("players/add",e)},randomizeSeatings(){this.session.isSpectator||confirm("Are you sure you want to randomize seatings?")&&this.$store.dispatch("players/randomize")},clearPlayers(){this.session.isSpectator||confirm("Are you sure you want to remove all players?")&&(this.session.nomination&&this.$store.commit("session/nomination"),this.$store.commit("players/clear"))},clearRoles(){confirm("Are you sure you want to remove all player roles?")&&this.$store.dispatch("players/clearRoles")},toggleNight(){this.$store.commit("toggleNight"),this.grimoire.isNight&&this.$store.commit("session/setMarkedPlayer",-1)},...Object(n["c"])(["toggleGrimoire","toggleMenu","toggleImageOptIn","toggleMuted","toggleNightOrder","toggleStatic","setZoom","toggleModal"])}},ie=te,oe=(i("2176"),Object(f["a"])(ie,X,ee,!1,null,"84ed831a",null)),se=oe.exports,ae=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.modals.roles&&e.nonTravelers>=5?i("Modal",{staticClass:"roles",on:{close:function(t){return e.toggleModal("roles")}}},[i("h3",[e._v("Select the characters for "+e._s(e.nonTravelers)+" players:")]),e._l(e.roleSelection,(function(t,o){return i("ul",{key:o,staticClass:"tokens"},[i("li",{staticClass:"count",class:[o]},[e._v(" "+e._s(t.reduce((function(e,t){var i=t.selected;return e+i}),0))+" / "+e._s(e.game[e.nonTravelers-5][o])+" ")]),e._l(t,(function(t){return i("li",{key:t.id,class:[t.team,t.selected?"selected":""],on:{click:function(e){t.selected=t.selected?0:1}}},[i("Token",{attrs:{role:t}}),t.setup?i("font-awesome-icon",{attrs:{icon:"exclamation-triangle"}}):e._e(),e.allowMultiple?i("div",{staticClass:"buttons"},[i("font-awesome-icon",{attrs:{icon:"minus-circle"},on:{click:function(e){e.stopPropagation(),t.selected--}}}),i("span",[e._v(e._s(t.selected>1?"x"+t.selected:""))]),i("font-awesome-icon",{attrs:{icon:"plus-circle"},on:{click:function(e){e.stopPropagation(),t.selected++}}})],1):e._e()],1)}))],2)})),e.hasSelectedSetupRoles?i("div",{staticClass:"warning"},[i("font-awesome-icon",{attrs:{icon:"exclamation-triangle"}}),i("span",[e._v(" Warning: there are characters selected that modify the game setup! The randomizer does not account for these characters. ")])],1):e._e(),i("label",{staticClass:"multiple",class:{checked:e.allowMultiple}},[i("font-awesome-icon",{attrs:{icon:e.allowMultiple?"check-square":"square"}}),i("input",{directives:[{name:"model",rawName:"v-model",value:e.allowMultiple,expression:"allowMultiple"}],attrs:{type:"checkbox",name:"allow-multiple"},domProps:{checked:Array.isArray(e.allowMultiple)?e._i(e.allowMultiple,null)>-1:e.allowMultiple},on:{change:function(t){var i=e.allowMultiple,o=t.target,s=!!o.checked;if(Array.isArray(i)){var a=null,n=e._i(i,a);o.checked?n<0&&(e.allowMultiple=i.concat([a])):n>-1&&(e.allowMultiple=i.slice(0,n).concat(i.slice(n+1)))}else e.allowMultiple=s}}}),e._v(" Allow duplicate characters ")],1),i("div",{staticClass:"button-group"},[i("div",{staticClass:"button",class:{disabled:e.selectedRoles>e.nonTravelers||!e.selectedRoles},on:{click:e.assignRoles}},[i("font-awesome-icon",{attrs:{icon:"people-arrows"}}),e._v(" Assign "+e._s(e.selectedRoles)+" characters randomly ")],1),i("div",{staticClass:"button",on:{click:e.selectRandomRoles}},[i("font-awesome-icon",{attrs:{icon:"random"}}),e._v(" Shuffle characters ")],1)])],2):e._e()},ne=[];const re=e=>e[Math.floor(Math.random()*e.length)];var le={components:{Token:b,Modal:O},data:function(){return{roleSelection:{},game:U,allowMultiple:!1}},computed:{selectedRoles:function(){return Object.values(this.roleSelection).map(e=>e.reduce((e,{selected:t})=>e+t,0)).reduce((e,t)=>e+t,0)},hasSelectedSetupRoles:function(){return Object.values(this.roleSelection).some(e=>e.some(e=>e.selected&&e.setup))},...Object(n["d"])(["roles","modals"]),...Object(n["d"])("players",["players"]),...Object(n["b"])({nonTravelers:"players/nonTravelers"})},methods:{selectRandomRoles(){this.roleSelection={},this.roles.forEach(e=>{this.roleSelection[e.team]||this.$set(this.roleSelection,e.team,[]),this.roleSelection[e.team].push(e),this.$set(e,"selected",0)}),delete this.roleSelection["traveler"];const e=Math.max(5,this.nonTravelers),t=this.game[e-5];Object.keys(t).forEach(e=>{for(let i=0;i!e.selected);t.length&&(re(t).selected=1)}})},assignRoles(){if(this.selectedRoles<=this.nonTravelers&&this.selectedRoles){const e=Object.values(this.roleSelection).map(e=>e.reduce((e,t)=>[...e,...Array(t.selected).fill(t)],[])).reduce((e,t)=>[...e,...t],[]).map(e=>[Math.random(),e]).sort((e,t)=>e[0]-t[0]).map(e=>e[1]);this.players.forEach(t=>{if("traveler"!==t.role.team&&e.length){const i=e.pop();this.$store.commit("players/update",{player:t,property:"role",value:i})}}),this.$store.commit("toggleModal","roles")}},...Object(n["c"])(["toggleModal"])},mounted:function(){Object.keys(this.roleSelection).length||this.selectRandomRoles()},watch:{roles(){this.selectRandomRoles()}}},he=le,ce=(i("8970"),Object(f["a"])(he,ae,ne,!1,null,"365502ca",null)),de=ce.exports,me=function(){var e=this,t=e.$createElement,o=e._self._c||t;return e.modals.edition?o("Modal",{staticClass:"editions",on:{close:function(t){return e.toggleModal("edition")}}},[e.isCustom?o("div",{staticClass:"custom"},[o("h3",[e._v("Load custom script / characters")]),e._v(" To play with a custom script, you need to select the characters you want to play with in the official "),o("a",{attrs:{href:"https://script.bloodontheclocktower.com/",target:"_blank"}},[e._v("Script Tool")]),e._v(' and then upload the generated "custom-list.json" either directly here or provide a URL to such a hosted JSON file.'),o("br"),o("br"),e._v(" To play with custom characters, please read "),o("a",{attrs:{href:"https://github.com/bra1n/townsquare#custom-characters",target:"_blank"}},[e._v("the documentation")]),e._v(" on how to write a custom character definition file. "),o("b",[e._v("Only load custom JSON files from sources that you trust!")]),o("h3",[e._v("Some popular custom scripts:")]),o("ul",{staticClass:"scripts"},e._l(e.scripts,(function(t,i){return o("li",{key:i,on:{click:function(i){return e.handleURL(t[1])}}},[e._v(" "+e._s(t[0])+" ")])})),0),o("input",{ref:"upload",attrs:{type:"file",accept:"application/json"},on:{change:e.handleUpload}}),o("div",{staticClass:"button-group"},[o("div",{staticClass:"button",on:{click:e.openUpload}},[o("font-awesome-icon",{attrs:{icon:"file-upload"}}),e._v(" Upload JSON ")],1),o("div",{staticClass:"button",on:{click:e.promptURL}},[o("font-awesome-icon",{attrs:{icon:"link"}}),e._v(" Enter URL ")],1),o("div",{staticClass:"button",on:{click:function(t){e.isCustom=!1}}},[o("font-awesome-icon",{attrs:{icon:"undo"}}),e._v(" Back ")],1)])]):o("div",[o("h3",[e._v("Select an edition:")]),o("ul",{staticClass:"editions"},[e._l(e.editions,(function(t){return o("li",{key:t.id,staticClass:"edition",class:["edition-"+t.id],style:{backgroundImage:"url("+i("ce23")("./"+t.id+".png")+")"},on:{click:function(i){return e.setEdition(t)}}},[e._v(" "+e._s(t.name)+" ")])})),o("li",{staticClass:"edition edition-custom",style:{backgroundImage:"url("+i("441d")+")"},on:{click:function(t){e.isCustom=!0}}},[e._v(" Custom Script / Characters ")])],2)])]):e._e()},pe=[],ge=i("00c0"),ue={components:{Modal:O},data:function(){return{editions:ge,isCustom:!1,scripts:[["Deadly Penance Day","https://gist.githubusercontent.com/bra1n/0337cc44c6fd2c44f7589256ed5486d2/raw/16be38fa3c01aaf49827303ac80577bdb52c0b25/penanceday.json"],["Catfishing 11.1","https://gist.githubusercontent.com/bra1n/8a5ec41a7bbf945f6b7dfc1cef72b569/raw/a312ab93c2f302e0ef83c8b65a4e8e82760fda3a/catfishing.json"],["On Thin Ice (Teensyville)","https://gist.githubusercontent.com/bra1n/8dacd9f2abc6f428331ea1213ab153f5/raw/0cacbcaf8ed9bddae0cca25a9ada97e9958d868b/on-thin-ice.json"],["Race To The Bottom (Teensyville)","https://gist.githubusercontent.com/bra1n/63e1354cb3dc9d4032bcd0623dc48888/raw/5acb0eedcc0a67a64a99c7e0e6271de0b7b2e1b2/race-to-the-bottom.json"],["Frankenstein's Mayor by Ted (Teensyville)","https://gist.githubusercontent.com/bra1n/32c52b422cc01b934a4291eeb81dbcee/raw/5bf770693bbf7aff5e86601c82ca4af3222f4ba6/Frankensteins_Mayor_by_Ted.json"],["Vigormortis High School (Teensyville)","https://gist.githubusercontent.com/bra1n/1f65bd4a999524719d5dabe98c3c2d27/raw/22bbec6bf56a51a7459e5ae41ed47e41971c5445/VigormortisHighSchool.json"]]}},computed:Object(n["d"])(["modals"]),methods:{openUpload(){this.$refs.upload.click()},handleUpload(){const e=this.$refs.upload.files[0];if(e&&e.size){const t=new FileReader;t.addEventListener("load",()=>{try{const e=JSON.parse(t.result);this.parseRoles(e)}catch(e){alert("Error reading custom script: "+e.message)}this.$refs.upload.value=""}),t.readAsText(e)}},promptURL(){const e=prompt("Enter URL to a custom-script.json file");e&&this.handleURL(e)},async handleURL(e){const t=await fetch(e);if(t&&t.json)try{const e=await t.json();this.parseRoles(e)}catch(i){alert("Error loading custom script: "+i.message)}},parseRoles(e){if(!e||!e.length)return;const t=e.findIndex(({id:e})=>"_meta"===e);let i={};if(t>-1&&(i=e.splice(t,1).pop()),this.$store.commit("setCustomRoles",e),this.$store.commit("setEdition",Object.assign({},i,{id:"custom"})),e.some(({id:e})=>this.$store.state.fabled.has(e))){const t=[];e.forEach(({id:e})=>{this.$store.state.fabled.has(e)&&t.push(this.$store.state.fabled.get(e))}),this.$store.commit("players/setFabled",{fabled:t})}this.isCustom=!1},...Object(n["c"])(["toggleModal","setEdition"])}},fe=ue,ye=(i("b162"),Object(f["a"])(fe,me,pe,!1,null,"7c2292c2",null)),be=ye.exports,ve=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"intro"},[i("img",{attrs:{src:"static/apple-icon.png",alt:""}}),e._v(" Welcome to the (unofficial) "),i("b",[e._v("Virtual Town Square and Grimoire")]),e._v(" for Blood on the Clocktower! Please add more players through the "),i("span",{staticClass:"button",on:{click:e.toggleMenu}},[i("font-awesome-icon",{attrs:{icon:"cog"}}),e._v(" Menu ")],1),e._v(" on the top right or by pressing "),i("b",[e._v("[A]")]),e._v(". You can also join a game session by pressing "),i("b",[e._v("[J]")]),e._v("."),i("br"),e._m(0)])},ke=[function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"footer"},[e._v(" This project is free and open source and can be found on "),i("a",{attrs:{href:"https://github.com/bra1n/townsquare",target:"_blank"}},[e._v("GitHub")]),e._v('. It is not affiliated with The Pandemonium Institute. "Blood on the Clocktower" is a trademark of Steven Medway and The Pandemonium Institute. ')])}],we={methods:Object(n["c"])(["toggleMenu"])},Ne=we,_e=(i("c198"),Object(f["a"])(Ne,ve,ke,!1,null,"0ae0fea6",null)),Se=_e.exports,Re=function(){var e=this,t=e.$createElement,o=e._self._c||t;return e.modals.reference&&e.roles.size?o("Modal",{staticClass:"characters",on:{close:function(t){return e.toggleModal("reference")}}},[o("font-awesome-icon",{staticClass:"toggle",attrs:{icon:"cloud-moon",title:"Show Night Order"},on:{click:function(t){return e.toggleModal("nightOrder")}}}),o("h3",[e._v(" Character Reference "),o("font-awesome-icon",{attrs:{icon:"address-card"}}),e._v(" "+e._s(e.edition.name||"Custom Script")+" ")],1),e._l(e.rolesGrouped,(function(t,s){return o("div",{key:s,class:["team",s]},[o("aside",[o("h4",[e._v(e._s(s))])]),o("ul",[e._l(t,(function(t){return o("li",{key:t.id,class:[s]},[t.id?o("span",{staticClass:"icon",style:{backgroundImage:"url("+(t.image&&e.grimoire.isImageOptIn?t.image:i("61b0")("./"+(t.imageAlt||t.id)+".png"))+")"}}):e._e(),o("div",{staticClass:"role"},[Object.keys(e.playersByRole).length?o("span",{staticClass:"player"},[e._v(e._s(e.playersByRole[t.id]?e.playersByRole[t.id].join(", "):""))]):e._e(),o("span",{staticClass:"name"},[e._v(e._s(t.name))]),o("span",{staticClass:"ability"},[e._v(e._s(t.ability))])])])})),o("li",{class:[s]}),o("li",{class:[s]})],2)])})),e.jinxed.length?o("div",{staticClass:"team jinxed"},[o("aside",[o("h4",[e._v("Jinxed")])]),o("ul",[e._l(e.jinxed,(function(t,s){return o("li",{key:s},[o("span",{staticClass:"icon",style:{backgroundImage:"url("+i("61b0")("./"+t.first.id+".png")+")"}}),o("span",{staticClass:"icon",style:{backgroundImage:"url("+i("61b0")("./"+t.second.id+".png")+")"}}),o("div",{staticClass:"role"},[o("span",{staticClass:"name"},[e._v(e._s(t.first.name)+" & "+e._s(t.second.name))]),o("span",{staticClass:"ability"},[e._v(e._s(t.reason))])])])})),o("li"),o("li")],2)]):e._e()],2):e._e()},xe=[],Ie={components:{Modal:O},computed:{jinxed:function(){const e=[];return this.roles.forEach(t=>{this.jinxes.get(t.id)&&this.jinxes.get(t.id).forEach((i,o)=>{this.roles.get(o)&&e.push({first:t,second:this.roles.get(o),reason:i})})}),e},rolesGrouped:function(){const e={};return this.roles.forEach(t=>{e[t.team]||(e[t.team]=[]),e[t.team].push(t)}),delete e["traveler"],e},playersByRole:function(){const e={};return this.players.forEach(({name:t,role:i})=>{i&&i.id&&"traveler"!==i.team&&(e[i.id]||(e[i.id]=[]),e[i.id].push(t))}),e},...Object(n["d"])(["roles","modals","edition","grimoire","jinxes"]),...Object(n["d"])("players",["players"])},methods:{...Object(n["c"])(["toggleModal"])}},Me=Ie,Te=(i("4c96"),Object(f["a"])(Me,Re,xe,!1,null,"7d0ee60b",null)),Oe=Te.exports,Ce=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{attrs:{id:"vote"}},[o("div",{staticClass:"arrows"},[o("span",{staticClass:"nominee",style:e.nomineeStyle}),o("span",{staticClass:"nominator",style:e.nominatorStyle})]),o("div",{staticClass:"overlay"},[o("audio",{attrs:{src:i("f6a8"),preload:"auto"}}),o("em",{staticClass:"blue"},[e._v(e._s(e.nominator.name))]),e._v(" nominated "),o("em",[e._v(e._s(e.nominee.name))]),e._v("! "),o("br"),o("em",{staticClass:"blue"},[e._v(" "+e._s(e.voters.length)+" vote"+e._s(1!==e.voters.length?"s":"")+" ")]),e._v(" in favor "),"traveler"!==e.nominee.role.team?o("em",[e._v(" (majority is "+e._s(Math.ceil(e.alive/2))+") ")]):o("em",[e._v("(majority is "+e._s(Math.ceil(e.players.length/2))+")")]),e.session.isSpectator?e.canVote?[e.session.isVoteInProgress?e._e():o("div",[e._v(" "+e._s(e.session.votingSpeed/1e3)+" seconds between votes ")]),o("div",{staticClass:"button-group"},[o("div",{staticClass:"button townsfolk",class:{disabled:!e.currentVote},on:{click:function(t){return e.vote(!1)}}},[e._v(" Hand DOWN ")]),o("div",{staticClass:"button demon",class:{disabled:e.currentVote},on:{click:function(t){return e.vote(!0)}}},[e._v(" Hand UP ")])])]:e.player?e._e():o("div",[e._v(" Please claim a seat to vote. ")]):[!e.session.isVoteInProgress&&e.session.lockedVote<1?o("div",[e._v(" Time per player: "),o("font-awesome-icon",{attrs:{icon:"minus-circle"},on:{mousedown:function(t){return t.preventDefault(),e.setVotingSpeed(-500)}}}),e._v(" "+e._s(e.session.votingSpeed/1e3)+"s "),o("font-awesome-icon",{attrs:{icon:"plus-circle"},on:{mousedown:function(t){return t.preventDefault(),e.setVotingSpeed(500)}}})],1):e._e(),o("div",{staticClass:"button-group"},[e.session.isVoteInProgress?e._e():o("div",{staticClass:"button townsfolk",on:{click:e.countdown}},[e._v(" Countdown ")]),e.session.isVoteInProgress?[o("div",{staticClass:"button townsfolk",class:{disabled:!e.session.lockedVote},on:{click:e.pause}},[e._v(" "+e._s(e.voteTimer?"Pause":"Resume")+" ")]),o("div",{staticClass:"button",on:{click:e.stop}},[e._v("Reset")])]:o("div",{staticClass:"button",on:{click:e.start}},[e._v(" "+e._s(e.session.lockedVote?"Restart":"Start")+" ")]),o("div",{staticClass:"button demon",on:{click:e.finish}},[e._v("Close")])],2),"traveler"!==e.nominee.role.team?o("div",{staticClass:"button-group mark"},[o("div",{staticClass:"button",class:{disabled:e.session.nomination[1]===e.session.markedPlayer},on:{click:e.setMarked}},[e._v(" Mark for execution ")]),o("div",{staticClass:"button",on:{click:e.removeMarked}},[e._v(" Clear mark ")])]):e._e()]],2),o("transition",{attrs:{name:"blur"}},[e.session.isVoteInProgress&&!e.session.lockedVote?o("div",{staticClass:"countdown"},[o("span",[e._v("3")]),o("span",[e._v("2")]),o("span",[e._v("1")]),o("span",[e._v("GO")]),o("audio",{attrs:{autoplay:!e.grimoire.isMuted,src:i("f6a8"),muted:e.grimoire.isMuted}})]):e._e()])],1)},Pe=[],De={computed:{...Object(n["d"])("players",["players"]),...Object(n["d"])(["session","grimoire"]),...Object(n["b"])({alive:"players/alive"}),nominator:function(){return this.players[this.session.nomination[0]]},nominatorStyle:function(){const e=this.players.length,t=this.session.nomination[0];return{transform:`rotate(${Math.round(t/e*360)}deg)`,transitionDuration:this.session.votingSpeed-100+"ms"}},nominee:function(){return this.players[this.session.nomination[1]]},nomineeStyle:function(){const e=this.players.length,t=this.session.nomination[1],i=this.session.lockedVote,o=360*(t+Math.min(i,e))/e;return{transform:`rotate(${Math.round(o)}deg)`,transitionDuration:this.session.votingSpeed-100+"ms"}},player:function(){return this.players.find(e=>e.id===this.session.playerId)},currentVote:function(){const e=this.players.findIndex(e=>e.id===this.session.playerId);return e>=0?!!this.session.votes[e]:void 0},canVote:function(){if(!this.player)return!1;if(this.player.isVoteless&&"traveler"!==this.nominee.role.team)return!1;const e=this.session,t=this.players.length,i=this.players.indexOf(this.player),o=(i-1+t-e.nomination[1])%t;return o>=e.lockedVote-1},voters:function(){const e=this.session.nomination[1],t=Array(this.players.length).fill("").map((e,t)=>this.session.votes[t]?this.players[t].name:""),i=[...t.slice(e+1),...t.slice(0,e+1)];return(this.session.lockedVote?i.slice(0,this.session.lockedVote-1):i).filter(e=>!!e)}},data(){return{voteTimer:null}},methods:{countdown(){this.$store.commit("session/lockVote",0),this.$store.commit("session/setVoteInProgress",!0),this.voteTimer=setInterval(()=>{this.start()},4e3)},start(){this.$store.commit("session/lockVote",1),this.$store.commit("session/setVoteInProgress",!0),clearInterval(this.voteTimer),this.voteTimer=setInterval(()=>{this.$store.commit("session/lockVote"),this.session.lockedVote>this.players.length&&(clearInterval(this.voteTimer),this.$store.commit("session/setVoteInProgress",!1))},this.session.votingSpeed)},pause(){this.voteTimer?(clearInterval(this.voteTimer),this.voteTimer=null):this.voteTimer=setInterval(()=>{this.$store.commit("session/lockVote"),this.session.lockedVote>this.players.length&&(clearInterval(this.voteTimer),this.$store.commit("session/setVoteInProgress",!1))},this.session.votingSpeed)},stop(){clearInterval(this.voteTimer),this.voteTimer=null,this.$store.commit("session/setVoteInProgress",!1),this.$store.commit("session/lockVote",0)},finish(){clearInterval(this.voteTimer),this.$store.commit("session/addHistory",this.players),this.$store.commit("session/nomination")},vote(e){if(!this.canVote)return!1;const t=this.players.findIndex(e=>e.id===this.session.playerId);t>=0&&!!this.session.votes[t]!==e&&this.$store.commit("session/voteSync",[t,e])},setVotingSpeed(e){const t=Math.round(this.session.votingSpeed+e);t>0&&this.$store.commit("session/setVotingSpeed",t)},setMarked(){this.$store.commit("session/setMarkedPlayer",this.session.nomination[1])},removeMarked(){this.$store.commit("session/setMarkedPlayer",-1)}}},Ee=De,Ve=(i("8e72"),Object(f["a"])(Ee,Ce,Pe,!1,null,"56f82741",null)),je=Ve.exports,$e=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{attrs:{id:"gradients"}},e._l(e.gradients,(function(e,t){return i("svg",{key:t,attrs:{width:"0",height:"0"}},[i("linearGradient",{attrs:{id:e[0],x1:"50%",y1:"100%",x2:"50%",y2:"0%"}},[i("stop",{style:{"stop-color":e[2],"stop-opacity":1},attrs:{offset:"0%"}}),i("stop",{style:{"stop-color":e[1],"stop-opacity":1},attrs:{offset:"100%"}})],1)],1)})),0)},Ae=[],Ge={data(){return{gradients:[["demon","#ce0100","#000"],["townsfolk","#1f65ff","#000"],["default","#4E4E4E","#000"]]}}},He=Ge,Fe=(i("3f8f"),Object(f["a"])(He,$e,Ae,!1,null,"1e202a64",null)),Le=Fe.exports,Be=function(){var e=this,t=e.$createElement,o=e._self._c||t;return e.modals.nightOrder&&e.roles.size?o("Modal",{staticClass:"night-reference",on:{close:function(t){return e.toggleModal("nightOrder")}}},[o("font-awesome-icon",{staticClass:"toggle",attrs:{icon:"address-card",title:"Show Character Reference"},on:{click:function(t){return e.toggleModal("reference")}}}),o("h3",[e._v(" Night Order "),o("font-awesome-icon",{attrs:{icon:"cloud-moon"}}),e._v(" "+e._s(e.edition.name||"Custom Script")+" ")],1),o("div",{staticClass:"night"},[o("ul",{staticClass:"first"},[o("li",{staticClass:"headline"},[e._v("First Night")]),e._l(e.rolesFirstNight,(function(t){return o("li",{key:t.name,class:[t.team]},[o("span",{staticClass:"name"},[e._v(" "+e._s(t.name)+" "),t.players.length?o("span",{staticClass:"player"},[o("br"),e._l(t.players,(function(i,s){return o("small",{key:s,class:{dead:i.isDead}},[e._v(e._s(i.name+(t.players.length>s+1?",":"")))])}))],2):e._e()]),t.id?o("span",{staticClass:"icon",style:{backgroundImage:"url("+(t.image&&e.grimoire.isImageOptIn?t.image:i("61b0")("./"+(t.imageAlt||t.id)+".png"))+")"}}):e._e(),t.firstNightReminder?o("span",{staticClass:"reminder"},[e._v(" "+e._s(t.firstNightReminder)+" ")]):e._e()])}))],2),o("ul",{staticClass:"other"},[o("li",{staticClass:"headline"},[e._v("Other Nights")]),e._l(e.rolesOtherNight,(function(t){return o("li",{key:t.name,class:[t.team]},[t.id?o("span",{staticClass:"icon",style:{backgroundImage:"url("+(t.image&&e.grimoire.isImageOptIn?t.image:i("61b0")("./"+(t.imageAlt||t.id)+".png"))+")"}}):e._e(),o("span",{staticClass:"name"},[e._v(" "+e._s(t.name)+" "),t.players.length?o("span",{staticClass:"player"},[o("br"),e._l(t.players,(function(i,s){return o("small",{key:s,class:{dead:i.isDead}},[e._v(e._s(i.name+(t.players.length>s+1?",":"")))])}))],2):e._e()]),t.otherNightReminder?o("span",{staticClass:"reminder"},[e._v(" "+e._s(t.otherNightReminder)+" ")]):e._e()])}))],2)])],1):e._e()},ze=[],We={components:{Modal:O},computed:{rolesFirstNight:function(){const e=[];return this.players.length>6&&e.push({id:"evil",name:"Minion info",firstNight:5,team:"minion",players:this.players.filter(e=>"minion"===e.role.team),firstNightReminder:"• If more than one Minion, they all make eye contact with each other. • Show the “This is the Demon” card. Point to the Demon."},{id:"evil",name:"Demon info & bluffs",firstNight:8,team:"demon",players:this.players.filter(e=>"demon"===e.role.team),firstNightReminder:"• 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."}),this.roles.forEach(t=>{const i=this.players.filter(e=>e.role.id===t.id);t.firstNight&&("traveler"!==t.team||i.length)&&e.push(Object.assign({players:i},t))}),this.fabled.filter(({firstNight:e})=>e).forEach(t=>{e.push(Object.assign({players:[]},t))}),e.sort((e,t)=>e.firstNight-t.firstNight),e},rolesOtherNight:function(){const e=[];return this.roles.forEach(t=>{const i=this.players.filter(e=>e.role.id===t.id);t.otherNight&&("traveler"!==t.team||i.length)&&e.push(Object.assign({players:i},t))}),this.fabled.filter(({otherNight:e})=>e).forEach(t=>{e.push(Object.assign({players:[]},t))}),e.sort((e,t)=>e.otherNight-t.otherNight),e},...Object(n["d"])(["roles","modals","edition","grimoire"]),...Object(n["d"])("players",["players","fabled"])},methods:{...Object(n["c"])(["toggleModal"])}},Ye=We,Je=(i("b6d8"),Object(f["a"])(Ye,Be,ze,!1,null,"ec47598c",null)),Ue=Je.exports,qe=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.modals.fabled&&e.fabled.length?i("Modal",{on:{close:function(t){return e.toggleModal("fabled")}}},[i("h3",[e._v(" Choose a fabled character to add to the game ")]),i("ul",{staticClass:"tokens"},e._l(e.fabled,(function(t){return i("li",{key:t.id,on:{click:function(i){return e.setFabled(t)}}},[i("Token",{attrs:{role:t}})],1)})),0)]):e._e()},Ke=[],Ze={components:{Token:b,Modal:O},computed:{...Object(n["d"])(["modals","fabled","grimoire"]),fabled(){const e=[];return this.$store.state.fabled.forEach(t=>{this.$store.state.players.fabled.some(e=>e.id===t.id)||e.push(t)}),e}},methods:{setFabled(e){this.$store.commit("players/setFabled",{fabled:e}),this.$store.commit("toggleModal","fabled")},...Object(n["c"])(["toggleModal"])}},Qe=Ze,Xe=(i("ff40"),Object(f["a"])(Qe,qe,Ke,!1,null,"d6b399a0",null)),et=Xe.exports,tt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return!e.modals.voteHistory||!e.session.voteHistory&&e.session.isSpectator?e._e():i("Modal",{staticClass:"vote-history",on:{close:function(t){return e.toggleModal("voteHistory")}}},[e.session.isSpectator?i("font-awesome-icon",{staticClass:"clear",attrs:{icon:"trash-alt",title:"Clear vote history"},on:{click:e.clearVoteHistory}}):e._e(),i("h3",[e._v("Vote history")]),e.session.isSpectator?e._e():[i("div",{staticClass:"options"},[i("div",{staticClass:"option",on:{click:e.setRecordVoteHistory}},[i("font-awesome-icon",{attrs:{icon:["fas",e.session.isVoteHistoryAllowed?"check-square":"square"]}}),e._v(" Accessible to players ")],1),i("div",{staticClass:"option",on:{click:e.clearVoteHistory}},[i("font-awesome-icon",{attrs:{icon:"trash-alt"}}),e._v(" Clear for everyone ")],1)])],i("table",[i("thead",[i("tr",[i("td",[e._v("Time")]),i("td",[e._v("Nominator")]),i("td",[e._v("Nominee")]),i("td",[e._v("Type")]),i("td",[e._v("Votes")]),i("td",[e._v("Majority")]),i("td",[i("font-awesome-icon",{attrs:{icon:"user-friends"}}),e._v(" Voters ")],1)])]),i("tbody",e._l(e.session.voteHistory,(function(t,o){return i("tr",{key:o},[i("td",[e._v(" "+e._s(t.timestamp.getHours().toString().padStart(2,"0"))+":"+e._s(t.timestamp.getMinutes().toString().padStart(2,"0"))+" ")]),i("td",[e._v(e._s(t.nominator))]),i("td",[e._v(e._s(t.nominee))]),i("td",[e._v(e._s(t.type))]),i("td",[e._v(" "+e._s(t.votes.length)+" "),i("font-awesome-icon",{attrs:{icon:"hand-paper"}})],1),i("td",[e._v(" "+e._s(t.majority)+" "),i("font-awesome-icon",{attrs:{icon:["fas",t.votes.length>=t.majority?"check-square":"square"]}})],1),i("td",[e._v(" "+e._s(t.votes.join(", "))+" ")])])})),0)])],2)},it=[],ot={components:{Modal:O},computed:{...Object(n["d"])(["session","modals"])},methods:{clearVoteHistory(){this.$store.commit("session/clearVoteHistory")},setRecordVoteHistory(){this.$store.commit("session/setVoteHistoryAllowed",!this.session.isVoteHistoryAllowed)},...Object(n["c"])(["toggleModal"])}},st=ot,at=(i("8e93"),Object(f["a"])(st,tt,it,!1,null,"482a37a8",null)),nt=at.exports,rt=function(){var e=this,t=e.$createElement,i=e._self._c||t;return e.modals.gameState?i("Modal",{staticClass:"game-state",on:{close:function(t){return e.toggleModal("gameState")}}},[i("h3",[e._v("Current Game State")]),i("textarea",{domProps:{value:e.gamestate},on:{input:function(t){t.stopPropagation(),e.input=t.target.value},click:function(e){return e.target.select()},keyup:function(e){e.stopPropagation()}}}),i("div",{staticClass:"button-group"},[i("div",{staticClass:"button townsfolk",on:{click:e.copy}},[i("font-awesome-icon",{attrs:{icon:"copy"}}),e._v(" Copy JSON ")],1),e.session.isSpectator?e._e():i("div",{staticClass:"button demon",on:{click:e.load}},[i("font-awesome-icon",{attrs:{icon:"cog"}}),e._v(" Load State ")],1)])]):e._e()},lt=[],ht={components:{Modal:O},computed:{gamestate:function(){return JSON.stringify({bluffs:this.players.bluffs.map(({id:e})=>e),edition:this.edition.isOfficial?{id:this.edition.id}:this.edition,roles:this.edition.isOfficial?"":this.$store.getters.customRolesStripped,fabled:this.players.fabled.map(e=>e.isCustom?e:{id:e.id}),players:this.players.players.map(e=>({...e,role:e.role.id||{}}))})},...Object(n["d"])(["modals","players","edition","roles","session"])},data(){return{input:""}},methods:{copy:function(){navigator.clipboard.writeText(this.input||this.gamestate)},load:function(){if(!this.session.isSpectator)try{const e=JSON.parse(this.input||this.gamestate),{bluffs:t,edition:i,roles:o,fabled:s,players:a}=e;o&&this.$store.commit("setCustomRoles",o),i&&this.$store.commit("setEdition",i),t.length&&t.forEach((e,t)=>{this.$store.commit("players/setBluff",{index:t,role:this.$store.state.roles.get(e)||{}})}),s&&this.$store.commit("players/setFabled",{fabled:s.map(e=>this.$store.state.fabled.get(e)||this.$store.state.fabled.get(e.id)||e)}),a&&this.$store.commit("players/set",a.map(e=>({...e,role:this.$store.state.roles.get(e.role)||this.$store.getters.rolesJSONbyId.get(e.role)||{}}))),this.toggleModal("gameState")}catch(e){alert("Unable to parse JSON: "+e)}},...Object(n["c"])(["toggleModal"])}},ct=ht,dt=(i("eb35"),Object(f["a"])(ct,rt,lt,!1,null,"7971ea6f",null)),mt=dt.exports,pt={components:{GameStateModal:mt,VoteHistoryModal:nt,FabledModal:et,NightOrderModal:Ue,Vote:je,ReferenceModal:Oe,Intro:Se,TownInfo:Q,TownSquare:W,Menu:se,EditionModal:be,RolesModal:de,Gradients:Le},computed:{...Object(n["d"])(["grimoire","session"]),...Object(n["d"])("players",["players"])},data(){return{version:r["a"]}},methods:{keyup({key:e,ctrlKey:t,metaKey:i}){if(!t&&!i)switch(e.toLocaleLowerCase()){case"g":this.$store.commit("toggleGrimoire");break;case"a":this.$refs.menu.addPlayer();break;case"h":this.$refs.menu.hostSession();break;case"j":this.$refs.menu.joinSession();break;case"r":this.$store.commit("toggleModal","reference");break;case"n":this.$store.commit("toggleModal","nightOrder");break;case"e":if(this.session.isSpectator)return;this.$store.commit("toggleModal","edition");break;case"c":if(this.session.isSpectator)return;this.$store.commit("toggleModal","roles");break;case"v":!this.session.voteHistory.length&&this.session.isSpectator||this.$store.commit("toggleModal","voteHistory");break;case"s":if(this.session.isSpectator)return;this.$refs.menu.toggleNight();break;case"escape":this.$store.commit("toggleModal")}}}},gt=pt,ut=(i("5c0b"),Object(f["a"])(gt,s,a,!1,null,null,null)),ft=ut.exports,yt=i("dfb1"),bt=i.n(yt);class vt{constructor(e){this._wss="wss://live.clocktower.online:8080/",this._socket=null,this._isSpectator=!0,this._gamestate=[],this._store=e,this._pingInterval=3e4,this._pingTimer=null,this._reconnectTimer=null,this._players={},this._pings={},this._store.state.session.sessionId&&this.connect(this._store.state.session.sessionId)}_open(e){this.disconnect(),this._socket=new WebSocket(this._wss+e+"/"+(this._isSpectator?this._store.state.session.playerId:"host")),this._socket.addEventListener("message",this._handleMessage.bind(this)),this._socket.onopen=this._onOpen.bind(this),this._socket.onclose=t=>{this._socket=null,clearInterval(this._pingTimer),this._pingTimer=null,1e3!==t.code?(this._store.commit("session/setReconnecting",!0),this._reconnectTimer=setTimeout(()=>this.connect(e),3e3)):(this._store.commit("session/setSessionId",""),t.reason&&alert(t.reason))}}_send(e,t){this._socket&&1===this._socket.readyState&&this._socket.send(JSON.stringify([e,t]))}_sendDirect(e,t,i){e?this._send("direct",{[e]:[t,i]}):this._send(t,i)}_onOpen(){this._isSpectator?this._sendDirect("host","getGamestate",this._store.state.session.playerId):this.sendGamestate(),this._ping()}_ping(){this._handlePing(),this._send("ping",[this._isSpectator?this._store.state.session.playerId:Object.keys(this._players).length,"latency"]),clearTimeout(this._pingTimer),this._pingTimer=setTimeout(this._ping.bind(this),this._pingInterval)}_handleMessage({data:e}){let t,i;try{[t,i]=JSON.parse(e)}catch(o){console.log("unsupported socket message",e)}switch(t){case"getGamestate":this.sendGamestate(i);break;case"edition":this._updateEdition(i);break;case"fabled":this._updateFabled(i);break;case"gs":this._updateGamestate(i);break;case"player":this._updatePlayer(i);break;case"claim":this._updateSeat(i);break;case"ping":this._handlePing(i);break;case"nomination":if(!this._isSpectator)return;i||this._store.commit("session/addHistory",this._store.state.players.players),this._store.commit("session/nomination",{nomination:i});break;case"swap":if(!this._isSpectator)return;this._store.commit("players/swap",i);break;case"move":if(!this._isSpectator)return;this._store.commit("players/move",i);break;case"remove":if(!this._isSpectator)return;this._store.commit("players/remove",i);break;case"marked":if(!this._isSpectator)return;this._store.commit("session/setMarkedPlayer",i);break;case"isNight":if(!this._isSpectator)return;this._store.commit("toggleNight",i);break;case"isVoteHistoryAllowed":if(!this._isSpectator)return;this._store.commit("session/setVoteHistoryAllowed",i),this._store.commit("session/clearVoteHistory");break;case"votingSpeed":if(!this._isSpectator)return;this._store.commit("session/setVotingSpeed",i);break;case"clearVoteHistory":if(!this._isSpectator)return;this._store.commit("session/clearVoteHistory");break;case"isVoteInProgress":if(!this._isSpectator)return;this._store.commit("session/setVoteInProgress",i);break;case"vote":this._handleVote(i);break;case"lock":this._handleLock(i);break;case"bye":this._handleBye(i);break;case"pronouns":this._updatePlayerPronouns(i);break}}connect(e){this._store.state.session.playerId||this._store.commit("session/setPlayerId",Math.random().toString(36).substr(2)),this._pings={},this._store.commit("session/setPlayerCount",0),this._store.commit("session/setPing",0),this._isSpectator=this._store.state.session.isSpectator,this._open(e)}disconnect(){this._pings={},this._store.commit("session/setPlayerCount",0),this._store.commit("session/setPing",0),this._store.commit("session/setReconnecting",!1),clearTimeout(this._reconnectTimer),this._socket&&(this._isSpectator&&this._sendDirect("host","bye",this._store.state.session.playerId),this._socket.close(1e3),this._socket=null)}sendGamestate(e="",t=!1){if(!this._isSpectator)if(this._gamestate=this._store.state.players.players.map(e=>({name:e.name,id:e.id,isDead:e.isDead,isVoteless:e.isVoteless,pronouns:e.pronouns,...e.role&&"traveler"===e.role.team?{roleId:e.role.id}:{}})),t)this._sendDirect(e,"gs",{gamestate:this._gamestate,isLightweight:t});else{const{session:t,grimoire:i}=this._store.state,{fabled:o}=this._store.state.players;this.sendEdition(e),this._sendDirect(e,"gs",{gamestate:this._gamestate,isNight:i.isNight,isVoteHistoryAllowed:t.isVoteHistoryAllowed,nomination:t.nomination,votingSpeed:t.votingSpeed,lockedVote:t.lockedVote,isVoteInProgress:t.isVoteInProgress,markedPlayer:t.markedPlayer,fabled:o.map(e=>e.isCustom?e:{id:e.id}),...t.nomination?{votes:t.votes}:{}})}}_updateGamestate(e){if(!this._isSpectator)return;const{gamestate:t,isLightweight:i,isNight:o,isVoteHistoryAllowed:s,nomination:a,votingSpeed:n,votes:r,lockedVote:l,isVoteInProgress:h,markedPlayer:c,fabled:d}=e,m=this._store.state.players.players;if(m.lengtht.length)for(let p=m.length;p>t.length;p--)this._store.commit("players/remove",p-1);t.forEach((e,t)=>{const i=m[t],{roleId:o}=e;if(["name","id","isDead","isVoteless","pronouns"].forEach(t=>{const o=e[t];i[t]!==o&&this._store.commit("players/update",{player:i,property:t,value:o})}),o&&i.role.id!==o){const e=this._store.state.roles.get(o)||this._store.getters.rolesJSONbyId.get(o);e&&this._store.commit("players/update",{player:i,property:"role",value:e})}else o||"traveler"!==i.role.team||this._store.commit("players/update",{player:i,property:"role",value:{}})}),i||(this._store.commit("toggleNight",!!o),this._store.commit("session/setVoteHistoryAllowed",s),this._store.commit("session/nomination",{nomination:a,votes:r,votingSpeed:n,lockedVote:l,isVoteInProgress:h}),this._store.commit("session/setMarkedPlayer",c),this._store.commit("players/setFabled",{fabled:d.map(e=>this._store.state.fabled.get(e.id)||e)}))}sendEdition(e=""){if(this._isSpectator)return;const{edition:t}=this._store.state;let i;t.isOfficial||(i=this._store.getters.customRolesStripped),this._sendDirect(e,"edition",{edition:t.isOfficial?{id:t.id}:t,...i?{roles:i}:{}})}_updateEdition({edition:e,roles:t}){if(this._isSpectator&&(this._store.commit("setEdition",e),t&&(this._store.commit("setCustomRoles",t),this._store.state.roles.size!==t.length))){const e=[];t.forEach(({id:t})=>{this._store.state.roles.get(t)||e.push(t)}),alert("This session contains custom characters that can't be found. Please load them before joining! Missing roles: "+e.join(", ")),this.disconnect(),this._store.commit("toggleModal","edition")}}sendFabled(){if(this._isSpectator)return;const{fabled:e}=this._store.state.players;this._send("fabled",e.map(e=>e.isCustom?e:{id:e.id}))}_updateFabled(e){this._isSpectator&&this._store.commit("players/setFabled",{fabled:e.map(e=>this._store.state.fabled.get(e.id)||e)})}sendPlayer({player:e,property:t,value:i}){if(this._isSpectator||"reminders"===t)return;const o=this._store.state.players.players.indexOf(e);"role"===t?i.team&&"traveler"===i.team?(this._gamestate[o].roleId=i.id,this._send("player",{index:o,property:t,value:i.id})):this._gamestate[o].roleId&&(delete this._gamestate[o].roleId,this._send("player",{index:o,property:t,value:""})):this._send("player",{index:o,property:t,value:i})}_updatePlayer({index:e,property:t,value:i}){if(!this._isSpectator)return;const o=this._store.state.players.players[e];if(o)if("role"===t)if(i||"traveler"!==o.role.team){const e=this._store.state.roles.get(i)||this._store.getters.rolesJSONbyId.get(i)||{};this._store.commit("players/update",{player:o,property:"role",value:e})}else this._store.commit("players/update",{player:o,property:"role",value:{}});else this._store.commit("players/update",{player:o,property:t,value:i})}sendPlayerPronouns({player:e,value:t,isFromSockets:i}){if(i||this._isSpectator&&this._store.state.session.playerId!==e.id)return;const o=this._store.state.players.players.indexOf(e);this._send("pronouns",[o,t])}_updatePlayerPronouns([e,t]){const i=this._store.state.players.players[e];this._store.commit("players/update",{player:i,property:"pronouns",value:t,isFromSockets:!0})}_handlePing([e=0,t]=[]){const i=(new Date).getTime();if(this._isSpectator)t&&this._store.commit("session/setPing",parseInt(t,10));else{for(let e in this._players)i-this._players[e]>2*this._pingInterval&&(delete this._players[e],delete this._pings[e]);if(this._store.state.players.players.forEach(e=>{e.id&&!this._players[e.id]&&this._store.commit("players/update",{player:e,property:"id",value:""})}),e){this._players[e]=i;const o=parseInt(t,10);if(o&&o>0&&o<3e4){this._pings[e]=o;const t=Object.values(this._pings);this._store.commit("session/setPing",Math.round(t.reduce((e,t)=>e+t,0)/t.length))}}}this._isSpectator&&!e||this._store.commit("session/setPlayerCount",this._isSpectator?e:Object.keys(this._players).length)}_handleBye(e){this._isSpectator||(delete this._players[e],this._store.commit("session/setPlayerCount",Object.keys(this._players).length))}claimSeat(e){if(!this._isSpectator)return;const t=this._store.state.players.players;t.length>e&&(e<0||!t[e].id)&&this._send("claim",[e,this._store.state.session.playerId])}_updateSeat([e,t]){if(this._isSpectator)return;const i="id",o=this._store.state.players.players,s=o.findIndex(({id:e})=>e===t);if(s>=0&&s!==e&&this._store.commit("players/update",{player:o[s],property:i,value:""}),e>=0){const s=o[e];if(!s)return;this._store.commit("players/update",{player:s,property:i,value:t})}this._handlePing([!0,t,0])}distributeRoles(){if(this._isSpectator)return;const e={};this._store.state.players.players.forEach((t,i)=>{t.id&&t.role&&(e[t.id]=["player",{index:i,property:"role",value:t.role.id}])}),Object.keys(e).length&&this._send("direct",e)}nomination(e){if(this._isSpectator)return;const t=e&&e.nomination||e,i=this._store.state.players.players;(!t||i.length>t[0]&&i.length>t[1])&&(this.setVotingSpeed(this._store.state.session.votingSpeed),this._send("nomination",t))}setVoteInProgress(){this._isSpectator||this._send("isVoteInProgress",this._store.state.session.isVoteInProgress)}setIsNight(){this._isSpectator||this._send("isNight",this._store.state.grimoire.isNight)}setVoteHistoryAllowed(){this._isSpectator||this._send("isVoteHistoryAllowed",this._store.state.session.isVoteHistoryAllowed)}setVotingSpeed(e){this._isSpectator||e&&this._send("votingSpeed",e)}setMarked(e){this._isSpectator||this._send("marked",e)}clearVoteHistory(){this._isSpectator||this._send("clearVoteHistory")}vote([e]){const t=this._store.state.players.players[e];this._store.state.session.playerId!==t.id&&this._isSpectator||this._send("vote",[e,this._store.state.session.votes[e],!this._isSpectator])}_handleVote([e,t,i]){const{session:o,players:s}=this._store.state,a=s.players.length,n=(e-1+a-o.nomination[1])%a;(i||n>=o.lockedVote-1)&&this._store.commit("session/vote",[e,t])}lockVote(){if(this._isSpectator)return;const{lockedVote:e,votes:t,nomination:i}=this._store.state.session,{players:o}=this._store.state.players,s=(i[1]+e-1)%o.length;this._send("lock",[this._store.state.session.lockedVote,t[s]])}_handleLock([e,t]){if(this._isSpectator&&(this._store.commit("session/lockVote",e),e>1)){const{lockedVote:e,nomination:i}=this._store.state.session,{players:o}=this._store.state.players,s=(i[1]+e-1)%o.length;this._store.state.session.votes[s]!==t&&this._store.commit("session/vote",[s,t])}}swapPlayer(e){this._isSpectator||this._send("swap",e)}movePlayer(e){this._isSpectator||this._send("move",e)}removePlayer(e){this._isSpectator||this._send("remove",e)}}var kt=e=>{const t=new vt(e);e.subscribe(({type:e,payload:i},o)=>{switch(e){case"session/setSessionId":o.session.sessionId?t.connect(o.session.sessionId):(window.location.hash="",t.disconnect());break;case"session/claimSeat":t.claimSeat(i);break;case"session/distributeRoles":i&&t.distributeRoles();break;case"session/nomination":case"session/setNomination":t.nomination(i);break;case"session/setVoteInProgress":t.setVoteInProgress(i);break;case"session/voteSync":t.vote(i);break;case"session/lockVote":t.lockVote();break;case"session/setVotingSpeed":t.setVotingSpeed(i);break;case"session/clearVoteHistory":t.clearVoteHistory();break;case"session/setVoteHistoryAllowed":t.setVoteHistoryAllowed();break;case"toggleNight":t.setIsNight();break;case"setEdition":t.sendEdition();break;case"players/setFabled":t.sendFabled();break;case"session/setMarkedPlayer":t.setMarked(i);break;case"players/swap":t.swapPlayer(i);break;case"players/move":t.movePlayer(i);break;case"players/remove":t.removePlayer(i);break;case"players/set":case"players/clear":case"players/add":t.sendGamestate("",!0);break;case"players/update":"pronouns"===i.property?t.sendPlayerPronouns(i):t.sendPlayer(i);break}});const i=window.location.hash.substr(1);i&&(e.commit("session/setSpectator",!0),e.commit("session/setSessionId",i),e.commit("toggleGrimoire",!1))};const wt={name:"",id:"",role:{},reminders:[],isVoteless:!1,isDead:!1,pronouns:""},Nt=()=>({players:[],fabled:[],bluffs:[]}),_t={alive({players:e}){return e.filter(e=>!e.isDead).length},nonTravelers({players:e}){const t=e.filter(e=>"traveler"!==e.role.team);return Math.min(t.length,15)},nightOrder({players:e,fabled:t}){const i=[0],o=[0];e.forEach(({role:e})=>{e.firstNight&&!i.includes(e.firstNight)&&i.push(e.firstNight),e.otherNight&&!o.includes(e.otherNight)&&o.push(e.otherNight)}),t.forEach(e=>{e.firstNight&&!i.includes(e.firstNight)&&i.push(e.firstNight),e.otherNight&&!o.includes(e.otherNight)&&o.push(e.otherNight)}),i.sort((e,t)=>e-t),o.sort((e,t)=>e-t);const s=new Map;return e.forEach(e=>{const t=Math.max(i.indexOf(e.role.firstNight),0),a=Math.max(o.indexOf(e.role.otherNight),0);s.set(e,{first:t,other:a})}),t.forEach(e=>{const t=Math.max(i.indexOf(e.firstNight),0),a=Math.max(o.indexOf(e.otherNight),0);s.set(e,{first:t,other:a})}),s}},St={randomize({state:e,commit:t}){const i=e.players.map(e=>[Math.random(),e]).sort((e,t)=>e[0]-t[0]).map(e=>e[1]);t("set",i)},clearRoles({state:e,commit:t,rootState:i}){let o;i.session.isSpectator?o=e.players.map(e=>("traveler"!==e.role.team&&(e.role={}),e.reminders=[],e)):(o=e.players.map(({name:e,id:t,pronouns:i})=>({...wt,name:e,id:t,pronouns:i})),t("setFabled",{fabled:[]})),t("set",o),t("setBluff")}},Rt={clear(e){e.players=[],e.bluffs=[],e.fabled=[]},set(e,t=[]){e.players=t},update(e,{player:t,property:i,value:o}){const s=e.players.indexOf(t);s>=0&&(e.players[s][i]=o)},add(e,t){e.players.push({...wt,name:t})},remove(e,t){e.players.splice(t,1)},swap(e,[t,i]){[e.players[t],e.players[i]]=[e.players[i],e.players[t]],e.players.splice(0,0)},move(e,[t,i]){e.players.splice(i,0,e.players.splice(t,1)[0])},setBluff(e,{index:t,role:i}={}){void 0!==t?e.bluffs.splice(t,1,i):e.bluffs=[]},setFabled(e,{index:t,fabled:i}={}){void 0!==t?e.fabled.splice(t,1):i&&(Array.isArray(i)?e.fabled=i:e.fabled.push(i))}};var xt={namespaced:!0,state:Nt,getters:_t,actions:St,mutations:Rt};const It=(e,[t,i])=>{e.nomination&&(e.votes=[...e.votes],e.votes[t]=void 0===i?!e.votes[t]:i)},Mt=()=>({sessionId:"",isSpectator:!1,isReconnecting:!1,playerCount:0,ping:0,playerId:"",claimedSeat:-1,nomination:!1,votes:[],lockedVote:0,votingSpeed:3e3,isVoteInProgress:!1,voteHistory:[],markedPlayer:-1,isVoteHistoryAllowed:!0,isRolesDistributed:!1}),Tt={},Ot={},Ct=e=>(t,i)=>{t[e]=i},Pt={setPlayerId:Ct("playerId"),setSpectator:Ct("isSpectator"),setReconnecting:Ct("isReconnecting"),setPlayerCount:Ct("playerCount"),setPing:Ct("ping"),setVotingSpeed:Ct("votingSpeed"),setVoteInProgress:Ct("isVoteInProgress"),setMarkedPlayer:Ct("markedPlayer"),setNomination:Ct("nomination"),setVoteHistoryAllowed:Ct("isVoteHistoryAllowed"),claimSeat:Ct("claimedSeat"),distributeRoles:Ct("isRolesDistributed"),setSessionId(e,t){e.sessionId=t.toLocaleLowerCase().replace(/[^0-9a-z]/g,"").substr(0,10)},nomination(e,{nomination:t,votes:i,votingSpeed:o,lockedVote:s,isVoteInProgress:a}={}){e.nomination=t||!1,e.votes=i||[],e.votingSpeed=o||e.votingSpeed,e.lockedVote=s||0,e.isVoteInProgress=a||!1},addHistory(e,t){if(!e.isVoteHistoryAllowed&&e.isSpectator)return;if(!e.nomination||e.lockedVote<=t.length)return;const i="traveler"===t[e.nomination[1]].role.team;e.voteHistory.push({timestamp:new Date,nominator:t[e.nomination[0]].name,nominee:t[e.nomination[1]].name,type:i?"Exile":"Execution",majority:Math.ceil(t.filter(e=>!e.isDead||i).length/2),votes:t.filter((t,i)=>e.votes[i]).map(({name:e})=>e)})},clearVoteHistory(e){e.voteHistory=[]},vote:It,voteSync:It,lockVote(e,t){e.lockedVote=void 0!==t?t:e.lockedVote+1}};var Dt={namespaced:!0,state:Mt,getters:Tt,actions:Ot,mutations:Pt},Et=i("b1d9"),Vt=i("b249"),jt=i("c825");o["a"].use(n["a"]);const $t=(e=ge[0])=>new Map(Et.filter(t=>t.edition===e.id||e.roles.includes(t.id)).sort((e,t)=>t.team.localeCompare(e.team)).map(e=>[e.id,e])),At=(e=ge[0])=>new Map(Et.filter(t=>"traveler"===t.team&&t.edition!==e.id&&!e.roles.includes(t.id)).map(e=>[e.id,e])),Gt=e=>({grimoire:t},i)=>{t[e]=i},Ht=e=>({grimoire:t},i)=>{t[e]=!0===i||!1===i?i:!t[e]},Ft=e=>e.toLocaleLowerCase().replace(/[^a-z0-9]/g,""),Lt=new Map(ge.map(e=>[e.id,e])),Bt=new Map(Et.map(e=>[e.id,e])),zt=new Map(Vt.map(e=>[e.id,e]));let Wt={};try{Wt=new Map(jt.map(({id:e,hatred:t})=>[Ft(e),new Map(t.map(({id:e,reason:t})=>[Ft(e),t]))]))}catch(ei){console.error("couldn't load jinxes",ei)}const Yt={id:"",name:"",image:"",ability:"",edition:"custom",firstNight:0,firstNightReminder:"",otherNight:0,otherNightReminder:"",reminders:[],remindersGlobal:[],setup:!1,team:"townsfolk",isCustom:!0};var Jt=new n["a"].Store({modules:{players:xt,session:Dt},state:{grimoire:{isNight:!1,isNightOrder:!0,isPublic:!0,isMenuOpen:!1,isStatic:!1,isMuted:!1,isImageOptIn:!1,zoom:0,background:""},modals:{edition:!1,fabled:!1,gameState:!1,nightOrder:!1,reference:!1,reminder:!1,role:!1,roles:!1,voteHistory:!1},edition:Lt.get("tb"),roles:$t(),otherTravelers:At(),fabled:zt,jinxes:Wt},getters:{customRolesStripped:({roles:e})=>{const t=[],i=Object.keys(Yt),o=["firstNightReminder","otherNightReminder","isCustom"];return e.forEach(e=>{if(e.isCustom){const s={};for(let t in e){if(o.includes(t))continue;const a=e[t];i.includes(t)&&a!==Yt[t]&&(s[i.indexOf(t)]=a)}t.push(s)}else t.push({id:e.id})}),t},rolesJSONbyId:()=>Bt},mutations:{setZoom:Gt("zoom"),setBackground:Gt("background"),toggleMuted:Ht("isMuted"),toggleMenu:Ht("isMenuOpen"),toggleNightOrder:Ht("isNightOrder"),toggleStatic:Ht("isStatic"),toggleNight:Ht("isNight"),toggleGrimoire:Ht("isPublic"),toggleImageOptIn:Ht("isImageOptIn"),toggleModal({modals:e},t){t&&(e[t]=!e[t]);for(let i in e)i!==t&&(e[i]=!1)},setCustomRoles(e,t){const i=t.map(e=>{if(e[0]){const t=Object.keys(Yt),i={};for(let o in e)t[o]&&(i[t[o]]=e[o]);return i}return e}).map(e=>(e.id=Ft(e.id),e)).map(t=>Bt.get(t.id)||e.roles.get(t.id)||Object.assign({},Yt,t)).map(e=>(Bt.get(e.id)||(e.imageAlt={townsfolk:"good",outsider:"outsider",minion:"minion",demon:"evil",fabled:"fabled"}[e.team]||"custom",e.firstNight=Math.abs(e.firstNight),e.otherNight=Math.abs(e.otherNight)),e)).filter(e=>e.name&&e.ability&&e.team).sort((e,t)=>t.team.localeCompare(e.team));e.roles=new Map(i.filter(e=>"fabled"!==e.team).map(e=>[e.id,e])),e.fabled=new Map([...i.filter(e=>"fabled"===e.team).map(e=>[e.id,e]),...Vt.map(e=>[e.id,e])]),e.otherTravelers=new Map(Et.filter(e=>"traveler"===e.team&&!t.some(t=>t.id===e.id)).map(e=>[e.id,e]))},setEdition(e,t){Lt.has(t.id)?(e.edition=Lt.get(t.id),e.roles=$t(e.edition),e.otherTravelers=At(e.edition)):e.edition=t,e.modals.edition=!1}},plugins:[bt.a,kt]}),Ut=i("ecee"),qt=i("c074"),Kt=i("f2d1"),Zt=i("ad3d");const Qt=["AddressCard","BookOpen","BookDead","BroadcastTower","Chair","CheckSquare","CloudMoon","Cog","Copy","Dice","Dragon","ExchangeAlt","ExclamationTriangle","FileCode","FileUpload","HandPaper","HandPointRight","Heartbeat","Image","Link","MinusCircle","PeopleArrows","PlusCircle","Question","Random","RedoAlt","SearchMinus","SearchPlus","Skull","Square","TheaterMasks","Times","TimesCircle","TrashAlt","Undo","User","UserEdit","UserFriends","Users","VenusMars","VolumeUp","VolumeMute","VoteYea","WindowMaximize","WindowMinimize"],Xt=["Github","Discord"];Ut["c"].add(...Qt.map(e=>qt["a"]["fa"+e]),...Xt.map(e=>Kt["a"]["fa"+e])),o["a"].component("font-awesome-icon",Zt["a"]),o["a"].config.productionTip=!1,new o["a"]({render:e=>e(ft),store:Jt}).$mount("#app")},5720:function(e,t,i){"use strict";i("50d1")},5740:function(e,t,i){e.exports=i.p+"img/riot.a2890eee.png"},"5b44":function(e,t,i){e.exports=i.p+"img/fabled.227b24f9.png"},"5bd9":function(e,t,i){e.exports=i.p+"img/cannibal.54808c1a.png"},"5c0b":function(e,t,i){"use strict";i("9c0c")},"5c56":function(e,t,i){e.exports=i.p+"img/duchess.f8361787.png"},"5c8e":function(e,t,i){e.exports=i.p+"img/goblin.ec4fe0e0.png"},"5cf2":function(e,t,i){e.exports=i.p+"img/x.d2209023.png"},"5f4e":function(e,t,i){e.exports=i.p+"img/tb-minion.b01c557e.png"},"61b0":function(e,t,i){var o={"./acrobat.png":"887b","./alchemist.png":"dbe8","./alhadikhia.png":"9989","./amnesiac.png":"043b","./angel.png":"bfe2","./apprentice.png":"4bea","./artist.png":"2cd0","./assassin.png":"9187","./atheist.png":"ca7a","./balloonist.png":"65db","./barber.png":"fcc6","./barista.png":"027a","./baron.png":"24d3","./beggar.png":"cfcc","./bishop.png":"8030","./bonecollector.png":"23b1","./boomdandy.png":"aae9","./bountyhunter.png":"899d","./buddhist.png":"1d01","./bureaucrat.png":"25f6","./butcher.png":"37dd","./butler.png":"64fe","./cannibal.png":"5bd9","./cerenovus.png":"0436","./chambermaid.png":"125e","./chef.png":"1e83","./choirboy.png":"d6bc","./clockmaker.png":"f93f","./courtier.png":"ee02","./cultleader.png":"398f","./custom.png":"fd83","./damsel.png":"72d7","./deusexfiasco.png":"9002","./deviant.png":"3b65","./devilsadvocate.png":"cd8b","./djinn.png":"e222","./doomsayer.png":"659f","./dreamer.png":"71b8","./drunk.png":"d97d","./duchess.png":"5c56","./empath.png":"bb7a","./engineer.png":"ea17","./evil.png":"c24f","./eviltwin.png":"e014","./exorcist.png":"5072","./fabled.png":"5b44","./fanggu.png":"6ac0","./farmer.png":"7a7f","./fearmonger.png":"d69f","./fibbin.png":"6eb1","./fiddler.png":"64be","./fisherman.png":"c5db","./flowergirl.png":"66ae","./fool.png":"4720","./fortuneteller.png":"43e8","./gambler.png":"dce6","./gangster.png":"97c6","./general.png":"ac9c","./goblin.png":"5c8e","./godfather.png":"99d0","./golem.png":"4eb3","./good.png":"667e","./goon.png":"55aa","./gossip.png":"cadc","./grandmother.png":"c9f5","./gunslinger.png":"ee92","./harlot.png":"559e","./hellslibrarian.png":"a367","./heretic.png":"5626","./huntsman.png":"1923","./imp.png":"3e70","./innkeeper.png":"663c","./investigator.png":"b570","./judge.png":"f09b","./juggler.png":"65ab","./king.png":"9639","./klutz.png":"adfc","./legion.png":"da81","./leviathan.png":"2b04","./librarian.png":"4d73","./lilmonsta.png":"c492","./lleech.png":"9f74","./lunatic.png":"0b61","./lycanthrope.png":"c316","./magician.png":"ab3c","./marionette.png":"e69f","./mastermind.png":"f834","./mathematician.png":"8888","./matron.png":"b1cb","./mayor.png":"b223","./mephit.png":"df5e","./mezepheles.png":"c7b7","./minion.png":"75bc","./minstrel.png":"4efd","./monk.png":"6741","./moonchild.png":"3f65","./mutant.png":"17ad","./nightwatchman.png":"3cd8","./noble.png":"f7d3","./nodashii.png":"68a4","./oracle.png":"0c12","./outsider.png":"2490","./pacifist.png":"fff1","./philosopher.png":"3603","./pithag.png":"7f07","./pixie.png":"a7b6","./plus.png":"160b","./po.png":"c73a","./poisoner.png":"f282","./politician.png":"07ab","./poppygrower.png":"3273","./preacher.png":"2094","./professor.png":"b30c","./psychopath.png":"fcdb","./pukka.png":"a6a2","./puzzlemaster.png":"27a3","./ravenkeeper.png":"0c59","./recluse.png":"177d","./revolutionary.png":"aa2d","./riot.png":"5740","./sage.png":"30b6","./sailor.png":"223c","./saint.png":"6936","./savant.png":"d715","./scapegoat.png":"327a","./scarletwoman.png":"f322","./seamstress.png":"ac7c","./sentinel.png":"af68","./shabaloth.png":"0b29","./slayer.png":"d62b","./snakecharmer.png":"4021","./snitch.png":"b7e8","./soldier.png":"4e76","./spiritofivory.png":"0d06","./spy.png":"ec1e","./stormcatcher.png":"a4c2","./sweetheart.png":"f1e5","./tealady.png":"ba9b","./thief.png":"9ce3","./tinker.png":"9f7e","./towncrier.png":"38a5","./toymaker.png":"39eb","./undertaker.png":"0e20","./vigormortis.png":"f4bd","./virgin.png":"eff4","./vortox.png":"3a43","./voudon.png":"a710","./washerwoman.png":"013f","./widow.png":"22c9","./witch.png":"f558","./x.png":"5cf2","./zombuul.png":"20ca"};function s(e){var t=a(e);return i(t)}function a(e){if(!i.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}s.keys=function(){return Object.keys(o)},s.resolve=a,e.exports=s,s.id="61b0"},"634a":function(e){e.exports=JSON.parse('[{"townsfolk":3,"outsider":0,"minion":1,"demon":1},{"townsfolk":3,"outsider":1,"minion":1,"demon":1},{"townsfolk":5,"outsider":0,"minion":1,"demon":1},{"townsfolk":5,"outsider":1,"minion":1,"demon":1},{"townsfolk":5,"outsider":2,"minion":1,"demon":1},{"townsfolk":7,"outsider":0,"minion":2,"demon":1},{"townsfolk":7,"outsider":1,"minion":2,"demon":1},{"townsfolk":7,"outsider":2,"minion":2,"demon":1},{"townsfolk":9,"outsider":0,"minion":3,"demon":1},{"townsfolk":9,"outsider":1,"minion":3,"demon":1},{"townsfolk":9,"outsider":2,"minion":3,"demon":1}]')},"64be":function(e,t,i){e.exports=i.p+"img/fiddler.d1730aaa.png"},"64fe":function(e,t,i){e.exports=i.p+"img/butler.f4fd1640.png"},"659f":function(e,t,i){e.exports=i.p+"img/doomsayer.7ddbe262.png"},"65ab":function(e,t,i){e.exports=i.p+"img/juggler.819f88b8.png"},"65c0":function(e,t,i){},"65db":function(e,t,i){e.exports=i.p+"img/balloonist.c35c6644.png"},"663c":function(e,t,i){e.exports=i.p+"img/innkeeper.da072f0d.png"},"667e":function(e,t,i){e.exports=i.p+"img/good.daf3b560.png"},"66ae":function(e,t,i){e.exports=i.p+"img/flowergirl.6196eef9.png"},6741:function(e,t,i){e.exports=i.p+"img/monk.ff81aec2.png"},"68a4":function(e,t,i){e.exports=i.p+"img/nodashii.5220cac3.png"},6936:function(e,t,i){e.exports=i.p+"img/saint.b7a15b85.png"},"6ac0":function(e,t,i){e.exports=i.p+"img/fanggu.8fbd2e39.png"},"6b1e":function(e,t,i){},"6eb1":function(e,t,i){e.exports=i.p+"img/fibbin.9f01eb47.png"},"70ae":function(e,t,i){},"71b8":function(e,t,i){e.exports=i.p+"img/dreamer.fe5645e1.png"},"72d7":function(e,t,i){e.exports=i.p+"img/damsel.040c275d.png"},"73a1":function(e,t,i){e.exports=i.p+"img/tb-outsider.9ae6ef1b.png"},"740e":function(e,t,i){"use strict";i("f344")},7496:function(e,t,i){e.exports=i.p+"img/bmr.1d06ca78.png"},"74c9":function(e,t,i){"use strict";i("9fd8")},"75bc":function(e,t,i){e.exports=i.p+"img/minion.e02a5c96.png"},"7a7f":function(e,t,i){e.exports=i.p+"img/farmer.1534709d.png"},"7b43":function(e,t,i){},"7f07":function(e,t,i){e.exports=i.p+"img/pithag.9bdfc5a3.png"},8030:function(e,t,i){e.exports=i.p+"img/bishop.1f25f092.png"},8781:function(e,t,i){"use strict";i("6b1e")},"887b":function(e,t,i){e.exports=i.p+"img/acrobat.be49ceac.png"},8888:function(e,t,i){e.exports=i.p+"img/mathematician.cc67c625.png"},8970:function(e,t,i){"use strict";i("c0b6")},"899d":function(e,t,i){e.exports=i.p+"img/bountyhunter.b208dc71.png"},"8e72":function(e,t,i){"use strict";i("70ae")},"8e93":function(e,t,i){"use strict";i("42ed")},9002:function(e,t,i){e.exports=i.p+"img/deusexfiasco.96e5d2eb.png"},9187:function(e,t,i){e.exports=i.p+"img/assassin.ae0f2fba.png"},9224:function(e){e.exports=JSON.parse('{"a":"2.15.4"}')},"92d8":function(e,t,i){e.exports=i.p+"img/luf.8e16a6e6.png"},9639:function(e,t,i){e.exports=i.p+"img/king.3f722bb8.png"},"97c6":function(e,t,i){e.exports=i.p+"img/gangster.72167674.png"},9989:function(e,t,i){e.exports=i.p+"img/alhadikhia.1d64887e.png"},"99d0":function(e,t,i){e.exports=i.p+"img/godfather.d64b901e.png"},"9c0c":function(e,t,i){},"9ce3":function(e,t,i){e.exports=i.p+"img/thief.04afd5e0.png"},"9f74":function(e,t,i){e.exports=i.p+"img/lleech.da66feee.png"},"9f7e":function(e,t,i){e.exports=i.p+"img/tinker.ce44bde6.png"},"9fd8":function(e,t,i){},a367:function(e,t,i){e.exports=i.p+"img/hellslibrarian.3df1d423.png"},a3b0:function(e,t,i){e.exports=i.p+"img/tb-demon.0ac8cce6.png"},a4c2:function(e,t,i){e.exports=i.p+"img/stormcatcher.3f5110c6.png"},a6a2:function(e,t,i){e.exports=i.p+"img/pukka.1b1700de.png"},a710:function(e,t,i){e.exports=i.p+"img/voudon.4c0eb80c.png"},a7b6:function(e,t,i){e.exports=i.p+"img/pixie.2db5f1a2.png"},aa2d:function(e,t,i){e.exports=i.p+"img/revolutionary.68827d94.png"},aae9:function(e,t,i){e.exports=i.p+"img/boomdandy.009c74b1.png"},ab3c:function(e,t,i){e.exports=i.p+"img/magician.c1bcf13c.png"},ac7c:function(e,t,i){e.exports=i.p+"img/seamstress.209ed80b.png"},ac9c:function(e,t,i){e.exports=i.p+"img/general.2fc65230.png"},adfc:function(e,t,i){e.exports=i.p+"img/klutz.99df79cb.png"},af68:function(e,t,i){e.exports=i.p+"img/sentinel.93d312eb.png"},b162:function(e,t,i){"use strict";i("e761")},b1cb:function(e,t,i){e.exports=i.p+"img/matron.6e1551e5.png"},b1d9:function(e){e.exports=JSON.parse('[{"id":"washerwoman","name":"Washerwoman","edition":"tb","team":"townsfolk","firstNight":32,"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"],"setup":false,"ability":"You start knowing that 1 of 2 players is a particular Townsfolk."},{"id":"librarian","name":"Librarian","edition":"tb","team":"townsfolk","firstNight":33,"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"],"setup":false,"ability":"You start knowing that 1 of 2 players is a particular Outsider. (Or that zero are in play.)"},{"id":"investigator","name":"Investigator","edition":"tb","team":"townsfolk","firstNight":34,"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"],"setup":false,"ability":"You start knowing that 1 of 2 players is a particular Minion."},{"id":"chef","name":"Chef","edition":"tb","team":"townsfolk","firstNight":35,"firstNightReminder":"Show the finger signal (0, 1, 2, …) for the number of pairs of neighbouring evil players.","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"You start knowing how many pairs of evil players there are."},{"id":"empath","name":"Empath","edition":"tb","team":"townsfolk","firstNight":36,"firstNightReminder":"Show the finger signal (0, 1, 2) for the number of evil alive neighbours of the Empath.","otherNight":53,"otherNightReminder":"Show the finger signal (0, 1, 2) for the number of evil neighbours.","reminders":[],"setup":false,"ability":"Each night, you learn how many of your 2 alive neighbours are evil."},{"id":"fortuneteller","name":"Fortune Teller","edition":"tb","team":"townsfolk","firstNight":37,"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,"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"],"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."},{"id":"undertaker","name":"Undertaker","edition":"tb","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":56,"otherNightReminder":"If a player was executed today: Show that player’s character token.","reminders":["Executed"],"setup":false,"ability":"Each night*, you learn which character died by execution today."},{"id":"monk","name":"Monk","edition":"tb","team":"townsfolk","firstNight":0,"firstNightReminder":"","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"],"setup":false,"ability":"Each night*, choose a player (not yourself): they are safe from the Demon tonight."},{"id":"ravenkeeper","name":"Ravenkeeper","edition":"tb","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":42,"otherNightReminder":"If the Ravenkeeper died tonight: The Ravenkeeper points to a player. Show that player’s character token.","reminders":[],"setup":false,"ability":"If you die at night, you are woken to choose a player: you learn their character."},{"id":"virgin","name":"Virgin","edition":"tb","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":["No ability"],"setup":false,"ability":"The 1st time you are nominated, if the nominator is a Townsfolk, they are executed immediately."},{"id":"slayer","name":"Slayer","edition":"tb","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":["No ability"],"setup":false,"ability":"Once per game, during the day, publicly choose a player: if they are the Demon, they die."},{"id":"soldier","name":"Soldier","edition":"tb","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"You are safe from the Demon."},{"id":"mayor","name":"Mayor","edition":"tb","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"If only 3 players live & no execution occurs, your team wins. If you die at night, another player might die instead."},{"id":"butler","name":"Butler","edition":"tb","team":"outsider","firstNight":38,"firstNightReminder":"The Butler points to a player. Mark that player as \'Master\'.","otherNight":55,"otherNightReminder":"The Butler points to a player. Mark that player as \'Master\'.","reminders":["Master"],"setup":false,"ability":"Each night, choose a player (not yourself): tomorrow, you may only vote if they are voting too."},{"id":"drunk","name":"Drunk","edition":"tb","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"remindersGlobal":["Drunk"],"setup":true,"ability":"You do not know you are the Drunk. You think you are a Townsfolk character, but you are not."},{"id":"recluse","name":"Recluse","edition":"tb","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"You might register as evil & as a Minion or Demon, even if dead."},{"id":"saint","name":"Saint","edition":"tb","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"If you die by execution, your team loses."},{"id":"poisoner","name":"Poisoner","edition":"tb","team":"minion","firstNight":17,"firstNightReminder":"The Poisoner points to a player. That player is poisoned.","otherNight":8,"otherNightReminder":"The previously poisoned player is no longer poisoned. The Poisoner points to a player. That player is poisoned.","reminders":["Poisoned"],"setup":false,"ability":"Each night, choose a player: they are poisoned tonight and tomorrow day."},{"id":"spy","name":"Spy","edition":"tb","team":"minion","firstNight":48,"firstNightReminder":"Show the Grimoire to the Spy for as long as they need.","otherNight":68,"otherNightReminder":"Show the Grimoire to the Spy for as long as they need.","reminders":[],"setup":false,"ability":"Each night, you see the Grimoire. You might register as good & as a Townsfolk or Outsider, even if dead."},{"id":"scarletwoman","name":"Scarlet Woman","edition":"tb","team":"minion","firstNight":0,"firstNightReminder":"","otherNight":20,"otherNightReminder":"If the Scarlet Woman became the Demon today: Show the \'You are\' card, then the demon token.","reminders":["Demon"],"setup":false,"ability":"If there are 5 or more players alive & the Demon dies, you become the Demon. (Travellers don’t count)"},{"id":"baron","name":"Baron","edition":"tb","team":"minion","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":true,"ability":"There are extra Outsiders in play. [+2 Outsiders]"},{"id":"imp","name":"Imp","edition":"tb","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":24,"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"],"setup":false,"ability":"Each night*, choose a player: they die. If you kill yourself this way, a Minion becomes the Imp."},{"id":"bureaucrat","name":"Bureaucrat","edition":"tb","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,"otherNightReminder":"The Bureaucrat points to a player. Put the Bureaucrat\'s \'3 votes\' reminder by the chosen player\'s character token.","reminders":["3 votes"],"setup":false,"ability":"Each night, choose a player (not yourself): their vote counts as 3 votes tomorrow."},{"id":"thief","name":"Thief","edition":"tb","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,"otherNightReminder":"The Thief points to a player. Put the Thief\'s \'Negative vote\' reminder by the chosen player\'s character token.","reminders":["Negative vote"],"setup":false,"ability":"Each night, choose a player (not yourself): their vote counts negatively tomorrow."},{"id":"gunslinger","name":"Gunslinger","edition":"tb","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"Each day, after the 1st vote has been tallied, you may choose a player that voted: they die."},{"id":"scapegoat","name":"Scapegoat","edition":"tb","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"If a player of your alignment is executed, you might be executed instead."},{"id":"beggar","name":"Beggar","edition":"tb","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"You must use a vote token to vote. Dead players may choose to give you theirs. If so, you learn their alignment."},{"id":"grandmother","name":"Grandmother","edition":"bmr","team":"townsfolk","firstNight":39,"firstNightReminder":"Show the marked character token. Point to the marked player.","otherNight":50,"otherNightReminder":"If the Grandmother’s grandchild was killed by the Demon tonight: The Grandmother dies.","reminders":["Grandchild"],"setup":false,"ability":"You start knowing a good player & their character. If the Demon kills them, you die too."},{"id":"sailor","name":"Sailor","edition":"bmr","team":"townsfolk","firstNight":10,"firstNightReminder":"The Sailor points to a living player. Either the Sailor, or the chosen player, is drunk.","otherNight":4,"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"],"setup":false,"ability":"Each night, choose an alive player: either you or they are drunk until dusk. You can\'t die."},{"id":"chambermaid","name":"Chambermaid","edition":"bmr","team":"townsfolk","firstNight":50,"firstNightReminder":"The Chambermaid points to two players. Show the number signal (0, 1, 2, …) for how many of those players wake tonight for their ability.","otherNight":70,"otherNightReminder":"The Chambermaid points to two players. Show the number signal (0, 1, 2, …) for how many of those players wake tonight for their ability.","reminders":[],"setup":false,"ability":"Each night, choose 2 alive players (not yourself): you learn how many woke tonight due to their ability."},{"id":"exorcist","name":"Exorcist","edition":"bmr","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":22,"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"],"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."},{"id":"innkeeper","name":"Innkeeper","edition":"bmr","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":9,"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"],"setup":false,"ability":"Each night*, choose 2 players: they can\'t die tonight, but 1 is drunk until dusk."},{"id":"gambler","name":"Gambler","edition":"bmr","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":11,"otherNightReminder":"The Gambler points to a player, and a character on their sheet. If incorrect, the Gambler dies.","reminders":["Dead"],"setup":false,"ability":"Each night*, choose a player & guess their character: if you guess wrong, you die."},{"id":"gossip","name":"Gossip","edition":"bmr","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":47,"otherNightReminder":"If the Gossip’s public statement was true: Choose a player not protected from dying tonight. That player dies.","reminders":["Dead"],"setup":false,"ability":"Each day, you may make a public statement. Tonight, if it was true, a player dies."},{"id":"courtier","name":"Courtier","edition":"bmr","team":"townsfolk","firstNight":19,"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":10,"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"],"setup":false,"ability":"Once per game, at night, choose a character: they are drunk for 3 nights & 3 days."},{"id":"professor","name":"Professor","edition":"bmr","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":45,"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"],"setup":false,"ability":"Once per game, at night*, choose a dead player: if they are a Townsfolk, they are resurrected."},{"id":"minstrel","name":"Minstrel","edition":"bmr","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":["Everyone drunk"],"setup":false,"ability":"When a Minion dies by execution, all other players (except Travellers) are drunk until dusk tomorrow."},{"id":"tealady","name":"Tea Lady","edition":"bmr","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":["Can not die"],"setup":false,"ability":"If both your alive neighbours are good, they can\'t die."},{"id":"pacifist","name":"Pacifist","edition":"bmr","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"Executed good players might not die."},{"id":"fool","name":"Fool","edition":"bmr","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":["No ability"],"setup":false,"ability":"The first time you die, you don\'t."},{"id":"tinker","name":"Tinker","edition":"bmr","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":48,"otherNightReminder":"The Tinker might die.","reminders":["Dead"],"setup":false,"ability":"You might die at any time."},{"id":"moonchild","name":"Moonchild","edition":"bmr","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":49,"otherNightReminder":"If the Moonchild used their ability to target a player today: If that player is good, they die.","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."},{"id":"goon","name":"Goon","edition":"bmr","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":["Drunk"],"setup":false,"ability":"Each night, the 1st player to choose you with their ability is drunk until dusk. You become their alignment."},{"id":"lunatic","name":"Lunatic","edition":"bmr","team":"outsider","firstNight":7,"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’s 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":21,"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":["Attack 1","Attack 2","Attack 3"],"setup":false,"ability":"You think you are a Demon, but you are not. The Demon knows who you are & who you choose at night."},{"id":"godfather","name":"Godfather","edition":"bmr","team":"minion","firstNight":21,"firstNightReminder":"Show each of the Outsider tokens in play.","otherNight":38,"otherNightReminder":"If an Outsider died today: The Godfather points to a player. That player dies.","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. [−1 or +1 Outsider]"},{"id":"devilsadvocate","name":"Devil\'s Advocate","edition":"bmr","team":"minion","firstNight":22,"firstNightReminder":"The Devil’s Advocate points to a living player. That player survives execution tomorrow.","otherNight":14,"otherNightReminder":"The Devil’s Advocate points to a living player, different from the previous night. That player survives execution tomorrow.","reminders":["Survives execution"],"setup":false,"ability":"Each night, choose a living player (different to last night): if executed tomorrow, they don\'t die."},{"id":"assassin","name":"Assassin","edition":"bmr","team":"minion","firstNight":0,"firstNightReminder":"","otherNight":37,"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"],"setup":false,"ability":"Once per game, at night*, choose a player: they die, even if for some reason they could not."},{"id":"mastermind","name":"Mastermind","edition":"bmr","team":"minion","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"If the Demon dies by execution (ending the game), play for 1 more day. If a player is then executed, their team loses."},{"id":"zombuul","name":"Zombuul","edition":"bmr","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":25,"otherNightReminder":"If no-one died during the day: The Zombuul points to a player. That player dies.","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."},{"id":"pukka","name":"Pukka","edition":"bmr","team":"demon","firstNight":28,"firstNightReminder":"The Pukka points to a player. That player is poisoned.","otherNight":26,"otherNightReminder":"The Pukka points to a player. That player is poisoned. The previously poisoned player dies. ","reminders":["Poisoned","Dead"],"setup":false,"ability":"Each night, choose a player: they are poisoned. The previously poisoned player dies then becomes healthy."},{"id":"shabaloth","name":"Shabaloth","edition":"bmr","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":27,"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"],"setup":false,"ability":"Each night*, choose 2 players: they die. A dead player you chose last night might be regurgitated."},{"id":"po","name":"Po","edition":"bmr","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":28,"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"],"setup":false,"ability":"Each night*, you may choose a player: they die. If your last choice was no-one, choose 3 players tonight."},{"id":"apprentice","name":"Apprentice","edition":"bmr","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"],"setup":false,"ability":"On your 1st night, you gain a Townsfolk ability (if good), or a Minion ability (if evil)."},{"id":"matron","name":"Matron","edition":"bmr","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"Each day, you may choose up to 3 sets of 2 players to swap seats. Players may not leave their seats to talk in private."},{"id":"judge","name":"Judge","edition":"bmr","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","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."},{"id":"bishop","name":"Bishop","edition":"bmr","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":["Nominate good","Nominate evil"],"setup":false,"ability":"Only the Storyteller can nominate. At least 1 opposite player must be nominated each day."},{"id":"voudon","name":"Voudon","edition":"bmr","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"Only you and the dead can vote. They don\'t need a vote token to do so. A 50% majority is not required."},{"id":"clockmaker","name":"Clockmaker","edition":"snv","team":"townsfolk","firstNight":40,"firstNightReminder":"Show the hand signal for the number (1, 2, 3, etc.) of places from Demon to closest Minion.","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"You start knowing how many steps from the Demon to its nearest Minion."},{"id":"dreamer","name":"Dreamer","edition":"snv","team":"townsfolk","firstNight":41,"firstNightReminder":"The Dreamer points to a player. Show 1 good and 1 evil character token; one of these is correct.","otherNight":57,"otherNightReminder":"The Dreamer points to a player. Show 1 good and 1 evil character token; one of these is correct.","reminders":[],"setup":false,"ability":"Each night, choose a player (not yourself or Travellers): you learn 1 good and 1 evil character, 1 of which is correct."},{"id":"snakecharmer","name":"Snake Charmer","edition":"snv","team":"townsfolk","firstNight":20,"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":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"],"setup":false,"ability":"Each night, choose an alive player: a chosen Demon swaps characters & alignments with you & is then poisoned."},{"id":"mathematician","name":"Mathematician","edition":"snv","team":"townsfolk","firstNight":51,"firstNightReminder":"Show the hand signal for the number (0, 1, 2, etc.) of players whose ability malfunctioned due to other abilities.","otherNight":71,"otherNightReminder":"Show the hand signal for the number (0, 1, 2, etc.) of players whose ability malfunctioned due to other abilities.","reminders":["Abnormal"],"setup":false,"ability":"Each night, you learn how many players’ abilities worked abnormally (since dawn) due to another character\'s ability."},{"id":"flowergirl","name":"Flowergirl","edition":"snv","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":58,"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"],"setup":false,"ability":"Each night*, you learn if a Demon voted today."},{"id":"towncrier","name":"Town Crier","edition":"snv","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":59,"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"],"setup":false,"ability":"Each night*, you learn if a Minion nominated today."},{"id":"oracle","name":"Oracle","edition":"snv","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":60,"otherNightReminder":"Show the hand signal for the number (0, 1, 2, etc.) of dead evil players.","reminders":[],"setup":false,"ability":"Each night*, you learn how many dead players are evil."},{"id":"savant","name":"Savant","edition":"snv","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"Each day, you may visit the Storyteller to learn 2 things in private: 1 is true & 1 is false."},{"id":"seamstress","name":"Seamstress","edition":"snv","team":"townsfolk","firstNight":42,"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":61,"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"],"setup":false,"ability":"Once per game, at night, choose 2 players (not yourself): you learn if they are the same alignment."},{"id":"philosopher","name":"Philosopher","edition":"snv","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. Or, if the character is in play, place the drunk marker by that player and the Not the Philosopher token by the Philosopher.","otherNight":2,"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. Or, if the character is in play, place the drunk marker by that player and the Not the Philosopher token by the Philosopher.","reminders":["Drunk","Is the Philosopher"],"setup":false,"ability":"Once per game, at night, choose a good character: gain that ability. If this character is in play, they are drunk."},{"id":"artist","name":"Artist","edition":"snv","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":["No ability"],"setup":false,"ability":"Once per game, during the day, privately ask the Storyteller any yes/no question."},{"id":"juggler","name":"Juggler","edition":"snv","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":62,"otherNightReminder":"If today was the Juggler’s first day: Show the hand signal for the number (0, 1, 2, etc.) of \'Correct\' markers. Remove markers.","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."},{"id":"sage","name":"Sage","edition":"snv","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":43,"otherNightReminder":"If the Sage was killed by a Demon: Point to two players, one of which is that Demon.","reminders":[],"setup":false,"ability":"If the Demon kills you, you learn that it is 1 of 2 players."},{"id":"mutant","name":"Mutant","edition":"snv","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"If you are “mad” about being an Outsider, you might be executed."},{"id":"sweetheart","name":"Sweetheart","edition":"snv","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":41,"otherNightReminder":"Choose a player that is drunk.","reminders":["Drunk"],"setup":false,"ability":"When you die, 1 player is drunk from now on."},{"id":"barber","name":"Barber","edition":"snv","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":40,"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"],"setup":false,"ability":"If you died today or tonight, the Demon may choose 2 players (not another Demon) to swap characters."},{"id":"klutz","name":"Klutz","edition":"snv","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"When you learn that you died, publicly choose 1 alive player: if they are evil, your team loses."},{"id":"eviltwin","name":"Evil Twin","edition":"snv","team":"minion","firstNight":23,"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":["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."},{"id":"witch","name":"Witch","edition":"snv","team":"minion","firstNight":24,"firstNightReminder":"The Witch points to a player. If that player nominates tomorrow they die immediately.","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"],"setup":false,"ability":"Each night, choose a player: if they nominate tomorrow, they die. If just 3 players live, you lose this ability."},{"id":"cerenovus","name":"Cerenovus","edition":"snv","team":"minion","firstNight":25,"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":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"],"setup":false,"ability":"Each night, choose a player & a good character: they are “mad” they are this character tomorrow, or might be executed."},{"id":"pithag","name":"Pit-Hag","edition":"snv","team":"minion","firstNight":0,"firstNightReminder":"","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,"ability":"Each night*, choose a player & a character they become (if not-in-play). If a Demon is made, deaths tonight are arbitrary."},{"id":"fanggu","name":"Fang Gu","edition":"snv","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":29,"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"],"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]"},{"id":"vigormortis","name":"Vigormortis","edition":"snv","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":32,"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"],"setup":true,"ability":"Each night*, choose a player: they die. Minions you kill keep their ability & poison 1 Townsfolk neighbour. [−1 Outsider]"},{"id":"nodashii","name":"No Dashii","edition":"snv","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":30,"otherNightReminder":"The No Dashii points to a player. That player dies.","reminders":["Dead","Poisoned"],"setup":false,"ability":"Each night*, choose a player: they die. Your 2 Townsfolk neighbours are poisoned."},{"id":"vortox","name":"Vortox","edition":"snv","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":31,"otherNightReminder":"The Vortox points to a player. That player dies.","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."},{"id":"barista","name":"Barista","edition":"snv","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,"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"],"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."},{"id":"harlot","name":"Harlot","edition":"snv","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":1,"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"],"setup":false,"ability":"Each night*, choose a living player: if they agree, you learn their character, but you both might die."},{"id":"butcher","name":"Butcher","edition":"snv","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"Each day, after the 1st execution, you may nominate again."},{"id":"bonecollector","name":"Bone Collector","edition":"snv","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":1,"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"],"setup":false,"ability":"Once per game, at night, choose a dead player: they regain their ability until dusk."},{"id":"deviant","name":"Deviant","edition":"snv","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"If you were funny today, you cannot die by exile."},{"id":"noble","name":"Noble","edition":"","team":"townsfolk","firstNight":43,"firstNightReminder":"Point to 3 players including one evil player, in no particular order.","otherNight":0,"otherNightReminder":"","reminders":["Seen"],"setup":false,"ability":"You start knowing 3 players, 1 and only 1 of which is evil."},{"id":"bountyhunter","name":"Bounty Hunter","edition":"","team":"townsfolk","firstNight":45,"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":65,"otherNightReminder":"If the known evil player has died, point to another evil player. ","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]"},{"id":"pixie","name":"Pixie","edition":"","team":"townsfolk","firstNight":29,"firstNightReminder":"Show the Pixie 1 in-play Townsfolk character token.","otherNight":0,"otherNightReminder":"","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."},{"id":"general","name":"General","edition":"","team":"townsfolk","firstNight":49,"firstNightReminder":"Show the General thumbs up for good winning, thumbs down for evil winning or thumb to the side for neither.","otherNight":69,"otherNightReminder":"Show the General thumbs up for good winning, thumbs down for evil winning or thumb to the side for neither.","reminders":[],"setup":false,"ability":"Each night, you learn which alignment the Storyteller believes is winning: good, evil, or neither."},{"id":"preacher","name":"Preacher","edition":"","team":"townsfolk","firstNight":14,"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":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"],"setup":false,"ability":"Each night, choose a player: a Minion, if chosen, learns this. All chosen Minions have no ability."},{"id":"king","name":"King","edition":"","team":"townsfolk","firstNight":9,"firstNightReminder":"Wake the Demon, show them the \'This character selected you\' card, show the King token and point to the King player.","otherNight":64,"otherNightReminder":"If there are more dead than living, show the King a character token of a living player.","reminders":[],"setup":false,"ability":"Each night, if the dead outnumber the living, you learn 1 alive character. The Demon knows who you are."},{"id":"balloonist","name":"Balloonist","edition":"","team":"townsfolk","firstNight":44,"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":63,"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","Seen Traveller"],"setup":true,"ability":"Each night, you learn 1 player of each character type, until there are no more types to learn. [+1 Outsider]"},{"id":"cultleader","name":"Cult Leader","edition":"","team":"townsfolk","firstNight":47,"firstNightReminder":"If the cult leader changed alignment, show them the thumbs up good signal of the thumbs down evil signal accordingly.","otherNight":67,"otherNightReminder":"If the cult leader changed alignment, show them the thumbs up good signal of the thumbs down evil signal accordingly.","reminders":[],"setup":false,"ability":"Each night, you become the alignment of an alive neighbour. If all good players choose to join your cult, your team wins."},{"id":"lycanthrope","name":"Lycanthrope","edition":"","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":23,"otherNightReminder":"The Lycanthrope points to a living player: if good, they die and no one else can die tonight.","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."},{"id":"amnesiac","name":"Amnesiac","edition":"","team":"townsfolk","firstNight":12,"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":5,"otherNightReminder":"If the Amnesiac\'s ability causes them to wake tonight: Wake the Amnesiac and run their ability.","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."},{"id":"nightwatchman","name":"Nightwatchman","edition":"","team":"townsfolk","firstNight":46,"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":66,"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"],"setup":false,"ability":"Once per game, at night, choose a player: they learn who you are."},{"id":"engineer","name":"Engineer","edition":"","team":"townsfolk","firstNight":13,"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":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"],"setup":false,"ability":"Once per game, at night, choose which Minions or which Demon is in play."},{"id":"fisherman","name":"Fisherman","edition":"","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":["No ability"],"setup":false,"ability":"Once per game, during the day, visit the Storyteller for some advice to help you win."},{"id":"huntsman","name":"Huntsman","edition":"","team":"townsfolk","firstNight":30,"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":51,"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"],"setup":true,"ability":"Once per game, at night, choose a living player: the Damsel, if chosen, becomes a not-in-play Townsfolk. [+the Damsel]"},{"id":"alchemist","name":"Alchemist","edition":"","team":"townsfolk","firstNight":3,"firstNightReminder":"Show the Alchemist a not-in-play Minion token","otherNight":0,"otherNightReminder":"","reminders":[],"remindersGlobal":["Is the Alchemist"],"setup":false,"ability":"You have a not-in-play Minion ability."},{"id":"farmer","name":"Farmer","edition":"","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":46,"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,"ability":"If you die at night, an alive good player becomes a Farmer."},{"id":"magician","name":"Magician","edition":"","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"The Demon thinks you are a Minion. Minions think you are a Demon."},{"id":"choirboy","name":"Choirboy","edition":"","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":44,"otherNightReminder":"If the King was killed by the Demon, wake the Choirboy and point to the Demon player.","reminders":[],"setup":true,"ability":"If the Demon kills the King, you learn which player is the Demon. [+ the King]"},{"id":"poppygrower","name":"Poppy Grower","edition":"","team":"townsfolk","firstNight":4,"firstNightReminder":"Do not inform the Demon/Minions who each other are","otherNight":3,"otherNightReminder":"If the Poppy Grower has died, show the Minions/Demon who each other are.","reminders":["Evil wakes"],"setup":false,"ability":"Minions & Demons do not know each other. If you die, they learn who each other are that night."},{"id":"atheist","name":"Atheist","edition":"","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":true,"ability":"The Storyteller can break the game rules & if executed, good wins, even if you are dead. [No evil characters]"},{"id":"cannibal","name":"Cannibal","edition":"","team":"townsfolk","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","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":"snitch","name":"Snitch","edition":"","team":"outsider","firstNight":6,"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":"","reminders":[],"setup":false,"ability":"Minions start knowing 3 not-in-play characters."},{"id":"acrobat","name":"Acrobat","edition":"","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":39,"otherNightReminder":"If a good living neighbour is drunk or poisoned, the Acrobat player dies.","reminders":["Dead"],"setup":false,"ability":"Each night*, if either good living neighbour is drunk or poisoned, you die."},{"id":"puzzlemaster","name":"Puzzlemaster","edition":"","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","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."},{"id":"heretic","name":"Heretic","edition":"","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"Whoever wins, loses & whoever loses, wins, even if you are dead."},{"id":"damsel","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":52,"otherNightReminder":"If selected by the Huntsman, wake the Damsel, show \'You are\' card and a not-in-play Townsfolk token.","reminders":["Guess used"],"setup":false,"ability":"All Minions know you are in play. If a Minion publicly guesses you (once), your team loses."},{"id":"golem","name":"Golem","edition":"","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","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."},{"id":"politician","name":"Politician","edition":"","team":"outsider","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"If you were the player most responsible for your team losing, you change alignment & win, even if dead."},{"id":"widow","name":"Widow","edition":"","team":"minion","firstNight":18,"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"],"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."},{"id":"fearmonger","name":"Fearmonger","edition":"","team":"minion","firstNight":26,"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":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"],"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."},{"id":"psychopath","name":"Psychopath","edition":"","team":"minion","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"Each day, before nominations, you may publicly choose a player: they die. If executed, you only die if you lose roshambo."},{"id":"goblin","name":"Goblin","edition":"","team":"minion","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":["Claimed"],"setup":false,"ability":"If you publicly claim to be the Goblin when nominated & are executed that day, your team wins."},{"id":"mephit","name":"Mephit","edition":"","team":"minion","firstNight":27,"firstNightReminder":"Show the Mephit their secret word.","otherNight":19,"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"],"setup":false,"ability":"You start knowing a secret word. The 1st good player to say this word becomes evil that night."},{"id":"mezepheles","name":"Mezepheles","edition":"","team":"minion","firstNight":27,"firstNightReminder":"Show the Mezepheles their secret word.","otherNight":19,"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"],"setup":false,"ability":"You start knowing a secret word. The 1st good player to say this word becomes evil that night."},{"id":"marionette","name":"Marionette","edition":"","team":"minion","firstNight":11,"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"],"setup":true,"ability":"You think you are a good character but you are not. The Demon knows who you are. [You neighbour the Demon]"},{"id":"boomdandy","name":"Boomdandy","edition":"","team":"minion","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"If you are executed, all but 3 players die. 1 minute later, the player with the most players pointing at them dies."},{"id":"lilmonsta","name":"Lil\' Monsta","edition":"","team":"demon","firstNight":16,"firstNightReminder":"Wake all Minions together, allow them to vote by pointing at who they want to babysit Lil\' Monsta.","otherNight":36,"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"],"setup":true,"ability":"Each night, Minions choose who babysits Lil\' Monsta\'s token & \\"is the Demon\\". A player dies each night*. [+1 Minion]"},{"id":"lleech","name":"Lleech","edition":"","team":"demon","firstNight":15,"firstNightReminder":"The Lleech points to a player. Place the Poisoned reminder token.","otherNight":35,"otherNightReminder":"The Lleech points to a player. That player dies.","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."},{"id":"alhadikhia","name":"Al-Hadikhia","edition":"","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":33,"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"],"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."},{"id":"legion","name":"Legion","edition":"","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":34,"otherNightReminder":"Choose a player, that player dies.","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]"},{"id":"leviathan","name":"Leviathan","edition":"","team":"demon","firstNight":53,"firstNightReminder":"Place the Leviathan \'Day 1\' marker. Announce \'The Leviathan is in play; this is Day 1.\'","otherNight":73,"otherNightReminder":"Change the Leviathan Day reminder for the next day.","reminders":["Day 1","Day 2","Day 3","Day 4","Day 5","Good player executed"],"setup":false,"ability":"If more than 1 good player is executed, you win. All players know you are in play. After day 5, evil wins."},{"id":"riot","name":"Riot","edition":"","team":"demon","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"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":"gangster","name":"Gangster","edition":"","team":"traveler","firstNight":0,"firstNightReminder":"","otherNight":0,"otherNightReminder":"","reminders":[],"setup":false,"ability":"Once per day, you may choose to kill an alive neighbour, if your other alive neighbour agrees."}]')},b223:function(e,t,i){e.exports=i.p+"img/mayor.da8876ae.png"},b249:function(e){e.exports=JSON.parse('[{"id":"doomsayer","firstNightReminder":"","otherNightReminder":"","reminders":[],"setup":false,"name":"Doomsayer","team":"fabled","ability":"If 4 or more players live, each living player may publicly choose (once per game) that a player of their own alignment dies."},{"id":"angel","firstNightReminder":"","otherNightReminder":"","reminders":["Protect","Something Bad"],"setup":false,"name":"Angel","team":"fabled","ability":"Something bad might happen to whoever is most responsible for the death of a new player."},{"id":"buddhist","firstNightReminder":"","otherNightReminder":"","reminders":[],"setup":false,"name":"Buddhist","team":"fabled","ability":"For the first 2 minutes of each day, veteran players may not talk."},{"id":"hellslibrarian","firstNightReminder":"","otherNightReminder":"","reminders":["Something Bad"],"setup":false,"name":"Hell\'s Librarian","team":"fabled","ability":"Something bad might happen to whoever talks when the Storyteller has asked for silence."},{"id":"revolutionary","firstNightReminder":"","otherNightReminder":"","reminders":["Used"],"setup":false,"name":"Revolutionary","team":"fabled","ability":"2 neighboring players are known to be the same alignment. Once per game, one of them registers falsely."},{"id":"fiddler","firstNightReminder":"","otherNightReminder":"","reminders":[],"setup":false,"name":"Fiddler","team":"fabled","ability":"Once per game, the Demon secretly chooses an opposing player: all players choose which of these 2 players win."},{"id":"toymaker","firstNightReminder":"","otherNight":1,"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"],"setup":false,"name":"Toymaker","team":"fabled","ability":"The Demon may choose not to attack & must do this at least once per game. Evil players get normal starting info."},{"id":"fibbin","firstNightReminder":"","otherNightReminder":"","reminders":["Used"],"setup":false,"name":"Fibbin","team":"fabled","ability":"Once per game, 1 good player might get false information."},{"id":"duchess","firstNightReminder":"","otherNight":1,"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"],"setup":false,"name":"Duchess","team":"fabled","ability":"Each day, 3 players may choose to visit you. At night*, each visitor learns how many visitors are evil, but 1 gets false info."},{"id":"sentinel","firstNightReminder":"","otherNightReminder":"","reminders":[],"setup":true,"name":"Sentinel","team":"fabled","ability":"There might be 1 extra or 1 fewer Outsider in play."},{"id":"spiritofivory","firstNightReminder":"","otherNightReminder":"","reminders":["No extra evil"],"setup":false,"name":"Spirit of Ivory","team":"fabled","ability":"There can\'t be more than 1 extra evil player."},{"id":"djinn","firstNight":0,"firstNightReminder":"","otherNightReminder":"","reminders":[],"setup":false,"name":"Djinn","team":"fabled","ability":"Use the Djinn\'s special rule. All players know what it is."},{"id":"stormcatcher","firstNight":1,"firstNightReminder":"Mark a good player as \\"Safe\\". Wake each evil player and show them the marked player.","otherNightReminder":"","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":"deusexfiasco","firstNightReminder":"","otherNightReminder":"","reminders":["Whoops"],"setup":false,"name":"Deus ex Fiasco","team":"fabled","ability":"Once per game, the Storyteller will make a \\"mistake\\", correct it and publicly admit to it."}]')},b30c:function(e,t,i){e.exports=i.p+"img/professor.48f01bcb.png"},b570:function(e,t,i){e.exports=i.p+"img/investigator.a817cc04.png"},b6d8:function(e,t,i){"use strict";i("e455")},b7e8:function(e,t,i){e.exports=i.p+"img/snitch.0f51b730.png"},ba9b:function(e,t,i){e.exports=i.p+"img/tealady.5fc21e59.png"},bb7a:function(e,t,i){e.exports=i.p+"img/empath.b772c7ff.png"},bd73:function(e,t,i){},bfe2:function(e,t,i){e.exports=i.p+"img/angel.cae6c8fc.png"},c0b6:function(e,t,i){},c198:function(e,t,i){"use strict";i("3998")},c24f:function(e,t,i){e.exports=i.p+"img/evil.8723a4ee.png"},c316:function(e,t,i){e.exports=i.p+"img/lycanthrope.48660758.png"},c492:function(e,t,i){e.exports=i.p+"img/lilmonsta.4814ed76.png"},c5bf:function(e,t,i){"use strict";i("bd73")},c5db:function(e,t,i){e.exports=i.p+"img/fisherman.0511031e.png"},c73a:function(e,t,i){e.exports=i.p+"img/po.015a8956.png"},c7b7:function(e,t,i){e.exports=i.p+"img/mezepheles.b1f4ea9e.png"},c825:function(e){e.exports=JSON.parse('[{"id":"Chambermaid","hatred":[{"id":"Mathematician","reason":"The Chambermaid learns if the Mathematician wakes tonight or not, even though the Chambermaid wakes first."}]},{"id":"Butler","hatred":[{"id":"Cannibal","reason":"If the Cannibal gains the Butler ability, the Cannibal learns this."}]},{"id":"Lunatic","hatred":[{"id":"Mathematician","reason":"The Mathematician learns if the Lunatic attacks a different player(s) than the real Demon attacked."}]},{"id":"Pit-Hag","hatred":[{"id":"Heretic","reason":"A Pit-Hag can not create a Heretic. "},{"id":"Damsel","reason":"If a Pit-Hag creates a Damsel, the Storyteller chooses which player it is."},{"id":"Politician","reason":"A Pit-hag can not create an evil Politician."}]},{"id":"Cerenovus","hatred":[{"id":"Goblin","reason":"The Cerenovus may choose to make a player mad that they are the Goblin."}]},{"id":"Leviathan","hatred":[{"id":"Soldier","reason":"If Leviathan nominates and executes the Soldier, the Soldier does not die."},{"id":"Monk","reason":"If Leviathan nominates and executes the player the Monk chose, that player does not die."},{"id":"Innkeeper","reason":"If Leviathan nominates and executes a player the Innkeeper chose, that player does not die."},{"id":"Ravenkeeper","reason":"If Leviathan is in play & the Ravenkeeper dies by execution, they wake that night to use their ability."},{"id":"Sage","reason":"If Leviathan is in play & the Sage dies by execution, they wake that night to use their ability."},{"id":"Farmer","reason":"If Leviathan is in play & a Farmer dies by execution, a good player becomes a Farmer that night."},{"id":"Mayor","reason":"If Leviathan is in play & no execution occurs on day 5, good wins."}]},{"id":"Al-Hadikhia","hatred":[{"id":"Scarlet Woman","reason":"If there are two living Al-Hadikhias, the Scarlet Woman Al-Hadikhia becomes the Scarlet Woman again."},{"id":"Mastermind","reason":"Only 1 jinxed character can be in play. Evil players start knowing which player and character it is."}]},{"id":"Lil\' Monsta","hatred":[{"id":"Poppy Grower","reason":"If the Poppy Grower is in play, Minions don\'t wake together. They are woken one by one, until one of them chooses to take the Lil\' Monsta token."},{"id":"Magician","reason":"Only 1 jinxed character can be in play. "},{"id":"Scarlet Woman","reason":"If there are 5 or more players alive and the player holding the Lil\' Monsta token dies, the Scarlet Woman is given the Lil\' Monsta token tonight."}]},{"id":"Lycanthrope","hatred":[{"id":"Gambler","reason":"If the Lycanthrope is alive and the Gambler kills themself at night, no other players can die tonight."}]},{"id":"Legion","hatred":[{"id":"Engineer","reason":"Legion and the Engineer can not both be in play at the start of the game. If the Engineer creates Legion, most players (including all evil players) become evil Legion."},{"id":"Preacher","reason":"Only 1 jinxed character can be in play."}]},{"id":"Fang Gu","hatred":[{"id":"Scarlet Woman","reason":"If the Fang Gu chooses an Outsider and dies, the Scarlet Woman does not become the Fang Gu."}]},{"id":"Spy","hatred":[{"id":"Magician","reason":"When the Spy sees the Grimoire, the Demon and Magician\'s character tokens are removed."},{"id":"Alchemist","reason":"The Alchemist can not have the Spy ability."},{"id":"Poppy Grower","reason":"If the Poppy Grower is in play, the Spy does not see the Grimoire until the Poppy Grower dies."},{"id":"Damsel","reason":"Only 1 jinxed character can be in play. "},{"id":"Heretic","reason":"Only 1 jinxed character can be in play."}]},{"id":"Widow","hatred":[{"id":"Magician","reason":"When the Widow sees the Grimoire, the Demon and Magician\'s character tokens are removed."},{"id":"Poppy Grower","reason":"If the Poppy Grower is in play, the Widow does not see the Grimoire until the Poppy Grower dies."},{"id":"Alchemist","reason":"The Alchemist can not have the Widow ability."},{"id":"Damsel","reason":"Only 1 jinxed character can be in play."},{"id":"Heretic","reason":"Only 1 jinxed character can be in play."}]},{"id":"Godfather","hatred":[{"id":"Heretic","reason":"Only 1 jinxed character can be in play."}]},{"id":"Marionette","hatred":[{"id":"Lil\' Monsta","reason":"The Marionette neighbors a Minion, not the Demon. The Marionette is not woken to choose who takes the Lil\' Monsta token."},{"id":"Poppy Grower","reason":"When the Poppy Grower dies, the Demon learns the Marionette but the Marionette learns nothing."},{"id":"Snitch","reason":"The Marionette does not learn 3 not in-play characters. The Demon learns an extra 3 instead."},{"id":"Balloonist","reason":"If the Marionette thinks that they are the Balloonist, +1 Outsider was added."},{"id":"Damsel","reason":"The Marionette does not learn that a Damsel is in play."},{"id":"Huntsman","reason":"If the Marionette thinks that they are the Huntsman, the Damsel was added."}]},{"id":"Riot","hatred":[{"id":"Engineer","reason":"Riot and the Engineer can not both be in play at the start of the game. \\nIf the Engineer creates Riot, the evil players become Riot."},{"id":"Golem","reason":"If The Golem nominates Riot, the Riot player does not die."},{"id":"Snitch","reason":"If the Snitch is in play, each Riot player gets an extra 3 bluffs."},{"id":"Saint","reason":"If a good player nominates and kills the Saint, the Saint\'s team loses."},{"id":"Butler","reason":"The Butler can not nominate their master."},{"id":"Pit-Hag","reason":"If the Pit-Hag creates Riot, all evil players become Riot. \\nIf the Pit-Hag creates Riot after day 3, the game continues for one more day."},{"id":"Mayor","reason":"If the 3rd day begins with just three players alive, the players may choose (as a group) not to nominate at all. If so (and a Mayor is alive) then the Mayor\'s team wins."},{"id":"Monk","reason":"If a Riot player nominates and kills the Monk-protected-player, the Monk-protected-player does not die."},{"id":"Farmer","reason":"If a Riot player nominates and kills a Farmer, the Farmer uses their ability tonight."},{"id":"Innkeeper","reason":"If a Riot player nominates an Innkeeper-protected-player, the Innkeeper-protected-player does not die."},{"id":"Sage","reason":"If a Riot player nominates and kills a Sage, the Sage uses their ability tonight."},{"id":"Ravenkeeper","reason":"If a Riot player nominates and kills the Ravenkeeper, the Ravenkeeper uses their ability tonight."},{"id":"Soldier","reason":"If a Riot player nominates the Soldier, the Soldier does not die."},{"id":"Grandmother","reason":"If a Riot player nominates and kills the Grandchild, the Grandmother dies too."},{"id":"King","reason":"If a Riot player nominates and kills the King and the Choirboy is alive, the Choirboy uses their ability tonight."},{"id":"Exorcist","reason":"Only 1 jinxed character can be in play."},{"id":"Minstrel","reason":"Only 1 jinxed character can be in play."},{"id":"Flowergirl","reason":"Only 1 jinxed character can be in play."},{"id":"Undertaker","reason":"Players that die by nomination register as being executed to the Undertaker."},{"id":"Cannibal","reason":"Players that die by nomination register as being executed to the Cannibal."},{"id":"Pacifist","reason":"Players that die by nomination register as being executed to the Pacifist."},{"id":"Devil\'s Advocate","reason":"Players that die by nomination register as being executed to the Devil\'s Advocate."},{"id":"Investigator","reason":"Riot registers as a Minion to the Investigator."},{"id":"Clockmaker","reason":"Riot registers as a Minion to the Clockmaker."},{"id":"Town Crier","reason":"Riot registers as a Minion to the Town Crier."},{"id":"Damsel","reason":"Riot registers as a Minion to the Damsel."},{"id":"Preacher","reason":"Riot registers as a Minion to the Preacher."}]},{"id":"Lleech","hatred":[{"id":"Mastermind","reason":"If the Mastermind is alive and the Lleech\'s host dies by execution, the Lleech lives but loses their ability. "},{"id":"Slayer","reason":"If the Slayer slays the Lleech\'s host, the host dies. "}]}]')},c9f5:function(e,t,i){e.exports=i.p+"img/grandmother.18ee536e.png"},ca7a:function(e,t,i){e.exports=i.p+"img/atheist.d8060ae8.png"},cadc:function(e,t,i){e.exports=i.p+"img/gossip.5165a7ee.png"},cae1:function(e,t,i){e.exports=i.p+"img/bmr-demon.75dfa056.png"},cd8b:function(e,t,i){e.exports=i.p+"img/devilsadvocate.18bb00ce.png"},ce23:function(e,t,i){var o={"./bmr-demon.png":"cae1","./bmr-minion.png":"28bf","./bmr-outsider.png":"e898","./bmr-townsfolk.png":"e988","./bmr.png":"7496","./custom.png":"441d","./luf.png":"92d8","./snv-demon.png":"f347","./snv-minion.png":"451a","./snv-outsider.png":"4dd9","./snv-townsfolk.png":"ed00","./snv.png":"2fd0","./tb-demon.png":"a3b0","./tb-minion.png":"5f4e","./tb-outsider.png":"73a1","./tb-townsfolk.png":"f7a3","./tb.png":"0aaa"};function s(e){var t=a(e);return i(t)}function a(e){if(!i.o(o,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return o[e]}s.keys=function(){return Object.keys(o)},s.resolve=a,e.exports=s,s.id="ce23"},cfcc:function(e,t,i){e.exports=i.p+"img/beggar.90311684.png"},d4b2:function(e,t,i){},d62b:function(e,t,i){e.exports=i.p+"img/slayer.4cde6d70.png"},d69f:function(e,t,i){e.exports=i.p+"img/fearmonger.4233784c.png"},d6bc:function(e,t,i){e.exports=i.p+"img/choirboy.9d62c6b3.png"},d6ce:function(e,t,i){},d715:function(e,t,i){e.exports=i.p+"img/savant.0fe828cf.png"},d97d:function(e,t,i){e.exports=i.p+"img/drunk.947841e5.png"},da81:function(e,t,i){e.exports=i.p+"img/legion.a5ecb237.png"},dbe8:function(e,t,i){e.exports=i.p+"img/alchemist.c860a284.png"},dce6:function(e,t,i){e.exports=i.p+"img/gambler.7e6e9736.png"},df5e:function(e,t,i){e.exports=i.p+"img/mephit.b1f4ea9e.png"},dfb1:function(e,t){e.exports=e=>{const t=e=>document.title="Blood on the Clocktower "+(e?"Town Square":"Grimoire");if(localStorage.getItem("background")&&e.commit("setBackground",localStorage.background),localStorage.getItem("muted")&&e.commit("toggleMuted",!0),localStorage.getItem("static")&&e.commit("toggleStatic",!0),localStorage.getItem("imageOptIn")&&e.commit("toggleImageOptIn",!0),localStorage.getItem("zoom")&&e.commit("setZoom",parseFloat(localStorage.getItem("zoom"))),localStorage.getItem("isGrimoire")&&(e.commit("toggleGrimoire",!1),t(!1)),void 0!==localStorage.roles&&(e.commit("setCustomRoles",JSON.parse(localStorage.roles)),e.commit("setEdition",{id:"custom"})),void 0!==localStorage.edition&&e.commit("setEdition",JSON.parse(localStorage.edition)),void 0!==localStorage.bluffs&&JSON.parse(localStorage.bluffs).forEach((t,i)=>{e.commit("players/setBluff",{index:i,role:e.state.roles.get(t)||{}})}),void 0!==localStorage.fabled&&e.commit("players/setFabled",{fabled:JSON.parse(localStorage.fabled).map(t=>e.state.fabled.get(t.id)||t)}),localStorage.players&&e.commit("players/set",JSON.parse(localStorage.players).map(t=>({...t,role:e.state.roles.get(t.role)||e.getters.rolesJSONbyId.get(t.role)||{}}))),localStorage.getItem("playerId")&&e.commit("session/setPlayerId",localStorage.getItem("playerId")),localStorage.getItem("session")&&!window.location.hash.substr(1)){const[t,i]=JSON.parse(localStorage.getItem("session"));e.commit("session/setSpectator",t),e.commit("session/setSessionId",i)}e.subscribe(({type:e,payload:i},o)=>{switch(e){case"toggleGrimoire":o.grimoire.isPublic?localStorage.removeItem("isGrimoire"):localStorage.setItem("isGrimoire",1),t(o.grimoire.isPublic);break;case"setBackground":i?localStorage.setItem("background",i):localStorage.removeItem("background");break;case"toggleMuted":o.grimoire.isMuted?localStorage.setItem("muted",1):localStorage.removeItem("muted");break;case"toggleStatic":o.grimoire.isStatic?localStorage.setItem("static",1):localStorage.removeItem("static");break;case"toggleImageOptIn":o.grimoire.isImageOptIn?localStorage.setItem("imageOptIn",1):localStorage.removeItem("imageOptIn");break;case"setZoom":0!==i?localStorage.setItem("zoom",i):localStorage.removeItem("zoom");break;case"setEdition":localStorage.setItem("edition",JSON.stringify(i)),o.edition.isOfficial&&localStorage.removeItem("roles");break;case"setCustomRoles":i.length?localStorage.setItem("roles",JSON.stringify(i)):localStorage.removeItem("roles");break;case"players/setBluff":localStorage.setItem("bluffs",JSON.stringify(o.players.bluffs.map(({id:e})=>e)));break;case"players/setFabled":localStorage.setItem("fabled",JSON.stringify(o.players.fabled.map(e=>e.isCustom?e:{id:e.id})));break;case"players/add":case"players/update":case"players/remove":case"players/clear":case"players/set":case"players/swap":case"players/move":o.players.players.length?localStorage.setItem("players",JSON.stringify(o.players.players.map(e=>({...e,role:e.role.id||{}})))):localStorage.removeItem("players");break;case"session/setSessionId":i?localStorage.setItem("session",JSON.stringify([o.session.isSpectator,i])):localStorage.removeItem("session");break;case"session/setPlayerId":i?localStorage.setItem("playerId",i):localStorage.removeItem("playerId");break}})}},e014:function(e,t,i){e.exports=i.p+"img/eviltwin.10ab31a8.png"},e222:function(e,t,i){e.exports=i.p+"img/djinn.e1c507e5.png"},e455:function(e,t,i){},e69f:function(e,t,i){e.exports=i.p+"img/marionette.8aceb38b.png"},e761:function(e,t,i){},e898:function(e,t,i){e.exports=i.p+"img/bmr-outsider.971a3d5d.png"},e988:function(e,t,i){e.exports=i.p+"img/bmr-townsfolk.9bf859b4.png"},ea17:function(e,t,i){e.exports=i.p+"img/engineer.1e44d3e4.png"},eb35:function(e,t,i){"use strict";i("d6ce")},ec1e:function(e,t,i){e.exports=i.p+"img/spy.d411c998.png"},ed00:function(e,t,i){e.exports=i.p+"img/snv-townsfolk.83cf9a72.png"},ee02:function(e,t,i){e.exports=i.p+"img/courtier.7060de3f.png"},ee92:function(e,t,i){e.exports=i.p+"img/gunslinger.1360a66d.png"},eff4:function(e,t,i){e.exports=i.p+"img/virgin.a4b2d7a4.png"},f09b:function(e,t,i){e.exports=i.p+"img/judge.b1034c71.png"},f1e5:function(e,t,i){e.exports=i.p+"img/sweetheart.29949c36.png"},f282:function(e,t,i){e.exports=i.p+"img/poisoner.61c83e0f.png"},f322:function(e,t,i){e.exports=i.p+"img/scarletwoman.5377675d.png"},f344:function(e,t,i){},f347:function(e,t,i){e.exports=i.p+"img/snv-demon.2fe55248.png"},f4bd:function(e,t,i){e.exports=i.p+"img/vigormortis.981de17e.png"},f558:function(e,t,i){e.exports=i.p+"img/witch.f75f1601.png"},f6a8:function(e,t,i){e.exports=i.p+"media/countdown.1462f20c.mp3"},f7a3:function(e,t,i){e.exports=i.p+"img/tb-townsfolk.550a119b.png"},f7d3:function(e,t,i){e.exports=i.p+"img/noble.3909ea29.png"},f834:function(e,t,i){e.exports=i.p+"img/mastermind.91ffd4fd.png"},f93f:function(e,t,i){e.exports=i.p+"img/clockmaker.5378c03d.png"},fcc6:function(e,t,i){e.exports=i.p+"img/barber.6c91c1f5.png"},fcdb:function(e,t,i){e.exports=i.p+"img/psychopath.cd71a0a2.png"},fd83:function(e,t,i){e.exports=i.p+"img/custom.402e9bc3.png"},ff40:function(e,t,i){"use strict";i("2294")},fff1:function(e,t,i){e.exports=i.p+"img/pacifist.0637fdf0.png"}});
+//# sourceMappingURL=app.9584e860.js.map
\ No newline at end of file
diff --git a/js/app.9584e860.js.map b/js/app.9584e860.js.map
new file mode 100644
index 0000000..23589c3
--- /dev/null
+++ b/js/app.9584e860.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/icons/washerwoman.png","webpack:///./src/assets/icons/barista.png","webpack:///./src/assets/icons/cerenovus.png","webpack:///./src/assets/icons/amnesiac.png","webpack:///./src/assets/icons/politician.png","webpack:///./src/assets/editions/tb.png","webpack:///./src/assets/icons/shabaloth.png","webpack:///./src/assets/icons/lunatic.png","webpack:///./src/assets/icons/oracle.png","webpack:///./src/assets/icons/ravenkeeper.png","webpack:///./src/assets/icons/spiritofivory.png","webpack:///./src/assets/icons/undertaker.png","webpack:///./src/assets/icons/chambermaid.png","webpack:///./src/assets/icons/plus.png","webpack:///./src/assets/icons/recluse.png","webpack:///./src/assets/icons/mutant.png","webpack:///./src/assets/icons/huntsman.png","webpack:///./src/assets/icons/buddhist.png","webpack:///./src/assets/icons/chef.png","webpack:///./src/assets/icons/preacher.png","webpack:///./src/assets/icons/zombuul.png","webpack:///./src/components/Menu.vue?ed75","webpack:///./src/assets/icons/sailor.png","webpack:///./src/assets/icons/widow.png","webpack:///./src/assets/icons/bonecollector.png","webpack:///./src/components/modals/RoleModal.vue?2abf","webpack:///./src/assets/icons/outsider.png","webpack:///./src/assets/icons/baron.png","webpack:///./src/assets/icons/bureaucrat.png","webpack:///./src/assets/icons/puzzlemaster.png","webpack:///./src/assets/editions/bmr-minion.png","webpack:///./src/assets/icons/leviathan.png","webpack:///./src/assets/icons/artist.png","webpack:///./src/assets/editions/snv.png","webpack:///./src/assets/icons/sage.png","webpack:///./src/assets/icons/poppygrower.png","webpack:///./src/assets/icons/scapegoat.png","webpack:///./src/assets/icons/philosopher.png","webpack:///./src/components/TownSquare.vue?b88a","webpack:///./src/assets/icons/butcher.png","webpack:///./src/assets/icons/towncrier.png","webpack:///./src/assets/icons/cultleader.png","webpack:///./src/assets/icons/toymaker.png","webpack:///./src/assets/icons/vortox.png","webpack:///./src/assets/icons/deviant.png","webpack:///./src/assets/icons/nightwatchman.png","webpack:///./src/assets/icons/imp.png","webpack:///./src/assets/icons/moonchild.png","webpack:///./src/components/Gradients.vue?8fc3","webpack:///./src/assets/icons/snakecharmer.png","webpack:///./src/assets/icons/fortuneteller.png","webpack:///./src/assets/editions/custom.png","webpack:///./src/assets/editions/snv-minion.png","webpack:///./src/assets/icons/fool.png","webpack:///./src/assets/icons/apprentice.png","webpack:///./src/components/modals/ReferenceModal.vue?3656","webpack:///./src/assets/icons/librarian.png","webpack:///./src/assets/editions/snv-outsider.png","webpack:///./src/assets/icons/soldier.png","webpack:///./src/assets/icons/golem.png","webpack:///./src/assets/icons/minstrel.png","webpack:///./src/assets/icons/exorcist.png","webpack:///./src/assets/icons/harlot.png","webpack:///./src/assets/icons/goon.png","webpack:///./src/assets/icons/heretic.png","webpack:///./src/App.vue?98df","webpack:///./src/components/TownSquare.vue?5755","webpack:///./src/components/Player.vue?63ec","webpack:///./src/components/Token.vue?c964","webpack:///src/components/Token.vue","webpack:///./src/components/Token.vue?ca97","webpack:///./src/components/Token.vue","webpack:///src/components/Player.vue","webpack:///./src/components/Player.vue?1369","webpack:///./src/components/Player.vue","webpack:///./src/components/modals/ReminderModal.vue?ffa1","webpack:///./src/components/modals/Modal.vue?02b7","webpack:///src/components/modals/Modal.vue","webpack:///./src/components/modals/Modal.vue?a5e5","webpack:///./src/components/modals/Modal.vue","webpack:///src/components/modals/ReminderModal.vue","webpack:///./src/components/modals/ReminderModal.vue?c533","webpack:///./src/components/modals/ReminderModal.vue","webpack:///./src/components/modals/RoleModal.vue?b4b5","webpack:///src/components/modals/RoleModal.vue","webpack:///./src/components/modals/RoleModal.vue?15f8","webpack:///./src/components/modals/RoleModal.vue","webpack:///src/components/TownSquare.vue","webpack:///./src/components/TownSquare.vue?335a","webpack:///./src/components/TownSquare.vue","webpack:///./src/components/TownInfo.vue?9f54","webpack:///src/components/TownInfo.vue","webpack:///./src/components/TownInfo.vue?6260","webpack:///./src/components/TownInfo.vue","webpack:///./src/components/Menu.vue?400d","webpack:///src/components/Menu.vue","webpack:///./src/components/Menu.vue?9842","webpack:///./src/components/Menu.vue","webpack:///./src/components/modals/RolesModal.vue?0c8d","webpack:///src/components/modals/RolesModal.vue","webpack:///./src/components/modals/RolesModal.vue?b003","webpack:///./src/components/modals/RolesModal.vue","webpack:///./src/components/modals/EditionModal.vue?5805","webpack:///src/components/modals/EditionModal.vue","webpack:///./src/components/modals/EditionModal.vue?d6f4","webpack:///./src/components/modals/EditionModal.vue","webpack:///./src/components/Intro.vue?8a5c","webpack:///src/components/Intro.vue","webpack:///./src/components/Intro.vue?a380","webpack:///./src/components/Intro.vue","webpack:///./src/components/modals/ReferenceModal.vue?abfc","webpack:///src/components/modals/ReferenceModal.vue","webpack:///./src/components/modals/ReferenceModal.vue?c23b","webpack:///./src/components/modals/ReferenceModal.vue","webpack:///./src/components/Vote.vue?b1fe","webpack:///src/components/Vote.vue","webpack:///./src/components/Vote.vue?2a1c","webpack:///./src/components/Vote.vue","webpack:///./src/components/Gradients.vue?33d2","webpack:///src/components/Gradients.vue","webpack:///./src/components/Gradients.vue?d8ff","webpack:///./src/components/Gradients.vue","webpack:///./src/components/modals/NightOrderModal.vue?41dd","webpack:///src/components/modals/NightOrderModal.vue","webpack:///./src/components/modals/NightOrderModal.vue?08ef","webpack:///./src/components/modals/NightOrderModal.vue","webpack:///./src/components/modals/FabledModal.vue?324a","webpack:///src/components/modals/FabledModal.vue","webpack:///./src/components/modals/FabledModal.vue?aeda","webpack:///./src/components/modals/FabledModal.vue","webpack:///./src/components/modals/VoteHistoryModal.vue?45f9","webpack:///src/components/modals/VoteHistoryModal.vue","webpack:///./src/components/modals/VoteHistoryModal.vue?485a","webpack:///./src/components/modals/VoteHistoryModal.vue","webpack:///./src/components/modals/GameStateModal.vue?b7dd","webpack:///src/components/modals/GameStateModal.vue","webpack:///./src/components/modals/GameStateModal.vue?7f16","webpack:///./src/components/modals/GameStateModal.vue","webpack:///src/App.vue","webpack:///./src/App.vue?b65f","webpack:///./src/App.vue","webpack:///./src/store/socket.js","webpack:///./src/store/modules/players.js","webpack:///./src/store/modules/session.js","webpack:///./src/store/index.js","webpack:///./src/main.js","webpack:///./src/components/Token.vue?181a","webpack:///./src/assets/icons/riot.png","webpack:///./src/assets/icons/fabled.png","webpack:///./src/assets/icons/cannibal.png","webpack:///./src/App.vue?6ee5","webpack:///./src/assets/icons/duchess.png","webpack:///./src/assets/icons/goblin.png","webpack:///./src/assets/icons/x.png","webpack:///./src/assets/editions/tb-minion.png","webpack:///./src/assets/icons sync ^\\.\\/.*\\.png$","webpack:///./src/assets/icons/fiddler.png","webpack:///./src/assets/icons/butler.png","webpack:///./src/assets/icons/doomsayer.png","webpack:///./src/assets/icons/juggler.png","webpack:///./src/assets/icons/balloonist.png","webpack:///./src/assets/icons/innkeeper.png","webpack:///./src/assets/icons/good.png","webpack:///./src/assets/icons/flowergirl.png","webpack:///./src/assets/icons/monk.png","webpack:///./src/assets/icons/nodashii.png","webpack:///./src/assets/icons/saint.png","webpack:///./src/assets/icons/fanggu.png","webpack:///./src/assets/icons/fibbin.png","webpack:///./src/assets/icons/dreamer.png","webpack:///./src/assets/icons/damsel.png","webpack:///./src/assets/editions/tb-outsider.png","webpack:///./src/components/modals/ReminderModal.vue?476f","webpack:///./src/assets/editions/bmr.png","webpack:///./src/components/Player.vue?6d3c","webpack:///./src/assets/icons/minion.png","webpack:///./src/assets/icons/farmer.png","webpack:///./src/assets/icons/pithag.png","webpack:///./src/assets/icons/bishop.png","webpack:///./src/components/modals/Modal.vue?3563","webpack:///./src/assets/icons/acrobat.png","webpack:///./src/assets/icons/mathematician.png","webpack:///./src/components/modals/RolesModal.vue?8383","webpack:///./src/assets/icons/bountyhunter.png","webpack:///./src/components/Vote.vue?e359","webpack:///./src/components/modals/VoteHistoryModal.vue?39ca","webpack:///./src/assets/icons/deusexfiasco.png","webpack:///./src/assets/icons/assassin.png","webpack:///./src/assets/editions/luf.png","webpack:///./src/assets/icons/king.png","webpack:///./src/assets/icons/gangster.png","webpack:///./src/assets/icons/alhadikhia.png","webpack:///./src/assets/icons/godfather.png","webpack:///./src/assets/icons/thief.png","webpack:///./src/assets/icons/lleech.png","webpack:///./src/assets/icons/tinker.png","webpack:///./src/assets/icons/hellslibrarian.png","webpack:///./src/assets/editions/tb-demon.png","webpack:///./src/assets/icons/stormcatcher.png","webpack:///./src/assets/icons/pukka.png","webpack:///./src/assets/icons/voudon.png","webpack:///./src/assets/icons/pixie.png","webpack:///./src/assets/icons/revolutionary.png","webpack:///./src/assets/icons/boomdandy.png","webpack:///./src/assets/icons/magician.png","webpack:///./src/assets/icons/seamstress.png","webpack:///./src/assets/icons/general.png","webpack:///./src/assets/icons/klutz.png","webpack:///./src/assets/icons/sentinel.png","webpack:///./src/components/modals/EditionModal.vue?ee71","webpack:///./src/assets/icons/matron.png","webpack:///./src/assets/icons/mayor.png","webpack:///./src/assets/icons/professor.png","webpack:///./src/assets/icons/investigator.png","webpack:///./src/components/modals/NightOrderModal.vue?2579","webpack:///./src/assets/icons/snitch.png","webpack:///./src/assets/icons/tealady.png","webpack:///./src/assets/icons/empath.png","webpack:///./src/assets/icons/angel.png","webpack:///./src/components/Intro.vue?dc06","webpack:///./src/assets/icons/evil.png","webpack:///./src/assets/icons/lycanthrope.png","webpack:///./src/assets/icons/lilmonsta.png","webpack:///./src/components/TownInfo.vue?113f","webpack:///./src/assets/icons/fisherman.png","webpack:///./src/assets/icons/po.png","webpack:///./src/assets/icons/mezepheles.png","webpack:///./src/assets/icons/grandmother.png","webpack:///./src/assets/icons/atheist.png","webpack:///./src/assets/icons/gossip.png","webpack:///./src/assets/editions/bmr-demon.png","webpack:///./src/assets/icons/devilsadvocate.png","webpack:///./src/assets/editions sync ^\\.\\/.*\\.png$","webpack:///./src/assets/icons/beggar.png","webpack:///./src/assets/icons/slayer.png","webpack:///./src/assets/icons/fearmonger.png","webpack:///./src/assets/icons/choirboy.png","webpack:///./src/assets/icons/savant.png","webpack:///./src/assets/icons/drunk.png","webpack:///./src/assets/icons/legion.png","webpack:///./src/assets/icons/alchemist.png","webpack:///./src/assets/icons/gambler.png","webpack:///./src/assets/icons/mephit.png","webpack:///./src/store/persistence.js","webpack:///./src/assets/icons/eviltwin.png","webpack:///./src/assets/icons/djinn.png","webpack:///./src/assets/icons/marionette.png","webpack:///./src/assets/editions/bmr-outsider.png","webpack:///./src/assets/editions/bmr-townsfolk.png","webpack:///./src/assets/icons/engineer.png","webpack:///./src/components/modals/GameStateModal.vue?d9a4","webpack:///./src/assets/icons/spy.png","webpack:///./src/assets/editions/snv-townsfolk.png","webpack:///./src/assets/icons/courtier.png","webpack:///./src/assets/icons/gunslinger.png","webpack:///./src/assets/icons/virgin.png","webpack:///./src/assets/icons/judge.png","webpack:///./src/assets/icons/sweetheart.png","webpack:///./src/assets/icons/poisoner.png","webpack:///./src/assets/icons/scarletwoman.png","webpack:///./src/assets/editions/snv-demon.png","webpack:///./src/assets/icons/vigormortis.png","webpack:///./src/assets/icons/witch.png","webpack:///./src/assets/sounds/countdown.mp3","webpack:///./src/assets/editions/tb-townsfolk.png","webpack:///./src/assets/icons/noble.png","webpack:///./src/assets/icons/mastermind.png","webpack:///./src/assets/icons/clockmaker.png","webpack:///./src/assets/icons/barber.png","webpack:///./src/assets/icons/psychopath.png","webpack:///./src/assets/icons/custom.png","webpack:///./src/components/modals/FabledModal.vue?31c5","webpack:///./src/assets/icons/pacifist.png"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","render","_vm","this","_h","$createElement","_c","_self","class","night","grimoire","isNight","static","isStatic","style","backgroundImage","background","attrs","on","keyup","match","_e","staticClass","players","session","nomination","ref","_v","_s","version","staticRenderFns","public","isPublic","spectator","isSpectator","vote","_l","player","index","from","Math","max","swap","move","nominate","$event","handleTrigger","closed","isBluffsOpen","stopPropagation","toggleBluffs","openRoleModal","bluffs","fabled","isFabledOpen","toggleFabled","role","removeFabled","nightOrder","first","isNightOrder","firstNightReminder","other","otherNightReminder","selectedPlayer","dead","isDead","marked","markedPlayer","isVoteless","you","sessionId","id","playerId","votes","voteLocked","team","toggleStatus","$emit","cancel","swapPlayer","movePlayer","nominatePlayer","highlight","isRolesDistributed","updatePlayer","active","isMenuOpen","pronouns","changePronouns","changeName","disabled","lockedVote","removePlayer","claimSeat","reminder","removeReminder","image","isImageOptIn","imageAlt","setRole","firstNight","otherNight","reminderLeaves","_f","ability","props","type","default","computed","reminders","remindersGlobal","filters","nameToFontSize","methods","component","components","Token","required","indexOf","indexAdjusted","zoom","unit","innerWidth","innerHeight","width","isSwap","prompt","isMarked","closeMenu","$store","commit","modals","availableReminders","playerIndex","toggleModal","addReminder","close","maximized","isMaximized","_t","mapReminder","Modal","state","roles","forEach","some","bluff","map","otherTravelers","availableRoles","tab","size","values","townsfolk","Player","RoleModal","ReminderModal","bluffSize","method","params","confirm","includes","to","undefined","swapTo","updatedNomination","nom","moveTo","edition","logo","teams","traveler","isOfficial","author","alive","outsider","minion","demon","nonTravelers","getters","filter","game","directives","rawName","voteHistory","expression","reconnecting","isReconnecting","ping","leaveSession","playerCount","open","toggleMenu","toggleGrimoire","toggleNight","toggleNightOrder","setZoom","round","setBackground","imageOptIn","toggleStatic","toggleMuted","isMuted","copySessionUrl","distributeRoles","hostSession","joinSession","addPlayer","randomizeSeatings","clearPlayers","clearRoles","random","url","location","href","split","link","navigator","clipboard","writeText","popup","setTimeout","toggleImageOptIn","pop","dispatch","teamRoles","reduce","a","selected","checked","allowMultiple","domProps","Array","isArray","_i","$$a","$$el","target","$$c","$$v","$$i","concat","selectedRoles","assignRoles","selectRandomRoles","randomElement","arr","floor","roleSelection","b","hasSelectedSetupRoles","setup","$set","composition","keys","x","available","fill","sort","mounted","watch","isCustom","script","handleURL","handleUpload","openUpload","promptURL","setEdition","editions","scripts","$refs","upload","click","file","files","reader","FileReader","addEventListener","JSON","parse","parseRoles","e","alert","message","readAsText","res","fetch","json","metaIndex","findIndex","meta","assign","has","_m","reference","playersByRole","join","jinxed","jinx","second","reason","jinxes","rolesGrouped","nominator","nominee","voters","ceil","isVoteInProgress","votingSpeed","currentVote","preventDefault","setVotingSpeed","countdown","pause","voteTimer","stop","start","finish","setMarked","removeMarked","nominatorStyle","transform","transitionDuration","nomineeStyle","lock","rotation","min","find","canVote","reorder","setInterval","clearInterval","diff","speed","gradient","gradients","rolesFirstNight","rolesOtherNight","setFabled","fable","clearVoteHistory","setRecordVoteHistory","isVoteHistoryAllowed","timestamp","getHours","toString","padStart","getMinutes","majority","gamestate","input","select","copy","load","stringify","customRolesStripped","f","rolesJSONbyId","GameStateModal","VoteHistoryModal","FabledModal","NightOrderModal","Vote","ReferenceModal","Intro","TownInfo","TownSquare","Menu","EditionModal","RolesModal","Gradients","ctrlKey","metaKey","toLocaleLowerCase","menu","LiveSession","store","_wss","_socket","_isSpectator","_gamestate","_store","_pingInterval","_pingTimer","_reconnectTimer","_players","_pings","connect","channel","disconnect","WebSocket","_handleMessage","onopen","_onOpen","onclose","err","code","command","readyState","send","_send","_sendDirect","sendGamestate","_ping","_handlePing","clearTimeout","console","log","_updateEdition","_updateFabled","_updateGamestate","_updatePlayer","_updateSeat","_handleVote","_handleLock","_handleBye","_updatePlayerPronouns","substr","_open","isLightweight","roleId","sendEdition","missing","isFromSockets","playerIdOrCount","latency","now","Date","getTime","parseInt","pings","seat","oldIndex","payload","fromST","subscribe","hash","setVoteInProgress","lockVote","setVoteHistoryAllowed","setIsNight","sendFabled","sendPlayerPronouns","sendPlayer","NEWPLAYER","Map","set","actions","rootState","mutations","namespaced","handleVote","claimedSeat","val","setPlayerId","setSpectator","setReconnecting","setPlayerCount","setPing","setMarkedPlayer","setNomination","replace","isExile","voteSync","use","getRolesByEdition","localeCompare","getTravelersNotInEdition","toggle","clean","editionJSONbyId","hatred","error","customRole","Store","gameState","customRoles","customKeys","strippedProps","strippedRole","prop","modal","processedRoles","mappedRole","abs","plugins","socket","faIcons","fabIcons","add","config","productionTip","h","App","$mount","webpackContext","req","webpackContextResolve","Error","resolve","updatePagetitle","document","title","localStorage","getItem","parseFloat","removeItem","setItem"],"mappings":"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3CC,EAAOD,QAAU,IAA0B,4B,uBCA3CC,EAAOD,QAAU,IAA0B,2B,uBCA3CC,EAAOD,QAAU,IAA0B,gC,uBCA3CC,EAAOD,QAAU,IAA0B,kC,uBCA3CC,EAAOD,QAAU,IAA0B,+B,gDCA3CC,EAAOD,QAAU,IAA0B,gC,uBCA3CC,EAAOD,QAAU,IAA0B,yB,uBCA3CC,EAAOD,QAAU,IAA0B,4B,uBCA3CC,EAAOD,QAAU,IAA0B,2B,qBCA3CC,EAAOD,QAAU,IAA0B,6B,uBCA3CC,EAAOD,QAAU,IAA0B,6B,uBCA3CC,EAAOD,QAAU,IAA0B,yB,qBCA3CC,EAAOD,QAAU,IAA0B,6B,uBCA3CC,EAAOD,QAAU,IAA0B,4B,kCCA3C,W,uBCAAC,EAAOD,QAAU,IAA0B,2B,8CCA3CC,EAAOD,QAAU,IAA0B,0B,uBCA3CC,EAAOD,QAAU,IAA0B,kC,oCCA3C,W,qBCAAC,EAAOD,QAAU,IAA0B,6B,uBCA3CC,EAAOD,QAAU,IAA0B,0B,uBCA3CC,EAAOD,QAAU,IAA0B,+B,uBCA3CC,EAAOD,QAAU,IAA0B,iC,uBCA3CC,EAAOD,QAAU,IAA0B,+B,uBCA3CC,EAAOD,QAAU,IAA0B,8B,uBCA3CC,EAAOD,QAAU,IAA0B,2B,uBCA3CC,EAAOD,QAAU,IAA0B,wB,uBCA3CC,EAAOD,QAAU,IAA0B,yB,qBCA3CC,EAAOD,QAAU,IAA0B,gC,uBCA3CC,EAAOD,QAAU,IAA0B,8B,qBCA3CC,EAAOD,QAAU,IAA0B,gC,kCCA3C,W,uBCAAC,EAAOD,QAAU,IAA0B,4B,uBCA3CC,EAAOD,QAAU,IAA0B,8B,uBCA3CC,EAAOD,QAAU,IAA0B,+B,8CCA3CC,EAAOD,QAAU,IAA0B,6B,uBCA3CC,EAAOD,QAAU,IAA0B,2B,uBCA3CC,EAAOD,QAAU,IAA0B,4B,uBCA3CC,EAAOD,QAAU,IAA0B,kC,uBCA3CC,EAAOD,QAAU,IAA0B,wB,uBCA3CC,EAAOD,QAAU,IAA0B,8B,oCCA3C,W,qBCAAC,EAAOD,QAAU,IAA0B,iC,gDCA3CC,EAAOD,QAAU,IAA0B,kC,uBCA3CC,EAAOD,QAAU,IAA0B,2B,uBCA3CC,EAAOD,QAAU,IAA0B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wB,oCCA3C,W,uBCAAC,EAAOD,QAAU,IAA0B,2B,uBCA3CC,EAAOD,QAAU,IAA0B,2B,gDCA3CC,EAAOD,QAAU,IAA0B,2B,qBCA3CC,EAAOD,QAAU,IAA0B,2B,kCCA3C,W,uBCAAC,EAAOD,QAAU,IAA0B,4B,qBCA3CC,EAAOD,QAAU,IAA0B,kC,kCCA3C,W,uBCAAC,EAAOD,QAAU,IAA0B,iC,oCCA3C,W,oCCAA,W,qBCAAC,EAAOD,QAAU,IAA0B,iC,qBCA3CC,EAAOD,QAAU,IAA0B,6B,gFCA3CC,EAAOD,QAAU,IAA0B,wB,qBCA3CC,EAAOD,QAAU,IAA0B,yB,uBCA3CC,EAAOD,QAAU,IAA0B,6B,qBCA3CC,EAAOD,QAAU,IAA0B,+B,uBCA3CC,EAAOD,QAAU,IAA0B,8B,gDCA3CC,EAAOD,QAAU,IAA0B,0B,uBCA3CC,EAAOD,QAAU,IAA0B,2B,uBCA3CC,EAAOD,QAAU,IAA0B,2B,8CCA3CC,EAAOD,QAAU,IAA0B,mC,qBCA3CC,EAAOD,QAAU,IAA0B,6B,qBCA3CC,EAAOD,QAAU,IAA0B,iC,qBCA3CC,EAAOD,QAAU,IAA0B,0B,qBCA3CC,EAAOD,QAAU,IAA0B,2B,qBCA3CC,EAAOD,QAAU,IAA0B,0B,qBCA3CC,EAAOD,QAAU,IAA0B,kC,qBCA3CC,EAAOD,QAAU,IAA0B,8B,qBCA3CC,EAAOD,QAAU,IAA0B,6B,qBCA3CC,EAAOD,QAAU,IAA0B,+B,qBCA3CC,EAAOD,QAAU,IAA0B,4B,qBCA3CC,EAAOD,QAAU,IAA0B,0B,qBCA3CC,EAAOD,QAAU,IAA0B,6B,kCCA3C,W,qBCAAC,EAAOD,QAAU,IAA0B,2B,m+sDCA3CC,EAAOD,QAAU,IAA0B,0B,m+HCA3CC,EAAOD,QAAU,IAA0B,8B,qBCA3CC,EAAOD,QAAU,IAA0B,iC,kCCA3C,W,qBCAAC,EAAOD,QAAU,IAA0B,2B,qBCA3CC,EAAOD,QAAU,IAA0B,4B,qBCA3CC,EAAOD,QAAU,IAA0B,2B,4CCA3CC,EAAOD,QAAU,IAA0B,0B,yDCA3C,W,qBCAAC,EAAOD,QAAU,IAA0B,yB,qBCA3CC,EAAOD,QAAU,IAA0B,gC,qBCA3CC,EAAOD,QAAU,IAA0B,8B,kCCA3C,W,qBCAAC,EAAOD,QAAU,IAA0B,8B,qBCA3CC,EAAOD,QAAU,IAA0B,uB,qBCA3CC,EAAOD,QAAU,IAA0B,+B,q4PCA3CC,EAAOD,QAAU,IAA0B,gC,qBCA3CC,EAAOD,QAAU,IAA0B,4B,qBCA3CC,EAAOD,QAAU,IAA0B,2B,qBCA3CC,EAAOD,QAAU,IAA0B,8B,qBCA3CC,EAAOD,QAAU,IAA0B,mC,qBCA3C,IAAIkL,EAAM,CACT,kBAAmB,OACnB,mBAAoB,OACpB,qBAAsB,OACtB,sBAAuB,OACvB,YAAa,OACb,eAAgB,OAChB,YAAa,OACb,kBAAmB,OACnB,mBAAoB,OACpB,qBAAsB,OACtB,sBAAuB,OACvB,YAAa,OACb,iBAAkB,OAClB,kBAAmB,OACnB,oBAAqB,OACrB,qBAAsB,OACtB,WAAY,QAIb,SAAS4V,EAAeC,GACvB,IAAIza,EAAK0a,EAAsBD,GAC/B,OAAOlhB,EAAoByG,GAE5B,SAAS0a,EAAsBD,GAC9B,IAAIlhB,EAAoBW,EAAE0K,EAAK6V,GAAM,CACpC,IAAIvN,EAAI,IAAIyN,MAAM,uBAAyBF,EAAM,KAEjD,MADAvN,EAAEmH,KAAO,mBACHnH,EAEP,OAAOtI,EAAI6V,GAEZD,EAAejP,KAAO,WACrB,OAAOlT,OAAOkT,KAAK3G,IAEpB4V,EAAeI,QAAUF,EACzB/gB,EAAOD,QAAU8gB,EACjBA,EAAexa,GAAK,Q,qBCtCpBrG,EAAOD,QAAU,IAA0B,2B,4CCA3CC,EAAOD,QAAU,IAA0B,2B,qBCA3CC,EAAOD,QAAU,IAA0B,+B,qBCA3CC,EAAOD,QAAU,IAA0B,6B,4CCA3CC,EAAOD,QAAU,IAA0B,2B,qBCA3CC,EAAOD,QAAU,IAA0B,0B,qBCA3CC,EAAOD,QAAU,IAA0B,2B,qBCA3CC,EAAOD,QAAU,IAA0B,8B,qBCA3CC,EAAOD,QAAU,IAA0B,4B,qBCA3CC,EAAOD,QAAU,IAA0B,2B,mBCA3CC,EAAOD,QAAUuZ,IACf,MAAM4H,EAAkBrd,GACrBsd,SAASC,MAAQ,4BAChBvd,EAAW,cAAgB,YA8D/B,GA1DIwd,aAAaC,QAAQ,eACvBhI,EAAMtP,OAAO,gBAAiBqX,aAAaxe,YAEzCwe,aAAaC,QAAQ,UACvBhI,EAAMtP,OAAO,eAAe,GAE1BqX,aAAaC,QAAQ,WACvBhI,EAAMtP,OAAO,gBAAgB,GAE3BqX,aAAaC,QAAQ,eACvBhI,EAAMtP,OAAO,oBAAoB,GAE/BqX,aAAaC,QAAQ,SACvBhI,EAAMtP,OAAO,UAAWuX,WAAWF,aAAaC,QAAQ,UAEtDD,aAAaC,QAAQ,gBACvBhI,EAAMtP,OAAO,kBAAkB,GAC/BkX,GAAgB,SAESjV,IAAvBoV,aAAaxW,QACfyO,EAAMtP,OAAO,iBAAkBoJ,KAAKC,MAAMgO,aAAaxW,QACvDyO,EAAMtP,OAAO,aAAc,CAAE3D,GAAI,iBAEN4F,IAAzBoV,aAAa/U,SAEfgN,EAAMtP,OAAO,aAAcoJ,KAAKC,MAAMgO,aAAa/U,eAEzBL,IAAxBoV,aAAapc,QACfmO,KAAKC,MAAMgO,aAAapc,QAAQ6F,QAAQ,CAACzF,EAAMlB,KAC7CmV,EAAMtP,OAAO,mBAAoB,CAC/B7F,QACAkB,KAAMiU,EAAM1O,MAAMC,MAAMnK,IAAI2E,IAAS,YAIf4G,IAAxBoV,aAAanc,QACfoU,EAAMtP,OAAO,oBAAqB,CAChC9E,OAAQkO,KAAKC,MAAMgO,aAAanc,QAAQ+F,IACtC/F,GAAUoU,EAAM1O,MAAM1F,OAAOxE,IAAIwE,EAAOmB,KAAOnB,KAIjDmc,aAAaje,SACfkW,EAAMtP,OACJ,cACAoJ,KAAKC,MAAMgO,aAAaje,SAAS6H,IAAI/G,IAAU,IAC1CA,EACHmB,KACEiU,EAAM1O,MAAMC,MAAMnK,IAAIwD,EAAOmB,OAC7BiU,EAAMrM,QAAQkL,cAAczX,IAAIwD,EAAOmB,OACvC,OAKJgc,aAAaC,QAAQ,aACvBhI,EAAMtP,OAAO,sBAAuBqX,aAAaC,QAAQ,aAEvDD,aAAaC,QAAQ,aAAe3f,OAAOwN,SAAS+N,KAAKnB,OAAO,GAAI,CACtE,MAAOjY,EAAWsC,GAAagN,KAAKC,MAAMgO,aAAaC,QAAQ,YAC/DhI,EAAMtP,OAAO,uBAAwBlG,GACrCwV,EAAMtP,OAAO,uBAAwB5D,GAIvCkT,EAAM2D,UAAU,EAAGzU,OAAMuU,WAAWnS,KAClC,OAAQpC,GACN,IAAK,iBACEoC,EAAMrI,SAASsB,SAGlBwd,aAAaG,WAAW,cAFxBH,aAAaI,QAAQ,aAAc,GAIrCP,EAAgBtW,EAAMrI,SAASsB,UAC/B,MACF,IAAK,gBACCkZ,EACFsE,aAAaI,QAAQ,aAAc1E,GAEnCsE,aAAaG,WAAW,cAE1B,MACF,IAAK,cACC5W,EAAMrI,SAASiM,QACjB6S,aAAaI,QAAQ,QAAS,GAE9BJ,aAAaG,WAAW,SAE1B,MACF,IAAK,eACC5W,EAAMrI,SAASG,SACjB2e,aAAaI,QAAQ,SAAU,GAE/BJ,aAAaG,WAAW,UAE1B,MACF,IAAK,mBACC5W,EAAMrI,SAASwF,aACjBsZ,aAAaI,QAAQ,aAAc,GAEnCJ,aAAaG,WAAW,cAE1B,MACF,IAAK,UACa,IAAZzE,EACFsE,aAAaI,QAAQ,OAAQ1E,GAE7BsE,aAAaG,WAAW,QAE1B,MACF,IAAK,aACHH,aAAaI,QAAQ,UAAWrO,KAAK4E,UAAU+E,IAC3CnS,EAAM0B,QAAQI,YAChB2U,aAAaG,WAAW,SAE1B,MACF,IAAK,iBACEzE,EAAQte,OAGX4iB,aAAaI,QAAQ,QAASrO,KAAK4E,UAAU+E,IAF7CsE,aAAaG,WAAW,SAI1B,MACF,IAAK,mBACHH,aAAaI,QACX,SACArO,KAAK4E,UAAUpN,EAAMxH,QAAQ6B,OAAOgG,IAAI,EAAG5E,QAASA,KAEtD,MACF,IAAK,oBACHgb,aAAaI,QACX,SACArO,KAAK4E,UACHpN,EAAMxH,QAAQ8B,OAAO+F,IAAI/F,GACvBA,EAAOiN,SAAWjN,EAAS,CAAEmB,GAAInB,EAAOmB,OAI9C,MACF,IAAK,cACL,IAAK,iBACL,IAAK,iBACL,IAAK,gBACL,IAAK,cACL,IAAK,eACL,IAAK,eACCuE,EAAMxH,QAAQA,QAAQ3E,OACxB4iB,aAAaI,QACX,UACArO,KAAK4E,UACHpN,EAAMxH,QAAQA,QAAQ6H,IAAI/G,IAAU,IAC/BA,EAEHmB,KAAMnB,EAAOmB,KAAKgB,IAAM,QAK9Bgb,aAAaG,WAAW,WAE1B,MACF,IAAK,uBACCzE,EACFsE,aAAaI,QACX,UACArO,KAAK4E,UAAU,CAACpN,EAAMvH,QAAQU,YAAagZ,KAG7CsE,aAAaG,WAAW,WAE1B,MACF,IAAK,sBACCzE,EACFsE,aAAaI,QAAQ,WAAY1E,GAEjCsE,aAAaG,WAAW,YAE1B,W,qBCxLRxhB,EAAOD,QAAU,IAA0B,6B,qBCA3CC,EAAOD,QAAU,IAA0B,0B,4CCA3CC,EAAOD,QAAU,IAA0B,+B,4CCA3CC,EAAOD,QAAU,IAA0B,iC,qBCA3CC,EAAOD,QAAU,IAA0B,kC,qBCA3CC,EAAOD,QAAU,IAA0B,6B,kCCA3C,W,qBCAAC,EAAOD,QAAU,IAA0B,wB,qBCA3CC,EAAOD,QAAU,IAA0B,kC,qBCA3CC,EAAOD,QAAU,IAA0B,6B,qBCA3CC,EAAOD,QAAU,IAA0B,+B,qBCA3CC,EAAOD,QAAU,IAA0B,2B,qBCA3CC,EAAOD,QAAU,IAA0B,0B,qBCA3CC,EAAOD,QAAU,IAA0B,+B,qBCA3CC,EAAOD,QAAU,IAA0B,6B,qBCA3CC,EAAOD,QAAU,IAA0B,iC,4CCA3CC,EAAOD,QAAU,IAA0B,8B,qBCA3CC,EAAOD,QAAU,IAA0B,gC,qBCA3CC,EAAOD,QAAU,IAA0B,0B,qBCA3CC,EAAOD,QAAU,IAA0B,gC,qBCA3CC,EAAOD,QAAU,IAA0B,iC,qBCA3CC,EAAOD,QAAU,IAA0B,0B,qBCA3CC,EAAOD,QAAU,IAA0B,+B,qBCA3CC,EAAOD,QAAU,IAA0B,+B,qBCA3CC,EAAOD,QAAU,IAA0B,2B,qBCA3CC,EAAOD,QAAU,IAA0B,+B,qBCA3CC,EAAOD,QAAU,IAA0B,2B,kCCA3C,W,qBCAAC,EAAOD,QAAU,IAA0B","file":"js/app.9584e860.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([\"56d7\",\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"img/washerwoman.554de332.png\";","module.exports = __webpack_public_path__ + \"img/barista.6c427e65.png\";","module.exports = __webpack_public_path__ + \"img/cerenovus.cc343942.png\";","module.exports = __webpack_public_path__ + \"img/amnesiac.fbd5ab33.png\";","module.exports = __webpack_public_path__ + \"img/politician.521cc53f.png\";","module.exports = __webpack_public_path__ + \"img/tb.438499cd.png\";","module.exports = __webpack_public_path__ + \"img/shabaloth.589858d2.png\";","module.exports = __webpack_public_path__ + \"img/lunatic.39fb7a2a.png\";","module.exports = __webpack_public_path__ + \"img/oracle.8b13b932.png\";","module.exports = __webpack_public_path__ + \"img/ravenkeeper.a1dfbc31.png\";","module.exports = __webpack_public_path__ + \"img/spiritofivory.ef077db5.png\";","module.exports = __webpack_public_path__ + \"img/undertaker.4f2e9806.png\";","module.exports = __webpack_public_path__ + \"img/chambermaid.5fa8599d.png\";","module.exports = __webpack_public_path__ + \"img/plus.9b84ce65.png\";","module.exports = __webpack_public_path__ + \"img/recluse.81a048d5.png\";","module.exports = __webpack_public_path__ + \"img/mutant.1b9f9dee.png\";","module.exports = __webpack_public_path__ + \"img/huntsman.994fb309.png\";","module.exports = __webpack_public_path__ + \"img/buddhist.2d7c4106.png\";","module.exports = __webpack_public_path__ + \"img/chef.c2256a45.png\";","module.exports = __webpack_public_path__ + \"img/preacher.a86e913b.png\";","module.exports = __webpack_public_path__ + \"img/zombuul.2872fbb3.png\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Menu.vue?vue&type=style&index=0&id=84ed831a&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/sailor.a9d4454a.png\";","module.exports = __webpack_public_path__ + \"img/widow.3ae71cbf.png\";","module.exports = __webpack_public_path__ + \"img/bonecollector.bd2d8b7a.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RoleModal.vue?vue&type=style&index=0&id=2e3008b9&scoped=true&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/outsider.2c6bc66e.png\";","module.exports = __webpack_public_path__ + \"img/baron.2628f49e.png\";","module.exports = __webpack_public_path__ + \"img/bureaucrat.6a892d56.png\";","module.exports = __webpack_public_path__ + \"img/puzzlemaster.b4ec360b.png\";","module.exports = __webpack_public_path__ + \"img/bmr-minion.6559191b.png\";","module.exports = __webpack_public_path__ + \"img/leviathan.24f3cd86.png\";","module.exports = __webpack_public_path__ + \"img/artist.e76624f3.png\";","module.exports = __webpack_public_path__ + \"img/snv.288a42ad.png\";","module.exports = __webpack_public_path__ + \"img/sage.8afae02e.png\";","module.exports = __webpack_public_path__ + \"img/poppygrower.c9d4c880.png\";","module.exports = __webpack_public_path__ + \"img/scapegoat.73640c39.png\";","module.exports = __webpack_public_path__ + \"img/philosopher.9a154d6c.png\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TownSquare.vue?vue&type=style&index=0&lang=scss&\"","module.exports = __webpack_public_path__ + \"img/butcher.2efedb75.png\";","module.exports = __webpack_public_path__ + \"img/towncrier.8c7af52c.png\";","module.exports = __webpack_public_path__ + \"img/cultleader.1f9a22f0.png\";","module.exports = __webpack_public_path__ + \"img/toymaker.a96806e5.png\";","module.exports = __webpack_public_path__ + \"img/vortox.f022015e.png\";","module.exports = __webpack_public_path__ + \"img/deviant.9fcfb58a.png\";","module.exports = __webpack_public_path__ + \"img/nightwatchman.a2460a3d.png\";","module.exports = __webpack_public_path__ + \"img/imp.ff808901.png\";","module.exports = __webpack_public_path__ + \"img/moonchild.04fb95f1.png\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Gradients.vue?vue&type=style&index=0&id=1e202a64&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/snakecharmer.7769a0cc.png\";","module.exports = __webpack_public_path__ + \"img/fortuneteller.a641461f.png\";","module.exports = __webpack_public_path__ + \"img/custom.5334aaeb.png\";","module.exports = __webpack_public_path__ + \"img/snv-minion.60768802.png\";","module.exports = __webpack_public_path__ + \"img/fool.0d847910.png\";","module.exports = __webpack_public_path__ + \"img/apprentice.ff782fd9.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReferenceModal.vue?vue&type=style&index=0&id=7d0ee60b&lang=scss&scoped=true&\"","module.exports = __webpack_public_path__ + \"img/librarian.c867e6d6.png\";","module.exports = __webpack_public_path__ + \"img/snv-outsider.5b5cae7f.png\";","module.exports = __webpack_public_path__ + \"img/soldier.ebde76f0.png\";","module.exports = __webpack_public_path__ + \"img/golem.4a791883.png\";","module.exports = __webpack_public_path__ + \"img/minstrel.29c42f5b.png\";","module.exports = __webpack_public_path__ + \"img/exorcist.4d617582.png\";","module.exports = __webpack_public_path__ + \"img/harlot.403b3498.png\";","module.exports = __webpack_public_path__ + \"img/goon.eb004322.png\";","module.exports = __webpack_public_path__ + \"img/heretic.0bbeab70.png\";","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{\n night: _vm.grimoire.isNight,\n static: _vm.grimoire.isStatic\n },style:({\n backgroundImage: _vm.grimoire.background\n ? (\"url('\" + (_vm.grimoire.background) + \"')\")\n : ''\n }),attrs:{\"id\":\"app\",\"tabindex\":\"-1\"},on:{\"keyup\":_vm.keyup}},[(_vm.grimoire.background && _vm.grimoire.background.match(/\\.(mp4|webm)$/i))?_c('video',{attrs:{\"id\":\"background\",\"src\":_vm.grimoire.background,\"autoplay\":\"\",\"loop\":\"\"}}):_vm._e(),_c('div',{staticClass:\"backdrop\"}),_c('transition',{attrs:{\"name\":\"blur\"}},[(!_vm.players.length)?_c('Intro'):_vm._e(),(_vm.players.length && !_vm.session.nomination)?_c('TownInfo'):_vm._e(),(_vm.session.nomination)?_c('Vote'):_vm._e()],1),_c('TownSquare'),_c('Menu',{ref:\"menu\"}),_c('EditionModal'),_c('FabledModal'),_c('RolesModal'),_c('ReferenceModal'),_c('NightOrderModal'),_c('VoteHistoryModal'),_c('GameStateModal'),_c('Gradients'),_c('span',{attrs:{\"id\":\"version\"}},[_vm._v(\"v\"+_vm._s(_vm.version))])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"square\",class:{\n public: _vm.grimoire.isPublic,\n spectator: _vm.session.isSpectator,\n vote: _vm.session.nomination\n },attrs:{\"id\":\"townsquare\"}},[_c('ul',{staticClass:\"circle\",class:['size-' + _vm.players.length]},_vm._l((_vm.players),function(player,index){return _c('Player',{key:index,class:{\n from: Math.max(_vm.swap, _vm.move, _vm.nominate) === index,\n swap: _vm.swap > -1,\n move: _vm.move > -1,\n nominate: _vm.nominate > -1\n },attrs:{\"player\":player},on:{\"trigger\":function($event){return _vm.handleTrigger(index, $event)}}})}),1),(_vm.players.length)?_c('div',{ref:\"bluffs\",staticClass:\"bluffs\",class:{ closed: !_vm.isBluffsOpen }},[_c('h3',[(_vm.session.isSpectator)?_c('span',[_vm._v(\"Other characters\")]):_c('span',[_vm._v(\"Demon bluffs\")]),_c('font-awesome-icon',{attrs:{\"icon\":\"times-circle\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleBluffs($event)}}}),_c('font-awesome-icon',{attrs:{\"icon\":\"plus-circle\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleBluffs($event)}}})],1),_c('ul',_vm._l((_vm.bluffSize),function(index){return _c('li',{key:index,on:{\"click\":function($event){return _vm.openRoleModal(index * -1)}}},[_c('Token',{attrs:{\"role\":_vm.bluffs[index - 1]}})],1)}),0)]):_vm._e(),(_vm.fabled.length)?_c('div',{staticClass:\"fabled\",class:{ closed: !_vm.isFabledOpen }},[_c('h3',[_c('span',[_vm._v(\"Fabled\")]),_c('font-awesome-icon',{attrs:{\"icon\":\"times-circle\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleFabled($event)}}}),_c('font-awesome-icon',{attrs:{\"icon\":\"plus-circle\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.toggleFabled($event)}}})],1),_c('ul',_vm._l((_vm.fabled),function(role,index){return _c('li',{key:index,on:{\"click\":function($event){return _vm.removeFabled(index)}}},[(_vm.nightOrder.get(role).first && _vm.grimoire.isNightOrder)?_c('div',{staticClass:\"night-order first\"},[_c('em',[_vm._v(_vm._s(_vm.nightOrder.get(role).first)+\".\")]),(role.firstNightReminder)?_c('span',[_vm._v(_vm._s(role.firstNightReminder))]):_vm._e()]):_vm._e(),(_vm.nightOrder.get(role).other && _vm.grimoire.isNightOrder)?_c('div',{staticClass:\"night-order other\"},[_c('em',[_vm._v(_vm._s(_vm.nightOrder.get(role).other)+\".\")]),(role.otherNightReminder)?_c('span',[_vm._v(_vm._s(role.otherNightReminder))]):_vm._e()]):_vm._e(),_c('Token',{attrs:{\"role\":role}})],1)}),0)]):_vm._e(),_c('ReminderModal',{attrs:{\"player-index\":_vm.selectedPlayer}}),_c('RoleModal',{attrs:{\"player-index\":_vm.selectedPlayer}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('li',{style:(_vm.zoom)},[_c('div',{ref:\"player\",staticClass:\"player\",class:[\n {\n dead: _vm.player.isDead,\n marked: _vm.session.markedPlayer === _vm.index,\n 'no-vote': _vm.player.isVoteless,\n you: _vm.session.sessionId && _vm.player.id && _vm.player.id === _vm.session.playerId,\n 'vote-yes': _vm.session.votes[_vm.index],\n 'vote-lock': _vm.voteLocked\n },\n _vm.player.role.team\n ]},[_c('div',{staticClass:\"shroud\",on:{\"click\":function($event){return _vm.toggleStatus()}}}),_c('div',{staticClass:\"life\",on:{\"click\":function($event){return _vm.toggleStatus()}}}),(_vm.nightOrder.get(_vm.player).first && _vm.grimoire.isNightOrder)?_c('div',{staticClass:\"night-order first\"},[_c('em',[_vm._v(_vm._s(_vm.nightOrder.get(_vm.player).first)+\".\")]),(_vm.player.role.firstNightReminder)?_c('span',[_vm._v(_vm._s(_vm.player.role.firstNightReminder))]):_vm._e()]):_vm._e(),(_vm.nightOrder.get(_vm.player).other && _vm.grimoire.isNightOrder)?_c('div',{staticClass:\"night-order other\"},[_c('em',[_vm._v(_vm._s(_vm.nightOrder.get(_vm.player).other)+\".\")]),(_vm.player.role.otherNightReminder)?_c('span',[_vm._v(_vm._s(_vm.player.role.otherNightReminder))]):_vm._e()]):_vm._e(),_c('Token',{attrs:{\"role\":_vm.player.role},on:{\"set-role\":function($event){return _vm.$emit('trigger', ['openRoleModal'])}}}),_c('div',{staticClass:\"overlay\"},[_c('font-awesome-icon',{staticClass:\"vote\",attrs:{\"icon\":\"hand-paper\",\"title\":\"Hand UP\"},on:{\"click\":function($event){return _vm.vote()}}}),_c('font-awesome-icon',{staticClass:\"vote\",attrs:{\"icon\":\"times\",\"title\":\"Hand DOWN\"},on:{\"click\":function($event){return _vm.vote()}}}),_c('font-awesome-icon',{staticClass:\"cancel\",attrs:{\"icon\":\"times-circle\",\"title\":\"Cancel\"},on:{\"click\":function($event){return _vm.cancel()}}}),_c('font-awesome-icon',{staticClass:\"swap\",attrs:{\"icon\":\"exchange-alt\",\"title\":\"Swap seats with this player\"},on:{\"click\":function($event){return _vm.swapPlayer(_vm.player)}}}),_c('font-awesome-icon',{staticClass:\"move\",attrs:{\"icon\":\"redo-alt\",\"title\":\"Move player to this seat\"},on:{\"click\":function($event){return _vm.movePlayer(_vm.player)}}}),_c('font-awesome-icon',{staticClass:\"nominate\",attrs:{\"icon\":\"hand-point-right\",\"title\":\"Nominate this player\"},on:{\"click\":function($event){return _vm.nominatePlayer(_vm.player)}}})],1),(_vm.player.id && _vm.session.sessionId)?_c('font-awesome-icon',{staticClass:\"seat\",class:{ highlight: _vm.session.isRolesDistributed },attrs:{\"icon\":\"chair\"}}):_vm._e(),(_vm.player.isDead && !_vm.player.isVoteless)?_c('font-awesome-icon',{staticClass:\"has-vote\",attrs:{\"icon\":\"vote-yea\",\"title\":\"Ghost vote\"},on:{\"click\":function($event){return _vm.updatePlayer('isVoteless', true)}}}):_vm._e(),_c('div',{staticClass:\"marked\"},[_c('font-awesome-icon',{attrs:{\"icon\":\"skull\"}})],1),_c('div',{staticClass:\"name\",class:{ active: _vm.isMenuOpen },on:{\"click\":function($event){_vm.isMenuOpen = !_vm.isMenuOpen}}},[_c('span',[_vm._v(_vm._s(_vm.player.name))]),(_vm.player.pronouns)?_c('font-awesome-icon',{attrs:{\"icon\":\"venus-mars\"}}):_vm._e(),(_vm.player.pronouns)?_c('div',{staticClass:\"pronouns\"},[_c('span',[_vm._v(_vm._s(_vm.player.pronouns))])]):_vm._e()],1),_c('transition',{attrs:{\"name\":\"fold\"}},[(_vm.isMenuOpen)?_c('ul',{staticClass:\"menu\"},[(\n !_vm.session.isSpectator ||\n (_vm.session.isSpectator && _vm.player.id === _vm.session.playerId)\n )?_c('li',{on:{\"click\":_vm.changePronouns}},[_c('font-awesome-icon',{attrs:{\"icon\":\"venus-mars\"}}),_vm._v(\"Change Pronouns \")],1):_vm._e(),(!_vm.session.isSpectator)?[_c('li',{on:{\"click\":_vm.changeName}},[_c('font-awesome-icon',{attrs:{\"icon\":\"user-edit\"}}),_vm._v(\"Rename \")],1),_c('li',{class:{ disabled: _vm.session.lockedVote },on:{\"click\":function($event){return _vm.movePlayer()}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"redo-alt\"}}),_vm._v(\" Move player \")],1),_c('li',{class:{ disabled: _vm.session.lockedVote },on:{\"click\":function($event){return _vm.swapPlayer()}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"exchange-alt\"}}),_vm._v(\" Swap seats \")],1),_c('li',{class:{ disabled: _vm.session.lockedVote },on:{\"click\":_vm.removePlayer}},[_c('font-awesome-icon',{attrs:{\"icon\":\"times-circle\"}}),_vm._v(\" Remove \")],1),(_vm.player.id && _vm.session.sessionId)?_c('li',{on:{\"click\":function($event){return _vm.updatePlayer('id', '', true)}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"chair\"}}),_vm._v(\" Empty seat \")],1):_vm._e(),(!_vm.session.nomination)?[_c('li',{on:{\"click\":function($event){return _vm.nominatePlayer()}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"hand-point-right\"}}),_vm._v(\" Nomination \")],1)]:_vm._e()]:_vm._e(),(_vm.session.isSpectator)?_c('li',{class:{ disabled: _vm.player.id && _vm.player.id !== _vm.session.playerId },on:{\"click\":_vm.claimSeat}},[_c('font-awesome-icon',{attrs:{\"icon\":\"chair\"}}),(!_vm.player.id)?[_vm._v(\" Claim seat \")]:(_vm.player.id === _vm.session.playerId)?[_vm._v(\" Vacate seat \")]:[_vm._v(\" Seat occupied\")]],2):_vm._e()],2):_vm._e()])],1),(_vm.player.reminders)?_vm._l((_vm.player.reminders),function(reminder){return _c('div',{key:reminder.role + ' ' + reminder.name,staticClass:\"reminder\",class:[reminder.role],on:{\"click\":function($event){return _vm.removeReminder(reminder)}}},[_c('span',{staticClass:\"icon\",style:({\n backgroundImage: (\"url(\" + (reminder.image && _vm.grimoire.isImageOptIn\n ? reminder.image\n : require('../assets/icons/' +\n (reminder.imageAlt || reminder.role) +\n '.png')) + \")\")\n })}),_c('span',{staticClass:\"text\"},[_vm._v(_vm._s(reminder.name))])])}):_vm._e(),_c('div',{staticClass:\"reminder add\",on:{\"click\":function($event){return _vm.$emit('trigger', ['openReminderModal'])}}},[_c('span',{staticClass:\"icon\"})]),_c('div',{staticClass:\"reminderHoverTarget\"})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"token\",class:[_vm.role.id],on:{\"click\":_vm.setRole}},[(_vm.role.id)?_c('span',{staticClass:\"icon\",style:({\n backgroundImage: (\"url(\" + (_vm.role.image && _vm.grimoire.isImageOptIn\n ? _vm.role.image\n : require('../assets/icons/' + (_vm.role.imageAlt || _vm.role.id) + '.png')) + \")\")\n })}):_vm._e(),(_vm.role.firstNight || _vm.role.firstNightReminder)?_c('span',{staticClass:\"leaf-left\"}):_vm._e(),(_vm.role.otherNight || _vm.role.otherNightReminder)?_c('span',{staticClass:\"leaf-right\"}):_vm._e(),(_vm.reminderLeaves)?_c('span',{class:['leaf-top' + _vm.reminderLeaves]}):_vm._e(),(_vm.role.setup)?_c('span',{staticClass:\"leaf-orange\"}):_vm._e(),_c('svg',{staticClass:\"name\",attrs:{\"viewBox\":\"0 0 150 150\"}},[_c('path',{attrs:{\"d\":\"M 13 75 C 13 160, 138 160, 138 75\",\"id\":\"curve\",\"fill\":\"transparent\"}}),_c('text',{staticClass:\"label mozilla\",attrs:{\"width\":\"150\",\"x\":\"66.6%\",\"text-anchor\":\"middle\",\"font-size\":_vm._f(\"nameToFontSize\")(_vm.role.name)}},[_c('textPath',{attrs:{\"xlink:href\":\"#curve\"}},[_vm._v(\" \"+_vm._s(_vm.role.name)+\" \")])])]),_c('div',{staticClass:\"edition\",class:[(\"edition-\" + (_vm.role.edition)), _vm.role.team]}),(_vm.role.ability)?_c('div',{staticClass:\"ability\"},[_vm._v(\" \"+_vm._s(_vm.role.ability)+\" \")]):_vm._e()])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n
\n \n \n \n \n \n \n \n
\n {{ role.ability }}\n
\n
\n\n\n\n\n\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Token.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Token.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Token.vue?vue&type=template&id=deec739a&scoped=true&\"\nimport script from \"./Token.vue?vue&type=script&lang=js&\"\nexport * from \"./Token.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Token.vue?vue&type=style&index=0&id=deec739a&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"deec739a\",\n null\n \n)\n\nexport default component.exports","\n
\n \n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RolesModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RolesModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./RolesModal.vue?vue&type=template&id=365502ca&scoped=true&\"\nimport script from \"./RolesModal.vue?vue&type=script&lang=js&\"\nexport * from \"./RolesModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./RolesModal.vue?vue&type=style&index=0&id=365502ca&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"365502ca\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.modals.edition)?_c('Modal',{staticClass:\"editions\",on:{\"close\":function($event){return _vm.toggleModal('edition')}}},[(!_vm.isCustom)?_c('div',[_c('h3',[_vm._v(\"Select an edition:\")]),_c('ul',{staticClass:\"editions\"},[_vm._l((_vm.editions),function(edition){return _c('li',{key:edition.id,staticClass:\"edition\",class:['edition-' + edition.id],style:({\n backgroundImage: (\"url(\" + (require('../../assets/editions/' +\n edition.id +\n '.png')) + \")\")\n }),on:{\"click\":function($event){return _vm.setEdition(edition)}}},[_vm._v(\" \"+_vm._s(edition.name)+\" \")])}),_c('li',{staticClass:\"edition edition-custom\",style:({\n backgroundImage: (\"url(\" + (require('../../assets/editions/custom.png')) + \")\")\n }),on:{\"click\":function($event){_vm.isCustom = true}}},[_vm._v(\" Custom Script / Characters \")])],2)]):_c('div',{staticClass:\"custom\"},[_c('h3',[_vm._v(\"Load custom script / characters\")]),_vm._v(\" To play with a custom script, you need to select the characters you want to play with in the official \"),_c('a',{attrs:{\"href\":\"https://script.bloodontheclocktower.com/\",\"target\":\"_blank\"}},[_vm._v(\"Script Tool\")]),_vm._v(\" and then upload the generated \\\"custom-list.json\\\" either directly here or provide a URL to such a hosted JSON file.\"),_c('br'),_c('br'),_vm._v(\" To play with custom characters, please read \"),_c('a',{attrs:{\"href\":\"https://github.com/bra1n/townsquare#custom-characters\",\"target\":\"_blank\"}},[_vm._v(\"the documentation\")]),_vm._v(\" on how to write a custom character definition file. \"),_c('b',[_vm._v(\"Only load custom JSON files from sources that you trust!\")]),_c('h3',[_vm._v(\"Some popular custom scripts:\")]),_c('ul',{staticClass:\"scripts\"},_vm._l((_vm.scripts),function(script,index){return _c('li',{key:index,on:{\"click\":function($event){return _vm.handleURL(script[1])}}},[_vm._v(\" \"+_vm._s(script[0])+\" \")])}),0),_c('input',{ref:\"upload\",attrs:{\"type\":\"file\",\"accept\":\"application/json\"},on:{\"change\":_vm.handleUpload}}),_c('div',{staticClass:\"button-group\"},[_c('div',{staticClass:\"button\",on:{\"click\":_vm.openUpload}},[_c('font-awesome-icon',{attrs:{\"icon\":\"file-upload\"}}),_vm._v(\" Upload JSON \")],1),_c('div',{staticClass:\"button\",on:{\"click\":_vm.promptURL}},[_c('font-awesome-icon',{attrs:{\"icon\":\"link\"}}),_vm._v(\" Enter URL \")],1),_c('div',{staticClass:\"button\",on:{\"click\":function($event){_vm.isCustom = false}}},[_c('font-awesome-icon',{attrs:{\"icon\":\"undo\"}}),_vm._v(\" Back \")],1)])])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n
\n
Select an edition:
\n
\n
\n {{ edition.name }}\n
\n
\n Custom Script / Characters\n
\n
\n
\n
\n
Load custom script / characters
\n To play with a custom script, you need to select the characters you want\n to play with in the official\n Script Tool\n and then upload the generated \"custom-list.json\" either directly here or\n provide a URL to such a hosted JSON file. \n \n To play with custom characters, please read\n the documentation\n on how to write a custom character definition file.\n Only load custom JSON files from sources that you trust!\n
Some popular custom scripts:
\n
\n
\n {{ script[0] }}\n
\n
\n \n
\n
\n Upload JSON\n
\n
\n Enter URL\n
\n
\n Back\n
\n
\n
\n \n\n\n\n\n\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditionModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditionModal.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./EditionModal.vue?vue&type=template&id=7c2292c2&scoped=true&\"\nimport script from \"./EditionModal.vue?vue&type=script&lang=js&\"\nexport * from \"./EditionModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./EditionModal.vue?vue&type=style&index=0&id=7c2292c2&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7c2292c2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"intro\"},[_c('img',{attrs:{\"src\":\"static/apple-icon.png\",\"alt\":\"\"}}),_vm._v(\" Welcome to the (unofficial) \"),_c('b',[_vm._v(\"Virtual Town Square and Grimoire\")]),_vm._v(\" for Blood on the Clocktower! Please add more players through the \"),_c('span',{staticClass:\"button\",on:{\"click\":_vm.toggleMenu}},[_c('font-awesome-icon',{attrs:{\"icon\":\"cog\"}}),_vm._v(\" Menu \")],1),_vm._v(\" on the top right or by pressing \"),_c('b',[_vm._v(\"[A]\")]),_vm._v(\". You can also join a game session by pressing \"),_c('b',[_vm._v(\"[J]\")]),_vm._v(\".\"),_c('br'),_vm._m(0)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"footer\"},[_vm._v(\" This project is free and open source and can be found on \"),_c('a',{attrs:{\"href\":\"https://github.com/bra1n/townsquare\",\"target\":\"_blank\"}},[_vm._v(\"GitHub\")]),_vm._v(\". It is not affiliated with The Pandemonium Institute. \\\"Blood on the Clocktower\\\" is a trademark of Steven Medway and The Pandemonium Institute. \")])}]\n\nexport { render, staticRenderFns }","\n
\n \n Welcome to the (unofficial)\n Virtual Town Square and Grimoire for Blood on the Clocktower! Please\n add more players through the\n \n Menu\n \n on the top right or by pressing [A]. You can also join a game session\n by pressing [J]. \n \n