From b355f2aee0f356afeab85af5d50e97f51afe62dc Mon Sep 17 00:00:00 2001 From: seleb Date: Sat, 9 Apr 2022 06:28:13 +0000 Subject: [PATCH] feat: update hacks --- .../{index.2942b0cf.js => index.5c35e4ea.js} | 1147 +++++++++-------- docs/index.html | 2 +- package-lock.json | 14 +- package.json | 2 +- src/hacks/avatar-by-room.txt | 7 +- src/hacks/backdrops.txt | 38 +- src/hacks/basic-sfx.txt | 7 +- src/hacks/bitsymuse.txt | 7 +- src/hacks/canvas-replacement.txt | 5 +- src/hacks/character-portraits-animated.txt | 7 +- src/hacks/character-portraits.txt | 5 +- src/hacks/close-on-ending.txt | 5 +- src/hacks/corrupt.txt | 9 +- src/hacks/custom-exit-effects.txt | 7 +- src/hacks/custom-keyhandlers.txt | 5 +- src/hacks/custom-text-effect.txt | 5 +- src/hacks/dialog-audio-vocal-synth.txt | 9 +- src/hacks/dialog-audio.txt | 5 +- src/hacks/dialog-box-transition.txt | 5 +- src/hacks/dialog-choices.txt | 9 +- src/hacks/dialog-jump.txt | 5 +- src/hacks/dialog-pause.txt | 5 +- src/hacks/dialog-prompt.txt | 7 +- src/hacks/direction-in-dialog.txt | 5 +- src/hacks/directional-avatar.txt | 9 +- src/hacks/dynamic-background.txt | 7 +- src/hacks/edit-dialog-from-dialog.txt | 7 +- src/hacks/edit-image-from-dialog.txt | 9 +- src/hacks/edit-player-from-dialog.txt | 7 +- src/hacks/edit-room-from-dialog.txt | 7 +- src/hacks/end-from-dialog.txt | 5 +- src/hacks/exit-from-dialog.txt | 7 +- src/hacks/external-game-data.txt | 5 +- src/hacks/favicon-from-sprite.txt | 7 +- src/hacks/follower.txt | 7 +- src/hacks/gamepad-input.txt | 5 +- src/hacks/gravity.txt | 9 +- src/hacks/itsy-bitsy.txt | 5 +- src/hacks/javascript-dialog.txt | 5 +- src/hacks/logic-operators-extended.txt | 5 +- src/hacks/long-dialog.txt | 7 +- src/hacks/multi-sprite-avatar.txt | 7 +- src/hacks/noclip.txt | 7 +- src/hacks/online.txt | 15 +- src/hacks/opaque-tiles.txt | 5 +- src/hacks/paragraph-break.txt | 5 +- src/hacks/permanent-items.txt | 5 +- src/hacks/push-sprites.txt | 9 +- src/hacks/replace-drawing.txt | 5 +- src/hacks/save.txt | 7 +- src/hacks/smooth-moves.txt | 5 +- src/hacks/solid-items.txt | 5 +- src/hacks/sprite-effects.txt | 7 +- src/hacks/stopwatch.txt | 7 +- src/hacks/text-to-speech.txt | 5 +- src/hacks/tracery-processing.txt | 5 +- src/hacks/transitions.txt | 7 +- src/hacks/transparent-background.txt | 36 +- src/hacks/transparent-dialog.txt | 5 +- src/hacks/transparent-sprites.txt | 34 +- src/hacks/twine-bitsy-comms.txt | 5 +- src/hacks/unique-items.txt | 5 +- 62 files changed, 956 insertions(+), 670 deletions(-) rename docs/assets/{index.2942b0cf.js => index.5c35e4ea.js} (96%) diff --git a/docs/assets/index.2942b0cf.js b/docs/assets/index.5c35e4ea.js similarity index 96% rename from docs/assets/index.2942b0cf.js rename to docs/assets/index.5c35e4ea.js index 21a38246..248b1858 100644 --- a/docs/assets/index.2942b0cf.js +++ b/docs/assets/index.5c35e4ea.js @@ -1,4 +1,4 @@ -var bn=Object.defineProperty,vn=Object.defineProperties;var wn=Object.getOwnPropertyDescriptors;var Gt=Object.getOwnPropertySymbols;var kn=Object.prototype.hasOwnProperty,xn=Object.prototype.propertyIsEnumerable;var Ut=(t,n,e)=>n in t?bn(t,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[n]=e,lt=(t,n)=>{for(var e in n||(n={}))kn.call(n,e)&&Ut(t,e,n[e]);if(Gt)for(var e of Gt(n))xn.call(n,e)&&Ut(t,e,n[e]);return t},Vt=(t,n)=>vn(t,wn(n));const Sn=function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const p of document.querySelectorAll('link[rel="modulepreload"]'))i(p);new MutationObserver(p=>{for(const f of p)if(f.type==="childList")for(const d of f.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&i(d)}).observe(document,{childList:!0,subtree:!0});function e(p){const f={};return p.integrity&&(f.integrity=p.integrity),p.referrerpolicy&&(f.referrerPolicy=p.referrerpolicy),p.crossorigin==="use-credentials"?f.credentials="include":p.crossorigin==="anonymous"?f.credentials="omit":f.credentials="same-origin",f}function i(p){if(p.ep)return;p.ep=!0;const f=e(p);fetch(p.href,f)}};Sn();const jn={},Tn=`

Borksy is a hacking tool to be used in conjunction with Bitsy Game Maker! Use it to customize your games and add hacks without needing to manually cut-and-paste html.

+var bn=Object.defineProperty,vn=Object.defineProperties;var wn=Object.getOwnPropertyDescriptors;var Gt=Object.getOwnPropertySymbols;var kn=Object.prototype.hasOwnProperty,xn=Object.prototype.propertyIsEnumerable;var Ut=(t,n,e)=>n in t?bn(t,n,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[n]=e,lt=(t,n)=>{for(var e in n||(n={}))kn.call(n,e)&&Ut(t,e,n[e]);if(Gt)for(var e of Gt(n))xn.call(n,e)&&Ut(t,e,n[e]);return t},Vt=(t,n)=>vn(t,wn(n));const Sn=function(){const n=document.createElement("link").relList;if(n&&n.supports&&n.supports("modulepreload"))return;for(const p of document.querySelectorAll('link[rel="modulepreload"]'))a(p);new MutationObserver(p=>{for(const f of p)if(f.type==="childList")for(const d of f.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&a(d)}).observe(document,{childList:!0,subtree:!0});function e(p){const f={};return p.integrity&&(f.integrity=p.integrity),p.referrerpolicy&&(f.referrerPolicy=p.referrerpolicy),p.crossorigin==="use-credentials"?f.credentials="include":p.crossorigin==="anonymous"?f.credentials="omit":f.credentials="same-origin",f}function a(p){if(p.ep)return;p.ep=!0;const f=e(p);fetch(p.href,f)}};Sn();const jn={},Tn=`

Borksy is a hacking tool to be used in conjunction with Bitsy Game Maker! Use it to customize your games and add hacks without needing to manually cut-and-paste html.

If you're not sure how to use this tool, check out the 'How To Use Borksy' section. If you're having issues, check the 'Troubleshooting/FAQs' section. If you're not familiar with how Bitsy can be extended, try exploring the Bitsy hacks repo.

Borksy Features:

