diff --git a/src/App.vue b/src/App.vue
index 6fd7a35..f261468 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -18,6 +18,7 @@
+
@@ -39,9 +40,11 @@ import ReferenceModal from "./components/modals/ReferenceModal";
import Vote from "./components/Vote";
import Gradients from "./components/Gradients";
import NightOrderModal from "./components/modals/NightOrderModal";
+import FabledModal from "@/components/modals/FabledModal";
export default {
components: {
+ FabledModal,
NightOrderModal,
Vote,
ReferenceModal,
diff --git a/src/components/Menu.vue b/src/components/Menu.vue
index 481154e..f4cafb4 100644
--- a/src/components/Menu.vue
+++ b/src/components/Menu.vue
@@ -54,6 +54,10 @@
]"
/>
+
+ Add Fabled
+
+
Zoom
diff --git a/src/components/Player.vue b/src/components/Player.vue
index 29ae30e..792c60e 100644
--- a/src/components/Player.vue
+++ b/src/components/Player.vue
@@ -542,7 +542,7 @@ li.move:not(.from) .player .overlay svg.move {
pointer-events: all;
}
-/****** Vote icon ********/
+/****** Vote icon ********/
.player .has-vote {
position: absolute;
right: 2px;
@@ -558,6 +558,7 @@ li.move:not(.from) .player .overlay svg.move {
}
}
+/****** Session seat glow *****/
@mixin glow($name, $color) {
@keyframes #{$name}-glow {
0% {
diff --git a/src/components/Token.vue b/src/components/Token.vue
index 9315694..d12e997 100644
--- a/src/components/Token.vue
+++ b/src/components/Token.vue
@@ -67,6 +67,8 @@ export default {
diff --git a/src/components/modals/FabledModal.vue b/src/components/modals/FabledModal.vue
new file mode 100644
index 0000000..b8630b9
--- /dev/null
+++ b/src/components/modals/FabledModal.vue
@@ -0,0 +1,61 @@
+
+
+
+ Choose a fabled character to add to the game
+
+
+
+
+
+
+
+
diff --git a/src/components/modals/ReminderModal.vue b/src/components/modals/ReminderModal.vue
index 036258c..fd4c123 100644
--- a/src/components/modals/ReminderModal.vue
+++ b/src/components/modals/ReminderModal.vue
@@ -59,6 +59,16 @@ export default {
];
}
});
+ this.$store.state.grimoire.fabled.forEach(role => {
+ reminders = [
+ ...reminders,
+ ...role.reminders.map(name => ({
+ role: role.id,
+ image: role.image,
+ name
+ }))
+ ];
+ });
reminders.push({ role: "good", name: "Good" });
reminders.push({ role: "evil", name: "Evil" });
reminders.push({ role: "custom", name: "Custom note" });
diff --git a/src/main.js b/src/main.js
index 8549216..4c2bac5 100644
--- a/src/main.js
+++ b/src/main.js
@@ -17,6 +17,7 @@ const faIcons = [
"Cog",
"Copy",
"Dice",
+ "Dragon",
"ExchangeAlt",
"FileUpload",
"HandPointRight",
diff --git a/src/store/index.js b/src/store/index.js
index 2f08901..9c9578b 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -61,12 +61,13 @@ export default new Vuex.Store({
fabled: []
},
modals: {
- reference: false,
edition: false,
- roles: false,
- role: false,
+ fabled: false,
+ nightOrder: false,
+ reference: false,
reminder: false,
- nightOrder: false
+ role: false,
+ roles: false
},
edition: "tb",
roles: getRolesByEdition(),
@@ -130,6 +131,13 @@ export default new Vuex.Store({
grimoire.bluffs = [];
}
},
+ setFabled({ grimoire }, { index, fabled } = {}) {
+ if (index !== undefined) {
+ grimoire.fabled.splice(index, 1);
+ } else {
+ grimoire.fabled.push(fabled);
+ }
+ },
toggleModal({ modals }, name) {
if (name) {
modals[name] = !modals[name];
diff --git a/src/store/persistence.js b/src/store/persistence.js
index 24b37cc..4235267 100644
--- a/src/store/persistence.js
+++ b/src/store/persistence.js
@@ -24,6 +24,13 @@ module.exports = store => {
});
});
}
+ if (localStorage.fabled !== undefined) {
+ JSON.parse(localStorage.fabled).forEach(role => {
+ store.commit("setFabled", {
+ fabled: store.state.fabled.get(role) || {}
+ });
+ });
+ }
if (localStorage.players) {
store.commit(
"players/set",
@@ -87,6 +94,12 @@ module.exports = store => {
JSON.stringify(state.grimoire.bluffs.map(({ id }) => id))
);
break;
+ case "setFabled":
+ localStorage.setItem(
+ "fabled",
+ JSON.stringify(state.grimoire.fabled.map(({ id }) => id))
+ );
+ break;
case "players/add":
case "players/update":
case "players/remove":