JavaScript must be enabled to play.
Browser lacks capabilities required to play.
Upgrade or switch to another browser.
Loading…
[[Controls]] <<link "Light/Dark Text">> <<if $light>> <<set $mode to "textbox">> <<set $light to false>> <<else>> <<set $mode to "textbox lm">> <<set $light to true>> <</if>> <<run Engine.show()>> <</link>>
<<box "small">>As mentioned, this game is designed to be played one handed. Well, this isn't really a game, just a convenient comic, but I'm using this same system to make a bigger project, hence there are some extra controls. Here is an exhaustive list of the relevant controls to this comic. <div class= "bold-menu">Hotkeys</div> QUICK ESCAPE: Press ESCAPE to automatically OVERWRITE save slot 8 and CLOSE the game's browser tab QUICK LOAD: Press 1 (top row) to load Save Slot 8 QUICK SAVE: Press E or NUMPAD 2 to OVERWRITE Save Slot 8 //NOTE:// The saving stuff doesn't really apply to this comic, as it won't save the exact panel you're on, anyway. Also, NONE of the above controls work in incognito/private browsing. BACK: Press CTRL (left or right) to go back a page. This will rewind the game's history <div class= "bold-menu">Scenes</div> (comic pages) LEFT/A: Hide current panel gif and make previous panel reanimate or appear RIGHT/D: Pause current gif and reveal next panel gif SPACEBAR/NUMPAD 0: GO ON //NOTES:// Clicking a link with your mouse and then pressing spacebar will activate both the link you last clicked and the in-game link attached to the spacebar. If you click a link with your mouse, make sure to click on some empty part of the game afterward. About light and dark mode—I didn't want to redo the whole aesthetic, but I wanted to be a little more accessible, so I went for a happy medium of only making the textboxes change the brightness mode. I hope this compromise is enough for most people. <</box>> <<prompt>>PRESS CONTROL ON YOUR KEYBOARD TO GO BACK<</prompt>>
<<include "Buttons">> <<set $versions to ["1.0.0.0"]>> <<include "UpdateInit">> <<set $light to false>> <<set $mode to "textbox">> <<set $preload to [ "Annoyed.png", "Annoyed1.png", "Base.png", "Basebase.png", "BaseBoob.png", "Bored.png", "Bored1.png", "Cooldown.gif", "Drip.png", "Drip.gif", "DripBase.png", "FaceBoob.gif", "Incred.png", "Incred1.png", "Milk.gif", "Order.png", "Order1.png", "OverIt.png", "OverIt1.png", "Question.png", "Question1.png", "Seriously.png", "Seriously1.png", "Sly.png", "Smile.png", "Smug.png", "Startup.gif", "Surprise.png" ]>> <<cacheaudio "jingle" "Expresso/Audio/CafeMusic.mp3">>
<<widget "box" container>> <<set _mode to clone($mode)>> <<if _args.length > 0>> <<set _mode += " " + _args[0]>> <</if>> <div @class="_mode"> _contents </div> <</widget>> <<widget "prompt" container>> <div class="prompt"> _contents </div> <</widget>> <<widget "popup" container>> <<set _mode to clone($mode)>> <<set _mode += " popup " + _args[0]>> <div @class="_mode">_contents</div> <</widget>> <<widget "page" container>> <<nobr>>\ <div class="page"> _contents </div> <</nobr>>\ <</widget>> <<widget "preload">> <div class="hide"> <<for _i to 0; _i lt $preload.length; _i++>> <br> [img["Expresso/Visuals/Story" + $preload[_i]]] <</for>> </div> <</widget>>
<<if $special != "Intro">> <div id="statsMenu" class="hide"> <<link "stats">> <<if _stats>> <<removeclass `_menu` "spin-in">> <<addclass `_menu` "spin-out">> <<addclass ".popup" "hide">> <<set _stats to false>> <<removeclass ".room" "hide">> <<set $lastRoom to clone(_selectRooms[0])>> <<set _menu to "#ui-bar">> <<removeclass `_menu` "spin-out hide">> <<addclass `_menu` "spin-in">> <<removeclass ".goon" "goon">> <<addclass ".down" "goon">> <<else>> <<set _selectGo "">> <<set _work to false>> <<set _select to false>> <<set _stats to true>> <<removeclass `_menu` "spin-in">> <<addclass `_menu` "spin-out">> <<set _selectGroup to "">> <<addclass ".popup" "hide">> <<removeclass ".goon" "goon">> <<addclass ".down" "goon">> <<set _menu to ".Omenu.Ogirls">> <<removeclass `_menu` "spin-out hide">> <<addclass `_menu` "spin-in">> <</if>> <</link>> </div> <</if>> <div class="Omenu Ogirls hide"> <<include "StatsMenu">> </div> <<if !tags().includes("nofooter")>> <<if !tags().includes("scene")>> <<if $menu>> /*-----Things that need to be reset every passage to make sure the menu updates correctly----*/ <<set _selectRooms to clone($goodRooms)>> <<set _selectTenants to clone($tenants)>> <<set _selectBeyond to clone($beyond)>> <<set _columns to [_selectRooms]>> <<if !$intro>> <<run _columns.push(_selectTenants)>> <</if>> <<if !$tutorial>> <<run _columns.push(_selectBeyond)>> <</if>> <<set _selectGroup to _columns[0]>> <<set _select to false>> <div id="selectMenu" class="hide"> <<link "slide">> <<set _selectGo to _selectRooms[0]>> <<if _select>> <<set _select to false>> <<removeclass ".goon" "goon">> <<addclass ".down" "goon">> <<addclass ".popup" "hide">> <<removeclass ".popup.room" "hide">> <<removeclass "#ui-bar" "spin-out">> <<addclass "#ui-bar" "spin-in">> <<removeclass ".Omenu" "spin-in">> <<addclass ".Omenu" "spin-out">> <<if _forced>> <<addclass ".special" "hide">> <</if>> <<else>> <<set _select to true>> <<set _col to 1>> <<removeclass ".goon" "goon">> <<addclass ".menuGo" "goon">> <<addclass ".room.popup" "hide">> <<removeclass "#ui-bar" "spin-in">> <<addclass "#ui-bar" "spin-out">> <<removeclass ".Omenu" "spin-out hide">> <<addclass ".Omenu" "spin-in">> <<if _forced>> <<removeclass ".special" "hide">> <</if>> <</if>> <</link>> </div> /*-------------The divs that hold and handle the menu sliding in and out.-----------*/ <div class="Omenu hide"> <span id="menu-text"><<box "pulse">>Go to...?<</box>></span> <<include "Omenu">> <span id="menu-bottom"> <<box "bottom">> <<if _columns.length is 2>> <-- Girls --> <<elseif _columns.length is 3>> <--Beyond Girls--> <</if>> <</box>> </span> </div> <<set _selectGo to _selectGroup[0]>> /*-----------The link for selecting whatever you're on for scrolling down in the menu options columns-------*/ <div class="menuGo hide"> <span id="go"> <<if not _forced or _selectGo is $mustGo or _selectGo is "Home">> <<link "go" `_selectGo`>> <<removeclass "#ui-bar" "spin-out">> <<addclass "#ui-bar" "spin-in">> <<removeclass ".Omenu" "spin-in">> <<addclass ".Omenu" "spin-out">> <</link>> <<else>> <<link "no go">> <<addclass ".room.popup" "hide">> <<removeclass ".side.select" "hide">> <<toggleclass ".side.select" "rattle">> <<toggleclass ".side.select" "bounce">> <</link>> <</if>> </span> </div> /*------------------UP AND DOWN, A TON GOING HERE----------------*/ <div id="wup" class="hide"> <<link "up">> <<if _select>> <<set _present to "#" + _selectGroup[0]>> <<set _under to "#" + _selectGroup[1]>> <<set _over to "#" + _selectGroup.last()>> <<addclass `_present` "hide">> <<addclass `_under` "hide">> <<addclass `_over` "hide">> <<removeclass `_present` "present">> <<removeclass `_under` "under">> <<removeclass `_over` "over">> <<run _selectGroup.unshift(_selectGroup.pop())>> <<if _columns[0] is _selectTenants>> /*<<homeSearch>>*/ <<set _selectGo to "Bathroom">> <<else>> <<set _selectGo to _selectGroup[0]>> <</if>> <<set _present to "#" + _selectGroup[0]>> <<set _under to "#" + _selectGroup[1]>> <<set _over to "#" + _selectGroup.last()>> <<addclass `_present` "present">> <<addclass `_under` "under">> <<addclass `_over` "over">> <<removeclass `_present` "hide">> <<removeclass `_under` "hide">> <<removeclass `_over` "hide">> <<removeclass ".bounce" "bounce">> <<select>> <</if>> <</link>> </div> <div id="downs" class="hide"> <<link "down">> <<if _select>> <<set _present to "#" + _selectGroup[0]>> <<set _under to "#" + _selectGroup[1]>> <<set _over to "#" + _selectGroup.last()>> <<addclass `_present` "hide">> <<addclass `_under` "hide">> <<addclass `_over` "hide">> <<removeclass `_present` "present">> <<removeclass `_under` "under">> <<removeclass `_over` "over">> <<run _selectGroup.push(_selectGroup.shift())>> <<if _columns[0] is _selectTenants>> /*<<homeSearch>>*/ <<set _selectGo to "Bathroom">> <<else>> <<set _selectGo to _selectGroup[0]>> <</if>> <<set _present to "#" + _selectGroup[0]>> <<set _under to "#" + _selectGroup[1]>> <<set _over to "#" + _selectGroup.last()>> <<addclass `_present` "present">> <<addclass `_under` "under">> <<addclass `_over` "over">> <<removeclass `_present` "hide">> <<removeclass `_under` "hide">> <<removeclass `_over` "hide">> <<removeclass ".bounce" "bounce">> <<select>> <</if>> <</link>> </div> <div id="dright" class="hide"> <<link "right">> <<if _select>> <<addclass ".present" "center">> <<removeclass ".present" "present">> <<set _present to "#" + _selectGroup[0]>> <<set _under to "#" + _selectGroup[1]>> <<set _over to "#" + _selectGroup.last()>> <<addclass `_present` "hide">> <<addclass `_under` "hide">> <<addclass `_over` "hide">> <<run _columns.push(_columns.shift())>> <<set _selectGroup to _columns[0]>> <<set _present to "#" + _selectGroup[0]>> <<set _under to "#" + _selectGroup[1]>> <<set _over to "#" + _selectGroup.last()>> <<removeclass `_present` "hide">> <<removeclass `_under` "hide">> <<removeclass `_over` "hide">> <<set _selectGo to _selectGroup[0]>> <<set _present to "#" + _selectGroup[0]>> <<addclass `_present` "present">> <<removeclass `_present` "center">> <<if _columns[0] is _selectTenants>> /*<<homeSearch>>*/ <<set _selectGo to "Bathroom">> <<replace "#menu-text">><span id="menu-text"><<box "pulse">>Look for...?<</box>></span><</replace>> <<else>> <<set _selectGo to _selectGroup[0]>> <<replace "#menu-text">><span id="menu-text"><<box "pulse">>Go to...?<</box>></span><</replace>> <</if>> <<replace "#menu-bottom">> <span id="menu-bottom"> <<box "bottom">> <<if _columns.length is 2 and _columns[0] is _selectRooms>> <--Girls--> <<elseif _columns.length is 2 and _columns[0] != _selectRooms>> <--Rooms--> <<elseif _columns.length is 3 and _columns[0] is _selectRooms>> <--Beyond Girls--> <<elseif _columns.length is 3 and _columns[0] is _selectTenants>> <--Rooms Beyond--> <<elseif _columns.length is 3 and _columns[0] is _selectBeyond>> <--Girls Rooms--> <</if>> <</box>> </span> <</replace>> <<select>> <<addclass ".rooMenu" "bounce">> <<addclass ".Ogirls" "bounce">> <<addclass ".beyond" "bounce">> <<addclass ".bottom" "bounce">> <</if>> <</link>> </div> /*---------------------------------------------------------------------------------*/ <div id="lefta" class="hide"> <<link "left">> <<if _select>> <<addclass ".present" "center">> <<removeclass ".present" "present">> <<set _present to "#" + _selectGroup[0]>> <<set _under to "#" + _selectGroup[1]>> <<set _over to "#" + _selectGroup.last()>> <<addclass `_present` "hide">> <<addclass `_under` "hide">> <<addclass `_over` "hide">> <<run _columns.unshift(_columns.pop())>> <<set _selectGroup to _columns[0]>> <<set _present to "#" + _selectGroup[0]>> <<set _under to "#" + _selectGroup[1]>> <<set _over to "#" + _selectGroup.last()>> <<removeclass `_present` "hide">> <<removeclass `_under` "hide">> <<removeclass `_over` "hide">> <<set _selectGo to _selectGroup[0]>> <<set _present to "#" + _selectGroup[0]>> <<addclass `_present` "present">> <<removeclass `_present` "center">> <<if _columns[0] is _selectTenants>> /*<<homeSearch>>*/ <<set _selectGo to "Bathroom">> <<replace "#menu-text">><span id="menu-text"><<box "pulse">>Look for...?<</box>></span><</replace>> <<else>> <<set _selectGo to _selectGroup[0]>> <<replace "#menu-text">><span id="menu-text"><<box "pulse">>Go to...?<</box>></span><</replace>> <</if>> <<replace "#menu-bottom">> <span id="menu-bottom"> <<box "bottom">> <<if _columns.length is 2 and _columns[0] is _selectRooms>> <--Girls--> <<elseif _columns.length is 2 and _columns[0] != _selectRooms>> <--Rooms--> <<elseif _columns.length is 3 and _columns[0] is _selectRooms>> <--Beyond Girls--> <<elseif _columns.length is 3 and _columns[0] is _selectTenants>> <--Rooms Beyond--> <<elseif _columns.length is 3 and _columns[0] is _selectBeyond>> <--Girls Rooms--> <</if>> <</box>> </span> <</replace>> <<select>> <<addclass ".rooMenu" "bounce">> <<addclass ".Ogirls" "bounce">> <<addclass ".beyond" "bounce">> <<addclass ".bottom" "bounce">> <</if>> <</link>> </div> <</if>> <</if>> <</if>>
/*---------SPACEBAR-0--------------*/ <<widget "goon" container>> <<if !_contents>> <<set _contents to "HomeHub">> <</if>> <<if _args.length is 0>> <<set _args[0] to "GO ON">> <div class="prompt"> _args[0] </div> <<set _goon to false>> <div class="goon hide"> <<link "none">> <<if not _goon>> <<set _goon to true>> <<else>> <<if _stats>> <<removeclass "#ui-bar" "spin-out hide">> <<addclass "#ui-bar" "spin-in">> <</if>> <<goto `_contents`>> <</if>> <</link>> </div> <<elseif _args[0] is "">> <<set _args[0] to "GO ON">> <</if>> <<if _args.includes("go")>> <div class="goon hide"> <<if _args.includes("link")>> <<link "none" `_args[0]`>> _contents <</link>> <<else>> <<if _stats>> <<removeclass "#ui-bar" "spin-out hide">> <<addclass "#ui-bar" "spin-in">> <</if>> _contents <</if>> </div> <<elseif _args.includes("complete")>> <div class="prompt"> _args[0] </div> <<set _goon to false>> <div class="goon hide"> <<link "none">> <<if not _goon>> <<set _goon to true>> <<else>> <<if _stats>> <<removeclass "#ui-bar" "spin-out hide">> <<addclass "#ui-bar" "spin-in">> <</if>> <<goto `_pass`>> <</if>> <</link>> </div> <<elseif _args.includes("prompt")>> <div class="prompt"> _args[0] </div> <<set _goon to false>> <div class="goon hide"> <<link "none">> <<if not _goon>> <<set _goon to true>> <<else>> <<if _stats>> <<removeclass "#ui-bar" "spin-out hide">> <<addclass "#ui-bar" "spin-in">> <</if>> <<goto `_contents`>> <</if>> <</link>> </div> <<elseif _args.includes("two")>> <<set _goon to false>> <div class="goon hide"> <<link "none">> <<if not _goon>> <<set _goon to true>> <<else>> <<if _stats>> <<removeclass "#ui-bar" "spin-out hide">> <<addclass "#ui-bar" "spin-in">> <</if>> <<goto `_contents`>> <</if>> <</link>> </div> <<else>> <div class="goon hide"> <<if _args.includes("link")>> <<link "none" "_args[0]">> _contents <</link>> <<else>> <<if _stats>> <<removeclass "#ui-bar" "spin-out hide">> <<addclass "#ui-bar" "spin-in">> <</if>> _contents <</if>> </div> <</if>> <</widget>> /*----------------------------------------------WUP BUTTON--------------------------*/ /*-----------------Wup ID----------- _ARGS[0]: OPT; Adds classes to the #wup div to add to the .div */ <<widget "wupI">> <<if _args.length is 0>> <<set _changeW to "goon">> <<else>> <<set _changeW to "goon " + _args[0]>> <</if>> <div id="wup" class="hide"> <<link "up">> <<removeclass ".goon" "goon">> <<addclass ".popup" "hide">> <<removeclass ".upPop" "hide">> <<addclass ".wup" `_changeW`>> <</link>> </div> <</widget>> /*---------------Wup Class------------- _ARGS[0]: OPT; Adds classes to the .wup div */ <<widget "wupC" container>> <<set _classW to "wup ">> <<if _args.length > 0>> <<set _classW to _classW + _args[0]>> <</if>> <div @class="_classW"> _contents </div> <</widget>> /*------------------Wup combined---------------*/ _ARGS[0]: REQ; Adds classes to the #wup div (can be left blank, e.g. "") to add to the .div _ARGS[1]: REQ; Adds classes to the .wup div (can be left blank, e.g. "") */ <<widget "wup" container>> <<wupI `_args[0]`>> <<set _bounceW to _contents>> <<wupC `_args[1]`>>_bounceW<</wupC>> <</widget>> /*----------------------------------------------LEFTA BUTTON--------------------------*/ /*-----------------Lefta ID----------- _ARGS[0]: OPT; Adds classes to the #lefta div to add to the .div */ <<widget "leftaI">> <<if _args.length is 0>> <<set _changeA to "goon">> <<else>> <<set _changeA to "goon " + _args[0]>> <</if>> <div id="lefta" class="hide"> <<link "left">> <<removeclass ".goon" "goon">> <<addclass ".popup" "hide">> <<removeclass ".leftPop" "hide">> <<addclass ".lefta" `_changeA`>> <</link>> </div> <</widget>> /*---------------Lefta Class------------- _ARGS[0]: OPT; Adds classes to the .lefta div */ <<widget "leftaC" container>> <<set _classA to "lefta ">> <<if _args.length > 0>> <<set _classA to _classA + _args[0]>> <</if>> <div @class="_classA"> _contents </div> <</widget>> /*------------------Lefta combined---------------*/ _ARGS[0]: REQ; Adds classes to the #lefta div (can be left blank, e.g. "") to add to the .div _ARGS[1]: REQ; Adds classes to the .lefta div (can be left blank, e.g. "") */ <<widget "lefta" container>> <<leftaI `_args[0]`>> <<set _bounceA to _contents>> <<leftaC `_args[1]`>>_bounceA<</leftaC>> <</widget>> /*----------------------------------------------DRIGHT BUTTON------------------------*/ /*-----------------Dright ID----------- _ARGS[0]: OPT; Adds classes to the #dright div to add to the .div */ <<widget "drightI">> <<if _args.length is 0>> <<set _changeD to "goon">> <<else>> <<set _changeD to "goon " + _args[0]>> <</if>> <div id="dright" class="hide"> <<link "right">> <<removeclass ".goon" "goon">> <<addclass ".popup" "hide">> <<removeclass ".rightPop" "hide">> <<addclass ".dright" `_changeD`>> <</link>> </div> <</widget>> /*---------------Dright Class------------- _ARGS[0]: OPT; Adds classes to the .dright div */ <<widget "drightC" container>> <<set _classD to "dright ">> <<if _args.length > 0>> <<set _classD to _classD + _args[0]>> <</if>> <div @class="_classD"> _contents </div> <</widget>> /*------------------Dright combined---------------*/ _ARGS[0]: REQ; Adds classes to the #dright div (can be left blank, e.g. "") to add to the .div _ARGS[1]: REQ; Adds classes to the .dright div (can be left blank, e.g. "") */ <<widget "dright" container>> <<drightI `_args[0]`>> <<set _bounceD to _contents>> <<drightC `_args[1]`>>_bounceD<</drightC>> <</widget>> /*--------------------------------------------DOWNS BUTTON--------------------------*/ /*-----------------Downs ID----------- _ARGS[0]: OPT; Adds classes to the #downs div to add to the .div */ <<widget "downsI">> <<if _args.length is 0>> <<set _changeS to "goon">> <<else>> <<set _changeS to "goon " + _args[0]>> <</if>> <div id="downs" class="hide"> <<link "down">> <<removeclass ".panel" "goon">> <<addclass ".popup" "hide">> <<removeclass ".downPop" "hide">> <<addclass ".downs" `_changeS`>> <</link>> </div> <</widget>> /*---------------Downs Class------------- _ARGS[0]: OPT; Adds classes to the .downs div */ <<widget "downsC" container>> <<set _classS to "downs goon ">> <<if _args.length > 0>> <<set _classS to _classS + _args[0]>> <</if>> <div @class="_classS"> _contents </div> <</widget>> /*------------------Downs combined---------------*/ _ARGS[0]: REQ; Adds classes to the #downs div (can be left blank, e.g. "") to add to the .div _ARGS[1]: REQ; Adds classes to the .downs div (can be left blank, e.g. "") */ <<widget "downs" container>> <<downsI `_args[0]`>> <<set _bounceS to _contents>> <<downsC `_args[1]`>>_bounceS<</downsC>> <</widget>>
/*----------------------hotkey controls (thanks, Chapel!)---------------------------*/ <<on 'keyup'>> /*--Refresh Debug window--*/ <<which 82>>/*R*/ <<trigger "click" "#debug-window .macro-link">> /*--Quick escape--*/ <<which 27>>/*esc*/ <<trigger 'click' '#menu-item-saves a'>> <<trigger 'click' '#saves-delete-7'>> <<trigger 'click' '#saves-save-7'>> <<trigger 'click' '#quick-escape .macro-link'>> /*--Quick load--*/ <<which 49>>/*1*/ <<trigger 'click' '#menu-item-saves a'>> <<trigger 'click' '#saves-load-7'>> /*--Quick save--*/ <<which 69>>/*E*/ <<trigger 'click' '#menu-item-saves a'>> <<trigger 'click' '#saves-delete-7'>> <<trigger 'click' '#saves-save-7'>> <<which 98>>/*2*/ <<trigger 'click' '#menu-item-saves a'>> <<trigger 'click' '#saves-delete-7'>> <<trigger 'click' '#saves-save-7'>> /*--Go back--*/ <<which 17>>/*ctrl*/ <<trigger 'click' '#back-reset .macro-link'>> <<trigger 'click' '#history-backward'>> /*--Open stats menu--*/ <<which 97>>/*num pad 1*/ <<trigger "click" "#statsMenu .macro-link">> <<which 81>>/*Q*/ <<trigger "click" "#statsMenu .macro-link">> <<which 16>>/*shift*/ <<trigger "click" "#statsMenu .macro-link">> /*--Move time--*/ <<which 84>>/*T*/ <<trigger "click" "#time-skip .macro-link">> <<which 101>>/*NUMPAD 5*/ <<trigger "click" "#time-skip .macro-link">> /*--Options select--*/ <<which 38>>/*Up*/ <<trigger "click" "#wup .macro-link">> <<which 87>>/*W*/ <<trigger "click" "#wup .macro-link">> <<which 40>>/*Down*/ <<trigger "click" "#downs .macro-link">> <<which 83>>/*S*/ <<trigger "click" "#downs .macro-link">> <<which 68>>/*D*/ <<trigger "click" "#dright .macro-link">> <<which 39>>/*Right*/ <<trigger "click" "#dright .macro-link">> <<which 65>>/*A*/ <<trigger "click" "#lefta .macro-link">> <<which 37>>/*Left*/ <<trigger "click" "#lefta .macro-link">> <<which 32>>/*Spacebar*/ <<trigger "click" ".goon .link-internal">> <<which 96>>/*Num pad 0*/ <<trigger "click" ".goon .link-internal">> <<which 77>>/*M*/ <<trigger "click" "#music .macro-link">> <</on>>
/*This passage will be for setting new variables. It is inclued at the bottom of the homehub, since it's impossible to play without going to the homehub. It will include new variables. Everytime you update, you'll need to put the version number here and in the homehub at the bottom. I shouldn't need to add a million variables over time, so I can probably just keep adding things in here. Actually, since there will be new girls over time, I might want to have some "update girls" passages and such included in here. That should work. Wait a second. Ok, I don't want old things to be set over and over, so those will need to be removed. Ok, I think I know what to do. I make an array called $versions, then I make an if statement for each one. If versions ! includes this specific number, then add these updates. And I can just make a passage for each new update. */ <<if !$versions.includes("1.0.0.0")>> /*NEW OR ALTERED VARIABLES HERE*/ <<run $versions.push("1.0.0.0")>> <</if>> /*And do that for each one. And if it's a ton of stuff, I can put in in a new pasage. I think each major update will probably need it's own passage, but everything else should be small*/
_ARGS[0] specify if there are also gifs to be made ("gif" or "png" or blank) _ARGS[1] folder name _ARGS[2,3,4...] image names (takes multiple image names in case a branch scenario has been given) _ARGS[last] "final." Write that in if this panel contains the final panel. <<widget "panel">> <<for _i to 2; _i lt _args.length; _i++>> <<if _args[_i] is "final">> <<set _panNum -= 2>> <<break>> <</if>> <<if _panNum is 1>> <<set _pngClass to "png panel " + _panNum>> <<set _gifClass to "gif panel " + _panNum>> <<else>> <<set _pngClass to "png hide panel " + _panNum>> <<set _gifClass to "gif hide panel " + _panNum>> <</if>> <<if _branch>> <<set _pngClass to _pngClass + " " + _paths>> <<set _gifClass to _gifClass + " " + _paths>> <</if>> <<capture _pngClass, _gifClass, _i>> <div @class="_pngClass"> [img["Expresso/Visuals/" + _args[1] + "/" + _args[_i] +".png"]] </div> <<if _args.includes("gif")>> <<set _gif to true>> <div @class="_gifClass"> [img["Expresso/Visuals/" + _args[1] + "/" + _args[_i] +".gif"]] </div> <</if>> <</capture>> <</for>> <<set _panNum += 1>> <</widget>> _ARGS[0] specify if there are also gifs to be made ("gif" or "png" or blank) _ARGS[1] folder name _ARGS[2] name of character OR a number OR blank. This will limit the options printed to either the character's corruption, the number, or no limits. _ARGS[2,3,4...] image names (takes multiple image names because there will definitely be multiple images in the branching widget) <<widget "branch">> <<set _branch to true>> <<if _args[2] is "">> <<set _limits to _args.length>> <<set _discomfort to clone(_limits)>> <<else>> <<set _limits to State.getVar("$" + _args[2] + ".corruption")>> <<if _limits + 4 > _args.length>> <<set _limits to _args.length>> <<else>> <<set _limits += 4>> <</if>> <<set _discomfort to clone(_limits)>> <</if>> <<for _m to 3; _m lt _limits; _m++>> <<if _panNum is 1>> <<set _pngClass to "png pulse panel " + _panNum + " " + _args[_m].last()>> <<set _gifClass to "gif pulse panel " + _panNum + " " + _args[_m].last()>> <<elseif _args[_m] is "final">> <<set _branchFinal to true>> <<break>> <<else>> <<set _pngClass to "png pulse hide panel " + _panNum + " " + _args[_m].last()>> <<set _gifClass to "gif pulse hide panel " + _panNum + " " + _args[_m].last()>> <</if>> <<capture _pngClass, _gifClass, _m>> <div @class="_pngClass"> [img["Expresso/Visuals/" + _args[1] + "/" + _args[_m] +".png"]] </div> <<if _args.includes("gif")>> <div @class="_gifClass"> [img["Expresso/Visuals/" + _args[1] + "/" + _args[_m] +".gif"]] </div> <</if>> <<run _brarray.push(clone(_args[_m].last()))>> <</capture>> <</for>> <<set _branchNum to clone(_panNum)>> <<set _panNum += 1>> <</widget>> <<widget "panelz">> <<for _j to 2; _j lt _args.length; _j++>> <<panel `_args[0]` `_args[1]` `_args[_j]`>> <</for>> <</widget>> <<widget "panBranch">> <<set _tempMax to 0>> <<for _x to 2, _y to 0; _x lt _limits - 1; _y++>> <<set _paths to clone(_args[_x][_y].last())>> <<set _reset to _args[_x].length -1>> <<panel `_args[0]` `_args[1]` `_args[_x][_y]`>> <<if _y is _reset>> <<run _pathLengths.push(_args[_x].length)>> <<set _y to -1>> <<set _x += 1>> <<set _panNum to _branchNum + 1>> <</if>> <<if _reset > _tempMax>> <<set _tempMax to _reset>> <</if>> <</for>> <<set _panNum += _tempMax>> <</widget>> <<widget "panView">> <div id ="dright" class="hide"> <<link "right">> <<if _pview lt _branchNum and _pview lt _panNum or _branchNum is 0 and _pview lt _panNum>> <<set _pview += 1>> <<if _gif>> <<addclass ".gif" "hide">> <</if>> <<set _currPan to "." + _pview>> <<if _pview is _branchNum>> <<set _currPan to "." + _pview + "." + _brarray[0]>> <</if>> <<removeclass `_currPan` "hide">> <<elseif _pview gt _branchNum and _pview lt _panNum>> <<set _pview += 1>> <<if _gif>> <<addclass ".gif" "hide">> <</if>> <<set _currPan to "." + _pview>> <<set _path to "." + _brarray[0]>> <<set _currPan to _currPan + _path>> <<removeclass `_currPan` "hide">> <<elseif _pview is _panNum>> <<if _gif>> <<addclass ".gif" "hide">> <</if>> <<set _pview+=1>> <<removeclass ".prompt" "hide">> <</if>> <<if _carpop>> <<addclass ".popup" "hide">> <<if _pview lt _branchNum or _branchNum is 0 and _pview lte _panNum>> <<removeclass `_carray[_pview - 1]` "hide">> <<elseif _pview gt _branchNum and _pview lte _panNum>> <<set _currpop to "#pop" + _pview + _brarray[0]>> <<removeclass `_currpop` "hide">> <<elseif _pview is _branchNum>> <<removeclass `_poparray[0]` "hide">> <</if>> <</if>> <</link>> </div> <div id ="lefta" class="hide"> <<link "lefta">> <<if _pview gt 1>> <<if _pview lte _panNum>> <<set _currPan to "." + _pview>> <<addclass `_currPan` "hide">> <<set _pview -= 1>> <<if _pview is _branchNum>> <<set _currPan to "." + _pview>> <<addclass `_currPan` "pulse">> <</if>> <<if _gif>> <<set _currPan to ".gif." + _pview>> <<if _pview gte _branchNum and _branchNum != 0>> <<set _currPan to _currPan + "." + _brarray[0]>> <</if>> <<if _pview is _panNum>> <<addclass ".prompt" "hide">> <</if>> <<removeclass `_currPan` "hide">> <</if>> <<elseif _pview gt _panNum>> <<addclass ".prompt" "hide">> <<set _goon to false>> <<set _pview -= 1>> <<if _branchFinal>> <<set _currPan to "." + _pview>> <<addclass `_currPan` "pulse">> <<set _branchNum to _panNum>> <<set _panNum to 900>> <</if>> <<if _gif>> <<set _currPan to ".gif." + _pview>> <<if _pview gte _branchNum and _branchNum != 0>> <<set _currPan to _currPan + "." + _brarray[0]>> <</if>> <<if _pview is _panNum>> <<addclass ".prompt" "hide">> <</if>> <<removeclass `_currPan` "hide">> <</if>> <</if>> <<if _carpop>> <<addclass ".popup" "hide">> <<if _pview lt _branchNum or _branchNum is 0>> <<removeclass `_carray[_pview - 1]` "hide">> <<elseif _pview gt _branchNum and _branchNum != 0>> <<set _currpop to "#pop" + _pview + _brarray[0]>> <<removeclass `_currpop` "hide">> <<elseif _pview is _branchNum>> <<removeclass `_poparray[0]` "hide">> <</if>> <</if>> <</if>> <</link>> </div> <div id = "wup" class ="hide"> <<link "up">> <<if _pview is _branchNum>> <<run _brarray.push(_brarray.shift())>> <<run _pathLengths.push(_pathLengths.shift())>> <<set _currPan to "." + _pview>> <<addclass `_currPan` "hide">> <<set _currPan to _currPan + "." + _brarray[0]>> <<removeclass `_currPan` "hide">> <<if _disCount is _brarray.length>> <<set _disCount to 1>> <<else>> <<set _disCount +=1>> <</if>> <</if>> <<if _carpop and _pview is _branchNum>> <<addclass ".popup" "hide">> <<run _poparray.push(_poparray.shift())>> <<removeclass `_poparray[0]` "hide">> <</if>> <</link>> </div> <div id = "downs" class ="hide"> <<link "down">> <<if _pview is _branchNum>> <<run _brarray.unshift(_brarray.pop())>> <<run _pathLengths.unshift(_pathLengths.pop())>> <<set _currPan to "." + _pview>> <<addclass `_currPan` "hide">> <<set _currPan to _currPan + "." + _brarray[0]>> <<removeclass `_currPan` "hide">> <<if _disCount is 1>> <<set _disCount to _brarray.length>> <<else>> <<set _disCount -=1>> <</if>> <</if>> <<if _carpop and _pview is _branchNum>> <<addclass `_poparray[0]` "hide">> <<run _poparray.unshift(_poparray.pop())>> <<removeclass `_poparray[0]` "hide">> <</if>> <</link>> </div> <</widget>> <<widget "final">> <div class="prompt hide"> <<if _args.length is 0>> GO ON <<elseif _args[0] is "">> GO ON <<else>> _args[0] <</if>> </div> <<set _goon to false>> <div class="goon hide"> <<link "none">> <<if _pview gt _panNum>> <<if not _goon>> <<set _goon to true>> <<else>> <<set _numCheck to passage().slice(-1)>> <<if _branch>> <<if isNaN(_numCheck)>> <<set $scenePage to 1>> <<set _go to passage() + $scenePage + _brarray[0]>> <<else>> <<set _go to passage().slice(0,-1) + $scenePage + _brarray[0]>> <</if>> <<else>> <<if isNaN(_numCheck)>> <<set _go to passage().slice(0,-2) + $scenePage + passage().slice(-1)>> <<else>> <<set _go to passage().slice(0,-1) + $scenePage>> <</if>> <</if>> <<if _disCount > _discomfort>> <<set _go += " Fail">> <</if>> <<if _args.length is 2>> <<set _go to _args[1]>> <</if>> <<goto `_go`>> <</if>> <</if>> <<if _pview is _branchNum and !_branchFinal>> <<set _path to "." + _brarray[0]>> <<removeclass ".pulse" "pulse">> <<set _pview += 1>> <<set _currPan to "." + _pview + _path>> <<if _gif>> <<addclass ".gif" "hide">> <</if>> <<removeclass `_currPan` "hide">> <<set _panNum to _branchNum + _pathLengths[0]>> <<if _carpop>> <<addclass ".popup" "hide">> <<set _currpop to "#pop" + _pview + _brarray[0]>> <<removeclass `_currpop` "hide">> <</if>> <<elseif _branchFinal and _pview is _branchNum>> <<set _pview += 1>> <<removeclass ".prompt" "hide">> <<removeclass ".pulse" "pulse">> <<set _panNum to _branchNum>> <<set _branchNum to 0>> <<if _gif>> <<addclass ".gif" "hide">> <</if>> <<if _carpop>> <<addclass ".popup" "hide">> <</if>> <</if>> <</link>> </div> <</widget>> <<widget "branchpop">> <<set _poparray to []>> <<for _i to 0; _i lt _args.length; _i++>> <<set _path to _brarray[_i]>> <<set _popID to "pop" + _branchNum + _path>> <<if _args[_i] is "">> <<set _popClass to "hide">> <<elseif _branchNum is 0>> <<set _popClass to $mode + " textbox popup side rattle">> <<else>> <<set _popClass to $mode + " textbox popup side rattle hide">> <</if>> <<capture _i, _popID, _popClass>> <div @id="_popID" @class = "_popClass"> _args[_i] </div> <</capture>> <<set _popID to "#" + _popID>> <<run _poparray.push(clone(_popID))>> <</for>> <<set _carpop to true>> <</widget>> <<widget "poppaths">> <<for _x to 0, _y to 0; _x lt _limits - 3; _y++>> <<set _z to _branchNum + 1 + _y>> <<set _popID to "pop" + _z + _brarray[_x]>> <<set _reset to _args[_x].length -1>> <<if _args[_x][_y] is "">> <<set _poppathClass to "hide">> <<else>> <<set _poppathClass to $mode + " textbox popup side rattle hide">> <</if>> <<capture _x, _y, _popID, _poppathClass>> <div @id="_popID" @class ="_poppathClass"> _args[_x][_y] </div> <</capture>> <<if _y is _reset>> <<set _y to -1>> <<set _x += 1>> <</if>> <</for>> <</widget>>
<div id="quick-escape" class="hide"> <<link "Quit">> <<script>>window.close()<</script>> <</link>> </div> <div id="music" class="hide"> <<link "Mute">> <<if $mute>> <<audio `$curMusic` loop unmute>> <<set $mute to false>> <<else>> <<audio `$curMusic` mute>> <<set $mute to true>> <</if>> <</link>> </div> <<if tags().includes("scene")>> <<set _panNum to 1>> <<set _brarray to []>> <<set _pview to 1>> <<set _pathLengths to []>> <<set $scenePage += 1>> <<set _branchNum to 0>> <<set _disCount to 1>> <<set _discomfort to 1>> <<panView>> <<else>> <<if $scenePage != 1>> <<set $scenePage to 1>> <</if>> <</if>> <<include "Debug">>
<span id = "debug">\ \ </span>\ \ \ <div id="debug-window" class="hide">\ <<link "refresh">>\ <<replace "#debug">>\ <span id = "debug">\ /*-----------------------------------------------------------------------------*/ \ \ /*-----------------------------------------------------------------------------*/ </span>\ <</replace>>\ <</link>>\ </div>\
<<box>>\ This short comic is for adults only. It's also really stupid. It's designed to be viewed one handed. For no particular reason. Follow the instructions below if you're sure you'd like to continue. <</box>> <<goon "Press SPACEBAR or NUMPAD 0 twice to continue" "prompt">>Instructions<</goon>> /*Remember to replace Expresso with your story name*/
<<box>>\ Press RIGHT or D to progress the comic. Press LEFT or A to rewind the comic. Press escape to quickly close the tab the comic is in (doesn't work in private browsing modes). Press CONTROL (either side) to go back a page. Press M to mute or unmute the music. Use the side menu to look at all the controls or to change the textboxes to LIGHT MODE. This comic is so short that "Saves" and "Restart" aren't really useful. Check out my other stuff with the social media logos in the menu! I'm also on Bluesky, but didn't feel like making a button. <</box>>\ <<goon "Press SPACEBAR or NUMPAD 0 twice to continue" "prompt">>Page 1<</goon>> <<preload>> <<audio "jingle" loop play volume .5>> <<set $curMusic to "jingle">> <<set $mute to false>>
<<page>> <<panelz "png" "Story" "Bored" "Bored1" "Question" "Question1" "Incred" "Incred1" "Order" "final">> <<carpop "Hello sir, what can I get you today?" "I'll have an expresso." "An expresso? You sure? They're pretty expensive." "Um, yeah, an expresso, black." "Black? I'm not a magician, dude." "Just get me the drink!" "Just wanted to make sure you knew what you were ordering.">> <<final "" "Page 2">> <div class="png panel base"> [img["Expresso/Visuals/Story/Base.png"]] </div> <</page>>
0 array 1 folder for images (images need to be named in an appropriate way for this to work 2 classes to add <<widget "car">> <<carW `_args[0]` `_args[2]`>> <<carS `_args[0]` `_args[2]`>> <<for _i to 0; _i lt _args[0].length; _i++>> <<set _carDiv to _args[0][_i]>> <<if _i is 0>> <<set _classDiv to "panel">> <<else>> <<set _classDiv to "panel hide">> <</if>> <<capture _carDiv, _classDiv, _i>> <div @id="_carDiv" @class="_classDiv"> [img["Expresso/Visuals/" + _args[1] + _args[0][_i] + ".png"]] </div> <</capture>> <</for>> <</widget>> <<widget "carW">> <div id="wup" class ="hide"> <<link "none">> <<run _args[0].push(_args[0].shift())>> <<set _curr to "#" + _args[0][0]>> <<set _last to "#" + _args[0].last()>> <<addclass `_curr` `_args[1]`>> <<removeclass `_curr` "hide">> <<addclass ".panel" "hide">> <<addclass ".vanish" "hide">> <<removeclass `_curr` "hide">> <<if _carpop>> <<run _carray.push(_carray.shift())>> <<addclass ".side" "hide">> <<removeclass `_carray[0]` "hide">> <</if>> <</link>> </div> <</widget>> <<widget "carS">> <div id="downs" class ="hide"> <<link "none">> <<run _args[0].unshift(_args[0].pop())>> <<set _curr to "#" + _args[0][0]>> <<set _last to "#" + _args[0].last()>> <<addclass `_curr` `_args[1]`>> <<removeclass `_curr` "hide">> <<addclass ".panel" "hide">> <<addclass ".vanish" "hide">> <<removeclass `_curr` "hide">> <<if _carpop>> <<run _carray.unshift(_carray.pop())>> <<addclass ".side" "hide">> <<removeclass `_carray[0]` "hide">> <</if>> <</link>> </div> <</widget>> <<widget "carpop">> <<set _carray to []>> <<for _i to 0; _i lt _args.length; _i++>> <<set _carID to "car" + _i>> <<if _args[_i] is "">> <<set _cpopClass to "hide">> <<elseif _i is 0>> <<set _cpopClass to $mode + " popup side rattle">> <<else>> <<set _cpopClass to $mode + " popup side rattle hide">> <</if>> <<capture _i, _carID, _cpopClass>> <div @id="_carID" @class ="_cpopClass"> _args[_i] </div> <</capture>> <<set _carID to "#" + _carID>> <<run _carray.push(clone(_carID))>> <</for>> <<set _carpop to true>> <<set _carpopLen to _args.length>> <</widget>>
<<page>> <div class="png panel base"> [img["Expresso/Visuals/Story/Basebase.png"]] </div> <<panelz "gif" "Story" "FaceBoob" "Startup" "Milk" "Cooldown" "Drip" "final">> <<carpop "Ok, one expresso." "Gotta get it flowing..." "...there..it..is!" "Woo, all done!" "Let's ring you up.">> <<final "" "Page 3">> <</page>>
<div class= "logo_container">\ <a href='https://shmexybost.newgrounds.com/' target="_blank"><img src = "Expresso/Visuals/Random/Newgrounds.png" class = "logo"></a>\ <a href="https://shmexybost.itch.io/" target="_blank"><img src = "Expresso/Visuals/Random/Itch.svg" class = "logo"></a>\ <a href="https://bsky.app/profile/shmexybost.bsky.social" target="_blank"><img src = "Expresso/Visuals/Random/Bluesky.svg" class = "logo"></a>\ <a href="https://www.patreon.com/c/ShmexyBost" target="_blank"><img src = "Expresso/Visuals/Random/Patreon.svg" class = "logo end"></a>\ </div>\ <div class="clean-menu version">V <<=$versions.last()>> </div>
<<page>> <div class="png panel base"> [img["Expresso/Visuals/Story/DripBase.png"]] </div> <<panelz "png" "Story" "Seriously1" "Annoyed" "Annoyed1" "Annoyed" "Seriously" "Seriously1" "OverIt" "OverIt" "Surprise" "Smug" "Smile" "final">> <<carpop "What the fuck is this?" "An express-o." "I wanted coffee!" "You should have said so!" "Wait...did you mean esssssspresso?" "..." "..." "I'm not paying for that." "I'll buy it! <br><br>I'll pay more! <br><br>Shut up and take my child's college fund!" "Sure you don't want it?" "Sigh....<br><br>how much?">> <<final "" "Page 4">> <</page>>
<<panel "png" "Story" "End Card">> <<carpop "Did you know that there is no 'X' in espresso? <br><br> Also, did you know that when a woman lactates, it is called //expressing?// Now you get the joke, if you didn't before.<br><br>This is the end, btw, nothing more to see.">>