narrat 1.3.0 → 1.3.3
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/lib/components/MainMenu.vue.d.ts +6 -9
- package/lib/components/{menu.vue.d.ts → Menu.vue.d.ts} +0 -0
- package/lib/components/Skills.vue.d.ts +3 -5
- package/lib/components/inventory.vue.d.ts +8 -5
- package/lib/components/quests.vue.d.ts +3 -5
- package/lib/config.d.ts +10 -0
- package/lib/index.esm.js +236 -112
- package/lib/index.js +236 -112
- package/lib/stores/dialog-store.d.ts +3 -1
- package/lib/stores/inventory-store.d.ts +10 -0
- package/lib/stores/main-store.d.ts +10 -3
- package/lib/stores/vm-store.d.ts +2 -2
- package/lib/vm/commands/inventory-commands.d.ts +5 -0
- package/package.json +1 -1
- package/lib/demo/bitsy/bitsy.d.ts +0 -27
- package/lib/display.d.ts +0 -2
- package/lib/lib.d.ts +0 -6
- package/lib/plugins.d.ts +0 -22
- package/lib/renpy/command-parser-functions.d.ts +0 -14
- package/lib/renpy/renpy-helpers.d.ts +0 -14
- package/lib/renpy/renpy-parser.d.ts +0 -9
- package/lib/store.d.ts +0 -12
- package/lib/vm/commands/add_item.d.ts +0 -2
- package/lib/vm/commands/remove_item.d.ts +0 -2
- package/lib/vm/renpy-vm.d.ts +0 -11
package/lib/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// Version: 1.3.
|
|
1
|
+
// Version: 1.3.3 - July 1, 2022 10:14:02
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
4
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
@@ -34,7 +34,7 @@ function styleInject(css, ref) {
|
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
|
|
37
|
-
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 --inventory-text-background: rgba(0, 0, 0, 0.5);\n --inventory-text-color: var(--text-color);\n --inventory-amount-background: rgba(0, 0, 0, 0.5);\n --inventory-amount-color: orange;\n --quest-title-color: yellow;\n --completed-quest-title-color: grey;\n --objective-in-progress-color: white;\n --objective-completed-color: grey;\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.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.\r\nOtherwise hovering choices doesn't change the color of skill check prompts. */\n\n.dialog-choice:not(:hover) > .skill-check-name,\r\n.passive-skill-check > .skill-check-name {\n color: var(--skill-check-name-color);\n}\n\n.dialog-choice:not(:hover) > .skill-check-difficulty,\r\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,\r\n.passive-skill-check > .skill-check-success {\n color: var(--skill-check-success);\n}\n\n.dialog-choice:not(:hover) > .skill-check-failed,\r\n.passive-skill-check > .skill-check-failed {\n color: var(--skill-check-failed);\n}\n\n.dialog-choice:not(:hover) > .skill-check,\r\n.passive-skill-check.skill-check {\n color: var(--skill-check-color);\n}\n\n.narrat-canvas {\n position: absolute;\n height: 100%;\n top: 0;\n left: 0;\n}\n\n/* Looks ugly */\n\n/* @keyframes strike-anim {\r\n 0% {\r\n width: 0;\r\n }\r\n 100% {\r\n width: 100%;\r\n }\r\n}\r\n.strike-anim {\r\n position: relative;\r\n}\r\n.strike-anim::after {\r\n content: ' ';\r\n position: absolute;\r\n top: 50%;\r\n left: 0;\r\n width: 100%;\r\n height: 1px;\r\n background: var(--text-color);\r\n animation-name: strike-anim;\r\n animation-duration: 0.5s;\r\n animation-timing-function: linear;\r\n animation-iteration-count: 1;\r\n animation-fill-mode: forwards;\r\n} */\n\n#touchTrigger {\n pointer-events: none;\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";
|
|
37
|
+
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 --inventory-text-background: rgba(0, 0, 0, 0.5);\n --inventory-text-color: var(--text-color);\n --inventory-amount-background: rgba(0, 0, 0, 0.5);\n --inventory-amount-color: orange;\n --quest-title-color: yellow;\n --completed-quest-title-color: grey;\n --objective-in-progress-color: white;\n --objective-completed-color: grey;\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.disabled {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n pointer-events: none;\n}\n\n.button.disabled {\n box-shadow: unset;\n color: grey;\n background: var(--border-color);\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.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.\r\nOtherwise hovering choices doesn't change the color of skill check prompts. */\n\n.dialog-choice:not(:hover) > .skill-check-name,\r\n.passive-skill-check > .skill-check-name {\n color: var(--skill-check-name-color);\n}\n\n.dialog-choice:not(:hover) > .skill-check-difficulty,\r\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,\r\n.passive-skill-check > .skill-check-success {\n color: var(--skill-check-success);\n}\n\n.dialog-choice:not(:hover) > .skill-check-failed,\r\n.passive-skill-check > .skill-check-failed {\n color: var(--skill-check-failed);\n}\n\n.dialog-choice:not(:hover) > .skill-check,\r\n.passive-skill-check.skill-check {\n color: var(--skill-check-color);\n}\n\n.narrat-canvas {\n position: absolute;\n height: 100%;\n top: 0;\n left: 0;\n}\n\n/* Looks ugly */\n\n/* @keyframes strike-anim {\r\n 0% {\r\n width: 0;\r\n }\r\n 100% {\r\n width: 100%;\r\n }\r\n}\r\n.strike-anim {\r\n position: relative;\r\n}\r\n.strike-anim::after {\r\n content: ' ';\r\n position: absolute;\r\n top: 50%;\r\n left: 0;\r\n width: 100%;\r\n height: 1px;\r\n background: var(--text-color);\r\n animation-name: strike-anim;\r\n animation-duration: 0.5s;\r\n animation-timing-function: linear;\r\n animation-iteration-count: 1;\r\n animation-fill-mode: forwards;\r\n} */\n\n#touchTrigger {\n pointer-events: none;\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";
|
|
38
38
|
styleInject(css_248z);
|
|
39
39
|
|
|
40
40
|
const f=vue.ref([]),v=vue.ref(null),m=vue.ref(null),g=vue.ref(null),h=vue.reactive({current:""}),y=[],b=vue.ref(!1),k=vue.readonly(f),w=vue.readonly(v),M=vue.readonly(m),q=vue.readonly(g),x=vue.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;}};
|
|
@@ -102,6 +102,11 @@ const defaultConfig = {
|
|
|
102
102
|
},
|
|
103
103
|
hudStats: {},
|
|
104
104
|
items: {},
|
|
105
|
+
interactionTags: {
|
|
106
|
+
default: {
|
|
107
|
+
onlyInteractOutsideOfScripts: true,
|
|
108
|
+
},
|
|
109
|
+
},
|
|
105
110
|
quests: {},
|
|
106
111
|
};
|
|
107
112
|
|
|
@@ -3592,15 +3597,18 @@ const useNotifications = pinia.defineStore('notifications', {
|
|
|
3592
3597
|
const useInventory = pinia.defineStore('inventory', {
|
|
3593
3598
|
state: () => ({
|
|
3594
3599
|
items: {},
|
|
3600
|
+
interactionTags: {},
|
|
3595
3601
|
}),
|
|
3596
3602
|
actions: {
|
|
3597
3603
|
generateSaveData() {
|
|
3598
3604
|
return {
|
|
3599
3605
|
items: this.items,
|
|
3606
|
+
interactionTags: this.interactionTags,
|
|
3600
3607
|
};
|
|
3601
3608
|
},
|
|
3602
3609
|
loadSaveData(save) {
|
|
3603
3610
|
this.items = { ...this.items, ...save.items };
|
|
3611
|
+
this.interactionTags = { ...save.interactionTags };
|
|
3604
3612
|
},
|
|
3605
3613
|
setupItems(items) {
|
|
3606
3614
|
Object.keys(items).forEach((key) => {
|
|
@@ -3626,6 +3634,49 @@ const useInventory = pinia.defineStore('inventory', {
|
|
|
3626
3634
|
}
|
|
3627
3635
|
useNotifications().addNotification(`Received item: ${getItemConfig(item.id).name} x ${item.amount}`);
|
|
3628
3636
|
},
|
|
3637
|
+
enableInteraction(tag) {
|
|
3638
|
+
if (!tag) {
|
|
3639
|
+
tag = 'default';
|
|
3640
|
+
}
|
|
3641
|
+
this.interactionTags[tag] = {
|
|
3642
|
+
blockedInteraction: false,
|
|
3643
|
+
};
|
|
3644
|
+
},
|
|
3645
|
+
disableInteraction(tag) {
|
|
3646
|
+
if (!tag) {
|
|
3647
|
+
tag = 'default';
|
|
3648
|
+
}
|
|
3649
|
+
this.interactionTags[tag] = {
|
|
3650
|
+
blockedInteraction: true,
|
|
3651
|
+
};
|
|
3652
|
+
},
|
|
3653
|
+
onScriptStart() {
|
|
3654
|
+
const tags = getConfig().interactionTags;
|
|
3655
|
+
Object.keys(tags).forEach((tag) => {
|
|
3656
|
+
const conf = tags[tag];
|
|
3657
|
+
if (conf.onlyInteractOutsideOfScripts) {
|
|
3658
|
+
this.disableInteraction(tag);
|
|
3659
|
+
}
|
|
3660
|
+
});
|
|
3661
|
+
},
|
|
3662
|
+
onScriptEnd() {
|
|
3663
|
+
const tags = getConfig().interactionTags;
|
|
3664
|
+
Object.keys(tags).forEach((tag) => {
|
|
3665
|
+
const conf = tags[tag];
|
|
3666
|
+
if (conf.onlyInteractOutsideOfScripts) {
|
|
3667
|
+
this.enableInteraction(tag);
|
|
3668
|
+
}
|
|
3669
|
+
});
|
|
3670
|
+
},
|
|
3671
|
+
isInteractionTagBlocked(tag) {
|
|
3672
|
+
if (!tag) {
|
|
3673
|
+
tag = 'default';
|
|
3674
|
+
}
|
|
3675
|
+
if (this.interactionTags[tag]) {
|
|
3676
|
+
return this.interactionTags[tag].blockedInteraction;
|
|
3677
|
+
}
|
|
3678
|
+
return false;
|
|
3679
|
+
},
|
|
3629
3680
|
remove(item) {
|
|
3630
3681
|
const existingItem = this.getExistingItem(item.id);
|
|
3631
3682
|
if (existingItem) {
|
|
@@ -4330,6 +4381,7 @@ const useVM = pinia.defineStore('vm', {
|
|
|
4330
4381
|
newStack.label = this.currentStack.label;
|
|
4331
4382
|
}
|
|
4332
4383
|
this.stack.push(newStack);
|
|
4384
|
+
return this.runLine();
|
|
4333
4385
|
},
|
|
4334
4386
|
async nextLine() {
|
|
4335
4387
|
if (this.stack.length === 0) {
|
|
@@ -4357,6 +4409,7 @@ const useVM = pinia.defineStore('vm', {
|
|
|
4357
4409
|
this.stack.splice(this.stack.length - 1, 1);
|
|
4358
4410
|
},
|
|
4359
4411
|
finishGame() {
|
|
4412
|
+
useInventory().onScriptEnd();
|
|
4360
4413
|
const mainStore = useMain();
|
|
4361
4414
|
if (mainStore.options.debug) {
|
|
4362
4415
|
const dialogStore = useDialogStore();
|
|
@@ -4368,9 +4421,13 @@ const useVM = pinia.defineStore('vm', {
|
|
|
4368
4421
|
},
|
|
4369
4422
|
async runLine() {
|
|
4370
4423
|
const cmd = this.currentLine;
|
|
4424
|
+
useInventory().onScriptStart();
|
|
4371
4425
|
await runCommand(cmd);
|
|
4372
4426
|
},
|
|
4373
|
-
async runLabelFunction(label) {
|
|
4427
|
+
async runLabelFunction(label, comeBackToSameLine) {
|
|
4428
|
+
if (comeBackToSameLine) {
|
|
4429
|
+
this.currentStack.currentIndex--;
|
|
4430
|
+
}
|
|
4374
4431
|
const branch = this.script[label];
|
|
4375
4432
|
if (!branch) {
|
|
4376
4433
|
console.error(`Label ${branch} doesn't exist`);
|
|
@@ -4380,8 +4437,7 @@ const useVM = pinia.defineStore('vm', {
|
|
|
4380
4437
|
branch: branch,
|
|
4381
4438
|
label,
|
|
4382
4439
|
};
|
|
4383
|
-
this.addStack(stack);
|
|
4384
|
-
await this.runLine();
|
|
4440
|
+
await this.addStack(stack);
|
|
4385
4441
|
},
|
|
4386
4442
|
runLabel(label) {
|
|
4387
4443
|
const branch = this.script[label];
|
|
@@ -4456,6 +4512,11 @@ const useDialogStore = pinia.defineStore('dialog', {
|
|
|
4456
4512
|
this.dialog = [];
|
|
4457
4513
|
},
|
|
4458
4514
|
},
|
|
4515
|
+
getters: {
|
|
4516
|
+
currentDialog() {
|
|
4517
|
+
return this.dialog[this.dialog.length - 1];
|
|
4518
|
+
},
|
|
4519
|
+
},
|
|
4459
4520
|
});
|
|
4460
4521
|
|
|
4461
4522
|
// Create a pinia store named hud with a state using the type HudState, and save type HudSave, with actions:
|
|
@@ -4646,6 +4707,7 @@ function conditionFunction(condition) {
|
|
|
4646
4707
|
skillChecks: skillStore.skillChecks,
|
|
4647
4708
|
stats: useHud().hudStats,
|
|
4648
4709
|
items: inventory.items,
|
|
4710
|
+
quests: useQuests().quests,
|
|
4649
4711
|
itemAmount: (id) => {
|
|
4650
4712
|
return useInventory().getItemAmount(id);
|
|
4651
4713
|
},
|
|
@@ -4766,8 +4828,7 @@ async function playerAnswered(choiceIndex) {
|
|
|
4766
4828
|
branch: newBranch,
|
|
4767
4829
|
};
|
|
4768
4830
|
const vmStore = useVM();
|
|
4769
|
-
vmStore.addStack(newStack);
|
|
4770
|
-
vmStore.runLine();
|
|
4831
|
+
return vmStore.addStack(newStack);
|
|
4771
4832
|
}
|
|
4772
4833
|
else {
|
|
4773
4834
|
vmStore.nextLine();
|
|
@@ -4912,7 +4973,12 @@ const useMain = pinia.defineStore('main', {
|
|
|
4912
4973
|
this.modal = false;
|
|
4913
4974
|
},
|
|
4914
4975
|
toggleMenu() {
|
|
4915
|
-
|
|
4976
|
+
if (this.modal) {
|
|
4977
|
+
this.modal = false;
|
|
4978
|
+
}
|
|
4979
|
+
else {
|
|
4980
|
+
this.modal = 'menu';
|
|
4981
|
+
}
|
|
4916
4982
|
},
|
|
4917
4983
|
pause() {
|
|
4918
4984
|
this.paused = true;
|
|
@@ -7234,6 +7300,9 @@ var script$3 = vue.defineComponent({
|
|
|
7234
7300
|
this.showDebug = true;
|
|
7235
7301
|
const vmStore = useVM();
|
|
7236
7302
|
const mainStore = useMain();
|
|
7303
|
+
const questsStore = useQuests();
|
|
7304
|
+
const inventoryStore = useInventory();
|
|
7305
|
+
const skillsStore = useSkills();
|
|
7237
7306
|
this.$nextTick(() => {
|
|
7238
7307
|
// eslint-disable-next-line no-unused-vars
|
|
7239
7308
|
const _variablesEditor = new xJ({
|
|
@@ -7241,10 +7310,20 @@ var script$3 = vue.defineComponent({
|
|
|
7241
7310
|
props: {
|
|
7242
7311
|
content: {
|
|
7243
7312
|
text: undefined,
|
|
7244
|
-
json:
|
|
7313
|
+
json: {
|
|
7314
|
+
data: this.variables,
|
|
7315
|
+
quests: questsStore.quests,
|
|
7316
|
+
items: inventoryStore.items,
|
|
7317
|
+
skills: skillsStore.skills,
|
|
7318
|
+
skillChecks: skillsStore.skillChecks,
|
|
7319
|
+
}
|
|
7245
7320
|
},
|
|
7246
7321
|
onChange: (updatedContent) => {
|
|
7247
|
-
vmStore.overrideData(updatedContent.json);
|
|
7322
|
+
vmStore.overrideData(updatedContent.json.data);
|
|
7323
|
+
questsStore.quests = updatedContent.json.quests;
|
|
7324
|
+
inventoryStore.items = updatedContent.json.items;
|
|
7325
|
+
skillsStore.skills = updatedContent.json.skills;
|
|
7326
|
+
skillsStore.skillChecks = updatedContent.json.skillChecks;
|
|
7248
7327
|
},
|
|
7249
7328
|
},
|
|
7250
7329
|
});
|
|
@@ -7974,7 +8053,9 @@ var script$9 = vue.defineComponent({
|
|
|
7974
8053
|
Modal: script$2,
|
|
7975
8054
|
VolumeControls: script$4,
|
|
7976
8055
|
},
|
|
7977
|
-
props: {
|
|
8056
|
+
props: {
|
|
8057
|
+
close: Function,
|
|
8058
|
+
},
|
|
7978
8059
|
data() { },
|
|
7979
8060
|
mounted() { },
|
|
7980
8061
|
methods: {
|
|
@@ -7982,9 +8063,6 @@ var script$9 = vue.defineComponent({
|
|
|
7982
8063
|
window.close();
|
|
7983
8064
|
// quit
|
|
7984
8065
|
},
|
|
7985
|
-
close() {
|
|
7986
|
-
this.$emit('close');
|
|
7987
|
-
},
|
|
7988
8066
|
mainMenu() {
|
|
7989
8067
|
useMain().menuReturn();
|
|
7990
8068
|
this.close();
|
|
@@ -8048,7 +8126,7 @@ var script$a = vue.defineComponent({
|
|
|
8048
8126
|
VolumeControls: script$4,
|
|
8049
8127
|
},
|
|
8050
8128
|
props: {
|
|
8051
|
-
close:
|
|
8129
|
+
close: Function,
|
|
8052
8130
|
},
|
|
8053
8131
|
data() {
|
|
8054
8132
|
return {
|
|
@@ -8099,20 +8177,17 @@ var script$a = vue.defineComponent({
|
|
|
8099
8177
|
});
|
|
8100
8178
|
|
|
8101
8179
|
const _hoisted_1$9 = /*#__PURE__*/vue.createElementVNode("h3", { class: "title" }, "Skills", -1);
|
|
8102
|
-
const _hoisted_2$7 = {
|
|
8103
|
-
const _hoisted_3$4 = {
|
|
8180
|
+
const _hoisted_2$7 = {
|
|
8104
8181
|
key: 0,
|
|
8105
8182
|
class: "skills-container"
|
|
8106
8183
|
};
|
|
8107
|
-
const
|
|
8108
|
-
const
|
|
8109
|
-
const
|
|
8110
|
-
const
|
|
8111
|
-
const
|
|
8112
|
-
const
|
|
8113
|
-
|
|
8114
|
-
class: "flex flex-row skill-description-container"
|
|
8115
|
-
};
|
|
8184
|
+
const _hoisted_3$4 = ["onClick"];
|
|
8185
|
+
const _hoisted_4$3 = { class: "skill-title" };
|
|
8186
|
+
const _hoisted_5$3 = { class: "skill-xp-container" };
|
|
8187
|
+
const _hoisted_6$3 = { class: "skill-xp-text" };
|
|
8188
|
+
const _hoisted_7$2 = { class: "skill-level" };
|
|
8189
|
+
const _hoisted_8$1 = { key: 1 };
|
|
8190
|
+
const _hoisted_9$1 = { class: "flex flex-row skill-description-container" };
|
|
8116
8191
|
const _hoisted_10$1 = { class: "flex skill-left" };
|
|
8117
8192
|
const _hoisted_11$1 = { class: "flex skill-right" };
|
|
8118
8193
|
const _hoisted_12$1 = /*#__PURE__*/vue.createElementVNode("hr", { class: "hr-solid" }, null, -1);
|
|
@@ -8129,35 +8204,31 @@ function render$a(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
8129
8204
|
_hoisted_1$9
|
|
8130
8205
|
]),
|
|
8131
8206
|
body: vue.withCtx(() => [
|
|
8132
|
-
|
|
8133
|
-
(
|
|
8134
|
-
|
|
8135
|
-
(vue.openBlock(
|
|
8136
|
-
|
|
8137
|
-
|
|
8138
|
-
|
|
8139
|
-
|
|
8140
|
-
|
|
8141
|
-
|
|
8142
|
-
|
|
8143
|
-
vue.createElementVNode("div",
|
|
8144
|
-
|
|
8145
|
-
|
|
8146
|
-
|
|
8147
|
-
|
|
8148
|
-
|
|
8149
|
-
|
|
8150
|
-
|
|
8151
|
-
|
|
8152
|
-
|
|
8153
|
-
|
|
8154
|
-
|
|
8155
|
-
|
|
8207
|
+
(!_ctx.chosenSkill)
|
|
8208
|
+
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$7, [
|
|
8209
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.skillsToDisplay, (skill, key) => {
|
|
8210
|
+
return (vue.openBlock(), vue.createElementBlock("button", {
|
|
8211
|
+
onClick: () => _ctx.clickSkill(key),
|
|
8212
|
+
class: "skill-display",
|
|
8213
|
+
style: vue.normalizeStyle(_ctx.getSkillStyle(key)),
|
|
8214
|
+
key: key
|
|
8215
|
+
}, [
|
|
8216
|
+
vue.createElementVNode("h3", _hoisted_4$3, vue.toDisplayString(_ctx.getSkillName(key)), 1),
|
|
8217
|
+
vue.createElementVNode("div", _hoisted_5$3, [
|
|
8218
|
+
vue.createElementVNode("div", {
|
|
8219
|
+
class: "skill-xp-bar",
|
|
8220
|
+
style: vue.normalizeStyle(_ctx.xpBarWidth(skill.xp))
|
|
8221
|
+
}, null, 4),
|
|
8222
|
+
vue.createElementVNode("h3", _hoisted_6$3, vue.toDisplayString(skill.xp) + " / " + vue.toDisplayString(_ctx.xpPerLevel) + " XP", 1)
|
|
8223
|
+
]),
|
|
8224
|
+
vue.createElementVNode("h3", _hoisted_7$2, vue.toDisplayString(skill.level), 1)
|
|
8225
|
+
], 12, _hoisted_3$4))
|
|
8226
|
+
}), 128))
|
|
8227
|
+
]))
|
|
8228
|
+
: (typeof _ctx.chosenSkill === 'string')
|
|
8229
|
+
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_8$1, [
|
|
8230
|
+
vue.createElementVNode("div", _hoisted_9$1, [
|
|
8156
8231
|
vue.createElementVNode("div", _hoisted_10$1, [
|
|
8157
|
-
vue.createElementVNode("button", {
|
|
8158
|
-
class: "button",
|
|
8159
|
-
onClick: _cache[0] || (_cache[0] = (...args) => (_ctx.closeSkill && _ctx.closeSkill(...args)))
|
|
8160
|
-
}, "Back"),
|
|
8161
8232
|
vue.createElementVNode("div", {
|
|
8162
8233
|
class: "skill-display",
|
|
8163
8234
|
style: vue.normalizeStyle(_ctx.getSkillStyle(_ctx.chosenSkill))
|
|
@@ -8169,15 +8240,19 @@ function render$a(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
8169
8240
|
vue.createElementVNode("h3", null, "Level: " + vue.toDisplayString(_ctx.skills[_ctx.chosenSkill].level), 1),
|
|
8170
8241
|
vue.createElementVNode("p", null, vue.toDisplayString(_ctx.skillConf[_ctx.chosenSkill].description), 1)
|
|
8171
8242
|
])
|
|
8172
|
-
])
|
|
8173
|
-
|
|
8174
|
-
|
|
8243
|
+
]),
|
|
8244
|
+
vue.createElementVNode("button", {
|
|
8245
|
+
class: "button",
|
|
8246
|
+
onClick: _cache[0] || (_cache[0] = (...args) => (_ctx.closeSkill && _ctx.closeSkill(...args)))
|
|
8247
|
+
}, vue.toDisplayString('<--'))
|
|
8248
|
+
]))
|
|
8249
|
+
: vue.createCommentVNode("", true)
|
|
8175
8250
|
]),
|
|
8176
8251
|
_: 1
|
|
8177
8252
|
}, 8, ["onClose"]))
|
|
8178
8253
|
}
|
|
8179
8254
|
|
|
8180
|
-
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:
|
|
8255
|
+
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: stretch;\n}\n\n.skill-left {\n flex-direction: column;\n border: 1px dashed white;\n padding: 10px;\n justify-content: center;\n}\n\n.skill-right {\n border: 1px dashed white;\n flex-direction: column;\n align-items: baseline;\n flex-grow: 2;\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}\r\n";
|
|
8181
8256
|
styleInject(css_248z$b);
|
|
8182
8257
|
|
|
8183
8258
|
script$a.render = render$a;
|
|
@@ -8185,14 +8260,16 @@ script$a.render = render$a;
|
|
|
8185
8260
|
var script$b = vue.defineComponent({
|
|
8186
8261
|
setup() {
|
|
8187
8262
|
const store = useInventory();
|
|
8263
|
+
const dialogStore = useDialogStore();
|
|
8188
8264
|
const items = vue.computed(() => store.items);
|
|
8189
|
-
|
|
8265
|
+
const currentlyChoosing = vue.computed(() => dialogStore.currentDialog.choices);
|
|
8266
|
+
return { items, currentlyChoosing };
|
|
8190
8267
|
},
|
|
8191
8268
|
components: {
|
|
8192
8269
|
Modal: script$2,
|
|
8193
8270
|
},
|
|
8194
8271
|
props: {
|
|
8195
|
-
close:
|
|
8272
|
+
close: Function,
|
|
8196
8273
|
},
|
|
8197
8274
|
data() {
|
|
8198
8275
|
return {
|
|
@@ -8209,12 +8286,40 @@ var script$b = vue.defineComponent({
|
|
|
8209
8286
|
getItemName(item) {
|
|
8210
8287
|
return this.itemConf[item].name;
|
|
8211
8288
|
},
|
|
8289
|
+
getItemConf(item) {
|
|
8290
|
+
return this.itemConf[item];
|
|
8291
|
+
},
|
|
8212
8292
|
clickItem(item) {
|
|
8213
8293
|
this.chosenId = item;
|
|
8214
8294
|
},
|
|
8215
8295
|
closeItem() {
|
|
8216
8296
|
this.chosenId = false;
|
|
8217
8297
|
},
|
|
8298
|
+
useItem() {
|
|
8299
|
+
if (this.canUseChosenItem) {
|
|
8300
|
+
const onUse = this.chosenItemConf.onUse;
|
|
8301
|
+
this.close();
|
|
8302
|
+
if (onUse.action === 'jump') {
|
|
8303
|
+
useVM().runLabel(onUse.label);
|
|
8304
|
+
}
|
|
8305
|
+
else if (onUse.action === 'run_label') {
|
|
8306
|
+
useVM().runLabelFunction(onUse.label, true);
|
|
8307
|
+
}
|
|
8308
|
+
else {
|
|
8309
|
+
error(`Unknown action ${onUse.action}`);
|
|
8310
|
+
}
|
|
8311
|
+
}
|
|
8312
|
+
},
|
|
8313
|
+
canUseItem(item) {
|
|
8314
|
+
const conf = this.itemConf[item.id];
|
|
8315
|
+
if (conf &&
|
|
8316
|
+
conf.onUse &&
|
|
8317
|
+
!useInventory().isInteractionTagBlocked(conf.tag) &&
|
|
8318
|
+
!this.currentlyChoosing) {
|
|
8319
|
+
return true;
|
|
8320
|
+
}
|
|
8321
|
+
return false;
|
|
8322
|
+
},
|
|
8218
8323
|
},
|
|
8219
8324
|
computed: {
|
|
8220
8325
|
itemsToDisplay() {
|
|
@@ -8232,6 +8337,9 @@ var script$b = vue.defineComponent({
|
|
|
8232
8337
|
}
|
|
8233
8338
|
return null;
|
|
8234
8339
|
},
|
|
8340
|
+
canUseChosenItem() {
|
|
8341
|
+
return this.canUseItem(this.chosenItem);
|
|
8342
|
+
},
|
|
8235
8343
|
chosenItemConf() {
|
|
8236
8344
|
if (this.chosenId) {
|
|
8237
8345
|
return this.itemConf[this.chosenId];
|
|
@@ -8245,18 +8353,15 @@ var script$b = vue.defineComponent({
|
|
|
8245
8353
|
});
|
|
8246
8354
|
|
|
8247
8355
|
const _hoisted_1$a = /*#__PURE__*/vue.createElementVNode("h3", { class: "title" }, "Inventory", -1);
|
|
8248
|
-
const _hoisted_2$8 = {
|
|
8249
|
-
const _hoisted_3$5 = {
|
|
8356
|
+
const _hoisted_2$8 = {
|
|
8250
8357
|
key: 0,
|
|
8251
8358
|
class: "inventory-container"
|
|
8252
8359
|
};
|
|
8253
|
-
const
|
|
8254
|
-
const
|
|
8255
|
-
const
|
|
8256
|
-
const
|
|
8257
|
-
|
|
8258
|
-
class: "flex flex-row item-description-container"
|
|
8259
|
-
};
|
|
8360
|
+
const _hoisted_3$5 = ["onClick"];
|
|
8361
|
+
const _hoisted_4$4 = { class: "item-title" };
|
|
8362
|
+
const _hoisted_5$4 = { class: "item-amount" };
|
|
8363
|
+
const _hoisted_6$4 = { key: 1 };
|
|
8364
|
+
const _hoisted_7$3 = { class: "flex flex-row item-description-container" };
|
|
8260
8365
|
const _hoisted_8$2 = { class: "flex item-left" };
|
|
8261
8366
|
const _hoisted_9$2 = { class: "flex item-right" };
|
|
8262
8367
|
const _hoisted_10$2 = /*#__PURE__*/vue.createElementVNode("hr", { class: "hr-solid" }, null, -1);
|
|
@@ -8278,28 +8383,24 @@ function render$b(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
8278
8383
|
_hoisted_1$a
|
|
8279
8384
|
]),
|
|
8280
8385
|
body: vue.withCtx(() => [
|
|
8281
|
-
|
|
8282
|
-
(
|
|
8283
|
-
|
|
8284
|
-
(vue.openBlock(
|
|
8285
|
-
|
|
8286
|
-
|
|
8287
|
-
|
|
8288
|
-
|
|
8289
|
-
|
|
8290
|
-
|
|
8291
|
-
|
|
8292
|
-
|
|
8293
|
-
|
|
8294
|
-
|
|
8295
|
-
|
|
8296
|
-
|
|
8297
|
-
|
|
8386
|
+
(!_ctx.chosenItem && Object.keys(_ctx.itemsToDisplay).length > 0)
|
|
8387
|
+
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$8, [
|
|
8388
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.itemsToDisplay, (item) => {
|
|
8389
|
+
return (vue.openBlock(), vue.createElementBlock("button", {
|
|
8390
|
+
onClick: () => _ctx.clickItem(item.id),
|
|
8391
|
+
class: "item-display",
|
|
8392
|
+
style: vue.normalizeStyle(_ctx.getItemStyle(item.id)),
|
|
8393
|
+
key: item.id
|
|
8394
|
+
}, [
|
|
8395
|
+
vue.createElementVNode("h3", _hoisted_4$4, vue.toDisplayString(_ctx.getItemName(item.id)), 1),
|
|
8396
|
+
vue.createElementVNode("h3", _hoisted_5$4, vue.toDisplayString(item.amount), 1)
|
|
8397
|
+
], 12, _hoisted_3$5))
|
|
8398
|
+
}), 128))
|
|
8399
|
+
]))
|
|
8400
|
+
: (typeof _ctx.chosenId === 'string')
|
|
8401
|
+
? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$4, [
|
|
8402
|
+
vue.createElementVNode("div", _hoisted_7$3, [
|
|
8298
8403
|
vue.createElementVNode("div", _hoisted_8$2, [
|
|
8299
|
-
vue.createElementVNode("button", {
|
|
8300
|
-
class: "button",
|
|
8301
|
-
onClick: _cache[0] || (_cache[0] = (...args) => (_ctx.closeItem && _ctx.closeItem(...args)))
|
|
8302
|
-
}, "Back"),
|
|
8303
8404
|
vue.createElementVNode("div", {
|
|
8304
8405
|
class: "item-display",
|
|
8305
8406
|
style: vue.normalizeStyle(_ctx.getItemStyle(_ctx.chosenId))
|
|
@@ -8309,17 +8410,25 @@ function render$b(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
8309
8410
|
vue.createElementVNode("h2", null, vue.toDisplayString(_ctx.getItemName(_ctx.chosenId)), 1),
|
|
8310
8411
|
_hoisted_10$2,
|
|
8311
8412
|
vue.createElementVNode("h3", null, "Amount: " + vue.toDisplayString(_ctx.chosenItem.amount), 1),
|
|
8312
|
-
vue.createElementVNode("p", null, vue.toDisplayString(_ctx.chosenItemConf.description), 1)
|
|
8413
|
+
vue.createElementVNode("p", null, vue.toDisplayString(_ctx.chosenItemConf.description), 1),
|
|
8414
|
+
vue.createElementVNode("button", {
|
|
8415
|
+
onClick: _cache[0] || (_cache[0] = (...args) => (_ctx.useItem && _ctx.useItem(...args))),
|
|
8416
|
+
class: vue.normalizeClass(["button", _ctx.canUseChosenItem ? '' : 'disabled'])
|
|
8417
|
+
}, " Use ", 2)
|
|
8313
8418
|
])
|
|
8314
|
-
])
|
|
8315
|
-
|
|
8316
|
-
|
|
8419
|
+
]),
|
|
8420
|
+
vue.createElementVNode("button", {
|
|
8421
|
+
class: "button",
|
|
8422
|
+
onClick: _cache[1] || (_cache[1] = (...args) => (_ctx.closeItem && _ctx.closeItem(...args)))
|
|
8423
|
+
}, vue.toDisplayString('<--'))
|
|
8424
|
+
]))
|
|
8425
|
+
: (vue.openBlock(), vue.createElementBlock("div", _hoisted_11$2, _hoisted_13$1))
|
|
8317
8426
|
]),
|
|
8318
8427
|
_: 1
|
|
8319
8428
|
}, 8, ["onClose"]))
|
|
8320
8429
|
}
|
|
8321
8430
|
|
|
8322
|
-
var css_248z$c = ".inventory-modal {\n width: 800px;\n min-height: 50%;\n}\n\n.inventory-container {\n display: grid;\n grid-auto-rows: auto;\n grid-template-columns: repeat(3, 1fr);\n grid-gap: 20px 20px;\n}\n\n.item-display {\n width: 200px;\n height: 300px;\n position: relative;\n background-repeat: no-repeat;\n background-size: contain;\n}\n\n.item-title {\n position: absolute;\n bottom: 0px;\n text-align: center;\n width: 100%;\n color: var(--inventory-text-color);\n background: var(--inventory-text-background);\n}\n\n.item-amount {\n position: absolute;\n top: 0;\n right: 0;\n font-weight: 700;\n font-size: 25px;\n color: var(--inventory-amount-color);\n width: 40px;\n height: 40px;\n background-color: var(--inventory-amount-background);\n}\n\n.item-description-container {\n justify-content: space-between;\n align-items:
|
|
8431
|
+
var css_248z$c = ".inventory-modal {\n width: 800px;\n min-height: 50%;\n}\n\n.inventory-container {\n display: grid;\n grid-auto-rows: auto;\n grid-template-columns: repeat(3, 1fr);\n grid-gap: 20px 20px;\n}\n\n.item-display {\n width: 200px;\n height: 300px;\n position: relative;\n background-repeat: no-repeat;\n background-size: contain;\n}\n\n.item-title {\n position: absolute;\n bottom: 0px;\n text-align: center;\n width: 100%;\n color: var(--inventory-text-color);\n background: var(--inventory-text-background);\n}\n\n.item-amount {\n position: absolute;\n top: 0;\n right: 0;\n font-weight: 700;\n font-size: 25px;\n color: var(--inventory-amount-color);\n width: 40px;\n height: 40px;\n background-color: var(--inventory-amount-background);\n}\n\n.item-description-container {\n justify-content: space-between;\n align-items: stretch;\n}\n\n.item-left {\n border: 1px dashed white;\n flex-direction: column;\n padding: 10px;\n justify-content: center;\n}\n\n.item-right {\n border: 1px dashed white;\n flex-direction: column;\n flex-grow: 2;\n align-items: baseline;\n padding: 10px;\n}\r\n";
|
|
8323
8432
|
styleInject(css_248z$c);
|
|
8324
8433
|
|
|
8325
8434
|
script$b.render = render$b;
|
|
@@ -8336,7 +8445,7 @@ var script$c = vue.defineComponent({
|
|
|
8336
8445
|
},
|
|
8337
8446
|
},
|
|
8338
8447
|
props: {
|
|
8339
|
-
close:
|
|
8448
|
+
close: Function,
|
|
8340
8449
|
},
|
|
8341
8450
|
methods: {
|
|
8342
8451
|
getQuestData(questId) {
|
|
@@ -8793,26 +8902,26 @@ function render$d(_ctx, _cache, $props, $setup, $data, $options) {
|
|
|
8793
8902
|
(_ctx.modal === 'skills')
|
|
8794
8903
|
? (vue.openBlock(), vue.createBlock(_component_Skills, {
|
|
8795
8904
|
key: 0,
|
|
8796
|
-
|
|
8797
|
-
}, null, 8, ["
|
|
8905
|
+
close: _ctx.closeModal
|
|
8906
|
+
}, null, 8, ["close"]))
|
|
8798
8907
|
: vue.createCommentVNode("", true),
|
|
8799
8908
|
(_ctx.modal === 'inventory')
|
|
8800
8909
|
? (vue.openBlock(), vue.createBlock(_component_Inventory, {
|
|
8801
8910
|
key: 1,
|
|
8802
|
-
|
|
8803
|
-
}, null, 8, ["
|
|
8911
|
+
close: _ctx.closeModal
|
|
8912
|
+
}, null, 8, ["close"]))
|
|
8804
8913
|
: vue.createCommentVNode("", true),
|
|
8805
8914
|
(_ctx.modal === 'quests')
|
|
8806
8915
|
? (vue.openBlock(), vue.createBlock(_component_Quests, {
|
|
8807
8916
|
key: 2,
|
|
8808
|
-
|
|
8809
|
-
}, null, 8, ["
|
|
8917
|
+
close: _ctx.closeModal
|
|
8918
|
+
}, null, 8, ["close"]))
|
|
8810
8919
|
: vue.createCommentVNode("", true),
|
|
8811
8920
|
(_ctx.modal === 'menu')
|
|
8812
8921
|
? (vue.openBlock(), vue.createBlock(_component_MainMenu, {
|
|
8813
8922
|
key: 3,
|
|
8814
|
-
|
|
8815
|
-
}, null, 8, ["
|
|
8923
|
+
close: _ctx.closeModal
|
|
8924
|
+
}, null, 8, ["close"]))
|
|
8816
8925
|
: vue.createCommentVNode("", true),
|
|
8817
8926
|
vue.createVNode(vue.Transition, { name: "fade" }, {
|
|
8818
8927
|
default: vue.withCtx(() => [
|
|
@@ -9186,8 +9295,7 @@ const ifFunction = async (cmd) => {
|
|
|
9186
9295
|
branch: newBranch,
|
|
9187
9296
|
currentIndex: 0,
|
|
9188
9297
|
};
|
|
9189
|
-
vmStore.addStack(newStack);
|
|
9190
|
-
return vmStore.runLine();
|
|
9298
|
+
return vmStore.addStack(newStack);
|
|
9191
9299
|
}
|
|
9192
9300
|
return vmStore.nextLine();
|
|
9193
9301
|
};
|
|
@@ -9412,8 +9520,7 @@ const addItemPlugin = new CommandPlugin('add_item', async (cmd) => {
|
|
|
9412
9520
|
amount,
|
|
9413
9521
|
});
|
|
9414
9522
|
return useVM().nextLine();
|
|
9415
|
-
}, generateParser('add_item'));
|
|
9416
|
-
|
|
9523
|
+
}, generateParser('add_item'));
|
|
9417
9524
|
// Write a CommandPlugin for removeing items to the inventory store
|
|
9418
9525
|
const removeItemPlugin = new CommandPlugin('remove_item', async (cmd) => {
|
|
9419
9526
|
const id = cmd.args[0];
|
|
@@ -9424,7 +9531,21 @@ const removeItemPlugin = new CommandPlugin('remove_item', async (cmd) => {
|
|
|
9424
9531
|
amount,
|
|
9425
9532
|
});
|
|
9426
9533
|
return useVM().nextLine();
|
|
9427
|
-
}, generateParser('remove_item'));
|
|
9534
|
+
}, generateParser('remove_item'));
|
|
9535
|
+
// Write a CommandPlugin for enabling an interactiongTag in the inventory store
|
|
9536
|
+
const enableInteractionPlugin = new CommandPlugin('enable_interaction', async (cmd) => {
|
|
9537
|
+
const tag = cmd.args[0];
|
|
9538
|
+
const inventory = useInventory();
|
|
9539
|
+
inventory.enableInteraction(tag);
|
|
9540
|
+
return useVM().nextLine();
|
|
9541
|
+
}, generateParser('enable_interaction'));
|
|
9542
|
+
// Write a CommandPlugin for disabling an interactiongTag in the inventory store
|
|
9543
|
+
const disableInteractionPlugin = new CommandPlugin('disable_interaction', async (cmd) => {
|
|
9544
|
+
const tag = cmd.args[0];
|
|
9545
|
+
const inventory = useInventory();
|
|
9546
|
+
inventory.disableInteraction(tag);
|
|
9547
|
+
return useVM().nextLine();
|
|
9548
|
+
}, generateParser('disable_interaction'));
|
|
9428
9549
|
|
|
9429
9550
|
// Write a CommandPlugin for starting a quest with the useQuests quests store
|
|
9430
9551
|
const startQuestPlugin = new CommandPlugin('start_quest', async (cmd) => {
|
|
@@ -9471,7 +9592,6 @@ const runLabelPlugin = new CommandPlugin('run_label', async (cmd) => {
|
|
|
9471
9592
|
}, generateParser('run_label'));
|
|
9472
9593
|
|
|
9473
9594
|
function registerBaseCommands(vm) {
|
|
9474
|
-
vm.addCommand(addItemPlugin);
|
|
9475
9595
|
vm.addCommand(addLevelPlugin);
|
|
9476
9596
|
vm.addCommand(addStatPlugin);
|
|
9477
9597
|
vm.addCommand(addXpPlugin);
|
|
@@ -9483,7 +9603,6 @@ function registerBaseCommands(vm) {
|
|
|
9483
9603
|
vm.addCommand(notifyPlugin);
|
|
9484
9604
|
vm.addCommand(pauseCommand);
|
|
9485
9605
|
vm.addCommand(playCommand);
|
|
9486
|
-
vm.addCommand(removeItemPlugin);
|
|
9487
9606
|
vm.addCommand(setButtonCommand);
|
|
9488
9607
|
vm.addCommand(setScreenCommand);
|
|
9489
9608
|
vm.addCommand(setStatCommand);
|
|
@@ -9500,6 +9619,11 @@ function registerBaseCommands(vm) {
|
|
|
9500
9619
|
vm.addCommand(startObjectivePlugin);
|
|
9501
9620
|
vm.addCommand(completeObjectivePlugin);
|
|
9502
9621
|
vm.addCommand(completeQuestPlugin);
|
|
9622
|
+
// Inventory
|
|
9623
|
+
vm.addCommand(addItemPlugin);
|
|
9624
|
+
vm.addCommand(removeItemPlugin);
|
|
9625
|
+
vm.addCommand(enableInteractionPlugin);
|
|
9626
|
+
vm.addCommand(disableInteractionPlugin);
|
|
9503
9627
|
}
|
|
9504
9628
|
|
|
9505
9629
|
class NarratPlugin {
|
|
@@ -9542,7 +9666,7 @@ async function startApp(config, options) {
|
|
|
9542
9666
|
});
|
|
9543
9667
|
registerBaseCommands(vm);
|
|
9544
9668
|
logManager.setupDebugger(options.debug);
|
|
9545
|
-
console.log('%c Narrat game engine – 1.3.
|
|
9669
|
+
console.log('%c Narrat game engine – 1.3.3 - July 1, 2022 10:14:02', 'background: #222; color: #bada55');
|
|
9546
9670
|
vm.callHook('onNarratSetup');
|
|
9547
9671
|
app.mount('#game-holder');
|
|
9548
9672
|
if (options.debug) {
|