From 209cffc65f9856ced59bd1805bc487ca1d853b52 Mon Sep 17 00:00:00 2001 From: Chapel Date: Thu, 21 Jul 2022 05:21:40 -0400 Subject: [PATCH] updated --- pack/storyformats/chapbook/format.js | 2 +- pack/storyformats/harlowe-3/format.js | 5 +- pack/storyformats/snowman-1/format.js | 2 +- pack/storyformats/snowman-2/format.js | 1 + pack/storyformats/snowman-2/icon.svg | 436 ++++++++++++++++++++++++ pack/storyformats/sugarcube-2/format.js | 2 +- src/main.iss | 8 +- 7 files changed, 447 insertions(+), 9 deletions(-) create mode 100644 pack/storyformats/snowman-2/format.js create mode 100644 pack/storyformats/snowman-2/icon.svg diff --git a/pack/storyformats/chapbook/format.js b/pack/storyformats/chapbook/format.js index fbe70d1..fde8c45 100644 --- a/pack/storyformats/chapbook/format.js +++ b/pack/storyformats/chapbook/format.js @@ -1 +1 @@ -window.storyFormat({"author":"Chris Klimas","description":"A Twine story format emphasizing ease of authoring, multimedia, and playability on many different types of devices.","image":"logo.svg","name":"Chapbook","proofing":false,"source":"{{STORY_NAME}}
    \"\"
    {{STORY_DATA}}","version":"1.0.0"}); \ No newline at end of file +window.storyFormat({"source":"{{STORY_NAME}}
      \n \n \n\t\n \n\t\n \n\t\n\t\n \n\t\n
      {{STORY_DATA}}","author":"Chris Klimas","description":"1.2.2","hydrate":"!function(e){\"use strict\";function t(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var n=t(e);function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function a(e){for(var t=1;tText\\n\",insertContinue:\"\\n[continued]\\n\",insertBulletedList:\"\\n- Item\\n- Item\\n\",insertCss:\"\\n[CSS]\\n.page article {\\n color: green;\\n}\\n\\n[continued]\\n\",insertCyclingLink:\"{cycling link for: 'variable name', choices: ['choice', 'choice']}\",insertDropdownMenu:\"{dropdown menu for: 'variable name', choices: ['choice', 'choice']}\",insertEmbedAmbientSound:\"{ambient sound: 'sound name'}\",insertEmbedSoundEffect:\"{sound effect: 'sound name'}\",insertEmbedPassage:\"{embed passage: 'Passage name'}\",insertEmbedYouTubeVideo:\"{embed YouTube video: 'URL'}\",insertImageFlickr:\"{embed Flickr image: 'Flickr embed code'}\",insertImageUrl:\"{embed image: 'URL to image'}\",insertImageUnsplash:\"{embed Unsplash image: }\",insertForkList:\"\\n> Link\\n> Link\\n\",insertIf:\"\\n[if condition]\\nText\\n\\n[continue]\\n\",insertIfElse:\"\\n[if condition]\\nText\\n\\n[else]Text\\n\\n[continued]\\n\",insertJs:\"\\n[JavaScript]\\nwrite('Hello from JavaScript');\\n\\n[continued]\\n\",insertNote:\"\\n[note]\\nNote to self\\n\\n[continued]\\n\",insertNumberedList:\"\\n1. Item\\n2. Item\\n\",insertPassageLink:\"{link to: 'Passage name', label: 'Label text'}\",insertRestartLink:\"{restart link, label: 'Label text'}\",insertRevealPassageLink:\"{restart link: 'Label text', passage: 'Passage name'}\",insertRevealTextLink:\"{restart link: 'Label text', text: 'Displayed text'}\",insertSectionBreak:\"\\n***\\n\",insertTextInput:\"{text input for: 'variable name', choices: ['choice', 'choice']}\",insertUnless:\"\\n[unless condition]\\nText\\n\\n[continued]\\n\"})),s=\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' class='icon icon-tabler icon-tabler-brackets' width='24' height='24' viewBox='0 0 24 24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'%3e %3cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3e %3cpath d='M8 4h-3v16h3' /%3e %3cpath d='M16 4h3v16h-3' /%3e%3c/svg%3e\",l=\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' class='icon icon-tabler icon-tabler-brush' width='24' height='24' viewBox='0 0 24 24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'%3e %3cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3e %3cpath d='M3 21v-4a4 4 0 1 1 4 4h-4' /%3e %3cpath d='M21 3a16 16 0 0 0 -12.8 10.2' /%3e %3cpath d='M21 3a16 16 0 0 1 -10.2 12.8' /%3e %3cpath d='M10.6 9a9 9 0 0 1 4.4 4.4' /%3e%3c/svg%3e\",c=\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' class='icon icon-tabler icon-tabler-frame' width='24' height='24' viewBox='0 0 24 24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'%3e %3cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3e %3cline x1='4' y1='7' x2='20' y2='7' /%3e %3cline x1='4' y1='17' x2='20' y2='17' /%3e %3cline x1='7' y1='4' x2='7' y2='20' /%3e %3cline x1='17' y1='4' x2='17' y2='20' /%3e%3c/svg%3e\",d=\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' class='icon icon-tabler icon-tabler-hand-click' width='24' height='24' viewBox='0 0 24 24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'%3e %3cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3e %3cpath d='M8 13v-8.5a1.5 1.5 0 0 1 3 0v7.5' /%3e %3cpath d='M11 11.5v-2a1.5 1.5 0 0 1 3 0v2.5' /%3e %3cpath d='M14 10.5a1.5 1.5 0 0 1 3 0v1.5' /%3e %3cpath d='M17 11.5a1.5 1.5 0 0 1 3 0v4.5a6 6 0 0 1 -6 6h-2h.208a6 6 0 0 1 -5.012 -2.7l-.196 -.3c-.312 -.479 -1.407 -2.388 -3.286 -5.728a1.5 1.5 0 0 1 .536 -2.022a1.867 1.867 0 0 1 2.28 .28l1.47 1.47' /%3e %3cpath d='M5 3l-1 -1' /%3e %3cpath d='M4 7h-1' /%3e %3cpath d='M14 3l1 -1' /%3e %3cpath d='M15 6h1' /%3e%3c/svg%3e\",u=\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' class='icon icon-tabler icon-tabler-link' width='24' height='24' viewBox='0 0 24 24' stroke-width='2' stroke='currentColor' fill='none' stroke-linecap='round' stroke-linejoin='round'%3e %3cpath stroke='none' d='M0 0h24v24H0z' fill='none'/%3e %3cpath d='M10 14a3.5 3.5 0 0 0 5 0l4 -4a3.5 3.5 0 0 0 -5 -5l-.5 .5' /%3e %3cpath d='M14 10a3.5 3.5 0 0 0 -5 0l-4 4a3.5 3.5 0 0 0 5 5l.5 -.5' /%3e%3c/svg%3e\";var m={\"^2.4.0-beta2\":{codeMirror:{commands:i,mode:function(){return{startState:function(){return{inVarsSection:!1}},token:function(e,t){if(void 0===t.hasVarsSection){for(var n=1,o=e.lookAhead(1);o&&void 0===t.hasVarsSection;o=e.lookAhead(++n))\"--\"===o&&(t.hasVarsSection=!0,t.inVarsSection=!0);void 0===t.hasVarsSection&&(t.hasVarsSection=!1)}return t.hasVarsSection&&t.inVarsSection&&e.sol()?e.match(/^--$/)?(t.inVarsSection=!1,\"punctuation\"):(e.skipTo(\":\"),\"def\"):e.sol()&&e.match(/^\\[[^[].*\\]$/)||e.match(/^\\{.+?\\}/)?\"keyword\":e.match(/^\\[\\[[^\\]]+?\\]\\]/)?\"link\":(e.eatWhile(/[^[{]/)||e.skipToEnd(),\"text\")}}},toolbar:function(e,t){var n=e.getDoc().somethingSelected();return[{type:\"menu\",icon:l.replace(/currentColor/g,t.foregroundColor),label:\"Style\",items:[{type:\"button\",iconOnly:!0,label:\"Bold\",command:\"boldText\",disabled:!n},{type:\"button\",label:\"Italic\",command:\"italicText\",disabled:!n},{type:\"button\",label:\"Monospaced Text\",command:\"monospacedText\",disabled:!n},{type:\"button\",label:\"Small Caps\",command:\"smallCapsText\",disabled:!n},{type:\"separator\"},{type:\"button\",label:\"Blockquote\",command:\"insertBlockquote\",disabled:n},{type:\"button\",label:\"Bulleted List\",command:\"insertBulletedList\",disabled:n},{type:\"button\",label:\"Fork List\",command:\"insertForkList\",disabled:n},{type:\"button\",label:\"Numbered List\",command:\"insertNumberedList\",disabled:n},{type:\"button\",label:\"Section Break\",command:\"insertSectionBreak\",disabled:n}]},{type:\"menu\",icon:u.replace(/currentColor/g,t.foregroundColor),label:\"Link\",disabled:n,items:[{type:\"button\",label:\"Passage Link\",command:\"insertPassageLink\"},{type:\"button\",label:\"Restart Link\",command:\"insertRestartLink\"},{type:\"button\",label:\"Reveal Passage Link\",command:\"insertRevealPassageLink\"},{type:\"button\",label:\"Reveal Text Link\",command:\"insertRevealTextLink\"}]},{type:\"menu\",icon:s.replace(/currentColor/g,t.foregroundColor),label:\"Modifiers\",disabled:n,items:[{type:\"button\",label:\"If\",command:\"insertIf\"},{type:\"button\",label:\"If and Else\",command:\"insertIfElse\"},{type:\"button\",label:\"Unless\",command:\"insertUnless\"},{type:\"button\",label:\"Continue\",command:\"insertContinue\"},{type:\"separator\"},{type:\"button\",label:\"After Delay\",command:\"insertAfter\"},{type:\"button\",label:\"Append Text\",command:\"insertAppend\"},{type:\"button\",label:\"Note\",command:\"insertNote\"},{type:\"separator\"},{type:\"button\",label:\"JavaScript\",command:\"insertJs\"},{type:\"button\",label:\"CSS\",command:\"insertCss\"}]},{type:\"menu\",icon:c.replace(/currentColor/g,t.foregroundColor),label:\"Embed\",disabled:n,items:[{type:\"button\",label:\"Embed Passage\",command:\"insertEmbedPassage\"},{type:\"button\",label:\"Embed Image from Flickr\",command:\"insertImageFlickr\"},{type:\"button\",label:\"Embed Image from URL\",command:\"insertImageUrl\"},{type:\"button\",label:\"Embed Image from Unsplash\",command:\"insertImageUnsplash\"},{type:\"button\",label:\"Embed Ambient Sound\",command:\"insertEmbedAmbientSound\"},{type:\"button\",label:\"Embed Sound Effect\",command:\"insertEmbedSoundEffect\"},{type:\"button\",label:\"Embed YouTube Video\",command:\"insertEmbedYouTubeVideo\"}]},{type:\"menu\",icon:d.replace(/currentColor/g,t.foregroundColor),label:\"Input\",disabled:n,items:[{type:\"button\",label:\"Cycling Link\",command:\"insertCyclingLink\"},{type:\"button\",label:\"Dropdown Menu\",command:\"insertDropdownMenu\"},{type:\"button\",label:\"Text Input\",command:\"insertTextInput\"}]}]}},references:{parsePassageText:function(e){for(var t=[],n=0,o=[/\\{embed\\s+passage\\s*:\\s*['\"](.+?)['\"]\\s*}/g,/\\{link\\s+to\\s*:\\s*['\"](.+?)['\"]\\s*\\}/g,/\\{reveal\\s+link.+passage\\s*:\\s*['\"](.+?)['\"].*\\}/g];ndocumentation.","image":"icon.svg","url":"http://twinery.org/","license":"Zlib","proofing":false,"source":"\n\n\n\n{{STORY_NAME}}\n\n\n\n\n\n\n\n{{STORY_DATA}}\n\n\n\n\n\n\n","setup": function(){"use strict";function _toConsumableArray(e){if(Array.isArray(e)){for(var r=0,n=Array(e.length);r-1)||e.cannotFollow&&(-1!==e.cannotFollow.indexOf(n&&n.type)||e.cannotFollow.indexOf("text")>-1&&t)||e.peek&&e.peek.toLowerCase()!==r.slice(0,e.peek.length).toLowerCase())}function t(e){for(var r=e.innerText,t=[],o=0,s=o,u=r.length,m=null;o-1&&(k=t.length-1)}if(k>=t.length&&!y.isFront)continue}s0;)t.shift().demote();return e}function a(e,n,t){var a=e.children.indexOf(n),o=e.children.indexOf(t);n.children=e.children.splice(o+1,a-(o+1)),n.children.forEach(function(e){r(n,e)}),n.type=n.matches[t.type],n.innerText="";for(var i=0,s=n.children.length;i=this.end)return null;if(this.childAt)return this.childAt[e]&&this.childAt[e].tokenAt(e)||this;if(this.children.length)for(var r=0;r=this.end)return[];if(this.childAt)return(this.childAt[e]&&this.childAt[e].pathAt(e)||[]).concat(this);var r=[];if(this.children.length)for(var n=0;n=this.end?null:this.children?this.children.reduce(function(r,n){return r||(e>=n.start&&e0&&(e+="["+this.children+"]"),e}},o={lex:function(r,n){return t(new e({type:"root",start:n||0,end:r.length,text:r,innerText:r,children:[],childAt:{},innerMode:o.modes.start}))},rules:i,modes:{}},"object"===("undefined"==typeof module?"undefined":_typeof(module))?module.exports=o:"function"==typeof define&&define.amd?define("lexer",[],function(){return o}):this&&this.loaded?(this.modules||(this.modules={}),this.modules.Lexer=o):this.TwineLexer=o}).call(eval("this")||("undefined"!=typeof global?global:window)),function(){function e(r){return r&&"object"===(void 0===r?"undefined":_typeof(r))?(Object.keys(r).forEach(function(n){r[n]=e(r[n])}),r):(r+"").replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}function r(e){return function(){return"("+e+Array.apply(0,arguments).join("|")+")"}}var n=void 0,t=r("?:"),a=r("?!"),o=r("?="),i="[ \\f\\t\\v\\u00a0\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000]*",s=i.replace("*","+"),u="\\b",m="[\\w\\-\\u00c0-\\u00de\\u00df-\\u00ff\\u0150\\u0170\\u0151\\u0171\\uD800-\\uDFFF]",l=m.replace("\\-",""),g=t("\\n","$"),c="("+t("\\\\\\n\\\\?|\\n\\\\","[^\\n]")+"+)",p=i+"(\\*+)"+s+c+g,d=i+"((?:0\\.)+)"+s+c+g,h=i+"-{3,}"+i+g,y=i+"(#{1,6})"+i+c+g,f=i+"(==+>|<=+|=+><=+|<==+>)"+i+g,k=i+"(=+\\|+|\\|+=+|=+\\|+=+|\\|=+\\|)"+i+g,b={opener:"\\[\\[(?!\\[)",text:"("+function(){return"[^"+Array.apply(0,arguments).map(e).join("")+"]*"}("]")+")",rightSeparator:t("\\->","\\|"),leftSeparator:"<\\-",closer:"\\]\\]",legacySeparator:"\\|",legacyText:"("+t("[^\\|\\]]","\\]"+a("\\]"))+"+)"},S=l+"*"+l.replace("\\w","a-zA-Z")+l+"*",C="\\$("+S+")",N="'s"+s+"("+S+")",T="("+S+")"+s+"of"+u+a("it\\b"),v="'s"+s,x=t("it","time","visits?","exits?")+u,A="its"+s+"("+S+")",w="its"+s,O="("+S+")"+s+"of"+s+"it"+u,F="of\\b"+s+"it"+u,L={opener:"\\(",name:"("+t(m+"+",C)+"):"+a("\\/"),closer:"\\)"},H=t("=<","=>","[gl]te?\\b","n?eq\\b","isnot\\b","are\\b","x\\b","isa\\b","or"+s+"a"+u),P={name:"[a-zA-Z][\\w\\-]*",attrs:"(?:\"[^\"]*\"|'[^']*'|[^'\">])*?"},B="\\|("+m+"+)(>|\\))",j="(<|\\()("+m+"+)\\|",M="_("+S+")"+u,I="\\b(\\d+(?:\\.\\d+)?(?:[eE][+\\-]?\\d+)?)"+a("m?s")+u;b.main=b.opener+t(b.text+b.rightSeparator,b.text.replace("*","*?")+b.leftSeparator)+b.text,n={upperLetter:"[A-Z\\u00c0-\\u00de\\u0150\\u0170]",lowerLetter:"[a-z0-9_\\-\\u00df-\\u00ff\\u0151\\u0171]",anyLetter:m,anyLetterStrict:l,whitespace:s,escapedLine:"\\\\\\n\\\\?|\\n\\\\",br:"\\n(?!\\\\)",commentFront:"\x3c!--",commentBack:"--\x3e",tag:"<\\/?"+P.name+P.attrs+">",tagPeek:"<",scriptStyleTag:"<("+t("script","style","textarea")+")"+P.attrs+">[^]*?<\\/\\1>",scriptStyleTagOpener:"<",url:"("+t("https?","mailto","javascript","ftp","data")+":\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])",bullet:"\\*",hr:h,heading:y,align:f,column:k,bulleted:p,numbered:d,strikeOpener:e("~~"),italicOpener:e("//"),boldOpener:e("''"),supOpener:e("^^"),strongFront:e("**"),strongBack:e("**"),emFront:e("*"),emBack:e("*"),verbatimOpener:"`+",collapsedFront:"{",collapsedBack:"}",hookAppendedFront:"\\["+a("=+"),hookPrependedFront:B+"\\["+a("=+"),hookFront:"\\["+a("=+"),hookBack:"\\]"+a(j),hookAppendedBack:"\\]"+j,unclosedHook:"\\[=+",unclosedHookPrepended:B+"\\[=+",passageLink:b.main+b.closer,passageLinkPeek:"[[",legacyLink:b.opener+b.legacyText+b.legacySeparator+b.legacyText+b.closer,legacyLinkPeek:"[[",simpleLink:b.opener+b.legacyText+b.closer,simpleLinkPeek:"[[",macroFront:L.opener+o(L.name),macroFrontPeek:"(",macroName:L.name,groupingFront:"\\("+a(L.name),groupingFrontPeek:"(",groupingBack:"\\)",twine1Macro:"<<[^>\\s]+\\s*(?:\\\\.|'(?:[^'\\\\]*\\\\.)*[^'\\\\]*'|\"(?:[^\"\\\\]*\\\\.)*[^\"\\\\]*\"|[^'\"\\\\>]|>(?!>))*>>",twine1MacroPeek:"<<",property:N,propertyPeek:"'s",belongingProperty:T,possessiveOperator:v,belongingOperator:"of\\b",belongingOperatorPeek:"of",itsOperator:w,itsOperatorPeek:"its",belongingItOperator:F,belongingItOperatorPeek:"of",variable:C,variablePeek:"$",tempVariable:M,tempVariablePeek:"_",hookRef:"\\?("+m+"+)\\b",hookRefPeek:"?",cssTime:"(\\d+\\.?\\d*|\\d*\\.?\\d+)(m?s)\\b",colour:t(t("Red","Orange","Yellow","Lime","Green","Cyan","Aqua","Blue","Navy","Purple","Fuchsia","Magenta","White","Gray","Grey","Black"),"#[\\dA-Fa-f]{3}(?:[\\dA-Fa-f]{3})?"),datatype:t("array","boolean","changer","colour","gradient","color","command","dm","datamap","ds","dataset","number","num","string","str"),number:I,boolean:t("true","false")+u,identifier:x,itsProperty:A,itsPropertyPeek:"its",belongingItProperty:O,escapedStringChar:"\\\\[^\\n]",singleStringOpener:"'",doubleStringOpener:'"',is:"is"+a(s+"not"+u,s+"an?"+u,s+"in"+u,s+"<",s+">")+u,isNot:"is"+s+"not"+a(s+"a"+u)+u,isA:"is"+s+"an?"+u,isNotA:"is"+s+"not"+s+"an?"+u,matches:"matches"+s,and:"and\\b",or:"or\\b",not:"not\\b",inequality:"((?:is(?:"+s+"not)?"+i+")*)("+t("<(?!=)","<=",">(?!=)",">=")+")",isIn:"is"+s+"in"+u,contains:"contains\\b",addition:e("+")+a("="),subtraction:e("-")+a("="),multiplication:e("*")+a("="),division:t("/","%")+a("="),comma:",",spread:"\\.\\.\\."+a("\\."),to:t("to\\b","="),into:"into\\b",making:"making\\b",where:"where\\b",when:"when\\b",via:"via\\b",with:"with\\b",each:"each\\b",augmentedAssign:t("\\+","\\-","\\*","\\/","%")+"=",bind:"bind\\b",incorrectOperator:H},"object"===("undefined"==typeof module?"undefined":_typeof(module))?module.exports=n:"function"==typeof define&&define.amd?define("patterns",[],function(){return n}):this&&this.loaded?(this.modules||(this.modules={}),this.modules.Patterns=n):this.Patterns=n}.call(eval("this")||("undefined"!=typeof global?global:window)),function(){function e(e){function r(e){return e=e||"innerText",function(r){var n=r.reduceRight(function(e,r,n){return e||(n?r:"")},""),t={};return t[e]=n,t}}function t(e,r){var n={};return n[e]=r,function(){return{isFront:!0,matches:n,cannotCross:["verbatimOpener"]}}}function a(e,r){return Object.keys(r).forEach(function(n){var t=r[n].fn;r[n].fn=function(r){var a=t(r);return a.text||(a.text=r[0]),a.type||(a.type=n),a.innerMode||(a.innerMode=e),a}}),r}var o=Object.bind(0,null),i=[],s=[],u=a(i,{hr:{fn:o},bulleted:{fn:function(e){return{depth:e[1].length,innerText:e[2]}}},numbered:{fn:function(e){return{depth:e[1].length/2,innerText:e[2]}}},heading:{fn:function(e){return{depth:e[1].length,innerText:e[2]}}},align:{fn:function(e){var r=void 0,n=e[1],t=n.indexOf("><");return~t?25===(r=Math.round(t/(n.length-2)*50))&&(r="center"):"<"===n[0]&&">"===n.slice(-1)?r="justify":n.indexOf(">")>-1?r="right":n.indexOf("<")>-1&&(r="left"),{align:r}}},column:{fn:function(e){var r=void 0,n=e[1],t=n.indexOf("|");return t&&t-1}}},augmentedAssign:{fn:function(e){return{operator:e[0][0]}}},identifier:{fn:r("name"),cannotFollow:["text"]},whitespace:{fn:o,cannotFollow:"text"},incorrectOperator:{fn:function(e){var r={"=>":">=","=<":"<=",gte:">=",lte:"<=",gt:">",lt:"<",eq:"is",isnot:"is not",neq:"is not",isa:"is a",are:"is",x:"*","or a":"or"}[e[0].toLowerCase().replace(/\s+/g," ")];return{type:"error",message:"Please say "+(r?"'"+r+"'":"something else")+" instead of '"+e[0]+"'.",explanation:"In the interests of readability, I want certain operators to be in a specific form."}},cannotFollow:"text"}},["boolean","is","to","into","where","when","via","with","making","each","and","or","not","isNot","contains","isIn","isA","isNotA","matches","bind"].reduce(function(e,r){return e[r]={fn:o,cannotFollow:["text"]},e},{}),["comma","spread","addition","subtraction","multiplication","division"].reduce(function(e,r){return e[r]={fn:o},e},{})));i.push.apply(i,_toConsumableArray(Object.keys(u)).concat(_toConsumableArray(Object.keys(l)),_toConsumableArray(Object.keys(m)))),s.push.apply(s,_toConsumableArray(Object.keys(l)).concat(_toConsumableArray(Object.keys(g))));var c=Object.assign({},u,m,l,g);return Object.keys(c).forEach(function(e){var r=n[e];c[e].pattern="string"!=typeof r?r:new RegExp("^(?:"+r+")","i"),n[e+"Peek"]&&(c[e].peek=n[e+"Peek"])}),Object.assign(e.rules,c),e.modes.start=e.modes.markup=i,e.modes.macro=s,e}function r(r){return Object.freeze({lex:e(r).lex,Patterns:n})}var n=void 0;Object.assign=Object.assign||function(e){for(var r=1;r Command":{name:"display",sig:" String",returnType:"Command",aka:[]},"(print: Any) -> Command":{name:"print",sig:" Any",returnType:"Command",aka:[]},"(go-to: String) -> Command":{name:"go-to",sig:" String",returnType:"Command",aka:[]},"(undo:) -> Command":{name:"undo",sig:"",returnType:"Command",aka:[]},"(cycling-link: [Bind], ...String) -> Command":{name:"cycling-link",sig:" [Bind], ...String",returnType:"Command",aka:[]},"(dropdown: Bind, ...String) -> Command":{name:"dropdown",sig:" Bind, ...String",returnType:"Command",aka:[]},"(show: ...HookName) -> Command":{name:"show",sig:" ...HookName",returnType:"Command",aka:[]},"(stop:) -> Command":{name:"stop",sig:"",returnType:"Command",aka:[]},"(load-game: String) -> Command":{name:"load-game",sig:" String",returnType:"Command",aka:[]},"(alert: String) -> Command":{name:"alert",sig:" String",returnType:"Command",aka:[]},"(open-url: String) -> Command":{name:"open-url",sig:" String",returnType:"Command",aka:[]},"(reload:) -> Command":{name:"reload",sig:"",returnType:"Command",aka:[]},"(goto-url: String) -> Command":{name:"goto-url",sig:" String",returnType:"Command",aka:[]},"(save-game: String, [String]) -> Boolean":{name:"save-game",sig:" String, [String]",returnType:"Boolean",aka:[]},"(prompt: String, String) -> String":{name:"prompt",sig:" String, String",returnType:"String",aka:[]},"(confirm: String) -> Boolean":{name:"confirm",sig:" String",returnType:"Boolean",aka:[]},"(page-url:) -> String":{name:"page-url",sig:"",returnType:"String",aka:[]},"(set: ...VariableToValue) -> Instant":{name:"set",sig:" ...VariableToValue",returnType:"Instant",aka:[]},"(put: ...VariableToValue) -> Instant":{name:"put",sig:" ...VariableToValue",returnType:"Instant",aka:[]},"(move: ...VariableToValue) -> Instant":{name:"move",sig:" ...VariableToValue",returnType:"Instant",aka:[]},"(a: [...Any]) -> Array":{name:"a",sig:" [...Any]",returnType:"Array",aka:["array"]},"(range: Number, Number) -> Array":{name:"range",sig:" Number, Number",returnType:"Array",aka:[]},"(subarray: Array, Number, Number) -> Array":{name:"subarray",sig:" Array, Number, Number",returnType:"Array",aka:[]},"(reversed: [...Any]) -> Array":{name:"reversed",sig:" [...Any]",returnType:"Array",aka:[]},"(shuffled: Any, ...Any) -> Array":{name:"shuffled",sig:" Any, ...Any",returnType:"Array",aka:[]},"(sorted: Number or String, ...Number or String) -> Array":{name:"sorted",sig:" Number or String, ...Number or String",returnType:"Array",aka:[]},"(rotated: Number, [...Any]) -> Array":{name:"rotated",sig:" Number, [...Any]",returnType:"Array",aka:[]},"(repeated: Number, ...Any) -> Array":{name:"repeated",sig:" Number, ...Any",returnType:"Array",aka:[]},"(interlaced: Array, ...Array) -> Array":{name:"interlaced",sig:" Array, ...Array",returnType:"Array",aka:[]},"(altered: Lambda, [...Any]) -> Array":{name:"altered",sig:" Lambda, [...Any]",returnType:"Array",aka:[]},"(find: Lambda, [...Any]) -> Array":{name:"find",sig:" Lambda, [...Any]",returnType:"Array",aka:[]},"(all-pass: Lambda, [...Any]) -> Boolean":{name:"all-pass",sig:" Lambda, [...Any]",returnType:"Boolean",aka:[]},"(some-pass: Lambda, ...Any) -> Boolean":{name:"some-pass",sig:" Lambda, ...Any",returnType:"Boolean",aka:[]},"(none-pass: Lambda, ...Any) -> Boolean":{name:"none-pass",sig:" Lambda, ...Any",returnType:"Boolean",aka:[]},"(folded: Lambda, ...Any) -> Any":{name:"folded",sig:" Lambda, ...Any",returnType:"Any",aka:[]},"(datanames: Datamap) -> Array":{name:"datanames",sig:" Datamap",returnType:"Array",aka:[]},"(datavalues: Datamap) -> Array":{name:"datavalues",sig:" Datamap",returnType:"Array",aka:[]},"(dataentries: Datamap) -> Array":{name:"dataentries",sig:" Datamap",returnType:"Array",aka:[]},"(history: [Lambda]) -> Array":{name:"history",sig:" [Lambda]",returnType:"Array",aka:[]},"(passage: [String]) -> Datamap":{name:"passage",sig:" [String]",returnType:"Datamap",aka:[]},"(passages: [Lambda]) -> Array":{name:"passages",sig:" [Lambda]",returnType:"Array",aka:[]},"(saved-games:) -> Datamap":{name:"saved-games",sig:"",returnType:"Datamap",aka:[]},"(dm: [...Any]) -> Datamap":{name:"dm",sig:" [...Any]",returnType:"Datamap",aka:["datamap"]},"(ds: [...Any]) -> Dataset":{name:"ds",sig:" [...Any]",returnType:"Dataset",aka:["dataset"]},"(count: Array or String, ...Any) -> Number":{name:"count",sig:" Array or String, ...Any",returnType:"Number",aka:[]},"(enchant: HookName or String, Changer) -> Command":{name:"enchant",sig:" HookName or String, Changer",returnType:"Command",aka:[]},"(replace: ...HookName or String) -> Changer":{name:"replace",sig:" ...HookName or String",returnType:"Changer",aka:[]},"(append: ...HookName or String) -> Changer":{name:"append",sig:" ...HookName or String",returnType:"Changer",aka:[]},"(prepend: ...HookName or String) -> Changer":{name:"prepend",sig:" ...HookName or String",returnType:"Changer",aka:[]},"(click: HookName or String) -> Changer":{name:"click",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover: HookName or String) -> Changer":{name:"mouseover",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout: HookName or String) -> Changer":{name:"mouseout",sig:" HookName or String",returnType:"Changer",aka:[]},"(click-replace: HookName or String) -> Changer":{name:"click-replace",sig:" HookName or String",returnType:"Changer",aka:[]},"(click-append: HookName or String) -> Changer":{name:"click-append",sig:" HookName or String",returnType:"Changer",aka:[]},"(click-prepend: HookName or String) -> Changer":{name:"click-prepend",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover-replace: HookName or String) -> Changer":{name:"mouseover-replace",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover-append: HookName or String) -> Changer":{name:"mouseover-append",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseover-prepend: HookName or String) -> Changer":{name:"mouseover-prepend",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout-replace: HookName or String) -> Changer":{name:"mouseout-replace",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout-append: HookName or String) -> Changer":{name:"mouseout-append",sig:" HookName or String",returnType:"Changer",aka:[]},"(mouseout-prepend: HookName or String) -> Changer":{name:"mouseout-prepend",sig:" HookName or String",returnType:"Changer",aka:[]},"(click-goto: HookName or String, String) -> Command":{name:"click-goto",sig:" HookName or String, String",returnType:"Command",aka:[]},"(mouseover-goto: HookName or String, String) -> Command":{name:"mouseover-goto",sig:" HookName or String, String",returnType:"Command",aka:[]},"(mouseout-goto: HookName or String, String) -> Command":{name:"mouseout-goto",sig:" HookName or String, String",returnType:"Command",aka:[]},"(link: String) -> Changer":{name:"link",sig:" String",returnType:"Changer",aka:["link-replace"]},"(link-reveal: String) -> Changer":{name:"link-reveal",sig:" String",returnType:"Changer",aka:[]},"(link-repeat: String) -> Changer":{name:"link-repeat",sig:" String",returnType:"Changer",aka:[]},"(link-goto: String, [String]) -> Command":{name:"link-goto",sig:" String, [String]",returnType:"Command",aka:[]},"(link-undo: String) -> Command":{name:"link-undo",sig:" String",returnType:"Command",aka:[]},"(link-show: String, ...HookName) -> Command":{name:"link-show",sig:" String, ...HookName",returnType:"Command",aka:[]},"(link-reveal-goto: String, [String]) -> Changer":{name:"link-reveal-goto",sig:" String, [String]",returnType:"Changer",aka:[]},"(if: Boolean) -> Changer":{name:"if",sig:" Boolean",returnType:"Changer",aka:[]},"(unless: Boolean) -> Changer":{name:"unless",sig:" Boolean",returnType:"Changer",aka:[]},"(else-if: Boolean) -> Changer":{name:"else-if",sig:" Boolean",returnType:"Changer",aka:[]},"(else:) -> Changer":{name:"else",sig:"",returnType:"Changer",aka:[]},"(hidden:) -> Changer":{name:"hidden",sig:"",returnType:"Changer",aka:[]},"(live: [Number]) -> Changer":{name:"live",sig:" [Number]",returnType:"Changer",aka:[]},"(event: Lambda) -> Changer":{name:"event",sig:" Lambda",returnType:"Changer",aka:[]},"(more:) -> Changer":{name:"more",sig:"",returnType:"Changer",aka:[]},"(hook: String) -> Changer":{name:"hook",sig:" String",returnType:"Changer",aka:[]},"(for: Lambda, [...Any]) -> Changer":{name:"for",sig:" Lambda, [...Any]",returnType:"Changer",aka:["loop"]},"(transition: String) -> Changer":{name:"transition",sig:" String",returnType:"Changer",aka:["t8n"]},"(transition-time: Number) -> Changer":{name:"transition-time",sig:" Number",returnType:"Changer",aka:["t8n-time"]},"(transition-depart: String) -> Changer":{name:"transition-depart",sig:" String",returnType:"Changer",aka:["t8n-depart"]},"(transition-arrive: String) -> Changer":{name:"transition-arrive",sig:" String",returnType:"Changer",aka:["t8n-arrive"]},"(font: String) -> Changer":{name:"font",sig:" String",returnType:"Changer",aka:[]},"(align: String) -> Changer":{name:"align",sig:" String",returnType:"Changer",aka:[]},"(text-colour: String or Colour) -> Changer":{name:"text-colour",sig:" String or Colour",returnType:"Changer",aka:["colour","text-color","color"]},"(text-rotate: Number) -> Changer":{name:"text-rotate",sig:" Number",returnType:"Changer",aka:[]},"(background: Colour or String or Gradient) -> Changer":{name:"background",sig:" Colour or String or Gradient",returnType:"Changer",aka:[]},"(text-style: String) -> Changer":{name:"text-style",sig:" String",returnType:"Changer",aka:[]},"(hover-style: Changer) -> Changer":{name:"hover-style",sig:" Changer",returnType:"Changer",aka:[]},"(css: String) -> Changer":{name:"css",sig:" String",returnType:"Changer",aka:[]},"(str: ...[Number or String or Boolean or Array]) -> String":{name:"str",sig:" ...[Number or String or Boolean or Array]",returnType:"String",aka:["string","text"]},"(substring: String, Number, Number) -> String":{name:"substring",sig:" String, Number, Number",returnType:"String",aka:[]},"(lowercase: String) -> String":{name:"lowercase",sig:" String",returnType:"String",aka:[]},"(uppercase: String) -> String":{name:"uppercase",sig:" String",returnType:"String",aka:[]},"(lowerfirst: String) -> String":{name:"lowerfirst",sig:" String",returnType:"String",aka:[]},"(upperfirst: String) -> String":{name:"upperfirst",sig:" String",returnType:"String",aka:[]},"(words: String) -> Array":{name:"words",sig:" String",returnType:"Array",aka:[]},"(str-repeated: Number, String) -> String":{name:"str-repeated",sig:" Number, String",returnType:"String",aka:["string-repeated"]},"(str-reversed: String) -> String":{name:"str-reversed",sig:" String",returnType:"String",aka:["string-reversed"]},"(num: String) -> Number":{name:"num",sig:" String",returnType:"Number",aka:["number"]},"(rgb: Number, Number, Number, [Number]) -> Colour":{name:"rgb",sig:" Number, Number, Number, [Number]",returnType:"Colour",aka:["rgba"]},"(hsl: Number, Number, [Number]) -> Colour":{name:"hsl",sig:" Number, Number, [Number]",returnType:"Colour",aka:["hsla"]},"(gradient: Number, ...Number, Colour) -> Gradient":{name:"gradient",sig:" Number, ...Number, Colour",returnType:"Gradient",aka:[]},"(cond: Boolean, Any, ...Any) -> Any":{name:"cond",sig:" Boolean, Any, ...Any",returnType:"Any",aka:[]},"(weekday:) -> String":{name:"weekday",sig:"",returnType:"String",aka:[]},"(monthday:) -> Number":{name:"monthday",sig:"",returnType:"Number",aka:[]},"(current-time:) -> String":{name:"current-time",sig:"",returnType:"String",aka:[]},"(current-date:) -> String":{name:"current-date",sig:"",returnType:"String",aka:[]},"(min: ...Number) -> Number":{name:"min",sig:" ...Number",returnType:"Number",aka:[]},"(max: ...Number) -> Number":{name:"max",sig:" ...Number",returnType:"Number",aka:[]},"(abs: Number) -> Number":{name:"abs",sig:" Number",returnType:"Number",aka:[]},"(sign: Number) -> Number":{name:"sign",sig:" Number",returnType:"Number",aka:[]},"(sin: Number) -> Number":{name:"sin",sig:" Number",returnType:"Number",aka:[]},"(cos: Number) -> Number":{name:"cos",sig:" Number",returnType:"Number",aka:[]},"(tan: Number) -> Number":{name:"tan",sig:" Number",returnType:"Number",aka:[]},"(floor: Number) -> Number":{name:"floor",sig:" Number",returnType:"Number",aka:[]},"(round: Number) -> Number":{name:"round",sig:" Number",returnType:"Number",aka:[]},"(ceil: Number) -> Number":{name:"ceil",sig:" Number",returnType:"Number",aka:[]},"(pow: Number, Number) -> Number":{name:"pow",sig:" Number, Number",returnType:"Number",aka:[]},"(exp: Number) -> Number":{name:"exp",sig:" Number",returnType:"Number",aka:[]},"(sqrt: Number) -> Number":{name:"sqrt",sig:" Number",returnType:"Number",aka:[]},"(log: Number) -> Number":{name:"log",sig:" Number",returnType:"Number",aka:[]},"(log10: Number) -> Number":{name:"log10",sig:" Number",returnType:"Number",aka:[]},"(log2: Number) -> Number":{name:"log2",sig:" Number",returnType:"Number",aka:[]},"(random: Number, [Number]) -> Number":{name:"random",sig:" Number, [Number]",returnType:"Number",aka:[]},"(either: ...Any) -> Any":{name:"either",sig:" ...Any",returnType:"Any",aka:[]},"(nth: Number, ...Any) -> Any":{name:"nth",sig:" Number, ...Any",returnType:"Any",aka:[]}},n=r instanceof Object&&Object.keys(r).reduce(function(e,n){return e.concat.apply(e,[r[n].name].concat(_toConsumableArray(r[n].aka)))},[]).map(e),t=void 0;"function"==typeof define&&define.amd?define("markup",[],function(e){t=e.lex}):this&&this.loaded&&this.modules&&(t=this.modules.Markup.lex),window.CodeMirror&&CodeMirror.defineMode("harlowe-3",function(){function r(e,r){if(e.update){var n=e.from.line,t=r.split("\n").slice(0,e.from.line+1);return t[n]=t[n].slice(0,e.from.ch)+e.text[0],t=t.concat(e.text.slice(1)),e.update({line:0,ch:0},e.to,t),t.join("\n")}}function a(e){u.length&&(u.forEach(function(e){return e.clear()}),u=[]);var r=i.tokenAt(e.indexFromPos(e.getCursor()));if(r){if(u.push(e.markText(e.posFromIndex(r.start),e.posFromIndex(r.end),{className:"cm-harlowe-3-cursor"})),"variable"===r.type||"tempVariable"===r.type||"hookRef"===r.type||"hook"===r.type){var n="hook"===r.type?"hookRef":r.type;s[n].forEach(function(n){n!==r&&n.name===r.name&&u.push(e.markText(e.posFromIndex(n.start),e.posFromIndex(n.end),{className:"cm-harlowe-3-variableOccurrence"}))})}"hookRef"!==r.type&&"hook"!==r.type||s.hook.forEach(function(n){if(n!==r&&n.name===r.name){var t="appended"===n.tagPosition?n.end-n.name.length-1:n.start+1;u.push(e.markText(e.posFromIndex(t),e.posFromIndex(t+n.name.length),{className:"cm-harlowe-3-hookOccurrence"}))}})}}var o=void 0,i=void 0,s={variable:[],tempVariable:[],hook:[],hookRef:[],populate:function(){var e=this;this.variable=[],this.tempVariable=[],this.hook=[],this.hookRef=[];var r=function r(n){"variable"!==n.type&&"tempVariable"!==n.type&&"hook"!==n.type&&"hookRef"!==n.type||e[n.type].push(n),n.children.forEach(r)};i.children.forEach(r)}},u=[],m=function(){var e=o.doc;i=t(e.getValue()),s.populate(),e.on("beforeChange",function(n,t){r(t,e.getValue())}),e.on("change",function(){var r=e.getValue();i=t(r),s.populate()}),e.on("swapDoc",m),e.on("cursorActivity",a),m=null};return{startState:function(){return o||(o=CodeMirror.modes["harlowe-3"].cm, -o.setOption("placeholder",["Enter the body text of your passage here.","''Bold'', //italics//, ^^superscript^^, ~~strikethrough~~, and

      HTML tags

      are available.","To display special symbols without them being transformed, put them between `backticks`.","To link to another passage, write the link text and the passage name like this: [[link text->passage name]]\nor this: [[passage name<-link text]]\nor this: [[link text]].","Macros like (set:) and (display:) are the programming of your passage. If you've (set:) a $variable, you can just enter its name to print it out.","To make a 'hook', put [single square brackets] around text - or leave it empty [] - then put a macro like (if:), a $variable, or a |nametag> outside the front, |like>[so].","Hooks can be used for many things: showing text (if:) something happened, applying a (text-style:), making a place to (append:) text later on, and much more!","Consult the Harlowe documentation for more information."].join("\n\n")),o.setOption("lineNumbers",!0),o.setOption("lineNumberFormatter",function(){return"\u2022"})),{pos:0}},blankLine:function(e){e.pos++},token:function(r,t){m&&m();var a=i.pathAt(t.pos),o=a[0];if(!o)return t.pos++,r.next(),null;for(;o===o.tokenAt(t.pos)&&!r.eol();)t.pos++,r.next();r.eol()&&t.pos++;for(var s={},u="",l=0;l1&&(c+="-"+s[c]),g){case"macroName":-1===n.indexOf(e(a[l].text.slice(0,-1)))&&(c+=" harlowe-3-error")}u+=c+" "}return u}}});var a=document.querySelector("style#cm-harlowe-3");a||(a=document.createElement("style"),a.setAttribute("id","cm-harlowe-3"),document.head.appendChild(a)),a.innerHTML=function(){var e=function(e,r,n){return function(t){return"background-color: hsla("+e+","+r+"%,"+n+"%,"+t+");"}},r=e(40,100,50),n=e(220,100,50),t=function(r){return e(320,44,50)(r)+"color: #a84186;"};return{root:"box-sizing:border-box;","cursor:not([class^='cm-harlowe-3-text cm-harlowe-3-root'])":"border-bottom: 2px solid darkgray;",CodeMirror:"padding: 0 !important","CodeMirror-linenumber":"color: #ccc;","CodeMirror-gutters":"left: 0px !important;",hook:r(.05),"hook-2":r(.1),"hook-3":r(.15),"hook-4":r(.2),"hook-5":r(.25),"hook-6":r(.3),"hook-7":r(.35),"hook-8":r(.4),"^=hook , ^=hook-":"font-weight:bold;",unclosedHook:r(.05)+"font-weight:bold;","error:not([class*='cm-harlowe-3-string'])":"color: firebrick !important; background-color: hsla(17, 100%, 74%, 0.74) !important;",macro:t(.05),"macro-2":t(.1),"macro-3":t(.15),"macro-4":t(.2),"macro-5":t(.25),"macro-6":t(.3),"macro-7":t(.35),"macro-8":t(.4),macroName:"font-style:italic;","^=macro ":"font-weight:bold;","bold, strong":"font-weight:bold;","italic, em":"font-style:italic;",sup:"vertical-align: super;font-size:0.8em;",strike:"text-decoration: line-through;",verbatim:"background-color: hsla(0,0%,50%,0.1);","^=bold, ^=strong, ^=italic, ^=em, ^=sup, ^=verbatim, ^=strike":"font-weight:100; color: hsla(0,0,0,0.5)","^=collapsed":"font-weight:bold; color: hsl(201, 100%, 30%);",collapsed:n(.025),"collapsed.hook":n(.05),"collapsed.hook-2":n(.1),"collapsed.hook-3":n(.15),"collapsed.hook-4":n(.2),"collapsed.hook-5":n(.25),"collapsed.hook-6":n(.3),"collapsed.hook-7":n(.35),"collapsed.hook-8":n(.4),"twineLink:not(.text)":"color: #3333cc;",".theme-dark twineLink:not(.text)":"color: #5555ee;",tag:"color: #4d4d9d;",boolean:"color: #626262;",string:"color: #158383;",number:"color: #A15000;",variable:"color: #0076b2;",tempVariable:"color: #218abe;",hookRef:"color: #007f54;","variableOccurrence, hookOccurrence":"background: #9fdfc9 !important;","^=where, ^=via, ^=with, ^=making, ^=each, ^=when":"color: #007f00; font-style:italic;",heading:"font-weight:bold;",hr:"display:block; background-image: linear-gradient(0deg, transparent, transparent 45%, silver 45%, transparent 55%, transparent);",align:"display:block; color: hsl(14, 99%, 37%); background-color: hsla(14, 99%, 87%, 0.1);",column:"display:block; color: hsl(204, 99%, 37%); background-color: hsla(204, 99%, 87%, 0.1);",escapedLine:"font-weight:bold; color: hsl(51, 100%, 30%);","identifier, property, belongingProperty, itsProperty, belongingItProperty, belongingItOperator":"color: #0076b2;",toString:function(){var e=this;return Object.keys(this).reduce(function(r,n){var t;return"toString"===n?r:"CodeMirror"===n.slice(0,10)?r+"."+n+"{"+e[n]+"}":(t=n.split(", ").map(function e(r){return 0===r.indexOf(".theme-dark")?r.slice(0,11)+" "+e(r.slice(11).trim()):r.indexOf(".")>-1?r.split(/\./g).map(e).join(""):0===r.indexOf("^=")?"[class^='cm-harlowe-3-"+r.slice(2)+"']":".cm-harlowe-3-"+r}),r+t.join(", ")+"{"+e[n]+"}")},"")}}+""}()}.call(eval("this")); -}}); \ No newline at end of file +window.storyFormat({"name":"Harlowe","version":"3.3.1","author":"Leon Arnott","description":"The default story format for Twine 2, with numerous programming features and a rich passage editor. No HTML, JS or CSS experience required. Consult its documentation.","image":"icon.svg","url":"http://twinery.org/","license":"Zlib","proofing":false,"source":"\n\n\n\n\n{{STORY_NAME}}\n\n\n\n\n{{STORY_DATA}}\n\n\n\n\n","setup": function(){"use strict";function _createForOfIteratorHelper(a,t){var r,o="undefined"!=typeof Symbol&&a[Symbol.iterator]||a["@@iterator"];if(!o){if(Array.isArray(a)||(o=_unsupportedIterableToArray(a))||t&&a&&"number"==typeof a.length)return o&&(a=o),r=0,{s:t=function F(){},n:function n(){return r>=a.length?{done:!0}:{done:!1,value:a[r++]}},e:function e(a){throw a},f:t};throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var i,c=!0,l=!1;return{s:function s(){o=o.call(a)},n:function n(){var e=o.next();return c=e.done,e},e:function e(a){l=!0,i=a},f:function f(){try{c||null==o.return||o.return()}finally{if(l)throw i}}}}function _toArray(e){return _arrayWithHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableRest()}function _slicedToArray(e,a){return _arrayWithHoles(e)||_iterableToArrayLimit(e,a)||_unsupportedIterableToArray(e,a)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _iterableToArrayLimit(e,a){var t=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=t){var r,o,n=[],i=!0,s=!1;try{for(t=t.call(e);!(i=(r=t.next()).done)&&(n.push(r.value),!a||n.length!==a);i=!0);}catch(e){s=!0,o=e}finally{try{i||null==t.return||t.return()}finally{if(s)throw o}}return n}}function _arrayWithHoles(e){if(Array.isArray(e))return e}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,a){if(e){if("string"==typeof e)return _arrayLikeToArray(e,a);var t=Object.prototype.toString.call(e).slice(8,-1);return"Map"===(t="Object"===t&&e.constructor?e.constructor.name:t)||"Set"===t?Array.from(e):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(e,a):void 0}}function _iterableToArray(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _arrayLikeToArray(e,a){(null==a||a>e.length)&&(a=e.length);for(var t=0,r=new Array(a);t=r.length)&&!u.isFront)continue}n=this.end)return null;if(this.children.length)for(var a=0;a=this.end)return[];var a=[];if(this.children.length)for(var t=0;t=this.end?null:this.children?this.children.reduce(function(e,a){return e||(t>=a.start&&t|<=+|=+><=+|<==+>)"+o+l,l=o+"(=+\\|+|\\|+=+|=+\\|+=+|\\|=+\\|)"+o+l,p={opener:"\\[\\[(?!\\[)",text:"("+function notChars(){return"[^"+Array.apply(0,arguments).map(escape).join("")+"]*"}("]")+")",rightSeparator:a("\\->","\\|"),leftSeparator:"<\\-",closer:"\\]\\]",legacySeparator:"\\|",legacyText:"("+a("[^\\|\\]]","\\]"+t("\\]"))+"+)"},g=c+"*"+c.replace("\\w","a-zA-Z")+c+"*",b="\\$("+g+")",y="_("+g+")",f="'s"+n+"("+g+")",w="("+g+")"+n+"of"+i+t("it\\b"),k="'s"+n,v=a("it","time","turns?","visits?","exits?","pos")+i,x="its"+n+"("+g+")",T="("+g+")"+n+"of"+n+"it"+i,C="of"+n+"it"+i,S={opener:"\\(",name:"("+a("\\$","_")+"?"+s+"+):"+t("\\/"),closer:"\\)"},A=a("=<","=>","[gl]te?\\b","n?eq\\b","isnot\\b","are\\b","x\\b","isa\\b","or"+n+"a"+i),N="[a-zA-Z][\\w\\-]*",_="(?:\"[^\"]*\"|'[^']*'|[^'\">])*?",O="\\|("+s+"+)(>|\\))",L="(<|\\()("+s+"+)\\|",P="((?:\\b\\d+(?:\\.\\d+)?|\\.\\d+)(?:[eE][+\\-]?\\d+)?)"+t("m?s")+i;p.main=p.opener+a(p.text+p.rightSeparator,p.text.replace("*","*?")+p.leftSeparator)+p.text,e={upperLetter:"[A-Z\\u00c0-\\u00de\\u0150\\u0170]",lowerLetter:"[a-z0-9_\\-\\u00df-\\u00ff\\u0151\\u0171]",anyLetter:s,anyLetterStrict:c,whitespace:n.replace("[","[\\n\\r"),escapedLine:"\\\\\\n\\\\?|\\n\\\\",br:"\\n(?!\\\\)",tag:"<\\/?"+N+_+">",scriptStyleTag:"<("+a("script","style","textarea")+")"+_+">[^]*?<\\/\\1>",scriptStyleTagOpener:"<",url:"("+a("https?","mailto","javascript","ftp","data")+":\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])",bullet:"\\*",hr:m,heading:"[ \\f\\t\\v\\u00a0\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000]*(#{1,6})[ \\f\\t\\v\\u00a0\\u2000-\\u200a\\u2028\\u2029\\u202f\\u205f\\u3000]*",align:u,column:l,bulleted:h,numbered:d,verbatimOpener:"`+",hookAppendedFront:"\\["+t("=+"),hookPrependedFront:O+"\\["+t("=+"),hookFront:"\\["+t("=+"),hookBack:"\\]"+t(L),hookAppendedBack:"\\]"+L,unclosedHook:"\\[=+",unclosedHookPrepended:O+"\\[=+",unclosedCollapsed:"\\{=+",passageLink:p.main+p.closer,legacyLink:p.opener+p.legacyText+p.legacySeparator+p.legacyText+p.closer,simpleLink:p.opener+p.legacyText+p.closer,macroFront:S.opener+r(S.name),macroName:S.name,groupingFront:"\\("+t(S.name),twine1Macro:"<<[^>\\s]+\\s*(?:\\\\.|'(?:[^'\\\\]*\\\\.)*[^'\\\\]*'|\"(?:[^\"\\\\]*\\\\.)*[^\"\\\\]*\"|[^'\"\\\\>]|>(?!>))*>>",validPropertyName:g,property:f,belongingProperty:w,possessiveOperator:k,belongingOperator:"of\\b",itsOperator:"its\\b",belongingItOperator:C,variable:b,tempVariable:y,hookName:"\\?("+s+"+)\\b",cssTime:"(\\d+\\.?\\d*|\\d*\\.?\\d+)(m?s)\\b",colour:a(a("Red","Orange","Yellow","Lime","Green","Cyan","Aqua","Blue","Navy","Purple","Fuchsia","Magenta","White","Gray","Grey","Black","Transparent"),"#[\\dA-Fa-f]{3}(?:[\\dA-Fa-f]{3})?"),datatype:a("alnum","alphanumeric","any(?:case)?","array","bool(?:ean)?","changer","codehook","colou?r","const","command","dm","data"+a("map","type","set"),"ds","digit","gradient","empty","even","int"+t("o")+"(?:eger)?","lambda","lowercase","macro","linebreak","newline","num(?:ber)?","odd","str(?:ing)?","uppercase","whitespace")+i,number:P,boolean:a("true","false")+i,identifier:v,itsProperty:x,belongingItProperty:T,escapedStringChar:"\\\\[^\\n]",singleStringOpener:"'",doubleStringOpener:'"',singleStringCloser:"'",doubleStringCloser:'"',is:"is"+t(n+"not"+i,n+"an?"+i,n+"in"+i,n+"<",n+">")+i,isNot:"is"+n+"not"+t(n+a("an?","in")+i)+i,isA:"is"+n+"an?"+i,isNotA:"is"+n+"not"+n+"an?"+i,matches:"matches\\b",doesNotMatch:"does"+n+"not"+n+"match"+i,and:"and\\b",or:"or\\b",not:"not\\b",inequality:"((?:is(?:"+n+"not)?"+o+")*)("+a("<(?!=)","<=",">(?!=)",">=")+")",isIn:"is"+n+"in"+i,contains:"contains\\b",doesNotContain:"does"+n+"not"+n+"contain"+i,isNotIn:"is"+n+"not"+n+"in"+i,addition:escape("+")+t("="),subtraction:escape("-")+t("=","type"),multiplication:escape("*")+t("="),division:a("/","%")+t("="),spread:"\\.\\.\\."+t("\\."),to:a("to\\b","="),into:"into\\b",making:"making\\b",where:"where\\b",when:"when\\b",via:"via\\b",each:"each\\b",augmentedAssign:a("\\+","\\-","\\*","\\/","%")+"=",bind:"2?bind\\b",typeSignature:escape("-type")+i,incorrectOperator:A,PlainCompare:{comma:",",commentFront:"\x3c!--",commentBack:"--\x3e",strikeOpener:"~~",italicOpener:"//",boldOpener:"''",supOpener:"^^",strongFront:"**",strongBack:"**",emFront:"*",emBack:"*",collapsedFront:"{",collapsedBack:"}",groupingBack:")"}},"object"===("undefined"==typeof module?"undefined":_typeof(module))?module.exports=e:"function"==typeof define&&define.amd?define("patterns",[],function(){return e}):this&&this.loaded?(this.modules||(this.modules={}),this.modules.Patterns=e):this.Patterns=e}.call(eval("this")||("undefined"!=typeof global?global:window)),!function(){Object.assign=Object.assign||function polyfilledAssign(e){for(var a=1;a<");return~t?25===(a=Math.round(t/(e.length-2)*50))&&(a="center"):"<"===e[0]&&">"===e.slice(-1)?a="justify":-1")?a="right":-1":">=","=<":"<=",gte:">=",lte:"<=",gt:">",lt:"<",eq:"is",isnot:"is not",neq:"is not",isa:"is a",are:"is",x:"*","or a":"or"}[e[0].toLowerCase().replace(/\s+/g," ")];return{type:"error",message:"Please say "+(a?"'"+a+"'":"something else")+" instead of '"+e[0]+"'.",explanation:"In the interests of readability, I want certain operators to be in a specific form."}},cannotFollowText:!0}},["boolean","is","to","into","where","when","via","making","each","and","or","not","isNot","contains","doesNotContain","isIn","isA","isNotA","isNotIn","matches","doesNotMatch","bind"].reduce(function(e,a){return e[a]={fn:t,cannotFollowText:!0},e},{}),["comma","spread","typeSignature","addition","subtraction","multiplication","division"].reduce(function(e,a){return e[a]={fn:t},e},{}))),h=setupRules(o,{singleStringCloser:l.singleStringOpener,doubleStringCloser:l.doubleStringOpener,escapedStringChar:l.escapedStringChar}),d=(r.push.apply(r,_toConsumableArray(u(n)).concat(_toConsumableArray(u(c)),_toConsumableArray(u(s)))),a.push.apply(a,_toConsumableArray(u(c)).concat(_toConsumableArray(u(l)))),o.push.apply(o,_toConsumableArray(u(h))),p({},n,s,c,l,h));return u(d).forEach(function(e){m.PlainCompare[e]?(d[e].pattern=m.PlainCompare[e],d[e].plainCompare=!0):d[e].pattern=RegExp("^(?:"+m[e]+")","i")}),p(e.rules,d),(s=e.modes).start=s.markup=r,s.macro=a,s.string=o,e}(e).lex,Patterns:m})}"object"===("undefined"==typeof module?"undefined":_typeof(module))?(m=require("./patterns"),module.exports=exporter(require("./lexer"))):"function"==typeof define&&define.amd?define("markup",["lexer","patterns"],function(e,a){return m=a,exporter(e)}):this&&this.loaded&&this.modules?(m=this.modules.Patterns,this.modules.Markup=exporter(this.modules.Lexer)):(m=this.Patterns,this.Markup=exporter(this.Lexer))}.call(eval("this")||("undefined"!=typeof global?global:window)),!function(){var a=Math.round,e=function insensitiveName(e){return(e+"").toLowerCase().replace(/-|_/g,"")},t={"#e61919":"red","#e68019":"orange","#e5e619":"yellow","#80e619":"lime","#19e619":"green","#19e5e6":"cyan","#197fe6":"blue","#1919e6":"navy","#7f19e6":"purple","#e619e5":"magenta","#ffffff":"white","#000000":"black","#888888":"grey"},r=function fontIcon(e){var a=1')},o=function GCD(e,a){return e?a?a