-`;var Pn=Object.freeze({__proto__:null,[Symbol.toStringTag]:"Module",attributes:Rn,html:qn});const Ln="@bitsy/hecks",Mn="a collection of re-usable scripts for bitsy game maker",Hn=["bitsy","hacks"],Gn="index.mjs",Un="20.2.0",Vn="7.12",zn={build:"rollup -c",test:"jest --runInBand",lint:"eslint ./src/**/*.js",postversion:"npm run build"},$n="Sean S. LeBlanc ",Wn="MIT (individual hacks have their own license specified)",Yn={type:"git",url:"git://github.com/seleb/bitsy-hacks.git"},Xn={"@seansleblanc/pink-trombone":"^1.0.1","input-gamepads.js":"^3.0.4",kitsy:"^1.1.0",omggif:"^1.0.10",rollup:"^2.56.3","rollup-plugin-commonjs":"^10.1.0","rollup-plugin-node-resolve":"^5.2.0","tracery-grammar":"^2.7.4",webglazy:"^3.1.2"},Kn={"@babel/plugin-transform-runtime":"^7.15.0","@babel/preset-env":"^7.15.0","@babel/runtime":"^7.15.3",doctrine:"^3.0.0",eslint:"^8.2.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.3.0","eslint-plugin-import":"^2.24.2","eslint-plugin-prettier":"^4.0.0",jest:"^27.0.6","jest-image-snapshot":"^4.5.1",prettier:"^2.4.1",puppeteer:"^13.1.2"},Jn={testEnvironment:"jsdom",setupFilesAfterEnv:["/src/test/setupTests.js"]},Qn={branches:["+([0-9])?(.{+([0-9]),x}).x","main"],plugins:["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{assets:["dist/*.js","README.md","CHANGELOG.md","package.json","package-lock.json"]}]]};var Dt={name:Ln,description:Mn,keywords:Hn,main:Gn,version:Un,bitsyVersion:Vn,scripts:zn,author:$n,license:Wn,repository:Yn,dependencies:Xn,devDependencies:Kn,jest:Jn,release:Qn},O=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{},Qt={exports:{}};(function(t,n){(function(e,i){i()})(O,function(){function e(u,c){return typeof c=="undefined"?c={autoBom:!1}:typeof c!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),c={autoBom:!c}),c.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(u.type)?new Blob(["\uFEFF",u],{type:u.type}):u}function i(u,c,h){var r=new XMLHttpRequest;r.open("GET",u),r.responseType="blob",r.onload=function(){o(r.response,c,h)},r.onerror=function(){console.error("could not download file")},r.send()}function p(u){var c=new XMLHttpRequest;c.open("HEAD",u,!1);try{c.send()}catch{}return 200<=c.status&&299>=c.status}function f(u){try{u.dispatchEvent(new MouseEvent("click"))}catch{var c=document.createEvent("MouseEvents");c.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),u.dispatchEvent(c)}}var d=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof O=="object"&&O.global===O?O:void 0,l=d.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),o=d.saveAs||(typeof window!="object"||window!==d?function(){}:"download"in HTMLAnchorElement.prototype&&!l?function(u,c,h){var r=d.URL||d.webkitURL,s=document.createElement("a");c=c||u.name||"download",s.download=c,s.rel="noopener",typeof u=="string"?(s.href=u,s.origin===location.origin?f(s):p(s.href)?i(u,c,h):f(s,s.target="_blank")):(s.href=r.createObjectURL(u),setTimeout(function(){r.revokeObjectURL(s.href)},4e4),setTimeout(function(){f(s)},0))}:"msSaveOrOpenBlob"in navigator?function(u,c,h){if(c=c||u.name||"download",typeof u!="string")navigator.msSaveOrOpenBlob(e(u,h),c);else if(p(u))i(u,c,h);else{var r=document.createElement("a");r.href=u,r.target="_blank",setTimeout(function(){f(r)})}}:function(u,c,h,r){if(r=r||open("","_blank"),r&&(r.document.title=r.document.body.innerText="downloading..."),typeof u=="string")return i(u,c,h);var s=u.type==="application/octet-stream",a=/constructor/i.test(d.HTMLElement)||d.safari,m=/CriOS\/[\d]+/.test(navigator.userAgent);if((m||s&&a||l)&&typeof FileReader!="undefined"){var g=new FileReader;g.onloadend=function(){var w=g.result;w=m?w:w.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=w:location=w,r=null},g.readAsDataURL(u)}else{var b=d.URL||d.webkitURL,y=b.createObjectURL(u);r?r.location=y:location.href=y,r=null,setTimeout(function(){b.revokeObjectURL(y)},4e4)}});d.saveAs=o.saveAs=o,t.exports=o})})(Qt);var ft={exports:{}},ht={exports:{}},A={},S={};S.__esModule=!0;S.extend=Zt;S.indexOf=re;S.escapeExpression=ae;S.isEmpty=ie;S.createFrame=se;S.blockParams=oe;S.appendContextPath=ce;var Zn={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},te=/[&<>"'`=]/g,ne=/[&<>"'`=]/;function ee(t){return Zn[t]}function Zt(t){for(var n=1;n0?(f.ids&&(f.ids=[f.name]),i.helpers.each(p,f)):d(this);if(f.data&&f.ids){var o=e.createFrame(f.data);o.contextPath=e.appendContextPath(f.data.contextPath,f.name),f={data:o}}return l(p,f)})},t.exports=n.default})(mt,mt.exports);var yt={exports:{}};(function(t,n){n.__esModule=!0;function e(d){return d&&d.__esModule?d:{default:d}}var i=S,p=E.exports,f=e(p);n.default=function(d){d.registerHelper("each",function(l,o){if(!o)throw new f.default("Must pass iterator to #each");var u=o.fn,c=o.inverse,h=0,r="",s=void 0,a=void 0;o.data&&o.ids&&(a=i.appendContextPath(o.data.contextPath,o.ids[0])+"."),i.isFunction(l)&&(l=l.call(this)),o.data&&(s=i.createFrame(o.data));function m(v,k,T){s&&(s.key=v,s.index=k,s.first=k===0,s.last=!!T,a&&(s.contextPath=a+v)),r=r+u(l[v],{data:s,blockParams:i.blockParams([l[v],v],[a+v,null])})}if(l&&typeof l=="object")if(i.isArray(l))for(var g=l.length;h=0?f=d:f=parseInt(f,10)}return f},log:function(f){if(f=i.lookupLevel(f),typeof console!="undefined"&&i.lookupLevel(i.level)<=f){var d=i.methodMap[f];console[d]||(d="log");for(var l=arguments.length,o=Array(l>1?l-1:0),u=1;u/src/test/setupTests.js"]},Qn={branches:["+([0-9])?(.{+([0-9]),x}).x","main"],plugins:["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{assets:["dist/*.js","README.md","CHANGELOG.md","package.json","package-lock.json"]}]]};var Dt={name:Ln,description:Mn,keywords:Hn,main:Gn,version:Un,bitsyVersion:Vn,scripts:zn,author:$n,license:Wn,repository:Yn,dependencies:Xn,devDependencies:Kn,jest:Jn,release:Qn},O=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{},Qt={exports:{}};(function(t,n){(function(e,a){a()})(O,function(){function e(u,c){return typeof c=="undefined"?c={autoBom:!1}:typeof c!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),c={autoBom:!c}),c.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(u.type)?new Blob(["\uFEFF",u],{type:u.type}):u}function a(u,c,h){var r=new XMLHttpRequest;r.open("GET",u),r.responseType="blob",r.onload=function(){o(r.response,c,h)},r.onerror=function(){console.error("could not download file")},r.send()}function p(u){var c=new XMLHttpRequest;c.open("HEAD",u,!1);try{c.send()}catch{}return 200<=c.status&&299>=c.status}function f(u){try{u.dispatchEvent(new MouseEvent("click"))}catch{var c=document.createEvent("MouseEvents");c.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),u.dispatchEvent(c)}}var d=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof O=="object"&&O.global===O?O:void 0,l=d.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),o=d.saveAs||(typeof window!="object"||window!==d?function(){}:"download"in HTMLAnchorElement.prototype&&!l?function(u,c,h){var r=d.URL||d.webkitURL,s=document.createElement("a");c=c||u.name||"download",s.download=c,s.rel="noopener",typeof u=="string"?(s.href=u,s.origin===location.origin?f(s):p(s.href)?a(u,c,h):f(s,s.target="_blank")):(s.href=r.createObjectURL(u),setTimeout(function(){r.revokeObjectURL(s.href)},4e4),setTimeout(function(){f(s)},0))}:"msSaveOrOpenBlob"in navigator?function(u,c,h){if(c=c||u.name||"download",typeof u!="string")navigator.msSaveOrOpenBlob(e(u,h),c);else if(p(u))a(u,c,h);else{var r=document.createElement("a");r.href=u,r.target="_blank",setTimeout(function(){f(r)})}}:function(u,c,h,r){if(r=r||open("","_blank"),r&&(r.document.title=r.document.body.innerText="downloading..."),typeof u=="string")return a(u,c,h);var s=u.type==="application/octet-stream",i=/constructor/i.test(d.HTMLElement)||d.safari,m=/CriOS\/[\d]+/.test(navigator.userAgent);if((m||s&&i||l)&&typeof FileReader!="undefined"){var g=new FileReader;g.onloadend=function(){var w=g.result;w=m?w:w.replace(/^data:[^;]*;/,"data:attachment/file;"),r?r.location.href=w:location=w,r=null},g.readAsDataURL(u)}else{var b=d.URL||d.webkitURL,y=b.createObjectURL(u);r?r.location=y:location.href=y,r=null,setTimeout(function(){b.revokeObjectURL(y)},4e4)}});d.saveAs=o.saveAs=o,t.exports=o})})(Qt);var ft={exports:{}},ht={exports:{}},A={},S={};S.__esModule=!0;S.extend=Zt;S.indexOf=re;S.escapeExpression=ie;S.isEmpty=ae;S.createFrame=se;S.blockParams=oe;S.appendContextPath=ce;var Zn={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},te=/[&<>"'`=]/g,ne=/[&<>"'`=]/;function ee(t){return Zn[t]}function Zt(t){for(var n=1;n0?(f.ids&&(f.ids=[f.name]),a.helpers.each(p,f)):d(this);if(f.data&&f.ids){var o=e.createFrame(f.data);o.contextPath=e.appendContextPath(f.data.contextPath,f.name),f={data:o}}return l(p,f)})},t.exports=n.default})(mt,mt.exports);var yt={exports:{}};(function(t,n){n.__esModule=!0;function e(d){return d&&d.__esModule?d:{default:d}}var a=S,p=E.exports,f=e(p);n.default=function(d){d.registerHelper("each",function(l,o){if(!o)throw new f.default("Must pass iterator to #each");var u=o.fn,c=o.inverse,h=0,r="",s=void 0,i=void 0;o.data&&o.ids&&(i=a.appendContextPath(o.data.contextPath,o.ids[0])+"."),a.isFunction(l)&&(l=l.call(this)),o.data&&(s=a.createFrame(o.data));function m(v,k,T){s&&(s.key=v,s.index=k,s.first=k===0,s.last=!!T,i&&(s.contextPath=i+v)),r=r+u(l[v],{data:s,blockParams:a.blockParams([l[v],v],[i+v,null])})}if(l&&typeof l=="object")if(a.isArray(l))for(var g=l.length;h=0?f=d:f=parseInt(f,10)}return f},log:function(f){if(f=a.lookupLevel(f),typeof console!="undefined"&&a.lookupLevel(a.level)<=f){var d=a.methodMap[f];console[d]||(d="log");for(var l=arguments.length,o=Array(l>1?l-1:0),u=1;u= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};A.REVISION_CHANGES=$e;var pt="[object Object]";function jt(t,n,e){this.helpers=t||{},this.partials=n||{},this.decorators=e||{},Le.registerDefaultHelpers(this),Me.registerDefaultDecorators(this)}jt.prototype={constructor:jt,logger:at.default,log:at.default.log,registerHelper:function(n,e){if(q.toString.call(n)===pt){if(e)throw new ut.default("Arg not supported with multiple helpers");q.extend(this.helpers,n)}else this.helpers[n]=e},unregisterHelper:function(n){delete this.helpers[n]},registerPartial:function(n,e){if(q.toString.call(n)===pt)q.extend(this.partials,n);else{if(typeof e=="undefined")throw new ut.default('Attempting to register a partial called "'+n+'" as undefined');this.partials[n]=e}},unregisterPartial:function(n){delete this.partials[n]},registerDecorator:function(n,e){if(q.toString.call(n)===pt){if(e)throw new ut.default("Arg not supported with multiple decorators");q.extend(this.decorators,n)}else this.decorators[n]=e},unregisterDecorator:function(n){delete this.decorators[n]},resetLoggedPropertyAccesses:function(){Ge.resetLoggedProperties()}};var We=at.default.log;A.log=We;A.createFrame=q.createFrame;A.logger=at.default;var Tt={exports:{}};(function(t,n){n.__esModule=!0;function e(i){this.string=i}e.prototype.toString=e.prototype.toHTML=function(){return""+this.string},n.default=e,t.exports=n.default})(Tt,Tt.exports);var R={},qt={};qt.__esModule=!0;qt.wrapHelper=Ye;function Ye(t,n){if(typeof t!="function")return t;var e=function(){var p=arguments[arguments.length-1];return arguments[arguments.length-1]=n(p),t.apply(this,arguments)};return e}R.__esModule=!0;R.checkRevision=tr;R.template=nr;R.wrapProgram=tt;R.resolvePartial=er;R.invokePartial=rr;R.noop=en;function Xe(t){return t&&t.__esModule?t:{default:t}}function Ke(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&(n[e]=t[e]);return n.default=t,n}var Je=S,N=Ke(Je),Qe=E.exports,D=Xe(Qe),B=A,Wt=K,Ze=qt,Yt=G;function tr(t){var n=t&&t[0]||1,e=B.COMPILER_REVISION;if(!(n>=B.LAST_COMPATIBLE_COMPILER_REVISION&&n<=B.COMPILER_REVISION))if(n= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};A.REVISION_CHANGES=$e;var pt="[object Object]";function jt(t,n,e){this.helpers=t||{},this.partials=n||{},this.decorators=e||{},Le.registerDefaultHelpers(this),Me.registerDefaultDecorators(this)}jt.prototype={constructor:jt,logger:it.default,log:it.default.log,registerHelper:function(n,e){if(q.toString.call(n)===pt){if(e)throw new ut.default("Arg not supported with multiple helpers");q.extend(this.helpers,n)}else this.helpers[n]=e},unregisterHelper:function(n){delete this.helpers[n]},registerPartial:function(n,e){if(q.toString.call(n)===pt)q.extend(this.partials,n);else{if(typeof e=="undefined")throw new ut.default('Attempting to register a partial called "'+n+'" as undefined');this.partials[n]=e}},unregisterPartial:function(n){delete this.partials[n]},registerDecorator:function(n,e){if(q.toString.call(n)===pt){if(e)throw new ut.default("Arg not supported with multiple decorators");q.extend(this.decorators,n)}else this.decorators[n]=e},unregisterDecorator:function(n){delete this.decorators[n]},resetLoggedPropertyAccesses:function(){Ge.resetLoggedProperties()}};var We=it.default.log;A.log=We;A.createFrame=q.createFrame;A.logger=it.default;var Tt={exports:{}};(function(t,n){n.__esModule=!0;function e(a){this.string=a}e.prototype.toString=e.prototype.toHTML=function(){return""+this.string},n.default=e,t.exports=n.default})(Tt,Tt.exports);var R={},qt={};qt.__esModule=!0;qt.wrapHelper=Ye;function Ye(t,n){if(typeof t!="function")return t;var e=function(){var p=arguments[arguments.length-1];return arguments[arguments.length-1]=n(p),t.apply(this,arguments)};return e}R.__esModule=!0;R.checkRevision=tr;R.template=nr;R.wrapProgram=tt;R.resolvePartial=er;R.invokePartial=rr;R.noop=en;function Xe(t){return t&&t.__esModule?t:{default:t}}function Ke(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&(n[e]=t[e]);return n.default=t,n}var Je=S,N=Ke(Je),Qe=E.exports,D=Xe(Qe),B=A,Wt=K,Ze=qt,Yt=G;function tr(t){var n=t&&t[0]||1,e=B.COMPILER_REVISION;if(!(n>=B.LAST_COMPATIBLE_COMPILER_REVISION&&n<=B.COMPILER_REVISION))if(n2&&Z.push("'"+this.terminals_[I]+"'");this.lexer.showPosition?ct="Parse error on line "+(a+1)+`: +`)}return c}else throw new D.default("The partial "+o.name+" could not be compiled when running in runtime-only mode")}var p={strict:function(l,o,u){if(!l||!(o in l))throw new D.default('"'+o+'" not defined in '+l,{loc:u});return p.lookupProperty(l,o)},lookupProperty:function(l,o){var u=l[o];if(u==null||Object.prototype.hasOwnProperty.call(l,o)||Yt.resultIsAllowed(u,p.protoAccessControl,o))return u},lookup:function(l,o){for(var u=l.length,c=0;c2&&Z.push("'"+this.terminals_[I]+"'");this.lexer.showPosition?ct="Parse error on line "+(i+1)+`: `+this.lexer.showPosition()+` -Expecting `+Z.join(", ")+", got '"+(this.terminals_[w]||w)+"'":ct="Parse error on line "+(a+1)+": Unexpected "+(w==1?"end of input":"'"+(this.terminals_[w]||w)+"'"),this.parseError(ct,{text:this.lexer.match,token:this.terminals_[w]||w,line:this.lexer.yylineno,loc:g,expected:Z})}}if(k[0]instanceof Array&&k.length>1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+w);switch(k[0]){case 1:u.push(w),c.push(this.lexer.yytext),h.push(this.lexer.yylloc),u.push(k[1]),w=null,m=this.lexer.yyleng,s=this.lexer.yytext,a=this.lexer.yylineno,g=this.lexer.yylloc;break;case 2:if(F=this.productions_[k[1]][1],x.$=c[c.length-F],x._$={first_line:h[h.length-(F||1)].first_line,last_line:h[h.length-1].last_line,first_column:h[h.length-(F||1)].first_column,last_column:h[h.length-1].last_column},b&&(x._$.range=[h[h.length-(F||1)].range[0],h[h.length-1].range[1]]),T=this.performAction.call(x,s,m,a,this.yy,k[1],c,h),typeof T!="undefined")return T;F&&(u=u.slice(0,-1*F*2),c=c.slice(0,-1*F),h=h.slice(0,-1*F)),u.push(this.productions_[k[1]][0]),c.push(x.$),h.push(x._$),V=r[u[u.length-2]][u[u.length-1]],u.push(V);break;case 3:return!0}}return!0}},p=function(){var d={EOF:1,parseError:function(o,u){if(this.yy.parser)this.yy.parser.parseError(o,u);else throw new Error(o)},setInput:function(o){return this._input=o,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var u=o.match(/(?:\r\n?|\n).*/g);return u?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},unput:function(o){var u=o.length,c=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-u-1),this.offset-=u;var h=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===h.length?this.yylloc.first_column:0)+h[h.length-c.length].length-c[0].length:this.yylloc.first_column-u},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-u]),this},more:function(){return this._more=!0,this},less:function(o){this.unput(this.match.slice(o))},pastInput:function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var o=this.pastInput(),u=new Array(o.length+1).join("-");return o+this.upcomingInput()+` -`+u+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var o,u,c,h,r;this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),a=0;au[0].length)&&(u=c,h=a,!this.options.flex)));a++);return u?(r=u[0].match(/(?:\r\n?|\n).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+u[0].length},this.yytext+=u[0],this.match+=u[0],this.matches=u,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(u[0].length),this.matched+=u[0],o=this.performAction.call(this,this.yy,this,s[h],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),o||void 0):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. -`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var o=this.next();return typeof o!="undefined"?o:this.lex()},begin:function(o){this.conditionStack.push(o)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(o){this.begin(o)}};return d.options={},d.performAction=function(o,u,c,h){function r(s,a){return u.yytext=u.yytext.substring(s,u.yyleng-a+s)}switch(c){case 0:if(u.yytext.slice(-2)==="\\\\"?(r(0,1),this.begin("mu")):u.yytext.slice(-1)==="\\"?(r(0,1),this.begin("emu")):this.begin("mu"),u.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;case 3:return this.begin("raw"),15;case 4:return this.popState(),this.conditionStack[this.conditionStack.length-1]==="raw"?15:(r(5,9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:return this.popState(),44;case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(u.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;case 23:return 48;case 24:return 73;case 25:return 72;case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return u.yytext=r(1,2).replace(/\\"/g,'"'),80;case 32:return u.yytext=r(1,2).replace(/\\'/g,"'"),80;case 33:return 85;case 34:return 82;case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return u.yytext=u.yytext.replace(/\\([\\\]])/g,"$1"),72;case 43:return"INVALID";case 44:return 5}},d.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]+?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],d.conditions={mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}},d}();i.lexer=p;function f(){this.yy={}}return f.prototype=i,i.Parser=f,new f}();n.default=e,t.exports=n.default})(It,It.exports);var Ft={exports:{}},ot={exports:{}};(function(t,n){n.__esModule=!0;function e(u){return u&&u.__esModule?u:{default:u}}var i=E.exports,p=e(i);function f(){this.parents=[]}f.prototype={constructor:f,mutating:!1,acceptKey:function(c,h){var r=this.accept(c[h]);if(this.mutating){if(r&&!f.prototype[r.type])throw new p.default('Unexpected node type "'+r.type+'" found when accepting '+h+" on "+c.type);c[h]=r}},acceptRequired:function(c,h){if(this.acceptKey(c,h),!c[h])throw new p.default(c.type+" requires "+h)},acceptArray:function(c){for(var h=0,r=c.length;h0)throw new Pt.default("Invalid path: "+i,{loc:e});o===".."&&f++}else p.push(o)}return{type:"PathExpression",data:t,depth:f,parts:p,original:i,loc:e}}function hr(t,n,e,i,p,f){var d=i.charAt(3)||i.charAt(2),l=d!=="{"&&d!=="&",o=/\*/.test(i);return{type:o?"Decorator":"MustacheStatement",path:t,params:n,hash:e,escaped:l,strip:p,loc:this.locInfo(f)}}function gr(t,n,e,i){Lt(t,e),i=this.locInfo(i);var p={type:"Program",body:n,strip:{},loc:i};return{type:"BlockStatement",path:t.path,params:t.params,hash:t.hash,program:p,openStrip:{},inverseStrip:{},closeStrip:{},loc:i}}function mr(t,n,e,i,p,f){i&&i.path&&Lt(t,i);var d=/\*/.test(t.open);n.blockParams=t.blockParams;var l=void 0,o=void 0;if(e){if(d)throw new Pt.default("Unexpected inverse block on decorator",e);e.chain&&(e.program.body[0].closeStrip=i.strip),o=e.strip,l=e.program}return p&&(p=l,l=n,n=p),{type:d?"DecoratorBlock":"BlockStatement",path:t.path,params:t.params,hash:t.hash,program:n,inverse:l,openStrip:t.strip,inverseStrip:o,closeStrip:i&&i.strip,loc:this.locInfo(f)}}function yr(t,n){if(!n&&t.length){var e=t[0].loc,i=t[t.length-1].loc;e&&i&&(n={source:e.source,start:{line:e.start.line,column:e.start.column},end:{line:i.end.line,column:i.end.column}})}return{type:"Program",body:t,strip:{},loc:n}}function br(t,n,e,i){return Lt(t,e),{type:"PartialBlockStatement",name:t.path,params:t.params,hash:t.hash,program:n,openStrip:t.strip,closeStrip:e&&e.strip,loc:this.locInfo(i)}}J.__esModule=!0;J.parseWithoutProcessing=sn;J.parse=Ir;function vr(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&(n[e]=t[e]);return n.default=t,n}function an(t){return t&&t.__esModule?t:{default:t}}var wr=It.exports,Et=an(wr),kr=Ft.exports,xr=an(kr),Sr=_,jr=vr(Sr),Tr=S;J.parser=Et.default;var nt={};Tr.extend(nt,jr);function sn(t,n){if(t.type==="Program")return t;Et.default.yy=nt,nt.locInfo=function(i){return new nt.SourceLocation(n&&n.srcName,i)};var e=Et.default.parse(t);return e}function Ir(t,n){var e=sn(t,n),i=new xr.default(n);return i.accept(e)}var Q={};Q.__esModule=!0;Q.Compiler=At;Q.precompile=_r;Q.compile=Or;function on(t){return t&&t.__esModule?t:{default:t}}var Fr=E.exports,Y=on(Fr),X=S,Er=st.exports,z=on(Er),Ar=[].slice;function At(){}At.prototype={compiler:At,equals:function(n){var e=this.opcodes.length;if(n.opcodes.length!==e)return!1;for(var i=0;i1)throw new Y.default("Unsupported number of partial arguments: "+i.length,n);i.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):i.push({type:"PathExpression",parts:[],depth:0}));var p=n.name.original,f=n.name.type==="SubExpression";f&&this.accept(n.name),this.setupFullMustacheParams(n,e,void 0,!0);var d=n.indent||"";this.options.preventIndent&&d&&(this.opcode("appendContent",d),d=""),this.opcode("invokePartial",f,p,d),this.opcode("append")},PartialBlockStatement:function(n){this.PartialStatement(n)},MustacheStatement:function(n){this.SubExpression(n),n.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function(n){this.DecoratorBlock(n)},ContentStatement:function(n){n.value&&this.opcode("appendContent",n.value)},CommentStatement:function(){},SubExpression:function(n){Xt(n);var e=this.classifySexpr(n);e==="simple"?this.simpleSexpr(n):e==="helper"?this.helperSexpr(n):this.ambiguousSexpr(n)},ambiguousSexpr:function(n,e,i){var p=n.path,f=p.parts[0],d=e!=null||i!=null;this.opcode("getContext",p.depth),this.opcode("pushProgram",e),this.opcode("pushProgram",i),p.strict=!0,this.accept(p),this.opcode("invokeAmbiguous",f,d)},simpleSexpr:function(n){var e=n.path;e.strict=!0,this.accept(e),this.opcode("resolvePossibleLambda")},helperSexpr:function(n,e,i){var p=this.setupFullMustacheParams(n,e,i),f=n.path,d=f.parts[0];if(this.options.knownHelpers[d])this.opcode("invokeKnownHelper",p.length,d);else{if(this.options.knownHelpersOnly)throw new Y.default("You specified knownHelpersOnly, but used the unknown helper "+d,n);f.strict=!0,f.falsy=!0,this.accept(f),this.opcode("invokeHelper",p.length,f.original,z.default.helpers.simpleId(f))}},PathExpression:function(n){this.addDepth(n.depth),this.opcode("getContext",n.depth);var e=n.parts[0],i=z.default.helpers.scopedId(n),p=!n.depth&&!i&&this.blockParamIndex(e);p?this.opcode("lookupBlockParam",p,n.parts):e?n.data?(this.options.data=!0,this.opcode("lookupData",n.depth,n.parts,n.strict)):this.opcode("lookupOnContext",n.parts,n.falsy,n.strict,i):this.opcode("pushContext")},StringLiteral:function(n){this.opcode("pushString",n.value)},NumberLiteral:function(n){this.opcode("pushLiteral",n.value)},BooleanLiteral:function(n){this.opcode("pushLiteral",n.value)},UndefinedLiteral:function(){this.opcode("pushLiteral","undefined")},NullLiteral:function(){this.opcode("pushLiteral","null")},Hash:function(n){var e=n.pairs,i=0,p=e.length;for(this.opcode("pushHash");i=0)return[e,f]}}};function _r(t,n,e){if(t==null||typeof t!="string"&&t.type!=="Program")throw new Y.default("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+t);n=n||{},"data"in n||(n.data=!0),n.compat&&(n.useDepths=!0);var i=e.parse(t,n),p=new e.Compiler().compile(i,n);return new e.JavaScriptCompiler().compile(p,n)}function Or(t,n,e){if(n===void 0&&(n={}),t==null||typeof t!="string"&&t.type!=="Program")throw new Y.default("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+t);n=X.extend({},n),"data"in n||(n.data=!0),n.compat&&(n.useDepths=!0);var i=void 0;function p(){var d=e.parse(t,n),l=new e.Compiler().compile(d,n),o=new e.JavaScriptCompiler().compile(l,n,void 0,!0);return e.template(o)}function f(d,l){return i||(i=p()),i.call(this,d,l)}return f._setup=function(d){return i||(i=p()),i._setup(d)},f._child=function(d,l,o,u){return i||(i=p()),i._child(d,l,o,u)},f}function cn(t,n){if(t===n)return!0;if(X.isArray(t)&&X.isArray(n)&&t.length===n.length){for(var e=0;e1)throw new Error("Parse Error: multiple actions possible at state: "+v+", token: "+w);switch(k[0]){case 1:u.push(w),c.push(this.lexer.yytext),h.push(this.lexer.yylloc),u.push(k[1]),w=null,m=this.lexer.yyleng,s=this.lexer.yytext,i=this.lexer.yylineno,g=this.lexer.yylloc;break;case 2:if(F=this.productions_[k[1]][1],x.$=c[c.length-F],x._$={first_line:h[h.length-(F||1)].first_line,last_line:h[h.length-1].last_line,first_column:h[h.length-(F||1)].first_column,last_column:h[h.length-1].last_column},b&&(x._$.range=[h[h.length-(F||1)].range[0],h[h.length-1].range[1]]),T=this.performAction.call(x,s,m,i,this.yy,k[1],c,h),typeof T!="undefined")return T;F&&(u=u.slice(0,-1*F*2),c=c.slice(0,-1*F),h=h.slice(0,-1*F)),u.push(this.productions_[k[1]][0]),c.push(x.$),h.push(x._$),V=r[u[u.length-2]][u[u.length-1]],u.push(V);break;case 3:return!0}}return!0}},p=function(){var d={EOF:1,parseError:function(o,u){if(this.yy.parser)this.yy.parser.parseError(o,u);else throw new Error(o)},setInput:function(o){return this._input=o,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var o=this._input[0];this.yytext+=o,this.yyleng++,this.offset++,this.match+=o,this.matched+=o;var u=o.match(/(?:\r\n?|\n).*/g);return u?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),o},unput:function(o){var u=o.length,c=o.split(/(?:\r\n?|\n)/g);this._input=o+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-u-1),this.offset-=u;var h=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var r=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===h.length?this.yylloc.first_column:0)+h[h.length-c.length].length-c[0].length:this.yylloc.first_column-u},this.options.ranges&&(this.yylloc.range=[r[0],r[0]+this.yyleng-u]),this},more:function(){return this._more=!0,this},less:function(o){this.unput(this.match.slice(o))},pastInput:function(){var o=this.matched.substr(0,this.matched.length-this.match.length);return(o.length>20?"...":"")+o.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var o=this.match;return o.length<20&&(o+=this._input.substr(0,20-o.length)),(o.substr(0,20)+(o.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var o=this.pastInput(),u=new Array(o.length+1).join("-");return o+this.upcomingInput()+` +`+u+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var o,u,c,h,r;this._more||(this.yytext="",this.match="");for(var s=this._currentRules(),i=0;iu[0].length)&&(u=c,h=i,!this.options.flex)));i++);return u?(r=u[0].match(/(?:\r\n?|\n).*/g),r&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+u[0].length},this.yytext+=u[0],this.match+=u[0],this.matches=u,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(u[0].length),this.matched+=u[0],o=this.performAction.call(this,this.yy,this,s[h],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),o||void 0):this._input===""?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+`. Unrecognized text. +`+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var o=this.next();return typeof o!="undefined"?o:this.lex()},begin:function(o){this.conditionStack.push(o)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(o){this.begin(o)}};return d.options={},d.performAction=function(o,u,c,h){function r(s,i){return u.yytext=u.yytext.substring(s,u.yyleng-i+s)}switch(c){case 0:if(u.yytext.slice(-2)==="\\\\"?(r(0,1),this.begin("mu")):u.yytext.slice(-1)==="\\"?(r(0,1),this.begin("emu")):this.begin("mu"),u.yytext)return 15;break;case 1:return 15;case 2:return this.popState(),15;case 3:return this.begin("raw"),15;case 4:return this.popState(),this.conditionStack[this.conditionStack.length-1]==="raw"?15:(r(5,9),"END_RAW_BLOCK");case 5:return 15;case 6:return this.popState(),14;case 7:return 65;case 8:return 68;case 9:return 19;case 10:return this.popState(),this.begin("raw"),23;case 11:return 55;case 12:return 60;case 13:return 29;case 14:return 47;case 15:return this.popState(),44;case 16:return this.popState(),44;case 17:return 34;case 18:return 39;case 19:return 51;case 20:return 48;case 21:this.unput(u.yytext),this.popState(),this.begin("com");break;case 22:return this.popState(),14;case 23:return 48;case 24:return 73;case 25:return 72;case 26:return 72;case 27:return 87;case 28:break;case 29:return this.popState(),54;case 30:return this.popState(),33;case 31:return u.yytext=r(1,2).replace(/\\"/g,'"'),80;case 32:return u.yytext=r(1,2).replace(/\\'/g,"'"),80;case 33:return 85;case 34:return 82;case 35:return 82;case 36:return 83;case 37:return 84;case 38:return 81;case 39:return 75;case 40:return 77;case 41:return 72;case 42:return u.yytext=u.yytext.replace(/\\([\\\]])/g,"$1"),72;case 43:return"INVALID";case 44:return 5}},d.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{(?=[^\/]))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]+?(?=(\{\{\{\{)))/,/^(?:[\s\S]*?--(~)?\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#>)/,/^(?:\{\{(~)?#\*?)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{(~)?!--)/,/^(?:\{\{(~)?![\s\S]*?\}\})/,/^(?:\{\{(~)?\*?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)|])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:undefined(?=([~}\s)])))/,/^(?:null(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:as\s+\|)/,/^(?:\|)/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)|]))))/,/^(?:\[(\\\]|[^\]])*\])/,/^(?:.)/,/^(?:$)/],d.conditions={mu:{rules:[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[6],inclusive:!1},raw:{rules:[3,4,5],inclusive:!1},INITIAL:{rules:[0,1,44],inclusive:!0}},d}();a.lexer=p;function f(){this.yy={}}return f.prototype=a,a.Parser=f,new f}();n.default=e,t.exports=n.default})(It,It.exports);var Ft={exports:{}},ot={exports:{}};(function(t,n){n.__esModule=!0;function e(u){return u&&u.__esModule?u:{default:u}}var a=E.exports,p=e(a);function f(){this.parents=[]}f.prototype={constructor:f,mutating:!1,acceptKey:function(c,h){var r=this.accept(c[h]);if(this.mutating){if(r&&!f.prototype[r.type])throw new p.default('Unexpected node type "'+r.type+'" found when accepting '+h+" on "+c.type);c[h]=r}},acceptRequired:function(c,h){if(this.acceptKey(c,h),!c[h])throw new p.default(c.type+" requires "+h)},acceptArray:function(c){for(var h=0,r=c.length;h0)throw new Pt.default("Invalid path: "+a,{loc:e});o===".."&&f++}else p.push(o)}return{type:"PathExpression",data:t,depth:f,parts:p,original:a,loc:e}}function hr(t,n,e,a,p,f){var d=a.charAt(3)||a.charAt(2),l=d!=="{"&&d!=="&",o=/\*/.test(a);return{type:o?"Decorator":"MustacheStatement",path:t,params:n,hash:e,escaped:l,strip:p,loc:this.locInfo(f)}}function gr(t,n,e,a){Lt(t,e),a=this.locInfo(a);var p={type:"Program",body:n,strip:{},loc:a};return{type:"BlockStatement",path:t.path,params:t.params,hash:t.hash,program:p,openStrip:{},inverseStrip:{},closeStrip:{},loc:a}}function mr(t,n,e,a,p,f){a&&a.path&&Lt(t,a);var d=/\*/.test(t.open);n.blockParams=t.blockParams;var l=void 0,o=void 0;if(e){if(d)throw new Pt.default("Unexpected inverse block on decorator",e);e.chain&&(e.program.body[0].closeStrip=a.strip),o=e.strip,l=e.program}return p&&(p=l,l=n,n=p),{type:d?"DecoratorBlock":"BlockStatement",path:t.path,params:t.params,hash:t.hash,program:n,inverse:l,openStrip:t.strip,inverseStrip:o,closeStrip:a&&a.strip,loc:this.locInfo(f)}}function yr(t,n){if(!n&&t.length){var e=t[0].loc,a=t[t.length-1].loc;e&&a&&(n={source:e.source,start:{line:e.start.line,column:e.start.column},end:{line:a.end.line,column:a.end.column}})}return{type:"Program",body:t,strip:{},loc:n}}function br(t,n,e,a){return Lt(t,e),{type:"PartialBlockStatement",name:t.path,params:t.params,hash:t.hash,program:n,openStrip:t.strip,closeStrip:e&&e.strip,loc:this.locInfo(a)}}J.__esModule=!0;J.parseWithoutProcessing=sn;J.parse=Ir;function vr(t){if(t&&t.__esModule)return t;var n={};if(t!=null)for(var e in t)Object.prototype.hasOwnProperty.call(t,e)&&(n[e]=t[e]);return n.default=t,n}function an(t){return t&&t.__esModule?t:{default:t}}var wr=It.exports,Et=an(wr),kr=Ft.exports,xr=an(kr),Sr=_,jr=vr(Sr),Tr=S;J.parser=Et.default;var nt={};Tr.extend(nt,jr);function sn(t,n){if(t.type==="Program")return t;Et.default.yy=nt,nt.locInfo=function(a){return new nt.SourceLocation(n&&n.srcName,a)};var e=Et.default.parse(t);return e}function Ir(t,n){var e=sn(t,n),a=new xr.default(n);return a.accept(e)}var Q={};Q.__esModule=!0;Q.Compiler=At;Q.precompile=_r;Q.compile=Or;function on(t){return t&&t.__esModule?t:{default:t}}var Fr=E.exports,Y=on(Fr),X=S,Er=st.exports,z=on(Er),Ar=[].slice;function At(){}At.prototype={compiler:At,equals:function(n){var e=this.opcodes.length;if(n.opcodes.length!==e)return!1;for(var a=0;a1)throw new Y.default("Unsupported number of partial arguments: "+a.length,n);a.length||(this.options.explicitPartialContext?this.opcode("pushLiteral","undefined"):a.push({type:"PathExpression",parts:[],depth:0}));var p=n.name.original,f=n.name.type==="SubExpression";f&&this.accept(n.name),this.setupFullMustacheParams(n,e,void 0,!0);var d=n.indent||"";this.options.preventIndent&&d&&(this.opcode("appendContent",d),d=""),this.opcode("invokePartial",f,p,d),this.opcode("append")},PartialBlockStatement:function(n){this.PartialStatement(n)},MustacheStatement:function(n){this.SubExpression(n),n.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},Decorator:function(n){this.DecoratorBlock(n)},ContentStatement:function(n){n.value&&this.opcode("appendContent",n.value)},CommentStatement:function(){},SubExpression:function(n){Xt(n);var e=this.classifySexpr(n);e==="simple"?this.simpleSexpr(n):e==="helper"?this.helperSexpr(n):this.ambiguousSexpr(n)},ambiguousSexpr:function(n,e,a){var p=n.path,f=p.parts[0],d=e!=null||a!=null;this.opcode("getContext",p.depth),this.opcode("pushProgram",e),this.opcode("pushProgram",a),p.strict=!0,this.accept(p),this.opcode("invokeAmbiguous",f,d)},simpleSexpr:function(n){var e=n.path;e.strict=!0,this.accept(e),this.opcode("resolvePossibleLambda")},helperSexpr:function(n,e,a){var p=this.setupFullMustacheParams(n,e,a),f=n.path,d=f.parts[0];if(this.options.knownHelpers[d])this.opcode("invokeKnownHelper",p.length,d);else{if(this.options.knownHelpersOnly)throw new Y.default("You specified knownHelpersOnly, but used the unknown helper "+d,n);f.strict=!0,f.falsy=!0,this.accept(f),this.opcode("invokeHelper",p.length,f.original,z.default.helpers.simpleId(f))}},PathExpression:function(n){this.addDepth(n.depth),this.opcode("getContext",n.depth);var e=n.parts[0],a=z.default.helpers.scopedId(n),p=!n.depth&&!a&&this.blockParamIndex(e);p?this.opcode("lookupBlockParam",p,n.parts):e?n.data?(this.options.data=!0,this.opcode("lookupData",n.depth,n.parts,n.strict)):this.opcode("lookupOnContext",n.parts,n.falsy,n.strict,a):this.opcode("pushContext")},StringLiteral:function(n){this.opcode("pushString",n.value)},NumberLiteral:function(n){this.opcode("pushLiteral",n.value)},BooleanLiteral:function(n){this.opcode("pushLiteral",n.value)},UndefinedLiteral:function(){this.opcode("pushLiteral","undefined")},NullLiteral:function(){this.opcode("pushLiteral","null")},Hash:function(n){var e=n.pairs,a=0,p=e.length;for(this.opcode("pushHash");a=0)return[e,f]}}};function _r(t,n,e){if(t==null||typeof t!="string"&&t.type!=="Program")throw new Y.default("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+t);n=n||{},"data"in n||(n.data=!0),n.compat&&(n.useDepths=!0);var a=e.parse(t,n),p=new e.Compiler().compile(a,n);return new e.JavaScriptCompiler().compile(p,n)}function Or(t,n,e){if(n===void 0&&(n={}),t==null||typeof t!="string"&&t.type!=="Program")throw new Y.default("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+t);n=X.extend({},n),"data"in n||(n.data=!0),n.compat&&(n.useDepths=!0);var a=void 0;function p(){var d=e.parse(t,n),l=new e.Compiler().compile(d,n),o=new e.JavaScriptCompiler().compile(l,n,void 0,!0);return e.template(o)}function f(d,l){return a||(a=p()),a.call(this,d,l)}return f._setup=function(d){return a||(a=p()),a._setup(d)},f._child=function(d,l,o,u){return a||(a=p()),a._child(d,l,o,u)},f}function cn(t,n){if(t===n)return!0;if(X.isArray(t)&&X.isArray(n)&&t.length===n.length){for(var e=0;e0&&(m+=", "+g.join(", "));var b=0;Object.keys(this.aliases).forEach(function(v){var k=a.aliases[v];k.children&&k.referenceCount>1&&(m+=", alias"+ ++b+"="+v,k.children[0]="alias"+b)}),this.lookupPropertyFunctionIsUsed&&(m+=", "+this.lookupPropertyFunctionVarDeclaration());var y=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&y.push("blockParams"),this.useDepths&&y.push("depths");var w=this.mergeSource(m);return s?(y.push(w),Function.apply(this,y)):this.source.wrap(["function(",y.join(","),`) { - `,w,"}"])},mergeSource:function(s){var a=this.environment.isSimple,m=!this.forceBuffer,g=void 0,b=void 0,y=void 0,w=void 0;return this.source.each(function(v){v.appendToBuffer?(y?v.prepend(" + "):y=v,w=v):(y&&(b?y.prepend("buffer += "):g=!0,w.add(";"),y=w=void 0),b=!0,a||(m=!1))}),m?y?(y.prepend("return "),w.add(";")):b||this.source.push('return "";'):(s+=", buffer = "+(g?"":this.initializeBuffer()),y?(y.prepend("return buffer + "),w.add(";")):this.source.push("return buffer;")),s&&this.source.prepend("var "+s.substring(2)+(g?"":`; +`),this.decorators=this.decorators.merge()));var T=this.createFunctionContext(g);if(this.isChild)return T;var x={compiler:this.compilerInfo(),main:T};this.decorators&&(x.main_d=this.decorators,x.useDecorators=!0);var I=this.context,F=I.programs,V=I.decorators;for(v=0,k=F.length;v0&&(m+=", "+g.join(", "));var b=0;Object.keys(this.aliases).forEach(function(v){var k=i.aliases[v];k.children&&k.referenceCount>1&&(m+=", alias"+ ++b+"="+v,k.children[0]="alias"+b)}),this.lookupPropertyFunctionIsUsed&&(m+=", "+this.lookupPropertyFunctionVarDeclaration());var y=["container","depth0","helpers","partials","data"];(this.useBlockParams||this.useDepths)&&y.push("blockParams"),this.useDepths&&y.push("depths");var w=this.mergeSource(m);return s?(y.push(w),Function.apply(this,y)):this.source.wrap(["function(",y.join(","),`) { + `,w,"}"])},mergeSource:function(s){var i=this.environment.isSimple,m=!this.forceBuffer,g=void 0,b=void 0,y=void 0,w=void 0;return this.source.each(function(v){v.appendToBuffer?(y?v.prepend(" + "):y=v,w=v):(y&&(b?y.prepend("buffer += "):g=!0,w.add(";"),y=w=void 0),b=!0,i||(m=!1))}),m?y?(y.prepend("return "),w.add(";")):b||this.source.push('return "";'):(s+=", buffer = "+(g?"":this.initializeBuffer()),y?(y.prepend("return buffer + "),w.add(";")):this.source.push("return buffer;")),s&&this.source.prepend("var "+s.substring(2)+(g?"":`; `)),this.source.merge()},lookupPropertyFunctionVarDeclaration:function(){return` lookupProperty = container.lookupProperty || function(parent, propertyName) { if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { @@ -116,7 +116,7 @@ Expecting `+Z.join(", ")+", got '"+(this.terminals_[w]||w)+"'":ct="Parse error o } return undefined } - `.trim()},blockValue:function(s){var a=this.aliasable("container.hooks.blockHelperMissing"),m=[this.contextName(0)];this.setupHelperArgs(s,0,m);var g=this.popStack();m.splice(1,0,g),this.push(this.source.functionCall(a,"call",m))},ambiguousBlockValue:function(){var s=this.aliasable("container.hooks.blockHelperMissing"),a=[this.contextName(0)];this.setupHelperArgs("",0,a,!0),this.flushInline();var m=this.topStack();a.splice(1,0,m),this.pushSource(["if (!",this.lastHelper,") { ",m," = ",this.source.functionCall(s,"call",a),"}"])},appendContent:function(s){this.pendingContent?s=this.pendingContent+s:this.pendingLocation=this.source.currentLocation,this.pendingContent=s},append:function(){if(this.isInline())this.replaceStack(function(a){return[" != null ? ",a,' : ""']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var s=this.popStack();this.pushSource(["if (",s," != null) { ",this.appendToBuffer(s,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(s){this.lastContext=s},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(s,a,m,g){var b=0;!g&&this.options.compat&&!this.lastContext?this.push(this.depthedLookup(s[b++])):this.pushContext(),this.resolvePath("context",s,b,a,m)},lookupBlockParam:function(s,a){this.useBlockParams=!0,this.push(["blockParams[",s[0],"][",s[1],"]"]),this.resolvePath("context",a,1)},lookupData:function(s,a,m){s?this.pushStackLiteral("container.data(data, "+s+")"):this.pushStackLiteral("data"),this.resolvePath("data",a,0,!0,m)},resolvePath:function(s,a,m,g,b){var y=this;if(this.options.strict||this.options.assumeObjects){this.push(h(this.options.strict&&b,this,a,s));return}for(var w=a.length;mthis.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var s=this.inlineStack;this.inlineStack=[];for(var a=0,m=s.length;a5.16.0 (2022-04-08) + `.trim()},blockValue:function(s){var i=this.aliasable("container.hooks.blockHelperMissing"),m=[this.contextName(0)];this.setupHelperArgs(s,0,m);var g=this.popStack();m.splice(1,0,g),this.push(this.source.functionCall(i,"call",m))},ambiguousBlockValue:function(){var s=this.aliasable("container.hooks.blockHelperMissing"),i=[this.contextName(0)];this.setupHelperArgs("",0,i,!0),this.flushInline();var m=this.topStack();i.splice(1,0,m),this.pushSource(["if (!",this.lastHelper,") { ",m," = ",this.source.functionCall(s,"call",i),"}"])},appendContent:function(s){this.pendingContent?s=this.pendingContent+s:this.pendingLocation=this.source.currentLocation,this.pendingContent=s},append:function(){if(this.isInline())this.replaceStack(function(i){return[" != null ? ",i,' : ""']}),this.pushSource(this.appendToBuffer(this.popStack()));else{var s=this.popStack();this.pushSource(["if (",s," != null) { ",this.appendToBuffer(s,void 0,!0)," }"]),this.environment.isSimple&&this.pushSource(["else { ",this.appendToBuffer("''",void 0,!0)," }"])}},appendEscaped:function(){this.pushSource(this.appendToBuffer([this.aliasable("container.escapeExpression"),"(",this.popStack(),")"]))},getContext:function(s){this.lastContext=s},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(s,i,m,g){var b=0;!g&&this.options.compat&&!this.lastContext?this.push(this.depthedLookup(s[b++])):this.pushContext(),this.resolvePath("context",s,b,i,m)},lookupBlockParam:function(s,i){this.useBlockParams=!0,this.push(["blockParams[",s[0],"][",s[1],"]"]),this.resolvePath("context",i,1)},lookupData:function(s,i,m){s?this.pushStackLiteral("container.data(data, "+s+")"):this.pushStackLiteral("data"),this.resolvePath("data",i,0,!0,m)},resolvePath:function(s,i,m,g,b){var y=this;if(this.options.strict||this.options.assumeObjects){this.push(h(this.options.strict&&b,this,i,s));return}for(var w=i.length;mthis.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var s=this.inlineStack;this.inlineStack=[];for(var i=0,m=s.length;i5.16.0 (2022-04-08)

Features

  • update hacks (6c3bb46)
  • @@ -482,7 +482,7 @@ Expecting `+Z.join(", ")+", got '"+(this.terminals_[w]||w)+"'":ct="Parse error o
    • Initial version
    -`,Nr="borksy",Dr="5.16.0",Br="Borksy Game Hacker: A tool for extending Bitsy games",Cr={postversion:"npm run build",start:"vite",build:"vite build",serve:"vite preview",test:"jest --runInBand",lint:'eslint "src/**/*.js"',"update-hacks":"node ./update-hacks.js"},Rr={type:"git",url:"git+https://github.com/Ayolland/borksy.git"},qr="AYolland",Pr="MIT",Lr={url:"https://github.com/Ayolland/borksy/issues"},Mr="https://ayolland.itch.io/borksy",Hr={testEnvironment:"jsdom",setupFilesAfterEnv:["/src/test/setupTests.js"],globalSetup:"/src/test/globalSetup.js",globalTeardown:"/src/test/globalTeardown.js"},Gr={plugins:["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{assets:["docs/**/*","CHANGELOG.md","package.json","package-lock.json"]}]]},Ur={"@bitsy/hecks":"^20.2.0",eslint:"^8.12.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.0.0","file-saver":"^2.0.5",handlebars:"^4.7.7",jest:"^27.5.1","jest-dev-server":"^6.0.0","jest-image-snapshot":"^4.5.1",prettier:"^2.6.2",puppeteer:"^13.5.2","rollup-plugin-visualizer":"^5.6.0",sass:"^1.50.0",vite:"^2.9.1","vite-plugin-markdown":"^2.0.2","vite-plugin-string":"^1.1.2"};var Vr={private:!0,name:Nr,version:Dr,description:Br,scripts:Cr,repository:Rr,author:qr,license:Pr,bugs:Lr,homepage:Mr,jest:Hr,release:Gr,devDependencies:Ur};const zr="modulepreload",Jt={},$r="./",j=function(n,e){return!e||e.length===0?n():Promise.all(e.map(i=>{if(i=`${$r}${i}`,i in Jt)return;Jt[i]=!0;const p=i.endsWith(".css"),f=p?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${i}"]${f}`))return;const d=document.createElement("link");if(d.rel=p?"stylesheet":zr,p||(d.as="script",d.crossOrigin=""),d.href=i,document.head.appendChild(d),p)return new Promise((l,o)=>{d.addEventListener("load",l),d.addEventListener("error",()=>o(new Error(`Unable to preload CSS for ${i}`)))})})).then(()=>n())};var H=[{data:()=>j(()=>import("./BitsyHD.5.1.224b5bed.js"),[]),bitsyVersion:"5.1",isHd:!0,description:"Bitsy HD (Bitsy 5.1)"},{data:()=>j(()=>import("./Bitsy.5.5.b578c1f1.js"),[]),bitsyVersion:"5.5",description:"Bitsy 5.5"},{data:()=>j(()=>import("./Bitsy.6.0.d01fe5ea.js"),[]),bitsyVersion:"6.0",description:"Bitsy 6.0"},{data:()=>j(()=>import("./Bitsy.6.3.f1de51df.js"),[]),bitsyVersion:"6.3",description:"Bitsy 6.3"},{data:()=>j(()=>import("./Bitsy.6.4.4364f87f.js"),[]),bitsyVersion:"6.4",description:"Bitsy 6.4"},{data:()=>j(()=>import("./Bitsy.6.5.bd486411.js"),[]),bitsyVersion:"6.5",description:"Bitsy 6.5"},{data:()=>j(()=>import("./Bitsy.7.0.005afbac.js"),[]),bitsyVersion:"7.0",description:"Bitsy 7.0"},{data:()=>j(()=>import("./Bitsy.7.2.e7deb823.js"),[]),bitsyVersion:"7.2",description:"Bitsy 7.2"},{data:()=>j(()=>import("./Bitsy.7.8.a8e1ddd6.js"),[]),bitsyVersion:"7.8",description:"Bitsy 7.8"},{data:()=>j(()=>import("./Bitsy.7.10.1cdc75c6.js"),[]),bitsyVersion:"7.10",description:"Bitsy 7.10"},{data:()=>j(()=>import("./BitsyHD.7.11.f9a8cfdc.js"),[]),bitsyVersion:"7.11",isHd:!0,description:"Bitsy HD (Bitsy 7.11)"},{data:()=>j(()=>import("./Bitsy.7.11.c7cee104.js"),[]),bitsyVersion:"7.11",description:"Bitsy 7.11"},{data:()=>j(()=>import("./BitsyHD.7.12.06a63c86.js"),[]),bitsyVersion:"7.12",isHd:!0,description:"Bitsy HD (Bitsy 7.12)"},{data:()=>j(()=>import("./Bitsy.7.12.7a7fbf49.js"),[]),bitsyVersion:"7.12",description:"Bitsy 7.12",isDefault:!0}].map(t=>Vt(lt({},t),{id:`Bitsy${t.isHd?"HD":""}${t.bitsyVersion.replace(/\./g,"")}`}));const $=Object.fromEntries(Object.entries({"../about/about.md":In,"../about/ayos-special-tips.md":An,"../about/how-to-use-borksy.md":Nn,"../about/other-tools.md":Cn,"../about/troubleshooting-faqs.md":Pn}).map(([t,n])=>[t.match(/.*\/(.*?)\.md/)[1],n.html])),ln=Object.fromEntries(Object.entries({"../defaults/body.txt":` +`,Nr="borksy",Dr="5.16.0",Br="Borksy Game Hacker: A tool for extending Bitsy games",Cr={postversion:"npm run build",start:"vite",build:"vite build",serve:"vite preview",test:"jest --runInBand",lint:'eslint "src/**/*.js"',"update-hacks":"node ./update-hacks.js"},Rr={type:"git",url:"git+https://github.com/Ayolland/borksy.git"},qr="AYolland",Pr="MIT",Lr={url:"https://github.com/Ayolland/borksy/issues"},Mr="https://ayolland.itch.io/borksy",Hr={testEnvironment:"jsdom",setupFilesAfterEnv:["/src/test/setupTests.js"],globalSetup:"/src/test/globalSetup.js",globalTeardown:"/src/test/globalTeardown.js"},Gr={plugins:["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/changelog","@semantic-release/npm","@semantic-release/github",["@semantic-release/git",{assets:["docs/**/*","CHANGELOG.md","package.json","package-lock.json"]}]]},Ur={"@bitsy/hecks":"^20.2.1",eslint:"^8.12.0","eslint-config-airbnb-base":"^15.0.0","eslint-config-prettier":"^8.5.0","eslint-plugin-import":"^2.26.0","eslint-plugin-prettier":"^4.0.0","file-saver":"^2.0.5",handlebars:"^4.7.7",jest:"^27.5.1","jest-dev-server":"^6.0.0","jest-image-snapshot":"^4.5.1",prettier:"^2.6.2",puppeteer:"^13.5.2","rollup-plugin-visualizer":"^5.6.0",sass:"^1.50.0",vite:"^2.9.1","vite-plugin-markdown":"^2.0.2","vite-plugin-string":"^1.1.2"};var Vr={private:!0,name:Nr,version:Dr,description:Br,scripts:Cr,repository:Rr,author:qr,license:Pr,bugs:Lr,homepage:Mr,jest:Hr,release:Gr,devDependencies:Ur};const zr="modulepreload",Jt={},$r="./",j=function(n,e){return!e||e.length===0?n():Promise.all(e.map(a=>{if(a=`${$r}${a}`,a in Jt)return;Jt[a]=!0;const p=a.endsWith(".css"),f=p?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${a}"]${f}`))return;const d=document.createElement("link");if(d.rel=p?"stylesheet":zr,p||(d.as="script",d.crossOrigin=""),d.href=a,document.head.appendChild(d),p)return new Promise((l,o)=>{d.addEventListener("load",l),d.addEventListener("error",()=>o(new Error(`Unable to preload CSS for ${a}`)))})})).then(()=>n())};var H=[{data:()=>j(()=>import("./BitsyHD.5.1.224b5bed.js"),[]),bitsyVersion:"5.1",isHd:!0,description:"Bitsy HD (Bitsy 5.1)"},{data:()=>j(()=>import("./Bitsy.5.5.b578c1f1.js"),[]),bitsyVersion:"5.5",description:"Bitsy 5.5"},{data:()=>j(()=>import("./Bitsy.6.0.d01fe5ea.js"),[]),bitsyVersion:"6.0",description:"Bitsy 6.0"},{data:()=>j(()=>import("./Bitsy.6.3.f1de51df.js"),[]),bitsyVersion:"6.3",description:"Bitsy 6.3"},{data:()=>j(()=>import("./Bitsy.6.4.4364f87f.js"),[]),bitsyVersion:"6.4",description:"Bitsy 6.4"},{data:()=>j(()=>import("./Bitsy.6.5.bd486411.js"),[]),bitsyVersion:"6.5",description:"Bitsy 6.5"},{data:()=>j(()=>import("./Bitsy.7.0.005afbac.js"),[]),bitsyVersion:"7.0",description:"Bitsy 7.0"},{data:()=>j(()=>import("./Bitsy.7.2.e7deb823.js"),[]),bitsyVersion:"7.2",description:"Bitsy 7.2"},{data:()=>j(()=>import("./Bitsy.7.8.a8e1ddd6.js"),[]),bitsyVersion:"7.8",description:"Bitsy 7.8"},{data:()=>j(()=>import("./Bitsy.7.10.1cdc75c6.js"),[]),bitsyVersion:"7.10",description:"Bitsy 7.10"},{data:()=>j(()=>import("./BitsyHD.7.11.f9a8cfdc.js"),[]),bitsyVersion:"7.11",isHd:!0,description:"Bitsy HD (Bitsy 7.11)"},{data:()=>j(()=>import("./Bitsy.7.11.c7cee104.js"),[]),bitsyVersion:"7.11",description:"Bitsy 7.11"},{data:()=>j(()=>import("./BitsyHD.7.12.06a63c86.js"),[]),bitsyVersion:"7.12",isHd:!0,description:"Bitsy HD (Bitsy 7.12)"},{data:()=>j(()=>import("./Bitsy.7.12.7a7fbf49.js"),[]),bitsyVersion:"7.12",description:"Bitsy 7.12",isDefault:!0}].map(t=>Vt(lt({},t),{id:`Bitsy${t.isHd?"HD":""}${t.bitsyVersion.replace(/\./g,"")}`}));const $=Object.fromEntries(Object.entries({"../about/about.md":In,"../about/ayos-special-tips.md":An,"../about/how-to-use-borksy.md":Nn,"../about/other-tools.md":Cn,"../about/troubleshooting-faqs.md":Pn}).map(([t,n])=>[t.match(/.*\/(.*?)\.md/)[1],n.html])),ln=Object.fromEntries(Object.entries({"../defaults/body.txt":` `,"../defaults/fontdata.txt":`[ /* num: 0 */ 0,0,0,0,0,0, @@ -3115,7 +3115,7 @@ body { @summary change the avatar in certain rooms @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -3288,7 +3288,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -3330,6 +3330,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -3355,7 +3356,7 @@ var after = kitsy.after; @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -3453,7 +3454,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary makes the game have a backdrop @license MIT @author Cephalopodunk & Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -3630,7 +3631,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -3672,6 +3673,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -3699,7 +3701,7 @@ var after = kitsy.after; @summary makes all sprites have transparent backgrounds @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -3728,6 +3730,35 @@ before('renderer.GetDrawingFrame', function (drawing, frameIndex) { }); // send -1 instead of background colour index if transparent inject(/bitsyDrawPixel\\(backgroundColor, x, y\\)/, 'bitsyDrawPixel(window.makeTransparent ? -1 : backgroundColor, x, y)'); +// make sure transitions render using regular room logic +inject( + /(function createRoomPixelBuffer\\(room\\) {)/, + \`$1 +var buffer = drawingBuffers[screenBufferId]; +var s = buffer.scale; +buffer.scale = 1; +drawRoom(room); +renderDrawingBuffer(screenBufferId, buffer); +const data = buffer.canvas.getContext('2d').getImageData(0, 0, buffer.width, buffer.height).data; +var pixelBuffer = []; +for (var y = 0; y < buffer.height; ++y) { +for (var x = 0; x < buffer.width; ++x) { + var idx = (y*buffer.width + x)*4; + var r = data[idx + 0]; + var g = data[idx + 1]; + var b = data[idx + 2]; + var p = getPal(getRoomPal(curRoom)).findIndex(i => r === i[0] && g === i[1] && b === i[2]); + pixelBuffer.push(tileColorStartIndex + p); +} +} +buffer.scale = s; +invalidateDrawingBuffer(buffer); +return pixelBuffer; +\` +); +// make sure tiles are available when drawing rooms +inject(/(var tileBuffer = drawingBuffers\\[tileId\\];)/, 'hackForEditor_GetImageFromTileId(tileId); $1'); + // overwrite transparent pixel after('renderPixelInstruction', function (bufferId, buffer, paletteIndex, x, y) { if (paletteIndex !== -1) return; @@ -3751,7 +3782,7 @@ after('renderPixelInstruction', function (bufferId, buffer, paletteIndex, x, y) @summary makes the game have a transparent background @license MIT @author Cephalopodunk & Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -3861,7 +3892,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary "walk" and "talk" sound effect support @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -4029,7 +4060,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -4071,6 +4102,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -4096,7 +4128,7 @@ var after = kitsy.after; @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -4195,7 +4227,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary A variety of Bitsy sound and music handlers @license MIT @author David Mowatt -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -4397,7 +4429,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -4439,6 +4471,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -4562,7 +4595,7 @@ function addDualDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -4718,7 +4751,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary WebGLazy bitsy integration (this one's mostly just for me) @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -4917,7 +4950,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -4959,6 +4992,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -5011,7 +5045,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary high quality anime gifs @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -5978,7 +6012,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -6020,6 +6054,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -6095,7 +6130,7 @@ function addDialogTag(tag, fn) { @summary high quality anime jpegs (or pngs i guess) @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -6329,7 +6364,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary high quality anime jpegs (or pngs i guess) @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -6525,7 +6560,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -6567,6 +6602,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -6704,7 +6740,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary Prevents from playing past an ending @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -6863,7 +6899,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -6905,6 +6941,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -6955,7 +6992,7 @@ after('onExitDialog', function () { @summary corrupts gamedata at runtime @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -7011,7 +7048,7 @@ bitsy = bitsy || /*#__PURE__*/_interopDefaultLegacy(bitsy); @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -7073,7 +7110,7 @@ function getImage(name, map) { @file edit image at runtime @summary API for updating image data at runtime. @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @description @@ -7291,7 +7328,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -7333,6 +7370,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -7509,7 +7547,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary make custom exit transition effects @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -7704,7 +7742,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -7746,6 +7784,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -7793,8 +7832,6 @@ function lerpPalettes(start, end, delta) { } before('startExportedGame', function () { - // recreate the transition manager so the injected code is used - bitsy.transition = new bitsy.TransitionManager(); // make the custom effects available Object.entries(hackOptions).forEach(function (entry) { bitsy.transition.RegisterTransitionEffect(entry[0], entry[1]); @@ -7812,7 +7849,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary run custom code on key inputs @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -7996,7 +8033,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -8038,6 +8075,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -8104,7 +8142,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary make {custom}text effects{custom} @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -8451,7 +8489,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -8493,6 +8531,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -8572,7 +8611,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary animal crossing-style audio powered by the pink trombone vocal synth @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -9452,7 +9491,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -9494,6 +9533,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -9569,7 +9609,7 @@ function addDialogTag(tag, fn) { @summary animal crossing-style audio @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -9626,7 +9666,7 @@ before('dialogBuffer.DoNextChar', function () { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -9968,7 +10008,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary animal crossing-style audio @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -10154,7 +10194,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -10196,6 +10236,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -10240,7 +10281,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary adds an easing transition animation to display the dialog box text @license MIT @author Delacannon -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -10396,7 +10437,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -10438,6 +10479,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -10522,7 +10564,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary dialog choices @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -10759,7 +10801,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -10801,6 +10843,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -10933,7 +10976,7 @@ inject(/(this\\.AddLinebreak = )/, 'this.AddParagraphBreak = function() { buffer @summary Adds paragraph breaks to the dialogue parser @license WTFPL (do WTF you want) @author Sean S. LeBlanc, David Mowatt -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -10977,7 +11020,7 @@ addDialogTag('p', function (environment, parameters, onReturn) { @summary put more words onscreen @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -11262,7 +11305,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary jump from one dialog entry to another @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -11432,7 +11475,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -11474,6 +11517,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -11623,7 +11667,7 @@ addDualDialogTag('jump', function (environment, parameters) { @summary add pauses in between printing text @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -11779,7 +11823,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -11821,6 +11865,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -11904,7 +11949,7 @@ addDialogTag('pause', function (environment, parameters, onReturn) { @summary prompt the user for text input in dialog @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -12097,7 +12142,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -12139,6 +12184,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -12221,7 +12267,7 @@ inject(/(this\\.AddLinebreak = )/, 'this.AddParagraphBreak = function() { buffer @summary Adds paragraph breaks to the dialogue parser @license WTFPL (do WTF you want) @author Sean S. LeBlanc, David Mowatt -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -12388,7 +12434,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary provides a variable with player direction @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -12550,7 +12596,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -12592,6 +12638,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -12636,7 +12683,7 @@ before('startDialog', function () { @summary flips the player's sprite based on directional movement @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -12673,7 +12720,7 @@ bitsy = bitsy || /*#__PURE__*/_interopDefaultLegacy(bitsy); @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -12735,7 +12782,7 @@ function getImage(name, map) { @file edit image at runtime @summary API for updating image data at runtime. @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @description @@ -12937,7 +12984,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -12979,6 +13026,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -13110,7 +13158,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary HTML background matching bitsy background @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -13276,7 +13324,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -13318,6 +13366,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -13343,7 +13392,7 @@ var after = kitsy.after; @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -13405,7 +13454,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary edit dialog from dialog (yes really) @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -13570,7 +13619,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -13612,6 +13661,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -13697,7 +13747,7 @@ function addDeferredDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -13768,7 +13818,7 @@ addDeferredDialogTag('dialog', editDialog); @summary edit sprites, items, and tiles from dialog @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -13831,7 +13881,7 @@ bitsy = bitsy || /*#__PURE__*/_interopDefaultLegacy(bitsy); @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -13893,7 +13943,7 @@ function getImage(name, map) { @file edit image at runtime @summary API for updating image data at runtime. @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @description @@ -14087,7 +14137,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -14129,6 +14179,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -14343,7 +14394,7 @@ addDualDialogTag('imagePal', editPalette); @summary change which sprite is controlled by the player @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -14510,7 +14561,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -14552,6 +14603,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -14675,7 +14727,7 @@ function addDualDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -14720,7 +14772,7 @@ addDualDialogTag('player', function (environment, parameters) { @summary modify the content of a room from dialog @license MIT @author Dana Holdampf -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -15006,7 +15058,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -15048,6 +15100,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -15171,7 +15224,7 @@ function addDualDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -15793,7 +15846,7 @@ function copyBoxAt(mapId, targetId, x1, y1, x2, y2, copyRoomId, pasteXPos, paste @summary trigger an ending from dialog, including narration text @license WTFPL (do WTF you want) @author @mildmojo -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -15983,7 +16036,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -16025,6 +16078,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -16169,7 +16223,7 @@ addDualDialogTag('end', function (environment, parameters) { @summary exit to another room from dialog, including conditionals @license WTFPL (do WTF you want) @author @mildmojo -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -16359,7 +16413,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -16401,6 +16455,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -16524,7 +16579,7 @@ function addDualDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -16603,7 +16658,7 @@ function getExitParams(parameters) { @summary separate Bitsy game data from your (modded) HTML for easier development @license WTFPL (do WTF you want) @author @mildmojo -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -16781,7 +16836,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -16823,6 +16878,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -16930,7 +16986,7 @@ function dos2unix(text) { @summary generate a browser favicon (tab icon) from a Bitsy sprite, including animation! @license WTFPL (do WTF you want) @author @mildmojo -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -17096,7 +17152,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -17138,6 +17194,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -17163,7 +17220,7 @@ var after = kitsy.after; @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -17301,7 +17358,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary make sprites follow the player @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -17490,7 +17547,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -17532,6 +17589,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -17655,7 +17713,7 @@ function addDualDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -17898,7 +17956,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary HTML5 gamepad support @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -17918,334 +17976,334 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau bitsy = bitsy || /*#__PURE__*/_interopDefaultLegacy(bitsy); -var Buttons; -(function (Buttons) { - // XBOX360 wired controller configuration - Buttons[Buttons["A"] = 0] = "A"; - Buttons[Buttons["X"] = 2] = "X"; - Buttons[Buttons["B"] = 1] = "B"; - Buttons[Buttons["Y"] = 3] = "Y"; - Buttons[Buttons["LB"] = 4] = "LB"; - Buttons[Buttons["RB"] = 5] = "RB"; - Buttons[Buttons["LT"] = 6] = "LT"; - Buttons[Buttons["RT"] = 7] = "RT"; - Buttons[Buttons["BACK"] = 8] = "BACK"; - Buttons[Buttons["START"] = 9] = "START"; - Buttons[Buttons["LHAT"] = 10] = "LHAT"; - Buttons[Buttons["RHAT"] = 11] = "RHAT"; - Buttons[Buttons["DPAD_UP"] = 12] = "DPAD_UP"; - Buttons[Buttons["DPAD_DOWN"] = 13] = "DPAD_DOWN"; - Buttons[Buttons["DPAD_LEFT"] = 14] = "DPAD_LEFT"; - Buttons[Buttons["DPAD_RIGHT"] = 15] = "DPAD_RIGHT"; -})(Buttons || (Buttons = {})); -var Axes; -(function (Axes) { - Axes[Axes["LSTICK_H"] = 0] = "LSTICK_H"; - Axes[Axes["LSTICK_V"] = 1] = "LSTICK_V"; - Axes[Axes["RSTICK_H"] = 2] = "RSTICK_H"; - Axes[Axes["RSTICK_V"] = 3] = "RSTICK_V"; -})(Axes || (Axes = {})); -var nullGamepad = { - original: { - axes: [], - buttons: [], - connected: false, - }, - disabled: true, - down: {}, - justDown: {}, - justUp: {}, - axesPrev: {}, -}; -var Gamepads = /** @class */ (function () { - /** - * initialize gamepads - */ - function Gamepads() { - var _this = this; - // settings - /** if \`abs(an axis value)\` is < \`deadZone\`, returns 0 instead */ - this.deadZone = 0.25; - /** if \`abs(1-an axis value)\` is < \`snapZone\`, returns 1 instead */ - this.snapZone = 0.25; - /** axis values between \`deadZone\` and \`snapZone\` will be run through this function - * - * defaults to normalizing between the two thresholds */ - this.interpolate = function (value) { - var v = Math.max(0, Math.min(1, (value - _this.deadZone) / (1.0 - _this.snapZone - _this.deadZone))); - return v; - }; - // internal vars - this.players = {}; - this.available = false; - this.pollEveryFrame = false; - this.connected = false; - /** - * update gamepads (clears arrays, polls connections, etc.) - */ - this.pollconnections = function () { - _this.connected = false; - // assume existing players' gamepads aren't enabled until they're found - Object.values(_this.players).forEach(function (player) { - player.disabled = true; - }); - var gps = navigator.getGamepads(); - for (var i = 0; i < gps.length; ++i) { - var gp = gps[i]; - if (gp) { - if (gp.connected) { - if (_this.players[gp.index] == null) { - // new player - _this.players[gp.index] = { - disabled: false, - original: gp, - down: {}, - justDown: {}, - justUp: {}, - axesPrev: {}, - }; - } - else { - // returning player, just assign the gamepad - _this.players[gp.index].original = gp; - } - _this.connected = true; - _this.players[gp.index].disabled = false; - } - else { - delete _this.players[gp.index]; - } - } - } - }; - /** - * update gamepads (clears arrays, polls connections, etc.) - */ - this.update = function () { - // store the previous axis values - // has to be done before pollConnections since that will get the new axis values - Object.keys(_this.players).forEach(function (i) { - var _a; - var p = _this.getPlayer(i); - if ((_a = p === null || p === void 0 ? void 0 : p.original) === null || _a === void 0 ? void 0 : _a.axes) { - p.axesPrev = p.original.axes.slice(); - } - }); - // poll connections and update gamepad states every frame because chrome's a lazy bum - if (_this.pollEveryFrame) { - _this.pollconnections(); - } - Object.keys(_this.players).forEach(function (i) { - var _a; - var p = _this.getPlayer(i); - if ((_a = p === null || p === void 0 ? void 0 : p.original) === null || _a === void 0 ? void 0 : _a.buttons) { - for (var j = 0; j < p.original.buttons.length; ++j) { - if (p.original.buttons[j].pressed) { - p.justDown[j] = !(p.down[j] === true); - p.down[j] = true; - p.justUp[j] = false; - } - else { - p.justUp[j] = p.down[j] === true; - p.down[j] = false; - p.justDown[j] = false; - } - } - } - }); - }; - /** - * @returns \`player\`'s gamepad - * - * if one doesn't exist, returns an object with gamepad properties reflecting a null state - */ - this.getPlayer = function (player) { - var _a, _b, _c; - if (((_b = (_a = _this.players[player]) === null || _a === void 0 ? void 0 : _a.original) === null || _b === void 0 ? void 0 : _b.connected) && !((_c = _this.players[player]) === null || _c === void 0 ? void 0 : _c.disabled)) { - return _this.players[player]; - } - return nullGamepad; - }; - /** - * @returns an array representing \`length\` axes for \`player\` at \`offset\` - * - * if \`abs(an axis value)\` is < \`deadZone\`, returns 0 instead - * if \`abs(1-an axis value)\` is < \`snapZone\`, returns 1/-1 instead - * otherwise, returns the axis value normalized between \`deadZone\` and \`(1-snapZone)\` - * @param {Number} offset axis index - * @param {Number} length number of axes to return - * @param {Number} player player index (\`undefined\` for "sum of all") - * @param {boolean} prev if \`true\` uses axis values from previous update - */ - this.getAxes = function (offset, length, player, prev) { - if (offset === void 0) { offset = 0; } - if (length === void 0) { length = 2; } - if (prev === void 0) { prev = false; } - var axes = []; - for (var i = 0; i < length; ++i) { - axes[i] = 0; - } - if (player === undefined) { - Object.keys(_this.players).forEach(function (i) { - var a = _this.getAxes(offset, length, i, prev); - for (var j = 0; j < a.length; ++j) { - axes[j] += a[j]; - } - }); - } - else { - var p = _this.getPlayer(player); - if (p === null || p === void 0 ? void 0 : p.original) { - var axesSource = prev ? p.axesPrev : p.original.axes; - var a = Object.values(axesSource).slice(offset, offset + length); - for (var i = 0; i < a.length; ++i) { - if (Math.abs(a[i]) < _this.deadZone) { - axes[i] += 0; - } - else if (Math.abs(1.0 - a[i]) < _this.snapZone) { - axes[i] += 1; - } - else if (Math.abs(-1.0 - a[i]) < _this.snapZone) { - axes[i] -= 1; - } - else { - axes[i] += Math.sign(a[i]) * _this.interpolate(Math.abs(a[i])); - } - } - } - } - return axes; - }; - /** - * @returns equivalent to \`getAxes(axis, 1, player, prev)[0]\` - */ - this.getAxis = function (axis, player, prev) { return _this.getAxes(axis, 1, player, prev)[0]; }; - /** - * @returns \`true\` if \`axis\` is past \`threshold\` in \`direction\` - * @param {Number} axis axis index - * @param {Number} threshold threshold (-1 to 1) - * @param {Number} direction direction (-1|1) (if \`undefined\`, assumes the sign of \`theshold\` is the direction (e.g. if \`theshold\` is -0.5, it will check if the axis is < -0.5)) - * @param {Number} player player index (\`undefined\` for "any") - * @param {boolean} prev if \`true\` uses axis values from previous update - */ - this.axisPast = function (axis, threshold, direction, player, prev) { - if (!threshold) { - throw new Error('must specify a non-zero threshold'); - } - if (!direction) { - direction = threshold > 0 ? 1 : -1; - } - var a = _this.getAxis(axis, player, prev); - return direction < 0 ? a < threshold : a > threshold; - }; - /** - * @returns \`true\` if \`axis\` is past \`threshold\` in \`direction\` and WAS NOT in previous update - * @param {Number} axis axis index - * @param {Number} threshold threshold (-1 to 1) - * @param {Number} direction direction (-1|1) (if \`undefined\`, assumes the sign of \`theshold\` is the direction (e.g. if \`theshold\` is -0.5, it will check if the axis is < -0.5)) - * @param {Number} player player index (\`undefined\` for "any") - */ - this.axisJustPast = function (axis, threshold, direction, player) { return _this.axisPast(axis, threshold, direction, player, false) - && !_this.axisPast(axis, threshold, direction, player, true); }; - /** - * @returns \`[x,y]\` representing the dpad for \`player\` - * @param {Number} player player index (\`undefined\` for "sum of all") - */ - this.getDpad = function (player) { - var x = 0; - var y = 0; - if (player === undefined) { - Object.keys(_this.players).forEach(function (i) { - var _a = _this.getDpad(i), ix = _a[0], iy = _a[1]; - x += ix; - y += iy; - }); - } - else { - if (_this.isDown(Buttons.DPAD_RIGHT, player)) { - x += 1; - } - if (_this.isDown(Buttons.DPAD_LEFT, player)) { - x -= 1; - } - if (_this.isDown(Buttons.DPAD_UP, player)) { - y += 1; - } - if (_this.isDown(Buttons.DPAD_DOWN, player)) { - y -= 1; - } - } - return [x, y]; - }; - /** - * @returns \`true\` if \`player\`'s \`btn\` is currently down - * @param {Number} btn button index - * @param {Number} player player index (\`undefined\` for "any") - */ - this.isDown = function (btn, player) { - if (btn === undefined) { - throw new Error('must specify a button'); - } - if (player === undefined) { - return Object.keys(_this.players).some(function (i) { return _this.isDown(btn, i); }); - } - return _this.getPlayer(player).down[btn]; - }; - /** - * @returns equivalent to \`!isDown(btn, player)\` - * @param {Number} btn button index - * @param {Number} player player index (\`undefined\` for "any") - */ - this.isUp = function (btn, player) { return !_this.isDown(btn, player); }; - /** - * @returns \`true\` if \`player\`'s \`btn\` is currently down and WAS NOT in previous update - * @param {Number} btn button index - * @param {Number} player player index (\`undefined\` for "any") - */ - this.isJustDown = function (btn, player) { - if (btn === undefined) { - throw new Error('must specify a button'); - } - if (player === undefined) { - return Object.keys(_this.players).some(function (i) { return _this.isJustDown(btn, i); }); - } - return _this.getPlayer(player).justDown[btn]; - }; - /** - * @returns \`true\` if \`player\`'s \`btn\` is currently NOT down and WAS down in previous update - * @param {Number} btn button index - * @param {Number} player player index (\`undefined\` for "any") - */ - this.isJustUp = function (btn, player) { - if (btn === undefined) { - throw new Error('must specify a button'); - } - if (player === undefined) { - return Object.keys(_this.players).some(function (i) { return _this.isJustUp(btn, i); }); - } - return _this.getPlayer(player).justUp[btn]; - }; - // eslint-disable-next-line @typescript-eslint/ban-ts-ignore - // @ts-ignore - if (navigator.getGamepads) { - this.available = true; - } - else if (navigator.webkitGetGamepads) { - navigator.getGamepads = navigator.webkitGetGamepads; - this.available = true; - } - if (this.available) { - if (navigator.userAgent.includes('Firefox')) { - // listen to connection events for firefox - window.addEventListener('gamepadconnected', this.pollconnections.bind(this)); - window.addEventListener('gamepaddisconnected', this.pollconnections.bind(this)); - } - else { - this.pollEveryFrame = true; - } - } - } - return Gamepads; +var Buttons;\r +(function (Buttons) {\r + // XBOX360 wired controller configuration\r + Buttons[Buttons["A"] = 0] = "A";\r + Buttons[Buttons["X"] = 2] = "X";\r + Buttons[Buttons["B"] = 1] = "B";\r + Buttons[Buttons["Y"] = 3] = "Y";\r + Buttons[Buttons["LB"] = 4] = "LB";\r + Buttons[Buttons["RB"] = 5] = "RB";\r + Buttons[Buttons["LT"] = 6] = "LT";\r + Buttons[Buttons["RT"] = 7] = "RT";\r + Buttons[Buttons["BACK"] = 8] = "BACK";\r + Buttons[Buttons["START"] = 9] = "START";\r + Buttons[Buttons["LHAT"] = 10] = "LHAT";\r + Buttons[Buttons["RHAT"] = 11] = "RHAT";\r + Buttons[Buttons["DPAD_UP"] = 12] = "DPAD_UP";\r + Buttons[Buttons["DPAD_DOWN"] = 13] = "DPAD_DOWN";\r + Buttons[Buttons["DPAD_LEFT"] = 14] = "DPAD_LEFT";\r + Buttons[Buttons["DPAD_RIGHT"] = 15] = "DPAD_RIGHT";\r +})(Buttons || (Buttons = {}));\r +var Axes;\r +(function (Axes) {\r + Axes[Axes["LSTICK_H"] = 0] = "LSTICK_H";\r + Axes[Axes["LSTICK_V"] = 1] = "LSTICK_V";\r + Axes[Axes["RSTICK_H"] = 2] = "RSTICK_H";\r + Axes[Axes["RSTICK_V"] = 3] = "RSTICK_V";\r +})(Axes || (Axes = {}));\r +var nullGamepad = {\r + original: {\r + axes: [],\r + buttons: [],\r + connected: false,\r + },\r + disabled: true,\r + down: {},\r + justDown: {},\r + justUp: {},\r + axesPrev: {},\r +};\r +var Gamepads = /** @class */ (function () {\r + /**\r + * initialize gamepads\r + */\r + function Gamepads() {\r + var _this = this;\r + // settings\r + /** if \`abs(an axis value)\` is < \`deadZone\`, returns 0 instead */\r + this.deadZone = 0.25;\r + /** if \`abs(1-an axis value)\` is < \`snapZone\`, returns 1 instead */\r + this.snapZone = 0.25;\r + /** axis values between \`deadZone\` and \`snapZone\` will be run through this function\r + *\r + * defaults to normalizing between the two thresholds */\r + this.interpolate = function (value) {\r + var v = Math.max(0, Math.min(1, (value - _this.deadZone) / (1.0 - _this.snapZone - _this.deadZone)));\r + return v;\r + };\r + // internal vars\r + this.players = {};\r + this.available = false;\r + this.pollEveryFrame = false;\r + this.connected = false;\r + /**\r + * update gamepads (clears arrays, polls connections, etc.)\r + */\r + this.pollconnections = function () {\r + _this.connected = false;\r + // assume existing players' gamepads aren't enabled until they're found\r + Object.values(_this.players).forEach(function (player) {\r + player.disabled = true;\r + });\r + var gps = navigator.getGamepads();\r + for (var i = 0; i < gps.length; ++i) {\r + var gp = gps[i];\r + if (gp) {\r + if (gp.connected) {\r + if (_this.players[gp.index] == null) {\r + // new player\r + _this.players[gp.index] = {\r + disabled: false,\r + original: gp,\r + down: {},\r + justDown: {},\r + justUp: {},\r + axesPrev: {},\r + };\r + }\r + else {\r + // returning player, just assign the gamepad\r + _this.players[gp.index].original = gp;\r + }\r + _this.connected = true;\r + _this.players[gp.index].disabled = false;\r + }\r + else {\r + delete _this.players[gp.index];\r + }\r + }\r + }\r + };\r + /**\r + * update gamepads (clears arrays, polls connections, etc.)\r + */\r + this.update = function () {\r + // store the previous axis values\r + // has to be done before pollConnections since that will get the new axis values\r + Object.keys(_this.players).forEach(function (i) {\r + var _a;\r + var p = _this.getPlayer(i);\r + if ((_a = p === null || p === void 0 ? void 0 : p.original) === null || _a === void 0 ? void 0 : _a.axes) {\r + p.axesPrev = p.original.axes.slice();\r + }\r + });\r + // poll connections and update gamepad states every frame because chrome's a lazy bum\r + if (_this.pollEveryFrame) {\r + _this.pollconnections();\r + }\r + Object.keys(_this.players).forEach(function (i) {\r + var _a;\r + var p = _this.getPlayer(i);\r + if ((_a = p === null || p === void 0 ? void 0 : p.original) === null || _a === void 0 ? void 0 : _a.buttons) {\r + for (var j = 0; j < p.original.buttons.length; ++j) {\r + if (p.original.buttons[j].pressed) {\r + p.justDown[j] = !(p.down[j] === true);\r + p.down[j] = true;\r + p.justUp[j] = false;\r + }\r + else {\r + p.justUp[j] = p.down[j] === true;\r + p.down[j] = false;\r + p.justDown[j] = false;\r + }\r + }\r + }\r + });\r + };\r + /**\r + * @returns \`player\`'s gamepad\r + *\r + * if one doesn't exist, returns an object with gamepad properties reflecting a null state\r + */\r + this.getPlayer = function (player) {\r + var _a, _b, _c;\r + if (((_b = (_a = _this.players[player]) === null || _a === void 0 ? void 0 : _a.original) === null || _b === void 0 ? void 0 : _b.connected) && !((_c = _this.players[player]) === null || _c === void 0 ? void 0 : _c.disabled)) {\r + return _this.players[player];\r + }\r + return nullGamepad;\r + };\r + /**\r + * @returns an array representing \`length\` axes for \`player\` at \`offset\`\r + *\r + * if \`abs(an axis value)\` is < \`deadZone\`, returns 0 instead\r + * if \`abs(1-an axis value)\` is < \`snapZone\`, returns 1/-1 instead\r + * otherwise, returns the axis value normalized between \`deadZone\` and \`(1-snapZone)\`\r + * @param {Number} offset axis index\r + * @param {Number} length number of axes to return\r + * @param {Number} player player index (\`undefined\` for "sum of all")\r + * @param {boolean} prev if \`true\` uses axis values from previous update\r + */\r + this.getAxes = function (offset, length, player, prev) {\r + if (offset === void 0) { offset = 0; }\r + if (length === void 0) { length = 2; }\r + if (prev === void 0) { prev = false; }\r + var axes = [];\r + for (var i = 0; i < length; ++i) {\r + axes[i] = 0;\r + }\r + if (player === undefined) {\r + Object.keys(_this.players).forEach(function (i) {\r + var a = _this.getAxes(offset, length, i, prev);\r + for (var j = 0; j < a.length; ++j) {\r + axes[j] += a[j];\r + }\r + });\r + }\r + else {\r + var p = _this.getPlayer(player);\r + if (p === null || p === void 0 ? void 0 : p.original) {\r + var axesSource = prev ? p.axesPrev : p.original.axes;\r + var a = Object.values(axesSource).slice(offset, offset + length);\r + for (var i = 0; i < a.length; ++i) {\r + if (Math.abs(a[i]) < _this.deadZone) {\r + axes[i] += 0;\r + }\r + else if (Math.abs(1.0 - a[i]) < _this.snapZone) {\r + axes[i] += 1;\r + }\r + else if (Math.abs(-1.0 - a[i]) < _this.snapZone) {\r + axes[i] -= 1;\r + }\r + else {\r + axes[i] += Math.sign(a[i]) * _this.interpolate(Math.abs(a[i]));\r + }\r + }\r + }\r + }\r + return axes;\r + };\r + /**\r + * @returns equivalent to \`getAxes(axis, 1, player, prev)[0]\`\r + */\r + this.getAxis = function (axis, player, prev) { return _this.getAxes(axis, 1, player, prev)[0]; };\r + /**\r + * @returns \`true\` if \`axis\` is past \`threshold\` in \`direction\`\r + * @param {Number} axis axis index\r + * @param {Number} threshold threshold (-1 to 1)\r + * @param {Number} direction direction (-1|1) (if \`undefined\`, assumes the sign of \`theshold\` is the direction (e.g. if \`theshold\` is -0.5, it will check if the axis is < -0.5))\r + * @param {Number} player player index (\`undefined\` for "any")\r + * @param {boolean} prev if \`true\` uses axis values from previous update\r + */\r + this.axisPast = function (axis, threshold, direction, player, prev) {\r + if (!threshold) {\r + throw new Error('must specify a non-zero threshold');\r + }\r + if (!direction) {\r + direction = threshold > 0 ? 1 : -1;\r + }\r + var a = _this.getAxis(axis, player, prev);\r + return direction < 0 ? a < threshold : a > threshold;\r + };\r + /**\r + * @returns \`true\` if \`axis\` is past \`threshold\` in \`direction\` and WAS NOT in previous update\r + * @param {Number} axis axis index\r + * @param {Number} threshold threshold (-1 to 1)\r + * @param {Number} direction direction (-1|1) (if \`undefined\`, assumes the sign of \`theshold\` is the direction (e.g. if \`theshold\` is -0.5, it will check if the axis is < -0.5))\r + * @param {Number} player player index (\`undefined\` for "any")\r + */\r + this.axisJustPast = function (axis, threshold, direction, player) { return _this.axisPast(axis, threshold, direction, player, false)\r + && !_this.axisPast(axis, threshold, direction, player, true); };\r + /**\r + * @returns \`[x,y]\` representing the dpad for \`player\`\r + * @param {Number} player player index (\`undefined\` for "sum of all")\r + */\r + this.getDpad = function (player) {\r + var x = 0;\r + var y = 0;\r + if (player === undefined) {\r + Object.keys(_this.players).forEach(function (i) {\r + var _a = _this.getDpad(i), ix = _a[0], iy = _a[1];\r + x += ix;\r + y += iy;\r + });\r + }\r + else {\r + if (_this.isDown(Buttons.DPAD_RIGHT, player)) {\r + x += 1;\r + }\r + if (_this.isDown(Buttons.DPAD_LEFT, player)) {\r + x -= 1;\r + }\r + if (_this.isDown(Buttons.DPAD_UP, player)) {\r + y += 1;\r + }\r + if (_this.isDown(Buttons.DPAD_DOWN, player)) {\r + y -= 1;\r + }\r + }\r + return [x, y];\r + };\r + /**\r + * @returns \`true\` if \`player\`'s \`btn\` is currently down\r + * @param {Number} btn button index\r + * @param {Number} player player index (\`undefined\` for "any")\r + */\r + this.isDown = function (btn, player) {\r + if (btn === undefined) {\r + throw new Error('must specify a button');\r + }\r + if (player === undefined) {\r + return Object.keys(_this.players).some(function (i) { return _this.isDown(btn, i); });\r + }\r + return _this.getPlayer(player).down[btn];\r + };\r + /**\r + * @returns equivalent to \`!isDown(btn, player)\`\r + * @param {Number} btn button index\r + * @param {Number} player player index (\`undefined\` for "any")\r + */\r + this.isUp = function (btn, player) { return !_this.isDown(btn, player); };\r + /**\r + * @returns \`true\` if \`player\`'s \`btn\` is currently down and WAS NOT in previous update\r + * @param {Number} btn button index\r + * @param {Number} player player index (\`undefined\` for "any")\r + */\r + this.isJustDown = function (btn, player) {\r + if (btn === undefined) {\r + throw new Error('must specify a button');\r + }\r + if (player === undefined) {\r + return Object.keys(_this.players).some(function (i) { return _this.isJustDown(btn, i); });\r + }\r + return _this.getPlayer(player).justDown[btn];\r + };\r + /**\r + * @returns \`true\` if \`player\`'s \`btn\` is currently NOT down and WAS down in previous update\r + * @param {Number} btn button index\r + * @param {Number} player player index (\`undefined\` for "any")\r + */\r + this.isJustUp = function (btn, player) {\r + if (btn === undefined) {\r + throw new Error('must specify a button');\r + }\r + if (player === undefined) {\r + return Object.keys(_this.players).some(function (i) { return _this.isJustUp(btn, i); });\r + }\r + return _this.getPlayer(player).justUp[btn];\r + };\r + // eslint-disable-next-line @typescript-eslint/ban-ts-ignore\r + // @ts-ignore\r + if (navigator.getGamepads) {\r + this.available = true;\r + }\r + else if (navigator.webkitGetGamepads) {\r + navigator.getGamepads = navigator.webkitGetGamepads;\r + this.available = true;\r + }\r + if (this.available) {\r + if (navigator.userAgent.includes('Firefox')) {\r + // listen to connection events for firefox\r + window.addEventListener('gamepadconnected', this.pollconnections.bind(this));\r + window.addEventListener('gamepaddisconnected', this.pollconnections.bind(this));\r + }\r + else {\r + this.pollEveryFrame = true;\r + }\r + }\r + }\r + return Gamepads;\r }()); /** @@ -18383,7 +18441,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -18425,6 +18483,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -18493,7 +18552,7 @@ after('update', function () { @summary Pseudo-platforming/gravity/physics @license MIT @author Cole Sea -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -18611,7 +18670,7 @@ bitsy = bitsy || /*#__PURE__*/_interopDefaultLegacy(bitsy); @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -18673,7 +18732,7 @@ function getImage(name, map) { @file edit image at runtime @summary API for updating image data at runtime. @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @description @@ -18875,7 +18934,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -18917,6 +18976,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -19468,7 +19528,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary for when bitsy's not small enough @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -19635,7 +19695,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -19677,6 +19737,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -19738,7 +19799,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary execute arbitrary javascript from dialog @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -19930,7 +19991,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -19972,6 +20033,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -20108,7 +20170,7 @@ addDualDialogTag('js', executeJs); @file logic-operators-extended @summary adds conditional logic operators @author @mildmojo -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -20273,7 +20335,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -20315,6 +20377,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -20377,7 +20440,7 @@ inject( @summary put more words onscreen @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -20557,7 +20620,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -20599,6 +20662,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -20731,7 +20795,7 @@ inject(/(this\\.AddLinebreak = )/, 'this.AddParagraphBreak = function() { buffer @summary Adds paragraph breaks to the dialogue parser @license WTFPL (do WTF you want) @author Sean S. LeBlanc, David Mowatt -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -20815,7 +20879,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary make the player big @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -21012,7 +21076,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -21054,6 +21118,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -21177,7 +21242,7 @@ function addDualDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -21358,7 +21423,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary walk through wall tiles, sprites, items, exits, and endings @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -21536,7 +21601,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -21578,6 +21643,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -21605,7 +21671,7 @@ var after = kitsy.after; @summary run custom code on key inputs @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -21717,7 +21783,7 @@ hackOptions.ondown = { @summary multiplayer bitsy @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @description @@ -21895,7 +21961,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -21937,6 +22003,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -22060,7 +22127,7 @@ function addDualDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -22124,7 +22191,7 @@ function getImage(name, map) { @summary edit dialog from dialog (yes really) @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -22191,7 +22258,7 @@ addDeferredDialogTag('dialog', editDialog); @file edit image at runtime @summary API for updating image data at runtime. @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @description @@ -22260,7 +22327,7 @@ function setSpriteData(id, frame, newData) { @summary edit sprites, items, and tiles from dialog @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -22405,7 +22472,7 @@ addDualDialogTag('imagePal', editPalette); @summary execute arbitrary javascript from dialog @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -22625,7 +22692,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary tiles which hide the player @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -22790,7 +22857,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -22832,6 +22899,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -22895,7 +22963,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary Adds paragraph breaks to the dialogue parser @license WTFPL (do WTF you want) @author Sean S. LeBlanc, David Mowatt -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -23067,7 +23135,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -23109,6 +23177,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -23201,7 +23270,7 @@ addDialogTag('p', function (environment, parameters, onReturn) { @summary prevent some items from being picked up @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -23363,7 +23432,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -23405,6 +23474,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -23488,7 +23558,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary sokoban-style sprite pushing @license MIT @author jan0sc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -23682,7 +23752,7 @@ bitsy = bitsy || /*#__PURE__*/_interopDefaultLegacy(bitsy); @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -23744,7 +23814,7 @@ function getImage(name, map) { @file edit image at runtime @summary API for updating image data at runtime. @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @description @@ -23946,7 +24016,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -23988,6 +24058,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -24378,7 +24449,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary add name-tags to replace drawings when the game is loading @license MIT @author Elkie Nova -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -24551,7 +24622,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -24593,6 +24664,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -24657,7 +24729,7 @@ after('parseWorld', function () { @summary save/load your game @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -24848,7 +24920,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -24890,6 +24962,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -25013,7 +25086,7 @@ function addDualDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -25219,7 +25292,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary ease the player's movement @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -25385,7 +25458,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -25427,6 +25500,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -25528,7 +25602,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary treat some items like sprites that can be placed multiple times @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -25691,7 +25765,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -25733,6 +25807,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -25821,7 +25896,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary like text effects, but for sprites @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -26032,7 +26107,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -26074,6 +26149,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -26197,7 +26273,7 @@ function addDualDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -26356,7 +26432,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary time player actions @license MIT @author Lenny Magner -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -26554,7 +26630,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -26596,6 +26672,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -26719,7 +26796,7 @@ function addDualDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -26826,7 +26903,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary text-to-speech for bitsy dialog @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -27014,7 +27091,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -27056,6 +27133,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -27315,7 +27393,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary process all dialog text with a tracery grammar @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -28347,7 +28425,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -28389,6 +28467,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -28436,7 +28515,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary customizable WebGL transitions @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -28655,7 +28734,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -28697,6 +28776,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -28724,7 +28804,7 @@ var after = kitsy.after; @summary WebGLazy bitsy integration (this one's mostly just for me) @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -28857,7 +28937,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary makes the game have a transparent background @license MIT @author Cephalopodunk & Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -29024,7 +29104,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -29066,6 +29146,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -29093,7 +29174,7 @@ var after = kitsy.after; @summary makes all sprites have transparent backgrounds @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -29122,6 +29203,35 @@ before('renderer.GetDrawingFrame', function (drawing, frameIndex) { }); // send -1 instead of background colour index if transparent inject(/bitsyDrawPixel\\(backgroundColor, x, y\\)/, 'bitsyDrawPixel(window.makeTransparent ? -1 : backgroundColor, x, y)'); +// make sure transitions render using regular room logic +inject( + /(function createRoomPixelBuffer\\(room\\) {)/, + \`$1 +var buffer = drawingBuffers[screenBufferId]; +var s = buffer.scale; +buffer.scale = 1; +drawRoom(room); +renderDrawingBuffer(screenBufferId, buffer); +const data = buffer.canvas.getContext('2d').getImageData(0, 0, buffer.width, buffer.height).data; +var pixelBuffer = []; +for (var y = 0; y < buffer.height; ++y) { +for (var x = 0; x < buffer.width; ++x) { + var idx = (y*buffer.width + x)*4; + var r = data[idx + 0]; + var g = data[idx + 1]; + var b = data[idx + 2]; + var p = getPal(getRoomPal(curRoom)).findIndex(i => r === i[0] && g === i[1] && b === i[2]); + pixelBuffer.push(tileColorStartIndex + p); +} +} +buffer.scale = s; +invalidateDrawingBuffer(buffer); +return pixelBuffer; +\` +); +// make sure tiles are available when drawing rooms +inject(/(var tileBuffer = drawingBuffers\\[tileId\\];)/, 'hackForEditor_GetImageFromTileId(tileId); $1'); + // overwrite transparent pixel after('renderPixelInstruction', function (bufferId, buffer, paletteIndex, x, y) { if (paletteIndex !== -1) return; @@ -29169,7 +29279,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary makes the dialog box have a transparent background @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -29321,7 +29431,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -29363,6 +29473,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -29399,7 +29510,7 @@ after('renderClearInstruction', function (bufferId, buffer, paletteIndex) { @summary makes all sprites have transparent backgrounds @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -29562,7 +29673,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -29604,6 +29715,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -29636,6 +29748,35 @@ before('renderer.GetDrawingFrame', function (drawing, frameIndex) { }); // send -1 instead of background colour index if transparent inject(/bitsyDrawPixel\\(backgroundColor, x, y\\)/, 'bitsyDrawPixel(window.makeTransparent ? -1 : backgroundColor, x, y)'); +// make sure transitions render using regular room logic +inject( + /(function createRoomPixelBuffer\\(room\\) {)/, + \`$1 +var buffer = drawingBuffers[screenBufferId]; +var s = buffer.scale; +buffer.scale = 1; +drawRoom(room); +renderDrawingBuffer(screenBufferId, buffer); +const data = buffer.canvas.getContext('2d').getImageData(0, 0, buffer.width, buffer.height).data; +var pixelBuffer = []; +for (var y = 0; y < buffer.height; ++y) { +for (var x = 0; x < buffer.width; ++x) { + var idx = (y*buffer.width + x)*4; + var r = data[idx + 0]; + var g = data[idx + 1]; + var b = data[idx + 2]; + var p = getPal(getRoomPal(curRoom)).findIndex(i => r === i[0] && g === i[1] && b === i[2]); + pixelBuffer.push(tileColorStartIndex + p); +} +} +buffer.scale = s; +invalidateDrawingBuffer(buffer); +return pixelBuffer; +\` +); +// make sure tiles are available when drawing rooms +inject(/(var tileBuffer = drawingBuffers\\[tileId\\];)/, 'hackForEditor_GetImageFromTileId(tileId); $1'); + // overwrite transparent pixel after('renderPixelInstruction', function (bufferId, buffer, paletteIndex, x, y) { if (paletteIndex !== -1) return; @@ -29664,7 +29805,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary interprocess communication for twine and bitsy @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -29898,7 +30039,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -29940,6 +30081,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -30135,7 +30277,7 @@ Object.defineProperty(exports, '__esModule', { value: true }); @summary items which, when picked up, remove all other instances of that item from the game @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -30298,7 +30440,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -30340,6 +30482,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -30381,8 +30524,8 @@ Object.defineProperty(exports, '__esModule', { value: true }); })(this.hacks.unique_items = this.hacks.unique_items || {}, window); `}),Mt=Wr.map(t=>{const[n]=t.match(/^(\/\*\*[\S\s]*?\*\/)$/gm),e=n.split(` -`).slice(1,-1),i=e[0],p=e.find(u=>u.startsWith("@file")).split("@file ")[1],f=e.find(u=>u.startsWith("@author")).split("@author ")[1],d=e.find(u=>u.startsWith("@summary")).split("@summary ")[1],l=e.slice(e.findIndex(u=>u.startsWith("@description"))+1).join(` -`).replace(/Copy-paste .* after the bitsy source\.?/g,"Include hack").replace(/hackOptions below/g,"hackOptions above"),[,o]=t.match(/var hackOptions.*= {\n+([^]+?)\n+};$/m)||[];return{metadata:{emoji:i,id:p.replace(/\s/g,"-"),name:p,author:f,summary:d,description:l},options:o,data:t}});function Yr(){const t=document.querySelector("select#template");t.innerHTML="";for(let n=H.length-1;n>=0;n--){const{id:e,description:i}=H[n],p=n===H.length-1;t.innerHTML+=``}}function Xr(t,n){console.log(n),Qt.exports.saveAs(new Blob([n],{type:"text/html;charset=utf-8"}),t),console.log(`File '${t}' downloaded`)}function un(t,n=10){const e=t.toString(),i=e.length>n?"...":"";return e.substring(0,n)+i}function Kr(t){return t.toLowerCase().replace(/-(.)/g,(n,e)=>e.toUpperCase())}function Jr(t){return t.replace(/[^\w\s]/gi,"")}function Qr(t,n){const e=new RegExp(n,"g");t.value=t.value.replace(e,"")}function U(t,n){t.dataset.cleanRegex&&Qr(t,t.dataset.cleanRegex);let e;t.type==="checkbox"?e=t.checked:n===void 0?e=t.value:(e=n,t.value=n);const{name:i}=t;localStorage.setItem(i,e),console.log(`Key: '${i}' saved to localStorage: ${un(e)}`)}function Nt(t){const{name:n}=t,e=localStorage.getItem(n);if(e===null){console.log(` Attempted to get key: ${n} from localStorage, but nothing was found.`);return}if(t.type==="checkbox"){const i=e==="true";t.checked=i}else t.value=e;console.log(` Got key: ${n} from localStorage: ${un(e)}`)}function Ht(t){const{value:n}=t.currentTarget,e=H.find(i=>i.id===n);if(!e){document.querySelector("#template").value=H.find(i=>i.isDefault).id,Ht(t);return}e.isHd?document.querySelector("#mascot").classList.add("borksyHD"):document.querySelector("#mascot").classList.remove("borksyHD"),e.bitsyVersion===Dt.bitsyVersion?(document.querySelector("#legacy-version-warning").style.display="none",document.querySelector('[data-header="Bitsy Version"] > summary').textContent="Bitsy Version"):(document.querySelector("#legacy-version-warning").style.display=null,document.querySelector('[data-header="Bitsy Version"] > summary').textContent="\u2757 Bitsy Version \u2757"),e.data()}function L(t){const{name:n}=t;let e;switch(n){case"template":e=Zr;break}t.addEventListener("change",()=>{U(t),e==null||e(t)})}function Zr(t){const n=t.value.split(".")[0]==="BitsyHD",e=localStorage.getItem("gamedata")==null,i=ln.gamedataHD;if(n&&e&&i!==void 0){const f=document.querySelector("#gamedata");f.value=i,U(f)}}function pn(t){const n=document.querySelector(`[data-associated-hack="${t.dataset.hack}"]`);n&&dn(n,t)}function dn(t,n){n.checked===!0?t.classList.add("included"):t.classList.remove("included")}function ta(t){U(t),pn(t)}function na(t){t.addEventListener("change",()=>{ta(t)})}function ea(){return Array.from(document.querySelectorAll("[data-borksy-replace-single]")).reduce((t,n)=>(t[n.dataset.borksyReplaceSingle]=n.value,t),{})}function ra(){return Mt.reduce((t,n)=>{const e=document.querySelector(`#${n.metadata.id}`);if(!(e.checked||e.value==="true"))return t;let p=n.data;if(n.options){const f=document.querySelector(`#${n.metadata.id}-options`).value;p=p.replace(/(var hackOptions.*= ){[^]*?^}(;$)/m,`$1 { +`).slice(1,-1),a=e[0],p=e.find(u=>u.startsWith("@file")).split("@file ")[1],f=e.find(u=>u.startsWith("@author")).split("@author ")[1],d=e.find(u=>u.startsWith("@summary")).split("@summary ")[1],l=e.slice(e.findIndex(u=>u.startsWith("@description"))+1).join(` +`).replace(/Copy-paste .* after the bitsy source\.?/g,"Include hack").replace(/hackOptions below/g,"hackOptions above"),[,o]=t.match(/var hackOptions.*= {\n+([^]+?)\n+};$/m)||[];return{metadata:{emoji:a,id:p.replace(/\s/g,"-"),name:p,author:f,summary:d,description:l},options:o,data:t}});function Yr(){const t=document.querySelector("select#template");t.innerHTML="";for(let n=H.length-1;n>=0;n--){const{id:e,description:a}=H[n],p=n===H.length-1;t.innerHTML+=``}}function Xr(t,n){console.log(n),Qt.exports.saveAs(new Blob([n],{type:"text/html;charset=utf-8"}),t),console.log(`File '${t}' downloaded`)}function un(t,n=10){const e=t.toString(),a=e.length>n?"...":"";return e.substring(0,n)+a}function Kr(t){return t.toLowerCase().replace(/-(.)/g,(n,e)=>e.toUpperCase())}function Jr(t){return t.replace(/[^\w\s]/gi,"")}function Qr(t,n){const e=new RegExp(n,"g");t.value=t.value.replace(e,"")}function U(t,n){t.dataset.cleanRegex&&Qr(t,t.dataset.cleanRegex);let e;t.type==="checkbox"?e=t.checked:n===void 0?e=t.value:(e=n,t.value=n);const{name:a}=t;localStorage.setItem(a,e),console.log(`Key: '${a}' saved to localStorage: ${un(e)}`)}function Nt(t){const{name:n}=t,e=localStorage.getItem(n);if(e===null){console.log(` Attempted to get key: ${n} from localStorage, but nothing was found.`);return}if(t.type==="checkbox"){const a=e==="true";t.checked=a}else t.value=e;console.log(` Got key: ${n} from localStorage: ${un(e)}`)}function Ht(t){const{value:n}=t.currentTarget,e=H.find(a=>a.id===n);if(!e){document.querySelector("#template").value=H.find(a=>a.isDefault).id,Ht(t);return}e.isHd?document.querySelector("#mascot").classList.add("borksyHD"):document.querySelector("#mascot").classList.remove("borksyHD"),e.bitsyVersion===Dt.bitsyVersion?(document.querySelector("#legacy-version-warning").style.display="none",document.querySelector('[data-header="Bitsy Version"] > summary').textContent="Bitsy Version"):(document.querySelector("#legacy-version-warning").style.display=null,document.querySelector('[data-header="Bitsy Version"] > summary').textContent="\u2757 Bitsy Version \u2757"),e.data()}function L(t){const{name:n}=t;let e;switch(n){case"template":e=Zr;break}t.addEventListener("change",()=>{U(t),e==null||e(t)})}function Zr(t){const n=t.value.split(".")[0]==="BitsyHD",e=localStorage.getItem("gamedata")==null,a=ln.gamedataHD;if(n&&e&&a!==void 0){const f=document.querySelector("#gamedata");f.value=a,U(f)}}function pn(t){const n=document.querySelector(`[data-associated-hack="${t.dataset.hack}"]`);n&&dn(n,t)}function dn(t,n){n.checked===!0?t.classList.add("included"):t.classList.remove("included")}function ti(t){U(t),pn(t)}function ni(t){t.addEventListener("change",()=>{ti(t)})}function ei(){return Array.from(document.querySelectorAll("[data-borksy-replace-single]")).reduce((t,n)=>(t[n.dataset.borksyReplaceSingle]=n.value,t),{})}function ri(){return Mt.reduce((t,n)=>{const e=document.querySelector(`#${n.metadata.id}`);if(!(e.checked||e.value==="true"))return t;let p=n.data;if(n.options){const f=document.querySelector(`#${n.metadata.id}-options`).value;p=p.replace(/(var hackOptions.*= ){[^]*?^}(;$)/m,`$1 { ${f} }$2`)}return`${t}${p} -`},"")}let dt=!1;async function fn(){if(!dt){dt=!0;try{Array.from(document.querySelectorAll("[data-save]")).forEach(f=>U(f));const t=document.querySelector("#template").value,n=lt({"BORKSY-VERSION":Vr.version,"HACKS-VERSION":Dt.version,HACKS:ra()},ea());console.log(n);const e=document.querySelector("#filename").value,p=ft.exports.compile((await H.find(f=>f.id===t).data()).default)(n);Xr(`${e}.html`,p)}finally{dt=!1}}}function hn(){const{body:t}=document;t.classList.contains("party")?(t.classList.remove("party"),window.alert("\u{1F63E} Party Mode Deactivated. Everyone out. \u{1F63E}")):(t.classList.add("party"),window.alert("\u2728\u{1F308} Party Mode Activated! \u{1F308}\u2728"))}function W(t){const n=document.createElement("div");return n.innerHTML=t,n.children}function aa(){var l;const t=document.querySelector("#about_content");t.innerHTML=$.about.replace("HACKS_BITSY_VERSION",Dt.bitsyVersion);const n=document.createElement("section");n.id="last-update",n.innerHTML=(l=Kt.match(/(([^]+?)<\/h[12]>/g,"

    What's new in v$1

    "),t.prepend(n);const e=C("How To Use Borksy");e.append(...W($["how-to-use-borksy"])),t.appendChild(e);const i=C("Troubleshooting / FAQs");i.classList.add("faq"),i.append(...W($["troubleshooting-faqs"])),t.appendChild(i);const p=C("Other Bitsy Tools");p.append(...W($["other-tools"])),t.appendChild(p);const f=C("AYo's Special Tips");f.append(...W($["ayos-special-tips"])),t.appendChild(f);const d=C("Changelog");d.append(...W(Kt)),t.appendChild(d)}function ia(t){t.value=t.dataset.default,L(t)}function sa(t){const n=t.id.replace(/-options$/,""),{options:e}=Mt.find(i=>i.metadata.id===n);t.value=e,L(t)}function oa(t){let n=t.dataset.default;n=n==="true",t.type==="checkbox"?t.checked=n:t.value=n,L(t)}function ca(t){const n=t.dataset.default,e=ln[n];if(!e)throw new Error(`Could not find file ${n}`);t.value=e,L(t)}function la(t){da(t.dataset.default)}function ua(t){const{options:n}=t;for(let e=n.length-1;e>=0;e--)if(n[e].dataset.defaultOption!==void 0){t.selectedIndex=e;break}L(t)}function gn(t=!0){Array.from(document.querySelectorAll("[data-save]")).forEach(n=>{const e=localStorage.getItem(n.name),i=typeof n.dataset.default!="undefined",p=e!==null;if(i&&(!p||!t)){const{defaultType:f}=n.dataset;switch(f){case"string":ia(n);break;case"boolean":oa(n);break;case"textfile":ca(n);break;case"font":la(n);break;case"option":ua(n);break;case"hackOptions":sa(n);break;default:throw new Error("Unknown type")}}else p?Nt(n):n.value="",L(n);pn(n)}),console.log(`Defaults loaded. Forced? ${!t}`)}function mn(){let t;try{t=window.confirm("Are you sure you want to erase all data and restore defaults?")}catch{t=!0}!t||(Array.from(document.querySelectorAll("[data-save]")).forEach(n=>{localStorage.removeItem(n.name)}),console.log("Cookies removed"),gn(!1),document.querySelector("#mascot").classList.remove("borksyHD"))}function pa(){const t={x:6,y:8},n={x:16,y:16},e=1,i=document.createElement("canvas");i.width=(t.x+e)*n.x+e,i.height=(t.y+e)*n.y+e;const p=i.getContext("2d");let f=[];p.drawImage(this,0,0);for(let d=0;d255/2?1:0);f[d]=l}f=f.flat(),U(document.querySelector("#fontdata"),`[/*${document.querySelector("#fontfilename").value}*/${f.toString()}]`)}function da(t){let n;typeof t=="object"?n=t.target.result:(n=`fonts/${t}`,fa(t));const e=new Image;e.onload=pa,e.src=n}function fa(t){const n=document.querySelector("#fontfilename");n.value!==t&&(n.value=t,U(n))}function ha(t,n){t.dataset.save=!0,t.dataset.default=!1,t.dataset.defaultType="boolean",t.dataset.hack=n}function ga(t){const n=C(`${t.metadata.emoji} ${t.metadata.name} (by ${t.metadata.author})`);n.dataset.associatedHack=t.metadata.id;const e=document.createElement("p");e.textContent=t.metadata.summary,n.append(e);const i=document.createElement("label");i.className="horizontal";const p=document.createElement("input");if(p.type="checkbox",p.name=t.metadata.name,p.id=t.metadata.id,ha(p,t.metadata.id),Nt(p),dn(n,p),na(p),i.append(p),i.append(`Include "${Jr(t.metadata.name)}" hack`),n.append(i),t.options){const f=C("Options"),d=document.createElement("label");d.dataset.pre=`var ${Kr(t.metadata.id)}Options = {`,d.dataset.post="};";const l=document.createElement("textarea");l.rows=5,l.cols=50,l.textContent=t.options,l.name=`${t.metadata.name}.options`,l.id=`${t.metadata.id}-options`,l.dataset.save=!0,l.dataset.default=t.metadata.id,l.dataset.defaultType="hackOptions",Nt(l),L(l),d.append(l),f.append(d),n.append(f)}if(t.metadata.description){const f=C("README"),d=document.createElement("pre");d.textContent=t.metadata.description,f.append(d),n.append(f)}return n}function ma(){const t=document.querySelector("#hacks-section");Mt.forEach(n=>{t.appendChild(ga(n))})}function C(t){const n=document.createElement("details");return n.className="collapsible",n.dataset.collapse="",n.dataset.header=t,yn(n),n}function ya(){Array.from(document.querySelectorAll("[data-collapsible]")).forEach(yn),console.log("HACK IT UP YO"),ma(),document.querySelector("#preloader").remove()}function yn(t){const n=document.createElement("summary");n.textContent=t.dataset.header,n.className="collapsible_header",t.prepend(n)}function ba(){window.addEventListener("keydown",t=>{if(t.ctrlKey||t.metaKey)switch(String.fromCharCode(t.which).toLowerCase()){case"s":t.preventDefault(),fn();break;case"d":t.preventDefault(),mn();break;case"p":t.preventDefault(),hn();break}})}document.querySelector("#download-button").addEventListener("click",fn);document.querySelector("#restore-button").addEventListener("click",mn);document.querySelector("#mascot").addEventListener("click",hn);document.querySelector("#template").addEventListener("change",Ht);ya();aa();Yr();gn();ba();Ht({currentTarget:document.querySelector("#template")}); +`},"")}let dt=!1;async function fn(){if(!dt){dt=!0;try{Array.from(document.querySelectorAll("[data-save]")).forEach(f=>U(f));const t=document.querySelector("#template").value,n=lt({"BORKSY-VERSION":Vr.version,"HACKS-VERSION":Dt.version,HACKS:ri()},ei());console.log(n);const e=document.querySelector("#filename").value,p=ft.exports.compile((await H.find(f=>f.id===t).data()).default)(n);Xr(`${e}.html`,p)}finally{dt=!1}}}function hn(){const{body:t}=document;t.classList.contains("party")?(t.classList.remove("party"),window.alert("\u{1F63E} Party Mode Deactivated. Everyone out. \u{1F63E}")):(t.classList.add("party"),window.alert("\u2728\u{1F308} Party Mode Activated! \u{1F308}\u2728"))}function W(t){const n=document.createElement("div");return n.innerHTML=t,n.children}function ii(){var l;const t=document.querySelector("#about_content");t.innerHTML=$.about.replace("HACKS_BITSY_VERSION",Dt.bitsyVersion);const n=document.createElement("section");n.id="last-update",n.innerHTML=(l=Kt.match(/(([^]+?)<\/h[12]>/g,"

    What's new in v$1

    "),t.prepend(n);const e=C("How To Use Borksy");e.append(...W($["how-to-use-borksy"])),t.appendChild(e);const a=C("Troubleshooting / FAQs");a.classList.add("faq"),a.append(...W($["troubleshooting-faqs"])),t.appendChild(a);const p=C("Other Bitsy Tools");p.append(...W($["other-tools"])),t.appendChild(p);const f=C("AYo's Special Tips");f.append(...W($["ayos-special-tips"])),t.appendChild(f);const d=C("Changelog");d.append(...W(Kt)),t.appendChild(d)}function ai(t){t.value=t.dataset.default,L(t)}function si(t){const n=t.id.replace(/-options$/,""),{options:e}=Mt.find(a=>a.metadata.id===n);t.value=e,L(t)}function oi(t){let n=t.dataset.default;n=n==="true",t.type==="checkbox"?t.checked=n:t.value=n,L(t)}function ci(t){const n=t.dataset.default,e=ln[n];if(!e)throw new Error(`Could not find file ${n}`);t.value=e,L(t)}function li(t){di(t.dataset.default)}function ui(t){const{options:n}=t;for(let e=n.length-1;e>=0;e--)if(n[e].dataset.defaultOption!==void 0){t.selectedIndex=e;break}L(t)}function gn(t=!0){Array.from(document.querySelectorAll("[data-save]")).forEach(n=>{const e=localStorage.getItem(n.name),a=typeof n.dataset.default!="undefined",p=e!==null;if(a&&(!p||!t)){const{defaultType:f}=n.dataset;switch(f){case"string":ai(n);break;case"boolean":oi(n);break;case"textfile":ci(n);break;case"font":li(n);break;case"option":ui(n);break;case"hackOptions":si(n);break;default:throw new Error("Unknown type")}}else p?Nt(n):n.value="",L(n);pn(n)}),console.log(`Defaults loaded. Forced? ${!t}`)}function mn(){let t;try{t=window.confirm("Are you sure you want to erase all data and restore defaults?")}catch{t=!0}!t||(Array.from(document.querySelectorAll("[data-save]")).forEach(n=>{localStorage.removeItem(n.name)}),console.log("Cookies removed"),gn(!1),document.querySelector("#mascot").classList.remove("borksyHD"))}function pi(){const t={x:6,y:8},n={x:16,y:16},e=1,a=document.createElement("canvas");a.width=(t.x+e)*n.x+e,a.height=(t.y+e)*n.y+e;const p=a.getContext("2d");let f=[];p.drawImage(this,0,0);for(let d=0;d255/2?1:0);f[d]=l}f=f.flat(),U(document.querySelector("#fontdata"),`[/*${document.querySelector("#fontfilename").value}*/${f.toString()}]`)}function di(t){let n;typeof t=="object"?n=t.target.result:(n=`fonts/${t}`,fi(t));const e=new Image;e.onload=pi,e.src=n}function fi(t){const n=document.querySelector("#fontfilename");n.value!==t&&(n.value=t,U(n))}function hi(t,n){t.dataset.save=!0,t.dataset.default=!1,t.dataset.defaultType="boolean",t.dataset.hack=n}function gi(t){const n=C(`${t.metadata.emoji} ${t.metadata.name} (by ${t.metadata.author})`);n.dataset.associatedHack=t.metadata.id;const e=document.createElement("p");e.textContent=t.metadata.summary,n.append(e);const a=document.createElement("label");a.className="horizontal";const p=document.createElement("input");if(p.type="checkbox",p.name=t.metadata.name,p.id=t.metadata.id,hi(p,t.metadata.id),Nt(p),dn(n,p),ni(p),a.append(p),a.append(`Include "${Jr(t.metadata.name)}" hack`),n.append(a),t.options){const f=C("Options"),d=document.createElement("label");d.dataset.pre=`var ${Kr(t.metadata.id)}Options = {`,d.dataset.post="};";const l=document.createElement("textarea");l.rows=5,l.cols=50,l.textContent=t.options,l.name=`${t.metadata.name}.options`,l.id=`${t.metadata.id}-options`,l.dataset.save=!0,l.dataset.default=t.metadata.id,l.dataset.defaultType="hackOptions",Nt(l),L(l),d.append(l),f.append(d),n.append(f)}if(t.metadata.description){const f=C("README"),d=document.createElement("pre");d.textContent=t.metadata.description,f.append(d),n.append(f)}return n}function mi(){const t=document.querySelector("#hacks-section");Mt.forEach(n=>{t.appendChild(gi(n))})}function C(t){const n=document.createElement("details");return n.className="collapsible",n.dataset.collapse="",n.dataset.header=t,yn(n),n}function yi(){Array.from(document.querySelectorAll("[data-collapsible]")).forEach(yn),console.log("HACK IT UP YO"),mi(),document.querySelector("#preloader").remove()}function yn(t){const n=document.createElement("summary");n.textContent=t.dataset.header,n.className="collapsible_header",t.prepend(n)}function bi(){window.addEventListener("keydown",t=>{if(t.ctrlKey||t.metaKey)switch(String.fromCharCode(t.which).toLowerCase()){case"s":t.preventDefault(),fn();break;case"d":t.preventDefault(),mn();break;case"p":t.preventDefault(),hn();break}})}document.querySelector("#download-button").addEventListener("click",fn);document.querySelector("#restore-button").addEventListener("click",mn);document.querySelector("#mascot").addEventListener("click",hn);document.querySelector("#template").addEventListener("change",Ht);yi();ii();Yr();gn();bi();Ht({currentTarget:document.querySelector("#template")}); diff --git a/docs/index.html b/docs/index.html index 240388c8..97cef38a 100644 --- a/docs/index.html +++ b/docs/index.html @@ -24,7 +24,7 @@ - + diff --git a/package-lock.json b/package-lock.json index e7638147..72161074 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "5.16.0", "license": "MIT", "devDependencies": { - "@bitsy/hecks": "^20.2.0", + "@bitsy/hecks": "^20.2.1", "eslint": "^8.12.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-prettier": "^8.5.0", @@ -602,9 +602,9 @@ "dev": true }, "node_modules/@bitsy/hecks": { - "version": "20.2.0", - "resolved": "https://registry.npmjs.org/@bitsy/hecks/-/hecks-20.2.0.tgz", - "integrity": "sha512-sxhP3Ou53gKkO4afp2SCCsunALuiZyzzj7XKlzfjRHS/7zGXgbkkmSMdoJJRWDEOTm2Tt7R7Q8q8w6VfYYJcuw==", + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@bitsy/hecks/-/hecks-20.2.1.tgz", + "integrity": "sha512-5CM2/v+WmjXN0Tv1GMMtvddM1RfmqVUOk+AshbiUmLxlryZpjE7Dlv6eHVR4Zy9UUYOmeKs124GqO8goxJrcRQ==", "dev": true, "dependencies": { "@seansleblanc/pink-trombone": "^1.0.1", @@ -7776,9 +7776,9 @@ "dev": true }, "@bitsy/hecks": { - "version": "20.2.0", - "resolved": "https://registry.npmjs.org/@bitsy/hecks/-/hecks-20.2.0.tgz", - "integrity": "sha512-sxhP3Ou53gKkO4afp2SCCsunALuiZyzzj7XKlzfjRHS/7zGXgbkkmSMdoJJRWDEOTm2Tt7R7Q8q8w6VfYYJcuw==", + "version": "20.2.1", + "resolved": "https://registry.npmjs.org/@bitsy/hecks/-/hecks-20.2.1.tgz", + "integrity": "sha512-5CM2/v+WmjXN0Tv1GMMtvddM1RfmqVUOk+AshbiUmLxlryZpjE7Dlv6eHVR4Zy9UUYOmeKs124GqO8goxJrcRQ==", "dev": true, "requires": { "@seansleblanc/pink-trombone": "^1.0.1", diff --git a/package.json b/package.json index def38299..3fbfcba5 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ ] }, "devDependencies": { - "@bitsy/hecks": "^20.2.0", + "@bitsy/hecks": "^20.2.1", "eslint": "^8.12.0", "eslint-config-airbnb-base": "^15.0.0", "eslint-config-prettier": "^8.5.0", diff --git a/src/hacks/avatar-by-room.txt b/src/hacks/avatar-by-room.txt index 872cd28e..aabcedc0 100644 --- a/src/hacks/avatar-by-room.txt +++ b/src/hacks/avatar-by-room.txt @@ -4,7 +4,7 @@ @summary change the avatar in certain rooms @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -177,7 +177,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -219,6 +219,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -244,7 +245,7 @@ var after = kitsy.after; @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ diff --git a/src/hacks/backdrops.txt b/src/hacks/backdrops.txt index 2b3d7c12..9d327036 100644 --- a/src/hacks/backdrops.txt +++ b/src/hacks/backdrops.txt @@ -4,7 +4,7 @@ @summary makes the game have a backdrop @license MIT @author Cephalopodunk & Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -181,7 +181,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -223,6 +223,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -250,7 +251,7 @@ var after = kitsy.after; @summary makes all sprites have transparent backgrounds @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -279,6 +280,35 @@ before('renderer.GetDrawingFrame', function (drawing, frameIndex) { }); // send -1 instead of background colour index if transparent inject(/bitsyDrawPixel\(backgroundColor, x, y\)/, 'bitsyDrawPixel(window.makeTransparent ? -1 : backgroundColor, x, y)'); +// make sure transitions render using regular room logic +inject( + /(function createRoomPixelBuffer\(room\) {)/, + `$1 +var buffer = drawingBuffers[screenBufferId]; +var s = buffer.scale; +buffer.scale = 1; +drawRoom(room); +renderDrawingBuffer(screenBufferId, buffer); +const data = buffer.canvas.getContext('2d').getImageData(0, 0, buffer.width, buffer.height).data; +var pixelBuffer = []; +for (var y = 0; y < buffer.height; ++y) { +for (var x = 0; x < buffer.width; ++x) { + var idx = (y*buffer.width + x)*4; + var r = data[idx + 0]; + var g = data[idx + 1]; + var b = data[idx + 2]; + var p = getPal(getRoomPal(curRoom)).findIndex(i => r === i[0] && g === i[1] && b === i[2]); + pixelBuffer.push(tileColorStartIndex + p); +} +} +buffer.scale = s; +invalidateDrawingBuffer(buffer); +return pixelBuffer; +` +); +// make sure tiles are available when drawing rooms +inject(/(var tileBuffer = drawingBuffers\[tileId\];)/, 'hackForEditor_GetImageFromTileId(tileId); $1'); + // overwrite transparent pixel after('renderPixelInstruction', function (bufferId, buffer, paletteIndex, x, y) { if (paletteIndex !== -1) return; @@ -302,7 +332,7 @@ after('renderPixelInstruction', function (bufferId, buffer, paletteIndex, x, y) @summary makes the game have a transparent background @license MIT @author Cephalopodunk & Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 diff --git a/src/hacks/basic-sfx.txt b/src/hacks/basic-sfx.txt index d1d075b2..49ec61fa 100644 --- a/src/hacks/basic-sfx.txt +++ b/src/hacks/basic-sfx.txt @@ -4,7 +4,7 @@ @summary "walk" and "talk" sound effect support @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -172,7 +172,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -214,6 +214,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -239,7 +240,7 @@ var after = kitsy.after; @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ diff --git a/src/hacks/bitsymuse.txt b/src/hacks/bitsymuse.txt index 231de8fa..1748d10c 100644 --- a/src/hacks/bitsymuse.txt +++ b/src/hacks/bitsymuse.txt @@ -4,7 +4,7 @@ @summary A variety of Bitsy sound and music handlers @license MIT @author David Mowatt -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -206,7 +206,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -248,6 +248,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -371,7 +372,7 @@ function addDualDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ diff --git a/src/hacks/canvas-replacement.txt b/src/hacks/canvas-replacement.txt index b6bedc3a..f56ff355 100644 --- a/src/hacks/canvas-replacement.txt +++ b/src/hacks/canvas-replacement.txt @@ -4,7 +4,7 @@ @summary WebGLazy bitsy integration (this one's mostly just for me) @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -203,7 +203,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -245,6 +245,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/character-portraits-animated.txt b/src/hacks/character-portraits-animated.txt index f028206c..cfe0d3e2 100644 --- a/src/hacks/character-portraits-animated.txt +++ b/src/hacks/character-portraits-animated.txt @@ -4,7 +4,7 @@ @summary high quality anime gifs @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -971,7 +971,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -1013,6 +1013,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -1088,7 +1089,7 @@ function addDialogTag(tag, fn) { @summary high quality anime jpegs (or pngs i guess) @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 diff --git a/src/hacks/character-portraits.txt b/src/hacks/character-portraits.txt index c90469e3..b5088a11 100644 --- a/src/hacks/character-portraits.txt +++ b/src/hacks/character-portraits.txt @@ -4,7 +4,7 @@ @summary high quality anime jpegs (or pngs i guess) @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -200,7 +200,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -242,6 +242,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/close-on-ending.txt b/src/hacks/close-on-ending.txt index 985ff350..f0a68eef 100644 --- a/src/hacks/close-on-ending.txt +++ b/src/hacks/close-on-ending.txt @@ -4,7 +4,7 @@ @summary Prevents from playing past an ending @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -163,7 +163,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -205,6 +205,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/corrupt.txt b/src/hacks/corrupt.txt index d8780e28..77bbc352 100644 --- a/src/hacks/corrupt.txt +++ b/src/hacks/corrupt.txt @@ -4,7 +4,7 @@ @summary corrupts gamedata at runtime @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -60,7 +60,7 @@ bitsy = bitsy || /*#__PURE__*/_interopDefaultLegacy(bitsy); @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -122,7 +122,7 @@ function getImage(name, map) { @file edit image at runtime @summary API for updating image data at runtime. @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @description @@ -340,7 +340,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -382,6 +382,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/custom-exit-effects.txt b/src/hacks/custom-exit-effects.txt index 1b011cc2..399b65f9 100644 --- a/src/hacks/custom-exit-effects.txt +++ b/src/hacks/custom-exit-effects.txt @@ -4,7 +4,7 @@ @summary make custom exit transition effects @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -199,7 +199,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -241,6 +241,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -288,8 +289,6 @@ function lerpPalettes(start, end, delta) { } before('startExportedGame', function () { - // recreate the transition manager so the injected code is used - bitsy.transition = new bitsy.TransitionManager(); // make the custom effects available Object.entries(hackOptions).forEach(function (entry) { bitsy.transition.RegisterTransitionEffect(entry[0], entry[1]); diff --git a/src/hacks/custom-keyhandlers.txt b/src/hacks/custom-keyhandlers.txt index e72496ff..82ff4b4d 100644 --- a/src/hacks/custom-keyhandlers.txt +++ b/src/hacks/custom-keyhandlers.txt @@ -4,7 +4,7 @@ @summary run custom code on key inputs @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -188,7 +188,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -230,6 +230,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/custom-text-effect.txt b/src/hacks/custom-text-effect.txt index 9f039ace..7fc7abf5 100644 --- a/src/hacks/custom-text-effect.txt +++ b/src/hacks/custom-text-effect.txt @@ -4,7 +4,7 @@ @summary make {custom}text effects{custom} @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -351,7 +351,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -393,6 +393,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/dialog-audio-vocal-synth.txt b/src/hacks/dialog-audio-vocal-synth.txt index cbfd5560..64dc6b36 100644 --- a/src/hacks/dialog-audio-vocal-synth.txt +++ b/src/hacks/dialog-audio-vocal-synth.txt @@ -4,7 +4,7 @@ @summary animal crossing-style audio powered by the pink trombone vocal synth @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -884,7 +884,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -926,6 +926,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -1001,7 +1002,7 @@ function addDialogTag(tag, fn) { @summary animal crossing-style audio @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -1058,7 +1059,7 @@ before('dialogBuffer.DoNextChar', function () { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ diff --git a/src/hacks/dialog-audio.txt b/src/hacks/dialog-audio.txt index e3ccbd6b..e48bdffc 100644 --- a/src/hacks/dialog-audio.txt +++ b/src/hacks/dialog-audio.txt @@ -4,7 +4,7 @@ @summary animal crossing-style audio @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -190,7 +190,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -232,6 +232,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/dialog-box-transition.txt b/src/hacks/dialog-box-transition.txt index d9696a40..6c8d069b 100644 --- a/src/hacks/dialog-box-transition.txt +++ b/src/hacks/dialog-box-transition.txt @@ -4,7 +4,7 @@ @summary adds an easing transition animation to display the dialog box text @license MIT @author Delacannon -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -160,7 +160,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -202,6 +202,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/dialog-choices.txt b/src/hacks/dialog-choices.txt index ffb625b1..c88bc53e 100644 --- a/src/hacks/dialog-choices.txt +++ b/src/hacks/dialog-choices.txt @@ -4,7 +4,7 @@ @summary dialog choices @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -241,7 +241,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -283,6 +283,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -415,7 +416,7 @@ inject(/(this\.AddLinebreak = )/, 'this.AddParagraphBreak = function() { buffer. @summary Adds paragraph breaks to the dialogue parser @license WTFPL (do WTF you want) @author Sean S. LeBlanc, David Mowatt -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -459,7 +460,7 @@ addDialogTag('p', function (environment, parameters, onReturn) { @summary put more words onscreen @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 diff --git a/src/hacks/dialog-jump.txt b/src/hacks/dialog-jump.txt index 59f45a5e..cc391139 100644 --- a/src/hacks/dialog-jump.txt +++ b/src/hacks/dialog-jump.txt @@ -4,7 +4,7 @@ @summary jump from one dialog entry to another @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -174,7 +174,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -216,6 +216,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/dialog-pause.txt b/src/hacks/dialog-pause.txt index 2f8a5476..21092e61 100644 --- a/src/hacks/dialog-pause.txt +++ b/src/hacks/dialog-pause.txt @@ -4,7 +4,7 @@ @summary add pauses in between printing text @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -160,7 +160,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -202,6 +202,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/dialog-prompt.txt b/src/hacks/dialog-prompt.txt index c04c08e5..f37ff06d 100644 --- a/src/hacks/dialog-prompt.txt +++ b/src/hacks/dialog-prompt.txt @@ -4,7 +4,7 @@ @summary prompt the user for text input in dialog @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -197,7 +197,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -239,6 +239,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -321,7 +322,7 @@ inject(/(this\.AddLinebreak = )/, 'this.AddParagraphBreak = function() { buffer. @summary Adds paragraph breaks to the dialogue parser @license WTFPL (do WTF you want) @author Sean S. LeBlanc, David Mowatt -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 diff --git a/src/hacks/direction-in-dialog.txt b/src/hacks/direction-in-dialog.txt index 67977f7e..57b08284 100644 --- a/src/hacks/direction-in-dialog.txt +++ b/src/hacks/direction-in-dialog.txt @@ -4,7 +4,7 @@ @summary provides a variable with player direction @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -166,7 +166,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -208,6 +208,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/directional-avatar.txt b/src/hacks/directional-avatar.txt index ba8e6690..4420259c 100644 --- a/src/hacks/directional-avatar.txt +++ b/src/hacks/directional-avatar.txt @@ -4,7 +4,7 @@ @summary flips the player's sprite based on directional movement @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -41,7 +41,7 @@ bitsy = bitsy || /*#__PURE__*/_interopDefaultLegacy(bitsy); @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -103,7 +103,7 @@ function getImage(name, map) { @file edit image at runtime @summary API for updating image data at runtime. @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @description @@ -305,7 +305,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -347,6 +347,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/dynamic-background.txt b/src/hacks/dynamic-background.txt index 4d58a155..fe32ae72 100644 --- a/src/hacks/dynamic-background.txt +++ b/src/hacks/dynamic-background.txt @@ -4,7 +4,7 @@ @summary HTML background matching bitsy background @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -170,7 +170,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -212,6 +212,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -237,7 +238,7 @@ var after = kitsy.after; @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ diff --git a/src/hacks/edit-dialog-from-dialog.txt b/src/hacks/edit-dialog-from-dialog.txt index 9e894d11..1dc68fdd 100644 --- a/src/hacks/edit-dialog-from-dialog.txt +++ b/src/hacks/edit-dialog-from-dialog.txt @@ -4,7 +4,7 @@ @summary edit dialog from dialog (yes really) @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -169,7 +169,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -211,6 +211,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -296,7 +297,7 @@ function addDeferredDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ diff --git a/src/hacks/edit-image-from-dialog.txt b/src/hacks/edit-image-from-dialog.txt index 3bd1cdf4..079a2bdd 100644 --- a/src/hacks/edit-image-from-dialog.txt +++ b/src/hacks/edit-image-from-dialog.txt @@ -4,7 +4,7 @@ @summary edit sprites, items, and tiles from dialog @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -67,7 +67,7 @@ bitsy = bitsy || /*#__PURE__*/_interopDefaultLegacy(bitsy); @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -129,7 +129,7 @@ function getImage(name, map) { @file edit image at runtime @summary API for updating image data at runtime. @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @description @@ -323,7 +323,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -365,6 +365,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/edit-player-from-dialog.txt b/src/hacks/edit-player-from-dialog.txt index 7dfd727c..82464aba 100644 --- a/src/hacks/edit-player-from-dialog.txt +++ b/src/hacks/edit-player-from-dialog.txt @@ -4,7 +4,7 @@ @summary change which sprite is controlled by the player @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -171,7 +171,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -213,6 +213,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -336,7 +337,7 @@ function addDualDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ diff --git a/src/hacks/edit-room-from-dialog.txt b/src/hacks/edit-room-from-dialog.txt index aba0297d..42192ca4 100644 --- a/src/hacks/edit-room-from-dialog.txt +++ b/src/hacks/edit-room-from-dialog.txt @@ -4,7 +4,7 @@ @summary modify the content of a room from dialog @license MIT @author Dana Holdampf -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -290,7 +290,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -332,6 +332,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -455,7 +456,7 @@ function addDualDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ diff --git a/src/hacks/end-from-dialog.txt b/src/hacks/end-from-dialog.txt index a363b3a8..87f96545 100644 --- a/src/hacks/end-from-dialog.txt +++ b/src/hacks/end-from-dialog.txt @@ -4,7 +4,7 @@ @summary trigger an ending from dialog, including narration text @license WTFPL (do WTF you want) @author @mildmojo -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -194,7 +194,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -236,6 +236,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/exit-from-dialog.txt b/src/hacks/exit-from-dialog.txt index 25d780c5..100eceaf 100644 --- a/src/hacks/exit-from-dialog.txt +++ b/src/hacks/exit-from-dialog.txt @@ -4,7 +4,7 @@ @summary exit to another room from dialog, including conditionals @license WTFPL (do WTF you want) @author @mildmojo -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -194,7 +194,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -236,6 +236,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -359,7 +360,7 @@ function addDualDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ diff --git a/src/hacks/external-game-data.txt b/src/hacks/external-game-data.txt index e551fdee..8eefb3be 100644 --- a/src/hacks/external-game-data.txt +++ b/src/hacks/external-game-data.txt @@ -4,7 +4,7 @@ @summary separate Bitsy game data from your (modded) HTML for easier development @license WTFPL (do WTF you want) @author @mildmojo -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -182,7 +182,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -224,6 +224,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/favicon-from-sprite.txt b/src/hacks/favicon-from-sprite.txt index 6c1d225e..d90d93aa 100644 --- a/src/hacks/favicon-from-sprite.txt +++ b/src/hacks/favicon-from-sprite.txt @@ -4,7 +4,7 @@ @summary generate a browser favicon (tab icon) from a Bitsy sprite, including animation! @license WTFPL (do WTF you want) @author @mildmojo -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -170,7 +170,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -212,6 +212,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -237,7 +238,7 @@ var after = kitsy.after; @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ diff --git a/src/hacks/follower.txt b/src/hacks/follower.txt index 00a52b71..9cf22297 100644 --- a/src/hacks/follower.txt +++ b/src/hacks/follower.txt @@ -4,7 +4,7 @@ @summary make sprites follow the player @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -193,7 +193,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -235,6 +235,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -358,7 +359,7 @@ function addDualDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ diff --git a/src/hacks/gamepad-input.txt b/src/hacks/gamepad-input.txt index 15c2303f..3f08334f 100644 --- a/src/hacks/gamepad-input.txt +++ b/src/hacks/gamepad-input.txt @@ -4,7 +4,7 @@ @summary HTML5 gamepad support @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -489,7 +489,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -531,6 +531,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/gravity.txt b/src/hacks/gravity.txt index 179a1809..5c3c7202 100644 --- a/src/hacks/gravity.txt +++ b/src/hacks/gravity.txt @@ -4,7 +4,7 @@ @summary Pseudo-platforming/gravity/physics @license MIT @author Cole Sea -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -122,7 +122,7 @@ bitsy = bitsy || /*#__PURE__*/_interopDefaultLegacy(bitsy); @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -184,7 +184,7 @@ function getImage(name, map) { @file edit image at runtime @summary API for updating image data at runtime. @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @description @@ -386,7 +386,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -428,6 +428,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/itsy-bitsy.txt b/src/hacks/itsy-bitsy.txt index c260179d..b3822e3f 100644 --- a/src/hacks/itsy-bitsy.txt +++ b/src/hacks/itsy-bitsy.txt @@ -4,7 +4,7 @@ @summary for when bitsy's not small enough @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -171,7 +171,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -213,6 +213,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/javascript-dialog.txt b/src/hacks/javascript-dialog.txt index db8af88c..30cacf3b 100644 --- a/src/hacks/javascript-dialog.txt +++ b/src/hacks/javascript-dialog.txt @@ -4,7 +4,7 @@ @summary execute arbitrary javascript from dialog @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -196,7 +196,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -238,6 +238,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/logic-operators-extended.txt b/src/hacks/logic-operators-extended.txt index dd3f945c..df219e65 100644 --- a/src/hacks/logic-operators-extended.txt +++ b/src/hacks/logic-operators-extended.txt @@ -3,7 +3,7 @@ @file logic-operators-extended @summary adds conditional logic operators @author @mildmojo -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -168,7 +168,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -210,6 +210,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/long-dialog.txt b/src/hacks/long-dialog.txt index 47d9d278..94100be1 100644 --- a/src/hacks/long-dialog.txt +++ b/src/hacks/long-dialog.txt @@ -4,7 +4,7 @@ @summary put more words onscreen @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -184,7 +184,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -226,6 +226,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -358,7 +359,7 @@ inject(/(this\.AddLinebreak = )/, 'this.AddParagraphBreak = function() { buffer. @summary Adds paragraph breaks to the dialogue parser @license WTFPL (do WTF you want) @author Sean S. LeBlanc, David Mowatt -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 diff --git a/src/hacks/multi-sprite-avatar.txt b/src/hacks/multi-sprite-avatar.txt index 5a6c7808..82dee7ea 100644 --- a/src/hacks/multi-sprite-avatar.txt +++ b/src/hacks/multi-sprite-avatar.txt @@ -4,7 +4,7 @@ @summary make the player big @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -201,7 +201,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -243,6 +243,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -366,7 +367,7 @@ function addDualDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ diff --git a/src/hacks/noclip.txt b/src/hacks/noclip.txt index 0c8f95a7..9330d3a6 100644 --- a/src/hacks/noclip.txt +++ b/src/hacks/noclip.txt @@ -4,7 +4,7 @@ @summary walk through wall tiles, sprites, items, exits, and endings @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -182,7 +182,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -224,6 +224,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -251,7 +252,7 @@ var after = kitsy.after; @summary run custom code on key inputs @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 diff --git a/src/hacks/online.txt b/src/hacks/online.txt index f126a0e0..7a803558 100644 --- a/src/hacks/online.txt +++ b/src/hacks/online.txt @@ -4,7 +4,7 @@ @summary multiplayer bitsy @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @description @@ -182,7 +182,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -224,6 +224,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -347,7 +348,7 @@ function addDualDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -411,7 +412,7 @@ function getImage(name, map) { @summary edit dialog from dialog (yes really) @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -478,7 +479,7 @@ addDeferredDialogTag('dialog', editDialog); @file edit image at runtime @summary API for updating image data at runtime. @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @description @@ -547,7 +548,7 @@ function setSpriteData(id, frame, newData) { @summary edit sprites, items, and tiles from dialog @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -692,7 +693,7 @@ addDualDialogTag('imagePal', editPalette); @summary execute arbitrary javascript from dialog @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 diff --git a/src/hacks/opaque-tiles.txt b/src/hacks/opaque-tiles.txt index e209b9d5..f3a5f140 100644 --- a/src/hacks/opaque-tiles.txt +++ b/src/hacks/opaque-tiles.txt @@ -4,7 +4,7 @@ @summary tiles which hide the player @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -169,7 +169,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -211,6 +211,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/paragraph-break.txt b/src/hacks/paragraph-break.txt index 0ab3df65..8e5a2c7d 100644 --- a/src/hacks/paragraph-break.txt +++ b/src/hacks/paragraph-break.txt @@ -4,7 +4,7 @@ @summary Adds paragraph breaks to the dialogue parser @license WTFPL (do WTF you want) @author Sean S. LeBlanc, David Mowatt -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -176,7 +176,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -218,6 +218,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/permanent-items.txt b/src/hacks/permanent-items.txt index 51529786..30aba143 100644 --- a/src/hacks/permanent-items.txt +++ b/src/hacks/permanent-items.txt @@ -4,7 +4,7 @@ @summary prevent some items from being picked up @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -166,7 +166,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -208,6 +208,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/push-sprites.txt b/src/hacks/push-sprites.txt index d4e18456..806bff9d 100644 --- a/src/hacks/push-sprites.txt +++ b/src/hacks/push-sprites.txt @@ -4,7 +4,7 @@ @summary sokoban-style sprite pushing @license MIT @author jan0sc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -198,7 +198,7 @@ bitsy = bitsy || /*#__PURE__*/_interopDefaultLegacy(bitsy); @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -260,7 +260,7 @@ function getImage(name, map) { @file edit image at runtime @summary API for updating image data at runtime. @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @description @@ -462,7 +462,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -504,6 +504,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/replace-drawing.txt b/src/hacks/replace-drawing.txt index b7d8ddc8..38df2666 100644 --- a/src/hacks/replace-drawing.txt +++ b/src/hacks/replace-drawing.txt @@ -4,7 +4,7 @@ @summary add name-tags to replace drawings when the game is loading @license MIT @author Elkie Nova -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -177,7 +177,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -219,6 +219,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/save.txt b/src/hacks/save.txt index 0b45875c..9043bbe0 100644 --- a/src/hacks/save.txt +++ b/src/hacks/save.txt @@ -4,7 +4,7 @@ @summary save/load your game @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -195,7 +195,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -237,6 +237,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -360,7 +361,7 @@ function addDualDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ diff --git a/src/hacks/smooth-moves.txt b/src/hacks/smooth-moves.txt index 3ab0fd77..c1dc9764 100644 --- a/src/hacks/smooth-moves.txt +++ b/src/hacks/smooth-moves.txt @@ -4,7 +4,7 @@ @summary ease the player's movement @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -170,7 +170,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -212,6 +212,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/solid-items.txt b/src/hacks/solid-items.txt index 6bbd5585..7589e762 100644 --- a/src/hacks/solid-items.txt +++ b/src/hacks/solid-items.txt @@ -4,7 +4,7 @@ @summary treat some items like sprites that can be placed multiple times @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -167,7 +167,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -209,6 +209,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/sprite-effects.txt b/src/hacks/sprite-effects.txt index 9610aaed..4cd58271 100644 --- a/src/hacks/sprite-effects.txt +++ b/src/hacks/sprite-effects.txt @@ -4,7 +4,7 @@ @summary like text effects, but for sprites @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -215,7 +215,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -257,6 +257,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -380,7 +381,7 @@ function addDualDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ diff --git a/src/hacks/stopwatch.txt b/src/hacks/stopwatch.txt index 0fffbfb3..2e68fe7c 100644 --- a/src/hacks/stopwatch.txt +++ b/src/hacks/stopwatch.txt @@ -4,7 +4,7 @@ @summary time player actions @license MIT @author Lenny Magner -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -202,7 +202,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -244,6 +244,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -367,7 +368,7 @@ function addDualDialogTag(tag, fn) { @file utils @summary miscellaneous bitsy utilities @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ diff --git a/src/hacks/text-to-speech.txt b/src/hacks/text-to-speech.txt index 5a36d299..12f7f486 100644 --- a/src/hacks/text-to-speech.txt +++ b/src/hacks/text-to-speech.txt @@ -4,7 +4,7 @@ @summary text-to-speech for bitsy dialog @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -192,7 +192,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -234,6 +234,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/tracery-processing.txt b/src/hacks/tracery-processing.txt index 4b928144..6e7f4a58 100644 --- a/src/hacks/tracery-processing.txt +++ b/src/hacks/tracery-processing.txt @@ -4,7 +4,7 @@ @summary process all dialog text with a tracery grammar @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -1036,7 +1036,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -1078,6 +1078,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/transitions.txt b/src/hacks/transitions.txt index c7a94e8d..23632b57 100644 --- a/src/hacks/transitions.txt +++ b/src/hacks/transitions.txt @@ -4,7 +4,7 @@ @summary customizable WebGL transitions @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -223,7 +223,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -265,6 +265,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -292,7 +293,7 @@ var after = kitsy.after; @summary WebGLazy bitsy integration (this one's mostly just for me) @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 diff --git a/src/hacks/transparent-background.txt b/src/hacks/transparent-background.txt index 9b99e06e..cc4d0322 100644 --- a/src/hacks/transparent-background.txt +++ b/src/hacks/transparent-background.txt @@ -4,7 +4,7 @@ @summary makes the game have a transparent background @license MIT @author Cephalopodunk & Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -171,7 +171,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -213,6 +213,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -240,7 +241,7 @@ var after = kitsy.after; @summary makes all sprites have transparent backgrounds @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -269,6 +270,35 @@ before('renderer.GetDrawingFrame', function (drawing, frameIndex) { }); // send -1 instead of background colour index if transparent inject(/bitsyDrawPixel\(backgroundColor, x, y\)/, 'bitsyDrawPixel(window.makeTransparent ? -1 : backgroundColor, x, y)'); +// make sure transitions render using regular room logic +inject( + /(function createRoomPixelBuffer\(room\) {)/, + `$1 +var buffer = drawingBuffers[screenBufferId]; +var s = buffer.scale; +buffer.scale = 1; +drawRoom(room); +renderDrawingBuffer(screenBufferId, buffer); +const data = buffer.canvas.getContext('2d').getImageData(0, 0, buffer.width, buffer.height).data; +var pixelBuffer = []; +for (var y = 0; y < buffer.height; ++y) { +for (var x = 0; x < buffer.width; ++x) { + var idx = (y*buffer.width + x)*4; + var r = data[idx + 0]; + var g = data[idx + 1]; + var b = data[idx + 2]; + var p = getPal(getRoomPal(curRoom)).findIndex(i => r === i[0] && g === i[1] && b === i[2]); + pixelBuffer.push(tileColorStartIndex + p); +} +} +buffer.scale = s; +invalidateDrawingBuffer(buffer); +return pixelBuffer; +` +); +// make sure tiles are available when drawing rooms +inject(/(var tileBuffer = drawingBuffers\[tileId\];)/, 'hackForEditor_GetImageFromTileId(tileId); $1'); + // overwrite transparent pixel after('renderPixelInstruction', function (bufferId, buffer, paletteIndex, x, y) { if (paletteIndex !== -1) return; diff --git a/src/hacks/transparent-dialog.txt b/src/hacks/transparent-dialog.txt index 8f09ec40..ed1ea2e3 100644 --- a/src/hacks/transparent-dialog.txt +++ b/src/hacks/transparent-dialog.txt @@ -4,7 +4,7 @@ @summary makes the dialog box have a transparent background @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -156,7 +156,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -198,6 +198,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/transparent-sprites.txt b/src/hacks/transparent-sprites.txt index 52fc6849..cf8c4167 100644 --- a/src/hacks/transparent-sprites.txt +++ b/src/hacks/transparent-sprites.txt @@ -4,7 +4,7 @@ @summary makes all sprites have transparent backgrounds @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -167,7 +167,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -209,6 +209,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); @@ -241,6 +242,35 @@ before('renderer.GetDrawingFrame', function (drawing, frameIndex) { }); // send -1 instead of background colour index if transparent inject(/bitsyDrawPixel\(backgroundColor, x, y\)/, 'bitsyDrawPixel(window.makeTransparent ? -1 : backgroundColor, x, y)'); +// make sure transitions render using regular room logic +inject( + /(function createRoomPixelBuffer\(room\) {)/, + `$1 +var buffer = drawingBuffers[screenBufferId]; +var s = buffer.scale; +buffer.scale = 1; +drawRoom(room); +renderDrawingBuffer(screenBufferId, buffer); +const data = buffer.canvas.getContext('2d').getImageData(0, 0, buffer.width, buffer.height).data; +var pixelBuffer = []; +for (var y = 0; y < buffer.height; ++y) { +for (var x = 0; x < buffer.width; ++x) { + var idx = (y*buffer.width + x)*4; + var r = data[idx + 0]; + var g = data[idx + 1]; + var b = data[idx + 2]; + var p = getPal(getRoomPal(curRoom)).findIndex(i => r === i[0] && g === i[1] && b === i[2]); + pixelBuffer.push(tileColorStartIndex + p); +} +} +buffer.scale = s; +invalidateDrawingBuffer(buffer); +return pixelBuffer; +` +); +// make sure tiles are available when drawing rooms +inject(/(var tileBuffer = drawingBuffers\[tileId\];)/, 'hackForEditor_GetImageFromTileId(tileId); $1'); + // overwrite transparent pixel after('renderPixelInstruction', function (bufferId, buffer, paletteIndex, x, y) { if (paletteIndex !== -1) return; diff --git a/src/hacks/twine-bitsy-comms.txt b/src/hacks/twine-bitsy-comms.txt index 4ba40697..33e3b059 100644 --- a/src/hacks/twine-bitsy-comms.txt +++ b/src/hacks/twine-bitsy-comms.txt @@ -4,7 +4,7 @@ @summary interprocess communication for twine and bitsy @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -238,7 +238,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -280,6 +280,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks(); diff --git a/src/hacks/unique-items.txt b/src/hacks/unique-items.txt index a29ae6df..476d4cd9 100644 --- a/src/hacks/unique-items.txt +++ b/src/hacks/unique-items.txt @@ -4,7 +4,7 @@ @summary items which, when picked up, remove all other instances of that item from the game @license MIT @author Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 @@ -167,7 +167,7 @@ function applyHook(root, functionName) { @summary Monkey-patching toolkit to make it easier and cleaner to run code before and after functions or to inject new code into script tags @license WTFPL (do WTF you want) @author Original by mildmojo; modified by Sean S. LeBlanc -@version 20.2.0 +@version 20.2.1 @requires Bitsy 7.12 */ @@ -209,6 +209,7 @@ if (!hooked) { bitsy.dialogRenderer = bitsy.dialogModule.CreateRenderer(); bitsy.dialogBuffer = bitsy.dialogModule.CreateBuffer(); bitsy.renderer = new bitsy.TileRenderer(bitsy.tilesize); + bitsy.transition = new bitsy.TransitionManager(); // Hook everything kitsy.applyHooks();