narrat 0.9.2 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +273 -0
- package/LICENSE +21 -21
- package/README.md +30 -30
- package/lib/app.vue.d.ts +2 -1
- package/lib/components/MainMenu.vue.d.ts +1 -0
- package/lib/components/Skills.vue.d.ts +4 -0
- package/lib/dialog-box.vue.d.ts +1 -0
- package/lib/index.esm.js +400 -122
- package/lib/index.js +399 -121
- package/lib/utils/logger.d.ts +9 -5
- package/lib/utils/skillchecks.d.ts +18 -0
- package/package.json +85 -84
package/lib/index.esm.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
// Version: 0.
|
|
1
|
+
// Version: 0.10.0 - June 8, 2022 02:13:08
|
|
2
2
|
import 'es6-promise/auto';
|
|
3
|
-
import { ref, reactive, readonly, defineComponent, openBlock, createElementBlock, normalizeStyle, createElementVNode, createCommentVNode, Fragment, renderList, createBlock, Transition, withCtx,
|
|
3
|
+
import { ref, reactive, readonly, defineComponent, openBlock, createElementBlock, normalizeStyle, createElementVNode, createCommentVNode, Fragment, renderList, normalizeClass, createBlock, Transition, withCtx, renderSlot, createTextVNode, resolveComponent, withDirectives, vModelText, toDisplayString, TransitionGroup, createVNode, createApp } from 'vue';
|
|
4
4
|
import { createLogger, createStore } from 'vuex';
|
|
5
5
|
|
|
6
6
|
function styleInject(css, ref) {
|
|
@@ -30,7 +30,7 @@ function styleInject(css, ref) {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
|
|
33
|
-
var css_248z = "/*! @import */\n\n/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */\n\n/*\nDocument\n========\n*/\n\n/**\nUse a better box model (opinionated).\n*/\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n/**\nUse a more readable tab size (opinionated).\n*/\n\n:root {\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n}\n\n/**\n1. Correct the line height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n*/\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/*\nSections\n========\n*/\n\n/**\nRemove the margin in all browsers.\n*/\n\nbody {\n margin: 0;\n}\n\n/**\nImprove consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n*/\n\nbody {\n font-family:\n\t\tsystem-ui,\n\t\t-apple-system, /* Firefox supports this but not yet `system-ui` */\n\t\t'Segoe UI',\n\t\tRoboto,\n\t\tHelvetica,\n\t\tArial,\n\t\tsans-serif,\n\t\t'Apple Color Emoji',\n\t\t'Segoe UI Emoji';\n}\n\n/*\nGrouping content\n================\n*/\n\n/**\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n}\n\n/*\nText-level semantics\n====================\n*/\n\n/**\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr[title] {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/**\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n2. Correct the odd 'em' font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family:\n\t\tui-monospace,\n\t\tSFMono-Regular,\n\t\tConsolas,\n\t\t'Liberation Mono',\n\t\tMenlo,\n\t\tmonospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/**\nPrevent 'sub' and 'sup' elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\nTabular data\n============\n*/\n\n/**\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n}\n\n/*\nForms\n=====\n*/\n\n/**\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\nRemove the inheritance of text transform in Edge and Firefox.\n1. Remove the inheritance of text transform in Firefox.\n*/\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\nCorrect the inability to style clickable types in iOS and Safari.\n*/\n\nbutton,\n[type='button'],\n[type='reset'] {\n -webkit-appearance: button;\n}\n\n/**\nRemove the inner border and padding in Firefox.\n*/\n\n/**\nRestore the focus styles unset by the previous rule.\n*/\n\n/**\nRemove the additional ':invalid' styles in Firefox.\nSee: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737\n*/\n\n/**\nRemove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.\n*/\n\nlegend {\n padding: 0;\n}\n\n/**\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n/**\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n/**\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to 'inherit' in Safari.\n*/\n\n/*\nInteractive\n===========\n*/\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/**\n * Manually forked from SUIT CSS Base: https://github.com/suitcss/base\n * A thin layer on top of normalize.css that provides a starting point more\n * suitable for web applications.\n */\n\n/**\n * Removes the default spacing and border for appropriate elements.\n */\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nbutton {\n background-color: transparent;\n background-image: none;\n}\n\n/**\n * Work around a Firefox/IE bug where the transparent `button` background\n * results in a loss of the default `button` focus styles.\n */\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nol,\nul {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/**\n * Tailwind custom reset styles\n */\n\n/**\n * 1. Use the user's configured `sans` font-family (with Tailwind's default\n * sans-serif font stack as a fallback) as a sane default.\n * 2. Use Tailwind's default \"normal\" line-height so the user isn't forced\n * to override it to ensure consistency even when using the default theme.\n */\n\nhtml {\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; /* 1 */\n line-height: 1.5; /* 2 */\n}\n\n/**\n * Inherit font-family and line-height from `html` so users can set them as\n * a class directly on the `html` element.\n */\n\nbody {\n font-family: inherit;\n line-height: inherit;\n}\n\n/**\n * 1. Prevent padding and border from affecting element width.\n *\n * We used to set this in the html element and inherit from\n * the parent element for everything else. This caused issues\n * in shadow-dom-enhanced elements like <details> where the content\n * is wrapped by a div with box-sizing set to `content-box`.\n *\n * https://github.com/mozdevs/cssremedy/issues/4\n *\n *\n * 2. Allow adding a border to an element by just adding a border-width.\n *\n * By default, the way the browser specifies that an element should have no\n * border is by setting it's border-style to `none` in the user-agent\n * stylesheet.\n *\n * In order to easily add borders to elements by just setting the `border-width`\n * property, we change the default border-style for all elements to `solid`, and\n * use border-width to hide them instead. This way our `border` utilities only\n * need to set the `border-width` property instead of the entire `border`\n * shorthand, making our border utilities much more straightforward to compose.\n *\n * https://github.com/tailwindcss/tailwindcss/pull/116\n */\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n\n/*\n * Ensure horizontal rules are visible by default\n */\n\nhr {\n border-top-width: 1px;\n}\n\n/**\n * Undo the `border-style: none` reset that Normalize applies to images so that\n * our `border-{width}` utilities have the expected effect.\n *\n * The Normalize reset is unnecessary for us since we default the border-width\n * to 0 on all elements.\n *\n * https://github.com/tailwindcss/tailwindcss/issues/362\n */\n\nimg {\n border-style: solid;\n}\n\ntextarea {\n resize: vertical;\n}\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n color: #9ca3af;\n}\n\ninput:-ms-input-placeholder, textarea:-ms-input-placeholder {\n color: #9ca3af;\n}\n\ninput::placeholder,\ntextarea::placeholder {\n color: #9ca3af;\n}\n\nbutton {\n cursor: pointer;\n}\n\ntable {\n border-collapse: collapse;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/**\n * Reset links to optimize for opt-in styling instead of\n * opt-out.\n */\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/**\n * Reset form element properties that are easy to forget to\n * style explicitly so you don't inadvertently introduce\n * styles that deviate from your design system. These styles\n * supplement a partial reset that is already applied by\n * normalize.css.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n padding: 0;\n line-height: inherit;\n color: inherit;\n}\n\n/**\n * Use the configured 'mono' font family for elements that\n * are expected to be rendered with a monospace font, falling\n * back to the system monospace stack if there is no configured\n * 'mono' font family.\n */\n\npre,\ncode,\nkbd,\nsamp {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n/**\n * Make replaced elements `display: block` by default as that's\n * the behavior you want almost all of the time. Inspired by\n * CSS Remedy, with `svg` added as well.\n *\n * https://github.com/mozdevs/cssremedy/issues/14\n */\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block;\n vertical-align: middle;\n}\n\n/**\n * Constrain images and videos to the parent width and preserve\n * their instrinsic aspect ratio.\n *\n * https://github.com/mozdevs/cssremedy/issues/14\n */\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n.container {\n width: 100%;\n}\n\n@media (min-width: 640px) {\n .container {\n max-width: 640px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n max-width: 768px;\n }\n}\n\n@media (min-width: 1024px) {\n .container {\n max-width: 1024px;\n }\n}\n\n@media (min-width: 1280px) {\n .container {\n max-width: 1280px;\n }\n}\n\n@media (min-width: 1536px) {\n .container {\n max-width: 1536px;\n }\n}\n\n.bg-gray-800 {\n --tw-bg-opacity: 1;\n background-color: rgba(31, 41, 55, var(--tw-bg-opacity));\n}\n\n.border {\n border-width: 1px;\n}\n\n.flex {\n display: flex;\n}\n\n.table {\n display: table;\n}\n\n.grid {\n display: grid;\n}\n\n.hidden {\n display: none;\n}\n\n.flex-row {\n flex-direction: row;\n}\n\n.flex-col {\n flex-direction: column;\n}\n\n.flex-grow {\n flex-grow: 1;\n}\n\n.flex-shrink {\n flex-shrink: 1;\n}\n\n.list-disc {\n list-style-type: disc;\n}\n\n.absolute {\n position: absolute;\n}\n\n.resize {\n resize: both;\n}\n\n* {\n --tw-shadow: 0 0 #0000;\n}\n\n* {\n --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgba(59, 130, 246, 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n}\n\n.table-auto {\n table-layout: auto;\n}\n\n.line-through {\n text-decoration: line-through;\n}\n\n.w-full {\n width: 100%;\n}\n\n.gap-4 {\n gap: 1rem;\n}\n\n.grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n}\n\n.transform {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.transition {\n transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n@-webkit-keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@-webkit-keyframes ping {\n 75%, 100% {\n transform: scale(2);\n opacity: 0;\n }\n}\n\n@keyframes ping {\n 75%, 100% {\n transform: scale(2);\n opacity: 0;\n }\n}\n\n@-webkit-keyframes pulse {\n 50% {\n opacity: .5;\n }\n}\n\n@keyframes pulse {\n 50% {\n opacity: .5;\n }\n}\n\n@-webkit-keyframes bounce {\n 0%, 100% {\n transform: translateY(-25%);\n -webkit-animation-timing-function: cubic-bezier(0.8,0,1,1);\n animation-timing-function: cubic-bezier(0.8,0,1,1);\n }\n\n 50% {\n transform: none;\n -webkit-animation-timing-function: cubic-bezier(0,0,0.2,1);\n animation-timing-function: cubic-bezier(0,0,0.2,1);\n }\n}\n\n@keyframes bounce {\n 0%, 100% {\n transform: translateY(-25%);\n -webkit-animation-timing-function: cubic-bezier(0.8,0,1,1);\n animation-timing-function: cubic-bezier(0.8,0,1,1);\n }\n\n 50% {\n transform: none;\n -webkit-animation-timing-function: cubic-bezier(0,0,0.2,1);\n animation-timing-function: cubic-bezier(0,0,0.2,1);\n }\n}\n\n:root {\n --bg-color: #131720;\n --text-color: #d9e1f2;\n --primary: hsl(255, 30%, 55%);\n --focus: hsl(210, 90%, 50%);\n --secondary: #42b983;\n --border-color: hsla(0, 0%, 100%, 0.2);\n --light-1: hsl(210, 30%, 40%);\n --light-2: hsl(255, 30%, 50%);\n --light-background: linear-gradient(to right, var(--light-1), var(--light-2));\n --shadow-1: hsla(236, 50%, 50%, 0.3);\n --shadow-2: hsla(236, 50%, 50%, 0.4);\n --hud-background: rgba(0, 0, 0, 0.4);\n --hud-text-color: var(--text-color);\n --notifications-bg: darkslateblue;\n --skills-text-background: rgba(0, 0, 0, 0.5);\n --skills-text-color: var(--text-color);\n --skills-level-background: rgba(0, 0, 0, 0.5);\n --skills-level-color: orange;\n}\n\n.list-item {\n display: inline-block;\n margin-right: 10px;\n}\n\n.list-enter-active,\r\n.list-leave-active {\n transition: all 0.3s ease;\n}\n\n/* .list-move {\r\n transition: transform 0.3s ease;\r\n} */\n\n.list-enter-from,\r\n.list-leave-to {\n opacity: 0;\n transform: translateX(300px);\n}\n\n.notification-item {\n display: inline-block;\n margin-right: 10px;\n}\n\n.notification-enter-active,\r\n.notification-leave-active {\n transition: all 0.3s ease;\n}\n\n/* .notification-move {\r\n transition: transform 0.3s ease;\r\n} */\n\n.notification-enter-from,\r\n.notification-leave-to {\n opacity: 0;\n transform: translateY(-300px);\n}\n\n.fade-enter-active,\r\n.fade-leave-active {\n transition: opacity 0.3s ease;\n}\n\n.fade-enter-from,\r\n.fade-leave-to {\n opacity: 0;\n}\n\n.fade-in-enter-active {\n transition: opacity 0.1s ease;\n}\n\n.fade-in-enter-from {\n opacity: 0;\n}\n\nbody {\n padding: 0;\n margin: 0;\n font-family: Arial, sans-serif;\n background-color: black;\n}\n\n.select {\n background: var(--light-background);\n padding: 10px;\n}\n\n.option {\n background-color: var(--light-2);\n padding: 5px;\n color: var(--text-color);\n}\n\n.button {\n background: var(--light-background);\n color: var(--text-color);\n box-shadow: 0.4rem 0.4rem 2.4rem 0.2rem var(--shadow-1);\n border-radius: 100px;\n padding: 10px;\n font-weight: 800;\n font-size: 16px;\n margin: 10px;\n transition: 0.2s;\n}\n\n.button:focus,\r\n.button:hover {\n transform: translateY(-0.2rem);\n box-shadow: 0 0 2.4rem 0.2rem var(--shadow-2);\n}\n\n.input {\n background: var(--light-background);\n color: var(--text-color);\n box-shadow: 0.4rem 0.4rem 2.4rem 0.2rem var(--shadow-1);\n border-radius: 100px;\n padding: 10px;\n font-weight: 800;\n font-size: 16px;\n margin: 10px;\n transition: 0.2s;\n}\n\n.input:focus,\r\n.input:hover {\n transform: translateY(-0.2rem);\n box-shadow: 0 0 2.4rem 0.2rem var(--shadow-2);\n}\n\na {\n color: pink;\n text-decoration: underline;\n}\n\nth,\r\ntd {\n padding: 4px;\n border: 1px solid var(--text-color);\n text-align: center;\n}\n\n#game-holder {\n width: 100vw;\n height: 100vh;\n padding: 0;\n margin: 0;\n top: 0;\n left: 0;\n background-color: black;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: -webkit-fill-available;\n}\n\n.title {\n font-size: 30px;\n font-weight: 700;\n text-align: center;\n}\n\n.container {\n padding: 20px;\n}\n\nh1,\r\nh2,\r\nh3,\r\nh4 {\n font-weight: 700;\n}\n\nh1 {\n font-size: 30px;\n}\n\nh2 {\n font-size: 26px;\n}\n\nh3 {\n font-size: 24px;\n}\n\nhr.solid {\n border: 1px solid var(--text-color);\n margin-top: 30px;\n margin-bottom: 30px;\n}\n\n.card-1 {\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);\n transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);\n}\n\n.card-1:hover {\n box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);\n}\n\n.card-2 {\n box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);\n}\n\n.card-3 {\n box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);\n}\n\n.card-4 {\n box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);\n}\n\n.card-5 {\n box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.22);\n}\n\n@media (min-width: 640px) {\n}\n\n@media (min-width: 768px) {\n}\n\n@media (min-width: 1024px) {\n}\n\n@media (min-width: 1280px) {\n}\n\n@media (min-width: 1536px) {\n}\r\n";
|
|
33
|
+
var css_248z = "/*! @import */\n\n/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */\n\n/*\nDocument\n========\n*/\n\n/**\nUse a better box model (opinionated).\n*/\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n/**\nUse a more readable tab size (opinionated).\n*/\n\n:root {\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n}\n\n/**\n1. Correct the line height in all browsers.\n2. Prevent adjustments of font size after orientation changes in iOS.\n*/\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/*\nSections\n========\n*/\n\n/**\nRemove the margin in all browsers.\n*/\n\nbody {\n margin: 0;\n}\n\n/**\nImprove consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n*/\n\nbody {\n font-family:\n\t\tsystem-ui,\n\t\t-apple-system, /* Firefox supports this but not yet `system-ui` */\n\t\t'Segoe UI',\n\t\tRoboto,\n\t\tHelvetica,\n\t\tArial,\n\t\tsans-serif,\n\t\t'Apple Color Emoji',\n\t\t'Segoe UI Emoji';\n}\n\n/*\nGrouping content\n================\n*/\n\n/**\n1. Add the correct height in Firefox.\n2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)\n*/\n\nhr {\n height: 0; /* 1 */\n color: inherit; /* 2 */\n}\n\n/*\nText-level semantics\n====================\n*/\n\n/**\nAdd the correct text decoration in Chrome, Edge, and Safari.\n*/\n\nabbr[title] {\n -webkit-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\n\n/**\nAdd the correct font weight in Edge and Safari.\n*/\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)\n2. Correct the odd 'em' font sizing in all browsers.\n*/\n\ncode,\nkbd,\nsamp,\npre {\n font-family:\n\t\tui-monospace,\n\t\tSFMono-Regular,\n\t\tConsolas,\n\t\t'Liberation Mono',\n\t\tMenlo,\n\t\tmonospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\nAdd the correct font size in all browsers.\n*/\n\nsmall {\n font-size: 80%;\n}\n\n/**\nPrevent 'sub' and 'sup' elements from affecting the line height in all browsers.\n*/\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/*\nTabular data\n============\n*/\n\n/**\n1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)\n2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)\n*/\n\ntable {\n text-indent: 0; /* 1 */\n border-color: inherit; /* 2 */\n}\n\n/*\nForms\n=====\n*/\n\n/**\n1. Change the font styles in all browsers.\n2. Remove the margin in Firefox and Safari.\n*/\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\nRemove the inheritance of text transform in Edge and Firefox.\n1. Remove the inheritance of text transform in Firefox.\n*/\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\nCorrect the inability to style clickable types in iOS and Safari.\n*/\n\nbutton,\n[type='button'],\n[type='reset'] {\n -webkit-appearance: button;\n}\n\n/**\nRemove the inner border and padding in Firefox.\n*/\n\n/**\nRestore the focus styles unset by the previous rule.\n*/\n\n/**\nRemove the additional ':invalid' styles in Firefox.\nSee: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737\n*/\n\n/**\nRemove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.\n*/\n\nlegend {\n padding: 0;\n}\n\n/**\nAdd the correct vertical alignment in Chrome and Firefox.\n*/\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\nCorrect the cursor style of increment and decrement buttons in Safari.\n*/\n\n/**\n1. Correct the odd appearance in Chrome and Safari.\n2. Correct the outline style in Safari.\n*/\n\n[type='search'] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\nRemove the inner padding in Chrome and Safari on macOS.\n*/\n\n/**\n1. Correct the inability to style clickable types in iOS and Safari.\n2. Change font properties to 'inherit' in Safari.\n*/\n\n/*\nInteractive\n===========\n*/\n\n/*\nAdd the correct display in Chrome and Safari.\n*/\n\nsummary {\n display: list-item;\n}\n\n/**\n * Manually forked from SUIT CSS Base: https://github.com/suitcss/base\n * A thin layer on top of normalize.css that provides a starting point more\n * suitable for web applications.\n */\n\n/**\n * Removes the default spacing and border for appropriate elements.\n */\n\nblockquote,\ndl,\ndd,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\nhr,\nfigure,\np,\npre {\n margin: 0;\n}\n\nbutton {\n background-color: transparent;\n background-image: none;\n}\n\n/**\n * Work around a Firefox/IE bug where the transparent `button` background\n * results in a loss of the default `button` focus styles.\n */\n\nbutton:focus {\n outline: 1px dotted;\n outline: 5px auto -webkit-focus-ring-color;\n}\n\nfieldset {\n margin: 0;\n padding: 0;\n}\n\nol,\nul {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n\n/**\n * Tailwind custom reset styles\n */\n\n/**\n * 1. Use the user's configured `sans` font-family (with Tailwind's default\n * sans-serif font stack as a fallback) as a sane default.\n * 2. Use Tailwind's default \"normal\" line-height so the user isn't forced\n * to override it to ensure consistency even when using the default theme.\n */\n\nhtml {\n font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"; /* 1 */\n line-height: 1.5; /* 2 */\n}\n\n/**\n * Inherit font-family and line-height from `html` so users can set them as\n * a class directly on the `html` element.\n */\n\nbody {\n font-family: inherit;\n line-height: inherit;\n}\n\n/**\n * 1. Prevent padding and border from affecting element width.\n *\n * We used to set this in the html element and inherit from\n * the parent element for everything else. This caused issues\n * in shadow-dom-enhanced elements like <details> where the content\n * is wrapped by a div with box-sizing set to `content-box`.\n *\n * https://github.com/mozdevs/cssremedy/issues/4\n *\n *\n * 2. Allow adding a border to an element by just adding a border-width.\n *\n * By default, the way the browser specifies that an element should have no\n * border is by setting it's border-style to `none` in the user-agent\n * stylesheet.\n *\n * In order to easily add borders to elements by just setting the `border-width`\n * property, we change the default border-style for all elements to `solid`, and\n * use border-width to hide them instead. This way our `border` utilities only\n * need to set the `border-width` property instead of the entire `border`\n * shorthand, making our border utilities much more straightforward to compose.\n *\n * https://github.com/tailwindcss/tailwindcss/pull/116\n */\n\n*,\n::before,\n::after {\n box-sizing: border-box; /* 1 */\n border-width: 0; /* 2 */\n border-style: solid; /* 2 */\n border-color: #e5e7eb; /* 2 */\n}\n\n/*\n * Ensure horizontal rules are visible by default\n */\n\nhr {\n border-top-width: 1px;\n}\n\n/**\n * Undo the `border-style: none` reset that Normalize applies to images so that\n * our `border-{width}` utilities have the expected effect.\n *\n * The Normalize reset is unnecessary for us since we default the border-width\n * to 0 on all elements.\n *\n * https://github.com/tailwindcss/tailwindcss/issues/362\n */\n\nimg {\n border-style: solid;\n}\n\ntextarea {\n resize: vertical;\n}\n\ninput::-moz-placeholder, textarea::-moz-placeholder {\n color: #9ca3af;\n}\n\ninput:-ms-input-placeholder, textarea:-ms-input-placeholder {\n color: #9ca3af;\n}\n\ninput::placeholder,\ntextarea::placeholder {\n color: #9ca3af;\n}\n\nbutton {\n cursor: pointer;\n}\n\ntable {\n border-collapse: collapse;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n font-size: inherit;\n font-weight: inherit;\n}\n\n/**\n * Reset links to optimize for opt-in styling instead of\n * opt-out.\n */\n\na {\n color: inherit;\n text-decoration: inherit;\n}\n\n/**\n * Reset form element properties that are easy to forget to\n * style explicitly so you don't inadvertently introduce\n * styles that deviate from your design system. These styles\n * supplement a partial reset that is already applied by\n * normalize.css.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n padding: 0;\n line-height: inherit;\n color: inherit;\n}\n\n/**\n * Use the configured 'mono' font family for elements that\n * are expected to be rendered with a monospace font, falling\n * back to the system monospace stack if there is no configured\n * 'mono' font family.\n */\n\npre,\ncode,\nkbd,\nsamp {\n font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n/**\n * Make replaced elements `display: block` by default as that's\n * the behavior you want almost all of the time. Inspired by\n * CSS Remedy, with `svg` added as well.\n *\n * https://github.com/mozdevs/cssremedy/issues/14\n */\n\nimg,\nsvg,\nvideo,\ncanvas,\naudio,\niframe,\nembed,\nobject {\n display: block;\n vertical-align: middle;\n}\n\n/**\n * Constrain images and videos to the parent width and preserve\n * their instrinsic aspect ratio.\n *\n * https://github.com/mozdevs/cssremedy/issues/14\n */\n\nimg,\nvideo {\n max-width: 100%;\n height: auto;\n}\n\n.container {\n width: 100%;\n}\n\n@media (min-width: 640px) {\n .container {\n max-width: 640px;\n }\n}\n\n@media (min-width: 768px) {\n .container {\n max-width: 768px;\n }\n}\n\n@media (min-width: 1024px) {\n .container {\n max-width: 1024px;\n }\n}\n\n@media (min-width: 1280px) {\n .container {\n max-width: 1280px;\n }\n}\n\n@media (min-width: 1536px) {\n .container {\n max-width: 1536px;\n }\n}\n\n.bg-gray-800 {\n --tw-bg-opacity: 1;\n background-color: rgba(31, 41, 55, var(--tw-bg-opacity));\n}\n\n.border {\n border-width: 1px;\n}\n\n.flex {\n display: flex;\n}\n\n.table {\n display: table;\n}\n\n.grid {\n display: grid;\n}\n\n.hidden {\n display: none;\n}\n\n.flex-row {\n flex-direction: row;\n}\n\n.flex-col {\n flex-direction: column;\n}\n\n.flex-grow {\n flex-grow: 1;\n}\n\n.flex-shrink {\n flex-shrink: 1;\n}\n\n.list-disc {\n list-style-type: disc;\n}\n\n.absolute {\n position: absolute;\n}\n\n.resize {\n resize: both;\n}\n\n* {\n --tw-shadow: 0 0 #0000;\n}\n\n* {\n --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/);\n --tw-ring-offset-width: 0px;\n --tw-ring-offset-color: #fff;\n --tw-ring-color: rgba(59, 130, 246, 0.5);\n --tw-ring-offset-shadow: 0 0 #0000;\n --tw-ring-shadow: 0 0 #0000;\n}\n\n.table-auto {\n table-layout: auto;\n}\n\n.line-through {\n text-decoration: line-through;\n}\n\n.w-full {\n width: 100%;\n}\n\n.gap-4 {\n gap: 1rem;\n}\n\n.grid-cols-3 {\n grid-template-columns: repeat(3, minmax(0, 1fr));\n}\n\n.transform {\n --tw-translate-x: 0;\n --tw-translate-y: 0;\n --tw-rotate: 0;\n --tw-skew-x: 0;\n --tw-skew-y: 0;\n --tw-scale-x: 1;\n --tw-scale-y: 1;\n transform: translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));\n}\n\n.transition {\n transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform;\n transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);\n transition-duration: 150ms;\n}\n\n@-webkit-keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@keyframes spin {\n to {\n transform: rotate(360deg);\n }\n}\n\n@-webkit-keyframes ping {\n 75%, 100% {\n transform: scale(2);\n opacity: 0;\n }\n}\n\n@keyframes ping {\n 75%, 100% {\n transform: scale(2);\n opacity: 0;\n }\n}\n\n@-webkit-keyframes pulse {\n 50% {\n opacity: .5;\n }\n}\n\n@keyframes pulse {\n 50% {\n opacity: .5;\n }\n}\n\n@-webkit-keyframes bounce {\n 0%, 100% {\n transform: translateY(-25%);\n -webkit-animation-timing-function: cubic-bezier(0.8,0,1,1);\n animation-timing-function: cubic-bezier(0.8,0,1,1);\n }\n\n 50% {\n transform: none;\n -webkit-animation-timing-function: cubic-bezier(0,0,0.2,1);\n animation-timing-function: cubic-bezier(0,0,0.2,1);\n }\n}\n\n@keyframes bounce {\n 0%, 100% {\n transform: translateY(-25%);\n -webkit-animation-timing-function: cubic-bezier(0.8,0,1,1);\n animation-timing-function: cubic-bezier(0.8,0,1,1);\n }\n\n 50% {\n transform: none;\n -webkit-animation-timing-function: cubic-bezier(0,0,0.2,1);\n animation-timing-function: cubic-bezier(0,0,0.2,1);\n }\n}\n\n:root {\n --bg-color: #131720;\n --text-color: #d9e1f2;\n --primary: hsl(255, 30%, 55%);\n --focus: hsl(210, 90%, 50%);\n --secondary: #42b983;\n --border-color: hsla(0, 0%, 100%, 0.2);\n --light-1: hsl(210, 30%, 40%);\n --light-2: hsl(255, 30%, 50%);\n --light-background: linear-gradient(to right, var(--light-1), var(--light-2));\n --shadow-1: hsla(236, 50%, 50%, 0.3);\n --shadow-2: hsla(236, 50%, 50%, 0.4);\n --hud-background: rgba(0, 0, 0, 0.4);\n --hud-text-color: var(--text-color);\n --notifications-bg: darkslateblue;\n --skills-text-background: rgba(0, 0, 0, 0.5);\n --skills-text-color: var(--text-color);\n --skills-level-background: rgba(0, 0, 0, 0.5);\n --skills-level-color: orange;\n --skills-xp-bar-height: 40px;\n --skill-check-name-color: orange;\n --skill-check-difficulty: orange;\n --skill-check-success: green;\n --skill-check-failed: red;\n --skill-check-color: orange;\n --dialog-choice-color: orange;\n --dialog-choice-hover-color: var(--text-color);\n}\n\n.list-item {\n display: inline-block;\n margin-right: 10px;\n}\n\n.list-enter-active,\n.list-leave-active {\n transition: all 0.3s ease;\n}\n\n/* .list-move {\n transition: transform 0.3s ease;\n} */\n\n.list-enter-from,\n.list-leave-to {\n opacity: 0;\n transform: translateX(300px);\n}\n\n.notification-item {\n display: inline-block;\n margin-right: 10px;\n}\n\n.notification-enter-active,\n.notification-leave-active {\n transition: all 0.3s ease;\n}\n\n/* .notification-move {\n transition: transform 0.3s ease;\n} */\n\n.notification-enter-from,\n.notification-leave-to {\n opacity: 0;\n transform: translateY(-300px);\n}\n\n.fade-enter-active,\n.fade-leave-active {\n transition: opacity 0.3s ease;\n}\n\n.fade-enter-from,\n.fade-leave-to {\n opacity: 0;\n}\n\n.fade-in-enter-active {\n transition: opacity 0.1s ease;\n}\n\n.fade-in-enter-from {\n opacity: 0;\n}\n\nbody {\n padding: 0;\n margin: 0;\n font-family: Arial, sans-serif;\n background-color: black;\n}\n\n.select {\n background: var(--light-background);\n padding: 10px;\n}\n\n.option {\n background-color: var(--light-2);\n padding: 5px;\n color: var(--text-color);\n}\n\n.button {\n background: var(--light-background);\n color: var(--text-color);\n box-shadow: 0.4rem 0.4rem 2.4rem 0.2rem var(--shadow-1);\n border-radius: 100px;\n padding: 10px;\n font-weight: 800;\n font-size: 16px;\n margin: 10px;\n transition: 0.2s;\n}\n\n.button:focus,\n.button:hover {\n transform: translateY(-0.2rem);\n box-shadow: 0 0 2.4rem 0.2rem var(--shadow-2);\n}\n\n.input {\n background: var(--light-background);\n color: var(--text-color);\n box-shadow: 0.4rem 0.4rem 2.4rem 0.2rem var(--shadow-1);\n border-radius: 100px;\n padding: 10px;\n font-weight: 800;\n font-size: 16px;\n margin: 10px;\n transition: 0.2s;\n}\n\n.input:focus,\n.input:hover {\n transform: translateY(-0.2rem);\n box-shadow: 0 0 2.4rem 0.2rem var(--shadow-2);\n}\n\na {\n color: pink;\n text-decoration: underline;\n}\n\nth,\ntd {\n padding: 4px;\n border: 1px solid var(--text-color);\n text-align: center;\n}\n\n#game-holder {\n width: 100vw;\n height: 100vh;\n padding: 0;\n margin: 0;\n top: 0;\n left: 0;\n background-color: black;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: -webkit-fill-available;\n}\n\n.title {\n font-size: 30px;\n font-weight: 700;\n text-align: center;\n}\n\n.container {\n padding: 20px;\n}\n\nh1,\nh2,\nh3,\nh4 {\n font-weight: 700;\n}\n\nh1 {\n font-size: 30px;\n}\n\nh2 {\n font-size: 26px;\n}\n\nh3 {\n font-size: 24px;\n}\n\nhr.solid {\n border: 1px solid var(--text-color);\n margin-top: 30px;\n margin-bottom: 30px;\n}\n\n.card-1 {\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);\n transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);\n}\n\n.card-1:hover {\n box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);\n}\n\n.card-2 {\n box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);\n}\n\n.card-3 {\n box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);\n}\n\n.card-4 {\n box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);\n}\n\n.card-5 {\n box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.22);\n}\n\n.dialog-choice {\n transition: 0.2s;\n}\n\n.dialog-choice:hover {\n transform: scale(1.05, 1.05);\n transform-origin: center;\n}\n\n/* Somewhat arcane CSS to force the hover color to override the child style.\nOtherwise hovering choices doesn't change the color of skill check prompts. */\n\n.dialog-choice:not(:hover) > .skill-check-name,\n.passive-skill-check > .skill-check-name {\n color: var(--skill-check-name-color);\n}\n\n.dialog-choice:not(:hover) > .skill-check-difficulty,\n.passive-skill-check > .skill-check-difficulty {\n color: var(--skill-check-difficulty);\n}\n\n.skill-check-difficulty {\n font-weight: 700;\n}\n\n.dialog-choice:not(:hover) > .skill-check-success,\n.passive-skill-check > .skill-check-success {\n color: var(--skill-check-success);\n}\n\n.dialog-choice:not(:hover) > .skill-check-failed,\n.passive-skill-check > .skill-check-failed {\n color: var(--skill-check-failed);\n}\n\n.dialog-choice:not(:hover) > .skill-check,\n.passive-skill-check.skill-check {\n color: var(--skill-check-color);\n}\n\n/* Looks ugly */\n\n/* @keyframes strike-anim {\n 0% {\n width: 0;\n }\n 100% {\n width: 100%;\n }\n}\n.strike-anim {\n position: relative;\n}\n.strike-anim::after {\n content: ' ';\n position: absolute;\n top: 50%;\n left: 0;\n width: 100%;\n height: 1px;\n background: var(--text-color);\n animation-name: strike-anim;\n animation-duration: 0.5s;\n animation-timing-function: linear;\n animation-iteration-count: 1;\n animation-fill-mode: forwards;\n} */\n\n@media (min-width: 640px) {\n}\n\n@media (min-width: 768px) {\n}\n\n@media (min-width: 1024px) {\n}\n\n@media (min-width: 1280px) {\n}\n\n@media (min-width: 1536px) {\n}\n";
|
|
34
34
|
styleInject(css_248z);
|
|
35
35
|
|
|
36
36
|
const f=ref([]),v=ref(null),m=ref(null),g=ref(null),h=reactive({current:""}),y=[],b=ref(!1),k=readonly(f),w=readonly(v),M=readonly(m),q=readonly(g),x=readonly(h),$=(e=w.value)=>{h.current=e;const t=k.value.findIndex((t=>t.name===e)),n=k.value.map((e=>e.name));for(let a=0;a<n.length;a++){if(a>0&&a<n.length-1){const e=n[a]+"Minus",r=n[a]+"Plus";h[e]=t<=a,h[r]=t>=a;}h[n[a]]=n[a]===e;}},V=(e=M.value)=>{h.orientation=e,h.isLandscape="landscape"===e,h.isPortrait="portrait"===e;},O=(e=q.value||"light")=>{h.theme=e,h.isDark="dark"===e,h.isLight="light"===e;};function j(e,t){if("undefined"==typeof window||!window.matchMedia)return !1;if("undefined"!=typeof window&&!window.matchMedia)return console.error("Vue3 Mq: No MatchMedia support detected in this browser. Responsive breakpoints not available."),!1;{b.value=!0;const n=window.matchMedia(e),a=({matches:e})=>{e&&t();};y.push({mql:n,cb:a});n.addEventListener&&"function"==typeof n.addEventListener?n.addEventListener("change",a):n.addListener(a),a(n);}}var L=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",bootstrap5:{xs:0,sm:576,md:768,lg:992,xl:1200,xxl:1400},bootstrap4:{xs:0,sm:576,md:768,lg:992,xl:1200},bootstrap3:{xs:0,sm:768,md:992,lg:1200},vuetify:{xs:0,sm:600,md:960,lg:1264,xl:1904},tailwind:{xs:0,sm:640,md:768,lg:1024,xl:1280,xxl:1536},devices:{phone:0,tablet:768,laptop:1370,desktop:1906}});const T=e=>{if(!e||"object"!=typeof e)return !1;const t=[];for(let n in e){const a=parseFloat(e[n]);n&&"string"==typeof n?/^[^a-z]/i.test(n)||/[^a-zA-Z0-9_]/.test(n)?console.warn(`Vue3 Mq: "${n}" is an invalid breakpoint key. Breakpoint keys must start with a letter and contain only alphanumeric characters and underscores. Skipping.`):!a&&0!==a||isNaN(a)||a<0?console.warn(`Vue3 Mq: "${n}: ${e[n]}" is not a valid breakpoint. Breakpoints should be a number of zero or above. Skipping.`):t.push({name:n,min:a}):console.warn(`Vue3 Mq: Invalid or missing breakpoint key (${JSON.stringify(n)}). Skipping.`);}t.some((e=>0===e.min))||console.warn("Vue3 Mq: You have not declared a breakpoint with a minimum value of 0. There may be screen sizes to which Vue3Mq does not respond.");return new Set(t.map((e=>e.min))).size<t.length&&console.warn("Vue3 Mq: Your breakpoint configuration contains duplicate values. Behaviour may be unpredictable."),0!==t.length&&t.sort(((e,t)=>e.min-t.min))};function R({breakpoints:e,preset:t}){const n=(e=>{if("string"==typeof e&&L[e])return L[e];{const t=Object.keys(L);return console.error(`Vue3 Mq: "${e}" is not a valid preset. Available options are: ${t.join(", ")}`),!1}})(t),a=T(e);if(!1===n&&!a)throw new TypeError("Vue3 Mq: You must provide a valid preset, or valid breakpoint settings.");var r;r=a||T(n),f.value=r,function(){for(;y.length>0;){const e=y.shift();if(e&&"object"==typeof e){const{mql:t,cb:n}=e;t.addEventListener&&"function"==typeof t.addEventListener?t.removeEventListener("change",n):t.removeListener(n);}}}(),(()=>{const e=Object.keys(h);for(let t of e)delete h[t];$(),V(),O();})();const o=k.value.reduce(((e,t,n,a)=>{const r=`(min-width: ${t.min}px)`,o=n<a.length-1?`(max-width: ${a[n+1].min-1}px)`:null,i=r+(o?" and "+o:"");return Object.assign(e,{[t.name]:i})}),{});for(const i in o){j(o[i],(()=>{$(i);}));}["portrait","landscape"].forEach((e=>{j(`(orientation: ${e})`,(()=>{V(e);}));})),["light","dark"].forEach((e=>{j(`(prefers-color-scheme: ${e})`,(()=>{O(e);}));}));}var N={install:(e,{preset:t="bootstrap5",breakpoints:n,defaultBreakpoint:a,defaultOrientation:r="landscape",defaultTheme:o}={})=>{try{const l=!1===["landscape","portrait"].includes(s=r)?(console.error(`Vue3 Mq: "${s}" is not a valid default orientation. Reverting to unset value.`),null):s,u=((e=null)=>!1===["dark","light"].includes(e)&&null!==e?(console.error(`Vue3 Mq: "${e}" is not a valid default theme. Reverting to unset value.`),null):e)(o);i=a,v.value=i,(e=>{m.value=e;})(l),(e=>{g.value=e;})(u),e.provide("mq",x),e.provide("updateBreakpoints",R),R({breakpoints:n,preset:t});}catch(l){console.error(l);}var i,s;}};
|
|
@@ -135,7 +135,7 @@ var script = defineComponent({
|
|
|
135
135
|
dialogBoxStyle() {
|
|
136
136
|
const style = getCharacterStyle(this.options.styleId);
|
|
137
137
|
const css = {
|
|
138
|
-
opacity: this.options.old ? '0.
|
|
138
|
+
opacity: this.options.old ? '0.7' : '1',
|
|
139
139
|
};
|
|
140
140
|
if (!this.options.title) {
|
|
141
141
|
css.marginTop = '-20px';
|
|
@@ -174,6 +174,11 @@ var script = defineComponent({
|
|
|
174
174
|
}
|
|
175
175
|
return style;
|
|
176
176
|
},
|
|
177
|
+
dialogClass(choice) {
|
|
178
|
+
if (!choice.allowed) {
|
|
179
|
+
return 'strike-anim';
|
|
180
|
+
}
|
|
181
|
+
},
|
|
177
182
|
},
|
|
178
183
|
});
|
|
179
184
|
|
|
@@ -221,10 +226,10 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
221
226
|
return (openBlock(), createElementBlock("p", {
|
|
222
227
|
key: index,
|
|
223
228
|
style: normalizeStyle(_ctx.dialogStyle(choice)),
|
|
229
|
+
class: normalizeClass([_ctx.dialogClass(choice), "dialog-choice override"]),
|
|
224
230
|
onClick: $event => (_ctx.chooseOption(choice)),
|
|
225
|
-
class: "dialog-choice override",
|
|
226
231
|
innerHTML: `${index + 1}. – ${choice.choice}`
|
|
227
|
-
}, null,
|
|
232
|
+
}, null, 14, _hoisted_6))
|
|
228
233
|
}), 128))
|
|
229
234
|
]))
|
|
230
235
|
: (_ctx.canInteract)
|
|
@@ -239,7 +244,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
239
244
|
], 4))
|
|
240
245
|
}
|
|
241
246
|
|
|
242
|
-
var css_248z$1 = ".dialog-title {\n font-size: 20px;\n font-weight: bold;\n}\n\n.dialog-text {\n font-size: 16px;\n}\n\n.dialog-box {\n /* border-radius: 10px; */\n /* border: 1px solid #a8a8a8; */\n color: var(--text-color);\n /* background-color: #2e2e2e; */\n padding: 10px;\n padding-left: 2em;\n margin-bottom: 10px;\n}\n\n.dialog-choice {\n color:
|
|
247
|
+
var css_248z$1 = ".dialog-title {\n font-size: 20px;\n font-weight: bold;\n}\n\n.dialog-text {\n font-size: 16px;\n}\n\n.dialog-box {\n /* border-radius: 10px; */\n /* border: 1px solid #a8a8a8; */\n color: var(--text-color);\n /* background-color: #2e2e2e; */\n padding: 10px;\n padding-left: 2em;\n margin-bottom: 10px;\n}\n\n.dialog-choice {\n color: var(--dialog-choice-color);\n}\n\n.dialog-choice:hover {\n color: var(--dialog-choice-hover-color);\n cursor: pointer;\n}\n\n.buttons-container {\n width: 100%;\n padding: 10px;\n display: flex;\n justify-content: space-evenly;\n align-items: stretch;\n box-sizing: border-box;\n}\n\n.interact-button {\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n height: 50px;\n color: var(--text-color);\n border: 1px solid black;\n font-weight: bold;\n font-size: 24px;\n text-align: center;\n flex-grow: 2;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n\n.interact-button:not(:last-child) {\n margin-right: 10px;\n}\n";
|
|
243
248
|
styleInject(css_248z$1);
|
|
244
249
|
|
|
245
250
|
script.render = render;
|
|
@@ -275,6 +280,9 @@ const defaultConfig = {
|
|
|
275
280
|
},
|
|
276
281
|
buttons: {},
|
|
277
282
|
skills: {},
|
|
283
|
+
skillOptions: {
|
|
284
|
+
xpPerLevel: 10,
|
|
285
|
+
},
|
|
278
286
|
skillChecks: {
|
|
279
287
|
rollRange: 100,
|
|
280
288
|
skillMultiplier: 10,
|
|
@@ -319,6 +327,13 @@ function setConfig(conf) {
|
|
|
319
327
|
}
|
|
320
328
|
function getConfig() {
|
|
321
329
|
return config$1;
|
|
330
|
+
}
|
|
331
|
+
function getSkillConfig(commit, id) {
|
|
332
|
+
const skill = config$1.skills[id];
|
|
333
|
+
if (!skill) {
|
|
334
|
+
error(commit, `Skill config for skill ${id} doesn't exist`);
|
|
335
|
+
}
|
|
336
|
+
return skill;
|
|
322
337
|
}
|
|
323
338
|
|
|
324
339
|
var script$1 = defineComponent({
|
|
@@ -362,26 +377,25 @@ function render$1(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
362
377
|
], 4))
|
|
363
378
|
}
|
|
364
379
|
|
|
365
|
-
var css_248z$2 = ".dialog-picture {\n position: absolute;\n width: 80px;\n height: 80px;\n border: 2px solid white;\n border-radius: 10px;\n background-color: grey;\n z-index: 99;\n}\n\n.dialog-picture img {\n width: 100%;\n height: 100%;\n}\
|
|
380
|
+
var css_248z$2 = ".dialog-picture {\n position: absolute;\n width: 80px;\n height: 80px;\n border: 2px solid white;\n border-radius: 10px;\n background-color: grey;\n z-index: 99;\n}\n\n.dialog-picture img {\n width: 100%;\n height: 100%;\n}\n";
|
|
366
381
|
styleInject(css_248z$2);
|
|
367
382
|
|
|
368
383
|
script$1.render = render$1;
|
|
369
384
|
|
|
370
|
-
class
|
|
385
|
+
class LogManager {
|
|
371
386
|
debug;
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
}
|
|
375
|
-
|
|
387
|
+
logger = {
|
|
388
|
+
log: () => { },
|
|
389
|
+
};
|
|
390
|
+
setupDebugger(debug) {
|
|
376
391
|
this.debug = debug;
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
if (this.debug) {
|
|
380
|
-
console.log(...args);
|
|
392
|
+
if (debug) {
|
|
393
|
+
this.logger.log = console.log.bind(window.console);
|
|
381
394
|
}
|
|
382
395
|
}
|
|
383
396
|
}
|
|
384
|
-
const
|
|
397
|
+
const logManager = new LogManager();
|
|
398
|
+
const logger = logManager.logger;
|
|
385
399
|
|
|
386
400
|
function getPlayTime(startedAt, previousTime) {
|
|
387
401
|
return Date.now() - startedAt + previousTime;
|
|
@@ -452,7 +466,7 @@ function render$2(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
452
466
|
}))
|
|
453
467
|
}
|
|
454
468
|
|
|
455
|
-
var css_248z$3 = ".modal-mask {\n position: absolute;\n z-index: 9998;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n transition: opacity 0.3s ease;\n display: flex;\n flex-direction: column;\n flex-shrink: 2 2;\n align-items: center;\n justify-content: center;\n}\n\n.modal-container {\n min-width: 300px;\n max-width: 90vw;\n max-height: 100%;\n overflow-y: hidden;\n margin: 10px auto;\n padding: 20px 30px;\n border-radius: 5px;\n transition: all 0.3s ease;\n font-family: Helvetica, Arial, sans-serif;\n background: linear-gradient(to right, hsl(210, 30%, 20%), hsl(255, 30%, 25%));\n display: flex;\n flex-direction: column;\n}\n\n.modal-header {\n position: relative;\n}\n\n.modal-header h3 {\n flex-shrink: 0;\n margin-top: 0;\n color: var(--secondary);\n}\n\n.modal-body {\n margin: 20px 0;\n overflow-y: auto;\n flex-shrink: 2;\n}\n\n.modal-default-button {\n float: right;\n}\n\n/*\
|
|
469
|
+
var css_248z$3 = ".modal-mask {\n position: absolute;\n z-index: 9998;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n transition: opacity 0.3s ease;\n display: flex;\n flex-direction: column;\n flex-shrink: 2 2;\n align-items: center;\n justify-content: center;\n}\n\n.modal-container {\n min-width: 300px;\n max-width: 90vw;\n max-height: 100%;\n overflow-y: hidden;\n margin: 10px auto;\n padding: 20px 30px;\n border-radius: 5px;\n transition: all 0.3s ease;\n font-family: Helvetica, Arial, sans-serif;\n background: linear-gradient(to right, hsl(210, 30%, 20%), hsl(255, 30%, 25%));\n display: flex;\n flex-direction: column;\n}\n\n.modal-header {\n position: relative;\n}\n\n.modal-header h3 {\n flex-shrink: 0;\n margin-top: 0;\n color: var(--secondary);\n}\n\n.modal-body {\n margin: 20px 0;\n overflow-y: auto;\n flex-shrink: 2;\n}\n\n.modal-default-button {\n float: right;\n}\n\n/*\n * The following styles are auto-applied to elements with\n * transition=\"modal\" when their visibility is toggled\n * by Vue.js.\n *\n * You can easily play with the modal transition by editing\n * these styles.\n */\n\n.modal-enter {\n opacity: 0;\n}\n\n.modal-leave-active {\n opacity: 0;\n}\n\n.modal-enter .modal-container,\n.modal-leave-active .modal-container {\n transform: scale(1.1);\n}\n\n.close-button {\n border: 1px solid var(--text-color);\n border-radius: 50px;\n font-size: 30px;\n font-weight: 700;\n position: absolute;\n right: -20px;\n top: -10px;\n width: 50px;\n height: 50px;\n}\n\n.close-button:hover {\n background-color: var(--focus);\n}\n";
|
|
456
470
|
styleInject(css_248z$3);
|
|
457
471
|
|
|
458
472
|
script$2.render = render$2;
|
|
@@ -2353,19 +2367,21 @@ var script$3 = defineComponent({
|
|
|
2353
2367
|
open() {
|
|
2354
2368
|
this.showDebug = true;
|
|
2355
2369
|
this.$nextTick(() => {
|
|
2356
|
-
|
|
2370
|
+
// eslint-disable-next-line no-unused-vars
|
|
2371
|
+
const _variablesEditor = new xJ({
|
|
2357
2372
|
target: this.$refs.variablesViewer,
|
|
2358
2373
|
props: {
|
|
2359
2374
|
content: {
|
|
2360
2375
|
text: undefined,
|
|
2361
2376
|
json: this.variables,
|
|
2362
2377
|
},
|
|
2363
|
-
onChange: (updatedContent
|
|
2378
|
+
onChange: (updatedContent) => {
|
|
2364
2379
|
this.$store.commit('overrideData', updatedContent.json);
|
|
2365
2380
|
},
|
|
2366
2381
|
},
|
|
2367
2382
|
});
|
|
2368
|
-
|
|
2383
|
+
// eslint-disable-next-line no-unused-vars
|
|
2384
|
+
const _stateEditor = new xJ({
|
|
2369
2385
|
target: this.$refs.stateViewer,
|
|
2370
2386
|
props: {
|
|
2371
2387
|
content: {
|
|
@@ -2596,9 +2612,10 @@ function render$3(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
2596
2612
|
(openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.matches, (match, index) => {
|
|
2597
2613
|
return (openBlock(), createElementBlock("div", {
|
|
2598
2614
|
class: "search-result",
|
|
2599
|
-
style: normalizeStyle(_ctx.getMatchResultStyle(index))
|
|
2615
|
+
style: normalizeStyle(_ctx.getMatchResultStyle(index)),
|
|
2616
|
+
key: index
|
|
2600
2617
|
}, toDisplayString(match), 5))
|
|
2601
|
-
}),
|
|
2618
|
+
}), 128))
|
|
2602
2619
|
]))
|
|
2603
2620
|
: (openBlock(), createElementBlock("div", _hoisted_8, _hoisted_10))
|
|
2604
2621
|
]),
|
|
@@ -2692,7 +2709,7 @@ function render$3(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
2692
2709
|
]))
|
|
2693
2710
|
}
|
|
2694
2711
|
|
|
2695
|
-
var css_248z$4 = ".debug-menu {\n z-index: 9999;\n}\n\n.debug-button {\n position: fixed;\n bottom: 10px;\n right: 10px;\n padding: 5px;\n}\n\n.error-message {\n color: orangered;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n\n.error-filename {\n color: grey;\n text-decoration: underline;\n}\n\n.debug-menu-container {\n width: 100%;\n}\n\n.search-result {\n border: 1px solid var(--text-color);\n padding: 10px;\n font-weight: 700;\n font-size: 20px;\n width: 100;\n}\n\n.jump-menu-container {\n width: 80%;\n}\n\n.debug-info {\n position: fixed;\n background-color: rgba(0, 0, 0, 0.6);\n border: 1px dotted var(--text-color);\n top: 0;\n left: 0;\n padding: 5px;\n}\n\n.variables-viewer {\n height: 100%;\n}\
|
|
2712
|
+
var css_248z$4 = ".debug-menu {\n z-index: 9999;\n}\n\n.debug-button {\n position: fixed;\n bottom: 10px;\n right: 10px;\n padding: 5px;\n}\n\n.error-message {\n color: orangered;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n\n.error-filename {\n color: grey;\n text-decoration: underline;\n}\n\n.debug-menu-container {\n width: 100%;\n}\n\n.search-result {\n border: 1px solid var(--text-color);\n padding: 10px;\n font-weight: 700;\n font-size: 20px;\n width: 100;\n}\n\n.jump-menu-container {\n width: 80%;\n}\n\n.debug-info {\n position: fixed;\n background-color: rgba(0, 0, 0, 0.6);\n border: 1px dotted var(--text-color);\n top: 0;\n left: 0;\n padding: 5px;\n}\n\n.variables-viewer {\n height: 100%;\n}\n";
|
|
2696
2713
|
styleInject(css_248z$4);
|
|
2697
2714
|
|
|
2698
2715
|
script$3.render = render$3;
|
|
@@ -5996,7 +6013,7 @@ function render$4(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
5996
6013
|
]))
|
|
5997
6014
|
}
|
|
5998
6015
|
|
|
5999
|
-
var css_248z$5 = ".volume-label {\n /* margin: 5px 20px; */\n margin-right: 10px;\n font-size: 20px;\n font-weight: 700;\n}\n\n.volume-controls {\n font-size: 25px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 20px;\n}\n\n.volume-slider {\n width: 200px;\n background-color: blue;\n}\
|
|
6016
|
+
var css_248z$5 = ".volume-label {\n /* margin: 5px 20px; */\n margin-right: 10px;\n font-size: 20px;\n font-weight: 700;\n}\n\n.volume-controls {\n font-size: 25px;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 20px;\n}\n\n.volume-slider {\n width: 200px;\n background-color: blue;\n}\n";
|
|
6000
6017
|
styleInject(css_248z$5);
|
|
6001
6018
|
|
|
6002
6019
|
script$4.render = render$4;
|
|
@@ -6052,7 +6069,7 @@ function render$5(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
6052
6069
|
], 4))
|
|
6053
6070
|
}
|
|
6054
6071
|
|
|
6055
|
-
var css_248z$6 = ".hud {\n position: absolute;\n right: 0;\n top: 0;\n display: flex;\n flex-direction: row-reverse;\n z-index: 3;\n}\n\n.hud-stat {\n border: 1px dotted white;\n background-color: var(--hud-background);\n color: var(--hud-text-color);\n padding: 5px;\n}\n\n.hud-icon {\n display: inline-block;\n height: 1em;\n}\n\n.hud-text {\n margin-left: 5px;\n}\
|
|
6072
|
+
var css_248z$6 = ".hud {\n position: absolute;\n right: 0;\n top: 0;\n display: flex;\n flex-direction: row-reverse;\n z-index: 3;\n}\n\n.hud-stat {\n border: 1px dotted white;\n background-color: var(--hud-background);\n color: var(--hud-text-color);\n padding: 5px;\n}\n\n.hud-icon {\n display: inline-block;\n height: 1em;\n}\n\n.hud-text {\n margin-left: 5px;\n}\n";
|
|
6056
6073
|
styleInject(css_248z$6);
|
|
6057
6074
|
|
|
6058
6075
|
script$5.render = render$5;
|
|
@@ -6089,7 +6106,7 @@ function render$6(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
6089
6106
|
]))
|
|
6090
6107
|
}
|
|
6091
6108
|
|
|
6092
|
-
var css_248z$7 = "#loading-bar {\n position: relative;\n width: 40vw;\n height: 100px;\n border-radius: 50px;\n background: black;\n}\n\n#inner-loading-bar {\n height: 100%;\n border-radius: 50px 0px 0px 50px;\n background: var(--light-background);\n}\n\n#loading-text {\n z-index: 99999;\n display: flex;\n align-items: center;\n justify-content: space-around;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n}\
|
|
6109
|
+
var css_248z$7 = "#loading-bar {\n position: relative;\n width: 40vw;\n height: 100px;\n border-radius: 50px;\n background: black;\n}\n\n#inner-loading-bar {\n height: 100%;\n border-radius: 50px 0px 0px 50px;\n background: var(--light-background);\n}\n\n#loading-text {\n z-index: 99999;\n display: flex;\n align-items: center;\n justify-content: space-around;\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n}\n";
|
|
6093
6110
|
styleInject(css_248z$7);
|
|
6094
6111
|
|
|
6095
6112
|
script$6.render = render$6;
|
|
@@ -6124,7 +6141,7 @@ function render$7(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
6124
6141
|
}))
|
|
6125
6142
|
}
|
|
6126
6143
|
|
|
6127
|
-
var css_248z$8 = ".notifications-holder {\n position: fixed;\n top: 0;\n left: 0;\n padding: 10px;\n display: flex;\n flex-direction: column-reverse;\n align-items: center;\n pointer-events: none;\n}\n\n.notification {\n margin-top: 10px;\n margin-bottom: 10px;\n border-radius: 10px;\n padding: 15px;\n background: var(--notifications-bg);\n width: 40vh;\n text-align: center;\n}\
|
|
6144
|
+
var css_248z$8 = ".notifications-holder {\n position: fixed;\n top: 0;\n left: 0;\n padding: 10px;\n display: flex;\n flex-direction: column-reverse;\n align-items: center;\n pointer-events: none;\n}\n\n.notification {\n margin-top: 10px;\n margin-bottom: 10px;\n border-radius: 10px;\n padding: 15px;\n background: var(--notifications-bg);\n width: 40vh;\n text-align: center;\n}\n";
|
|
6128
6145
|
styleInject(css_248z$8);
|
|
6129
6146
|
|
|
6130
6147
|
script$7.render = render$7;
|
|
@@ -6262,6 +6279,7 @@ howler.Howler.volume(0.5);
|
|
|
6262
6279
|
async function loadAudioAssets(config) {
|
|
6263
6280
|
logger.log(`Loading audio`);
|
|
6264
6281
|
const loadingPromises = [];
|
|
6282
|
+
howler.Howler.volume(config.audioOptions.volume);
|
|
6265
6283
|
for (const key in config.music) {
|
|
6266
6284
|
// Backward compatibility with old music list
|
|
6267
6285
|
const musicConf = {
|
|
@@ -6310,6 +6328,9 @@ async function changeMusic(ctx, newMusic) {
|
|
|
6310
6328
|
if (ctx.state.audio.currentMusic) {
|
|
6311
6329
|
if (oldHowler) {
|
|
6312
6330
|
oldMusic.fade(oldMusic.volume(), 0, audioOptions.musicFadeOutTime * 1000, oldHowler);
|
|
6331
|
+
setTimeout(() => {
|
|
6332
|
+
oldMusic.stop(oldHowler);
|
|
6333
|
+
}, audioOptions.musicFadeOutTime * 1000);
|
|
6313
6334
|
}
|
|
6314
6335
|
}
|
|
6315
6336
|
if (oldMusic) {
|
|
@@ -6342,18 +6363,12 @@ function stopAudio(commit, key) {
|
|
|
6342
6363
|
if (sound) {
|
|
6343
6364
|
sound.stop();
|
|
6344
6365
|
}
|
|
6345
|
-
else {
|
|
6346
|
-
error(commit, `Sound effect ${key} not found!`);
|
|
6347
|
-
}
|
|
6348
6366
|
}
|
|
6349
6367
|
function pauseAudio(commit, key) {
|
|
6350
6368
|
const sound = getAudio(key);
|
|
6351
6369
|
if (sound) {
|
|
6352
6370
|
sound.pause();
|
|
6353
6371
|
}
|
|
6354
|
-
else {
|
|
6355
|
-
error(commit, `Sound effect ${key} not found!`);
|
|
6356
|
-
}
|
|
6357
6372
|
}
|
|
6358
6373
|
|
|
6359
6374
|
function debounce(func, waitMilliseconds = 50, options = {}) {
|
|
@@ -6468,7 +6483,7 @@ function render$8(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
6468
6483
|
]))
|
|
6469
6484
|
}
|
|
6470
6485
|
|
|
6471
|
-
var css_248z$9 = ".menu-content {\n text-align: center;\n}\n\n.menu-toggle-button {\n margin: 0;\n padding: 2px;\n border-radius: 5px;\n}\n\n.menu-toggle-button:not(:last-child) {\n margin-right: 10px;\n}\n\n.menu-modal {\n width: 500px;\n}\
|
|
6486
|
+
var css_248z$9 = ".menu-content {\n text-align: center;\n}\n\n.menu-toggle-button {\n margin: 0;\n padding: 2px;\n border-radius: 5px;\n}\n\n.menu-toggle-button:not(:last-child) {\n margin-right: 10px;\n}\n\n.menu-modal {\n width: 500px;\n}\n";
|
|
6472
6487
|
styleInject(css_248z$9);
|
|
6473
6488
|
|
|
6474
6489
|
script$8.render = render$8;
|
|
@@ -6486,9 +6501,13 @@ var script$9 = defineComponent({
|
|
|
6486
6501
|
window.close();
|
|
6487
6502
|
// quit
|
|
6488
6503
|
},
|
|
6504
|
+
close() {
|
|
6505
|
+
this.$emit('close');
|
|
6506
|
+
},
|
|
6489
6507
|
mainMenu() {
|
|
6490
|
-
this.$store.
|
|
6508
|
+
this.$store.dispatch('menuReturn');
|
|
6491
6509
|
this.$store.commit('setFlowState', 'menu');
|
|
6510
|
+
this.close();
|
|
6492
6511
|
},
|
|
6493
6512
|
getPlayTimeString() {
|
|
6494
6513
|
const time = getPlayTime(this.$store.state.playTime.start, this.$store.state.playTime.previousPlaytime);
|
|
@@ -6507,7 +6526,7 @@ function render$9(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
6507
6526
|
|
|
6508
6527
|
return (openBlock(), createBlock(_component_modal, {
|
|
6509
6528
|
class: "menu",
|
|
6510
|
-
onClose:
|
|
6529
|
+
onClose: _ctx.close,
|
|
6511
6530
|
containerCssClass: "menu-modal"
|
|
6512
6531
|
}, {
|
|
6513
6532
|
header: withCtx(() => [
|
|
@@ -6528,10 +6547,10 @@ function render$9(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
6528
6547
|
])
|
|
6529
6548
|
]),
|
|
6530
6549
|
_: 1
|
|
6531
|
-
}))
|
|
6550
|
+
}, 8, ["onClose"]))
|
|
6532
6551
|
}
|
|
6533
6552
|
|
|
6534
|
-
var css_248z$a = ".quit-button {\n margin: 20px;\n text-align: center;\n}\
|
|
6553
|
+
var css_248z$a = ".quit-button {\n margin: 20px;\n text-align: center;\n}\n";
|
|
6535
6554
|
styleInject(css_248z$a);
|
|
6536
6555
|
|
|
6537
6556
|
script$9.render = render$9;
|
|
@@ -6565,6 +6584,11 @@ var script$a = defineComponent({
|
|
|
6565
6584
|
closeSkill() {
|
|
6566
6585
|
this.chosenSkill = false;
|
|
6567
6586
|
},
|
|
6587
|
+
xpBarWidth(xp) {
|
|
6588
|
+
return {
|
|
6589
|
+
width: `${Math.floor((xp / this.xpPerLevel) * 100)}%`,
|
|
6590
|
+
};
|
|
6591
|
+
},
|
|
6568
6592
|
},
|
|
6569
6593
|
computed: {
|
|
6570
6594
|
skillsToDisplay() {
|
|
@@ -6584,6 +6608,9 @@ var script$a = defineComponent({
|
|
|
6584
6608
|
skillConf() {
|
|
6585
6609
|
return getConfig().skills;
|
|
6586
6610
|
},
|
|
6611
|
+
xpPerLevel() {
|
|
6612
|
+
return getConfig().skillOptions.xpPerLevel;
|
|
6613
|
+
},
|
|
6587
6614
|
},
|
|
6588
6615
|
});
|
|
6589
6616
|
|
|
@@ -6595,14 +6622,16 @@ const _hoisted_3$4 = {
|
|
|
6595
6622
|
};
|
|
6596
6623
|
const _hoisted_4$3 = ["onClick"];
|
|
6597
6624
|
const _hoisted_5$3 = { class: "skill-title" };
|
|
6598
|
-
const _hoisted_6$3 = { class: "skill-
|
|
6599
|
-
const _hoisted_7$2 = {
|
|
6625
|
+
const _hoisted_6$3 = { class: "skill-xp-container" };
|
|
6626
|
+
const _hoisted_7$2 = { class: "skill-xp-text" };
|
|
6627
|
+
const _hoisted_8$1 = { class: "skill-level" };
|
|
6628
|
+
const _hoisted_9$1 = {
|
|
6600
6629
|
key: 1,
|
|
6601
6630
|
class: "flex flex-row skill-description-container"
|
|
6602
6631
|
};
|
|
6603
|
-
const
|
|
6604
|
-
const
|
|
6605
|
-
const
|
|
6632
|
+
const _hoisted_10$1 = { class: "flex skill-left" };
|
|
6633
|
+
const _hoisted_11$1 = { class: "flex skill-right" };
|
|
6634
|
+
const _hoisted_12$1 = /*#__PURE__*/createElementVNode("hr", { class: "hr-solid" }, null, -1);
|
|
6606
6635
|
|
|
6607
6636
|
function render$a(_ctx, _cache, $props, $setup, $data, $options) {
|
|
6608
6637
|
const _component_modal = resolveComponent("modal");
|
|
@@ -6623,16 +6652,24 @@ function render$a(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
6623
6652
|
return (openBlock(), createElementBlock("button", {
|
|
6624
6653
|
onClick: () => _ctx.clickSkill(key),
|
|
6625
6654
|
class: "skill-display",
|
|
6626
|
-
style: normalizeStyle(_ctx.getSkillStyle(key))
|
|
6655
|
+
style: normalizeStyle(_ctx.getSkillStyle(key)),
|
|
6656
|
+
key: key
|
|
6627
6657
|
}, [
|
|
6628
6658
|
createElementVNode("h3", _hoisted_5$3, toDisplayString(_ctx.getSkillName(key)), 1),
|
|
6629
|
-
createElementVNode("
|
|
6659
|
+
createElementVNode("div", _hoisted_6$3, [
|
|
6660
|
+
createElementVNode("div", {
|
|
6661
|
+
class: "skill-xp-bar",
|
|
6662
|
+
style: normalizeStyle(_ctx.xpBarWidth(skill.xp))
|
|
6663
|
+
}, null, 4),
|
|
6664
|
+
createElementVNode("h3", _hoisted_7$2, toDisplayString(skill.xp) + " / " + toDisplayString(_ctx.xpPerLevel) + " XP ", 1)
|
|
6665
|
+
]),
|
|
6666
|
+
createElementVNode("h3", _hoisted_8$1, toDisplayString(skill.level), 1)
|
|
6630
6667
|
], 12, _hoisted_4$3))
|
|
6631
|
-
}),
|
|
6668
|
+
}), 128))
|
|
6632
6669
|
]))
|
|
6633
6670
|
: (typeof _ctx.chosenSkill === 'string')
|
|
6634
|
-
? (openBlock(), createElementBlock("div",
|
|
6635
|
-
createElementVNode("div",
|
|
6671
|
+
? (openBlock(), createElementBlock("div", _hoisted_9$1, [
|
|
6672
|
+
createElementVNode("div", _hoisted_10$1, [
|
|
6636
6673
|
createElementVNode("button", {
|
|
6637
6674
|
class: "button",
|
|
6638
6675
|
onClick: _cache[0] || (_cache[0] = (...args) => (_ctx.closeSkill && _ctx.closeSkill(...args)))
|
|
@@ -6642,9 +6679,9 @@ function render$a(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
6642
6679
|
style: normalizeStyle(_ctx.getSkillStyle(_ctx.chosenSkill))
|
|
6643
6680
|
}, null, 4)
|
|
6644
6681
|
]),
|
|
6645
|
-
createElementVNode("div",
|
|
6682
|
+
createElementVNode("div", _hoisted_11$1, [
|
|
6646
6683
|
createElementVNode("h2", null, toDisplayString(_ctx.getSkillName(_ctx.chosenSkill)), 1),
|
|
6647
|
-
|
|
6684
|
+
_hoisted_12$1,
|
|
6648
6685
|
createElementVNode("h3", null, "Level: " + toDisplayString(_ctx.skills[_ctx.chosenSkill].level), 1),
|
|
6649
6686
|
createElementVNode("p", null, toDisplayString(_ctx.skillConf[_ctx.chosenSkill].description), 1)
|
|
6650
6687
|
])
|
|
@@ -6656,7 +6693,7 @@ function render$a(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
6656
6693
|
}, 8, ["onClose"]))
|
|
6657
6694
|
}
|
|
6658
6695
|
|
|
6659
|
-
var css_248z$b = ".skills-modal {\n width: 800px;\n}\n\n.skills-container {\n display: grid;\n grid-auto-rows: auto;\n grid-template-columns: repeat(3, 1fr);\n grid-gap: 20px 20px;\n}\n\n.skill-display {\n width: 200px;\n height: 300px;\n position: relative;\n background-size: cover;\n}\n\n.skill-title {\n position: absolute;\n bottom: 0px;\n text-align: center;\n width: 100%;\n color: var(--skills-text-color);\n background: var(--skills-text-background);\n}\n\n.skill-level {\n position: absolute;\n top: 0;\n right: 0;\n font-weight: 700;\n font-size: 25px;\n color: var(--skills-level-color);\n width:
|
|
6696
|
+
var css_248z$b = ".skills-modal {\n width: 800px;\n}\n\n.skills-container {\n display: grid;\n grid-auto-rows: auto;\n grid-template-columns: repeat(3, 1fr);\n grid-gap: 20px 20px;\n}\n\n.skill-display {\n width: 200px;\n height: 300px;\n position: relative;\n background-size: cover;\n}\n\n.skill-title {\n position: absolute;\n bottom: 0px;\n text-align: center;\n width: 100%;\n color: var(--skills-text-color);\n background: var(--skills-text-background);\n}\n\n.skill-level {\n position: absolute;\n top: 0;\n right: 0;\n font-weight: 700;\n font-size: 25px;\n color: var(--skills-level-color);\n width: var(--skills-xp-bar-height);\n height: var(--skills-xp-bar-height);\n background-color: var(--skills-level-background);\n}\n\n.skill-description-container {\n justify-content: space-between;\n align-items: center;\n}\n\n.skill-left {\n flex-direction: column;\n}\n\n.skill-right {\n flex-direction: column;\n align-items: baseline;\n}\n\n.skill-xp-container {\n position: absolute;\n top: 0;\n left: 0;\n height: var(--skills-xp-bar-height);\n width: calc(100% - var(--skills-xp-bar-height));\n background-color: rgba(0, 0, 0, 0.5);\n}\n\n.skill-xp-bar {\n position: absolute;\n top: 0;\n left: 0;\n width: 50%;\n height: 100%;\n background-color: rgba(0, 0, 250, 0.5);\n}\n\n.skill-xp-text {\n z-index: 2;\n}\n";
|
|
6660
6697
|
styleInject(css_248z$b);
|
|
6661
6698
|
|
|
6662
6699
|
script$a.render = render$a;
|
|
@@ -6684,6 +6721,7 @@ var script$b = defineComponent({
|
|
|
6684
6721
|
gameLoaded: false,
|
|
6685
6722
|
loadingStep: 'Loading',
|
|
6686
6723
|
loadingPercentage: 0.1,
|
|
6724
|
+
hasSave: false,
|
|
6687
6725
|
};
|
|
6688
6726
|
},
|
|
6689
6727
|
props: {
|
|
@@ -6707,6 +6745,10 @@ var script$b = defineComponent({
|
|
|
6707
6745
|
await this.setupMachine();
|
|
6708
6746
|
this.loadingPercentage = 0.1;
|
|
6709
6747
|
this.gameLoaded = true;
|
|
6748
|
+
const save = this.getSaveFile();
|
|
6749
|
+
if (save) {
|
|
6750
|
+
this.hasSave = true;
|
|
6751
|
+
}
|
|
6710
6752
|
window.addEventListener('resize', debounce(() => {
|
|
6711
6753
|
this.updateScreenSize();
|
|
6712
6754
|
}, 100, {
|
|
@@ -6750,10 +6792,6 @@ var script$b = defineComponent({
|
|
|
6750
6792
|
}
|
|
6751
6793
|
return undefined;
|
|
6752
6794
|
},
|
|
6753
|
-
saveFile() {
|
|
6754
|
-
const saveString = localStorage.getItem(SAVE_FILE);
|
|
6755
|
-
return saveString;
|
|
6756
|
-
},
|
|
6757
6795
|
backgroundStyle() {
|
|
6758
6796
|
let height;
|
|
6759
6797
|
if (this.layoutMode === 'vertical') {
|
|
@@ -6899,14 +6937,19 @@ var script$b = defineComponent({
|
|
|
6899
6937
|
config: getConfig(),
|
|
6900
6938
|
});
|
|
6901
6939
|
},
|
|
6940
|
+
getSaveFile() {
|
|
6941
|
+
return localStorage.getItem(SAVE_FILE);
|
|
6942
|
+
},
|
|
6902
6943
|
async startGame() {
|
|
6903
6944
|
this.$store.dispatch('startMachine');
|
|
6904
6945
|
await this.$store.dispatch('runLine');
|
|
6905
6946
|
this.$store.commit('setFlowState', 'playing');
|
|
6947
|
+
this.hasSave = true;
|
|
6948
|
+
this.$store.dispatch('saveGame');
|
|
6906
6949
|
},
|
|
6907
6950
|
async loadGame() {
|
|
6908
|
-
this.$store.
|
|
6909
|
-
await this.$store.dispatch('loadGame', this.
|
|
6951
|
+
this.$store.dispatch('startMachine');
|
|
6952
|
+
await this.$store.dispatch('loadGame', this.getSaveFile());
|
|
6910
6953
|
this.$store.commit('setFlowState', 'playing');
|
|
6911
6954
|
},
|
|
6912
6955
|
isDialogActive(i) {
|
|
@@ -7069,7 +7112,7 @@ function render$b(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
7069
7112
|
class: "button menu-button start-button override",
|
|
7070
7113
|
onClick: _cache[0] || (_cache[0] = (...args) => (_ctx.startGame && _ctx.startGame(...args)))
|
|
7071
7114
|
}, " Start Game "),
|
|
7072
|
-
(_ctx.
|
|
7115
|
+
(_ctx.hasSave)
|
|
7073
7116
|
? (openBlock(), createElementBlock("button", {
|
|
7074
7117
|
key: 0,
|
|
7075
7118
|
class: "button menu-button continue-button override",
|
|
@@ -7091,7 +7134,7 @@ function render$b(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
7091
7134
|
], 4))
|
|
7092
7135
|
}
|
|
7093
7136
|
|
|
7094
|
-
var css_248z$c = "#app {\n background-color: var(--bg-color);\n width: 100%;\n height: 100%;\n position: absolute;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n color: var(--text-color);\n box-sizing: border-box;\n overflow: hidden;\n transform-origin: center center;\n}\n\n.game {\n background-color: var(--bg-color);\n position: relative;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n overflow: hidden;\n}\n\n.interact-button {\n height: 50px;\n border: 1px solid black;\n font-weight: bold;\n font-size: 20px;\n text-align: center;\n flex-grow: 2;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n\n.interact-button:not(:last-child) {\n margin-right: 10px;\n}\n\n.dialog-container {\n flex-shrink: 2;\n /* padding: 20px; */\n min-height: 100%;\n width: 100%;\n background-color: (var(--bg-color));\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n align-items: center;\n overflow-x: hidden;\n}\n\n.dialog {\n overflow-y: auto;\n overflow-x: hidden;\n position: relative;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n}\n\n.dialog::-webkit-scrollbar {\n display: none; /* webkit */\n}\n\n.dialog * {\n overflow-anchor: none;\n}\n\n.background {\n margin: 0;\n}\n\n#background-canvas {\n height: 100%;\n}\n\n.anchor {\n overflow-anchor: auto;\n height: 1px;\n}\n\n.menu-toggle {\n position: fixed;\n bottom: 0px;\n right: 15%;\n z-index: 2;\n}\n\n#game-title-container {\n margin-bottom: 50px;\n}\n\n#game-title-text {\n text-align: center;\n font-size: 50px;\n}\n\n.menu-button {\n font-size: 25px;\n}\
|
|
7137
|
+
var css_248z$c = "#app {\n background-color: var(--bg-color);\n width: 100%;\n height: 100%;\n position: absolute;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n color: var(--text-color);\n box-sizing: border-box;\n overflow: hidden;\n transform-origin: center center;\n}\n\n.game {\n background-color: var(--bg-color);\n position: relative;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n width: 100%;\n height: 100%;\n box-sizing: border-box;\n overflow: hidden;\n}\n\n.interact-button {\n height: 50px;\n border: 1px solid black;\n font-weight: bold;\n font-size: 20px;\n text-align: center;\n flex-grow: 2;\n display: flex;\n align-items: center;\n justify-content: center;\n box-sizing: border-box;\n}\n\n.interact-button:not(:last-child) {\n margin-right: 10px;\n}\n\n.dialog-container {\n flex-shrink: 2;\n /* padding: 20px; */\n min-height: 100%;\n width: 100%;\n background-color: (var(--bg-color));\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n justify-content: flex-end;\n align-items: center;\n overflow-x: hidden;\n}\n\n.dialog {\n overflow-y: auto;\n overflow-x: hidden;\n position: relative;\n -ms-overflow-style: none; /* IE and Edge */\n scrollbar-width: none; /* Firefox */\n}\n\n.dialog::-webkit-scrollbar {\n display: none; /* webkit */\n}\n\n.dialog * {\n overflow-anchor: none;\n}\n\n.background {\n margin: 0;\n}\n\n#background-canvas {\n height: 100%;\n}\n\n.anchor {\n overflow-anchor: auto;\n height: 1px;\n}\n\n.menu-toggle {\n position: fixed;\n bottom: 0px;\n right: 15%;\n z-index: 2;\n}\n\n#game-title-container {\n margin-bottom: 50px;\n}\n\n#game-title-text {\n text-align: center;\n font-size: 50px;\n}\n\n.menu-button {\n font-size: 25px;\n}\n";
|
|
7095
7138
|
styleInject(css_248z$c);
|
|
7096
7139
|
|
|
7097
7140
|
script$b.render = render$b;
|
|
@@ -7113,6 +7156,85 @@ function getSkillCheckState(ctx, skillCheckId) {
|
|
|
7113
7156
|
});
|
|
7114
7157
|
}
|
|
7115
7158
|
return skillCheck;
|
|
7159
|
+
}
|
|
7160
|
+
function getSkillCheckDifficultyScore(value, level) {
|
|
7161
|
+
return value - level * getConfig().skillChecks.skillMultiplier;
|
|
7162
|
+
}
|
|
7163
|
+
function getSkillCheckDifficultyText(value, level) {
|
|
7164
|
+
const difficultyScore = getSkillCheckDifficultyScore(value, level);
|
|
7165
|
+
const checks = getConfig().skillChecks;
|
|
7166
|
+
let found = false;
|
|
7167
|
+
let i = 0;
|
|
7168
|
+
let checkText = checks.difficultyText[0][1];
|
|
7169
|
+
while (!found) {
|
|
7170
|
+
if (checks.difficultyText.length > i) {
|
|
7171
|
+
if (difficultyScore >= checks.difficultyText[i][0]) {
|
|
7172
|
+
checkText = checks.difficultyText[i][1];
|
|
7173
|
+
}
|
|
7174
|
+
else {
|
|
7175
|
+
found = true;
|
|
7176
|
+
}
|
|
7177
|
+
}
|
|
7178
|
+
else {
|
|
7179
|
+
found = true;
|
|
7180
|
+
}
|
|
7181
|
+
i++;
|
|
7182
|
+
}
|
|
7183
|
+
return checkText;
|
|
7184
|
+
}
|
|
7185
|
+
function getSkillCheckText({ context, skill, skillCheckId, value, }) {
|
|
7186
|
+
const skillCheckState = getSkillCheckState(context, skillCheckId);
|
|
7187
|
+
const skillConfig = getSkillConfig(context.commit, skill);
|
|
7188
|
+
const level = context.state.skills[skill].level;
|
|
7189
|
+
const difficultyText = getSkillCheckDifficultyText(value, level);
|
|
7190
|
+
let allowed = true;
|
|
7191
|
+
let text = `<span class='skill-check'>[<span class='skill-check-name'>${skillConfig.name}</span> - `;
|
|
7192
|
+
if (skillCheckState.available) {
|
|
7193
|
+
text += ` <span class='skill-check-difficulty'>${difficultyText}</span>]</span>`;
|
|
7194
|
+
}
|
|
7195
|
+
else if (skillCheckState.passed) {
|
|
7196
|
+
text = '';
|
|
7197
|
+
}
|
|
7198
|
+
else {
|
|
7199
|
+
allowed = false;
|
|
7200
|
+
text += ` <span class='skill-check-difficulty'>${difficultyText}</span> - <span class='skill-check-failed'>FAILED</span>]</span>`;
|
|
7201
|
+
}
|
|
7202
|
+
return {
|
|
7203
|
+
difficultyText: text,
|
|
7204
|
+
allowed,
|
|
7205
|
+
};
|
|
7206
|
+
}
|
|
7207
|
+
function getPassiveSkillCheckText(ctx, success, params) {
|
|
7208
|
+
const skillConf = getSkillConfig(ctx.commit, params.skill);
|
|
7209
|
+
const difficultyText = getSkillCheckDifficultyText(params.value, ctx.state.skills[params.skill].level);
|
|
7210
|
+
return `<span class='passive-skill-check skill-check'>[<span class='skill-check-name'>${skillConf.name}</span> - <span class='skill-check-difficulty'>${difficultyText}</span> - ${success
|
|
7211
|
+
? '<span class="skill-check-success">Success</span>'
|
|
7212
|
+
: '<span class="skill-check-failed">Failure</span>'}]</span>`;
|
|
7213
|
+
}
|
|
7214
|
+
function calculateSkillCheckRoll(state, skill) {
|
|
7215
|
+
const { skillChecks } = getConfig();
|
|
7216
|
+
const unmodifiedRoll = Math.floor(Math.random() * skillChecks.rollRange);
|
|
7217
|
+
const rollModifier = state.skills[skill].level * skillChecks.skillMultiplier;
|
|
7218
|
+
const roll = unmodifiedRoll + rollModifier;
|
|
7219
|
+
logger.log(`[SKILL CHECK] Roll: ${roll}. (Base roll: ${unmodifiedRoll}, modifier: ${rollModifier} - Skill level: ${state.skills[skill].level})`);
|
|
7220
|
+
return {
|
|
7221
|
+
roll,
|
|
7222
|
+
unmodifiedRoll,
|
|
7223
|
+
};
|
|
7224
|
+
}
|
|
7225
|
+
function resolveSkillCheck(state, params) {
|
|
7226
|
+
const { skills, skillChecks } = getConfig();
|
|
7227
|
+
let success = true;
|
|
7228
|
+
const { roll } = calculateSkillCheckRoll(state, params.skill);
|
|
7229
|
+
if (roll <= skillChecks.failureChance - 1) {
|
|
7230
|
+
success = false;
|
|
7231
|
+
}
|
|
7232
|
+
const skill = skills[params.skill];
|
|
7233
|
+
if (roll < params.value) {
|
|
7234
|
+
success = false;
|
|
7235
|
+
}
|
|
7236
|
+
logger.log(`[SKILL CHECK ${skill.name}]: ${success ? '✅' : '❌'}`, `(${params.id}) - ${roll}/${params.value}`);
|
|
7237
|
+
return success;
|
|
7116
7238
|
}
|
|
7117
7239
|
|
|
7118
7240
|
function processSkillCheck(ctx, skillcheck) {
|
|
@@ -7126,25 +7248,13 @@ function processSkillCheck(ctx, skillcheck) {
|
|
|
7126
7248
|
}
|
|
7127
7249
|
function runSkillCheck(ctx, params) {
|
|
7128
7250
|
const { state } = ctx;
|
|
7129
|
-
const
|
|
7130
|
-
|
|
7131
|
-
let roll = Math.floor(Math.random() * skillChecks.rollRange);
|
|
7132
|
-
if (roll <= skillChecks.failureChance - 1) {
|
|
7133
|
-
success = false;
|
|
7134
|
-
}
|
|
7135
|
-
roll += state.skills[params.skill].level * skillChecks.skillMultiplier;
|
|
7136
|
-
const skill = skills[params.skill];
|
|
7137
|
-
logger.log(`roll `, roll, params.value);
|
|
7138
|
-
if (roll < params.value) {
|
|
7139
|
-
success = false;
|
|
7140
|
-
}
|
|
7251
|
+
const success = resolveSkillCheck(state, params);
|
|
7252
|
+
writeText(ctx, getPassiveSkillCheckText(ctx, success, params));
|
|
7141
7253
|
if (success) {
|
|
7142
7254
|
ctx.commit('passSkillCheck', params.id);
|
|
7143
|
-
writeText(ctx, `[${skill.name} - Success] ${params.success || ''}`);
|
|
7144
7255
|
return true;
|
|
7145
7256
|
}
|
|
7146
7257
|
ctx.commit('failSkillCheck', params.id);
|
|
7147
|
-
writeText(ctx, `[${skill.name} - Failure] ${params.failure || ''}`);
|
|
7148
7258
|
return false;
|
|
7149
7259
|
}
|
|
7150
7260
|
function runConditionCommand(ctx, command) {
|
|
@@ -7319,13 +7429,21 @@ async function runCommand(context, cmd, choices) {
|
|
|
7319
7429
|
if (!skillKey || !levelToAdd) {
|
|
7320
7430
|
error(commit, `add_level command needs a skill id and a value as parameters`);
|
|
7321
7431
|
}
|
|
7322
|
-
|
|
7432
|
+
dispatch('incrementSkill', {
|
|
7323
7433
|
skill: skillKey,
|
|
7324
7434
|
amount: levelToAdd,
|
|
7325
7435
|
});
|
|
7326
|
-
|
|
7327
|
-
|
|
7328
|
-
|
|
7436
|
+
return dispatch('nextLine');
|
|
7437
|
+
case 'add_xp':
|
|
7438
|
+
const xpKey = cmd.args[0];
|
|
7439
|
+
const xpToAdd = cmd.args[1];
|
|
7440
|
+
if (!xpKey || !xpToAdd) {
|
|
7441
|
+
error(commit, `add_xp command needs a skill id and a value as parameters`);
|
|
7442
|
+
}
|
|
7443
|
+
dispatch('addXp', {
|
|
7444
|
+
skill: xpKey,
|
|
7445
|
+
amount: xpToAdd,
|
|
7446
|
+
});
|
|
7329
7447
|
return dispatch('nextLine');
|
|
7330
7448
|
case 'add_stat':
|
|
7331
7449
|
const statKey = cmd.args[0];
|
|
@@ -7360,9 +7478,9 @@ async function runCommand(context, cmd, choices) {
|
|
|
7360
7478
|
catch (err) {
|
|
7361
7479
|
logger.log(`Error at: `, state.machine.stack[state.machine.stack.length - 1].label);
|
|
7362
7480
|
console.error(err);
|
|
7363
|
-
error(commit, `Narrat script runtime error at <span class="error-filename">${cmd.fileName}:${cmd.line + 1}</span>
|
|
7364
|
-
<b>${err}</b>
|
|
7365
|
-
Script: ${cmd.code}
|
|
7481
|
+
error(commit, `Narrat script runtime error at <span class="error-filename">${cmd.fileName}:${cmd.line + 1}</span>
|
|
7482
|
+
<b>${err}</b>
|
|
7483
|
+
Script: ${cmd.code}
|
|
7366
7484
|
Label: ${state.machine.stack[state.machine.stack.length - 1].label}`);
|
|
7367
7485
|
}
|
|
7368
7486
|
}
|
|
@@ -7426,6 +7544,12 @@ async function runChoice(context, cmd) {
|
|
|
7426
7544
|
if (choice.condition) {
|
|
7427
7545
|
return runCondition(context, choice.condition);
|
|
7428
7546
|
}
|
|
7547
|
+
if (choice.skillCheck) {
|
|
7548
|
+
if (!getSkillCheckState(context, choice.skillCheck.id).available &&
|
|
7549
|
+
choice.skillCheck.hideAfterRoll) {
|
|
7550
|
+
return false;
|
|
7551
|
+
}
|
|
7552
|
+
}
|
|
7429
7553
|
return true;
|
|
7430
7554
|
})
|
|
7431
7555
|
.map((choice) => {
|
|
@@ -7433,35 +7557,14 @@ async function runChoice(context, cmd) {
|
|
|
7433
7557
|
let choiceAllowed = true;
|
|
7434
7558
|
if (choice.skillCheck) {
|
|
7435
7559
|
const check = choice.skillCheck;
|
|
7436
|
-
const
|
|
7437
|
-
|
|
7438
|
-
|
|
7439
|
-
|
|
7440
|
-
|
|
7441
|
-
|
|
7442
|
-
|
|
7443
|
-
|
|
7444
|
-
while (!found) {
|
|
7445
|
-
if (config.skillChecks.difficultyText.length > i) {
|
|
7446
|
-
if (difficultyScore >= config.skillChecks.difficultyText[i][0]) {
|
|
7447
|
-
checkText = config.skillChecks.difficultyText[i][1];
|
|
7448
|
-
}
|
|
7449
|
-
else {
|
|
7450
|
-
found = true;
|
|
7451
|
-
}
|
|
7452
|
-
}
|
|
7453
|
-
else {
|
|
7454
|
-
found = true;
|
|
7455
|
-
}
|
|
7456
|
-
i++;
|
|
7457
|
-
}
|
|
7458
|
-
if (!skillCheckState.available) {
|
|
7459
|
-
choiceAllowed = false;
|
|
7460
|
-
text = `[${skill.name} - Failed] ${text}`;
|
|
7461
|
-
}
|
|
7462
|
-
else if (!skillCheckState.passed) {
|
|
7463
|
-
text = `[${skill.name} - ${checkText}] ${text}`;
|
|
7464
|
-
}
|
|
7560
|
+
const { difficultyText, allowed } = getSkillCheckText({
|
|
7561
|
+
context,
|
|
7562
|
+
skill: check.skill,
|
|
7563
|
+
skillCheckId: check.id,
|
|
7564
|
+
value: check.value,
|
|
7565
|
+
});
|
|
7566
|
+
text = `${difficultyText} ${text}`;
|
|
7567
|
+
choiceAllowed = allowed;
|
|
7465
7568
|
}
|
|
7466
7569
|
const result = {
|
|
7467
7570
|
choice: text,
|
|
@@ -7543,6 +7646,10 @@ function add_level(ctx) {
|
|
|
7543
7646
|
ctx.command.commandType = 'add_level';
|
|
7544
7647
|
ctx.currentLine++;
|
|
7545
7648
|
}
|
|
7649
|
+
function add_xp(ctx) {
|
|
7650
|
+
ctx.command.commandType = 'add_xp';
|
|
7651
|
+
ctx.currentLine++;
|
|
7652
|
+
}
|
|
7546
7653
|
function set_stat(ctx) {
|
|
7547
7654
|
ctx.command.commandType = 'set_stat';
|
|
7548
7655
|
ctx.currentLine++;
|
|
@@ -7663,6 +7770,7 @@ const parserFunctions = {
|
|
|
7663
7770
|
wait,
|
|
7664
7771
|
text,
|
|
7665
7772
|
add_level,
|
|
7773
|
+
add_xp,
|
|
7666
7774
|
notify,
|
|
7667
7775
|
set_stat,
|
|
7668
7776
|
add_stat,
|
|
@@ -7680,6 +7788,7 @@ function parseChoiceOption(ctx, choice, index) {
|
|
|
7680
7788
|
ctx.parserContext.error(choice.line, `Skillchecks need 4 arguments!`);
|
|
7681
7789
|
}
|
|
7682
7790
|
choiceText = choice.args[3];
|
|
7791
|
+
const hideAfterRoll = choice.args.length >= 5;
|
|
7683
7792
|
const successBranch = choice.branch[0];
|
|
7684
7793
|
const failureBranch = choice.branch[1];
|
|
7685
7794
|
const success = {
|
|
@@ -7698,6 +7807,7 @@ function parseChoiceOption(ctx, choice, index) {
|
|
|
7698
7807
|
id: choice.args[0],
|
|
7699
7808
|
skill: choice.args[1],
|
|
7700
7809
|
value: choice.args[2],
|
|
7810
|
+
hideAfterRoll,
|
|
7701
7811
|
success,
|
|
7702
7812
|
failure,
|
|
7703
7813
|
};
|
|
@@ -7913,6 +8023,138 @@ function randomId() {
|
|
|
7913
8023
|
return `${Date.now() - Math.floor(Math.random() * 99999999)}`;
|
|
7914
8024
|
}
|
|
7915
8025
|
|
|
8026
|
+
var isMergeableObject = function isMergeableObject(value) {
|
|
8027
|
+
return isNonNullObject(value)
|
|
8028
|
+
&& !isSpecial(value)
|
|
8029
|
+
};
|
|
8030
|
+
|
|
8031
|
+
function isNonNullObject(value) {
|
|
8032
|
+
return !!value && typeof value === 'object'
|
|
8033
|
+
}
|
|
8034
|
+
|
|
8035
|
+
function isSpecial(value) {
|
|
8036
|
+
var stringValue = Object.prototype.toString.call(value);
|
|
8037
|
+
|
|
8038
|
+
return stringValue === '[object RegExp]'
|
|
8039
|
+
|| stringValue === '[object Date]'
|
|
8040
|
+
|| isReactElement(value)
|
|
8041
|
+
}
|
|
8042
|
+
|
|
8043
|
+
// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25
|
|
8044
|
+
var canUseSymbol = typeof Symbol === 'function' && Symbol.for;
|
|
8045
|
+
var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;
|
|
8046
|
+
|
|
8047
|
+
function isReactElement(value) {
|
|
8048
|
+
return value.$$typeof === REACT_ELEMENT_TYPE
|
|
8049
|
+
}
|
|
8050
|
+
|
|
8051
|
+
function emptyTarget(val) {
|
|
8052
|
+
return Array.isArray(val) ? [] : {}
|
|
8053
|
+
}
|
|
8054
|
+
|
|
8055
|
+
function cloneUnlessOtherwiseSpecified(value, options) {
|
|
8056
|
+
return (options.clone !== false && options.isMergeableObject(value))
|
|
8057
|
+
? deepmerge(emptyTarget(value), value, options)
|
|
8058
|
+
: value
|
|
8059
|
+
}
|
|
8060
|
+
|
|
8061
|
+
function defaultArrayMerge(target, source, options) {
|
|
8062
|
+
return target.concat(source).map(function(element) {
|
|
8063
|
+
return cloneUnlessOtherwiseSpecified(element, options)
|
|
8064
|
+
})
|
|
8065
|
+
}
|
|
8066
|
+
|
|
8067
|
+
function getMergeFunction(key, options) {
|
|
8068
|
+
if (!options.customMerge) {
|
|
8069
|
+
return deepmerge
|
|
8070
|
+
}
|
|
8071
|
+
var customMerge = options.customMerge(key);
|
|
8072
|
+
return typeof customMerge === 'function' ? customMerge : deepmerge
|
|
8073
|
+
}
|
|
8074
|
+
|
|
8075
|
+
function getEnumerableOwnPropertySymbols(target) {
|
|
8076
|
+
return Object.getOwnPropertySymbols
|
|
8077
|
+
? Object.getOwnPropertySymbols(target).filter(function(symbol) {
|
|
8078
|
+
return target.propertyIsEnumerable(symbol)
|
|
8079
|
+
})
|
|
8080
|
+
: []
|
|
8081
|
+
}
|
|
8082
|
+
|
|
8083
|
+
function getKeys(target) {
|
|
8084
|
+
return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target))
|
|
8085
|
+
}
|
|
8086
|
+
|
|
8087
|
+
function propertyIsOnObject(object, property) {
|
|
8088
|
+
try {
|
|
8089
|
+
return property in object
|
|
8090
|
+
} catch(_) {
|
|
8091
|
+
return false
|
|
8092
|
+
}
|
|
8093
|
+
}
|
|
8094
|
+
|
|
8095
|
+
// Protects from prototype poisoning and unexpected merging up the prototype chain.
|
|
8096
|
+
function propertyIsUnsafe(target, key) {
|
|
8097
|
+
return propertyIsOnObject(target, key) // Properties are safe to merge if they don't exist in the target yet,
|
|
8098
|
+
&& !(Object.hasOwnProperty.call(target, key) // unsafe if they exist up the prototype chain,
|
|
8099
|
+
&& Object.propertyIsEnumerable.call(target, key)) // and also unsafe if they're nonenumerable.
|
|
8100
|
+
}
|
|
8101
|
+
|
|
8102
|
+
function mergeObject(target, source, options) {
|
|
8103
|
+
var destination = {};
|
|
8104
|
+
if (options.isMergeableObject(target)) {
|
|
8105
|
+
getKeys(target).forEach(function(key) {
|
|
8106
|
+
destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);
|
|
8107
|
+
});
|
|
8108
|
+
}
|
|
8109
|
+
getKeys(source).forEach(function(key) {
|
|
8110
|
+
if (propertyIsUnsafe(target, key)) {
|
|
8111
|
+
return
|
|
8112
|
+
}
|
|
8113
|
+
|
|
8114
|
+
if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {
|
|
8115
|
+
destination[key] = getMergeFunction(key, options)(target[key], source[key], options);
|
|
8116
|
+
} else {
|
|
8117
|
+
destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);
|
|
8118
|
+
}
|
|
8119
|
+
});
|
|
8120
|
+
return destination
|
|
8121
|
+
}
|
|
8122
|
+
|
|
8123
|
+
function deepmerge(target, source, options) {
|
|
8124
|
+
options = options || {};
|
|
8125
|
+
options.arrayMerge = options.arrayMerge || defaultArrayMerge;
|
|
8126
|
+
options.isMergeableObject = options.isMergeableObject || isMergeableObject;
|
|
8127
|
+
// cloneUnlessOtherwiseSpecified is added to `options` so that custom arrayMerge()
|
|
8128
|
+
// implementations can use it. The caller may not replace it.
|
|
8129
|
+
options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;
|
|
8130
|
+
|
|
8131
|
+
var sourceIsArray = Array.isArray(source);
|
|
8132
|
+
var targetIsArray = Array.isArray(target);
|
|
8133
|
+
var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;
|
|
8134
|
+
|
|
8135
|
+
if (!sourceAndTargetTypesMatch) {
|
|
8136
|
+
return cloneUnlessOtherwiseSpecified(source, options)
|
|
8137
|
+
} else if (sourceIsArray) {
|
|
8138
|
+
return options.arrayMerge(target, source, options)
|
|
8139
|
+
} else {
|
|
8140
|
+
return mergeObject(target, source, options)
|
|
8141
|
+
}
|
|
8142
|
+
}
|
|
8143
|
+
|
|
8144
|
+
deepmerge.all = function deepmergeAll(array, options) {
|
|
8145
|
+
if (!Array.isArray(array)) {
|
|
8146
|
+
throw new Error('first argument should be an array')
|
|
8147
|
+
}
|
|
8148
|
+
|
|
8149
|
+
return array.reduce(function(prev, next) {
|
|
8150
|
+
return deepmerge(prev, next, options)
|
|
8151
|
+
}, {})
|
|
8152
|
+
};
|
|
8153
|
+
|
|
8154
|
+
var deepmerge_1 = deepmerge;
|
|
8155
|
+
|
|
8156
|
+
var cjs = deepmerge_1;
|
|
8157
|
+
|
|
7916
8158
|
let key = Symbol('Store Injection Key');
|
|
7917
8159
|
let store;
|
|
7918
8160
|
function setupStore(options) {
|
|
@@ -7923,7 +8165,6 @@ function setupStore(options) {
|
|
|
7923
8165
|
}
|
|
7924
8166
|
// define injection key
|
|
7925
8167
|
key = Symbol('Store Injection Key');
|
|
7926
|
-
logger.setDebug(options.debug);
|
|
7927
8168
|
logger.log('setup store');
|
|
7928
8169
|
store = createStore({
|
|
7929
8170
|
state: {
|
|
@@ -7979,7 +8220,11 @@ function setupStore(options) {
|
|
|
7979
8220
|
},
|
|
7980
8221
|
},
|
|
7981
8222
|
actions: {
|
|
7982
|
-
async setupMachine(
|
|
8223
|
+
async setupMachine(ctx, payload) {
|
|
8224
|
+
const { commit } = ctx;
|
|
8225
|
+
if (payload.config.audioOptions.defaultMusic) {
|
|
8226
|
+
changeMusic(ctx, payload.config.audioOptions.defaultMusic);
|
|
8227
|
+
}
|
|
7983
8228
|
const { scriptPaths } = payload;
|
|
7984
8229
|
const filePromises = [];
|
|
7985
8230
|
for (const path of scriptPaths) {
|
|
@@ -8000,6 +8245,7 @@ function setupStore(options) {
|
|
|
8000
8245
|
commit('setScript', scripts);
|
|
8001
8246
|
},
|
|
8002
8247
|
async startMachine({ commit, dispatch, state }) {
|
|
8248
|
+
dispatch('stopMusic');
|
|
8003
8249
|
const config = getConfig();
|
|
8004
8250
|
commit('setButtons', config.buttons);
|
|
8005
8251
|
commit('setupSkills', config.skills);
|
|
@@ -8066,26 +8312,59 @@ function setupStore(options) {
|
|
|
8066
8312
|
dispatch('runLabel', save.lastLabel);
|
|
8067
8313
|
}
|
|
8068
8314
|
},
|
|
8069
|
-
|
|
8315
|
+
stopMusic(ctx) {
|
|
8316
|
+
stopAudio(ctx.commit, ctx.state.audio.currentMusic);
|
|
8317
|
+
},
|
|
8318
|
+
menuReturn(ctx) {
|
|
8319
|
+
ctx.commit('reset');
|
|
8320
|
+
ctx.dispatch('stopMusic');
|
|
8321
|
+
ctx.commit('setFlowState', 'menu');
|
|
8322
|
+
if (getConfig().audioOptions.defaultMusic) {
|
|
8323
|
+
changeMusic(ctx, getConfig().audioOptions.defaultMusic);
|
|
8324
|
+
}
|
|
8325
|
+
},
|
|
8326
|
+
async addNotification(ctx, text) {
|
|
8327
|
+
const { commit } = ctx;
|
|
8070
8328
|
const id = `${Date.now()}-${Math.random() * 10000}`;
|
|
8071
8329
|
const notification = {
|
|
8072
8330
|
text,
|
|
8073
8331
|
};
|
|
8074
8332
|
commit('addNotification', { id, notification });
|
|
8333
|
+
if (getConfig().notifications.alsoPrintInDialogue) {
|
|
8334
|
+
writeText(ctx, `[NOTIFICATION] ${text}`);
|
|
8335
|
+
}
|
|
8075
8336
|
await timeout(getConfig().notifications.timeOnScreen * 1000);
|
|
8076
8337
|
commit('deleteNotification', id);
|
|
8077
8338
|
},
|
|
8339
|
+
incrementSkill({ dispatch, state }, { skill, amount }) {
|
|
8340
|
+
state.skills[skill].level += amount;
|
|
8341
|
+
dispatch('levelledUp', skill);
|
|
8342
|
+
},
|
|
8343
|
+
levelledUp({ dispatch, state }, skill) {
|
|
8344
|
+
const skillName = getConfig().skills[skill].name;
|
|
8345
|
+
const skillLevel = state.skills[skill].level;
|
|
8346
|
+
dispatch('addNotification', `Your skill in ${skillName} is now level ${skillLevel}`);
|
|
8347
|
+
},
|
|
8348
|
+
addXp({ state, dispatch }, { skill, amount }) {
|
|
8349
|
+
const skillState = state.skills[skill];
|
|
8350
|
+
skillState.xp += amount;
|
|
8351
|
+
if (skillState.xp > getConfig().skillOptions.xpPerLevel) {
|
|
8352
|
+
skillState.level += 1;
|
|
8353
|
+
skillState.xp = 0;
|
|
8354
|
+
dispatch('levelledUp', skill);
|
|
8355
|
+
}
|
|
8356
|
+
},
|
|
8078
8357
|
},
|
|
8079
8358
|
mutations: {
|
|
8080
8359
|
setLoadedData(state, save) {
|
|
8081
8360
|
state.machine.data = save.data;
|
|
8082
|
-
state.skills = save.skills;
|
|
8361
|
+
state.skills = cjs(state.skillChecks, save.skills);
|
|
8083
8362
|
state.dialog = save.dialog;
|
|
8084
|
-
state.buttons = save.buttons;
|
|
8363
|
+
state.buttons = cjs(state.buttons, save.buttons);
|
|
8085
8364
|
state.lastLabel = save.lastLabel;
|
|
8086
|
-
state.skillChecks = save.skillChecks;
|
|
8365
|
+
state.skillChecks = cjs(state.skillChecks, save.skillChecks);
|
|
8087
8366
|
state.playTime.previousPlaytime = save.playTime;
|
|
8088
|
-
state.hudStats = save.hudStats;
|
|
8367
|
+
state.hudStats = cjs(state.hudStats, save.hudStats);
|
|
8089
8368
|
state.currentScreen = save.currentScreen;
|
|
8090
8369
|
state.audio.currentMusic = save.audio.currentMusic;
|
|
8091
8370
|
},
|
|
@@ -8123,6 +8402,7 @@ function setupStore(options) {
|
|
|
8123
8402
|
for (const skill in skills) {
|
|
8124
8403
|
state.skills[skill] = {
|
|
8125
8404
|
level: skills[skill].startingLevel || 0,
|
|
8405
|
+
xp: 0,
|
|
8126
8406
|
};
|
|
8127
8407
|
}
|
|
8128
8408
|
},
|
|
@@ -8131,9 +8411,6 @@ function setupStore(options) {
|
|
|
8131
8411
|
state.hudStats[stat] = stats[stat].startingValue;
|
|
8132
8412
|
}
|
|
8133
8413
|
},
|
|
8134
|
-
incrementSkill(state, { skill, amount }) {
|
|
8135
|
-
state.skills[skill].level += amount;
|
|
8136
|
-
},
|
|
8137
8414
|
setStat(state, { stat, amount }) {
|
|
8138
8415
|
state.hudStats[stat] = amount;
|
|
8139
8416
|
},
|
|
@@ -8350,9 +8627,10 @@ function mouseclick(e) {
|
|
|
8350
8627
|
let app;
|
|
8351
8628
|
let store$2;
|
|
8352
8629
|
async function startApp(config, options) {
|
|
8630
|
+
logManager.setupDebugger(options.debug);
|
|
8353
8631
|
const configFile = await getFile('data/config.json');
|
|
8354
8632
|
setConfig(JSON.parse(configFile));
|
|
8355
|
-
console.log('%c Narrat game engine – 0.
|
|
8633
|
+
console.log('%c Narrat game engine – 0.10.0 - June 8, 2022 02:13:08', 'background: #222; color: #bada55');
|
|
8356
8634
|
const storeSetup = setupStore(options);
|
|
8357
8635
|
store$2 = storeSetup.store;
|
|
8358
8636
|
app = createApp(script$b, {
|